|
|
@ -1003,6 +1003,18 @@ func (self *PackOrderServiceImplement) SelectTemplates(user *models.Usertab, ord |
|
|
|
if orderInfo.Status != bmodel.WO_STATUS_FINISHED { |
|
|
|
return nil, grmi.NewBusinessError("该条码订单状态没有完成!") |
|
|
|
} |
|
|
|
|
|
|
|
//判断条码是否已经生成过包装
|
|
|
|
itemlstDAO := dal.NewPackOrderItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
dataList, err := itemlstDAO.Select([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_SerialOrderId.NewPredicate(grmi.Equal, orderId), |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
if len(dataList) > 0 { |
|
|
|
return nil, grmi.NewBusinessError("该条码已经扫描过!") |
|
|
|
} |
|
|
|
//如果只有一个模板那么自动创建
|
|
|
|
if len(packTemplants) == 1 { |
|
|
|
//开启session
|
|
|
@ -1022,20 +1034,11 @@ func (self *PackOrderServiceImplement) SelectTemplates(user *models.Usertab, ord |
|
|
|
packsession.Rollback() |
|
|
|
return nil, grmi.NewBusinessError("生成包装流水号失败!") |
|
|
|
} |
|
|
|
packTemplateItemlstDAO := dal.NewPackTemplateItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
|
|
|
|
packTemplateItems, err := packTemplateItemlstDAO.Select([]grmi.Predicate{ |
|
|
|
meta.PackTemplateItemlst_PackTemplateId.NewPredicate(grmi.Equal, packTemplate.PackTemplateId), |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
packOrderDAO := dal.NewPackOrderDAO(session, user.Pid, user.Userid) |
|
|
|
err = packOrderDAO.InsertOne(&model.PackOrder{ |
|
|
|
PlantNr: packTemplate.PlantNr, |
|
|
|
PackOrderId: packOrderId, |
|
|
|
Status: bmodel.PACK_STATUS_RELEASED, |
|
|
|
Status: bmodel.PACK_STATUS_RUNNING, |
|
|
|
PackTemplateId: packTemplate.PackTemplateId, |
|
|
|
PackTypeId: packTemplate.PackTypeId, |
|
|
|
MaterialId: packTemplate.MaterialId, |
|
|
@ -1043,6 +1046,7 @@ func (self *PackOrderServiceImplement) SelectTemplates(user *models.Usertab, ord |
|
|
|
CreateDate: utils.TimeFormat(time.Now(), "yyyyMMdd"), |
|
|
|
Lot: utils.TimeFormat(time.Now(), "MMddyyyy"), |
|
|
|
SiteCode: packTemplate.SiteCode, |
|
|
|
ActQty: 1, |
|
|
|
OpenTime: grmi.DateTime(time.Now()), |
|
|
|
PlanQty: float64(packTemplate.PlanQty), |
|
|
|
}) |
|
|
@ -1050,27 +1054,17 @@ func (self *PackOrderServiceImplement) SelectTemplates(user *models.Usertab, ord |
|
|
|
packsession.Rollback() |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
items := make([]*model.PackOrderItemlst, 0) |
|
|
|
for _, packTemplateItem := range packTemplateItems { |
|
|
|
items = append(items, &model.PackOrderItemlst{ |
|
|
|
PlantNr: packTemplateItem.PlantNr, |
|
|
|
PackOrderId: packOrderId, |
|
|
|
Pos: packTemplateItem.Pos, |
|
|
|
PosCode: packTemplateItem.PosCode, |
|
|
|
MaterialId: packTemplateItem.MaterialId, |
|
|
|
PlanQty: float64(packTemplateItem.PlanQty), |
|
|
|
ActQty: 0, |
|
|
|
Status: bmodel.PACK_STATUS_RELEASED, |
|
|
|
Seq: packTemplateItem.Seq, |
|
|
|
}) |
|
|
|
} |
|
|
|
packOrderItemlstDAO := dal.NewPackOrderItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
for _, item := range items { |
|
|
|
err = packOrderItemlstDAO.InsertOne(item) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
//插入包装项
|
|
|
|
packItems := new(model.PackOrderItemlst) |
|
|
|
packItems.PlantNr = user.Pid |
|
|
|
packItems.PackOrderId = packOrderId |
|
|
|
packItems.SerialOrderId = orderId |
|
|
|
packItems.Status = bmodel.PACK_STATUS_RUNNING |
|
|
|
packItems.ActQty = 1 |
|
|
|
err = itemlstDAO.InsertOne(packItems) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return nil, grmi.NewBusinessError("更新包装项失败!") |
|
|
|
} |
|
|
|
packsession.Commit() |
|
|
|
result := new(model.CreatePackOrderInfo) |
|
|
@ -1112,18 +1106,6 @@ func (self *PackOrderServiceImplement) CreatePackOrderByTemplate(user *models.Us |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
|
|
|
|
packTemplateItemlstDAO := dal.NewPackTemplateItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
predicates, err := ConditionOfItemsOfPackOrderTemplate.BuildPredicates(map[string]string{ |
|
|
|
meta.PackTemplateItemlst_PackTemplateId.UrlParameterName: packTemplate.PackTemplateId, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
packTemplateItems, err := packTemplateItemlstDAO.Select(predicates, ConditionOfPackTemplatesOfArticle.OrderByFields) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
articleDAO := base.NewArticleDAO(session, user.Pid, user.Userid) |
|
|
|
article, err := articleDAO.SelectOne(packTemplate.MaterialId) |
|
|
|
if err != nil { |
|
|
@ -1160,27 +1142,6 @@ func (self *PackOrderServiceImplement) CreatePackOrderByTemplate(user *models.Us |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
items := make([]*model.PackOrderItemlst, 0, 10) |
|
|
|
for _, packTemplateItem := range packTemplateItems { |
|
|
|
items = append(items, &model.PackOrderItemlst{ |
|
|
|
PlantNr: packTemplateItem.PlantNr, |
|
|
|
PackOrderId: packOrderId, |
|
|
|
Pos: packTemplateItem.Pos, |
|
|
|
PosCode: packTemplateItem.PosCode, |
|
|
|
MaterialId: packTemplateItem.MaterialId, |
|
|
|
PlanQty: float64(packTemplateItem.PlanQty), |
|
|
|
ActQty: 0, |
|
|
|
Status: bmodel.PACK_STATUS_RELEASED, |
|
|
|
Seq: packTemplateItem.Seq, |
|
|
|
}) |
|
|
|
} |
|
|
|
packOrderItemlstDAO := dal.NewPackOrderItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
for _, item := range items { |
|
|
|
err = packOrderItemlstDAO.InsertOne(item) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
@ -1248,18 +1209,6 @@ func (self *PackOrderServiceImplement) CheckPackOrderItem(user *models.Usertab, |
|
|
|
return "", grmi.NewBusinessError("没有在数据库中找到扫码内容对应的信息!") |
|
|
|
} |
|
|
|
itemlstDAO := dal.NewPackOrderItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
//判断条码是否符合包装规则
|
|
|
|
dataLens, err := itemlstDAO.Select([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PlantNr.NewPredicate(grmi.Equal, user.Pid), |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
meta.PackOrderItemlst_MaterialId.NewPredicate(grmi.Equal, artId), |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if len(dataLens) == 0 { |
|
|
|
return "", grmi.NewBusinessError("该条码不符合该包装规则!") |
|
|
|
} |
|
|
|
|
|
|
|
//判断条码是否已经生成过包装
|
|
|
|
dataList, err := itemlstDAO.Select([]grmi.Predicate{ |
|
|
@ -1278,96 +1227,41 @@ func (self *PackOrderServiceImplement) CheckPackOrderItem(user *models.Usertab, |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
//查询待检测包装位置
|
|
|
|
dao := dal.NewPackOrderItemlstDAO(packsession, user.Pid, user.Userid) |
|
|
|
infoPos, err := dao.SelectOnePos(packOrderId, artId) |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if infoPos == nil { |
|
|
|
return "", grmi.NewBusinessError("没有待扫描的条码!") |
|
|
|
} |
|
|
|
//校验位置对应的零件是否一致
|
|
|
|
if infoPos.MaterialId != artId { |
|
|
|
return "", grmi.NewBusinessError("编码位置对应的零件号和条码不一致!") |
|
|
|
} |
|
|
|
//1.更新对应的包装项信息
|
|
|
|
|
|
|
|
PackOrderItemlst := new(model.PackOrderItemlst) |
|
|
|
PackOrderItemlst.PlantNr = user.Pid |
|
|
|
PackOrderItemlst.PackOrderId = packOrderId |
|
|
|
PackOrderItemlst.Pos = infoPos.Pos |
|
|
|
PackOrderItemlst.SerialOrderId = orderId |
|
|
|
PackOrderItemlst.ActQty = 1 |
|
|
|
PackOrderItemlst.Status = bmodel.PACK_STATUS_RUNNING |
|
|
|
|
|
|
|
columns := []string{"SerialOrderId", "Status", "ActQty"} |
|
|
|
err = dao.UpdateWhere([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PlantNr.NewPredicate(grmi.Equal, user.Pid), |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
meta.PackOrderItemlst_Status.NewPredicate(grmi.Equal, bmodel.PACK_STATUS_RELEASED), |
|
|
|
meta.PackOrderItemlst_Pos.NewPredicate(grmi.Equal, infoPos.Pos), |
|
|
|
}, PackOrderItemlst, columns...) |
|
|
|
|
|
|
|
//插入包装项
|
|
|
|
packItems := new(model.PackOrderItemlst) |
|
|
|
packItems.PlantNr = user.Pid |
|
|
|
packItems.PackOrderId = packOrderId |
|
|
|
packItems.SerialOrderId = orderId |
|
|
|
packItems.Status = bmodel.PACK_STATUS_RUNNING |
|
|
|
packItems.ActQty = 1 |
|
|
|
err = itemlstDAO.InsertOne(packItems) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("更新包装项失败!") |
|
|
|
} |
|
|
|
//2.判断是否满足关包
|
|
|
|
dataInfo, err := dao.Select([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PlantNr.NewPredicate(grmi.Equal, user.Pid), |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
meta.PackOrderItemlst_Status.NewPredicate(grmi.LessThen, bmodel.PACK_STATUS_RUNNING), |
|
|
|
}, nil) |
|
|
|
//更新数量
|
|
|
|
pdao := dal.NewPackOrderDAO(packsession, user.Pid, user.Userid) |
|
|
|
|
|
|
|
pack, err := pdao.SelectOne(packOrderId) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("更新包装项失败!") |
|
|
|
return "", err |
|
|
|
} |
|
|
|
isClose := false |
|
|
|
if len(dataInfo) == 0 { |
|
|
|
isClose = true |
|
|
|
//满足关包
|
|
|
|
pdao := dal.NewPackOrderDAO(packsession, user.Pid, user.Userid) |
|
|
|
|
|
|
|
pack, err := pdao.SelectOne(packOrderId) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if pack == nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("不存在指定记录!") |
|
|
|
} |
|
|
|
pack.PlantNr = user.Pid |
|
|
|
pack.PackOrderId = packOrderId |
|
|
|
pack.Status = bmodel.PACK_STATUS_CLOSED |
|
|
|
pack.CloseTime = grmi.DateTime(time.Now()) |
|
|
|
pack.ActQty = pack.PlanQty |
|
|
|
err = pdao.UpdateOne(pack) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("更新包装单状态失败!") |
|
|
|
} |
|
|
|
|
|
|
|
Itemlst := new(model.PackOrderItemlst) |
|
|
|
Itemlst.PlantNr = user.Pid |
|
|
|
Itemlst.PackOrderId = packOrderId |
|
|
|
Itemlst.Status = bmodel.PACK_STATUS_CLOSED |
|
|
|
|
|
|
|
columns := []string{"Status"} |
|
|
|
err = dao.UpdateWhere([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PlantNr.NewPredicate(grmi.Equal, user.Pid), |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
}, Itemlst, columns...) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("更新包装项状态失败!") |
|
|
|
} |
|
|
|
if pack == nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("不存在指定记录!") |
|
|
|
} |
|
|
|
packsession.Commit() |
|
|
|
if isClose { |
|
|
|
return "close", nil |
|
|
|
pack.PlantNr = user.Pid |
|
|
|
pack.PackOrderId = packOrderId |
|
|
|
pack.CloseTime = grmi.DateTime(time.Now()) |
|
|
|
pack.ActQty += 1 |
|
|
|
err = pdao.UpdateOne(pack) |
|
|
|
if err != nil { |
|
|
|
packsession.Rollback() |
|
|
|
return "", grmi.NewBusinessError("更新包装单状态失败!") |
|
|
|
} |
|
|
|
packsession.Commit() |
|
|
|
return "", nil |
|
|
|
} |
|
|
|
|
|
|
@ -1403,14 +1297,7 @@ func (self *PackOrderServiceImplement) ClosePackOrderItem(user *models.Usertab, |
|
|
|
return err |
|
|
|
} |
|
|
|
dao := dal.NewPackOrderItemlstDAO(session, user.Pid, user.Userid) |
|
|
|
//查询已经关闭的单数
|
|
|
|
items, err := dao.Select([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
meta.PackOrderItemlst_Status.NewPredicate(grmi.Equal, bmodel.PACK_STATUS_RUNNING), |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
//1.更新包装单
|
|
|
|
pdao := dal.NewPackOrderDAO(session, user.Pid, user.Userid) |
|
|
|
|
|
|
@ -1427,7 +1314,6 @@ func (self *PackOrderServiceImplement) ClosePackOrderItem(user *models.Usertab, |
|
|
|
pack.PackOrderId = packOrderId |
|
|
|
pack.Status = bmodel.PACK_STATUS_CLOSED |
|
|
|
pack.CloseTime = grmi.DateTime(time.Now()) |
|
|
|
pack.ActQty = float64(len(items)) |
|
|
|
err = pdao.UpdateOne(pack) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
@ -1444,25 +1330,8 @@ func (self *PackOrderServiceImplement) ClosePackOrderItem(user *models.Usertab, |
|
|
|
err = dao.UpdateWhere([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PlantNr.NewPredicate(grmi.Equal, user.Pid), |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
meta.PackOrderItemlst_Status.NewPredicate(grmi.Equal, bmodel.PACK_STATUS_RUNNING), |
|
|
|
}, PackOrderItemlstOne, columns...) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return grmi.NewBusinessError("更新包装项失败!") |
|
|
|
} |
|
|
|
//2) 更新等待(26)的状态 ==> (98)
|
|
|
|
PackOrderItemlstTwo := new(model.PackOrderItemlst) |
|
|
|
PackOrderItemlstTwo.PlantNr = user.Pid |
|
|
|
PackOrderItemlstTwo.PackOrderId = packOrderId |
|
|
|
PackOrderItemlstTwo.Status = bmodel.PACK_STATUS_CANCELED |
|
|
|
// 1) 更新处理中(40)的状态 ==> (80)
|
|
|
|
err = dao.UpdateWhere([]grmi.Predicate{ |
|
|
|
meta.PackOrderItemlst_PlantNr.NewPredicate(grmi.Equal, user.Pid), |
|
|
|
meta.PackOrderItemlst_PackOrderId.NewPredicate(grmi.Equal, packOrderId), |
|
|
|
meta.PackOrderItemlst_Status.NewPredicate(grmi.Equal, bmodel.PACK_STATUS_RELEASED), |
|
|
|
}, PackOrderItemlstTwo, columns...) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return grmi.NewBusinessError("更新包装项失败!") |
|
|
|