Browse Source

Merge pull request '添加对工单电检的处理' (#186) from feature_om into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_Acura_MES_Backend/pulls/186
pull/187/head
娄文智 2 years ago
parent
commit
0bb54d49ed
8 changed files with 309 additions and 126 deletions
  1. +3
    -1
      meta/om/SerialOrder.meta.go
  2. +1
    -0
      models/om/SerialOrder.model.go
  3. +3
    -0
      models/om/const.go
  4. +4
    -0
      services/jit/implments/PackOrder.service.impl.go
  5. +4
    -0
      services/jit/implments/ShipOrder.service.impl.go
  6. +2
    -0
      services/om/SerialOrder.service.go
  7. +245
    -112
      services/om/implments/SerialOrder.service.impl.go
  8. +47
    -13
      services/qm/implments/ReclinerReclst.service.impl.go

+ 3
- 1
meta/om/SerialOrder.meta.go View File

@ -59,6 +59,7 @@ var SerialOrder_CtrlStr1 = grmi.NewField("CtrlStr1", "[OM_SerialOrder].CtrlStr1"
var SerialOrder_CtrlStr2 = grmi.NewField("CtrlStr2", "[OM_SerialOrder].CtrlStr2", "ctrlstr2", grmi.TypeString)
var SerialOrder_QualityCheck = grmi.NewField("QualityCheck", "[OM_SerialOrder].QualityCheck", "qualitycheck", grmi.TypeString)
var SerialOrder_QualityCheckTime = grmi.NewField("QualityCheckTime", "[OM_SerialOrder].QualityCheckTime", "qualitychecktime", grmi.TypeDateTime)
var SerialOrder_EOLCheck = grmi.NewField("EOLCheck", "[OM_SerialOrder].EOLCheck", "eolcheck", grmi.TypeDateTime)
var SerialOrder_MainOrderId = grmi.NewField("MainOrderId", "[OM_SerialOrder].MainOrderId", "mainorderid", grmi.TypeString)
var SerialOrder_CtrlTime1 = grmi.NewField("CtrlTime1", "[OM_SerialOrder].CtrlTime1", "ctrltime1", grmi.TypeDateTime)
var SerialOrder_CtrlTime2 = grmi.NewField("CtrlTime2", "[OM_SerialOrder].CtrlTime2", "ctrltime2", grmi.TypeDateTime)
@ -125,9 +126,10 @@ var SerialOrder = grmi.NewEntity(
SerialOrder_MainOrderId.Name: SerialOrder_MainOrderId,
SerialOrder_CtrlTime1.Name: SerialOrder_CtrlTime1,
SerialOrder_CtrlTime2.Name: SerialOrder_CtrlTime2,
SerialOrder_EOLCheck.Name: SerialOrder_EOLCheck,
SerialOrder_LastModify.Name: SerialOrder_LastModify,
SerialOrder_LastUser.Name: SerialOrder_LastUser,
SerialOrder_CreateTime.Name: SerialOrder_CreateTime,
},
[]string{"PlantNr"},
[]string{"ArtId", "ProjectId", "LinkSerialOrderId", "QualityCheck", "GenerateFlag", "OriginSerialOrderId", "Descr", "WorkOrderId", "CustOrderId", "FirstPieceInBatch", "LastPieceInBatch", "PreSchedKey", "SchedKey", "Priority", "OrderType", "OrderType1", "OrderType2", "PlanResourceId", "UsedResourceId", "PlanQty", "QtyUomId", "OpTimePerItem", "TimeUomId", "PlanStartDate", "PlanEndDate", "SetupStartTime", "SetupEndTime", "PlanStartTime", "PlanEndTime", "ActStartTime", "ActEndTime", "PickingFlag", "IsFirstPieceToggle", "SyncKey", "BackFlushFlag", "RepairFlag", "QualityCheckTime", "MainOrderId", "CtrlPara1", "CtrlPara2", "CtrlStr1", "CtrlStr2", "CtrlTime1", "CtrlTime2", "LastUser"})
[]string{"ArtId", "ProjectId", "LinkSerialOrderId", "QualityCheck", "GenerateFlag", "OriginSerialOrderId", "Descr", "WorkOrderId", "CustOrderId", "FirstPieceInBatch", "LastPieceInBatch", "PreSchedKey", "SchedKey", "Priority", "OrderType", "OrderType1", "OrderType2", "PlanResourceId", "UsedResourceId", "PlanQty", "QtyUomId", "OpTimePerItem", "TimeUomId", "PlanStartDate", "PlanEndDate", "SetupStartTime", "SetupEndTime", "PlanStartTime", "PlanEndTime", "ActStartTime", "ActEndTime", "PickingFlag", "IsFirstPieceToggle", "SyncKey", "BackFlushFlag", "RepairFlag", "QualityCheckTime", "MainOrderId", "EOLCheck", "CtrlPara1", "CtrlPara2", "CtrlStr1", "CtrlStr2", "CtrlTime1", "CtrlTime2", "LastUser"})

+ 1
- 0
models/om/SerialOrder.model.go View File

@ -69,6 +69,7 @@ type SerialOrder struct {
QualityCheck string `xorm:"nvarchar(16) 'QualityCheck' not null" json:"OM_SerialOrder-QualityCheck"`
QualityCheckTime grmi.DateTime `xorm:"datetime 'QualityCheckTime'" json:"OM_SerialOrder-QualityCheckTime"`
MainOrderId string `xorm:"nvarchar(40) 'MainOrderId' not null" json:"OM_SerialOrder-MainOrderId"`
EOLCheck string `xorm:"nvarchar(40) 'EOLCheck' not null" json:"OM_SerialOrder-EOLCheck"`
SerialOrderStatus SerialOrderStatus `json:"OM_SerialOrder-SerialOrderStatus" xorm:"-"`
}


+ 3
- 0
models/om/const.go View File

@ -37,4 +37,7 @@ const (
ORDER_FAILED = "ORDER_FAILED"
ORDER_UNDEALED = 0
ORDER_DEALED = 1
EOL_STATUS_OK = "OK"
EOL_STATUS_NG = "NG"
)

+ 4
- 0
services/jit/implments/PackOrder.service.impl.go View File

@ -18,6 +18,7 @@ import (
baseModel "LAPP_ACURA_MOM_BACKEND/models/base"
model "LAPP_ACURA_MOM_BACKEND/models/jit"
meModel "LAPP_ACURA_MOM_BACKEND/models/me"
omModel "LAPP_ACURA_MOM_BACKEND/models/om"
plnModel "LAPP_ACURA_MOM_BACKEND/models/pln"
"LAPP_ACURA_MOM_BACKEND/utils"
"encoding/hex"
@ -1446,6 +1447,9 @@ func (impl *PackOrderServiceImplement) ScanBarcodeOutLine(user *global.User, bar
if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK {
return nil, grmi.NewBusinessError("工单目检结果不符合要求")
}
if serialOrder.EOLCheck == omModel.EOL_STATUS_NG {
return nil, grmi.NewBusinessError("工单电检不合格")
}
// 获取用户之前是否存在未关包的包装单 如果存在则使用之前的包装单ID 如果不存在则创建包装单 如果超过一个则报错
var packOrderId string
packOrderLi, err := packOrderDao.SelectUserRunningPackOrder(user.UserId, model.PACK_LOCATION_OUT_LINE)


+ 4
- 0
services/jit/implments/ShipOrder.service.impl.go View File

@ -16,6 +16,7 @@ import (
meta "LAPP_ACURA_MOM_BACKEND/meta/jit"
baseModel "LAPP_ACURA_MOM_BACKEND/models/base"
model "LAPP_ACURA_MOM_BACKEND/models/jit"
omModel "LAPP_ACURA_MOM_BACKEND/models/om"
"LAPP_ACURA_MOM_BACKEND/utils"
json "github.com/json-iterator/go"
"github.com/kataras/iris/v12"
@ -838,6 +839,9 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st
if serialOrder.RepairFlag {
return nil, grmi.NewBusinessError("工单是线上返修工单, 工单ID:" + packOrderItem.SerialOrderId)
}
if serialOrder.EOLCheck == omModel.EOL_STATUS_NG {
return nil, grmi.NewBusinessError("工单电检不合格, 工单ID:" + packOrderItem.SerialOrderId)
}
if serialOrder.QualityCheck != baseModel.QualityCheck_STATUS_OK {
return nil, grmi.NewBusinessError("工单目检结果不符合要求")
}


+ 2
- 0
services/om/SerialOrder.service.go View File

@ -10,6 +10,7 @@ import (
model "LAPP_ACURA_MOM_BACKEND/models/om"
"LAPP_ACURA_MOM_BACKEND/services/om/implments"
"github.com/go-xorm/xorm"
"time"
)
/******************************************************************************
@ -511,6 +512,7 @@ type SerialOrderService interface {
GuideRuleInfo(user *global.User, session *xorm.Session, guideRule *baseModel.GuideRuleInfo, serialOrderStep *model.SerialOrderStepLst, bkFlag bool) error
PrintRuleInfo(user *global.User, session *xorm.Session, serialOrderStep *model.SerialOrderStepLst, rule *baseModel.PrintBasicRuleInfo, printTemplate *baseModel.LabelTemplateHead, article *baseModel.Article, bkFlag bool) error
ExtractArtId(bomHead *meModel.BomHead) map[string]int
ExtractEOL(session *xorm.Session, user *global.User, serialOrder *model.SerialOrder) (status bool, remark string, recordT time.Time, err error)
CreateBatchSerialOrder(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int) error
TraceSubArticleBatch(user *global.User, barcode string, paging *grmi.Paging) (grmi.PagingResult, error)
ExportTraceSubArticleBatch(user *global.User, barcode string) (string, error)


+ 245
- 112
services/om/implments/SerialOrder.service.impl.go View File

@ -77,6 +77,7 @@ var DefaultConditionOfSerialOrder = grmi.NewCondition(
meta.SerialOrder_QualityCheck.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_QualityCheck, grmi.Equal, false),
meta.SerialOrder_QualityCheckTime.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_QualityCheckTime, grmi.Equal, false),
meta.SerialOrder_MainOrderId.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_MainOrderId, grmi.Equal, false),
meta.SerialOrder_EOLCheck.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_EOLCheck, grmi.Equal, false),
meta.SerialOrder_CtrlTime1.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_CtrlTime1, grmi.Approximate, false),
meta.SerialOrder_CtrlTime2.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_CtrlTime2, grmi.Approximate, false),
meta.SerialOrder_LastModify.UrlParameterName: grmi.NewConditionItem(meta.SerialOrder_LastModify, grmi.Approximate, false),
@ -3274,137 +3275,269 @@ 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
}
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 eolStatus {
poOperationData.Status = "成功"
} else {
poOperationData.Status = "失败"
}
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)
result.TraceDataTraceData = append(result.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 nil, grmi.NewBusinessError("将电检结果保存到工单上失败, 错误:" + err.Error())
}
if len(repairInfoLi) != 0 {
repairFlag = true
repairTime = repairInfoLi[len(repairInfoLi)-1].CreateTime.Restore()
}
if needSBR {
}
return result, nil
}
// ExtractEOL 提取工单的电检数据
func (impl *SerialOrderServiceImplement) ExtractEOL(session *xorm.Session, user *global.User, serialOrder *model.SerialOrder) (status bool, remark string, recordT time.Time, err error) {
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, serialOrder.SerialOrderId),
}, []grmi.Field{baseMeta.RepairInfo_CreateTime})
if err != nil {
return false, "", recordT, 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 false, "", recordT, grmi.NewBusinessError("查询工单总成信息失败, 错误:" + err.Error())
}
if product == nil {
return false, "", recordT, 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, serialOrder.SerialOrderId)}, nil)
if err != nil {
return false, "", recordT, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error())
}
product, err := productDao.SelectOne(serialOrder.ArtId, serialOrder.ProjectId)
paLi, err := eolPaDao.Select([]grmi.Predicate{eolMeta.EOLPA_CODE.NewPredicate(grmi.Equal, serialOrder.SerialOrderId)}, nil)
if err != nil {
return nil, grmi.NewBusinessError("查询工单总成信息失败, 错误:" + err.Error())
return false, "", recordT, grmi.NewBusinessError("查询电检数据失败, 错误:" + err.Error())
}
if product == nil {
return nil, grmi.NewBusinessError("工单总成数据不存在")
for _, item := range drLi {
eolResultLi = append(eolResultLi, item)
}
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)
}
for _, item := range paLi {
eolResultLi = append(eolResultLi, item)
}
} else {
brLi, err := eolBrDao.Select([]grmi.Predicate{eolMeta.EOLBR_CODE.NewPredicate(grmi.Equal, serialOrder.SerialOrderId)}, nil)
if err != nil {
return false, "", recordT, 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 = "失败"
if len(eolResultLi) == 0 {
return false, "未查询到电检数据", recordT, nil
} else {
err = impl.QuickSort(eolResultLi)
if err != nil {
return false, "", recordT, err
}
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 {
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)
paData, ok := lastRecord.(eolModel.EOLPA)
if ok {
recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation)
recordResult = drData.TOTALRESULT
recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation)
recordResult = paData.TOTALRESULT
} else {
paData, ok := lastRecord.(eolModel.EOLPA)
brData, ok := lastRecord.(eolModel.EOLBR)
if ok {
recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation)
recordResult = paData.TOTALRESULT
recordTime, _ = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation)
recordResult = brData.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("电检数据格式错误")
}
return false, "", recordT, grmi.NewBusinessError("电检数据格式错误")
}
}
}
var status string = "成功"
var remark string = "已通过电检"
if repairFlag {
if recordTime.Before(repairTime) {
status = "失败"
result.Status = false
remark = "线上返修之后未进行电检"
}
if repairFlag {
if recordTime.Before(repairTime) {
return false, "线上返修之后未进行电检", recordTime, nil
}
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)
}
if needSBR {
if recordResult != "OK" {
return false, "电检不合格", recordTime, nil
}
return true, "电检合格", recordTime, nil
}
return result, nil
}
// GetSerialOrderOperationTraceData 工单数据追溯
@ -4408,7 +4541,7 @@ func (impl *SerialOrderServiceImplement) GetProductTraceDataReport(user *global.
return result, nil
}
// QuickSort 电检数据时间排序
func (impl *SerialOrderServiceImplement) QuickSort(values []interface{}) (err error) {
if len(values) <= 1 {
return nil
@ -4480,7 +4613,7 @@ func (impl *SerialOrderServiceImplement) QuickSort(values []interface{}) (err er
}
values[head] = mid
err = impl.QuickSort(values[:head])
if err != nil {
if err != nil {
return err
}
err = impl.QuickSort(values[head+1:])


+ 47
- 13
services/qm/implments/ReclinerReclst.service.impl.go View File

@ -3,6 +3,7 @@
package implments
import (
"LAPP_ACURA_MOM_BACKEND/conf"
baseDal "LAPP_ACURA_MOM_BACKEND/dao/base"
jitDal "LAPP_ACURA_MOM_BACKEND/dao/jit"
meDal "LAPP_ACURA_MOM_BACKEND/dao/me"
@ -15,10 +16,12 @@ import (
jitMeta "LAPP_ACURA_MOM_BACKEND/meta/jit"
omMeta "LAPP_ACURA_MOM_BACKEND/meta/om"
meta "LAPP_ACURA_MOM_BACKEND/meta/qm"
baseModel "LAPP_ACURA_MOM_BACKEND/models/base"
bmodel "LAPP_ACURA_MOM_BACKEND/models/base"
jitModel "LAPP_ACURA_MOM_BACKEND/models/jit"
omModel "LAPP_ACURA_MOM_BACKEND/models/om"
model "LAPP_ACURA_MOM_BACKEND/models/qm"
svr "LAPP_ACURA_MOM_BACKEND/services/om"
"LAPP_ACURA_MOM_BACKEND/utils"
"time"
)
@ -549,8 +552,35 @@ func (impl *ReclinerReclstServiceImplement) InsertSeriOne(user *global.User, ent
if err != nil {
return err
}
//更新seriorder订单表
articleAtocdDao := baseDal.NewArticleAtcodLstDAO(session, user.PlantNr, user.UserId)
attributeLi, err := articleAtocdDao.SelectByArtId(seriInfo.ArtId)
if err != nil {
return grmi.NewBusinessError("查询总成关联属性失败, error:" + err.Error())
}
var needEOL bool
for _, attributeItem := range attributeLi {
if attributeItem.Attribute.Descr == "EOL" {
needEOL = true
break
}
}
if needEOL {
serialOrderSvr := svr.NewSerialOrderService()
eolStatus, _, _, err := serialOrderSvr.ExtractEOL(session, user, seriInfo)
if err != nil {
return grmi.NewBusinessError("查询工单电检数据失败, 错误:" + err.Error())
}
if eolStatus {
seriInfo.EOLCheck = omModel.EOL_STATUS_OK
} else {
seriInfo.EOLCheck = omModel.EOL_STATUS_NG
}
}
if err = session.Begin(); err != nil {
return grmi.NewBusinessError("开启事务失败, 错误:" + err.Error())
}
//更新seriorder订单表
//更新原来的flag标识
seriInfo.GenerateFlag = true
err = seriDao.UpdateOne(seriInfo)
@ -587,6 +617,7 @@ func (impl *ReclinerReclstServiceImplement) InsertSeriOne(user *global.User, ent
session.Rollback()
return err
}
_ = session.Commit()
return nil
}
@ -760,7 +791,11 @@ func (impl *ReclinerReclstServiceImplement) CreateRecPrintInfo(entity model.Recl
head.Status = 0
head.LabelTemplateId = result.LabelTemplateId
head.PrinterId = result.PrinterId
head.PrintQty = 2
if conf.DbConfig.Project == baseModel.PROJECT_NANSHA {
head.PrintQty = 1
} else {
head.PrintQty = 2
}
head.BusinessObjType = "BACK"
head.BusinessObjId = entity.SerialOrderId
err = headDao.InsertOne(head)
@ -819,7 +854,7 @@ func (impl *ReclinerReclstServiceImplement) SelectUnPrint(num int) ([]model.Recl
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
dao := dal.NewReclinerReclstDAO(session,0, "Rec")
dao := dal.NewReclinerReclstDAO(session, 0, "Rec")
if num < 1 {
num = 50
}
@ -1022,7 +1057,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial
// 复制工序
poDataLi, err := serialOrderPoLstDao.Select([]grmi.Predicate{
omMeta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Equal, serialOrder.OriginSerialOrderId),
}, nil)
}, nil)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("查询原始工单工序数据失败, 错误:" + err.Error())
@ -1031,7 +1066,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial
for _, poData := range poDataLi {
poData.SerialOrderId = serialOrderId
needInsertPoLi = append(needInsertPoLi, poData)
if len(needInsertPoLi) % 20 == 0 {
if len(needInsertPoLi)%20 == 0 {
err = serialOrderPoLstDao.Insert(&needInsertPoLi)
if err != nil {
_ = session.Rollback()
@ -1041,7 +1076,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial
}
}
if len(needInsertPoLi) != 0 {
if len(needInsertPoLi) % 20 == 0 {
if len(needInsertPoLi)%20 == 0 {
err = serialOrderPoLstDao.Insert(&needInsertPoLi)
if err != nil {
_ = session.Rollback()
@ -1061,7 +1096,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial
for _, stepData := range stepDataLi {
stepData.SerialOrderId = serialOrderId
needInsertStepLi = append(needInsertStepLi, stepData)
if len(needInsertStepLi) % 20 == 0 {
if len(needInsertStepLi)%20 == 0 {
err = serialOrderStepDao.Insert(&needInsertStepLi)
if err != nil {
_ = session.Rollback()
@ -1089,11 +1124,11 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial
for _, opDetail := range opDetailLi {
opDetail.SerialOrderId = serialOrderId
needInsertOpDetailLi = append(needInsertOpDetailLi, opDetail)
if len(needInsertOpDetailLi) % 20 == 0 {
if len(needInsertOpDetailLi)%20 == 0 {
err = opDetailDao.Insert(&needInsertOpDetailLi)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error())
return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error())
}
needInsertOpDetailLi = make([]omModel.SerialOrderOPDetail, 0)
}
@ -1102,7 +1137,7 @@ func (impl *ReclinerReclstServiceImplement) BackOnline(user *global.User, serial
err = opDetailDao.Insert(&needInsertOpDetailLi)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error())
return grmi.NewBusinessError("复制工艺数据失败, 错误:" + err.Error())
}
}
}
@ -1657,7 +1692,7 @@ func (impl *ReclinerReclstServiceImplement) SelectSeriByAssembly(user *global.Us
}
if seriInfo.GenerateFlag {
//查询最近返修记录,
newSerialOrder,err :=seriDao.SelectByOriginSerialOrderId(seriInfo.SerialOrderId)
newSerialOrder, err := seriDao.SelectByOriginSerialOrderId(seriInfo.SerialOrderId)
if err != nil {
return nil, err
}
@ -1687,7 +1722,6 @@ func (impl *ReclinerReclstServiceImplement) SelectSeriByAssembly(user *global.Us
return entity, nil
}
/******************************************************************************
*
* @Reference LAPP_GAAS_GFrame_BACKEND/services/qm/ReclinerReclstService.InsertSeriByAssembly
@ -1709,4 +1743,4 @@ func (impl *ReclinerReclstServiceImplement) InsertSeriByAssembly(user *global.Us
return err
}
return nil
}
}

Loading…
Cancel
Save