|
|
@ -1536,21 +1536,21 @@ func (impl *SerialOrderServiceImplement) PrintRuleInfo(user *global.User, sessio |
|
|
|
serialOrderDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.PlantNr, user.UserId) |
|
|
|
var qty = 1 |
|
|
|
var collectScanBarcode = false |
|
|
|
var labelDetailPos = 0 |
|
|
|
var scanStepNo = 0 |
|
|
|
var scanPo = "" |
|
|
|
var labelDetailPos string |
|
|
|
var scanOperationId = 0 |
|
|
|
var scanPo string |
|
|
|
if rule != nil { |
|
|
|
qty = rule.Qty |
|
|
|
collectScanBarcode = rule.CollectScanBarcode |
|
|
|
labelDetailPos = rule.LabelDetailPos |
|
|
|
scanOperationId = rule.ScanOperationId |
|
|
|
scanPo = rule.ScanPo |
|
|
|
scanStepNo = rule.ScanStepNo |
|
|
|
|
|
|
|
} |
|
|
|
// FlagPara1 标识是不是根据扫码更新打印数据 1为需要
|
|
|
|
// CharPara1 扫码的工序
|
|
|
|
// CharPara2 插入打印模板子项索引 多个用;分割
|
|
|
|
// IntPara2 扫码的步骤
|
|
|
|
// IntPara3 labelDetail的pos
|
|
|
|
|
|
|
|
// 生成打印规则
|
|
|
|
op := model.SerialOrderOPDetail{ |
|
|
|
SerialOrderId: serialOrderStep.SerialOrderId, |
|
|
@ -1563,9 +1563,9 @@ func (impl *SerialOrderServiceImplement) PrintRuleInfo(user *global.User, sessio |
|
|
|
StepNo: serialOrderStep.StepNo, |
|
|
|
BKFlag: bkFlag, |
|
|
|
IntPara1: qty, |
|
|
|
IntPara2: scanStepNo, |
|
|
|
IntPara3: labelDetailPos, |
|
|
|
IntPara2: scanOperationId, |
|
|
|
CharPara1: scanPo, |
|
|
|
CharPara2: labelDetailPos, |
|
|
|
FlagPara1: collectScanBarcode, |
|
|
|
} |
|
|
|
err = serialOrderDetailDao.InsertOne(&op) |
|
|
@ -1574,7 +1574,7 @@ func (impl *SerialOrderServiceImplement) PrintRuleInfo(user *global.User, sessio |
|
|
|
} |
|
|
|
// 生成打印模板数据
|
|
|
|
if rule != nil { |
|
|
|
labelId := serialOrderStep.SerialOrderId + "_" + "Generate" |
|
|
|
labelId := serialOrderStep.SerialOrderId + "_" + serialOrderStep.PO + strconv.Itoa(serialOrderStep.StepNo) |
|
|
|
labelHead := baseModel.LabelHead{ |
|
|
|
LabelId: labelId, |
|
|
|
LabelTemplateId: printTemplate.LabelTemplateId, |
|
|
@ -2851,10 +2851,10 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
} |
|
|
|
if orderOPData.Config.BarCodeRule == baseModel.BARCODE_RULE_ACURA_PRE { |
|
|
|
|
|
|
|
number, err := snrDao.GetNextSnr(project.PreOrderSnr) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("获取流水号失败,错误:" + err.Error()) |
|
|
|
} |
|
|
|
number, err := snrDao.GetNextSnr(project.PreOrderSnr) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("获取流水号失败,错误:" + err.Error()) |
|
|
|
} |
|
|
|
|
|
|
|
serialOrderId = strings.Replace(orderOPData.SFP.ArtId, "-", "", -1) + today + number |
|
|
|
} else { |
|
|
@ -4140,3 +4140,132 @@ func (impl *SerialOrderServiceImplement) ExportTraceSubArticleBatch(user *global |
|
|
|
return filepath, err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// GetProductTraceDataReport 工单数据追溯
|
|
|
|
func (impl *SerialOrderServiceImplement) GetProductTraceDataReport(user *global.User, serialOrderId string) (interface{}, error) { |
|
|
|
engine := db.Eloquent.Master() |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
result := model.ProductTraceData{ |
|
|
|
SerialOrderId: serialOrderId, |
|
|
|
POLi: make([]model.ProductTracePOData, 0), |
|
|
|
} |
|
|
|
// 1. 查询工单
|
|
|
|
// 2. 通过工单查询生产的产线
|
|
|
|
// 4. 通过工序查询当前工序生成工步结果
|
|
|
|
serialOrderDao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
serialOrderPoDao := dal.NewSerialOrderPOLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
serialOrderStepDao := dal.NewSerialOrderStepLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
recvDataDao := dal.NewSerialOrderOPDetailRecvDataLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
serialOrder, err := serialOrderDao.SelectOne(serialOrderId) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工单失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
if serialOrder == nil { |
|
|
|
return nil, grmi.NewBusinessError("工单不存在, 工单ID:" + serialOrderId) |
|
|
|
} |
|
|
|
// 所有工单ID
|
|
|
|
allOrderIdLi := make([]interface{}, 0) |
|
|
|
if serialOrder.OriginSerialOrderId != "" { |
|
|
|
subSerialOrderLi, err := serialOrderDao.Select([]grmi.Predicate{ |
|
|
|
meta.SerialOrder_SerialOrderId.NewPredicate(grmi.NotEqual, serialOrderId), |
|
|
|
meta.SerialOrder_OriginSerialOrderId.NewPredicate(grmi.Equal, serialOrder.OriginSerialOrderId), |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工单数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
allOrderIdLi = append(allOrderIdLi, serialOrderId, serialOrder.OriginSerialOrderId) |
|
|
|
for _, subOrder := range subSerialOrderLi { |
|
|
|
allOrderIdLi = append(allOrderIdLi, subOrder.SerialOrderId) |
|
|
|
} |
|
|
|
} else { |
|
|
|
allOrderIdLi = append(allOrderIdLi, serialOrder.SerialOrderId) |
|
|
|
} |
|
|
|
|
|
|
|
articleDao := baseDal.NewArticleDAO(session, user.PlantNr, user.UserId) |
|
|
|
article, err := articleDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工单总成数据失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
if article == nil { |
|
|
|
return nil, grmi.NewBusinessError("工单绑定总成不存在, 总成ID:" + serialOrder.ArtId) |
|
|
|
} |
|
|
|
//articleAtocdDao := baseDal.NewArticleAtcodLstDAO(session, user.PlantNr, user.UserId)
|
|
|
|
//var needEOL bool
|
|
|
|
//var needSBR bool
|
|
|
|
//attributeLi, err := articleAtocdDao.SelectByArtId(serialOrder.ArtId)
|
|
|
|
//if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询总成关联属性失败, error:" + err.Error())
|
|
|
|
//}
|
|
|
|
//for _, attributeItem := range attributeLi {
|
|
|
|
// if attributeItem.Attribute.Descr == "EOL" {
|
|
|
|
// needEOL = true
|
|
|
|
// } else if attributeItem.Attribute.Descr == "SBR检测" {
|
|
|
|
// needSBR = true
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
allPoLi, err := serialOrderPoDao.SelectByOrderLi(allOrderIdLi, serialOrder.UsedResourceId) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工序数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
poMap := make(map[string]int) |
|
|
|
for _, poItem := range allPoLi { |
|
|
|
_, exist := poMap[poItem.Process.PO] |
|
|
|
if !exist { |
|
|
|
poMap[poItem.Process.PO] = len(result.POLi) |
|
|
|
poData := model.ProductTracePOData{ |
|
|
|
PO: poItem.Process.PO, |
|
|
|
PoDesc: poItem.Process.Descr, |
|
|
|
StepLi: make([]model.ProductTraceStepData, 0), |
|
|
|
} |
|
|
|
result.POLi = append(result.POLi, poData) |
|
|
|
} |
|
|
|
} |
|
|
|
stepLi, err := serialOrderStepDao.Select([]grmi.Predicate{ |
|
|
|
meta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Include, allOrderIdLi...), |
|
|
|
}, []grmi.Field{meta.SerialOrderStepLst_StepNo}) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工步数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
stepMap := make(map[string]int) |
|
|
|
for _, stepItem := range stepLi { |
|
|
|
mapKey := stepItem.PO + "_" + strconv.Itoa(stepItem.StepNo) |
|
|
|
_, exist := stepMap[mapKey] |
|
|
|
if !exist { |
|
|
|
poIndex := poMap[stepItem.PO] |
|
|
|
stepMap[mapKey] = len(result.POLi[poIndex].StepLi) |
|
|
|
stepData := model.ProductTraceStepData{ |
|
|
|
StepNo: stepItem.StepNo, |
|
|
|
StepDesc: stepItem.StepDesc, |
|
|
|
RecvDataLi: make([]model.SerialOrderOPDetailRecvDataLst, 0), |
|
|
|
} |
|
|
|
result.POLi[poIndex].StepLi = append(result.POLi[poIndex].StepLi, stepData) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
recvDataLi, err := recvDataDao.Select([]grmi.Predicate{ |
|
|
|
meta.SerialOrderOPDetailRecvDataLst_SerialOrderId.NewPredicate(grmi.Include, allOrderIdLi...), |
|
|
|
}, []grmi.Field{ |
|
|
|
meta.SerialOrderOPDetailRecvDataLst_SerialOrderId, |
|
|
|
meta.SerialOrderOPDetailRecvDataLst_PO, |
|
|
|
meta.SerialOrderOPDetailRecvDataLst_StepNo, |
|
|
|
meta.SerialOrderOPDetailRecvDataLst_OriginRuleId, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询生产数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
for _, recvData := range recvDataLi { |
|
|
|
poIndex, exist := poMap[recvData.PO] |
|
|
|
if !exist { |
|
|
|
continue |
|
|
|
} |
|
|
|
stepKey := recvData.PO + "_" + strconv.Itoa(recvData.StepNo) |
|
|
|
stepIndex, exist := stepMap[stepKey] |
|
|
|
|
|
|
|
if !exist { |
|
|
|
continue |
|
|
|
} |
|
|
|
result.POLi[poIndex].StepLi[stepIndex].RecvDataLi = append(result.POLi[poIndex].StepLi[stepIndex].RecvDataLi, recvData) |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} |