From 8a0b200824dc1f0e8083e8fc15f966b2a31332bc Mon Sep 17 00:00:00 2001 From: zhangxin Date: Tue, 18 May 2021 19:55:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=A3=E6=9E=90=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=95=B0=E9=87=8F=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ParsePortalWorkOrder.service.impl.go | 64 +++++++++++-------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/services/om/implments/ParsePortalWorkOrder.service.impl.go b/services/om/implments/ParsePortalWorkOrder.service.impl.go index 6367bbe..4e4575c 100644 --- a/services/om/implments/ParsePortalWorkOrder.service.impl.go +++ b/services/om/implments/ParsePortalWorkOrder.service.impl.go @@ -119,7 +119,7 @@ func (impl *ParseMesWorkOrderServiceImplement) DealFileDemandHead(demandHead mod artDemandHeadDao := logDal.NewArtDemandHeadDAO(sessionTX, demandHead.PlantNr, "crontab") artDemandLstDao := logDal.NewArtDemandLstDAO(sessionTX, demandHead.PlantNr, "crontab") articleDao := baseDal.NewArticleDAO(sessionTX, demandHead.PlantNr, "crontab") - demandLstLi, err := demandLstDao.Select([]grmi.Predicate{meta.DemandLst_FileNr.NewPredicate(grmi.Equal, demandHead.FileNr)}, []grmi.Field{}) + demandLstLi, err := demandLstDao.Select([]grmi.Predicate{meta.DemandLst_FileNr.NewPredicate(grmi.Equal, demandHead.FileNr)}, []grmi.Field{meta.DemandLst_PartCode}) if err != nil { log.Error("ParseMesWorkOrder DealArtDemand delete art demandLst failed, error: " + err.Error()) return @@ -323,9 +323,18 @@ func (impl *ParseMesWorkOrderServiceImplement) DealWorkOrder(pid int, return workOrder, workOrderStatus, workOrderQty, err } var newWorkOrderSign = true - fmt.Println("len(workOrderLi):", len(workOrderLi)) if len(workOrderLi) != 0 { - workOrder = workOrderLi[0] + var sign bool + for _, dbWorkOrder := range workOrderLi { + if dbWorkOrder.PlanQty == qty { + workOrder = dbWorkOrder + sign = true + break + } + } + if !sign { + workOrder = workOrderLi[0] + } workOrderStatusPoint, err := workOrderStatusDao.SelectOne(workOrder.WorkOrderId) if err != nil { log.Error("ParseMesWorkOrder DealWorkOrder get work order status failed, error: " + err.Error()) @@ -531,14 +540,11 @@ func (impl *ParseMesWorkOrderServiceImplement) DealArtDemand(pid int, return err } } - fmt.Println("demandId:", demandId) oldArtDemandLstLi, err := artDemandLstDao.SelectWithoutAuthority([]grmi.Predicate{logMeta.ArtDemandLst_DemandId.NewPredicate(grmi.Equal, demandId)}, nil) if err != nil { log.Error("ParseMesWorkOrder DealArtDemand select art demandLst failed, error: " + err.Error()) return err } - fmt.Println("oldArtDemandLstLi:", len(oldArtDemandLstLi)) - fmt.Println("demandLstLi:", len(demandLstLi)) type DemandLstWithBool struct { DemandLst logModel.ArtDemandLst Sign bool @@ -568,9 +574,7 @@ func (impl *ParseMesWorkOrderServiceImplement) DealArtDemand(pid int, } else if innerStatus == model.WO_STATUS_CANCELED { artDemandStatus = baseModel.WO_STATUS_CANCELED } - fmt.Println("demandLst.Pos:", demandLst.Pos) oldDemandLstWithBool, exist := artDemandLstMap[demandLst.DemandNr] - fmt.Println("exist:", exist) var artDemandLst logModel.ArtDemandLst if exist { oldDemandLstWithBool.Sign = true @@ -615,8 +619,6 @@ func (impl *ParseMesWorkOrderServiceImplement) DealArtDemand(pid int, artDemandLstInsertLi = append(artDemandLstInsertLi, artDemandLst) } } - fmt.Println("insert length:", len(artDemandLstInsertLi)) - fmt.Println("update length:", len(artDemandLstUpdateLi)) // 批量插入时 一次最多插入50条 demandLstTempLi := make([]logModel.ArtDemandLst, 0, 50) for index, demandLst := range artDemandLstInsertLi { @@ -757,7 +759,7 @@ func (impl *ParseMesWorkOrderServiceImplement) DealDBDemandHead(demandHead model artDemandHeadDao := logDal.NewArtDemandHeadDAO(sessionTX, demandHead.PlantNr, "crontab") artDemandLstDao := logDal.NewArtDemandLstDAO(sessionTX, demandHead.PlantNr, "crontab") articleDao := baseDal.NewArticleDAO(sessionTX, demandHead.PlantNr, "crontab") - demandLstLi, err := demandLstDao.Select([]grmi.Predicate{meta.DemandLst_TaskNr.NewPredicate(grmi.Equal, demandHead.TaskNr)}, []grmi.Field{}) + demandLstLi, err := demandLstDao.Select([]grmi.Predicate{meta.DemandLst_TaskNr.NewPredicate(grmi.Equal, demandHead.TaskNr)}, []grmi.Field{meta.DemandLst_PartCode}) if err != nil { log.Error("ParseMesWorkOrder DealDBDemandHead get art demandLst failed, error: " + err.Error()) return @@ -779,6 +781,7 @@ func (impl *ParseMesWorkOrderServiceImplement) DealDBDemandHead(demandHead model // 临时记录的demandLst var preDemandLst model.DemandLst tempLi := make([]model.DemandLst, 0, 30) + cancelQty := 0 for _, demandLst := range demandLstLi { if partCode == "" { partCode = demandLst.PartCode @@ -788,10 +791,14 @@ func (impl *ParseMesWorkOrderServiceImplement) DealDBDemandHead(demandHead model } if partCode != demandLst.PartCode || planDttm != demandLst.PlanDttm { var batchStatus = baseModel.WO_STATUS_RUNNING - if maxStatus == minStatus && minStatus == baseModel.WO_STATUS_RELEASED { - batchStatus = maxStatus - } else if minStatus >= baseModel.WO_STATUS_FINISHED { - batchStatus = maxStatus + if cancelQty == qty { + batchStatus = baseModel.WO_STATUS_CANCELED + } else { + if maxStatus == minStatus && minStatus == baseModel.WO_STATUS_RELEASED { + batchStatus = maxStatus + } else if minStatus >= baseModel.WO_STATUS_FINISHED { + batchStatus = maxStatus + } } // 处理workOrder及其相关表 workOrder, workOrderStatus, workOrderQty, err := impl.DealWorkOrder(demandHead.PlantNr, @@ -836,6 +843,7 @@ func (impl *ParseMesWorkOrderServiceImplement) DealDBDemandHead(demandHead model qty = 0 runningQty = 0 finishedQty = 0 + cancelQty = 0 planDttm = demandLst.PlanDttm tempLi = make([]model.DemandLst, 0, 30) } @@ -855,22 +863,24 @@ func (impl *ParseMesWorkOrderServiceImplement) DealDBDemandHead(demandHead model } else if demandLst.State == model.WO_STATUS_CANCELED { status = baseModel.WO_STATUS_CANCELED finishedQty += 1 + cancelQty += 1 } else { log.Error("ParseMesWorkOrder DealFileDemandHead failed get unknown state :" + strconv.Itoa(demandLst.State)) return } - - if minStatus == baseModel.WO_STATUS_UNPLANNED { - minStatus = status - } - if maxStatus == baseModel.WO_STATUS_UNPLANNED { - maxStatus = status - } - if minStatus > status { - minStatus = status - } - if maxStatus < status { - maxStatus = status + if status != baseModel.WO_STATUS_CANCELED { + if minStatus == baseModel.WO_STATUS_UNPLANNED { + minStatus = status + } + if maxStatus == baseModel.WO_STATUS_UNPLANNED { + maxStatus = status + } + if minStatus > status { + minStatus = status + } + if maxStatus < status { + maxStatus = status + } } qty += 1 tempLi = append(tempLi, demandLst)