作者 Administrator

合并分支 'test' 到 'master'

Test



查看合并请求 !33
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "./main.go",
"buildFlags": ""
}
]
}
... ...
... ... @@ -112,7 +112,7 @@ spec:
- name: ALLIED_CREATION_COOPERATION_HOST
value: "http://allied-creation-cooperation-dev.fjmaimaimai.com"
- name: ALLIED_CREATION_MANUFACTURE_HOST
value: "http://106.75.231.90:9999"
value: "http://allied-creation-manufacture-dev.fjmaimaimai.com" #http://106.75.231.90:9999
- name: ALLIED_CREATION_BASIC_HOST
value: "http://allied-creation-basic-dev.fjmaimaimai.com"
- name: SMS_SERVE_HOST
... ...
package query
import (
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture"
)
type ManufactureExportRewardSummaryQuery struct {
*allied_creation_manufacture.SearchRewardSummaryRequest
//操作人
Operator domain.Operator `json:"-"`
SelectedField []string `json:"selectedField"`
}
... ...
... ... @@ -2,6 +2,7 @@ package service
import (
"fmt"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/cost_structured"
... ... @@ -150,3 +151,15 @@ func (srv ExcelDataService) ExportDailyFillingAbnormalLog(cmd *query.CostDailyFi
}
return ExportDailyFillingAbnormalLog{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil
}
// ExportRewardSummary 导出功过奖惩明细
func (srv ExcelDataService) ExportRewardSummary(cmd *query.ManufactureExportRewardSummaryQuery) (ExportRewardSummaryData, error) {
creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator)
cmd.PageNumber = 1
cmd.PageSize = 10000
result, err := creationUserGateway.SearchRewardSummary(*cmd.SearchRewardSummaryRequest)
if err != nil {
return ExportRewardSummaryData{}, fmt.Errorf("获取功过奖惩明细数据失败:%w", err)
}
return ExportRewardSummaryData{SourceData: result.Grid.List}, nil
}
... ...
... ... @@ -4,6 +4,9 @@ import (
"bytes"
"encoding/json"
"fmt"
"io"
"strings"
"github.com/linmadan/egglib-go/core/application"
"github.com/linmadan/egglib-go/utils/excel"
"github.com/xuri/excelize/v2"
... ... @@ -16,8 +19,6 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/cost_structured"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/util/converter"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/util/oss"
"io"
"strings"
)
type ExcelDataService struct {
... ... @@ -486,6 +487,14 @@ func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.Import
domain.ImportProducts: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/opportunity/dev_online/20220628/object/1656396441_5Ms2hRRk2Z7fTW32RWjwdKfhA5wM5YeZ.xlsx",
domain.ImportDevices: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20220126/object/1643184320_hT6sY5BKHmBa4TynfSGSCGyZ2KTTtzkj.xlsx",
domain.ImportCosts: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/opportunity/dev_online/20220616/object/1655349687_CjpXGrjD4EH2jrw4SXJmHkaQZXKQcT56.xlsx",
//车间制造-二级品审核导入
"ImportProductRecordLevel2": "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/test/20221104/object/1667552594_netGknahfaANTkJw4zMXKXHYEbKsRskT.xlsx",
//车间制造-工时管理导入
"ImportAttendance": "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/test/20221107/object/1667816767_tH2ZPNdmByGzQNhpFH4dpM7e5dH7z6nW.xlsx",
//车间制造-事故管理导入
"ImportProductTrouble": "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/test/20221101/object/1667294264_2WyhcbfrAFJs3knpEnmnrTR7kA34XNFM.xlsx",
//产能管理导入
"ImportProductCapacities": "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/test/20221101/object/1667294313_cJ7pysrycjdPePpDQaxQCacHdrPCYY6p.xlsx",
}
var url string
var ok bool
... ...
... ... @@ -2,6 +2,7 @@ package service
import (
"fmt"
"github.com/linmadan/egglib-go/utils/excel"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture"
... ... @@ -98,7 +99,7 @@ func (data ExportCompanyUserData) TableTitle() []string {
return nil
}
//ExportCooperationUserData 导出共创用户数据
// ExportCooperationUserData 导出共创用户数据
type ExportCooperationUserData struct {
SourceData []allied_creation_user.UserDetail
SelectedField []string
... ... @@ -179,7 +180,7 @@ func (data ExportCooperationUserData) TableTitle() []string {
return nil
}
//ExportProductsData 导出产品数据
// ExportProductsData 导出产品数据
type ExportProductsData struct {
SourceData []allied_creation_manufacture.SearchProductItem
SelectedField []string
... ... @@ -241,7 +242,7 @@ func (data ExportProductsData) TableTitle() []string {
return nil
}
//ExportEmployeeProductiveData 导出员工产能数据
// ExportEmployeeProductiveData 导出员工产能数据
type ExportEmployeeProductiveData struct {
SourceData []allied_creation_manufacture.EmployeeProductiveItem
SelectedField []string
... ... @@ -327,7 +328,7 @@ func (data ExportEmployeeProductiveData) TableTitle() []string {
return nil
}
//ExportWorkshopProductiveData 导出员工产能数据
// ExportWorkshopProductiveData 导出员工产能数据
type ExportWorkshopProductiveData struct {
SourceData []allied_creation_manufacture.WorkshopProductiveItem
SelectedField []string
... ... @@ -409,7 +410,7 @@ func (data ExportWorkshopProductiveData) TableTitle() []string {
return nil
}
//ExportEmployeeAttendanceStaticsData 导出员工产能数据
// ExportEmployeeAttendanceStaticsData 导出员工产能数据
type ExportEmployeeAttendanceStaticsData struct {
SourceData []allied_creation_manufacture.SearchEmployeeAttendanceStaticsItem
SelectedField []string
... ... @@ -486,7 +487,7 @@ func (data ExportEmployeeAttendanceStaticsData) TableTitle() []string {
return nil
}
//ExportWorkshopAttendanceStaticsData 导出车间工时统计
// ExportWorkshopAttendanceStaticsData 导出车间工时统计
type ExportWorkshopAttendanceStaticsData struct {
SourceData []allied_creation_manufacture.SearchWorkshopWorkTimeStaticsItem
SelectedField []string
... ... @@ -557,7 +558,7 @@ func (data ExportWorkshopAttendanceStaticsData) TableTitle() []string {
return nil
}
//ExportWorkshopProductiveData 导出员工产能数据
// ExportWorkshopProductiveData 导出员工产能数据
type ExportSecondLevelData struct {
SourceData []allied_creation_manufacture.SecondLevelRecordItem
SelectedField []string
... ... @@ -636,3 +637,63 @@ func (data ExportSecondLevelData) DataListLen() int {
func (data ExportSecondLevelData) TableTitle() []string {
return nil
}
// ExportRewardSummaryData 导出奖惩明细数据
type ExportRewardSummaryData struct {
SourceData []allied_creation_manufacture.RewardSummaryItem
}
var _ excel.ExcelMaker = (*ExportRewardSummaryData)(nil)
func (data ExportRewardSummaryData) CellValue(index int, enName string) (value interface{}) {
switch enName {
case "workshopName":
return data.SourceData[index].WorkshopName
case "recordDate":
return data.SourceData[index].RecordDate
case "sectionName":
return data.SourceData[index].SectionName
case "workerName":
return data.SourceData[index].WorkerName
case "upToStandard":
return data.SourceData[index].UpToStandard
case "yield":
return data.SourceData[index].Yield
case "accident1":
return data.SourceData[index].Accident1
case "accident2":
return data.SourceData[index].Accident2
case "accident3":
return data.SourceData[index].Accident3
case "summaryResult":
return data.SourceData[index].SummaryResult
case "resultDesc":
return data.SourceData[index].ResultDesc
}
return ""
}
func (data ExportRewardSummaryData) DataFieldList() []excel.DataField {
fields := []excel.DataField{
{EnName: "recordDate", CnName: "日期"},
{EnName: "workshopName", CnName: "车间"},
{EnName: "sectionName", CnName: "工段"},
{EnName: "workerName", CnName: "姓名"},
{EnName: "yield", CnName: "产效"},
{EnName: "upToStandard", CnName: "合格率"},
{EnName: "accident1", CnName: "质量事故"},
{EnName: "accident2", CnName: "安全事故"},
{EnName: "accident3", CnName: "异物"},
{EnName: "summaryResult", CnName: "奖惩结果(元)"},
{EnName: "resultDesc", CnName: "产效结果"},
}
return fields
}
func (data ExportRewardSummaryData) DataListLen() int {
return len(data.SourceData)
}
func (data ExportRewardSummaryData) TableTitle() []string {
return nil
}
... ...
... ... @@ -15,16 +15,16 @@ var LOG_PREFIX = "[allied-creation-gateway]"
var FileStatic = "./static"
var HTTP_PORT int = 8083
var HTTP_PORT int = 8080
var ALLIED_CREATION_GATEWAY_HOST = "http://localhost:8080"
//天联共创基础模块
// 天联共创基础模块
var ALLIED_CREATION_BASIC_HOST = "http://localhost:8080" //"http://allied-creation-basic-dev.fjmaimaimai.com"
//天联共创用户模块
// 天联共创用户模块
var ALLIED_CREATION_USER_HOST = "http://localhost:8081" //"http://allied-creation-user-dev.fjmaimaimai.com"
//天联共创业务模块
// 天联共创业务模块
var ALLIED_CREATION_COOPERATION_HOST = "http://localhost:8082" // "http://allied-creation-cooperation-dev.fjmaimaimai.com"
// 天联共创 生产制造模块
... ... @@ -33,10 +33,10 @@ var ALLIED_CREATION_MANUFACTURE_HOST = "http://localhost:8083"
// 版本更新模块
var SUPLUS_ADMIN_BASE_HOST = "http://suplus-admin-base-dev.fjmaimaimai.com"
//通用模块短信服务
// 通用模块短信服务
var SMS_SERVE_HOST = "https://sms.fjmaimaimai.com:9897"
//素加销售导航服务
// 素加销售导航服务
var SUPLUS_SALE_APP = "http://suplus-sale-app-gateway-test.fjmaimaimai.com"
// TODO:特殊短信验证码,不验证,正式环境注入空
... ...
... ... @@ -9,7 +9,7 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway"
)
//HttpLibAlliedCreationManufacture 生产制造模块
// HttpLibAlliedCreationManufacture 生产制造模块
type HttpLibAlliedCreationManufacture struct {
service_gateway.BaseServiceGateway
baseUrL string
... ... @@ -35,7 +35,7 @@ func (gateway HttpLibAlliedCreationManufacture) BaseUrl() string {
return gateway.baseUrL
}
//BatchAddProduct 批量添加产品
// BatchAddProduct 批量添加产品
func (gateway HttpLibAlliedCreationManufacture) BatchAddProduct(param BatchAddProductRequest) (*BatchAddProductResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/products/batch-add")
method := "post"
... ... @@ -49,7 +49,7 @@ type BatchAddProductRequest struct {
}
type BatchAddProductResponse []interface{}
//SearchProduct 搜索产品
// SearchProduct 搜索产品
func (gateway HttpLibAlliedCreationManufacture) SearchProduct(param SearchProductRequest) (*SearchProductResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/products/search")
method := "post"
... ... @@ -87,7 +87,7 @@ type (
/*设备*/
//BatchAddProduct 批量添加产品
// BatchAddProduct 批量添加产品
func (gateway HttpLibAlliedCreationManufacture) BatchAddDevice(param BatchAddDeviceRequest) (*BatchAddProductResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/devices/batch-add")
method := "post"
... ... @@ -167,7 +167,7 @@ type (
}
)
//SearchProduct 搜索员工产能统计
// SearchProduct 搜索员工产能统计
func (gateway HttpLibAlliedCreationManufacture) SearchWorkshopProductive(param SearchWorkshopProductiveRequest) (*SearchWorkshopProductiveResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/workshop-productive/search")
method := "post"
... ... @@ -226,7 +226,7 @@ type (
}
)
//SearchProduct 搜索员工产能统计
// SearchProduct 搜索员工产能统计
func (gateway HttpLibAlliedCreationManufacture) SearchSecondLevelRecord(param SearchSecondLevelRecordRequest) (*SearchSecondLevelRecordResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/second-level-record/search")
method := "post"
... ... @@ -356,7 +356,7 @@ type (
}
)
//SearchEmployeeAttendanceStatics 搜索员工工时统计
// SearchEmployeeAttendanceStatics 搜索员工工时统计
func (gateway HttpLibAlliedCreationManufacture) SearchWorkshopWorkTimeStatics(param SearchWorkshopWorkTimeStaticsRequest) (*SearchWorkshopWorkTimeStaticsResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/workshop-attendance-statics/search")
method := "post"
... ... @@ -399,3 +399,52 @@ type (
AuthFlag bool `json:"authFlag"`
}
)
// 搜索功过奖惩明细
type (
SearchRewardSummaryRequest struct {
// 页码
PageNumber int `json:"pageNumber"`
// 页数
PageSize int `json:"pageSize"`
// 车间名称
WorkshopName string `json:"workshopName"`
//产线名称
LineName string `json:"workerName"`
//开始日期
BeginDate string `json:"beginDate"`
//结束日期
EndDate string `json:"endDate"`
}
SearchRewardSummaryResponse struct {
Grid struct {
List []RewardSummaryItem `json:"list"`
Total int `json:"total"`
} `json:"grid"`
}
RewardSummaryItem struct {
Id int `json:"id"`
RecordDate string `json:"recordDate"` //日期
WorkshopName string `json:"workshopName"` //车间名称
LineName string `json:"lineName"` //线别名称
SectionName string `json:"sectionName"` //工段
WorkerName string `json:"workerName"` //员工名字
Yield string `json:"yield"` //产效
UpToStandard string `json:"upToStandard"` //合格率
Accident1 string `json:"accident1"` //质量事故
Accident2 string `json:"accident2"` //安全事故
Accident3 string `json:"accident3"` //异物事故
SummaryResult string `json:"summaryResult"` //奖惩结果
ResultDesc string `json:"resultDesc"` //产效结果
}
)
// SearchRewardSummary 搜索功过奖惩明细
func (gateway HttpLibAlliedCreationManufacture) SearchRewardSummary(param SearchRewardSummaryRequest) (*SearchRewardSummaryResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product_trouble/reward_summary/seach")
method := "post"
var data SearchRewardSummaryResponse
err := gateway.FastDoRequest(url, method, param, &data)
return &data, err
}
... ...
package beego
import (
"net/http"
"os"
"strconv"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user"
chart_editor "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/chart-editor"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/cost_structured"
"net/http"
"os"
"strconv"
"github.com/beego/beego/v2/server/web/context"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant"
... ...
package web_client
import (
"bytes"
"fmt"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers"
"io"
"mime/multipart"
"net/http"
"net/url"
"strings"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/middleware"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/command"
"github.com/beego/beego/v2/server/web/context"
"github.com/linmadan/egglib-go/core/application"
"github.com/linmadan/egglib-go/utils/excel"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/query"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/service"
... ... @@ -180,6 +188,44 @@ func (controller *ExcelDataController) FileImport() {
importDividendsOrder(controller)
case domain.ImportDividendsReturnOrders:
importDividendsReturnedOrder(controller)
case "ImportProductRecordLevel2", "ImportAttendance", "ImportProductTrouble", "ImportProductCapacities":
//二级品审核导入,工时管理导入 ,事故管理导入,产能管理导入
sourceFile, err := controller.GetExcelFile()
if err != nil {
e := application.ThrowError(application.TRANSACTION_ERROR, err.Error())
controller.Response(nil, e)
return
}
bodyBuf := &bytes.Buffer{}
formWriter := multipart.NewWriter(bodyBuf)
fileWriter, _ := formWriter.CreateFormFile("file", code+".xlsx")
io.Copy(fileWriter, sourceFile)
formWriter.WriteField("code", code)
formWriter.Close()
target, _ := url.Parse(constant.ALLIED_CREATION_MANUFACTURE_HOST)
targetPath := strings.Replace(controller.Ctx.Request.URL.Path, "/v1/web", "", 1)
newReq, _ := http.NewRequest(http.MethodPost, target.String()+targetPath, bodyBuf)
// 传递当前登录信息(可配置)
loginToken, ok := middleware.FormCtxLoginToken(controller.Ctx)
if ok && loginToken.CompanyId > 0 && loginToken.OrgId > 0 {
newReq.Header.Set("companyId", fmt.Sprintf("%v", loginToken.CompanyId))
newReq.Header.Set("orgId", fmt.Sprintf("%v", loginToken.OrgId))
newReq.Header.Set("userId", fmt.Sprintf("%v", loginToken.UserId))
orgIdList := make([]string, 0)
for i := range loginToken.OrgIds {
orgIdList = append(orgIdList, fmt.Sprintf("%d", loginToken.OrgIds[i]))
}
newReq.Header.Add("orgIds", fmt.Sprintf("%v", strings.Join(orgIdList, ",")))
}
newReq.Header.Set("Content-Type", formWriter.FormDataContentType())
resp, err := http.DefaultClient.Do(newReq)
if err != nil {
e := application.ThrowError(application.TRANSACTION_ERROR, err.Error())
controller.Response(nil, e)
return
}
respData, _ := io.ReadAll(resp.Body)
controller.Ctx.ResponseWriter.Write(respData)
default:
defaultImport(controller)
}
... ... @@ -307,6 +353,12 @@ func fileExport(controller *ExcelDataController, code string) {
query.Operator = exportDataCommand.Operator
data, err = excelService.ExportDailyFillingAbnormalLog(query)
filename = "异常记录"
case "ExportRewardSummary":
query := &query.ManufactureExportRewardSummaryQuery{}
controllers.Must(exportDataCommand.UnmarshalQuery(query))
query.Operator = exportDataCommand.Operator
data, err = excelService.ExportRewardSummary(query)
filename = "导出功过奖惩明细"
default:
err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code)
}
... ... @@ -366,7 +418,7 @@ func (controller *ExcelDataController) ExportCostStructuredDailyFillingAbnormalL
fileExport(controller, domain.ExportCostStructuredDailyFillingAbnormalLog)
}
//GetExcelDataFields 获取导出excel数据的可选字段
// GetExcelDataFields 获取导出excel数据的可选字段
func (controller *ExcelDataController) GetExcelDataFields() {
code := controller.GetString(":code")
var excelService = service.NewExcelDataService(nil)
... ...
... ... @@ -3,14 +3,15 @@ package middleware
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"strings"
"github.com/beego/beego/v2/client/httplib"
"github.com/beego/beego/v2/server/web"
"github.com/beego/beego/v2/server/web/context"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log"
"io/ioutil"
"net/http"
"strings"
)
type internalService interface {
... ... @@ -53,6 +54,7 @@ func RedirectInternalService(prefix string, svr internalService) web.FilterFunc
}
req.Header("orgIds", fmt.Sprintf("%v", strings.Join(orgIdList, ",")))
}
req.Body(ctx.Input.RequestBody)
response, err := req.Response()
if err != nil {
... ...
... ... @@ -35,4 +35,36 @@ func init() {
web.Post("/v1/manufacture-weigh/statistics/device-production-efficiency-statistics", middleware.RedirectManufactureWeigh())
web.Post("/v1/manufacture-weigh/statistics/internal/:actionType", middleware.RedirectManufactureWeigh())
//奖惩标准
web.Post("/v1/manufacture-weigh/reward-standard/search", middleware.RedirectManufactureWeigh())
//奖惩规则
web.Get("/v1/manufacture-weigh/reward-rule/", middleware.RedirectManufactureWeigh())
// 功过看板(员工)-日榜
web.Get("/v1/manufacture-weigh/reward-summary/public-notice/day", middleware.RedirectManufactureWeigh())
// 功过看板(员工)-产效
web.Get("/v1/manufacture-weigh/reward-summary/public-notice/yield", middleware.RedirectManufactureWeigh())
// 功过看板 (员工)-合格率
web.Get("/v1/manufacture-weigh/reward-summary/public-notice/up-to-standard", middleware.RedirectManufactureWeigh())
// 功过看板 (员工)-异常
web.Get("/v1/manufacture-weigh/reward-summary/public-notice/accident", middleware.RedirectManufactureWeigh())
// 功过看板 (员工)-月榜
web.Get("/v1/manufacture-weigh/reward-summary/public-notice/month", middleware.RedirectManufactureWeigh())
//车间看板(生产)
//车间描述
web.Get("/v1/manufacture-weigh/workshop-public-notice/workshop", middleware.RedirectManufactureWeigh())
//员工效率排名
web.Get("/v1/manufacture-weigh/workshop-public-notice/employee/workpiece-ratio", middleware.RedirectManufactureWeigh())
//时段产能
web.Get("/v1/manufacture-weigh/workshop-public-notice/section-product-info", middleware.RedirectManufactureWeigh())
//二级品占比
web.Get("/v1/manufacture-weigh/workshop-public-notice/proportion-of-second-level", middleware.RedirectManufactureWeigh())
//今日 昨日 历史最佳
web.Get("/v1/manufacture-weigh/workshop-public-notice/top-show", middleware.RedirectManufactureWeigh())
//计划批次
web.Get("/v1/manufacture-weigh/workshop-public-notice/product_plan", middleware.RedirectManufactureWeigh())
//计划达成率
web.Get("/v1/manufacture-weigh/workshop-public-notice/workshop-plan-completion/current", middleware.RedirectManufactureWeigh())
//近5天计划达成率
web.Get("/v1/manufacture-weigh/workshop-public-notice/workshop-plan-completion/5day", middleware.RedirectManufactureWeigh())
}
... ...