Browse Source

Merge pull request '注释掉调试代码' (#50) from feature_om into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_LF_MOM_BACKEND/pulls/50
Reviewed-by: 徐腾飞 <tengfei.xue@le-it.com.cn>
pull/51/head
徐腾飞 3 years ago
parent
commit
4195deb8c9
1 changed files with 159 additions and 131 deletions
  1. +159
    -131
      services/om/implments/WorkOrder.service.impl.go

+ 159
- 131
services/om/implments/WorkOrder.service.impl.go View File

@ -8,6 +8,7 @@ import (
meDal "LAPP_LF_MOM_BACKEND/dao/me"
apiMeta "LAPP_LF_MOM_BACKEND/meta/api"
baseMeta "LAPP_LF_MOM_BACKEND/meta/base"
"github.com/go-xorm/xorm"
"strings"
//logDal "LAPP_LF_MOM_BACKEND/dao/log"
@ -911,11 +912,7 @@ func (impl *WorkOrderServiceImplement) LockWorkOrder(user *models.Usertab, workO
PODao := dal.NewSerialOrderPOLstDAO(session, user.Pid, user.Userid)
stepDao := dal.NewSerialOrderStepLstDAO(session, user.Pid, user.Userid)
artRelDao := baseDal.NewArticleRelLstDAO(session, user.Pid, user.Userid)
ruleDao := baseDal.NewArtCheckRuleDAO(session, user.Pid, user.Userid)
allocateDao := baseDal.NewArtQtyAllocateDAO(session, user.Pid, user.Userid)
opcComRuleDao := baseDal.NewOPCComRuleDAO(session, user.Pid, user.Userid)
//opcComDetailDao := baseDal.NewOPCComDetailRuleDAO(session, user.Pid, user.Userid)
serialOrderDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.Pid, user.Userid)
// 获取项目数据 用于获取流水号
project, err := projectDao.SelectOne(baseModel.ProjectId)
if err != nil {
@ -1076,6 +1073,7 @@ func (impl *WorkOrderServiceImplement) LockWorkOrder(user *models.Usertab, workO
}
allocateMap := make(map[string][]baseModel.ArtQtyAllocate)
checkRuleMap := make(map[string]baseModel.ArtCheckRule)
//opcBasicMap := make(map[string]baseModel.OPCBasicComInfo)
for _, serialOrderStatus := range serialOrderStatusLi {
var PO int
processPos := 1
@ -1086,8 +1084,7 @@ func (impl *WorkOrderServiceImplement) LockWorkOrder(user *models.Usertab, workO
serialOrderWorkPlace := model.SerialOrderPOLst{
SerialOrderId: serialOrderStatus.SerialOrderId,
PO: PO,
Pos: processPos,
Status: baseModel.WO_STATUS_LOCKED,
Status: baseModel.WO_STATUS_LOCKED,
}
err = PODao.InsertOne(&serialOrderWorkPlace)
if err != nil {
@ -1107,7 +1104,7 @@ func (impl *WorkOrderServiceImplement) LockWorkOrder(user *models.Usertab, workO
AttrCode: op.ArticleAtcodLst.AttrCode,
AttrValue: op.ArticleAtcodLst.AttrValue,
StepType: op.StepType.StepTypeName,
Status: baseModel.WO_STATUS_LOCKED,
Status: baseModel.WO_STATUS_LOCKED,
}
opPos++
err = stepDao.InsertOne(&serialOrderStep)
@ -1116,132 +1113,14 @@ func (impl *WorkOrderServiceImplement) LockWorkOrder(user *models.Usertab, workO
return nil, grmi.NewBusinessError("插入序列工单工艺数据失败, error:" + err.Error())
}
if serialOrderStep.StepType == model.STEP_CHECK_RULE {
rule, exist := checkRuleMap[op.ArticleAtcodLst.ArtId]
if !exist {
ruleLi, err := ruleDao.Select([]grmi.Predicate{baseMeta.ArtCheckRule_AttriCode.NewPredicate(grmi.Equal, op.ArticleAtcodLst.AttrCode), baseMeta.ArtCheckRule_SubObject.NewPredicate(grmi.Equal, serialOrderStep.SubArtId)}, nil)
if err != nil {
_ = session.Rollback()
return nil, grmi.NewBusinessError("获取零件检验规则失败, error:" + err.Error())
}
if len(ruleLi) == 0 {
ruleLi, err = ruleDao.Select([]grmi.Predicate{baseMeta.ArtCheckRule_AttriCode.NewPredicate(grmi.Equal, op.ArticleAtcodLst.AttrCode), baseMeta.ArtCheckRule_SubObject.NewPredicate(grmi.Equal, model.MES_MATCH_ALL)}, nil)
if err != nil {
_ = session.Rollback()
return nil, grmi.NewBusinessError("获取零件检验规则失败, error:" + err.Error())
}
if len(ruleLi) == 0 {
_ = session.Rollback()
return nil, grmi.NewBusinessError("未获取到零件检验规则, artId:" + serialOrderStep.SubArtId)
}
}
rule = ruleLi[0]
}
var num int
allocateLi, exist := allocateMap[op.ArticleAtcodLst.ArtId]
composeQty := int(artRelMap[serialOrderStep.SubArtId].ComposeQty)
if !exist {
allocateLi, err = allocateDao.Select([]grmi.Predicate{baseMeta.ArtQtyAllocate_AttriCode.NewPredicate(grmi.Equal, op.ArticleAtcodLst.AttrCode), baseMeta.ArtQtyAllocate_TotalPlanty.NewPredicate(grmi.Equal, composeQty)}, nil)
if err != nil {
_ = session.Rollback()
return nil, grmi.NewBusinessError("获取特殊工位数量分配数据失败,错误:" + err.Error())
}
}
if len(allocateLi) == 0 {
num = composeQty
} else {
var allNum int
for _, allocate := range allocateLi {
if allocate.PO == serialOrderStep.PO {
if allocate.SubObject == model.MES_MATCH_ALL {
allNum = allocate.AssignPlanty
} else if allocate.SubObject == serialOrderStep.SubArtId {
num = allocate.AssignPlanty
}
}
}
if num == 0 {
if allNum != 0 {
num = allNum
} else {
num = composeQty
}
}
}
pos := 1
for i := 0; i < num; i++ {
op := model.SerialOrderOPDetail{
SerialOrderId: serialOrderStep.SerialOrderId,
PO: serialOrderStep.PO,
SubArtId: serialOrderStep.SubArtId,
Pos: pos,
StepNo: serialOrderStep.StepNo,
StepType: model.STEP_CHECK_RULE,
Status: baseModel.WO_STATUS_LOCKED,
// 扫码校验 AttriCodeDesc
CharPara1: rule.AttriCodeDesc,
// 扫码校验 SubObject
CharPara2: rule.SubObject,
// 扫码校验 CodeLength
CharPara3: rule.CodeLength,
CharPara4: rule.CheckObject,
IntPara1: rule.AttriCode,
// 扫码校验 AttriCode
IntPara2: rule.CheckStartPos,
IntPara3: rule.CheckLength,
FlagPara1: rule.OnlyBarCodeFlag,
}
pos++
err = serialOrderDetailDao.InsertOne(&op)
if err != nil {
_ = session.Rollback()
return nil, grmi.NewBusinessError("插入操作明细记录失败,error:" + err.Error())
}
}
} else if serialOrderStep.StepType == model.STEP_OPC_RULE {
opcDataLi, err := opcComRuleDao.SelectOPCJoinData(serialOrderStep.PO, serialOrderStep.StepNo)
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, artRelMap, &op, &serialOrderStep)
if err != nil {
_ = session.Rollback()
return nil, grmi.NewBusinessError("获取OPC通信规则数据失败,error:" + err.Error())
}
pos := 1
for _, opc := range opcDataLi {
op := model.SerialOrderOPDetail{
SerialOrderId: serialOrderStep.SerialOrderId,
PO: serialOrderStep.PO,
SubArtId: serialOrderStep.SubArtId,
Pos: pos,
StepType: model.STEP_OPC_RULE,
Status: baseModel.WO_STATUS_LOCKED,
StepNo: serialOrderStep.StepNo,
// OPC STEP DESC
CharPara1: opc.OPCComRule.StepDesc,
// OPC BRAND NAME
CharPara2: opc.OPCBasicComInfo.BrandName,
// OPC MACHINE TYPE
CharPara3: opc.OPCBasicComInfo.MachineType,
// OPC IP ADDRESS
CharPara4: opc.OPCBasicComInfo.IpAddress,
// OPC ACTION TYPE
CharPara5: opc.OPCComRule.ActionType,
// OPC DBLOCK ADDRESS
CharPara6: opc.OPCComRule.DBlockAddress,
// OPC DBLOCK VALUE TYPE
CharPara7: opc.OPCComRule.DBlockValueType,
// OPC DBLOCK VALUE
CharPara8: opc.OPCComRule.DBlockValue,
// OPC STEP NO
IntPara1: opc.OPCComRule.StepNo,
// OPC RULE ID
IntPara2: opc.OPCComRule.RuleId,
}
pos++
err = serialOrderDetailDao.InsertOne(&op)
if err != nil {
_ = session.Rollback()
return nil, grmi.NewBusinessError("插入操作明细记录失败,error:" + err.Error())
}
return nil, err
}
checkRuleMap = *checkRuleMapPointer
allocateMap = *allocateMapPointer
} else if serialOrderStep.StepType == model.STEP_OPC_RULE {
}
}
@ -1253,3 +1132,152 @@ func (impl *WorkOrderServiceImplement) LockWorkOrder(user *models.Usertab, workO
_ = session.Commit()
return result, nil
}
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/services/om/WorkOrderService.ScanCodeCheck 生成扫码校验的工艺数据
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) ScanCodeCheck(user *models.Usertab, session *xorm.Session, checkRuleMap map[string]baseModel.ArtCheckRule, allocateMap map[string][]baseModel.ArtQtyAllocate, artRelMap map[string]baseModel.ArticleRelLst, op *baseModel.OperationRelData, serialOrderStep *model.SerialOrderStepLst) (resCheckRuleMap *map[string]baseModel.ArtCheckRule, resAllocateMap *map[string][]baseModel.ArtQtyAllocate, err error) {
ruleDao := baseDal.NewArtCheckRuleDAO(session, user.Pid, user.Userid)
allocateDao := baseDal.NewArtQtyAllocateDAO(session, user.Pid, user.Userid)
serialOrderDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.Pid, user.Userid)
// 获取零件校验规则
rule, exist := checkRuleMap[op.ArticleAtcodLst.ArtId]
if !exist {
ruleLi, err := ruleDao.Select([]grmi.Predicate{baseMeta.ArtCheckRule_AttriCode.NewPredicate(grmi.Equal, op.ArticleAtcodLst.AttrCode), baseMeta.ArtCheckRule_SubObject.NewPredicate(grmi.Equal, serialOrderStep.SubArtId)}, nil)
if err != nil {
return nil, nil, grmi.NewBusinessError("获取零件检验规则失败, error:" + err.Error())
}
if len(ruleLi) == 0 {
ruleLi, err = ruleDao.Select([]grmi.Predicate{baseMeta.ArtCheckRule_AttriCode.NewPredicate(grmi.Equal, op.ArticleAtcodLst.AttrCode), baseMeta.ArtCheckRule_SubObject.NewPredicate(grmi.Equal, model.MES_MATCH_ALL)}, nil)
if err != nil {
return nil, nil, grmi.NewBusinessError("获取零件检验规则失败, error:" + err.Error())
}
if len(ruleLi) == 0 {
return nil, nil, grmi.NewBusinessError("未获取到零件检验规则, artId:" + serialOrderStep.SubArtId)
}
}
rule = ruleLi[0]
checkRuleMap[op.ArticleAtcodLst.ArtId] = rule
}
// 获取零件分配数量
var num int
// 零件BOM中两件组成父级零件的数量
composeQty := int(artRelMap[serialOrderStep.SubArtId].ComposeQty)
allocateLi, exist := allocateMap[op.ArticleAtcodLst.ArtId]
if !exist {
allocateLi, err = allocateDao.Select([]grmi.Predicate{baseMeta.ArtQtyAllocate_AttriCode.NewPredicate(grmi.Equal, op.ArticleAtcodLst.AttrCode), baseMeta.ArtQtyAllocate_TotalPlanty.NewPredicate(grmi.Equal, composeQty)}, nil)
if err != nil {
return nil, nil, grmi.NewBusinessError("获取特殊工位数量分配数据失败,错误:" + err.Error())
}
allocateMap[op.ArticleAtcodLst.ArtId] = allocateLi
}
// 获取特殊工位零件分配数量
if len(allocateLi) == 0 {
num = composeQty
} else {
var allNum int
for _, allocate := range allocateLi {
if allocate.PO == serialOrderStep.PO {
if allocate.SubObject == model.MES_MATCH_ALL {
allNum = allocate.AssignPlanty
} else if allocate.SubObject == serialOrderStep.SubArtId {
num = allocate.AssignPlanty
}
}
}
if num == 0 {
if allNum != 0 {
num = allNum
} else {
num = composeQty
}
}
}
// 生成零件校验规则的工艺数据
pos := 1
for i := 0; i < num; i++ {
op := model.SerialOrderOPDetail{
SerialOrderId: serialOrderStep.SerialOrderId,
PO: serialOrderStep.PO,
SubArtId: serialOrderStep.SubArtId,
Pos: pos,
StepNo: serialOrderStep.StepNo,
StepType: model.STEP_CHECK_RULE,
Status: baseModel.WO_STATUS_LOCKED,
// 扫码校验 AttriCodeDesc
CharPara1: rule.AttriCodeDesc,
// 扫码校验 SubObject
CharPara2: rule.SubObject,
// 扫码校验 CodeLength
CharPara3: rule.CodeLength,
CharPara4: rule.CheckObject,
IntPara1: rule.AttriCode,
// 扫码校验 AttriCode
IntPara2: rule.CheckStartPos,
IntPara3: rule.CheckLength,
FlagPara1: rule.OnlyBarCodeFlag,
}
pos++
err = serialOrderDetailDao.InsertOne(&op)
if err != nil {
return nil, nil, grmi.NewBusinessError("插入操作明细记录失败,error:" + err.Error())
}
}
return &checkRuleMap, &allocateMap, nil
}
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/services/om/WorkOrderService.ScanCodeCheck 生成OPC通信的工艺数据
*
******************************************************************************/
//func (impl *WorkOrderServiceImplement) OPCCommunication(user *models.Usertab, session *xorm.Session, opcBasicMap map[string]baseModel.OPCBasicComInfo, op *baseModel.OperationRelData, serialOrderStep *model.SerialOrderStepLst) (*map[string]baseModel.OPCBasicComInfo, error) {
// opcComRuleDao := baseDal.NewOPCComRuleDAO(session, user.Pid, user.Userid)
// opcComDetailDao := baseDal.NewOPCComDetailRuleDAO(session, user.Pid, user.Userid)
// serialOrderDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.Pid, user.Userid)
// opcDataLi, err := opcComRuleDao.SelectOPCJoinData(serialOrderStep.PO, serialOrderStep.StepNo)
// if err != nil {
// return nil, grmi.NewBusinessError("获取OPC通信规则数据失败,error:" + err.Error())
// }
// pos := 1
// for _, opc := range opcDataLi {
// op := model.SerialOrderOPDetail{
// SerialOrderId: serialOrderStep.SerialOrderId,
// PO: serialOrderStep.PO,
// SubArtId: serialOrderStep.SubArtId,
// Pos: pos,
// StepType: model.STEP_OPC_RULE,
// Status: baseModel.WO_STATUS_LOCKED,
// StepNo: serialOrderStep.StepNo,
// // OPC STEP DESC
// CharPara1: opc.OPCComRule.StepDesc,
// // OPC BRAND NAME
// CharPara2: opc.OPCBasicComInfo.BrandName,
// // OPC MACHINE TYPE
// CharPara3: opc.OPCBasicComInfo.MachineType,
// // OPC IP ADDRESS
// CharPara4: opc.OPCBasicComInfo.IpAddress,
// // OPC ACTION TYPE
// CharPara5: opc.OPCComRule.ActionType,
// // OPC DBLOCK ADDRESS
// CharPara6: opc.OPCComRule.DBlockAddress,
// // OPC DBLOCK VALUE TYPE
// CharPara7: opc.OPCComRule.DBlockValueType,
// // OPC DBLOCK VALUE
// CharPara8: opc.OPCComRule.DBlockValue,
// // OPC STEP NO
// IntPara1: opc.OPCComRule.StepNo,
// // OPC RULE ID
// IntPara2: opc.OPCComRule.RuleId,
// }
// pos++
// err = serialOrderDetailDao.InsertOne(&op)
// if err != nil {
// _ = session.Rollback()
// return nil, grmi.NewBusinessError("插入操作明细记录失败,error:" + err.Error())
// }
// }
//
//}

Loading…
Cancel
Save