|
|
@ -158,7 +158,7 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde |
|
|
|
for _, custOrder := range custOrderLi { |
|
|
|
config := workLineConfigMap[custOrder.WorkLineId] |
|
|
|
duration := utils.CalcDurationByUom(float64(config.LeadTime), config.TimeUomId) |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration * time.Second).Unix() < time.Now().Unix() { |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration*time.Second).Unix() < time.Now().Unix() { |
|
|
|
newReleaseTaskLi = append(newReleaseTaskLi, custOrder) |
|
|
|
} |
|
|
|
} |
|
|
@ -168,6 +168,8 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde |
|
|
|
return nil |
|
|
|
} |
|
|
|
for _, custOrder := range newReleaseTaskLi { |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
|
if err != nil { |
|
|
|
return nil |
|
|
@ -405,7 +407,7 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, |
|
|
|
for _, custOrder := range releaseCustOrderLi { |
|
|
|
config := workLineConfigMap[custOrder.WorkLineId] |
|
|
|
duration := utils.CalcDurationByUom(float64(config.LeadTime), config.TimeUomId) |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration * time.Second).Unix() < time.Now().Unix() { |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration*time.Second).Unix() < time.Now().Unix() { |
|
|
|
newReleaseTaskLi = append(newReleaseTaskLi, custOrder) |
|
|
|
} |
|
|
|
} |
|
|
@ -416,6 +418,8 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, |
|
|
|
return nil |
|
|
|
} |
|
|
|
for _, custOrder := range newReleaseTaskLi { |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
|
if err != nil { |
|
|
|
fmt.Println("派工发送数据出错:" + err.Error()) |
|
|
@ -910,13 +914,13 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO |
|
|
|
preSerialNumber, err = snrDao.GetNextSnrWithTime(project.PreOrderSnr, waitReleaseSerialOrderLi[0].PlanStartTime.Restore()) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return grmi.NewBusinessError("获取流水号失败,错误:" + err.Error()+ ", 流水号Id:" + project.PreOrderSnr) |
|
|
|
return grmi.NewBusinessError("获取流水号失败,错误:" + err.Error() + ", 流水号Id:" + project.PreOrderSnr) |
|
|
|
} |
|
|
|
} |
|
|
|
bindPreOrderLi := make([]omModel.PreOrderBindMainOrder, 0) |
|
|
|
var ( |
|
|
|
serialNumber string |
|
|
|
syncSnr = true |
|
|
|
syncSnr = true |
|
|
|
) |
|
|
|
for _, product := range productLi { |
|
|
|
if product.CtrlStr1 != meModel.PRODUCT_TYPE_PRE { |
|
|
@ -1156,7 +1160,8 @@ func (impl *CustOrderServiceImplement) ReleaseCustOrder(user *global.User, custO |
|
|
|
log.Error("客户订单已经派工完成,但是并没有改变客户订单状态, 当前派工客户订单ID:" + custOrderData.CustOrderId) |
|
|
|
} |
|
|
|
log.Info("客户订单已经派工完成, 当前派工客户订单ID:" + custOrderData.CustOrderId) |
|
|
|
|
|
|
|
mk := fmt.Sprintf("%d-%s", custOrderData.PlantNr, custOrderData.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Delete(mk) |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
@ -1211,6 +1216,8 @@ func (impl *CustOrderServiceImplement) ReleaseTask() error { |
|
|
|
common.ReleaseTaskChannel[user.PlantNr] = channel |
|
|
|
} |
|
|
|
for _, custOrder := range custOrderLi { |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
@ -1290,6 +1297,8 @@ func (impl *CustOrderServiceImplement) RepairReleaseFailedTask(user *global.User |
|
|
|
return grmi.NewBusinessError("查询需要派工的客户订单失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
for _, custOrder := range custOrderLi { |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
@ -1415,17 +1424,94 @@ func (impl *CustOrderServiceImplement) ManualReleaseCustOrder(user *global.User, |
|
|
|
if custOrder.OrderStatus.Status != baseModel.WO_STATUS_LOCKED { |
|
|
|
return grmi.NewBusinessError("订单不是已锁定, 不能手动派工") |
|
|
|
} |
|
|
|
if custOrder.OrderStatus.Status1 == baseModel.WO_STATUS_RUNNING { |
|
|
|
return grmi.NewBusinessError("订单已在派工中") |
|
|
|
//if custOrder.OrderStatus.Status1 == baseModel.WO_STATUS_RUNNING {
|
|
|
|
// return grmi.NewBusinessError("订单已在派工中")
|
|
|
|
//}
|
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
_, ok := common.ReleasingTaskMap.Load(mk) |
|
|
|
if ok { |
|
|
|
return grmi.NewBusinessError("订单已在派工队列中") |
|
|
|
} |
|
|
|
channel, exist := common.ReleaseTaskChannel[custOrder.PlantNr] |
|
|
|
if !exist { |
|
|
|
fmt.Println(fmt.Sprintf("通道不存在, 工厂%d", custOrder.PlantNr)) |
|
|
|
return nil |
|
|
|
} |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(*custOrder) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("派工发送数据出错:" + err.Error()) |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// PutTaskToChannel 根据配置定时向channel中导入派工任务
|
|
|
|
func (impl *CustOrderServiceImplement) PutTaskToChannel() (err error) { |
|
|
|
engine := db.Eloquent.Master() |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
log, _ := logger.NewLogger("定时派工", "RELEASE") |
|
|
|
userId := "System" |
|
|
|
defer func() { |
|
|
|
if err != nil { |
|
|
|
log.Error("执行失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
}() |
|
|
|
plantDao := baseDal.NewPlantDAO(session, userId) |
|
|
|
plantLi, err := plantDao.Select(nil, nil) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
for _, plant := range plantLi { |
|
|
|
user := &global.User{ |
|
|
|
UserId: "System", |
|
|
|
PlantNr: plant.PlantNr, |
|
|
|
} |
|
|
|
configDao := dal.NewReleaseTaskConfigDAO(session, user.PlantNr, user.UserId) |
|
|
|
configLi, err := configDao.Select([]grmi.Predicate{meta.ReleaseTaskConfig_BusinessObjType.NewPredicate(grmi.Equal, model.CONFIG_TYPE_WORK_LINE)}, nil) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
configMap := make(map[string]model.ReleaseTaskConfig) |
|
|
|
for _, config := range configLi { |
|
|
|
configMap[config.BusinessObjId] = config |
|
|
|
} |
|
|
|
custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
custOrderLi, err := custOrderDao.SelectNeedReleaseCustOrder() |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
sort.Slice(custOrderLi, func(i, j int) bool { |
|
|
|
itemI := custOrderLi[i] |
|
|
|
itemJ := custOrderLi[j] |
|
|
|
iUnix := itemI.PlanStartTime.Restore().Unix() |
|
|
|
jUnix := itemJ.PlanStartTime.Restore().Unix() |
|
|
|
return iUnix < jUnix |
|
|
|
}) |
|
|
|
channel, exist := common.ReleaseTaskChannel[plant.PlantNr] |
|
|
|
if !exist { |
|
|
|
return grmi.NewBusinessError(fmt.Sprintf("通道不存在, 工厂%d", plant.PlantNr)) |
|
|
|
} |
|
|
|
for _, custOrder := range custOrderLi { |
|
|
|
mk := fmt.Sprintf("%d-%s", custOrder.PlantNr, custOrder.CustOrderId) |
|
|
|
_, ok := common.ReleasingTaskMap.Load(mk) |
|
|
|
if ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
config, exist := configMap[custOrder.WorkLineId] |
|
|
|
if !exist { |
|
|
|
return grmi.NewBusinessError(fmt.Sprintf("产线%s没有派工配置", custOrder.WorkLineId)) |
|
|
|
} |
|
|
|
duration := utils.CalcDurationByUom(float64(config.LeadTime), config.TimeUomId) |
|
|
|
if custOrder.PlanStartTime.Restore().Add(-duration*time.Second).Unix() > time.Now().Unix() { |
|
|
|
continue |
|
|
|
} |
|
|
|
common.ReleasingTaskMap.Store(mk, nil) |
|
|
|
err = channel.SendData(custOrder) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("派工发送数据出错:" + err.Error()) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |