|
|
@ -18,8 +18,6 @@ import ( |
|
|
|
eolModel "LAPP_ACURA_MOM_BACKEND/models/eol" |
|
|
|
meModel "LAPP_ACURA_MOM_BACKEND/models/me" |
|
|
|
model "LAPP_ACURA_MOM_BACKEND/models/om" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/utils" |
|
|
|
"fmt" |
|
|
|
"github.com/go-xorm/xorm" |
|
|
|
"strconv" |
|
|
|
"strings" |
|
|
@ -3275,132 +3273,6 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa |
|
|
|
} |
|
|
|
if needEOL { |
|
|
|
// 电检 主驾和副驾需要查询EOLDR 和 EOLPA 两张表 后排 查询EOLBR
|
|
|
|
//var poOperationData model.POOperationData
|
|
|
|
//poOperationData.PO = "电检"
|
|
|
|
//poOperationData.Status = "成功"
|
|
|
|
//poOperationData.RecvDataLi = make([]model.RecvDataItem, 0)
|
|
|
|
//eolEngine := db.Eloquent.Slaves()[0]
|
|
|
|
//eolSession := eolEngine.NewSession()
|
|
|
|
//eolDrDao := eolDal.NewEOLDRDAO(eolSession, user.UserId)
|
|
|
|
//eolPaDao := eolDal.NewEOLPADAO(eolSession, user.UserId)
|
|
|
|
//eolBrDao := eolDal.NewEOLBRDAO(eolSession, user.UserId)
|
|
|
|
//productDao := meDal.NewProductDAO(session, user.PlantNr, user.UserId)
|
|
|
|
//// 查询工单是否有返修记录 如果有返修记录 需要在返修记录后有电检数据
|
|
|
|
//var repairFlag bool
|
|
|
|
//var repairTime time.Time
|
|
|
|
//repairInfoDao := baseDal.NewRepairInfoDAO(session, user.UserId)
|
|
|
|
//repairInfoLi, err := repairInfoDao.Select([]grmi.Predicate{
|
|
|
|
// baseMeta.RepairInfo_SerialOrderId.NewPredicate(grmi.Equal, serialOrderId),
|
|
|
|
//}, []grmi.Field{baseMeta.RepairInfo_CreateTime})
|
|
|
|
//if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询工单返修记录失败, 错误:" + err.Error())
|
|
|
|
//}
|
|
|
|
//if len(repairInfoLi) != 0 {
|
|
|
|
// repairFlag = true
|
|
|
|
// repairTime = repairInfoLi[len(repairInfoLi)-1].CreateTime.Restore()
|
|
|
|
//}
|
|
|
|
//product, err := productDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId)
|
|
|
|
//if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询工单总成信息失败, 错误:" + err.Error())
|
|
|
|
//}
|
|
|
|
//if product == nil {
|
|
|
|
// return nil, grmi.NewBusinessError("工单总成数据不存在")
|
|
|
|
//}
|
|
|
|
//eolResultLi := make([]interface{}, 0)
|
|
|
|
//if product.CtrlStr1 == meModel.PRODUCT_TYPE_MS || product.CtrlStr1 == meModel.PRODUCT_TYPE_PS {
|
|
|
|
//
|
|
|
|
// drLi, err := eolDrDao.Select([]grmi.Predicate{eolMeta.EOLDR_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil)
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error())
|
|
|
|
// }
|
|
|
|
// paLi, err := eolPaDao.Select([]grmi.Predicate{eolMeta.EOLPA_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil)
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error())
|
|
|
|
// }
|
|
|
|
// for _, item := range drLi {
|
|
|
|
// eolResultLi = append(eolResultLi, item)
|
|
|
|
// }
|
|
|
|
// for _, item := range paLi {
|
|
|
|
// eolResultLi = append(eolResultLi, item)
|
|
|
|
// }
|
|
|
|
//} else {
|
|
|
|
// brLi, err := eolBrDao.Select([]grmi.Predicate{eolMeta.EOLBR_CODE.NewPredicate(grmi.Equal, serialOrderId)}, nil)
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error())
|
|
|
|
// }
|
|
|
|
// for _, item := range brLi {
|
|
|
|
// eolResultLi = append(eolResultLi, item)
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
//
|
|
|
|
//if len(eolResultLi) == 0 {
|
|
|
|
// recvData := model.RecvDataItem{
|
|
|
|
// SerialOrderId: serialOrderId,
|
|
|
|
// ArtId: "",
|
|
|
|
// PO: "EOL",
|
|
|
|
// OperationDesc: "电检",
|
|
|
|
// RecvData: "",
|
|
|
|
// Status: "失败",
|
|
|
|
// Remark1: "未查询到电检数据",
|
|
|
|
// }
|
|
|
|
// poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData)
|
|
|
|
// poOperationData.Status = "失败"
|
|
|
|
//} else {
|
|
|
|
// err = impl.QuickSort(eolResultLi)
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, err
|
|
|
|
// }
|
|
|
|
// fmt.Println("eolResultLi:", eolResultLi)
|
|
|
|
// lastRecord := eolResultLi[len(eolResultLi)-1]
|
|
|
|
// var recordTime time.Time
|
|
|
|
// var recordResult string
|
|
|
|
// drData, ok := lastRecord.(eolModel.EOLDR)
|
|
|
|
// if ok {
|
|
|
|
// recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation)
|
|
|
|
// recordResult = drData.TOTALRESULT
|
|
|
|
// } else {
|
|
|
|
// paData, ok := lastRecord.(eolModel.EOLPA)
|
|
|
|
// if ok {
|
|
|
|
// recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation)
|
|
|
|
// recordResult = paData.TOTALRESULT
|
|
|
|
// } else {
|
|
|
|
// brData, ok := lastRecord.(eolModel.EOLBR)
|
|
|
|
// if ok {
|
|
|
|
// recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation)
|
|
|
|
// recordResult = brData.TOTALRESULT
|
|
|
|
// } else {
|
|
|
|
// return nil, grmi.NewBusinessError("电检数据格式错误")
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// var status string = "成功"
|
|
|
|
// var remark string = "已通过电检"
|
|
|
|
// if repairFlag {
|
|
|
|
// if recordTime.Before(repairTime) {
|
|
|
|
// status = "失败"
|
|
|
|
// result.Status = false
|
|
|
|
// remark = "线上返修之后未进行电检"
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// if recordResult != "OK" {
|
|
|
|
// status = "失败"
|
|
|
|
// result.Status = false
|
|
|
|
// remark = "电检不合格"
|
|
|
|
// }
|
|
|
|
// recvData := model.RecvDataItem{
|
|
|
|
// SerialOrderId: serialOrderId,
|
|
|
|
// ArtId: "",
|
|
|
|
// PO: "EOL",
|
|
|
|
// OperationDesc: "电检",
|
|
|
|
// RecvData: "",
|
|
|
|
// Status: status,
|
|
|
|
// Remark1: remark,
|
|
|
|
// ExecuteTime: recordTime.Format(grmi.DateTimeOutFormat),
|
|
|
|
// }
|
|
|
|
// poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData)
|
|
|
|
//}
|
|
|
|
//result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData)
|
|
|
|
eolStatus, remark, recordTime, err := impl.ExtractEOL(session, user, serialOrder) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
@ -3531,14 +3403,24 @@ func (impl *SerialOrderServiceImplement) ExtractEOL(session *xorm.Session, user |
|
|
|
|
|
|
|
// GetSerialOrderOperationTraceData 工单数据追溯
|
|
|
|
func (impl *SerialOrderServiceImplement) GetSerialOrderOperationTraceData(user *global.User, serialOrderId string) (interface{}, error) { |
|
|
|
var totalResult = &model.TraceData{ |
|
|
|
BarCode: serialOrderId, |
|
|
|
Status: true, |
|
|
|
} |
|
|
|
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()) |
|
|
@ -3546,12 +3428,7 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationTraceData(user * |
|
|
|
if serialOrder == nil { |
|
|
|
return nil, grmi.NewBusinessError("工单不存在, 工单ID:" + serialOrderId) |
|
|
|
} |
|
|
|
var traceOrderId string |
|
|
|
if serialOrder.OriginSerialOrderId != "" { |
|
|
|
traceOrderId = serialOrder.OriginSerialOrderId |
|
|
|
} else { |
|
|
|
traceOrderId = serialOrder.SerialOrderId |
|
|
|
} |
|
|
|
|
|
|
|
articleDao := baseDal.NewArticleDAO(session, user.PlantNr, user.UserId) |
|
|
|
article, err := articleDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId) |
|
|
|
if err != nil { |
|
|
@ -3562,7 +3439,6 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationTraceData(user * |
|
|
|
} |
|
|
|
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()) |
|
|
@ -3570,215 +3446,171 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationTraceData(user * |
|
|
|
for _, attributeItem := range attributeLi { |
|
|
|
if attributeItem.Attribute.Descr == "EOL" { |
|
|
|
needEOL = true |
|
|
|
} else if attributeItem.Attribute.Descr == "SBR检测" { |
|
|
|
needSBR = true |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
serialOrderIdLi := make([]string, 0) |
|
|
|
totalResult.Desc = article.Descr1 |
|
|
|
totalResult.IsFirstPiece = serialOrder.IsFirstPieceToggle |
|
|
|
// 所有工单ID
|
|
|
|
allOrderIdLi := make([]interface{}, 0) |
|
|
|
if serialOrder.OriginSerialOrderId != "" { |
|
|
|
allSerialOrder, err := serialOrderDao.Select([]grmi.Predicate{ |
|
|
|
subSerialOrderLi, err := serialOrderDao.Select([]grmi.Predicate{ |
|
|
|
meta.SerialOrder_SerialOrderId.NewPredicate(grmi.NotEqual, serialOrderId), |
|
|
|
meta.SerialOrder_OriginSerialOrderId.NewPredicate(grmi.Equal, serialOrder.OriginSerialOrderId), |
|
|
|
}, []grmi.Field{meta.SerialOrder_CreateTime}) |
|
|
|
}, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工单失败, 错误:" + err.Error()) |
|
|
|
return nil, grmi.NewBusinessError("查询工单数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
for _, innerOrder := range allSerialOrder { |
|
|
|
serialOrderIdLi = append(serialOrderIdLi, innerOrder.SerialOrderId) |
|
|
|
allOrderIdLi = append(allOrderIdLi, serialOrderId, serialOrder.OriginSerialOrderId) |
|
|
|
for _, subOrder := range subSerialOrderLi { |
|
|
|
allOrderIdLi = append(allOrderIdLi, subOrder.SerialOrderId) |
|
|
|
} |
|
|
|
} else { |
|
|
|
allOrderIdLi = append(allOrderIdLi, serialOrder.SerialOrderId) |
|
|
|
} |
|
|
|
serialOrderIdLi = append(serialOrderIdLi, serialOrderId) |
|
|
|
poDataLi, err := serialOrderPoDao.SelectWithPO(traceOrderId, serialOrder.UsedResourceId) |
|
|
|
|
|
|
|
allPoLi, err := serialOrderPoDao.SelectByOrderLi(allOrderIdLi, serialOrder.UsedResourceId) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工单工序操作数据失败, error:" + err.Error()) |
|
|
|
return nil, grmi.NewBusinessError("查询工序数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
var result model.TraceData |
|
|
|
result.Status = true |
|
|
|
result.BarCode = serialOrderId |
|
|
|
result.Desc = article.Descr1 |
|
|
|
result.IsFirstPiece = serialOrder.IsFirstPieceToggle |
|
|
|
displayPoLi := make([]string, 0) |
|
|
|
poStatusMap := make(map[string]string) |
|
|
|
for _, poData := range poDataLi { |
|
|
|
displayPoLi = append(displayPoLi, poData.Process.PO) |
|
|
|
if poData.Status == baseModel.WO_STATUS_FINISHED { |
|
|
|
poStatusMap[poData.Process.PO] = "成功" |
|
|
|
poMap := make(map[string]int) |
|
|
|
for _, poItem := range allPoLi { |
|
|
|
var status string |
|
|
|
if poItem.Status == baseModel.ORDER_STATUS_CLOSED { |
|
|
|
status = "成功" |
|
|
|
} else { |
|
|
|
poStatusMap[poData.Process.PO] = "失败" |
|
|
|
result.Status = false |
|
|
|
status = "失败" |
|
|
|
} |
|
|
|
_, 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, |
|
|
|
PoStatus: status, |
|
|
|
StepLi: make([]model.ProductTraceStepData, 0), |
|
|
|
} |
|
|
|
result.POLi = append(result.POLi, poData) |
|
|
|
} else { |
|
|
|
index := poMap[poItem.Process.PO] |
|
|
|
originPoData := result.POLi[index] |
|
|
|
originPoData.PoStatus = status |
|
|
|
result.POLi[index] = originPoData |
|
|
|
} |
|
|
|
} |
|
|
|
//// 查询工单产线
|
|
|
|
//workLineId := serialOrder.PlanResourceId
|
|
|
|
//// 通过产线查询生产工序
|
|
|
|
//workLineProcessDao := baseDal.NewWorkLineProcessLstDAO(session, user.PlantNr, user.UserId)
|
|
|
|
//poLi, err := workLineProcessDao.SelectProcessByWorkLine(workLineId)
|
|
|
|
//if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询产线生产工序失败, error:" + err.Error())
|
|
|
|
//}
|
|
|
|
//if len(poLi) <= 1 {
|
|
|
|
// return nil, grmi.NewBusinessError("生产工序少于2个")
|
|
|
|
//}
|
|
|
|
//poIdLi := make([]string, 0, len(poLi))
|
|
|
|
//for _, po := range poLi {
|
|
|
|
// if po.IsLastPO || po.IsLastPOForBK {
|
|
|
|
// continue
|
|
|
|
// }
|
|
|
|
// poIdLi = append(poIdLi, po.PO)
|
|
|
|
//}
|
|
|
|
//displayPoLi := poIdLi
|
|
|
|
|
|
|
|
// 查询工序关联的所有工位
|
|
|
|
processWorkPlaceDao := baseDal.NewProcessWorkPlaceLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
relateWorkPlaceLi, err := processWorkPlaceDao.SelectByProcess(displayPoLi) |
|
|
|
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("查询工序关联的工位失败, error:" + err.Error()) |
|
|
|
return nil, grmi.NewBusinessError("查询工步数据失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
workPlaceMap := make(map[int]string) |
|
|
|
ignorePOMap := make(map[string]interface{}) |
|
|
|
for _, relateDate := range relateWorkPlaceLi { |
|
|
|
if relateDate.WorkPlace.TriggerFrom == baseModel.TRIGGER_FROM_PICKING { |
|
|
|
ignorePOMap[relateDate.ProcessWorkPlaceLst.PO] = nil |
|
|
|
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) |
|
|
|
} |
|
|
|
workPlaceMap[relateDate.WorkPlace.WorkPlaceNr] = relateDate.WorkPlace.WorkPlaceId |
|
|
|
} |
|
|
|
//stepDao := dal.NewSerialOrderStepLstDAO(session, user.PlantNr, user.UserId)
|
|
|
|
//poIdLiInterface := make([]interface{}, 0, len(displayPoLi))
|
|
|
|
selectPoIdLi := make([]string, 0, len(displayPoLi)) |
|
|
|
for _, poId := range displayPoLi { |
|
|
|
_, exist := ignorePOMap[poId] |
|
|
|
if exist { |
|
|
|
|
|
|
|
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 |
|
|
|
} |
|
|
|
//poIdLiInterface = append(poIdLiInterface, poId)
|
|
|
|
selectPoIdLi = append(selectPoIdLi, poId) |
|
|
|
} |
|
|
|
|
|
|
|
//var result model.TraceData
|
|
|
|
//result.BarCode = serialOrderId
|
|
|
|
//result.Desc = article.Descr1
|
|
|
|
//result.Status = true
|
|
|
|
//result.IsFirstPiece = serialOrder.IsFirstPieceToggle
|
|
|
|
//result.TraceDataTraceData = make([]model.POOperationData, 0)
|
|
|
|
//poDataLi, err := serialOrderPoDao.Select([]grmi.Predicate{meta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Equal, serialOrderId), meta.SerialOrderPOLst_PO.NewPredicate(grmi.Include, poIdLiInterface...)}, nil)
|
|
|
|
//if err != nil {
|
|
|
|
// return nil, grmi.NewBusinessError("查询工单工序操作数据失败, error:" + err.Error())
|
|
|
|
//}
|
|
|
|
//poStatusMap := make(map[string]string)
|
|
|
|
//for _, poData := range poDataLi {
|
|
|
|
// if poData.Status == baseModel.WO_STATUS_FINISHED {
|
|
|
|
// poStatusMap[poData.PO] = "成功"
|
|
|
|
// } else {
|
|
|
|
// poStatusMap[poData.PO] = "失败"
|
|
|
|
// result.Status = false
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
// 通过工序和工单ID查询工步操作结果
|
|
|
|
opDao := dal.NewSerialOrderOPDetailRecvDataLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
stepKey := recvData.PO + "_" + strconv.Itoa(recvData.StepNo) |
|
|
|
stepIndex, exist := stepMap[stepKey] |
|
|
|
|
|
|
|
for _, poId := range selectPoIdLi { |
|
|
|
opLi, err := opDao.GetOpRecvDataByPO(traceOrderId, poId) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询工艺操作数据失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
var poOperationData model.POOperationData |
|
|
|
poOperationData.PO = poId |
|
|
|
poOperationData.Status = poStatusMap[poId] |
|
|
|
poOperationData.RecvDataLi = make([]model.RecvDataItem, 0) |
|
|
|
for _, opData := range opLi { |
|
|
|
var operationDesc string |
|
|
|
if opData.SerialOrderOPDetail.StepType == baseModel.STEP_OPC_RULE { |
|
|
|
operationDesc = opData.OPCComRule.DBlockDesc |
|
|
|
} else if opData.SerialOrderOPDetail.StepType == baseModel.STEP_TW_RULE { |
|
|
|
operationDesc = opData.TightenWrenchRuleInfo.StepDesc |
|
|
|
} else { |
|
|
|
operationDesc = opData.Operation.StepDesc |
|
|
|
} |
|
|
|
var status string |
|
|
|
if opData.SerialOrderOPDetailRecvDataLst.Status == 1 { |
|
|
|
status = "成功" |
|
|
|
} else { |
|
|
|
status = "失败" |
|
|
|
} |
|
|
|
recvData := model.RecvDataItem{ |
|
|
|
SerialOrderId: opData.SerialOrderOPDetailRecvDataLst.SerialOrderId, |
|
|
|
ArtId: opData.SerialOrderOPDetailRecvDataLst.SubArtId, |
|
|
|
PO: opData.SerialOrderOPDetailRecvDataLst.PO, |
|
|
|
OperationDesc: operationDesc, |
|
|
|
RecvData: opData.SerialOrderOPDetailRecvDataLst.RecvData, |
|
|
|
Status: status, |
|
|
|
Remark1: opData.SerialOrderOPDetailRecvDataLst.Remark1, |
|
|
|
ExecuteTime: opData.SerialOrderOPDetailRecvDataLst.CreateTime.ToString(), |
|
|
|
} |
|
|
|
poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) |
|
|
|
if !exist { |
|
|
|
continue |
|
|
|
} |
|
|
|
result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData) |
|
|
|
result.POLi[poIndex].StepLi[stepIndex].RecvDataLi = append(result.POLi[poIndex].StepLi[stepIndex].RecvDataLi, recvData) |
|
|
|
} |
|
|
|
if needEOL { |
|
|
|
for _, poData := range result.POLi { |
|
|
|
var poOperationData model.POOperationData |
|
|
|
poOperationData.PO = "电检" |
|
|
|
poOperationData.Status = "成功" |
|
|
|
poOperationData.RecvDataLi = make([]model.RecvDataItem, 0) |
|
|
|
eolEngine := db.Eloquent.Slaves()[0] |
|
|
|
eolSession := eolEngine.NewSession() |
|
|
|
eolResult, err := eolSession.SQL(fmt.Sprintf(`select * from Test_Data where 条码 = '%s' order by 测试完成日期, 测试完成时间`, serialOrderId)).QueryString() |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("查询电检结果失败, error:" + err.Error()) |
|
|
|
poOperationData.PO = poData.PO |
|
|
|
poOperationData.Status = poData.PoStatus |
|
|
|
if poData.PoStatus == "失败" { |
|
|
|
totalResult.Status = false |
|
|
|
} |
|
|
|
if len(eolResult) == 0 { |
|
|
|
recvData := model.RecvDataItem{ |
|
|
|
SerialOrderId: serialOrderId, |
|
|
|
ArtId: "", |
|
|
|
PO: "EOL", |
|
|
|
OperationDesc: "电检", |
|
|
|
RecvData: "", |
|
|
|
Status: "失败", |
|
|
|
Remark1: "未查询到电检数据", |
|
|
|
} |
|
|
|
poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) |
|
|
|
} else { |
|
|
|
for _, opData := range eolResult { |
|
|
|
var executeTime time.Time |
|
|
|
executeTimeStr := opData["测试完成日期"] + " " + opData["测试完成时间"] |
|
|
|
executeTime, err = time.ParseInLocation(executeTimeStr, grmi.DateTimeOutFormat, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
executeTime = time.Time{} |
|
|
|
} |
|
|
|
for _, stepData := range poData.StepLi { |
|
|
|
for _, recvItem := range stepData.RecvDataLi { |
|
|
|
var status string |
|
|
|
var remark string |
|
|
|
operateResult, exists := opData["测试结果(P/F)"] |
|
|
|
if !exists { |
|
|
|
status = "失败" |
|
|
|
poOperationData.Status = "失败" |
|
|
|
remark = "未获取到检测结果" |
|
|
|
if recvItem.Status == 1 { |
|
|
|
status = "成功" |
|
|
|
} else { |
|
|
|
if operateResult == "P" { |
|
|
|
status = "成功" |
|
|
|
} else { |
|
|
|
status = "失败" |
|
|
|
poOperationData.Status = "失败" |
|
|
|
remark = "检测结果未通过" |
|
|
|
} |
|
|
|
status = "失败" |
|
|
|
} |
|
|
|
recvData := model.RecvDataItem{ |
|
|
|
SerialOrderId: serialOrderId, |
|
|
|
ArtId: "", |
|
|
|
PO: "EOL", |
|
|
|
OperationDesc: "电检", |
|
|
|
RecvData: operateResult, |
|
|
|
SerialOrderId: recvItem.SerialOrderId, |
|
|
|
ArtId: recvItem.SubArtId, |
|
|
|
PO: recvItem.PO, |
|
|
|
OperationDesc: stepData.StepDesc, |
|
|
|
RecvData: recvItem.RecvData, |
|
|
|
Status: status, |
|
|
|
Remark1: remark, |
|
|
|
ExecuteTime: executeTime.Format(grmi.DateTimeOutFormat), |
|
|
|
Remark1: recvItem.Remark1, |
|
|
|
ExecuteTime: recvItem.CreateTime.ToString(), |
|
|
|
} |
|
|
|
poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) |
|
|
|
} |
|
|
|
} |
|
|
|
result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData) |
|
|
|
totalResult.TraceDataTraceData = append(totalResult.TraceDataTraceData, poOperationData) |
|
|
|
} |
|
|
|
if needSBR { |
|
|
|
if needEOL { |
|
|
|
var poOperationData model.POOperationData |
|
|
|
poOperationData.PO = "电检" |
|
|
|
// 电检 主驾和副驾需要查询EOLDR 和 EOLPA 两张表 后排 查询EOLBR
|
|
|
|
eolStatus, remark, recordTime, err := impl.ExtractEOL(session, user, serialOrder) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
if eolStatus { |
|
|
|
poOperationData.Status = "成功" |
|
|
|
} else { |
|
|
|
poOperationData.Status = "失败" |
|
|
|
totalResult.Status = false |
|
|
|
} |
|
|
|
recvData := model.RecvDataItem{ |
|
|
|
SerialOrderId: serialOrderId, |
|
|
|
ArtId: "", |
|
|
|
PO: "EOL", |
|
|
|
OperationDesc: "电检", |
|
|
|
Status: poOperationData.Status, |
|
|
|
RecvData: "", |
|
|
|
Remark1: remark, |
|
|
|
ExecuteTime: recordTime.Format(grmi.DateTimeOutFormat), |
|
|
|
} |
|
|
|
|
|
|
|
poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) |
|
|
|
totalResult.TraceDataTraceData = append(totalResult.TraceDataTraceData, poOperationData) |
|
|
|
if eolStatus { |
|
|
|
serialOrder.EOLCheck = model.EOL_STATUS_OK |
|
|
|
} else { |
|
|
|
serialOrder.EOLCheck = model.EOL_STATUS_NG |
|
|
|
} |
|
|
|
err = serialOrderDao.UpdateOne(serialOrder) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("将电检结果保存到工单上失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
return totalResult, nil |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|