diff --git a/meta/om/SerialOrder.meta.go b/meta/om/SerialOrder.meta.go index 1e36b64..68daebe 100644 --- a/meta/om/SerialOrder.meta.go +++ b/meta/om/SerialOrder.meta.go @@ -59,6 +59,7 @@ var SerialOrder_CtrlStr1 = grmi.NewField("CtrlStr1", "[OM_SerialOrder].CtrlStr1" var SerialOrder_CtrlStr2 = grmi.NewField("CtrlStr2", "[OM_SerialOrder].CtrlStr2", "ctrlstr2", grmi.TypeString) var SerialOrder_QualityCheck = grmi.NewField("QualityCheck", "[OM_SerialOrder].QualityCheck", "qualitycheck", grmi.TypeString) var SerialOrder_QualityCheckTime = grmi.NewField("QualityCheckTime", "[OM_SerialOrder].QualityCheckTime", "qualitychecktime", grmi.TypeDateTime) +var SerialOrder_EOLCheck = grmi.NewField("EOLCheck", "[OM_SerialOrder].EOLCheck", "eolcheck", grmi.TypeDateTime) var SerialOrder_MainOrderId = grmi.NewField("MainOrderId", "[OM_SerialOrder].MainOrderId", "mainorderid", grmi.TypeString) var SerialOrder_CtrlTime1 = grmi.NewField("CtrlTime1", "[OM_SerialOrder].CtrlTime1", "ctrltime1", grmi.TypeDateTime) var SerialOrder_CtrlTime2 = grmi.NewField("CtrlTime2", "[OM_SerialOrder].CtrlTime2", "ctrltime2", grmi.TypeDateTime) @@ -125,9 +126,10 @@ var SerialOrder = grmi.NewEntity( SerialOrder_MainOrderId.Name: SerialOrder_MainOrderId, SerialOrder_CtrlTime1.Name: SerialOrder_CtrlTime1, SerialOrder_CtrlTime2.Name: SerialOrder_CtrlTime2, + SerialOrder_EOLCheck.Name: SerialOrder_EOLCheck, SerialOrder_LastModify.Name: SerialOrder_LastModify, SerialOrder_LastUser.Name: SerialOrder_LastUser, SerialOrder_CreateTime.Name: SerialOrder_CreateTime, }, []string{"PlantNr"}, - []string{"ArtId", "ProjectId", "LinkSerialOrderId", "QualityCheck", "GenerateFlag", "OriginSerialOrderId", "Descr", "WorkOrderId", "CustOrderId", "FirstPieceInBatch", "LastPieceInBatch", "PreSchedKey", "SchedKey", "Priority", "OrderType", "OrderType1", "OrderType2", "PlanResourceId", "UsedResourceId", "PlanQty", "QtyUomId", "OpTimePerItem", "TimeUomId", "PlanStartDate", "PlanEndDate", "SetupStartTime", "SetupEndTime", "PlanStartTime", "PlanEndTime", "ActStartTime", "ActEndTime", "PickingFlag", "IsFirstPieceToggle", "SyncKey", "BackFlushFlag", "RepairFlag", "QualityCheckTime", "MainOrderId", "CtrlPara1", "CtrlPara2", "CtrlStr1", "CtrlStr2", "CtrlTime1", "CtrlTime2", "LastUser"}) + []string{"ArtId", "ProjectId", "LinkSerialOrderId", "QualityCheck", "GenerateFlag", "OriginSerialOrderId", "Descr", "WorkOrderId", "CustOrderId", "FirstPieceInBatch", "LastPieceInBatch", "PreSchedKey", "SchedKey", "Priority", "OrderType", "OrderType1", "OrderType2", "PlanResourceId", "UsedResourceId", "PlanQty", "QtyUomId", "OpTimePerItem", "TimeUomId", "PlanStartDate", "PlanEndDate", "SetupStartTime", "SetupEndTime", "PlanStartTime", "PlanEndTime", "ActStartTime", "ActEndTime", "PickingFlag", "IsFirstPieceToggle", "SyncKey", "BackFlushFlag", "RepairFlag", "QualityCheckTime", "MainOrderId", "EOLCheck", "CtrlPara1", "CtrlPara2", "CtrlStr1", "CtrlStr2", "CtrlTime1", "CtrlTime2", "LastUser"}) diff --git a/models/om/SerialOrder.model.go b/models/om/SerialOrder.model.go index 12cc99d..852dde3 100644 --- a/models/om/SerialOrder.model.go +++ b/models/om/SerialOrder.model.go @@ -69,6 +69,7 @@ type SerialOrder struct { QualityCheck string `xorm:"nvarchar(16) 'QualityCheck' not null" json:"OM_SerialOrder-QualityCheck"` QualityCheckTime grmi.DateTime `xorm:"datetime 'QualityCheckTime'" json:"OM_SerialOrder-QualityCheckTime"` MainOrderId string `xorm:"nvarchar(40) 'MainOrderId' not null" json:"OM_SerialOrder-MainOrderId"` + EOLCheck string `xorm:"nvarchar(40) 'EOLCheck' not null" json:"OM_SerialOrder-EOLCheck"` SerialOrderStatus SerialOrderStatus `json:"OM_SerialOrder-SerialOrderStatus" xorm:"-"` } diff --git a/models/om/const.go b/models/om/const.go index c51dccc..e5d9d68 100644 --- a/models/om/const.go +++ b/models/om/const.go @@ -37,4 +37,7 @@ const ( ORDER_FAILED = "ORDER_FAILED" ORDER_UNDEALED = 0 ORDER_DEALED = 1 + + EOL_STATUS_OK = "OK" + EOL_STATUS_NG = "NG" ) diff --git a/services/jit/implments/PackOrder.service.impl.go b/services/jit/implments/PackOrder.service.impl.go index bbb0316..1e5b1b3 100644 --- a/services/jit/implments/PackOrder.service.impl.go +++ b/services/jit/implments/PackOrder.service.impl.go @@ -18,6 +18,7 @@ import ( baseModel "LAPP_ACURA_MOM_BACKEND/models/base" model "LAPP_ACURA_MOM_BACKEND/models/jit" meModel "LAPP_ACURA_MOM_BACKEND/models/me" + omModel "LAPP_ACURA_MOM_BACKEND/models/om" plnModel "LAPP_ACURA_MOM_BACKEND/models/pln" "LAPP_ACURA_MOM_BACKEND/utils" "encoding/hex" @@ -1446,6 +1447,9 @@ func (impl *PackOrderServiceImplement) ScanBarcodeOutLine(user *global.User, bar if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK { return nil, grmi.NewBusinessError("工单目检结果不符合要求") } + if serialOrder.EOLCheck == omModel.EOL_STATUS_NG { + return nil, grmi.NewBusinessError("工单电检不合格") + } // 获取用户之前是否存在未关包的包装单 如果存在则使用之前的包装单ID 如果不存在则创建包装单 如果超过一个则报错 var packOrderId string packOrderLi, err := packOrderDao.SelectUserRunningPackOrder(user.UserId, model.PACK_LOCATION_OUT_LINE) diff --git a/services/jit/implments/ShipOrder.service.impl.go b/services/jit/implments/ShipOrder.service.impl.go index e8b6f8f..32bc076 100644 --- a/services/jit/implments/ShipOrder.service.impl.go +++ b/services/jit/implments/ShipOrder.service.impl.go @@ -16,6 +16,7 @@ import ( meta "LAPP_ACURA_MOM_BACKEND/meta/jit" baseModel "LAPP_ACURA_MOM_BACKEND/models/base" model "LAPP_ACURA_MOM_BACKEND/models/jit" + omModel "LAPP_ACURA_MOM_BACKEND/models/om" "LAPP_ACURA_MOM_BACKEND/utils" json "github.com/json-iterator/go" "github.com/kataras/iris/v12" @@ -838,6 +839,9 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st if serialOrder.RepairFlag { return nil, grmi.NewBusinessError("工单是线上返修工单, 工单ID:" + packOrderItem.SerialOrderId) } + if serialOrder.EOLCheck == omModel.EOL_STATUS_NG { + return nil, grmi.NewBusinessError("工单电检不合格, 工单ID:" + packOrderItem.SerialOrderId) + } if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK { return nil, grmi.NewBusinessError("工单目检结果不符合要求") } diff --git a/services/om/SerialOrder.service.go b/services/om/SerialOrder.service.go index 0852504..1e32a40 100644 --- a/services/om/SerialOrder.service.go +++ b/services/om/SerialOrder.service.go @@ -10,6 +10,7 @@ import ( model "LAPP_ACURA_MOM_BACKEND/models/om" "LAPP_ACURA_MOM_BACKEND/services/om/implments" "github.com/go-xorm/xorm" + "time" ) /****************************************************************************** @@ -511,6 +512,7 @@ type SerialOrderService interface { GuideRuleInfo(user *global.User, session *xorm.Session, guideRule *baseModel.GuideRuleInfo, serialOrderStep *model.SerialOrderStepLst, bkFlag bool) error PrintRuleInfo(user *global.User, session *xorm.Session, serialOrderStep *model.SerialOrderStepLst, rule *baseModel.PrintBasicRuleInfo, printTemplate *baseModel.LabelTemplateHead, article *baseModel.Article, bkFlag bool) error ExtractArtId(bomHead *meModel.BomHead) map[string]int + ExtractEOL(session *xorm.Session, user *global.User, serialOrder *model.SerialOrder) (status bool, remark string, recordT time.Time, err error) CreateBatchSerialOrder(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int) error TraceSubArticleBatch(user *global.User, barcode string, paging *grmi.Paging) (grmi.PagingResult, error) ExportTraceSubArticleBatch(user *global.User, barcode string) (string, error) diff --git a/services/om/implments/SerialOrder.service.impl.go b/services/om/implments/SerialOrder.service.impl.go index 447ee07..a25639e 100644 --- a/services/om/implments/SerialOrder.service.impl.go +++ b/services/om/implments/SerialOrder.service.impl.go @@ -77,6 +77,7 @@ var DefaultConditionOfSerialOrder = grmi.NewCondition( meta.SerialOrder_QualityCheck.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_QualityCheck, grmi.Equal, false), meta.SerialOrder_QualityCheckTime.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_QualityCheckTime, grmi.Equal, false), meta.SerialOrder_MainOrderId.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_MainOrderId, grmi.Equal, false), + meta.SerialOrder_EOLCheck.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_EOLCheck, grmi.Equal, false), meta.SerialOrder_CtrlTime1.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_CtrlTime1, grmi.Approximate, false), meta.SerialOrder_CtrlTime2.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_CtrlTime2, grmi.Approximate, false), meta.SerialOrder_LastModify.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_LastModify, grmi.Approximate, false), @@ -3274,137 +3275,269 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa } if needEOL { // 电检 主驾和副驾需要查询EOLDR 和 EOLPA 两张表 后排 查询EOLBR + //var poOperationData model.POOperationData + //poOperationData.PO = "电检" + //poOperationData.Status = "成功" + //poOperationData.RecvDataLi = make([]model.RecvDataItem, 0) + //eolEngine := db.Eloquent.Slaves()[0] + //eolSession := eolEngine.NewSession() + //eolDrDao := eolDal.NewEOLDRDAO(eolSession, user.UserId) + //eolPaDao := eolDal.NewEOLPADAO(eolSession, user.UserId) + //eolBrDao := eolDal.NewEOLBRDAO(eolSession, user.UserId) + //productDao := meDal.NewProductDAO(session, user.PlantNr, user.UserId) + //// 查询工单是否有返修记录 如果有返修记录 需要在返修记录后有电检数据 + //var repairFlag bool + //var repairTime time.Time + //repairInfoDao := baseDal.NewRepairInfoDAO(session, user.UserId) + //repairInfoLi, err := repairInfoDao.Select([]grmi.Predicate{ + // baseMeta.RepairInfo_SerialOrderId.NewPredicate(grmi.Equal, serialOrderId), + //}, []grmi.Field{baseMeta.RepairInfo_CreateTime}) + //if err != nil { + // return nil, grmi.NewBusinessError("查询工单返修记录失败, 错误:" + err.Error()) + //} + //if len(repairInfoLi) != 0 { + // repairFlag = true + // repairTime = repairInfoLi[len(repairInfoLi)-1].CreateTime.Restore() + //} + //product, err := productDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId) + //if err != nil { + // return nil, grmi.NewBusinessError("查询工单总成信息失败, 错误:" + err.Error()) + //} + //if product == nil { + // return nil, grmi.NewBusinessError("工单总成数据不存在") + //} + //eolResultLi := make([]interface{}, 0) + //if product.CtrlStr1 == meModel.PRODUCT_TYPE_MS || product.CtrlStr1 == meModel.PRODUCT_TYPE_PS { + // + // drLi, err := eolDrDao.Select([]grmi.Predicate{eolMeta.EOLDR_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil) + // if err != nil { + // return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) + // } + // paLi, err := eolPaDao.Select([]grmi.Predicate{eolMeta.EOLPA_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil) + // if err != nil { + // return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) + // } + // for _, item := range drLi { + // eolResultLi = append(eolResultLi, item) + // } + // for _, item := range paLi { + // eolResultLi = append(eolResultLi, item) + // } + //} else { + // brLi, err := eolBrDao.Select([]grmi.Predicate{eolMeta.EOLBR_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil) + // if err != nil { + // return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) + // } + // for _, item := range brLi { + // eolResultLi = append(eolResultLi, item) + // } + //} + // + //if len(eolResultLi) == 0 { + // recvData := model.RecvDataItem{ + // SerialOrderId: serialOrderId, + // ArtId: "", + // PO: "EOL", + // OperationDesc: "电检", + // RecvData: "", + // Status: "失败", + // Remark1: "未查询到电检数据", + // } + // poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) + // poOperationData.Status = "失败" + //} else { + // err = impl.QuickSort(eolResultLi) + // if err != nil { + // return nil, err + // } + // fmt.Println("eolResultLi:", eolResultLi) + // lastRecord := eolResultLi[len(eolResultLi)-1] + // var recordTime time.Time + // var recordResult string + // drData, ok := lastRecord.(eolModel.EOLDR) + // if ok { + // recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation) + // recordResult = drData.TOTALRESULT + // } else { + // paData, ok := lastRecord.(eolModel.EOLPA) + // if ok { + // recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation) + // recordResult = paData.TOTALRESULT + // } else { + // brData, ok := lastRecord.(eolModel.EOLBR) + // if ok { + // recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation) + // recordResult = brData.TOTALRESULT + // } else { + // return nil, grmi.NewBusinessError("电检数据格式错误") + // } + // } + // } + // + // var status string = "成功" + // var remark string = "已通过电检" + // if repairFlag { + // if recordTime.Before(repairTime) { + // status = "失败" + // result.Status = false + // remark = "线上返修之后未进行电检" + // } + // } + // if recordResult != "OK" { + // status = "失败" + // result.Status = false + // remark = "电检不合格" + // } + // recvData := model.RecvDataItem{ + // SerialOrderId: serialOrderId, + // ArtId: "", + // PO: "EOL", + // OperationDesc: "电检", + // RecvData: "", + // Status: status, + // Remark1: remark, + // ExecuteTime: recordTime.Format(grmi.DateTimeOutFormat), + // } + // poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) + //} + //result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData) + eolStatus, remark, recordTime, err := impl.ExtractEOL(session, user, serialOrder) + if err != nil { + return nil, err + } var poOperationData model.POOperationData poOperationData.PO = "电检" - poOperationData.Status = "成功" - poOperationData.RecvDataLi = make([]model.RecvDataItem, 0) - eolEngine := db.Eloquent.Slaves()[0] - eolSession := eolEngine.NewSession() - eolDrDao := eolDal.NewEOLDRDAO(eolSession, user.UserId) - eolPaDao := eolDal.NewEOLPADAO(eolSession, user.UserId) - eolBrDao := eolDal.NewEOLBRDAO(eolSession, user.UserId) - productDao := meDal.NewProductDAO(session, user.PlantNr, user.UserId) - // 查询工单是否有返修记录 如果有返修记录 需要在返修记录后有电检数据 - var repairFlag bool - var repairTime time.Time - repairInfoDao := baseDal.NewRepairInfoDAO(session, user.UserId) - repairInfoLi, err := repairInfoDao.Select([]grmi.Predicate{ - baseMeta.RepairInfo_SerialOrderId.NewPredicate(grmi.Equal, serialOrderId), - }, []grmi.Field{baseMeta.RepairInfo_CreateTime}) + if eolStatus { + poOperationData.Status = "成功" + } else { + poOperationData.Status = "失败" + } + recvData := model.RecvDataItem{ + SerialOrderId: serialOrderId, + ArtId: "", + PO: "EOL", + OperationDesc: "电检", + Status: poOperationData.Status, + RecvData: "", + Remark1: remark, + ExecuteTime: recordTime.Format(grmi.DateTimeOutFormat), + } + + poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) + result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData) + if eolStatus { + serialOrder.EOLCheck = model.EOL_STATUS_OK + } else { + serialOrder.EOLCheck = model.EOL_STATUS_NG + } + err = serialOrderDao.UpdateOne(serialOrder) if err != nil { - return nil, grmi.NewBusinessError("查询工单返修记录失败, 错误:" + err.Error()) + return nil, grmi.NewBusinessError("将电检结果保存到工单上失败, 错误:" + err.Error()) } - if len(repairInfoLi) != 0 { - repairFlag = true - repairTime = repairInfoLi[len(repairInfoLi)-1].CreateTime.Restore() + } + if needSBR { + + } + return result, nil +} + +// ExtractEOL 提取工单的电检数据 +func (impl *SerialOrderServiceImplement) ExtractEOL(session *xorm.Session, user *global.User, serialOrder *model.SerialOrder) (status bool, remark string, recordT time.Time, err error) { + + eolEngine := db.Eloquent.Slaves()[0] + eolSession := eolEngine.NewSession() + eolDrDao := eolDal.NewEOLDRDAO(eolSession, user.UserId) + eolPaDao := eolDal.NewEOLPADAO(eolSession, user.UserId) + eolBrDao := eolDal.NewEOLBRDAO(eolSession, user.UserId) + productDao := meDal.NewProductDAO(session, user.PlantNr, user.UserId) + // 查询工单是否有返修记录 如果有返修记录 需要在返修记录后有电检数据 + var repairFlag bool + var repairTime time.Time + repairInfoDao := baseDal.NewRepairInfoDAO(session, user.UserId) + repairInfoLi, err := repairInfoDao.Select([]grmi.Predicate{ + baseMeta.RepairInfo_SerialOrderId.NewPredicate(grmi.Equal, serialOrder.SerialOrderId), + }, []grmi.Field{baseMeta.RepairInfo_CreateTime}) + if err != nil { + return false, "", recordT, grmi.NewBusinessError("查询工单返修记录失败, 错误:" + err.Error()) + } + if len(repairInfoLi) != 0 { + repairFlag = true + repairTime = repairInfoLi[len(repairInfoLi)-1].CreateTime.Restore() + } + product, err := productDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId) + if err != nil { + return false, "", recordT, grmi.NewBusinessError("查询工单总成信息失败, 错误:" + err.Error()) + } + if product == nil { + return false, "", recordT, grmi.NewBusinessError("工单总成数据不存在") + } + eolResultLi := make([]interface{}, 0) + if product.CtrlStr1 == meModel.PRODUCT_TYPE_MS || product.CtrlStr1 == meModel.PRODUCT_TYPE_PS { + + drLi, err := eolDrDao.Select([]grmi.Predicate{eolMeta.EOLDR_CODE.NewPredicate(grmi.Equal, serialOrder.SerialOrderId)}, nil) + if err != nil { + return false, "", recordT, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) } - product, err := productDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId) + paLi, err := eolPaDao.Select([]grmi.Predicate{eolMeta.EOLPA_CODE.NewPredicate(grmi.Equal, serialOrder.SerialOrderId)}, nil) if err != nil { - return nil, grmi.NewBusinessError("查询工单总成信息失败, 错误:" + err.Error()) + return false, "", recordT, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) } - if product == nil { - return nil, grmi.NewBusinessError("工单总成数据不存在") + for _, item := range drLi { + eolResultLi = append(eolResultLi, item) } - eolResultLi := make([]interface{}, 0) - if product.CtrlStr1 == meModel.PRODUCT_TYPE_MS || product.CtrlStr1 == meModel.PRODUCT_TYPE_PS { - - drLi, err := eolDrDao.Select([]grmi.Predicate{eolMeta.EOLDR_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil) - if err != nil { - return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) - } - paLi, err := eolPaDao.Select([]grmi.Predicate{eolMeta.EOLPA_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil) - if err != nil { - return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) - } - for _, item := range drLi { - eolResultLi = append(eolResultLi, item) - } - for _, item := range paLi { - eolResultLi = append(eolResultLi, item) - } - } else { - brLi, err := eolBrDao.Select([]grmi.Predicate{eolMeta.EOLBR_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil) - if err != nil { - return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) - } - for _, item := range brLi { - eolResultLi = append(eolResultLi, item) - } + for _, item := range paLi { + eolResultLi = append(eolResultLi, item) } + } else { + brLi, err := eolBrDao.Select([]grmi.Predicate{eolMeta.EOLBR_CODE.NewPredicate(grmi.Equal, serialOrder.SerialOrderId)}, nil) + if err != nil { + return false, "", recordT, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error()) + } + for _, item := range brLi { + eolResultLi = append(eolResultLi, item) + } + } - if len(eolResultLi) == 0 { - recvData := model.RecvDataItem{ - SerialOrderId: serialOrderId, - ArtId: "", - PO: "EOL", - OperationDesc: "电检", - RecvData: "", - Status: "失败", - Remark1: "未查询到电检数据", - } - poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) - poOperationData.Status = "失败" + if len(eolResultLi) == 0 { + return false, "未查询到电检数据", recordT, nil + } else { + err = impl.QuickSort(eolResultLi) + if err != nil { + return false, "", recordT, err + } + lastRecord := eolResultLi[len(eolResultLi)-1] + var recordTime time.Time + var recordResult string + drData, ok := lastRecord.(eolModel.EOLDR) + if ok { + recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation) + recordResult = drData.TOTALRESULT } else { - err = impl.QuickSort(eolResultLi) - if err != nil { - return nil, err - } - fmt.Println("eolResultLi:", eolResultLi) - lastRecord := eolResultLi[len(eolResultLi)-1] - var recordTime time.Time - var recordResult string - drData, ok := lastRecord.(eolModel.EOLDR) + paData, ok := lastRecord.(eolModel.EOLPA) if ok { - recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation) - recordResult = drData.TOTALRESULT + recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation) + recordResult = paData.TOTALRESULT } else { - paData, ok := lastRecord.(eolModel.EOLPA) + brData, ok := lastRecord.(eolModel.EOLBR) if ok { - recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation) - recordResult = paData.TOTALRESULT + recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation) + recordResult = brData.TOTALRESULT } else { - brData, ok := lastRecord.(eolModel.EOLBR) - if ok { - recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation) - recordResult = brData.TOTALRESULT - } else { - return nil, grmi.NewBusinessError("电检数据格式错误") - } + return false, "", recordT, grmi.NewBusinessError("电检数据格式错误") } } + } - var status string = "成功" - var remark string = "已通过电检" - if repairFlag { - if recordTime.Before(repairTime) { - status = "失败" - result.Status = false - remark = "线上返修之后未进行电检" - } + if repairFlag { + if recordTime.Before(repairTime) { + return false, "线上返修之后未进行电检", recordTime, nil } - if recordResult != "OK" { - status = "失败" - result.Status = false - remark = "电检不合格" - } - recvData := model.RecvDataItem{ - SerialOrderId: serialOrderId, - ArtId: "", - PO: "EOL", - OperationDesc: "电检", - RecvData: "", - Status: status, - Remark1: remark, - ExecuteTime: recordTime.Format(grmi.DateTimeOutFormat), - } - poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) } - result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData) - } - if needSBR { - + if recordResult != "OK" { + return false, "电检不合格", recordTime, nil + } + return true, "电检合格", recordTime, nil } - return result, nil } // GetSerialOrderOperationTraceData 工单数据追溯 @@ -4408,7 +4541,7 @@ func (impl *SerialOrderServiceImplement) GetProductTraceDataReport(user *global. return result, nil } - +// QuickSort 电检数据时间排序 func (impl *SerialOrderServiceImplement) QuickSort(values []interface{}) (err error) { if len(values) <= 1 { return nil @@ -4480,7 +4613,7 @@ func (impl *SerialOrderServiceImplement) QuickSort(values []interface{}) (err er } values[head] = mid err = impl.QuickSort(values[:head]) - if err != nil { + if err != nil { return err } err = impl.QuickSort(values[head+1:]) diff --git a/services/qm/implments/ReclinerReclst.service.impl.go b/services/qm/implments/ReclinerReclst.service.impl.go index 8bbf494..c5d8f52 100644 --- a/services/qm/implments/ReclinerReclst.service.impl.go +++ b/services/qm/implments/ReclinerReclst.service.impl.go @@ -3,6 +3,7 @@ package implments import ( + "LAPP_ACURA_MOM_BACKEND/conf" baseDal "LAPP_ACURA_MOM_BACKEND/dao/base" jitDal "LAPP_ACURA_MOM_BACKEND/dao/jit" meDal "LAPP_ACURA_MOM_BACKEND/dao/me" @@ -15,10 +16,12 @@ import ( jitMeta "LAPP_ACURA_MOM_BACKEND/meta/jit" omMeta "LAPP_ACURA_MOM_BACKEND/meta/om" meta "LAPP_ACURA_MOM_BACKEND/meta/qm" + baseModel "LAPP_ACURA_MOM_BACKEND/models/base" bmodel "LAPP_ACURA_MOM_BACKEND/models/base" jitModel "LAPP_ACURA_MOM_BACKEND/models/jit" omModel "LAPP_ACURA_MOM_BACKEND/models/om" model "LAPP_ACURA_MOM_BACKEND/models/qm" + svr "LAPP_ACURA_MOM_BACKEND/services/om" "LAPP_ACURA_MOM_BACKEND/utils" "time" ) @@ -549,8 +552,35 @@ func (impl *ReclinerReclstServiceImplement) InsertSeriOne(user *global.User, ent if err != nil { return err } - //更新seriorder订单表 + articleAtocdDao := baseDal.NewArticleAtcodLstDAO(session, user.PlantNr, user.UserId) + attributeLi, err := articleAtocdDao.SelectByArtId(seriInfo.ArtId) + if err != nil { + return grmi.NewBusinessError("查询总成关联属性失败, error:" + err.Error()) + } + var needEOL bool + for _, attributeItem := range attributeLi { + if attributeItem.Attribute.Descr == "EOL" { + needEOL = true + break + } + } + if needEOL { + serialOrderSvr := svr.NewSerialOrderService() + eolStatus, _, _, err := serialOrderSvr.ExtractEOL(session, user, seriInfo) + if err != nil { + return grmi.NewBusinessError("查询工单电检数据失败, 错误:" + err.Error()) + } + if eolStatus { + seriInfo.EOLCheck = omModel.EOL_STATUS_OK + } else { + seriInfo.EOLCheck = omModel.EOL_STATUS_NG + } + } + if err = session.Begin(); err != nil { + return grmi.NewBusinessError("开启事务失败, 错误:" + err.Error()) + } + //更新seriorder订单表 //更新原来的flag标识 seriInfo.GenerateFlag = true err = seriDao.UpdateOne(seriInfo) @@ -587,6 +617,7 @@ func (impl *ReclinerReclstServiceImplement) InsertSeriOne(user *global.User, ent session.Rollback() return err } + _ = session.Commit() return nil } @@ -760,7 +791,11 @@ func (impl *ReclinerReclstServiceImplement) CreateRecPrintInfo(entity model.Recl head.Status = 0 head.LabelTemplateId = result.LabelTemplateId head.PrinterId = result.PrinterId - head.PrintQty = 2 + if conf.DbConfig.Project == baseModel.PROJECT_NANSHA { + head.PrintQty = 1 + } else { + head.PrintQty = 2 + } head.BusinessObjType = "BACK" head.BusinessObjId = entity.SerialOrderId err = headDao.InsertOne(head) @@ -819,7 +854,7 @@ func (impl *ReclinerReclstServiceImplement) SelectUnPrint(num int) ([]model.Recl engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() - dao := dal.NewReclinerReclstDAO(session,0, "Rec") + dao := dal.NewReclinerReclstDAO(session, 0, "Rec") if num < 1 { num = 50 } @@ -1022,7 +1057,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial // 复制工序 poDataLi, err := serialOrderPoLstDao.Select([]grmi.Predicate{ omMeta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Equal, serialOrder.OriginSerialOrderId), - }, nil) + }, nil) if err != nil { _ = session.Rollback() return grmi.NewBusinessError("查询原始工单工序数据失败, 错误:" + err.Error()) @@ -1031,7 +1066,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial for _, poData := range poDataLi { poData.SerialOrderId = serialOrderId needInsertPoLi = append(needInsertPoLi, poData) - if len(needInsertPoLi) % 20 == 0 { + if len(needInsertPoLi)%20 == 0 { err = serialOrderPoLstDao.Insert(&needInsertPoLi) if err != nil { _ = session.Rollback() @@ -1041,7 +1076,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial } } if len(needInsertPoLi) != 0 { - if len(needInsertPoLi) % 20 == 0 { + if len(needInsertPoLi)%20 == 0 { err = serialOrderPoLstDao.Insert(&needInsertPoLi) if err != nil { _ = session.Rollback() @@ -1061,7 +1096,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial for _, stepData := range stepDataLi { stepData.SerialOrderId = serialOrderId needInsertStepLi = append(needInsertStepLi, stepData) - if len(needInsertStepLi) % 20 == 0 { + if len(needInsertStepLi)%20 == 0 { err = serialOrderStepDao.Insert(&needInsertStepLi) if err != nil { _ = session.Rollback() @@ -1089,11 +1124,11 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial for _, opDetail := range opDetailLi { opDetail.SerialOrderId = serialOrderId needInsertOpDetailLi = append(needInsertOpDetailLi, opDetail) - if len(needInsertOpDetailLi) % 20 == 0 { + if len(needInsertOpDetailLi)%20 == 0 { err = opDetailDao.Insert(&needInsertOpDetailLi) if err != nil { _ = session.Rollback() - return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error()) + return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error()) } needInsertOpDetailLi = make([]omModel.SerialOrderOPDetail, 0) } @@ -1102,7 +1137,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial err = opDetailDao.Insert(&needInsertOpDetailLi) if err != nil { _ = session.Rollback() - return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error()) + return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error()) } } } @@ -1657,7 +1692,7 @@ func (impl *ReclinerReclstServiceImplement) SelectSeriByAssembly(user *global.Us } if seriInfo.GenerateFlag { //查询最近返修记录, - newSerialOrder,err :=seriDao.SelectByOriginSerialOrderId(seriInfo.SerialOrderId) + newSerialOrder, err := seriDao.SelectByOriginSerialOrderId(seriInfo.SerialOrderId) if err != nil { return nil, err } @@ -1687,7 +1722,6 @@ func (impl *ReclinerReclstServiceImplement) SelectSeriByAssembly(user *global.Us return entity, nil } - /****************************************************************************** * * @Reference LAPP_GAAS_GFrame_BACKEND/services/qm/ReclinerReclstService.InsertSeriByAssembly @@ -1709,4 +1743,4 @@ func (impl *ReclinerReclstServiceImplement) InsertSeriByAssembly(user *global.Us return err } return nil -} \ No newline at end of file +}