diff --git a/services/log/implments/PackOrder.service.impl.go b/services/log/implments/PackOrder.service.impl.go index 5d5be76..b0cb2ea 100644 --- a/services/log/implments/PackOrder.service.impl.go +++ b/services/log/implments/PackOrder.service.impl.go @@ -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("更新包装项失败!")