|
|
@ -69,11 +69,9 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde |
|
|
|
meta.ReleaseTaskConfig_BusinessObjId.NewPredicate(grmi.Equal, orderData.WorkLineId), |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError(fmt.Sprintf("查询产线%s的派工配置失败, 错误:%v", orderData.WorkLineId, err)) |
|
|
|
} |
|
|
|
if len(configLi) == 0 { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError(fmt.Sprintf("产线%s的派工配置不存在", orderData.WorkLineId)) |
|
|
|
} |
|
|
|
workLineConfigMap[orderData.WorkLineId] = configLi[0] |
|
|
@ -322,6 +320,9 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, |
|
|
|
custOrderWorkLineMap[workLineId] = append(custOrderWorkLineMap[workLineId], custOrder) |
|
|
|
} |
|
|
|
releaseCustOrderLi := make([]model.CustOrder, 0) |
|
|
|
if err = session.Begin(); err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
for workLineId, custOrderLi := range custOrderWorkLineMap { |
|
|
|
for index, custOrder := range custOrderLi { |
|
|
|
project := projectMap[custOrder.ProjectId] |
|
|
@ -1208,16 +1209,35 @@ func (impl *CustOrderServiceImplement) ReleaseTask() error { |
|
|
|
UserId: userId, |
|
|
|
} |
|
|
|
custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
configDao := dal.NewReleaseTaskConfigDAO(session, user.PlantNr, user.UserId) |
|
|
|
configMap := make(map[string]model.ReleaseTaskConfig) |
|
|
|
custOrderLi, err := custOrderDao.SelectNeedReleaseCustOrder() |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
configLi, err := configDao.Select([]grmi.Predicate{meta.ReleaseTaskConfig_BusinessObjType.NewPredicate(grmi.Equal, model.CONFIG_TYPE_WORK_LINE)}, nil) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("查询派工配置失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
for _, config := range configLi { |
|
|
|
configMap[config.BusinessObjId] = config |
|
|
|
} |
|
|
|
channel, exist := common.ReleaseTaskChannel[user.PlantNr] |
|
|
|
if !exist { |
|
|
|
channel = channelModel.NewTaskChannel("ReleaseTask-PlantNr:" + strconv.Itoa(user.PlantNr)) |
|
|
|
common.ReleaseTaskChannel[user.PlantNr] = channel |
|
|
|
} |
|
|
|
for _, custOrder := range custOrderLi { |
|
|
|
config, exist := configMap[custOrder.WorkLineId] |
|
|
|
if !exist { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError(fmt.Sprintf("客户订单%s的产线%s的派工配置不存在", custOrder.CustOrderId, custOrder.WorkLineId)) |
|
|
|
} |
|
|
|
duration := utils.CalcDurationByUom(float64(config.LeadTime), config.TimeUomId) |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration*time.Second).Unix() > time.Now().Unix() { |
|
|
|
continue |
|
|
|
} |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
@ -1250,6 +1270,8 @@ func (impl *CustOrderServiceImplement) RepairReleaseFailedTask(user *global.User |
|
|
|
custOrderStatusDao := dal.NewCustOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
statusHistoryDao := dal.NewCustOrderStatusHistoryDAO(session, user.PlantNr, user.UserId) |
|
|
|
custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
configDao := dal.NewReleaseTaskConfigDAO(session, user.PlantNr, user.UserId) |
|
|
|
configMap := make(map[string]model.ReleaseTaskConfig) |
|
|
|
statusLi, err := custOrderStatusDao.Select([]grmi.Predicate{ |
|
|
|
meta.CustOrderStatus_Status.NewPredicate(grmi.Equal, baseModel.WO_STATUS_RELEASE_FAILED), |
|
|
|
}, nil) |
|
|
@ -1298,7 +1320,24 @@ func (impl *CustOrderServiceImplement) RepairReleaseFailedTask(user *global.User |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("查询需要派工的客户订单失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
configLi, err := configDao.Select([]grmi.Predicate{meta.ReleaseTaskConfig_BusinessObjType.NewPredicate(grmi.Equal, model.CONFIG_TYPE_WORK_LINE)}, nil) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("查询派工配置失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
for _, config := range configLi { |
|
|
|
configMap[config.BusinessObjId] = config |
|
|
|
} |
|
|
|
for _, custOrder := range custOrderLi { |
|
|
|
config, exist := configMap[custOrder.WorkLineId] |
|
|
|
if !exist { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError(fmt.Sprintf("客户订单%s的产线%s的派工配置不存在", custOrder.CustOrderId, custOrder.WorkLineId)) |
|
|
|
} |
|
|
|
duration := utils.CalcDurationByUom(float64(config.LeadTime), config.TimeUomId) |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration*time.Second).Unix() > time.Now().Unix() { |
|
|
|
continue |
|
|
|
} |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
|