From 6dd9da726c31b9cfaa01b539f2bcea2823329114 Mon Sep 17 00:00:00 2001 From: louwenzhi Date: Mon, 28 Jun 2021 17:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E6=A3=80=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- container/DefaultSessionManager.go | 2 +- models/base/Const.go | 4 + models/qm/SerialOrderRuting.model.go | 21 ++--- .../log/implments/PackOrder.service.impl.go | 85 ++++++++++++++----- services/qm/DefectRecord.service.go | 2 +- .../qm/implments/DefectRecord.service.impl.go | 73 +++++++++++----- services/qm/implments/View.service.impl.go | 4 + web/controllers/qm/DefectRecord.rest.go | 14 +-- 8 files changed, 148 insertions(+), 57 deletions(-) diff --git a/container/DefaultSessionManager.go b/container/DefaultSessionManager.go index 103a0a6..08d5bf8 100644 --- a/container/DefaultSessionManager.go +++ b/container/DefaultSessionManager.go @@ -84,7 +84,7 @@ func (manager *DefaultSessionManager) GetSession(sessionId string, user *models. if err != nil { return nil, err } - session, err := NewSession(sessionContext, sessionId, handlerManager) + session, err = NewSession(sessionContext, sessionId, handlerManager) if err != nil { return nil, err } diff --git a/models/base/Const.go b/models/base/Const.go index 7224113..f58a080 100644 --- a/models/base/Const.go +++ b/models/base/Const.go @@ -25,6 +25,10 @@ const ( PACK_STATUS_LOCKED = 95 // 锁定 PACK_STATUS_CANCELED = 98 // 取消 + //校验状态 + CHECK_STATUS_RUNNING = 40 // 没通过 + CHECK_STATUS_CLOSED = 80 // 通过 + // 工单状态 WO_STATUS_UNPLANNED = 10 // 未计划 WO_STATUS_PLANNED = 20 // 已计划 diff --git a/models/qm/SerialOrderRuting.model.go b/models/qm/SerialOrderRuting.model.go index 54790ff..0198129 100644 --- a/models/qm/SerialOrderRuting.model.go +++ b/models/qm/SerialOrderRuting.model.go @@ -20,16 +20,17 @@ import ( * ******************************************************************************/ type SerialOrderRuting struct { - PlantNr int `xorm:"pk int 'PlantNr'" json:"QM_SerialOrderRuting-PlantNr"` - SerialorderId string `xorm:"pk nvarchar(32) 'SerialorderId'" json:"QM_SerialOrderRuting-SerialorderId"` - ArtId string `xorm:"nvarchar(32) 'ArtId'" json:"QM_SerialOrderRuting-ArtId"` - WorkPlaceNr string `xorm:"nvarchar(10) 'WorkPlaceNr'" json:"QM_SerialOrderRuting-WorkPlaceNr"` - Status string `xorm:"nvarchar(10) 'Status'" json:"QM_SerialOrderRuting-Status"` - IsPack int `xorm:"int 'IsPack'" json:"QM_SerialOrderRuting-IsPack"` - Remark string `xorm:"nvarchar(255) 'Remark'" json:"QM_SerialOrderRuting-Remark"` - LastModify grmi.DateTime `xorm:"datetime 'LastModify' not null updated" json:"QM_SerialOrderRuting-LastModify"` - LastUser string `xorm:"nvarchar(20) 'LastUser' not null" json:"QM_SerialOrderRuting-LastUser"` - CreateTime grmi.DateTime `xorm:"datetime 'CreateTime' not null created" json:"QM_SerialOrderRuting-CreateTime"` + PlantNr int `xorm:"pk int 'PlantNr'" json:"QM_SerialOrderRuting-PlantNr"` + SerialorderId string `xorm:"pk nvarchar(32) 'SerialorderId'" json:"QM_SerialOrderRuting-SerialorderId"` + ArtId string `xorm:"nvarchar(32) 'ArtId'" json:"QM_SerialOrderRuting-ArtId"` + WorkPlaceNr int `xorm:"int 'WorkPlaceNr'" json:"QM_SerialOrderRuting-WorkPlaceNr"` + Status int `xorm:"int 'Status'" json:"QM_SerialOrderRuting-Status"` + IsPack int `xorm:"int 'IsPack'" json:"QM_SerialOrderRuting-IsPack"` + Remark string `xorm:"nvarchar(255) 'Remark'" json:"QM_SerialOrderRuting-Remark"` + LastModify grmi.DateTime `xorm:"datetime 'LastModify' not null updated" json:"QM_SerialOrderRuting-LastModify"` + LastUser string `xorm:"nvarchar(20) 'LastUser' not null" json:"QM_SerialOrderRuting-LastUser"` + CreateTime grmi.DateTime `xorm:"datetime 'CreateTime' not null created" json:"QM_SerialOrderRuting-CreateTime"` + DefectRecord []DefectRecord `xorm:"-" json:"QM_SerialOrderRuting-DefectRecord"` } /****************************************************************************** diff --git a/services/log/implments/PackOrder.service.impl.go b/services/log/implments/PackOrder.service.impl.go index c6bb1ff..5836938 100644 --- a/services/log/implments/PackOrder.service.impl.go +++ b/services/log/implments/PackOrder.service.impl.go @@ -12,6 +12,7 @@ import ( //medal "LAPP_GAAS_GFrame_BACKEND/dao/me" dal "LAPP_GAAS_GFrame_BACKEND/dao/log" + qmdal "LAPP_GAAS_GFrame_BACKEND/dao/qm" "LAPP_GAAS_GFrame_BACKEND/db" "LAPP_GAAS_GFrame_BACKEND/grmi" bmeta "LAPP_GAAS_GFrame_BACKEND/meta/base" @@ -705,6 +706,44 @@ func (self *PackOrderServiceImplement) IsCreatePackOrder(user *models.Usertab, o if len(dataList) > 0 { return nil, grmi.NewBusinessError("该条码已经扫描过!") } + + //条件判断 + slaves := db.Eloquent.Slaves() + slavesession := slaves[0].NewSession() + defer slavesession.Close() + apiDao := api.NewACCUNITSTATUSDAO(slavesession, user.Userid) + + //根据唯一码查询信息 + mesData, err := apiDao.SelectInfo(orderId) + if err != nil { + return nil, err + } + if mesData == nil { + return nil, grmi.NewBusinessError("该唯一码不存在!") + } + if mesData.LINE == "LaserWelding" { + //校验 + if mesData.OP != "017" { + return nil, grmi.NewBusinessError("OP状态值不是017!") + } + //if mesData.STATUS != "2" { + // return nil, grmi.NewBusinessError("该唯一码状态不为2!") + //} + } else if mesData.LINE == "G-Frame Assy" { + //查询目检 + //判断该条码是否是合格产品 + sdao := qmdal.NewSerialOrderRutingDAO(session, user.Pid, user.Userid) + OrderInfo, err := sdao.SelectOne(orderId) + if err != nil { + return nil, grmi.NewBusinessError("序列订单查询错误!") + } + if OrderInfo == nil || OrderInfo.Status != bmodel.CHECK_STATUS_CLOSED { + return nil, grmi.NewBusinessError("该序列订单已经检测!") + } + } else { + return nil, grmi.NewBusinessError("产线信息有误!") + } + /********************************* * 1.判断是否已经有激活的包装 *********************************/ @@ -772,7 +811,7 @@ func (self *PackOrderServiceImplement) IsCreatePackOrder(user *models.Usertab, o err = packOrderDAO.InsertOne(&model.PackOrder{ PlantNr: packTemplate.PlantNr, PackOrderId: packOrderId, - Status: 26, + Status: bmodel.PACK_STATUS_RELEASED, PackTemplateId: packTemplate.PackTemplateId, PackTypeId: packTemplate.PackTypeId, MaterialId: packTemplate.MaterialId, @@ -793,7 +832,7 @@ func (self *PackOrderServiceImplement) IsCreatePackOrder(user *models.Usertab, o MaterialId: packTemplateItem.MaterialId, PlanQty: float64(packTemplateItem.PlanQty), ActQty: 0, - Status: 26, + Status: bmodel.PACK_STATUS_RELEASED, Seq: packTemplateItem.Seq, }) } @@ -807,7 +846,7 @@ func (self *PackOrderServiceImplement) IsCreatePackOrder(user *models.Usertab, o } //查询该零件对应的包装项位置 dao := dal.NewPackOrderItemlstDAO(packsession, user.Pid, user.Userid) - infoPos, err := dao.SelectOnePos(packOrderId,artId) + infoPos, err := dao.SelectOnePos(packOrderId, artId) if err != nil { return nil, err } @@ -1004,7 +1043,7 @@ func (self *PackOrderServiceImplement) CreatePackOrderByTemplate(user *models.Us err = packOrderDAO.InsertOne(&model.PackOrder{ PlantNr: packTemplate.PlantNr, PackOrderId: packOrderId, - Status: 26, + Status: bmodel.PACK_STATUS_RELEASED, PackTemplateId: packTemplate.PackTemplateId, PackTypeId: packTemplate.PackTypeId, MaterialId: packTemplate.MaterialId, @@ -1024,7 +1063,7 @@ func (self *PackOrderServiceImplement) CreatePackOrderByTemplate(user *models.Us MaterialId: packTemplateItem.MaterialId, PlanQty: float64(packTemplateItem.PlanQty), ActQty: 0, - Status: 26, + Status: bmodel.PACK_STATUS_RELEASED, Seq: packTemplateItem.Seq, }) } @@ -1090,28 +1129,35 @@ func (self *PackOrderServiceImplement) CheckPackOrderItem(user *models.Usertab, apiDao := api.NewACCUNITSTATUSDAO(slavesession, user.Userid) //根据唯一码查询信息 - mesData,err := apiDao.SelectInfo(orderId) + mesData, err := apiDao.SelectInfo(orderId) if err != nil { return "", err } - if mesData == nil{ - return "",grmi.NewBusinessError("该唯一码不存在!") + if mesData == nil { + return "", grmi.NewBusinessError("该唯一码不存在!") } - if mesData.LINE == "G-Frame Assy"{ + if mesData.LINE == "LaserWelding" { //校验 - if mesData.OP != "017"{ - return "",grmi.NewBusinessError("OP状态值不是017!") + if mesData.OP != "017" { + return "", grmi.NewBusinessError("OP状态值不是017!") } - if mesData.STATUS != "2"{ - return "",grmi.NewBusinessError("该唯一码状态不为2!") + if mesData.STATUS != "2" { + return "", grmi.NewBusinessError("该唯一码状态不为2!") } - }else if mesData.LINE == "LaserWelding"{ + } else if mesData.LINE == "G-Frame Assy" { //查询目检 - }else { - return "",grmi.NewBusinessError("产线信息有误!") + //判断该条码是否是合格产品 + sdao := qmdal.NewSerialOrderRutingDAO(session, user.Pid, user.Userid) + OrderInfo, err := sdao.SelectOne(orderId) + if err != nil { + return "", grmi.NewBusinessError("序列订单查询错误!") + } + if OrderInfo == nil || OrderInfo.Status != bmodel.CHECK_STATUS_CLOSED { + return "", grmi.NewBusinessError("该序列订单已经检测!") + } + } else { + return "", grmi.NewBusinessError("产线信息有误!") } - - articleDAO := base.NewArticleDAO(session, user.Pid, user.Userid) article, err := articleDAO.SelectOne(artId) if err != nil { @@ -1133,6 +1179,7 @@ func (self *PackOrderServiceImplement) CheckPackOrderItem(user *models.Usertab, if len(dataLens) == 0 { return "", grmi.NewBusinessError("该条码不符合该包装规则!") } + //判断条码是否已经生成过包装 dataList, err := itemlstDAO.Select([]grmi.Predicate{ meta.PackOrderItemlst_SerialOrderId.NewPredicate(grmi.Equal, orderId), @@ -1152,7 +1199,7 @@ func (self *PackOrderServiceImplement) CheckPackOrderItem(user *models.Usertab, } //查询待检测包装位置 dao := dal.NewPackOrderItemlstDAO(packsession, user.Pid, user.Userid) - infoPos, err := dao.SelectOnePos(packOrderId,artId) + infoPos, err := dao.SelectOnePos(packOrderId, artId) if err != nil { return "", err } diff --git a/services/qm/DefectRecord.service.go b/services/qm/DefectRecord.service.go index 33e5473..a581084 100644 --- a/services/qm/DefectRecord.service.go +++ b/services/qm/DefectRecord.service.go @@ -113,7 +113,7 @@ type DefectRecordService interface { * @Date : 2021-03-18 23:20:31 * ******************************************************************************/ - Insert(*models.Usertab, *[]model.DefectRecord) error + Insert(*models.Usertab, model.SerialOrderRuting) error /****************************************************************************** * * @Function Name : Delete diff --git a/services/qm/implments/DefectRecord.service.impl.go b/services/qm/implments/DefectRecord.service.impl.go index c062363..c22b4b5 100644 --- a/services/qm/implments/DefectRecord.service.impl.go +++ b/services/qm/implments/DefectRecord.service.impl.go @@ -231,47 +231,60 @@ func (impl *DefectRecordServiceImplement) UpdateOne(user *models.Usertab, entity * ******************************************************************************/ // 2021-03-18 chenglei.wei@le-it.com.cn -func (impl *DefectRecordServiceImplement) Insert(user *models.Usertab, entities *[]model.DefectRecord) error { +func (impl *DefectRecordServiceImplement) Insert(user *models.Usertab, entities model.SerialOrderRuting) error { grmi.Log(user, "/services/qm/implments/DefectRecord.service.impl.go", "InsertDefectRecord", "插入多个DefectRecord") - if entities == nil { - return grmi.NewBusinessError("没有提交记录!") - } - - count := len(*entities) - - if count <= 0 { - return grmi.NewBusinessError("没有提交记录!") - } + count := len(entities.DefectRecord) engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() - dao := dal.NewDefectRecordDAO(session, user.Pid, user.Userid) - orderId := (*entities)[0].OrderId + sdao := dal.NewSerialOrderRutingDAO(session, user.Pid, user.Userid) + OrderInfo, err := sdao.SelectOne(entities.SerialorderId) + if err != nil { + return grmi.NewBusinessError("序列订单查询错误!") + } + if OrderInfo != nil { + return grmi.NewBusinessError("该序列订单已经检测!") + } + + orderId := entities.SerialorderId bdal := basedal.NewLabelParserHeadDAO(session, user.Pid, user.Userid) result, err := bdal.SelectOne("Barcode") if err != nil { - return err + return err } lstdao := basedal.NewLabelParserDetailLstDAO(session, user.Pid, user.Userid) list, err := lstdao.Select([]grmi.Predicate{ bmeta.LabelParserDetailLst_ParserId.NewPredicate(grmi.Equal, "Barcode"), }, nil) if err != nil { - return err + return err } result.Valst = list - if len(orderId) < result.Length{ + if len(orderId) < result.Length { return grmi.NewBusinessError("序列订单错误!") } - codeInfos := common.ParseBarcode(orderId,result.Valst) + codeInfos := common.ParseBarcode(orderId, result.Valst) artID := codeInfos["artId"] + if count <= 0 { + /*******无提交记录,即为正常订单********/ + entities.Status = common.CHECK_STATUS_CLOSED + entities.IsPack = 0 + entities.ArtId = artID + err = sdao.InsertOne(&entities) + if err != nil { + return grmi.NewBusinessError("提交记录失败!") + } + return nil + } + + dao := dal.NewDefectRecordDAO(session, user.Pid, user.Userid) records, err := dao.Select([]grmi.Predicate{meta.DefectRecord_SerialOrderId.NewPredicate(grmi.Equal, orderId)}, nil) if err != nil { return err @@ -286,15 +299,23 @@ func (impl *DefectRecordServiceImplement) Insert(user *models.Usertab, entities articleViewDAO := dal.NewArtViewDAO(session, user.Pid, user.Userid) viewGroupDAO := dal.NewViewDefectGrplstDAO(session, user.Pid, user.Userid) groupReasonDAO := dal.NewDefectGrpReasonLstDAO(session, user.Pid, user.Userid) - for i := 0; i < len(*entities); i++ { - entity := &(*entities)[i] + //添加记录 + entities.Status = common.CHECK_STATUS_RUNNING + entities.ArtId = artID + entities.IsPack = 0 + err = sdao.InsertOne(&entities) + if err != nil { + return grmi.NewBusinessError("提交记录失败!") + } + DefectRecord := make([]model.DefectRecord, 0) + for i := 0; i < len(entities.DefectRecord); i++ { + entity := entities.DefectRecord[i] if entity.XPos == 0 { return grmi.NewBusinessError("没有记录横坐标!") } if entity.YPos == 0 { return grmi.NewBusinessError("没有记录纵坐标!") } - entity.SerialOrderId = orderId view, err := viewDAO.SelectOne(entity.ViewId) if err != nil { return err @@ -344,6 +365,7 @@ func (impl *DefectRecordServiceImplement) Insert(user *models.Usertab, entities if groupReason == nil { return grmi.NewBusinessError(fmt.Sprintf("没有找到缺陷分组(%s)和缺陷原因(%s)的关联!", entity.DefectGrpId, entity.DefectReasonId)) } + entity.SerialOrderId = entity.OrderId entity.Qty = 1 entity.Status = strconv.Itoa(common.ORDER_STATUS_RELEASED) entity.ViewCode = entity.AreaId @@ -359,9 +381,10 @@ func (impl *DefectRecordServiceImplement) Insert(user *models.Usertab, entities entity.DefectDescr = reason.Descr entity.InspectTime = grmi.DateTime(time.Now()) entity.Inspector = user.Userid + DefectRecord = append(DefectRecord, entity) } - err = dao.Insert(entities) + err = dao.Insert(&DefectRecord) if err != nil { return err } @@ -488,6 +511,16 @@ func (impl *DefectRecordServiceImplement) Rework(user *models.Usertab, recNr int return grmi.NewBusinessError("状态错误!") } + sdao := dal.NewSerialOrderRutingDAO(session, user.Pid, user.Userid) + OrderInfo, err := sdao.SelectOne(record.SerialOrderId) + if err != nil { + return grmi.NewBusinessError("序列订单查询错误!") + } + OrderInfo.Status = common.CHECK_STATUS_CLOSED + err = sdao.UpdateOne(OrderInfo) + if err != nil { + return grmi.NewBusinessError("序列订单查询错误!") + } record.Status = strconv.Itoa(common.ORDER_STATUS_CLOSED) record.InspectTime = grmi.DateTime(time.Now()) record.Inspector = user.Userid diff --git a/services/qm/implments/View.service.impl.go b/services/qm/implments/View.service.impl.go index dfdcb1f..eec805b 100644 --- a/services/qm/implments/View.service.impl.go +++ b/services/qm/implments/View.service.impl.go @@ -628,6 +628,10 @@ func (impl *ViewServiceImplement) ViewsOfArticle(context *container.RequestConte if mesData == nil{ return nil,grmi.NewBusinessError("该唯一码不存在!") } + //校验 + if mesData.OP != "017" { + return nil, grmi.NewBusinessError("OP状态值不是017!") + } if mesData.STATUS != "2"{ return nil,grmi.NewBusinessError("该唯一码状态不为2!") } diff --git a/web/controllers/qm/DefectRecord.rest.go b/web/controllers/qm/DefectRecord.rest.go index 11e38fa..68cc286 100644 --- a/web/controllers/qm/DefectRecord.rest.go +++ b/web/controllers/qm/DefectRecord.rest.go @@ -7,6 +7,7 @@ import ( "LAPP_GAAS_GFrame_BACKEND/web/middleware/jwts" "LAPP_GAAS_GFrame_BACKEND/web/models" "LAPP_GAAS_GFrame_BACKEND/web/supports" + "fmt" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/core/router" ) @@ -241,7 +242,7 @@ func RegisterUpdateOneDefectRecord(party router.Party, path string, method func( * @Date : 2021-03-18 22:49:12 * ******************************************************************************/ -func RegisterMultiDefectRecord(party router.Party, httpMethod string, path string, method func(*models.Usertab, *[]model.DefectRecord) error) { +func RegisterMultiDefectRecord(party router.Party, httpMethod string, path string, method func(*models.Usertab, model.SerialOrderRuting) error) { party.Handle(httpMethod, path, func(ctx iris.Context) { user, ok := jwts.ParseToken(ctx) @@ -250,14 +251,15 @@ func RegisterMultiDefectRecord(party router.Party, httpMethod string, path strin return } - entities := make([]model.DefectRecord, 0, 10) + var entities model.SerialOrderRuting err := ctx.ReadJSON(&entities) if err != nil { + fmt.Println(11111) supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return } - err = method(user, &entities) + err = method(user, entities) if err != nil { supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return @@ -284,7 +286,7 @@ func RegisterMultiDefectRecord(party router.Party, httpMethod string, path strin * @Date : 2021-03-18 22:49:12 * ******************************************************************************/ -func RegisterInsertDefectRecord(party router.Party, path string, method func(*models.Usertab, *[]model.DefectRecord) error) { +func RegisterInsertDefectRecord(party router.Party, path string, method func(*models.Usertab, model.SerialOrderRuting) error) { RegisterMultiDefectRecord(party, "POST", path, method) } @@ -307,7 +309,7 @@ func RegisterInsertDefectRecord(party router.Party, path string, method func(*mo * @Date : 2021-03-18 22:49:12 * ******************************************************************************/ -func RegisterDeleteDefectRecord(party router.Party, path string, method func(*models.Usertab, *[]model.DefectRecord) error) { +func RegisterDeleteDefectRecord(party router.Party, path string, method func(*models.Usertab, model.SerialOrderRuting) error) { RegisterMultiDefectRecord(party, "DELETE", path, method) } @@ -366,7 +368,7 @@ func RegisterSelectDefectRecord(party router.Party, path string, method func(*mo * @Date : 2021-03-18 22:49:12 * ******************************************************************************/ -func RegisterUpdateDefectRecord(party router.Party, path string, method func(*models.Usertab, *[]model.DefectRecord) error) { +func RegisterUpdateDefectRecord(party router.Party, path string, method func(*models.Usertab, model.SerialOrderRuting) error) { RegisterMultiDefectRecord(party, "PUT", path, method) }