diff --git a/services/om/implments/SerialOrder.Craft.impl.go b/services/om/implments/SerialOrder.Craft.impl.go index 2c01b0e..9a166d1 100644 --- a/services/om/implments/SerialOrder.Craft.impl.go +++ b/services/om/implments/SerialOrder.Craft.impl.go @@ -319,6 +319,7 @@ func (impl *SerialOrderServiceImplement) GenerateProductCraft(user *global.User, PlanEndTime: serialOrder.PlanEndTime, PickingFlag: orderOPData.SFP.PickingFlag, MainOrderId: serialOrder.SerialOrderId, + SyncKey: serialOrder.SyncKey, } usedSerialOrder = &sfpSerialOrder usedSerialOrder.SerialOrderStatus = model.SerialOrderStatus{ diff --git a/services/om/implments/SerialOrder.Logic.impl.go b/services/om/implments/SerialOrder.Logic.impl.go index 675d86c..371c50b 100644 --- a/services/om/implments/SerialOrder.Logic.impl.go +++ b/services/om/implments/SerialOrder.Logic.impl.go @@ -164,8 +164,33 @@ func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.Use return grmi.NewBusinessError("生成工单工艺数据失败, 错误:" + err.Error()) } preSerialOrder = serialOrder + preSerialOrder.PreOrderLi = make([]model.SerialOrder, 0, len(serialOrder.PreOrderLi)) + preSerialOrder.SerialOrderPOLstLi = make([]model.SerialOrderPOLst, len(serialOrder.SerialOrderPOLstLi), len(serialOrder.SerialOrderPOLstLi)) + preSerialOrder.SerialOrderStepLstLi = make([]model.SerialOrderStepLst, len(serialOrder.SerialOrderStepLstLi), len(serialOrder.SerialOrderStepLstLi)) + preSerialOrder.SerialOrderOPDetailLi = make([]model.SerialOrderOPDetail, len(serialOrder.SerialOrderOPDetailLi), len(serialOrder.SerialOrderOPDetailLi)) + preSerialOrder.LabelHeadLi = make([]baseModel.LabelHead, len(serialOrder.LabelHeadLi), len(serialOrder.LabelHeadLi)) + preSerialOrder.LabelDetailLi = make([]baseModel.LabelDetail, len(serialOrder.LabelDetailLi), len(serialOrder.LabelDetailLi)) + copy(preSerialOrder.SerialOrderPOLstLi, serialOrder.SerialOrderPOLstLi) + copy(preSerialOrder.SerialOrderStepLstLi, serialOrder.SerialOrderStepLstLi) + copy(preSerialOrder.SerialOrderOPDetailLi, serialOrder.SerialOrderOPDetailLi) + copy(preSerialOrder.LabelHeadLi, serialOrder.LabelHeadLi) + copy(preSerialOrder.LabelDetailLi, serialOrder.LabelDetailLi) + for _, preOrder := range serialOrder.PreOrderLi { + newPreOrder := preOrder + newPreOrder.SerialOrderPOLstLi = make([]model.SerialOrderPOLst, len(preOrder.SerialOrderPOLstLi), len(preOrder.SerialOrderPOLstLi)) + newPreOrder.SerialOrderStepLstLi = make([]model.SerialOrderStepLst, len(preOrder.SerialOrderStepLstLi), len(preOrder.SerialOrderStepLstLi)) + newPreOrder.SerialOrderOPDetailLi = make([]model.SerialOrderOPDetail, len(preOrder.SerialOrderOPDetailLi), len(preOrder.SerialOrderOPDetailLi)) + newPreOrder.LabelHeadLi = make([]baseModel.LabelHead, len(preOrder.LabelHeadLi), len(preOrder.LabelHeadLi)) + newPreOrder.LabelDetailLi = make([]baseModel.LabelDetail, len(preOrder.LabelDetailLi), len(preOrder.LabelDetailLi)) + copy(newPreOrder.SerialOrderPOLstLi, preOrder.SerialOrderPOLstLi) + copy(newPreOrder.SerialOrderStepLstLi, preOrder.SerialOrderStepLstLi) + copy(newPreOrder.SerialOrderOPDetailLi, preOrder.SerialOrderOPDetailLi) + copy(newPreOrder.LabelHeadLi, preOrder.LabelHeadLi) + copy(newPreOrder.LabelDetailLi, preOrder.LabelDetailLi) + preSerialOrder.PreOrderLi = append(preSerialOrder.PreOrderLi, newPreOrder) + } } else { - serialOrder.PreOrderLi = make([]model.SerialOrder, len(preSerialOrder.PreOrderLi), len(preSerialOrder.PreOrderLi)) + serialOrder.PreOrderLi = make([]model.SerialOrder, 0, len(preSerialOrder.PreOrderLi)) serialOrder.SerialOrderPOLstLi = make([]model.SerialOrderPOLst, len(preSerialOrder.SerialOrderPOLstLi), len(preSerialOrder.SerialOrderPOLstLi)) serialOrder.SerialOrderStepLstLi = make([]model.SerialOrderStepLst, len(preSerialOrder.SerialOrderStepLstLi), len(preSerialOrder.SerialOrderStepLstLi)) serialOrder.SerialOrderOPDetailLi = make([]model.SerialOrderOPDetail, len(preSerialOrder.SerialOrderOPDetailLi), len(preSerialOrder.SerialOrderOPDetailLi)) @@ -386,6 +411,28 @@ func (impl *SerialOrderServiceImplement) ReplaceData(serialOrder *model.SerialOr } for index, serialOrderOp := range serialOrder.SerialOrderOPDetailLi { serialOrderOp.SerialOrderId = serialOrderId + serialOrderOp.CharPara1 = strings.Replace(serialOrderOp.CharPara1, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara2 = strings.Replace(serialOrderOp.CharPara2, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara3 = strings.Replace(serialOrderOp.CharPara3, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara4 = strings.Replace(serialOrderOp.CharPara4, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara5 = strings.Replace(serialOrderOp.CharPara5, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara6 = strings.Replace(serialOrderOp.CharPara6, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara7 = strings.Replace(serialOrderOp.CharPara7, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara8 = strings.Replace(serialOrderOp.CharPara8, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara9 = strings.Replace(serialOrderOp.CharPara9, "$serialNumber$", serialNumber, 1) + serialOrderOp.CharPara10 = strings.Replace(serialOrderOp.CharPara10, "$serialNumber$", serialNumber, 1) + if isPre { + serialOrderOp.CharPara1 = strings.Replace(serialOrderOp.CharPara1, "$date$", day, 1) + serialOrderOp.CharPara2 = strings.Replace(serialOrderOp.CharPara2, "$date$", day, 1) + serialOrderOp.CharPara3 = strings.Replace(serialOrderOp.CharPara3, "$date$", day, 1) + serialOrderOp.CharPara4 = strings.Replace(serialOrderOp.CharPara4, "$date$", day, 1) + serialOrderOp.CharPara5 = strings.Replace(serialOrderOp.CharPara5, "$date$", day, 1) + serialOrderOp.CharPara6 = strings.Replace(serialOrderOp.CharPara6, "$date$", day, 1) + serialOrderOp.CharPara7 = strings.Replace(serialOrderOp.CharPara7, "$date$", day, 1) + serialOrderOp.CharPara8 = strings.Replace(serialOrderOp.CharPara8, "$date$", day, 1) + serialOrderOp.CharPara9 = strings.Replace(serialOrderOp.CharPara9, "$date$", day, 1) + serialOrderOp.CharPara10 = strings.Replace(serialOrderOp.CharPara10, "$date$", day, 1) + } serialOrder.SerialOrderOPDetailLi[index] = serialOrderOp } for index, labelHead := range serialOrder.LabelHeadLi { diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index d69b786..68346fa 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -861,62 +861,62 @@ func (impl *CustOrderServiceImplement) CancelCustOrderQty(user *global.User, cus return grmi.NewBusinessError("更新工单详细操作状态失败, error:" + err.Error()) } // 对拆分的预装工单做取消处理 - preSerialOrderLi, err := serialOrderDao.Select([]grmi.Predicate{ - omMeta.SerialOrder_OrderType.NewPredicate(grmi.Equal, baseModel.ORDER_TYPE_PRE), - omMeta.SerialOrder_GenerateFlag.NewPredicate(grmi.Equal, 0), - omMeta.SerialOrder_MainOrderId.NewPredicate(grmi.Equal, serialOrderData.SerialOrderId), - }, nil) - if err != nil { - return grmi.NewBusinessError("查询工单下的预装工单失败, 错误:" + err.Error()) - } - for _, preOrder := range preSerialOrderLi { - if preOrder.SerialOrderStatus.Status > baseModel.WO_STATUS_RELEASED { - return grmi.NewBusinessError("预装工单已经不允许取消, 工单ID:" + preOrder.SerialOrderId) - } - originStatus := preOrder.SerialOrderStatus.Status - statusRec = omModel.SerialOrderStatusRecLst{ - SerialOrderId: preOrder.SerialOrderId, - Status: baseModel.WO_STATUS_CANCELED, - PrevStatus: preOrder.SerialOrderStatus.Status, - } - preOrder.SerialOrderStatus.Status = baseModel.WO_STATUS_CANCELED - err = serialOrderStatusRecDao.InsertOne(&statusRec) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("插入预装工单状态变更记录失败, error:" + err.Error()) - } - err = serialOrderStatusDao.UpdateOneWithStatus(&preOrder.SerialOrderStatus, baseModel.WO_STATUS_RELEASED) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("更新预装工单状态失败, error:" + err.Error()) - } - if originStatus == baseModel.WO_STATUS_RELEASED { - poUpdateData := &omModel.SerialOrderPOLst{ - Status: baseModel.WO_STATUS_CANCELED, - } - err = serialOrderPoDao.UpdateWhere([]grmi.Predicate{omMeta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Equal, preOrder.SerialOrderId)}, poUpdateData, omMeta.SerialOrderPOLst_Status.Name) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("更新预装工单工序状态失败, error:" + err.Error()) - } - stepUpdateData := &omModel.SerialOrderStepLst{ - Status: baseModel.WO_STATUS_CANCELED, - } - err = serialOrderStepDao.UpdateWhere([]grmi.Predicate{omMeta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Equal, preOrder.SerialOrderId)}, stepUpdateData, omMeta.SerialOrderStepLst_Status.Name) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("更新预装工单工步状态失败, error:" + err.Error()) - } - opDetailUpdateData := &omModel.SerialOrderOPDetail{ - Status: baseModel.WO_STATUS_CANCELED, - } - err = serialOrderOPDetailDao.UpdateWhere([]grmi.Predicate{omMeta.SerialOrderOPDetail_SerialOrderId.NewPredicate(grmi.Equal, preOrder.SerialOrderId)}, opDetailUpdateData, omMeta.SerialOrderOPDetail_Status.Name) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("更新预装工单详细操作状态失败, error:" + err.Error()) - } - } - } + //preSerialOrderLi, err := serialOrderDao.Select([]grmi.Predicate{ + // omMeta.SerialOrder_OrderType.NewPredicate(grmi.Equal, baseModel.ORDER_TYPE_PRE), + // omMeta.SerialOrder_GenerateFlag.NewPredicate(grmi.Equal, 0), + // omMeta.SerialOrder_MainOrderId.NewPredicate(grmi.Equal, serialOrderData.SerialOrderId), + //}, nil) + //if err != nil { + // return grmi.NewBusinessError("查询工单下的预装工单失败, 错误:" + err.Error()) + //} + //for _, preOrder := range preSerialOrderLi { + // if preOrder.SerialOrderStatus.Status > baseModel.WO_STATUS_RELEASED { + // return grmi.NewBusinessError("预装工单已经不允许取消, 工单ID:" + preOrder.SerialOrderId) + // } + // originStatus := preOrder.SerialOrderStatus.Status + // statusRec = omModel.SerialOrderStatusRecLst{ + // SerialOrderId: preOrder.SerialOrderId, + // Status: baseModel.WO_STATUS_CANCELED, + // PrevStatus: preOrder.SerialOrderStatus.Status, + // } + // preOrder.SerialOrderStatus.Status = baseModel.WO_STATUS_CANCELED + // err = serialOrderStatusRecDao.InsertOne(&statusRec) + // if err != nil { + // _ = session.Rollback() + // return grmi.NewBusinessError("插入预装工单状态变更记录失败, error:" + err.Error()) + // } + // err = serialOrderStatusDao.UpdateOneWithStatus(&preOrder.SerialOrderStatus, baseModel.WO_STATUS_RELEASED) + // if err != nil { + // _ = session.Rollback() + // return grmi.NewBusinessError("更新预装工单状态失败, error:" + err.Error()) + // } + // if originStatus == baseModel.WO_STATUS_RELEASED { + // poUpdateData := &omModel.SerialOrderPOLst{ + // Status: baseModel.WO_STATUS_CANCELED, + // } + // err = serialOrderPoDao.UpdateWhere([]grmi.Predicate{omMeta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Equal, preOrder.SerialOrderId)}, poUpdateData, omMeta.SerialOrderPOLst_Status.Name) + // if err != nil { + // _ = session.Rollback() + // return grmi.NewBusinessError("更新预装工单工序状态失败, error:" + err.Error()) + // } + // stepUpdateData := &omModel.SerialOrderStepLst{ + // Status: baseModel.WO_STATUS_CANCELED, + // } + // err = serialOrderStepDao.UpdateWhere([]grmi.Predicate{omMeta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Equal, preOrder.SerialOrderId)}, stepUpdateData, omMeta.SerialOrderStepLst_Status.Name) + // if err != nil { + // _ = session.Rollback() + // return grmi.NewBusinessError("更新预装工单工步状态失败, error:" + err.Error()) + // } + // opDetailUpdateData := &omModel.SerialOrderOPDetail{ + // Status: baseModel.WO_STATUS_CANCELED, + // } + // err = serialOrderOPDetailDao.UpdateWhere([]grmi.Predicate{omMeta.SerialOrderOPDetail_SerialOrderId.NewPredicate(grmi.Equal, preOrder.SerialOrderId)}, opDetailUpdateData, omMeta.SerialOrderOPDetail_Status.Name) + // if err != nil { + // _ = session.Rollback() + // return grmi.NewBusinessError("更新预装工单详细操作状态失败, error:" + err.Error()) + // } + // } + //} } } // 处理客户订单数量数据 diff --git a/services/pln/implments/CustOrderLogic.service.impl.go b/services/pln/implments/CustOrderLogic.service.impl.go index e87c996..28d3386 100644 --- a/services/pln/implments/CustOrderLogic.service.impl.go +++ b/services/pln/implments/CustOrderLogic.service.impl.go @@ -304,7 +304,6 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO // 每个总成生产的时间 duration := custOrderData.PlanEndTime.Restore().Sub(custOrderData.PlanStartTime.Restore()) totalQty := custOrderData.PlanQty * len(productLi) - var current int perDuration := duration.Seconds() / float64(totalQty) // 产线组与所属产线的MAP数据结构 workLineGroupMap := make(map[string]map[string]interface{}) @@ -338,7 +337,7 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO writeLabelDetailLi := make([]baseModel.LabelDetail, 0) syncKey := custOrderData.CustOrderId + "-" + strconv.Itoa(custOrderData.OrderQty.ReleasedQty) waitReleaseSerialOrderLi := make([]omModel.SerialOrder, 0, len(productLi)) - for _, product := range productLi { + for index, product := range productLi { var serialOrder omModel.SerialOrder orderCraft, exist := productCraftMap[product.ProductId] if !exist { @@ -372,9 +371,9 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO } else { resourceId = product.DefaultWorkLineId } - planStartTime := custOrderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*current) * time.Second) - planEndTime := custOrderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*(current+1)) * time.Second) - current++ + currentIndex := custOrderData.OrderQty.ReleasedQty * len(productLi) + index + planStartTime := custOrderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*currentIndex) * time.Second) + planEndTime := custOrderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*(currentIndex+1)) * time.Second) planStartDate := grmi.Date(planStartTime) planEndDate := grmi.Date(planEndTime) serialOrderId := product.MachineCode + "$serialNumber$" + product.ProductType + product.ColorValue @@ -383,7 +382,6 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO return grmi.NewBusinessError("通过时间获取工单调度Key失败, error:" + err.Error()) } var dealedSchedKey = int64(timeInt * 100) - serialOrder = omModel.SerialOrder{ SerialOrderId: serialOrderId, ArtId: product.ProductId, @@ -427,7 +425,7 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO copy(orderCraft.SerialOrderOPDetailLi, serialOrder.SerialOrderOPDetailLi) copy(orderCraft.LabelHeadLi, serialOrder.LabelHeadLi) copy(orderCraft.LabelDetailLi, serialOrder.LabelDetailLi) - for _, preOrder := range orderCraft.PreOrderLi { + for _, preOrder := range serialOrder.PreOrderLi { newPreOrder := preOrder newPreOrder.SerialOrderPOLstLi = make([]omModel.SerialOrderPOLst, len(preOrder.SerialOrderPOLstLi), len(preOrder.SerialOrderPOLstLi)) newPreOrder.SerialOrderStepLstLi = make([]omModel.SerialOrderStepLst, len(preOrder.SerialOrderStepLstLi), len(preOrder.SerialOrderStepLstLi)) @@ -439,11 +437,28 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO copy(newPreOrder.SerialOrderOPDetailLi, preOrder.SerialOrderOPDetailLi) copy(newPreOrder.LabelHeadLi, preOrder.LabelHeadLi) copy(newPreOrder.LabelDetailLi, preOrder.LabelDetailLi) - serialOrder.PreOrderLi = append(serialOrder.PreOrderLi, newPreOrder) + orderCraft.PreOrderLi = append(orderCraft.PreOrderLi, newPreOrder) } productCraftMap[serialOrder.ArtId] = orderCraft } else { serialOrder = orderCraft + currentIndex := custOrderData.OrderQty.ReleasedQty * len(productLi) + index + planStartTime := custOrderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*currentIndex) * time.Second) + planEndTime := custOrderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*(currentIndex+1)) * time.Second) + planStartDate := grmi.Date(planStartTime) + planEndDate := grmi.Date(planEndTime) + timeInt, err := strconv.Atoi(planStartTime.Format("060102150405")) + if err != nil { + return grmi.NewBusinessError("通过时间获取工单调度Key失败, error:" + err.Error()) + } + var dealedSchedKey = int64(timeInt * 100) + serialOrder.SyncKey = syncKey + serialOrder.PlanStartTime = grmi.DateTime(planStartTime) + serialOrder.PlanEndTime = grmi.DateTime(planEndTime) + serialOrder.PlanStartDate = planStartDate + serialOrder.PlanEndDate = planEndDate + serialOrder.SchedKey = dealedSchedKey + serialOrder.ArtId = product.ProductId serialOrder.PreOrderLi = make([]omModel.SerialOrder, 0, len(orderCraft.PreOrderLi)) serialOrder.SerialOrderPOLstLi = make([]omModel.SerialOrderPOLst, len(orderCraft.SerialOrderPOLstLi), len(orderCraft.SerialOrderPOLstLi)) serialOrder.SerialOrderStepLstLi = make([]omModel.SerialOrderStepLst, len(orderCraft.SerialOrderStepLstLi), len(orderCraft.SerialOrderStepLstLi)) @@ -457,6 +472,14 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO copy(serialOrder.LabelDetailLi, orderCraft.LabelDetailLi) for _, preOrder := range orderCraft.PreOrderLi { newPreOrder := preOrder + newPreOrder.MainOrderId = serialOrder.SerialOrderId + newPreOrder.SyncKey = serialOrder.SyncKey + newPreOrder.SchedKey = serialOrder.SchedKey + newPreOrder.PreSchedKey = serialOrder.SchedKey + newPreOrder.PlanStartTime = serialOrder.PlanStartTime + newPreOrder.PlanEndTime = serialOrder.PlanEndTime + newPreOrder.PlanStartDate = serialOrder.PlanStartDate + newPreOrder.PlanEndDate = serialOrder.PlanEndDate newPreOrder.SerialOrderPOLstLi = make([]omModel.SerialOrderPOLst, len(preOrder.SerialOrderPOLstLi), len(preOrder.SerialOrderPOLstLi)) newPreOrder.SerialOrderStepLstLi = make([]omModel.SerialOrderStepLst, len(preOrder.SerialOrderStepLstLi), len(preOrder.SerialOrderStepLstLi)) newPreOrder.SerialOrderOPDetailLi = make([]omModel.SerialOrderOPDetail, len(preOrder.SerialOrderOPDetailLi), len(preOrder.SerialOrderOPDetailLi))