Browse Source

修复解析订单数量不一致的bug

pull/236/head
zhangxin 3 years ago
parent
commit
8a0b200824
1 changed files with 37 additions and 27 deletions
  1. +37
    -27
      services/om/implments/ParsePortalWorkOrder.service.impl.go

+ 37
- 27
services/om/implments/ParsePortalWorkOrder.service.impl.go View File

@ -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)


Loading…
Cancel
Save