|
|
@ -4,15 +4,18 @@ package implments |
|
|
|
|
|
|
|
import ( |
|
|
|
baseDal "LAPP_ACURA_MOM_BACKEND/dao/base" |
|
|
|
eolDal "LAPP_ACURA_MOM_BACKEND/dao/eol" |
|
|
|
meDal "LAPP_ACURA_MOM_BACKEND/dao/me" |
|
|
|
dal "LAPP_ACURA_MOM_BACKEND/dao/om" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/db" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/global" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/grmi" |
|
|
|
baseMeta "LAPP_ACURA_MOM_BACKEND/meta/base" |
|
|
|
eolMeta "LAPP_ACURA_MOM_BACKEND/meta/eol" |
|
|
|
meMeta "LAPP_ACURA_MOM_BACKEND/meta/me" |
|
|
|
meta "LAPP_ACURA_MOM_BACKEND/meta/om" |
|
|
|
baseModel "LAPP_ACURA_MOM_BACKEND/models/base" |
|
|
|
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" |
|
|
@ -815,7 +818,7 @@ func (impl *SerialOrderServiceImplement) ReleaseSerialOrder(user *global.User, s |
|
|
|
} |
|
|
|
sfpBomHead.BomLstLi = sfpBomLstLi |
|
|
|
// 获取关联的所有零件ID
|
|
|
|
sfpArtMap := impl.ExtractArtId(bomHead) |
|
|
|
sfpArtMap := impl.ExtractArtId(sfpBomHead) |
|
|
|
sfpArtIdLi := make([]string, 0, len(sfpArtMap)) |
|
|
|
for innerArtId := range sfpArtMap { |
|
|
|
sfpArtIdLi = append(sfpArtIdLi, innerArtId) |
|
|
@ -852,11 +855,12 @@ func (impl *SerialOrderServiceImplement) ReleaseSerialOrder(user *global.User, s |
|
|
|
} |
|
|
|
// 所有需要生成工单工序绑定的数据
|
|
|
|
orderPoMap[bomLst.CmatNr] = &model.OrderAUPoData{ |
|
|
|
Config: auConfig, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: false, |
|
|
|
SFP: sfp, |
|
|
|
Config: auConfig, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: false, |
|
|
|
SFP: sfp, |
|
|
|
AllAttributeLi: sfpAllArticleAttributeLi, |
|
|
|
ArtRelMap: sfpArtMap, |
|
|
|
} |
|
|
|
} |
|
|
|
mainOrderPOIdLi := make([]string, 0) |
|
|
@ -881,11 +885,12 @@ func (impl *SerialOrderServiceImplement) ReleaseSerialOrder(user *global.User, s |
|
|
|
} |
|
|
|
// 所有需要生成工单工序绑定的数据
|
|
|
|
orderPoMap[serialOrder.ArtId] = &model.OrderAUPoData{ |
|
|
|
Config: nil, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: true, |
|
|
|
SFP: nil, |
|
|
|
Config: nil, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: true, |
|
|
|
SFP: nil, |
|
|
|
AllAttributeLi: allArticleAttributeLi, |
|
|
|
ArtRelMap: artMap, |
|
|
|
} |
|
|
|
|
|
|
|
// 获取所有使用工序的扫码校验规则 组建MAP数据结构
|
|
|
@ -1054,7 +1059,7 @@ func (impl *SerialOrderServiceImplement) ReleaseSerialOrder(user *global.User, s |
|
|
|
return grmi.NewBusinessError("未获取到扫描校验详细规则, 工艺ID:" + strconv.Itoa(serialOrderStep.OperationId)) |
|
|
|
} |
|
|
|
|
|
|
|
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, artMap, &scanRule, &op, &serialOrderStep, op.Operation.ActivateInBKStation) |
|
|
|
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, orderOPData.ArtRelMap, &scanRule, &op, &serialOrderStep, op.Operation.ActivateInBKStation) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return err |
|
|
@ -2305,7 +2310,7 @@ func (impl *SerialOrderServiceImplement) GenerateCraftDataByCustOrder(user *glob |
|
|
|
} |
|
|
|
sfpBomHead.BomLstLi = sfpBomLstLi |
|
|
|
// 获取关联的所有零件ID
|
|
|
|
sfpArtMap := impl.ExtractArtId(bomHead) |
|
|
|
sfpArtMap := impl.ExtractArtId(sfpBomHead) |
|
|
|
sfpArtIdLi := make([]string, 0, len(sfpArtMap)) |
|
|
|
for innerArtId := range sfpArtMap { |
|
|
|
sfpArtIdLi = append(sfpArtIdLi, innerArtId) |
|
|
@ -2347,6 +2352,7 @@ func (impl *SerialOrderServiceImplement) GenerateCraftDataByCustOrder(user *glob |
|
|
|
IsMainOrder: false, |
|
|
|
SFP: sfp, |
|
|
|
AllAttributeLi: sfpAllArticleAttributeLi, |
|
|
|
ArtRelMap: sfpArtMap, |
|
|
|
} |
|
|
|
} |
|
|
|
mainOrderPOIdLi := make([]string, 0) |
|
|
@ -2371,11 +2377,12 @@ func (impl *SerialOrderServiceImplement) GenerateCraftDataByCustOrder(user *glob |
|
|
|
} |
|
|
|
// 所有需要生成工单工序绑定的数据
|
|
|
|
orderPoMap[productId] = &model.OrderAUPoData{ |
|
|
|
Config: nil, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: true, |
|
|
|
SFP: nil, |
|
|
|
Config: nil, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: true, |
|
|
|
SFP: nil, |
|
|
|
AllAttributeLi: allArticleAttributeLi, |
|
|
|
ArtRelMap: artMap, |
|
|
|
} |
|
|
|
|
|
|
|
// 获取所有使用工序的扫码校验规则 组建MAP数据结构
|
|
|
@ -2547,7 +2554,7 @@ func (impl *SerialOrderServiceImplement) GenerateCraftDataByCustOrder(user *glob |
|
|
|
return grmi.NewBusinessError("未获取到扫描校验详细规则, 工艺ID:" + strconv.Itoa(serialOrderStep.OperationId)) |
|
|
|
} |
|
|
|
|
|
|
|
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, artMap, &scanRule, &op, &serialOrderStep, op.Operation.ActivateInBKStation) |
|
|
|
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, orderOPData.ArtRelMap, &scanRule, &op, &serialOrderStep, op.Operation.ActivateInBKStation) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return err |
|
|
@ -2789,7 +2796,7 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
} |
|
|
|
sfpBomHead.BomLstLi = sfpBomLstLi |
|
|
|
// 获取关联的所有零件ID
|
|
|
|
sfpArtMap := impl.ExtractArtId(bomHead) |
|
|
|
sfpArtMap := impl.ExtractArtId(sfpBomHead) |
|
|
|
sfpArtIdLi := make([]string, 0, len(sfpArtMap)) |
|
|
|
for innerArtId := range sfpArtMap { |
|
|
|
sfpArtIdLi = append(sfpArtIdLi, innerArtId) |
|
|
@ -2823,11 +2830,12 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
} |
|
|
|
// 所有需要生成工单工序绑定的数据
|
|
|
|
orderPoMap[bomLst.CmatNr] = &model.OrderAUPoData{ |
|
|
|
Config: auConfig, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: false, |
|
|
|
SFP: sfp, |
|
|
|
Config: auConfig, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: false, |
|
|
|
SFP: sfp, |
|
|
|
AllAttributeLi: sfpAllArticleAttributeLi, |
|
|
|
ArtRelMap: sfpArtMap, |
|
|
|
} |
|
|
|
} |
|
|
|
mainOrderPOIdLi := make([]string, 0) |
|
|
@ -2847,13 +2855,15 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
if len(opLi) == 0 { |
|
|
|
return grmi.NewBusinessError("未获取到工艺数据") |
|
|
|
} |
|
|
|
|
|
|
|
// 所有需要生成工单工序绑定的数据
|
|
|
|
orderPoMap[productId] = &model.OrderAUPoData{ |
|
|
|
Config: nil, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: true, |
|
|
|
SFP: nil, |
|
|
|
Config: nil, |
|
|
|
MeOperationLi: opLi, |
|
|
|
IsMainOrder: true, |
|
|
|
SFP: nil, |
|
|
|
AllAttributeLi: allArticleAttributeLi, |
|
|
|
ArtRelMap: artMap, |
|
|
|
} |
|
|
|
|
|
|
|
// 获取所有使用工序的扫码校验规则 组建MAP数据结构
|
|
|
@ -3012,8 +3022,7 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
if !exist { |
|
|
|
return grmi.NewBusinessError("未获取到扫描校验详细规则, 工艺ID:" + strconv.Itoa(serialOrderStep.OperationId)) |
|
|
|
} |
|
|
|
|
|
|
|
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, artMap, &scanRule, &op, &serialOrderStep, op.Operation.ActivateInBKStation) |
|
|
|
checkRuleMapPointer, allocateMapPointer, err := impl.ScanCodeCheck(user, session, checkRuleMap, allocateMap, orderOPData.ArtRelMap, &scanRule, &op, &serialOrderStep, op.Operation.ActivateInBKStation) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
@ -3045,7 +3054,6 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
if !exist { |
|
|
|
return grmi.NewBusinessError("未获取到打印规则, 工艺ID:" + strconv.Itoa(serialOrderStep.OperationId)) |
|
|
|
} |
|
|
|
fmt.Println("serialOrderStep.OperationId:", serialOrderStep.OperationId) |
|
|
|
generateRuleLi := make([]baseModel.PrintBasicRuleInfo, 0) |
|
|
|
for _, rule := range ruleLi { |
|
|
|
if rule.Action == baseModel.PRINT_RULE_ACTION_UPDATE { |
|
|
@ -3065,7 +3073,6 @@ func (impl *SerialOrderServiceImplement) GenerateCraftData(user *global.User, se |
|
|
|
} else { |
|
|
|
templateId = generateRule.TemplateId |
|
|
|
} |
|
|
|
fmt.Println("templateId:", templateId) |
|
|
|
printTemplate, exist = labelTemplateMap[templateId] |
|
|
|
if !exist { |
|
|
|
return grmi.NewBusinessError("存在单据打印规则中配置的标签模板, 模板ID:" + generateRule.TemplateId) |
|
|
@ -3155,25 +3162,6 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa |
|
|
|
result.Status = false |
|
|
|
} |
|
|
|
} |
|
|
|
//// 查询工单产线
|
|
|
|
//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) |
|
|
@ -3285,17 +3273,66 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa |
|
|
|
result.TraceDataTraceData = append(result.TraceDataTraceData, poOperationData) |
|
|
|
} |
|
|
|
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() |
|
|
|
eolResult, err := eolSession.SQL(fmt.Sprintf(`select * from Test_Data where 条码 = '%s' order by 测试完成日期, 测试完成时间`, serialOrderId)).QueryString() |
|
|
|
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("查询电检结果失败, error:" + err.Error()) |
|
|
|
return nil, grmi.NewBusinessError("查询工单返修记录失败, 错误:" + err.Error()) |
|
|
|
} |
|
|
|
if len(eolResult) == 0 { |
|
|
|
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: "", |
|
|
@ -3308,38 +3345,57 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa |
|
|
|
poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) |
|
|
|
poOperationData.Status = "失败" |
|
|
|
} else { |
|
|
|
opData := eolResult[len(eolResult)-1] |
|
|
|
var executeTime time.Time |
|
|
|
executeTimeStr := opData["测试完成日期"] + " " + opData["测试完成时间"] |
|
|
|
executeTime, err = time.ParseInLocation(executeTimeStr, grmi.DateTimeOutFormat, utils.TimezoneLocation) |
|
|
|
err = impl.QuickSort(eolResultLi) |
|
|
|
if err != nil { |
|
|
|
executeTime = time.Time{} |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
var status string |
|
|
|
var remark string |
|
|
|
operateResult, exists := opData["测试结果(P/F)"] |
|
|
|
if !exists { |
|
|
|
status = "失败" |
|
|
|
poOperationData.Status = "失败" |
|
|
|
remark = "未获取到检测结果" |
|
|
|
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 { |
|
|
|
if operateResult == "P" { |
|
|
|
status = "成功" |
|
|
|
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 = "失败" |
|
|
|
poOperationData.Status = "失败" |
|
|
|
remark = "检测结果未通过" |
|
|
|
result.Status = false |
|
|
|
remark = "线上返修之后未进行电检" |
|
|
|
} |
|
|
|
} |
|
|
|
if recordResult != "OK" { |
|
|
|
status = "失败" |
|
|
|
result.Status = false |
|
|
|
remark = "电检不合格" |
|
|
|
} |
|
|
|
recvData := model.RecvDataItem{ |
|
|
|
SerialOrderId: serialOrderId, |
|
|
|
ArtId: "", |
|
|
|
PO: "EOL", |
|
|
|
OperationDesc: "电检", |
|
|
|
RecvData: operateResult, |
|
|
|
RecvData: "", |
|
|
|
Status: status, |
|
|
|
Remark1: remark, |
|
|
|
ExecuteTime: executeTime.Format(grmi.DateTimeOutFormat), |
|
|
|
ExecuteTime: recordTime.Format(grmi.DateTimeOutFormat), |
|
|
|
} |
|
|
|
poOperationData.RecvDataLi = append(poOperationData.RecvDataLi, recvData) |
|
|
|
} |
|
|
@ -3922,7 +3978,6 @@ func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.Use |
|
|
|
} |
|
|
|
if len(serialOrderLi) > 0 { |
|
|
|
_ = session.Rollback() |
|
|
|
fmt.Println("schedKeyLi:", schedKeyLi) |
|
|
|
return grmi.NewBusinessError("生成的排序Key已存在工单") |
|
|
|
} |
|
|
|
now := time.Now() |
|
|
@ -4352,3 +4407,85 @@ func (impl *SerialOrderServiceImplement) GetProductTraceDataReport(user *global. |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (impl *SerialOrderServiceImplement) QuickSort(values []interface{}) (err error) { |
|
|
|
if len(values) <= 1 { |
|
|
|
return nil |
|
|
|
} |
|
|
|
mid, i := values[0], 1 |
|
|
|
var midTime time.Time |
|
|
|
drData, ok := mid.(eolModel.EOLDR) |
|
|
|
if ok { |
|
|
|
midTime, err = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("电检数据时间格式错误") |
|
|
|
} |
|
|
|
} else { |
|
|
|
paData, ok := mid.(eolModel.EOLPA) |
|
|
|
if ok { |
|
|
|
midTime, err = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("电检数据时间格式错误") |
|
|
|
} |
|
|
|
} else { |
|
|
|
brData, ok := mid.(eolModel.EOLBR) |
|
|
|
if ok { |
|
|
|
midTime, err = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("电检数据时间格式错误") |
|
|
|
} |
|
|
|
} else { |
|
|
|
return grmi.NewBusinessError("电检数据格式错误") |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
head, tail := 0, len(values)-1 |
|
|
|
for head < tail { |
|
|
|
var iTime time.Time |
|
|
|
drData, ok = values[i].(eolModel.EOLDR) |
|
|
|
if ok { |
|
|
|
midTime, err = time.ParseInLocation("2006/01/02 15:04:05", drData.TESTDATA, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("电检数据时间格式错误") |
|
|
|
} |
|
|
|
} else { |
|
|
|
paData, ok := values[i].(eolModel.EOLPA) |
|
|
|
if ok { |
|
|
|
midTime, err = time.ParseInLocation("2006/01/02 15:04:05", paData.TESTDATA, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("电检数据时间格式错误") |
|
|
|
} |
|
|
|
} else { |
|
|
|
brData, ok := values[i].(eolModel.EOLBR) |
|
|
|
if ok { |
|
|
|
midTime, err = time.ParseInLocation("2006/01/02 15:04:05", brData.TESTDATA, utils.TimezoneLocation) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("电检数据时间格式错误") |
|
|
|
} |
|
|
|
} else { |
|
|
|
return grmi.NewBusinessError("电检数据格式错误") |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if iTime.Before(midTime) { |
|
|
|
values[i], values[tail] = values[tail], values[i] |
|
|
|
tail-- |
|
|
|
} else { |
|
|
|
values[i], values[head] = values[head], values[i] |
|
|
|
head++ |
|
|
|
i++ |
|
|
|
} |
|
|
|
} |
|
|
|
values[head] = mid |
|
|
|
err = impl.QuickSort(values[:head]) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
err = impl.QuickSort(values[head+1:]) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |