|
|
@ -618,6 +618,7 @@ func (impl *ToyotaCalloffServiceImplement) ParseCallOffData(user *global.User) { |
|
|
|
} |
|
|
|
if len(waitParseLi) == 0 { |
|
|
|
log.Info("解析CallOff数据, 没有待解析的CallOff数据") |
|
|
|
return |
|
|
|
} |
|
|
|
maxSeqCallOff, err := callOffDao.SelectMaxSeqCallOff() |
|
|
|
if err != nil { |
|
|
@ -648,79 +649,72 @@ func (impl *ToyotaCalloffServiceImplement) ParseCallOffData(user *global.User) { |
|
|
|
}() |
|
|
|
productFamilyMap := make(map[string]*meModel.ProductFamily) |
|
|
|
productFamilyRelateMap := make(map[string][]meModel.Product) |
|
|
|
for _, callOffData := range waitParseLi { |
|
|
|
err = callOffErrDao.DeleteWhere([]grmi.Predicate{meta.ToyotaCallOffErrorLst_DemandId.NewPredicate(grmi.Equal, callOffData.DemandId)}) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据,删除已存在的错误数据失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
dealLi := waitParseLi |
|
|
|
for { |
|
|
|
if len(dealLi) == 0 { |
|
|
|
break |
|
|
|
} |
|
|
|
if callOffData.CheckSequence != needParseSeq && needParseSeq != -1 { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_HINT, |
|
|
|
ErrorInfo: "连番号不连续,当前需要解析连番号为:" + strconv.Itoa(needParseSeq) + ", 该连番号为:" + strconv.Itoa(callOffData.CheckSequence), |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
newLi := make([]model.ToyotaCalloff, 0) |
|
|
|
var deal bool |
|
|
|
var dealIndex int |
|
|
|
for index, callOffData := range dealLi { |
|
|
|
if callOffData.CheckSequence != needParseSeq && needParseSeq != -1 { |
|
|
|
continue |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
|
deal = true |
|
|
|
dealIndex = index |
|
|
|
err = callOffErrDao.DeleteWhere([]grmi.Predicate{meta.ToyotaCallOffErrorLst_DemandId.NewPredicate(grmi.Equal, callOffData.DemandId)}) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error()) |
|
|
|
log.Error("解析CallOff数据,删除已存在的错误数据失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
//if callOffData.CheckSequence != needParseSeq && needParseSeq != -1 {
|
|
|
|
// callOffError := model.ToyotaCallOffErrorLst{
|
|
|
|
// DemandId: callOffData.DemandId,
|
|
|
|
// Pos: 1,
|
|
|
|
// ErrorType: model.ERROR_TYPE_HINT,
|
|
|
|
// ErrorInfo: "连番号不连续,当前需要解析连番号为:" + strconv.Itoa(needParseSeq) + ", 该连番号为:" + strconv.Itoa(callOffData.CheckSequence),
|
|
|
|
// ErrorStatus: model.ERROR_STATUS_ON,
|
|
|
|
// }
|
|
|
|
// err = callOffErrDao.InsertOne(&callOffError)
|
|
|
|
// if err != nil {
|
|
|
|
// _ = session.Rollback()
|
|
|
|
// log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error())
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
// break
|
|
|
|
//}
|
|
|
|
|
|
|
|
needParseSeq = callOffData.CheckSequence + 1 |
|
|
|
productFamily, exist := productFamilyMap[callOffData.ProductFamilyId] |
|
|
|
if !exist { |
|
|
|
productFamily, err = productFamilyDao.SelectOne(callOffData.ProductFamilyId) |
|
|
|
if err != nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_SYSTEM, |
|
|
|
ErrorInfo: "查询派生数据失败, error:" + err.Error(), |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
needParseSeq = callOffData.CheckSequence + 1 |
|
|
|
if needParseSeq > 999 { |
|
|
|
needParseSeq = 0 |
|
|
|
} |
|
|
|
if productFamily == nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_DATA, |
|
|
|
ErrorInfo: "派生不存在", |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
productFamilyMap[callOffData.ProductFamilyId] = productFamily |
|
|
|
} |
|
|
|
var seatData string |
|
|
|
if productFamily.CtrlPara1 == 1 { // 如果座椅是安道拓的
|
|
|
|
productLi, exist := productFamilyRelateMap[callOffData.ProductFamilyId] |
|
|
|
productFamily, exist := productFamilyMap[callOffData.ProductFamilyId] |
|
|
|
if !exist { |
|
|
|
productLi, err = productFamilyRelateDao.SelectProductByFamilyId(callOffData.ProjectId, callOffData.ProductFamilyId) |
|
|
|
productFamily, err = productFamilyDao.SelectOne(callOffData.ProductFamilyId) |
|
|
|
if err != nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_SYSTEM, |
|
|
|
ErrorInfo: "查询派生下座椅总成失败", |
|
|
|
ErrorInfo: "查询派生数据失败, error:" + err.Error(), |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
if productFamily == nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_DATA, |
|
|
|
ErrorInfo: "派生不存在", |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
@ -731,12 +725,54 @@ func (impl *ToyotaCalloffServiceImplement) ParseCallOffData(user *global.User) { |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
if len(productLi) == 0 { |
|
|
|
productFamilyMap[callOffData.ProductFamilyId] = productFamily |
|
|
|
} |
|
|
|
var seatData string |
|
|
|
if productFamily.CtrlPara1 == 1 { // 如果座椅是安道拓的
|
|
|
|
productLi, exist := productFamilyRelateMap[callOffData.ProductFamilyId] |
|
|
|
if !exist { |
|
|
|
productLi, err = productFamilyRelateDao.SelectProductByFamilyId(callOffData.ProjectId, callOffData.ProductFamilyId) |
|
|
|
if err != nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_SYSTEM, |
|
|
|
ErrorInfo: "查询派生下座椅总成失败", |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
if len(productLi) == 0 { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_DATA, |
|
|
|
ErrorInfo: "该派生下没有关联座椅", |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 写入错误信息失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
productFamilyRelateMap[callOffData.ProductFamilyId] = productLi |
|
|
|
} |
|
|
|
seatData, err = impl.MakeUpSeatData(productLi) |
|
|
|
if err != nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_DATA, |
|
|
|
ErrorInfo: "该派生下没有关联座椅", |
|
|
|
ErrorInfo: err.Error(), |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
@ -747,15 +783,30 @@ func (impl *ToyotaCalloffServiceImplement) ParseCallOffData(user *global.User) { |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
productFamilyRelateMap[callOffData.ProductFamilyId] = productLi |
|
|
|
} else { // 如果座椅是樱泰的
|
|
|
|
seatData = productFamily.ProductFamilyId |
|
|
|
for i := len(seatData); i < 25; i++ { |
|
|
|
seatData += "0" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
plcCode := `1` + strconv.Itoa(productFamily.CtrlPara1) + seatData |
|
|
|
deliveryOrder := model.ToyotaDeliveryOrder{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
SortNr: callOffData.CheckSequence, |
|
|
|
ProductFamilyId: callOffData.ProductFamilyId, |
|
|
|
ProjectId: callOffData.ProjectId, |
|
|
|
PlcIpAddress: conf.DbConfig.CallOffPlcAddress, |
|
|
|
PlcCode: plcCode, |
|
|
|
Status: model.DELIVERY_STATUS_PLAN, |
|
|
|
} |
|
|
|
seatData, err = impl.MakeUpSeatData(productLi) |
|
|
|
err = deliveryOrderDao.InsertOne(&deliveryOrder) |
|
|
|
if err != nil { |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_DATA, |
|
|
|
ErrorInfo: err.Error(), |
|
|
|
ErrorType: model.ERROR_TYPE_SYSTEM, |
|
|
|
ErrorInfo: "写入发运数据失败, error:" + err.Error(), |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
@ -766,30 +817,29 @@ func (impl *ToyotaCalloffServiceImplement) ParseCallOffData(user *global.User) { |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
} else { // 如果座椅是樱泰的
|
|
|
|
seatData = productFamily.ProductFamilyId |
|
|
|
for i := len(seatData); i < 25; i++ { |
|
|
|
seatData += "0" |
|
|
|
recordId, err := snrDao.GetNextSnr("ToyotaCallOff") |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 获取回写流水号失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
callOffData.Parsed = model.CALLOFF_STATUS_PARSED |
|
|
|
callOffData.RecordId = recordId |
|
|
|
err = callOffDao.UpdateOne(&callOffData) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 更新CallOff状态失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
|
|
|
|
plcCode := `1` + strconv.Itoa(productFamily.CtrlPara1) + seatData |
|
|
|
deliveryOrder := model.ToyotaDeliveryOrder{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
SortNr: callOffData.CheckSequence, |
|
|
|
ProductFamilyId: callOffData.ProductFamilyId, |
|
|
|
ProjectId: callOffData.ProjectId, |
|
|
|
PlcIpAddress: conf.DbConfig.CallOffPlcAddress, |
|
|
|
PlcCode: plcCode, |
|
|
|
Status: model.DELIVERY_STATUS_PLAN, |
|
|
|
} |
|
|
|
err = deliveryOrderDao.InsertOne(&deliveryOrder) |
|
|
|
if err != nil { |
|
|
|
if !deal { |
|
|
|
callOffData := waitParseLi[0] |
|
|
|
callOffError := model.ToyotaCallOffErrorLst{ |
|
|
|
DemandId: callOffData.DemandId, |
|
|
|
Pos: 1, |
|
|
|
ErrorType: model.ERROR_TYPE_SYSTEM, |
|
|
|
ErrorInfo: "写入发运数据失败, error:" + err.Error(), |
|
|
|
ErrorType: model.ERROR_TYPE_HINT, |
|
|
|
ErrorInfo: "连番号不连续,当前需要解析连番号为:" + strconv.Itoa(needParseSeq) + ", 该连番号为:" + strconv.Itoa(callOffData.CheckSequence), |
|
|
|
ErrorStatus: model.ERROR_STATUS_ON, |
|
|
|
} |
|
|
|
err = callOffErrDao.InsertOne(&callOffError) |
|
|
@ -800,21 +850,14 @@ func (impl *ToyotaCalloffServiceImplement) ParseCallOffData(user *global.User) { |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
recordId, err := snrDao.GetNextSnr("ToyotaCallOff") |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 获取回写流水号失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
callOffData.Parsed = model.CALLOFF_STATUS_PARSED |
|
|
|
callOffData.RecordId = recordId |
|
|
|
err = callOffDao.UpdateOne(&callOffData) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Error("解析CallOff数据, 更新CallOff状态失败, error:" + err.Error()) |
|
|
|
return |
|
|
|
for index, _ := range dealLi { |
|
|
|
if index != dealIndex { |
|
|
|
newLi = append(newLi, dealLi[index]) |
|
|
|
} |
|
|
|
} |
|
|
|
dealLi = newLi |
|
|
|
} |
|
|
|
|
|
|
|
_ = session.Commit() |
|
|
|
log.Info("解析CallOff数据任务执行完, 最大MaxSeq:", strconv.Itoa(needParseSeq-1)) |
|
|
|
return |
|
|
@ -1117,7 +1160,6 @@ func (impl *ToyotaCalloffServiceImplement) AnalysisAgain(user *global.User, dema |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// ExportPageData 导出页面数据
|
|
|
|
func (impl *ToyotaCalloffServiceImplement) ExportPageData(user *global.User, urlParameters map[string]string) (filepath string, err error) { |
|
|
|
|
|
|
@ -1206,16 +1248,16 @@ func (impl *ToyotaCalloffServiceImplement) ExportPageData(user *global.User, url |
|
|
|
parsed = strconv.Itoa(item.Parsed) |
|
|
|
} |
|
|
|
exportItem := model.ToyotaCalloffExcel{ |
|
|
|
PlantNr: item.PlantNr, |
|
|
|
DemandId: item.DemandId, |
|
|
|
SupplierCode: item.SupplierCode, |
|
|
|
ProjectId: item.ProjectId, |
|
|
|
PlantNr: item.PlantNr, |
|
|
|
DemandId: item.DemandId, |
|
|
|
SupplierCode: item.SupplierCode, |
|
|
|
ProjectId: item.ProjectId, |
|
|
|
ProductFamilyId: item.ProductFamilyId, |
|
|
|
TotalQty: item.TotalQty, |
|
|
|
CheckSequence: item.CheckSequence, |
|
|
|
Parsed: parsed, |
|
|
|
OrderTime: item.OrderTime.Restore().Format(grmi.DateTimeOutFormat), |
|
|
|
OrderShift: item.OrderShift, |
|
|
|
TotalQty: item.TotalQty, |
|
|
|
CheckSequence: item.CheckSequence, |
|
|
|
Parsed: parsed, |
|
|
|
OrderTime: item.OrderTime.Restore().Format(grmi.DateTimeOutFormat), |
|
|
|
OrderShift: item.OrderShift, |
|
|
|
} |
|
|
|
li = append(li, exportItem) |
|
|
|
} |
|
|
@ -1227,9 +1269,9 @@ func (impl *ToyotaCalloffServiceImplement) ExportPageData(user *global.User, url |
|
|
|
if !exist { |
|
|
|
head = append(head, typeOf.Field(i).Name) |
|
|
|
} else { |
|
|
|
head = append(head, name,) |
|
|
|
head = append(head, name) |
|
|
|
} |
|
|
|
} |
|
|
|
filepath, err = grmi.SaveExcelFile(li, head, "Sheet1", "顺引") |
|
|
|
return |
|
|
|
} |
|
|
|
} |