Browse Source

Merge pull request '调整查询工序操作结果,调整查询工序操作结果' (#115) from feature_om into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_Acura_MES_Backend/pulls/115
pull/116/head
娄文智 3 years ago
parent
commit
d705e2d925
4 changed files with 158 additions and 73 deletions
  1. +1
    -0
      dao/om/SerialOrderPOLst.dao.go
  2. +26
    -0
      dao/om/implments/SerialOrderPOLst.dao.impl.go
  3. +6
    -0
      models/om/om.go
  4. +125
    -73
      services/om/implments/SerialOrder.service.impl.go

+ 1
- 0
dao/om/SerialOrderPOLst.dao.go View File

@ -222,6 +222,7 @@ type SerialOrderPOLstDAO interface {
******************************************************************************/
UpdateWhere([]grmi.Predicate, *model.SerialOrderPOLst, ...string) error
SelectBySerialOrderId(serialOrderId string, workLineId string) ([]model.SerialOrderPOLst, error)
SelectWithPO(serialOrderId string, workLineId string) ([]model.SerialOrderPOWithProcess, error)
}
/******************************************************************************


+ 26
- 0
dao/om/implments/SerialOrderPOLst.dao.impl.go View File

@ -4,6 +4,7 @@ package implments
import (
"LAPP_ACURA_MOM_BACKEND/grmi"
baseMeta "LAPP_ACURA_MOM_BACKEND/meta/base"
meta "LAPP_ACURA_MOM_BACKEND/meta/om"
model "LAPP_ACURA_MOM_BACKEND/models/om"
"fmt"
@ -313,4 +314,29 @@ func (impl *SerialOrderPOLstDAOImplement) SelectBySerialOrderId(serialOrderId st
data := make([]model.SerialOrderPOLst, 0)
err := impl.session.Table(impl.meta.TableName).SQL(sql, parameters...).Find(&data)
return data, err
}
// SelectWithPO 查询工单工序操作结果及工序数据
func (impl *SerialOrderPOLstDAOImplement) SelectWithPO(serialOrderId string, workLineId string) ([]model.SerialOrderPOWithProcess, error) {
poCondition := fmt.Sprintf("%s = %s and %s = %s",
meta.SerialOrderPOLst_PlantNr.ColumnName,
baseMeta.Process_PlantNr.ColumnName,
meta.SerialOrderPOLst_PO.ColumnName,
baseMeta.Process_PO.ColumnName)
wpCondition := fmt.Sprintf("%s = %s and %s = %s",
baseMeta.Process_PlantNr.ColumnName,
baseMeta.WorkLineProcessLst_PlantNr.ColumnName,
baseMeta.Process_PO.ColumnName,
baseMeta.WorkLineProcessLst_PO.ColumnName,
)
where := fmt.Sprintf("%s = ? and %s = ? and %s = ?",
meta.SerialOrderPOLst_PlantNr.ColumnName,
meta.SerialOrderPOLst_SerialOrderId.ColumnName,
baseMeta.WorkLineProcessLst_WorkLineId.ColumnName)
parameters := []interface{}{impl.plantNr, serialOrderId, workLineId}
result := make([]model.SerialOrderPOWithProcess, 0)
err := impl.session.Table(impl.meta.TableName).Join("LEFT", baseMeta.Process.TableName, poCondition).
Join("LEFT", baseMeta.WorkLineProcessLst.TableName, wpCondition).
Where(where, parameters...).OrderBy(baseMeta.WorkLineProcessLst_Pos.ColumnName).Find(&result)
return result, err
}

+ 6
- 0
models/om/om.go View File

@ -129,3 +129,9 @@ type SerialOrderWithStatusRec struct {
SerialOrder `xorm:"extends"`
SerialOrderStatusRecLst `xorm:"extends"`
}
type SerialOrderPOWithProcess struct {
SerialOrderPOLst `xorm:"extends"`
baseModel.WorkLineProcessLst `xorm:"extends"`
baseModel.Process `xorm:"extends"`
}

+ 125
- 73
services/om/implments/SerialOrder.service.impl.go View File

@ -485,10 +485,9 @@ func (impl *SerialOrderServiceImplement) CancelSerialOrder(user *global.User, se
if status == nil {
return grmi.NewBusinessError("工单状态数据不存在, 工单ID:" + serialOrderId)
}
if status.Status != baseModel.WO_STATUS_UNPLANNED {
if status.Status != baseModel.WO_STATUS_UNPLANNED && status.Status != baseModel.WO_STATUS_RELEASED {
return grmi.NewBusinessError("工单状态不是未计划, 不允许取消, 工单ID:" + serialOrderId)
}
status.Status = baseModel.WO_STATUS_CANCELED
if err := session.Begin(); err != nil {
return err
}
@ -496,8 +495,9 @@ func (impl *SerialOrderServiceImplement) CancelSerialOrder(user *global.User, se
statusRec := model.SerialOrderStatusRecLst{
SerialOrderId: serialOrderId,
Status: baseModel.WO_STATUS_CANCELED,
PrevStatus: baseModel.WO_STATUS_UNPLANNED,
PrevStatus: status.Status,
}
status.Status = baseModel.WO_STATUS_CANCELED
err = statusRecDao.InsertOne(&statusRec)
if err != nil {
_ = session.Rollback()
@ -2366,25 +2366,46 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa
if article == nil {
return nil, grmi.NewBusinessError("工单绑定总成不存在, 总成ID:" + serialOrder.ArtId)
}
// 查询工单产线
workLineId := serialOrder.PlanResourceId
// 通过产线查询生产工序
workLineProcessDao := baseDal.NewWorkLineProcessLstDAO(session, user.PlantNr, user.UserId)
poLi, err := workLineProcessDao.SelectProcessByWorkLine(workLineId)
poDataLi, err := serialOrderPoDao.SelectWithPO(serialOrderId, serialOrder.UsedResourceId)
if err != nil {
return nil, grmi.NewBusinessError("查询产线生产工序失败, error:" + err.Error())
}
if len(poLi) <= 1 {
return nil, grmi.NewBusinessError("生产工序少于2个")
return nil, grmi.NewBusinessError("查询工单工序操作数据失败, error:" + err.Error())
}
poIdLi := make([]string, 0, len(poLi))
for _, po := range poLi {
if po.IsLastPO || po.IsLastPOForBK {
continue
var result model.TraceData
result.Status = true
result.BarCode = serialOrderId
result.Desc = article.Descr1
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] = "成功"
} else {
poStatusMap[poData.Process.PO] = "失败"
result.Status = false
}
poIdLi = append(poIdLi, po.PO)
}
displayPoLi := poIdLi
//// 查询工单产线
//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)
@ -2400,14 +2421,14 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa
workPlaceMap[relateDate.WorkPlace.WorkPlaceNr] = relateDate.WorkPlace.WorkPlaceId
}
//stepDao := dal.NewSerialOrderStepLstDAO(session, user.PlantNr, user.UserId)
poIdLiInterface := make([]interface{}, 0, len(displayPoLi))
//poIdLiInterface := make([]interface{}, 0, len(displayPoLi))
selectPoIdLi := make([]string, 0, len(displayPoLi))
for _, poId := range displayPoLi {
_, exist := ignorePOMap[poId]
if exist {
continue
}
poIdLiInterface = append(poIdLiInterface, poId)
//poIdLiInterface = append(poIdLiInterface, poId)
selectPoIdLi = append(selectPoIdLi, poId)
}
@ -2415,28 +2436,17 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationData(user *globa
//if err != nil {
// return nil, grmi.NewBusinessError("查询工单工步数据失败, error:" + err.Error())
//}
var result model.TraceData
result.Status = true
result.BarCode = serialOrderId
result.Desc = article.Descr1
//for _, step := range stepLi {
// if step.Status != baseModel.WO_STATUS_FINISHED {
// result.Status = false
// }
//}
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
}
}
//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())
//}
articleAtocdDao := baseDal.NewArticleAtcodLstDAO(session, user.PlantNr, user.UserId)
var needEOL bool
var needSBR bool
@ -2615,24 +2625,64 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationTraceData(user *
needSBR = true
}
}
// 查询工单产线
workLineId := serialOrder.PlanResourceId
// 通过产线查询生产工序
workLineProcessDao := baseDal.NewWorkLineProcessLstDAO(session, user.PlantNr, user.UserId)
poLi, err := workLineProcessDao.SelectProcessByWorkLine(workLineId)
//// 查询工单产线
//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 {
// poIdLi = append(poIdLi, po.PO)
//}
poDataLi, err := serialOrderPoDao.SelectWithPO(serialOrderId, serialOrder.UsedResourceId)
if err != nil {
return nil, grmi.NewBusinessError("查询产线生产工序失败, error:" + err.Error())
}
if len(poLi) <= 1 {
return nil, grmi.NewBusinessError("生产工序少于2个")
return nil, grmi.NewBusinessError("查询工单工序操作数据失败, error:" + err.Error())
}
poIdLi := make([]string, 0, len(poLi))
for _, po := range poLi {
poIdLi = append(poIdLi, po.PO)
var result model.TraceData
result.Status = true
result.BarCode = serialOrderId
result.Desc = article.Descr1
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] = "成功"
} else {
poStatusMap[poData.Process.PO] = "失败"
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)
relateWorkPlaceLi, err := processWorkPlaceDao.SelectByProcess(poIdLi)
relateWorkPlaceLi, err := processWorkPlaceDao.SelectByProcess(displayPoLi)
if err != nil {
return nil, grmi.NewBusinessError("查询工序关联的工位失败, error:" + err.Error())
}
@ -2644,35 +2694,37 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderOperationTraceData(user *
}
workPlaceMap[relateDate.WorkPlace.WorkPlaceNr] = relateDate.WorkPlace.WorkPlaceId
}
poIdLiInterface := make([]interface{}, 0, len(poIdLi))
selectPoIdLi := make([]string, 0, len(poIdLi))
for _, poId := range poIdLi {
//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 {
continue
}
//poIdLiInterface = append(poIdLiInterface, poId)
selectPoIdLi = append(selectPoIdLi, poId)
poIdLiInterface = append(poIdLiInterface, 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
}
}
//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)


Loading…
Cancel
Save