diff --git a/dao/om/SerialOrder.dao.go b/dao/om/SerialOrder.dao.go index a9a5251..235eca9 100644 --- a/dao/om/SerialOrder.dao.go +++ b/dao/om/SerialOrder.dao.go @@ -422,6 +422,7 @@ type SerialOrderDAO interface { * ******************************************************************************/ SelectByOriginSerialOrderId(serialOrderId string) (*model.SerialOrder, error) + SelectByCustOrderIdForDashboard(custOrderId, start, end string) ([]model.SerialOrder, error) } /****************************************************************************** diff --git a/dao/om/SerialOrderPOLst.dao.go b/dao/om/SerialOrderPOLst.dao.go index dd01f9b..b84a0fb 100644 --- a/dao/om/SerialOrderPOLst.dao.go +++ b/dao/om/SerialOrderPOLst.dao.go @@ -225,6 +225,7 @@ type SerialOrderPOLstDAO interface { SelectWithPO(serialOrderId string, workLineId string) ([]model.SerialOrderPOWithProcess, error) // SelectOrderAllPo 查询工单下所有工序 SelectOrderAllPo(serialOrderId string) ([]string, error) + SelectByOrderLi(serialOrderIdLi []interface{}, workLineId string) ([]model.SerialOrderPOWithProcess, error) } /****************************************************************************** diff --git a/dao/om/implments/SerialOrder.dao.impl.go b/dao/om/implments/SerialOrder.dao.impl.go index 1bd3d21..904f6b6 100644 --- a/dao/om/implments/SerialOrder.dao.impl.go +++ b/dao/om/implments/SerialOrder.dao.impl.go @@ -720,4 +720,25 @@ func (impl *SerialOrderDAOImplement) SelectByOriginSerialOrderId(serialOrderId s return nil, nil } return &data, nil +} + + +/****************************************************************************** + * + * @Reference LAPP_ACURA_MOM_BACKEND/dao/om/SerialOrderDAO.SelectByCustOrderIdForDashboard + * + ******************************************************************************/ +func (impl *SerialOrderDAOImplement) SelectByCustOrderIdForDashboard(custOrderId, start, end string) ([]model.SerialOrder, error) { + parameters := []interface{}{impl.plantNr, custOrderId, start, end, common.QualityCheck_STATUS_OK, common.QualityCheck_STATUS_FAIL} + where := fmt.Sprintf("%s = ? and %s = ? and %s >= ? and %s <= ? and (%s = ? or %s = ?) ", + meta.SerialOrder_PlantNr.ColumnName, + meta.SerialOrder_CustOrderId.ColumnName, + meta.SerialOrder_ActStartTime.ColumnName, + meta.SerialOrder_ActEndTime.ColumnName, + meta.SerialOrder_QualityCheck.ColumnName, + meta.SerialOrder_QualityCheck.ColumnName, + ) + data := make([]model.SerialOrder, 0) + err := impl.session.Table(impl.meta.TableName).Where(where, parameters...).OrderBy(meta.SerialOrder_ActEndTime.SortColumnName).Find(&data) + return data, err } \ No newline at end of file diff --git a/dao/om/implments/SerialOrderOPDetailRecvDataLst.dao.impl.go b/dao/om/implments/SerialOrderOPDetailRecvDataLst.dao.impl.go index b3fc325..c244152 100644 --- a/dao/om/implments/SerialOrderOPDetailRecvDataLst.dao.impl.go +++ b/dao/om/implments/SerialOrderOPDetailRecvDataLst.dao.impl.go @@ -418,3 +418,4 @@ func (impl *SerialOrderOPDetailRecvDataLstDAOImplement) SelectOneByAssembly(Recv } return &data, nil } + diff --git a/dao/om/implments/SerialOrderPOLst.dao.impl.go b/dao/om/implments/SerialOrderPOLst.dao.impl.go index baf6e7d..847b6d3 100644 --- a/dao/om/implments/SerialOrderPOLst.dao.impl.go +++ b/dao/om/implments/SerialOrderPOLst.dao.impl.go @@ -378,3 +378,28 @@ func (impl *SerialOrderPOLstDAOImplement) selectOrderPoData(serialOrderIdLi []st Where(where, parameters...).OrderBy(baseMeta.WorkLineProcessLst_Pos.ColumnName).Find(&result) return result, err } + + +// SelectByOrderLi 查询工单工序操作结果及工序数据 +func (impl *SerialOrderPOLstDAOImplement) SelectByOrderLi(serialOrderIdLi []interface{}, workLineId string) ([]model.SerialOrderPOWithProcess, error) { + poCondition := fmt.Sprintf("%s = %s and %s = %s", + meta.SerialOrderPOLst_PlantNr.ColumnName, + baseMeta.Process_PlantNr.ColumnName, + meta.SerialOrderPOLst_PO.ColumnName, + baseMeta.Process_PO.ColumnName) + wpCondition := fmt.Sprintf("%s = %s and %s = %s", + baseMeta.Process_PlantNr.ColumnName, + baseMeta.WorkLineProcessLst_PlantNr.ColumnName, + baseMeta.Process_PO.ColumnName, + baseMeta.WorkLineProcessLst_PO.ColumnName, + ) + where := fmt.Sprintf("%s = ? and %s = ?", + meta.SerialOrderPOLst_PlantNr.ColumnName, + baseMeta.WorkLineProcessLst_WorkLineId.ColumnName) + parameters := []interface{}{impl.plantNr, workLineId} + result := make([]model.SerialOrderPOWithProcess, 0) + err := impl.session.Table(impl.meta.TableName).Join("LEFT", baseMeta.Process.TableName, poCondition). + Join("LEFT", baseMeta.WorkLineProcessLst.TableName, wpCondition). + Where(where, parameters...).In(meta.SerialOrderPOLst_SerialOrderId.ColumnName, serialOrderIdLi).OrderBy(baseMeta.WorkLineProcessLst_Pos.ColumnName).Find(&result) + return result, err +} \ No newline at end of file diff --git a/meta/base/PrintBasicRuleInfo.meta.go b/meta/base/PrintBasicRuleInfo.meta.go index de9126e..ccd9caa 100644 --- a/meta/base/PrintBasicRuleInfo.meta.go +++ b/meta/base/PrintBasicRuleInfo.meta.go @@ -37,9 +37,9 @@ var PrintBasicRuleInfo_TemplateId = grmi.NewField("TemplateId", "[PrintBasicRule var PrintBasicRuleInfo_TemplateType = grmi.NewField("TemplateType", "[PrintBasicRuleInfo].TemplateType", "templatetype", grmi.TypeString) var PrintBasicRuleInfo_Qty = grmi.NewField("Qty", "[PrintBasicRuleInfo].Qty", "qty", grmi.TypeInt) var PrintBasicRuleInfo_CollectScanBarcode = grmi.NewField("CollectScanBarcode", "[PrintBasicRuleInfo].CollectScanBarcode", "collectscanbarcode", grmi.TypeBool) +var PrintBasicRuleInfo_ScanOperationId = grmi.NewField("ScanOperationId", "[PrintBasicRuleInfo].ScanOperationId", "scanoperationid", grmi.TypeInt) +var PrintBasicRuleInfo_LabelDetailPos = grmi.NewField("LabelDetailPos", "[PrintBasicRuleInfo].LabelDetailPos", "labeldetailpos", grmi.TypeString) var PrintBasicRuleInfo_ScanPo = grmi.NewField("ScanPo", "[PrintBasicRuleInfo].ScanPo", "scanpo", grmi.TypeString) -var PrintBasicRuleInfo_ScanStepNo = grmi.NewField("ScanStepNo", "[PrintBasicRuleInfo].ScanStepNo", "scanstepno", grmi.TypeInt) -var PrintBasicRuleInfo_LabelDetailPos = grmi.NewField("LabelDetailPos", "[PrintBasicRuleInfo].LabelDetailPos", "labeldetailpos", grmi.TypeInt) var PrintBasicRuleInfo_LastModify = grmi.NewField("LastModify", "[PrintBasicRuleInfo].LastModify", "lastmodify", grmi.TypeDateTime) var PrintBasicRuleInfo_LastUser = grmi.NewField("LastUser", "[PrintBasicRuleInfo].LastUser", "lastuser", grmi.TypeString) var PrintBasicRuleInfo_CreateTime = grmi.NewField("CreateTime", "[PrintBasicRuleInfo].CreateTime", "createtime", grmi.TypeDateTime) @@ -78,12 +78,12 @@ var PrintBasicRuleInfo = grmi.NewEntity( PrintBasicRuleInfo_TemplateType.Name: PrintBasicRuleInfo_TemplateType, PrintBasicRuleInfo_Qty.Name: PrintBasicRuleInfo_Qty, PrintBasicRuleInfo_CollectScanBarcode.Name: PrintBasicRuleInfo_CollectScanBarcode, - PrintBasicRuleInfo_ScanPo.Name: PrintBasicRuleInfo_ScanPo, - PrintBasicRuleInfo_ScanStepNo.Name: PrintBasicRuleInfo_ScanStepNo, + PrintBasicRuleInfo_ScanOperationId.Name: PrintBasicRuleInfo_ScanOperationId, PrintBasicRuleInfo_LabelDetailPos.Name: PrintBasicRuleInfo_LabelDetailPos, + PrintBasicRuleInfo_ScanPo.Name: PrintBasicRuleInfo_ScanPo, PrintBasicRuleInfo_LastModify.Name: PrintBasicRuleInfo_LastModify, PrintBasicRuleInfo_LastUser.Name: PrintBasicRuleInfo_LastUser, PrintBasicRuleInfo_CreateTime.Name: PrintBasicRuleInfo_CreateTime, }, []string{"PlantNr"}, - []string{"PO", "StepNo", "StepDesc", "ProjectId", "TemplateChooseModel", "DependPO", "DependStepNo", "DependRuleId", "DependValue", "Action", "WhetherCheckContent", "PrinterId", "TemplateId", "TemplateType", "Qty", "CollectScanBarcode", "ScanPo", "ScanStepNo", "LabelDetailPos", "LastUser"}) + []string{"PO", "StepNo", "StepDesc", "ProjectId", "TemplateChooseModel", "DependPO", "DependStepNo", "DependRuleId", "DependValue", "Action", "WhetherCheckContent", "PrinterId", "TemplateId", "TemplateType", "Qty", "CollectScanBarcode", "ScanOperationId", "ScanPo", "LabelDetailPos", "LastUser"}) diff --git a/models/base/PrintBasicRuleInfo.model.go b/models/base/PrintBasicRuleInfo.model.go index be0978b..0108a1e 100644 --- a/models/base/PrintBasicRuleInfo.model.go +++ b/models/base/PrintBasicRuleInfo.model.go @@ -41,9 +41,9 @@ type PrintBasicRuleInfo struct { TemplateType string `xorm:"nvarchar(10) 'TemplateType'" json:"PrintBasicRuleInfo-TemplateType"` Qty int `xorm:"int 'Qty' not null" json:"PrintBasicRuleInfo-Qty"` CollectScanBarcode bool `xorm:"bit 'CollectScanBarcode'" json:"PrintBasicRuleInfo-CollectScanBarcode"` + ScanOperationId int `xorm:"int 'ScanOperationId'" json:"PrintBasicRuleInfo-ScanOperationId"` + LabelDetailPos string `xorm:"nvarchar(255) 'LabelDetailPos'" json:"PrintBasicRuleInfo-LabelDetailPos"` ScanPo string `xorm:"nvarchar(40) 'ScanPo'" json:"PrintBasicRuleInfo-ScanPo"` - ScanStepNo int `xorm:"int 'ScanStepNo'" json:"PrintBasicRuleInfo-ScanStepNo"` - LabelDetailPos int `xorm:"int 'LabelDetailPos'" json:"PrintBasicRuleInfo-LabelDetailPos"` LastModify grmi.DateTime `xorm:"datetime 'LastModify' not null updated" json:"PrintBasicRuleInfo-LastModify"` LastUser string `xorm:"nvarchar(20) 'LastUser' not null" json:"PrintBasicRuleInfo-LastUser"` CreateTime grmi.DateTime `xorm:"datetime 'CreateTime' not null created" json:"PrintBasicRuleInfo-CreateTime"` diff --git a/models/om/om.go b/models/om/om.go index b6e548c..44ee475 100644 --- a/models/om/om.go +++ b/models/om/om.go @@ -153,3 +153,20 @@ type ExportItem struct { BarCode string `json:"ExportItem-BarCode"` UsedTime string `json:"ExportItem-UsedTime"` } + +type ProductTraceData struct { + SerialOrderId string `json:"ProductTraceData-SerialOrderId"` + POLi []ProductTracePOData `json:"ProductTraceData-POLi"` +} + +type ProductTracePOData struct { + PO string `json:"ProductTracePOData-PO"` + PoDesc string `json:"ProductTracePOData-PoDesc"` + StepLi []ProductTraceStepData `json:"ProductTracePOData-StepLi"` +} + +type ProductTraceStepData struct { + StepNo int `json:"ProductTraceStepData-StepNo"` + StepDesc string `json:"ProductTraceStepData-StepDesc"` + RecvDataLi []SerialOrderOPDetailRecvDataLst `json:"ProductTraceStepData-RecvDataLi"` +} diff --git a/services/base/implments/PrintBasicRuleInfo.service.impl.go b/services/base/implments/PrintBasicRuleInfo.service.impl.go index 370c4a4..964748b 100644 --- a/services/base/implments/PrintBasicRuleInfo.service.impl.go +++ b/services/base/implments/PrintBasicRuleInfo.service.impl.go @@ -43,9 +43,9 @@ var DefaultConditionOfPrintBasicRuleInfo = grmi.NewCondition( meta.PrintBasicRuleInfo_TemplateId.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_TemplateId, grmi.Equal, false), meta.PrintBasicRuleInfo_Qty.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_Qty, grmi.Equal, false), meta.PrintBasicRuleInfo_CollectScanBarcode.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_CollectScanBarcode, grmi.Equal, false), - meta.PrintBasicRuleInfo_ScanPo.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_ScanPo, grmi.Equal, false), - meta.PrintBasicRuleInfo_ScanStepNo.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_ScanStepNo, grmi.Equal, false), + meta.PrintBasicRuleInfo_ScanOperationId.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_ScanOperationId, grmi.Equal, false), meta.PrintBasicRuleInfo_LabelDetailPos.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_LabelDetailPos, grmi.Equal, false), + meta.PrintBasicRuleInfo_ScanPo.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_ScanPo, grmi.Equal, false), meta.PrintBasicRuleInfo_LastModify.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_LastModify, grmi.Approximate, false), meta.PrintBasicRuleInfo_LastUser.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_LastUser, grmi.Equal, false), meta.PrintBasicRuleInfo_CreateTime.UrlParameterName: grmi.NewConditionItem(meta.PrintBasicRuleInfo_CreateTime, grmi.Approximate, false), diff --git a/services/om/SerialOrder.service.go b/services/om/SerialOrder.service.go index d7e0fb8..0852504 100644 --- a/services/om/SerialOrder.service.go +++ b/services/om/SerialOrder.service.go @@ -515,6 +515,7 @@ type SerialOrderService interface { TraceSubArticleBatch(user *global.User, barcode string, paging *grmi.Paging) (grmi.PagingResult, error) ExportTraceSubArticleBatch(user *global.User, barcode string) (string, error) CancelMultiSerialOrder(user *global.User, serialOrderIdLi []string) error + GetProductTraceDataReport(user *global.User, serialOrderId string) (interface{}, error) } /****************************************************************************** diff --git a/services/om/implments/SerialOrder.service.impl.go b/services/om/implments/SerialOrder.service.impl.go index 5646ce8..4d0ef33 100644 --- a/services/om/implments/SerialOrder.service.impl.go +++ b/services/om/implments/SerialOrder.service.impl.go @@ -1536,21 +1536,21 @@ func (impl *SerialOrderServiceImplement) PrintRuleInfo(user *global.User, sessio serialOrderDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.PlantNr, user.UserId) var qty = 1 var collectScanBarcode = false - var labelDetailPos = 0 - var scanStepNo = 0 - var scanPo = "" + var labelDetailPos string + var scanOperationId = 0 + var scanPo string if rule != nil { qty = rule.Qty collectScanBarcode = rule.CollectScanBarcode labelDetailPos = rule.LabelDetailPos + scanOperationId = rule.ScanOperationId scanPo = rule.ScanPo - scanStepNo = rule.ScanStepNo } // FlagPara1 标识是不是根据扫码更新打印数据 1为需要 - // CharPara1 扫码的工序 + // CharPara2 插入打印模板子项索引 多个用;分割 // IntPara2 扫码的步骤 - // IntPara3 labelDetail的pos + // 生成打印规则 op := model.SerialOrderOPDetail{ SerialOrderId: serialOrderStep.SerialOrderId, @@ -1563,9 +1563,9 @@ func (impl *SerialOrderServiceImplement) PrintRuleInfo(user *global.User, sessio StepNo: serialOrderStep.StepNo, BKFlag: bkFlag, IntPara1: qty, - IntPara2: scanStepNo, - IntPara3: labelDetailPos, + IntPara2: scanOperationId, CharPara1: scanPo, + CharPara2: labelDetailPos, FlagPara1: collectScanBarcode, } err = serialOrderDetailDao.InsertOne(&op) @@ -1574,7 +1574,7 @@ func (impl *SerialOrderServiceImplement) PrintRuleInfo(user *global.User, sessio } // 生成打印模板数据 if rule != nil { - labelId := serialOrderStep.SerialOrderId + "_" + "Generate" + labelId := serialOrderStep.SerialOrderId + "_" + serialOrderStep.PO + strconv.Itoa(serialOrderStep.StepNo) labelHead := baseModel.LabelHead{ LabelId: labelId, LabelTemplateId: printTemplate.LabelTemplateId, @@ -2851,10 +2851,10 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se } if orderOPData.Config.BarCodeRule == baseModel.BARCODE_RULE_ACURA_PRE { - number, err := snrDao.GetNextSnr(project.PreOrderSnr) - if err != nil { - return grmi.NewBusinessError("获取流水号失败,错误:" + err.Error()) - } + number, err := snrDao.GetNextSnr(project.PreOrderSnr) + if err != nil { + return grmi.NewBusinessError("获取流水号失败,错误:" + err.Error()) + } serialOrderId = strings.Replace(orderOPData.SFP.ArtId, "-", "", -1) + today + number } else { @@ -4140,3 +4140,132 @@ func (impl *SerialOrderServiceImplement) ExportTraceSubArticleBatch(user *global return filepath, err } + +// GetProductTraceDataReport 工单数据追溯 +func (impl *SerialOrderServiceImplement) GetProductTraceDataReport(user *global.User, serialOrderId string) (interface{}, error) { + engine := db.Eloquent.Master() + session := engine.NewSession() + defer session.Close() + result := model.ProductTraceData{ + SerialOrderId: serialOrderId, + POLi: make([]model.ProductTracePOData, 0), + } + // 1. 查询工单 + // 2. 通过工单查询生产的产线 + // 4. 通过工序查询当前工序生成工步结果 + serialOrderDao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) + serialOrderPoDao := dal.NewSerialOrderPOLstDAO(session, user.PlantNr, user.UserId) + serialOrderStepDao := dal.NewSerialOrderStepLstDAO(session, user.PlantNr, user.UserId) + recvDataDao := dal.NewSerialOrderOPDetailRecvDataLstDAO(session, user.PlantNr, user.UserId) + serialOrder, err := serialOrderDao.SelectOne(serialOrderId) + if err != nil { + return nil, grmi.NewBusinessError("查询工单失败, error:" + err.Error()) + } + if serialOrder == nil { + return nil, grmi.NewBusinessError("工单不存在, 工单ID:" + serialOrderId) + } + // 所有工单ID + allOrderIdLi := make([]interface{}, 0) + if serialOrder.OriginSerialOrderId != "" { + subSerialOrderLi, err := serialOrderDao.Select([]grmi.Predicate{ + meta.SerialOrder_SerialOrderId.NewPredicate(grmi.NotEqual, serialOrderId), + meta.SerialOrder_OriginSerialOrderId.NewPredicate(grmi.Equal, serialOrder.OriginSerialOrderId), + }, nil) + if err != nil { + return nil, grmi.NewBusinessError("查询工单数据失败, 错误:" + err.Error()) + } + allOrderIdLi = append(allOrderIdLi, serialOrderId, serialOrder.OriginSerialOrderId) + for _, subOrder := range subSerialOrderLi { + allOrderIdLi = append(allOrderIdLi, subOrder.SerialOrderId) + } + } else { + allOrderIdLi = append(allOrderIdLi, serialOrder.SerialOrderId) + } + + articleDao := baseDal.NewArticleDAO(session, user.PlantNr, user.UserId) + article, err := articleDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId) + if err != nil { + return nil, grmi.NewBusinessError("查询工单总成数据失败, error:" + err.Error()) + } + if article == nil { + return nil, grmi.NewBusinessError("工单绑定总成不存在, 总成ID:" + serialOrder.ArtId) + } + //articleAtocdDao := baseDal.NewArticleAtcodLstDAO(session, user.PlantNr, user.UserId) + //var needEOL bool + //var needSBR bool + //attributeLi, err := articleAtocdDao.SelectByArtId(serialOrder.ArtId) + //if err != nil { + // return nil, grmi.NewBusinessError("查询总成关联属性失败, error:" + err.Error()) + //} + //for _, attributeItem := range attributeLi { + // if attributeItem.Attribute.Descr == "EOL" { + // needEOL = true + // } else if attributeItem.Attribute.Descr == "SBR检测" { + // needSBR = true + // } + //} + allPoLi, err := serialOrderPoDao.SelectByOrderLi(allOrderIdLi, serialOrder.UsedResourceId) + if err != nil { + return nil, grmi.NewBusinessError("查询工序数据失败, 错误:" + err.Error()) + } + poMap := make(map[string]int) + for _, poItem := range allPoLi { + _, exist := poMap[poItem.Process.PO] + if !exist { + poMap[poItem.Process.PO] = len(result.POLi) + poData := model.ProductTracePOData{ + PO: poItem.Process.PO, + PoDesc: poItem.Process.Descr, + StepLi: make([]model.ProductTraceStepData, 0), + } + result.POLi = append(result.POLi, poData) + } + } + stepLi, err := serialOrderStepDao.Select([]grmi.Predicate{ + meta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Include, allOrderIdLi...), + }, []grmi.Field{meta.SerialOrderStepLst_StepNo}) + if err != nil { + return nil, grmi.NewBusinessError("查询工步数据失败, 错误:" + err.Error()) + } + stepMap := make(map[string]int) + for _, stepItem := range stepLi { + mapKey := stepItem.PO + "_" + strconv.Itoa(stepItem.StepNo) + _, exist := stepMap[mapKey] + if !exist { + poIndex := poMap[stepItem.PO] + stepMap[mapKey] = len(result.POLi[poIndex].StepLi) + stepData := model.ProductTraceStepData{ + StepNo: stepItem.StepNo, + StepDesc: stepItem.StepDesc, + RecvDataLi: make([]model.SerialOrderOPDetailRecvDataLst, 0), + } + result.POLi[poIndex].StepLi = append(result.POLi[poIndex].StepLi, stepData) + } + } + + recvDataLi, err := recvDataDao.Select([]grmi.Predicate{ + meta.SerialOrderOPDetailRecvDataLst_SerialOrderId.NewPredicate(grmi.Include, allOrderIdLi...), + }, []grmi.Field{ + meta.SerialOrderOPDetailRecvDataLst_SerialOrderId, + meta.SerialOrderOPDetailRecvDataLst_PO, + meta.SerialOrderOPDetailRecvDataLst_StepNo, + meta.SerialOrderOPDetailRecvDataLst_OriginRuleId, + }) + if err != nil { + return nil, grmi.NewBusinessError("查询生产数据失败, 错误:" + err.Error()) + } + for _, recvData := range recvDataLi { + poIndex, exist := poMap[recvData.PO] + if !exist { + continue + } + stepKey := recvData.PO + "_" + strconv.Itoa(recvData.StepNo) + stepIndex, exist := stepMap[stepKey] + + if !exist { + continue + } + result.POLi[poIndex].StepLi[stepIndex].RecvDataLi = append(result.POLi[poIndex].StepLi[stepIndex].RecvDataLi, recvData) + } + return result, nil +} diff --git a/web/controllers/om/SerialOrder.rest.go b/web/controllers/om/SerialOrder.rest.go index 8858dd3..c5e8291 100644 --- a/web/controllers/om/SerialOrder.rest.go +++ b/web/controllers/om/SerialOrder.rest.go @@ -1271,3 +1271,26 @@ func RegisterCancelMultiSerialOrder(party router.Party, path string, method func supports.Ok(ctx, supports.OptionSuccess, nil) }) } + + +// RegisterGetProductTraceDataReport 查询工单的生产数据 +func RegisterGetProductTraceDataReport(party router.Party, path string, method func(user *global.User, serialOrderId string) (interface{}, error)) { + + party.Get(path, func(ctx iris.Context) { + user, ok := jwts.ParseToken(ctx) + if !ok { + return + } + serialOrderId := ctx.URLParam("serialOrderId") + if serialOrderId == "" { + supports.Error(ctx, iris.StatusBadRequest, "未获取到工单ID", nil) + return + } + result, err := method(user, serialOrderId) + if err != nil { + supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) + return + } + supports.Ok(ctx, supports.OptionSuccess, result) + }) +} diff --git a/web/controllers/om/om.go b/web/controllers/om/om.go index c68aca1..2e32c8d 100644 --- a/web/controllers/om/om.go +++ b/web/controllers/om/om.go @@ -231,6 +231,8 @@ func RegisterRoutes() { RegisterExportTraceArticleBatch(serialorder, "/exporttracebatch", serviceOfSerialOrder.ExportTraceSubArticleBatch) // serialOrder 批量取消工单 RegisterCancelMultiSerialOrder(serialorder, "/multicancel", serviceOfSerialOrder.CancelMultiSerialOrder) + // serialOrder 查询工单生产数据 + RegisterGetProductTraceDataReport(serialorder, "/producttrace", serviceOfSerialOrder.GetProductTraceDataReport) // SerialOrderStatus的路由组 serialorderstatus := party.Party("/serialorderstatus")