@ -66,14 +66,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Autowired
private IMesWorkOrderDao mesWorkOrderDao ;
@Autowired
private MesWorkOrderRepository mesWorkOrderRDao ;
@Autowired
private MesWorkCenterRepository mesWorkCenterRDao ;
@Autowired
private MesShiftRepository mesShiftRDao ;
@Autowired
private MesProductPlanRepository mesProductPlanRDao ;
@Autowired
private IMesPartProdGroupService mesPartProdGroupService ;
@Autowired
private MesCustomerPartRepository mesCustomerPartRDao ;
@ -148,6 +144,30 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Autowired
private SnowflakeIdMaker snowflakeIdMaker ;
@Autowired
private MesPartPtrRepository partPtrRao ;
@Autowired
private MesPartPtrDetailRepository partPtrDetailRao ;
@Autowired
private MesWorkOrderPartRepository workOrderPartRao ;
@Autowired
private MesProdRuleSortCfgRepository mesProdRuleSortCfgRao ;
@Autowired
private MesQueueOrderRepository queueOrderRao ;
@Autowired
private IMesWorkOrderAssemblyService mesWorkOrderAssemblyService ;
@Autowired
private IMesWorkOrderPartService mesWorkOrderPartService ;
@Autowired
private IMesProduceSnService mesProduceSnService ;
@Override
public MesWorkOrder insert ( MesWorkOrder bean ) {
//校验产线与工位的关系
@ -157,10 +177,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//获取相同类型 相同标识 生产序号最大值的
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderStatus ( ) , "workOrderStatus" , orderPackBean ) ;
DdlPreparedPack . getStringEqualPack ( bean . getOrderFlag ( ) , "orderFlag" , orderPackBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { "productSeq" } , orderPackBean ) ;
MesWorkOrder result = baseRDao . getByProperty ( orderPackBean ) ;
Double generateQty = bean . getQty ( ) ;
//插入前构造数据
onInsertBean ( bean ) ;
@ -169,7 +189,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( bean . getWorkOrderType ( ) = = MesExtEnumUtil . ORDER_TYPE . SORT . getValue ( ) ) {
Long productSeq = 0 L ;
if ( null ! = result & & result . getProductSeq ( ) ! = null ) {
productSeq = ( long ) Math . toIntExact ( result . getProductSeq ( ) );
productSeq = ( long ) Math . toIntExact ( result . getProductSeq ( ) .toString ( ) . endsWith ( "9" ) ? result . getProductSeq ( ) + 1 : result . getProductSeq ( ) );
}
MesWorkOrder copyMesWorkOrder = new MesWorkOrder ( ) ;
BeanUtils . copyProperties ( bean , copyMesWorkOrder ) ;
@ -179,6 +199,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
baseRDao . insert ( copyMesWorkOrder ) ;
workOrderLogService . saveMesWorkOrderLog ( copyMesWorkOrder , MesExtEnumUtil . WORK_ORDER_LOG_TYPE . INSERT , copyMesWorkOrder . getQty ( ) ) ;
//生成数量大于1
if ( generateQty > 1 ) {
insertBatchWorkOrder ( copyMesWorkOrder , generateQty ) ;
}
return bean ;
} else if ( bean . getWorkOrderType ( ) = = MesExtEnumUtil . ORDER_TYPE . BTO . getValue ( ) ) {
Long productSeq = 0 L ;
@ -199,6 +223,96 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return bean ;
}
private void insertBatchWorkOrder ( MesWorkOrder workOrder , Double generateQty ) {
//查询数据
List < MesWorkOrderAssembly > orderAssemblyList = mesWorkOrderAssemblyService . findMesWorkOrderAssembly ( workOrder . getWorkOrderNo ( ) , workOrder . getOrganizeCode ( ) ) ;
List < MesWorkOrderPart > orderPartList = mesWorkOrderPartService . findMesWorkOrderPart ( workOrder . getWorkOrderNo ( ) , workOrder . getOrganizeCode ( ) ) ;
List < MesWorkOrderToWms > toWmsList = mesWorkOrderToWmsService . findMesWorkOrderToWms ( workOrder . getWorkOrderNo ( ) , workOrder . getOrganizeCode ( ) ) ;
List < MesWorkOrderLog > orderLogList = workOrderLogService . findMesWorkOrderLog ( workOrder . getWorkOrderNo ( ) , workOrder . getOrganizeCode ( ) ) ;
MesProduceSn mesProduceSn = mesProduceSnService . getMesProduceSnByCustSn ( workOrder . getOrganizeCode ( ) , workOrder . getCustSn ( ) ) ;
//数据处理
List < MesWorkOrder > newWrkOrderList = new ArrayList < > ( ) ;
List < MesWorkOrderAssembly > newOrderAssemblyList = new ArrayList < > ( ) ;
List < MesWorkOrderPart > newOrderPartList = new ArrayList < > ( ) ;
List < MesWorkOrderToWms > newToWmsList = new ArrayList < > ( ) ;
List < MesWorkOrderLog > newOrderLogList = new ArrayList < > ( ) ;
List < MesProduceSn > newProduceSnList = new ArrayList < > ( ) ;
MesWorkOrderAssembly newOrderAssembly = null ;
MesWorkOrderPart newOrderPart = null ;
MesWorkOrderToWms newOrderPartToWms = null ;
MesWorkOrderLog orderLog = null ;
MesProduceSn newProduceSn = null ;
for ( int i = 1 ; i < generateQty ; i + + ) {
//工单
MesWorkOrder newWorkOrder = new MesWorkOrder ( ) ;
BeanUtils . copyProperties ( workOrder , newWorkOrder , MesExtConstWords . ID , MesExtConstWords . SYSTEM_SYNC_STATUS ) ;
newWorkOrder . setWorkOrderNo ( getOrderNo ( workOrder ) ) ;
newWorkOrder . setProductSeq ( workOrder . getProductSeq ( ) + i ) ;
newWorkOrder . setCustSn ( getCustSn ( workOrder . getCustPartNo ( ) , workOrder . getOrganizeCode ( ) , workOrder . getCreateUser ( ) ) ) ;
newWrkOrderList . add ( newWorkOrder ) ;
//工单装配件
if ( ! CollectionUtils . isEmpty ( orderAssemblyList ) ) {
for ( MesWorkOrderAssembly assembly : orderAssemblyList ) {
newOrderAssembly = new MesWorkOrderAssembly ( ) ;
BeanUtils . copyProperties ( assembly , newOrderAssembly , MesExtConstWords . ID , MesExtConstWords . SYSTEM_SYNC_STATUS ) ;
newOrderAssembly . setWorkOrderNo ( newWorkOrder . getWorkOrderNo ( ) ) ;
newOrderAssemblyList . add ( newOrderAssembly ) ;
}
}
//工单零件
if ( ! CollectionUtils . isEmpty ( orderPartList ) ) {
for ( MesWorkOrderPart part : orderPartList ) {
newOrderPart = new MesWorkOrderPart ( ) ;
BeanUtils . copyProperties ( part , newOrderPart , MesExtConstWords . ID , MesExtConstWords . SYSTEM_SYNC_STATUS ) ;
newOrderPart . setWorkOrderNo ( newWorkOrder . getWorkOrderNo ( ) ) ;
newOrderPartList . add ( newOrderPart ) ;
}
}
//工单发送给WMS数据
if ( ! CollectionUtils . isEmpty ( toWmsList ) ) {
for ( MesWorkOrderToWms toWms : toWmsList ) {
newOrderPartToWms = new MesWorkOrderToWms ( ) ;
BeanUtils . copyProperties ( toWms , newOrderPartToWms , MesExtConstWords . ID , MesExtConstWords . SYSTEM_SYNC_STATUS ) ;
newOrderPartToWms . setWorkOrderNo ( newWorkOrder . getWorkOrderNo ( ) ) ;
newToWmsList . add ( newOrderPartToWms ) ;
}
}
//生产工单日志
if ( ! CollectionUtils . isEmpty ( orderLogList ) ) {
for ( MesWorkOrderLog mesWorkOrderLog : orderLogList ) {
orderLog = new MesWorkOrderLog ( ) ;
BeanUtils . copyProperties ( mesWorkOrderLog , orderLog , MesExtConstWords . ID , MesExtConstWords . SYSTEM_SYNC_STATUS ) ;
orderLog . setWorkOrderNo ( newWorkOrder . getWorkOrderNo ( ) ) ;
newOrderLogList . add ( orderLog ) ;
}
}
//产品条码表
if ( ! Objects . isNull ( mesProduceSn ) ) {
newProduceSn = new MesProduceSn ( ) ;
BeanUtils . copyProperties ( mesProduceSn , newProduceSn , MesExtConstWords . ID , MesExtConstWords . SYSTEM_SYNC_STATUS ) ;
newProduceSn . setCustSn ( newWorkOrder . getCustSn ( ) ) ;
newProduceSn . setWorkOrderNo ( newWorkOrder . getWorkOrderNo ( ) ) ;
newProduceSn . setSerialNumber ( newWorkOrder . getWorkOrderNo ( ) ) ;
newProduceSn . setProductSn ( newWorkOrder . getWorkOrderNo ( ) ) ;
newProduceSnList . add ( newProduceSn ) ;
}
}
//数据持久化
baseRDao . saveAll ( newWrkOrderList ) ;
if ( ! CollectionUtils . isEmpty ( newOrderAssemblyList ) ) {
mesWorkOrderAssemblyService . insertBatch ( newOrderAssemblyList ) ;
}
if ( ! CollectionUtils . isEmpty ( newOrderPartList ) ) {
mesWorkOrderPartService . insertBatch ( newOrderPartList ) ;
}
if ( ! CollectionUtils . isEmpty ( newOrderLogList ) ) {
workOrderLogService . insertBatch ( newOrderLogList ) ;
}
if ( ! CollectionUtils . isEmpty ( newToWmsList ) ) {
mesWorkOrderToWmsService . insertBatch ( newToWmsList ) ;
}
}
@Override
public MesWorkOrder update ( MesWorkOrder bean ) {
MesWorkOrder result = getMesWorkOrder ( bean . getWorkOrderNo ( ) , bean . getOrganizeCode ( ) ) ;
@ -315,28 +429,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( StringUtil . isEmpty ( item . getCustPartNo ( ) ) ) {
getCustomerPart ( item ) ;
}
//生成工单号
List < String > orderList = new ArrayList < > ( ) ;
if ( item . getWorkOrderType ( ) ! = MesExtEnumUtil . ORDER_TYPE . UN_SORT . getValue ( ) ) {
GenSerialNoModel genSerialNoModel = new GenSerialNoModel ( MesCommonConstant . MES_WORK_CENTER_ORDER_NO ) ;
genSerialNoModel . setPartNo ( item . getWorkCenterCode ( ) ) ;
orderList = syncFuncService . syncSerialNo ( genSerialNoModel . organizeCode ( item . getOrganizeCode ( ) ) , item . getCreateUser ( ) , item . getOrganizeCode ( ) , 1 ) . getResultList ( ) ;
} else {
GenSerialNoModel genSerialNoModel = new GenSerialNoModel ( MesCommonConstant . MES_WORK_ORDER_NO ) ;
orderList = syncFuncService . syncSerialNo ( genSerialNoModel . organizeCode ( item . getOrganizeCode ( ) ) , item . getCreateUser ( ) , item . getOrganizeCode ( ) , 1 ) . getResultList ( ) ;
}
String orderNo = orderList . get ( 0 ) ;
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( orderNo , "workOrderNo" , orderPackBean ) ;
if ( baseRDao . isExitByHql ( orderPackBean ) ) {
MesException . throwMesBusiException ( "单号流水码生成重复" ) ;
}
item . setWorkOrderNo ( orderNo ) ;
//校验标识
//若工单类型为排序
List < MesWorkOrderToWms > saveMesWorkOrderToWms = new ArrayList < > ( ) ;
if ( item . getWorkOrderType ( ) = = MesExtEnumUtil . ORDER_TYPE . SORT . getValue ( ) ) {
ValidatorBean . checkNotNull ( item . getOrderFlag ( ) , "标识不能为空" ) ;
ValidatorBean . checkNotNull ( item . getCustPartNo ( ) , "客户物料号不能为空" ) ;
//校验产线类型和工单类型是否匹配
if ( ! Objects . equals ( mesWorkCenter . getCenterType ( ) , MesExtEnumUtil . ORDER_TYPE . SORT . getValue ( ) ) ) {
MesException . throwMesBusiException ( "产线【%s】类型为【%s】, 请选择排序产线" , mesWorkCenter . getWorkCenterCode ( ) ,
@ -365,7 +464,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//排序工单数量为1
item . setQty ( 1d ) ;
//发送工单给WMS
sendToWms ( item , mesWorkCenter , saveMesWorkOrderToWms ) ;
List < MesWorkOrderPart > orderPartList = sendToWms ( item , mesWorkCenter , saveMesWorkOrderToWms ) ;
//生成工单号
item . setWorkOrderNo ( getOrderNo ( item ) ) ;
//生成客户条码
item . setCustSn ( getCustSn ( item . getCustPartNo ( ) , item . getOrganizeCode ( ) , item . getCreateUser ( ) ) ) ;
//生成工单零件 工单装配件
insertMesWorkOrder ( item , orderPartList ) ;
} else if ( item . getWorkOrderType ( ) = = MesExtEnumUtil . ORDER_TYPE . UN_SORT . getValue ( ) ) {
ValidatorBean . checkNotNull ( item . getOrderFlag ( ) , "标识不能为空" ) ;
if ( Objects . isNull ( item . getQty ( ) ) | | item . getQty ( ) < = 0d ) {
@ -405,6 +511,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//发送工单给WMS
sendToWms ( item , mesWorkCenter , saveMesWorkOrderToWms ) ;
}
//生成工单号
if ( StringUtil . isEmpty ( item . getWorkOrderNo ( ) ) ) {
item . setWorkOrderNo ( getOrderNo ( item ) ) ;
}
//物料名称不存在,从物料信息中获取
MesPartSap mesPart = iMesPartSapService . getMesPartSapByPartNo ( item . getPartNo ( ) , item . getOrganizeCode ( ) ) ;
item . setPartName ( mesPart . getPartName ( ) ) ;
@ -414,29 +524,197 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item . setProduceTime ( TimeTool . getToday ( ) ) ;
item . setProductTime ( item . getProduceTime ( ) ) ;
}
item . setQcStatus ( MesExtEnumUtil . PRODUCE_QC_STATUS . QUALIFIED . getValue ( ) ) ;
item . setUnCompleteQty ( item . getQty ( ) ) ;
item . setFid ( UUID . randomUUID ( ) . toString ( ) ) ;
//保存发送WMS数据
if ( CollectionUtils . isNotEmpty ( saveMesWorkOrderToWms ) ) {
saveMesWorkOrderToWms . forEach ( t - > t . setWorkOrderNo ( item . getWorkOrderNo ( ) ) ) ;
mesWorkOrderToWmsService . insertBatch ( saveMesWorkOrderToWms ) ;
}
}
private void sendToWms ( MesWorkOrder item , MesWorkCenter mesWorkCenter , List < MesWorkOrderToWms > saveMesWorkOrderToWms ) {
private String getOrderNo ( MesWorkOrder item ) {
String orderNo ;
if ( item . getWorkOrderType ( ) = = MesExtEnumUtil . ORDER_TYPE . SORT . getValue ( ) ) {
GenSerialNoModel genSerialNoModel = new GenSerialNoModel ( "MES_WORK_ORDER_NO_WU_HAN" ) ;
List < String > resultList = syncFuncService . syncSerialNo ( genSerialNoModel . organizeCode ( item . getOrganizeCode ( ) ) , item . getCreateUser ( ) , item . getOrganizeCode ( ) , 1 ) . getResultList ( ) ;
String serialNo = resultList . get ( 0 ) . replace ( "MES_WORK_ORDER_NO_WU_HAN" , "" ) ;
orderNo = item . getOrganizeCode ( ) + item . getOrderFlag ( ) + item . getShiftCode ( ) + serialNo ;
} else if ( item . getWorkOrderType ( ) = = MesExtEnumUtil . ORDER_TYPE . BTO . getValue ( ) ) {
GenSerialNoModel genSerialNoModel = new GenSerialNoModel ( MesCommonConstant . MES_WORK_CENTER_ORDER_NO ) ;
genSerialNoModel . setPartNo ( item . getWorkCenterCode ( ) ) ;
orderNo = ( String ) syncFuncService . syncSerialNo ( genSerialNoModel . organizeCode ( item . getOrganizeCode ( ) ) , item . getCreateUser ( ) , item . getOrganizeCode ( ) , 1 ) . getResultList ( ) . get ( 0 ) ;
} else {
GenSerialNoModel genSerialNoModel = new GenSerialNoModel ( MesCommonConstant . MES_WORK_ORDER_NO ) ;
orderNo = ( String ) syncFuncService . syncSerialNo ( genSerialNoModel . organizeCode ( item . getOrganizeCode ( ) ) , item . getCreateUser ( ) , item . getOrganizeCode ( ) , 1 ) . getResultList ( ) . get ( 0 ) ;
}
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( orderNo , "workOrderNo" , orderPackBean ) ;
if ( baseRDao . isExitByHql ( orderPackBean ) ) {
MesException . throwMesBusiException ( "单号流水码生成重复" ) ;
}
return orderNo ;
}
private void insertMesWorkOrder ( MesWorkOrder item , List < MesWorkOrderPart > orderPartList ) {
/ * *
* 总 成 拆 bom , 变 成 子 零 件
* 替 换 子 零 件 , 通 过 替 换 后 的 零 件 , 去 找 排 序 工 艺
* /
Map < String , String > ptrRuleListMap = new HashMap < > ( ) ;
//是否修改为P单
boolean isModifyPOrder = false ;
//查询mes_part_ptr表, 根据物料清单查找ptr替换信息
if ( ! CollectionUtils . isEmpty ( orderPartList ) ) {
Map < String , MesWorkOrderPart > orderPartMap = orderPartList . stream ( ) . collect ( Collectors . toMap ( MesWorkOrderPart : : getPartNo , Function . identity ( ) ) ) ;
//先替换客户的ptr信息
String ptrInfo = item . getPtrInfo ( ) ;
if ( ! StringUtils . isEmpty ( ptrInfo ) ) {
List < String > ptrInfoList = Arrays . asList ( ptrInfo . replace ( "_" , "" ) . split ( "\\|" ) ) ;
if ( ! ptrInfoList . isEmpty ( ) ) {
List < MesPartPtr > custPartPtrList = getCustPartPtrList ( ptrInfoList , item . getOrganizeCode ( ) ) ;
for ( MesPartPtr mesPartPtr : custPartPtrList ) {
//根据mesPartPtr的目标零件号, 找到零件信息
String destPartNo = mesPartPtr . getDestPartNo ( ) ;
MesPartSap mesPartSap = mesPartSapService . getMesPartSapByPartNo ( destPartNo , item . getOrganizeCode ( ) ) ;
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap . get ( destPartNo ) ;
if ( orderPart ! = null ) {
orderPart . setPartNo ( mesPartSap . getPartNo ( ) ) ;
orderPart . setPartName ( mesPartSap . getPartName ( ) ) ;
orderPart . setShippingPartNo ( mesPartSap . getPartNo ( ) ) ;
if ( ! isModifyPOrder ) {
isModifyPOrder = true ;
}
}
}
}
}
List < String > partNoList = orderPartList . stream ( ) . map ( MesWorkOrderPart : : getPartNo ) . collect ( Collectors . toList ( ) ) ;
List < MesPartPtr > partPtrList = getPartPtrList ( item . getOrganizeCode ( ) , item . getWorkCenterCode ( ) , partNoList ) ;
//装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号, value 是规则
for ( MesPartPtr mesPartPtr : partPtrList ) {
//根据mesPartPtr的目标零件号, 找到零件信息
String destPartNo = mesPartPtr . getDestPartNo ( ) ;
String srcPartNo = mesPartPtr . getSrcPartNo ( ) ;
MesPartSap mesPartSap = mesPartSapService . getMesPartSapByPartNo ( destPartNo , item . getOrganizeCode ( ) ) ;
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap . get ( srcPartNo ) ;
if ( orderPart ! = null ) {
orderPart . setPartNo ( mesPartSap . getPartNo ( ) ) ;
orderPart . setPartName ( mesPartSap . getPartName ( ) ) ;
orderPart . setShippingPartNo ( mesPartSap . getPartNo ( ) ) ;
ptrRuleListMap . put ( mesPartSap . getPartNo ( ) , mesPartPtr . getReplacePartSnRule ( ) ) ;
if ( ! isModifyPOrder ) {
isModifyPOrder = true ;
}
//更新mes_part_ptr的实际数量 + 1
mesPartPtr . setPrtVehicleActualCount ( mesPartPtr . getPrtVehicleActualCount ( ) + 1 ) ;
ConvertBean . saveOrUpdate ( mesPartPtr , item . getModifyUser ( ) ) ;
partPtrRao . update ( mesPartPtr ) ;
DdlPackBean partPtrDetailPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getNumEqualPack ( mesPartPtr . getId ( ) , "ptrId" , partPtrDetailPackBean ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartNo ( ) , "totalPartNo" , partPtrDetailPackBean ) ;
List < MesPartPtrDetail > partPtrDetailList = partPtrDetailRao . findByHqlWhere ( partPtrDetailPackBean ) ;
if ( ! partPtrDetailList . isEmpty ( ) ) {
MesPartPtrDetail mesPartPtrDetail = partPtrDetailList . get ( 0 ) ;
mesPartPtrDetail . setQty ( mesPartPtrDetail . getQty ( ) + 1 ) ;
ConvertBean . saveOrUpdate ( mesPartPtrDetail , item . getModifyUser ( ) ) ;
partPtrDetailRao . update ( mesPartPtrDetail ) ;
}
//更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么
}
}
}
// 生成装配件清单
if ( isModifyPOrder ) {
item . setOrderFlag ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . PTR . getValue ( ) ) ;
}
if ( ! CollectionUtils . isEmpty ( orderPartList ) ) {
for ( MesWorkOrderPart orderPart : orderPartList ) {
orderPart . setOrganizeCode ( item . getOrganizeCode ( ) ) ;
orderPart . setWorkOrderNo ( item . getWorkOrderNo ( ) ) ;
ConvertBean . saveOrUpdate ( orderPart , item . getModifyUser ( ) ) ;
}
workOrderPartRao . saveAll ( orderPartList ) ;
}
List < MesWorkOrderAssembly > assemblyList = getAssemblyList ( item . getWorkCenterCode ( ) , item . getCarModelCode ( ) , orderPartList , item . getOrganizeCode ( ) ) ;
if ( ! CollectionUtils . isEmpty ( assemblyList ) ) {
for ( MesWorkOrderAssembly orderAssembly : assemblyList ) {
if ( ptrRuleListMap . get ( orderAssembly . getPartNo ( ) ) ! = null ) {
orderAssembly . setMatchRule ( ptrRuleListMap . get ( orderAssembly . getPartNo ( ) ) ) ;
}
orderAssembly . setPartNo ( item . getPartNo ( ) ) ;
orderAssembly . setPartName ( item . getPartName ( ) ) ;
orderAssembly . setWorkOrderNo ( item . getWorkOrderNo ( ) ) ;
orderAssembly . setAssemblyStatus ( MesExtEnumUtil . ASSEMBLY_STATUS . ASSEMBLY_STATUS_30 . getValue ( ) ) ;
orderAssembly . setOrganizeCode ( item . getOrganizeCode ( ) ) ;
orderAssembly . setProductSn ( item . getWorkOrderNo ( ) ) ;
orderAssembly . setAreaCode ( item . getAreaCode ( ) ) ;
ConvertBean . saveOrUpdate ( orderAssembly , item . getCreateUser ( ) ) ;
}
workOrderAssemblyRepository . saveAll ( assemblyList ) ;
List < String > cellCodeList = assemblyList . stream ( ) . map ( MesWorkOrderAssembly : : getWorkCellCode ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
Map < String , List < MesWorkOrderAssembly > > cellCodeMap = assemblyList . stream ( ) . collect ( Collectors . groupingBy ( MesWorkOrderAssembly : : getWorkCellCode ) ) ;
for ( String cellCode : cellCodeList ) {
MesQueueOrder mesQueueOrder = new MesQueueOrder ( ) ;
BeanUtils . copyProperties ( item , mesQueueOrder , "id" ) ;
mesQueueOrder . setWorkCellCode ( cellCode ) ;
mesQueueOrder . setProcessSeq ( cellCodeMap . get ( cellCode ) . get ( 0 ) . getProcessSeq ( ) ) ;
mesQueueOrder . setSerialNumber ( item . getWorkOrderNo ( ) ) ;
mesQueueOrder . setProductSn ( item . getWorkOrderNo ( ) ) ;
mesQueueOrder . setStatus ( MesExtEnumUtil . QUEUE_ORDER_STATUS . CREATE . getValue ( ) ) ;
ConvertBean . saveOrUpdate ( mesQueueOrder , item . getCreateUser ( ) ) ;
queueOrderRao . insert ( mesQueueOrder ) ;
}
}
//生成条码表
MesProduceSn mesProduceSn = new MesProduceSn ( ) ;
mesProduceSn . setProductSn ( item . getWorkOrderNo ( ) ) ;
mesProduceSn . setCustSn ( item . getCustSn ( ) ) ;
mesProduceSn . setWorkOrderNo ( item . getWorkOrderNo ( ) ) ;
mesProduceSn . setOrganizeCode ( item . getOrganizeCode ( ) ) ;
mesProduceSn . setFid ( UUID . randomUUID ( ) . toString ( ) ) ;
mesProduceSn . setCustCode ( item . getCustCode ( ) ) ;
mesProduceSn . setCustPartNo ( item . getCustPartNo ( ) ) ;
mesProduceSn . setPartNo ( item . getPartNo ( ) ) ;
mesProduceSn . setPartName ( item . getPartName ( ) ) ;
mesProduceSn . setShiftCode ( item . getShiftCode ( ) ) ;
mesProduceSn . setWorkCenterCode ( item . getWorkCenterCode ( ) ) ;
mesProduceSn . setPrintStatus ( MesExtEnumUtil . PRINT_STATUS . UNPRINT . getValue ( ) ) ;
mesProduceSn . setQcStatus ( MesExtEnumUtil . PRODUCE_QC_STATUS . QUALIFIED . getValue ( ) ) ;
mesProduceSn . setQty ( 1.0 ) ;
mesProduceSn . setSerialNumber ( item . getWorkOrderNo ( ) ) ;
mesProduceSn . setSnStatus ( MesExtEnumUtil . PRODUCE_SN_STATUS . CREATE . getValue ( ) ) ;
mesProduceSn . setSnType ( MesExtEnumUtil . PRODUCE_SN_TYPE . STANDARD . getValue ( ) ) ;
mesProduceSn . setFid ( UUID . randomUUID ( ) . toString ( ) ) ;
mesProduceSn . setAreaCode ( item . getAreaCode ( ) ) ;
ConvertBean . saveOrUpdate ( mesProduceSn , item . getCreateUser ( ) ) ;
mesProduceSnRao . insert ( mesProduceSn ) ;
}
private List < MesWorkOrderPart > sendToWms ( MesWorkOrder item , MesWorkCenter mesWorkCenter , List < MesWorkOrderToWms > saveMesWorkOrderToWms ) {
//非试制单
List < MesBom > bomList = null ;
MesProductVersion mesProductVersion = null ;
if ( ! MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . P . getValue ( ) . equals ( item . getOrderFlag ( ) ) ) {
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion ( item , mesWorkCenter ) ;
mesProductVersion = getMesProductVersion ( item , mesWorkCenter ) ;
item . setProductVersion ( mesProductVersion . getProductVersion ( ) ) ;
//获取bom信息
bomList = mesBomService . findMesBomByPartNoAndBomVersion ( item . getPartNo ( ) , item . getOrganizeCode ( ) , mesProductVersion . getAlternativePartList ( ) ) ;
}
//是否自动发布
isAuto ( item , saveMesWorkOrderToWms , bomList ) ;
return isAuto ( item , saveMesWorkOrderToWms , bomList , mesProductVersion ) ;
}
private void isAuto ( MesWorkOrder item , List < MesWorkOrderToWms > saveMesWorkOrderToWms , List < MesBom > bomList ) {
private List < MesWorkOrderPart > isAuto ( MesWorkOrder item , List < MesWorkOrderToWms > saveMesWorkOrderToWms , List < MesBom > bomList , MesProductVersion mesProductVersion ) {
MesPartProdGroup mesPartProdGroup = null ;
if ( StringUtil . isEmpty ( item . getPartProdGroupCode ( ) ) ) {
mesPartProdGroup = getMesPartProdGroup ( item ) ;
@ -465,6 +743,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} else {
item . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . CREATE . getValue ( ) ) ;
}
// 打散bom
List < MesWorkOrderPart > workOrderPartList = new ArrayList < > ( ) ;
if ( mesPartProdGroup . getIsDisassembleBom ( ) = = CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) & & ! Objects . isNull ( mesProductVersion ) ) {
workOrderPartList = dismantleBom ( findBomList ( item . getOrganizeCode ( ) , iMesPartService . getPartByPartNo ( item . getPartNo ( ) , item . getOrganizeCode ( ) ) , mesProductVersion . getAlternativePartList ( ) ) , item . getQty ( ) , item . getOrganizeCode ( ) , item . getWorkCellCode ( ) , item . getWorkOrderNo ( ) ) ;
}
return workOrderPartList ;
}
private MesPrintQueue insertPrintQueue ( MesWorkOrder workOrder ) {
@ -483,15 +768,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private MesPartProdGroup getMesPartProdGroup ( MesWorkOrder item ) {
MesPartProdGroupDetail mesPartProdGroupDetail = new MesPartProdGroupDetail ( ) ;
mesPartProdGroupDetail . setWorkCenterCode ( item . getWorkCenterCode ( ) ) ;
mesPartProdGroupDetail . setP artNo( item . getPartNo ( ) ) ;
mesPartProdGroupDetail . setP roductP artNo( item . getPartNo ( ) ) ;
mesPartProdGroupDetail . setOrganizeCode ( item . getOrganizeCode ( ) ) ;
List < MesPartProdGroup > mesPartProdGroupList = mesPartProdGroupService . findMesPartProdGroup ( mesPartProdGroupDetail ) ;
if ( CollectionUtils . isEmpty ( mesPartProdGroupList ) ) {
MesException . throwMesBusiException ( "生产线代码【%s】零件号【%s】对应的零件生产组信息没有维护" ,
item . getWorkCenterCode ( ) , item . getPartNo ( ) ) ;
}
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList . iterator ( ) . next ( ) ;
return mesPartProdGroup ;
return mesPartProdGroupList . iterator ( ) . next ( ) ;
}
private void getCustomerPart ( MesWorkOrder item ) {
@ -517,8 +801,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private MesProductVersion getMesProductVersion ( MesWorkOrder item , MesWorkCenter mesWorkCenter ) {
DdlPackBean ddlPackBean ;
ddlPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartNo ( ) , "partNo" , ddlPackBean ) ;
//DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean);
ddlPackBean . setOrderByStr ( " order by createDatetime desc " ) ;
@ -1256,15 +1539,12 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
MesLabelTemplate labelTemplate = labelTemplateService . getLabelTemplate ( printTemplate , organizeCode ) ;
//根据反射获取策略类--封装打印数据
String methodCode = labelTemplate . getMethodCode ( ) ;
//模板信息丢失抛出异常
if ( StringUtils. isEmpty ( labelTemplate . getMethodCode ( ) ) ) {
if ( Objects . isNull ( labelTemplate ) | | StringUtils . isEmpty ( labelTemplate . getMethodCode ( ) ) ) {
MesException . throwMesBusiException ( "工单【%s】关联零件生产组【%s】打印模板【%s】为空" , mesWorkOrder . getWorkOrderNo ( ) , mesWorkOrder . getPartProdGroupCode ( ) , labelTemplate . getTemplateCode ( ) ) ;
}
//根据反射获取策略类--封装打印数据
String methodCode = labelTemplate . getMethodCode ( ) ;
Map < String , Object > modelMap = new HashMap < > ( ) ;
modelMap . put ( "mesWorkOrder" , mesWorkOrder ) ;
modelMap . put ( "mesPartProdGroup" , mesPartProdGroup ) ;
@ -1638,7 +1918,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( statusList , "workOrderStatus" , packBean ) ;
return mesWorkOrder RDao. findByHqlWhere ( packBean ) ;
return base RDao. findByHqlWhere ( packBean ) ;
}
private MesMove createMove ( MesPartSap mesPart , String source , String target , String org , String workCenterCode , double qty , String sn , Integer moveType ) {
@ -1722,7 +2002,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String orderNo = orderList . get ( 0 ) ;
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( orderNo , "workOrderNo" , orderPackBean ) ;
if ( mesWorkOrder RDao. isExitByHql ( orderPackBean ) ) {
if ( base RDao. isExitByHql ( orderPackBean ) ) {
MesException . throwMesBusiException ( "单号流水码生成重复" ) ;
}
item . setWorkOrderNo ( orderNo ) ;
@ -1953,4 +2233,240 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return count > 0 ;
}
private String getCustSn ( String partNo , String organizeCode , String userName ) {
Calendar custCalendar = Calendar . getInstance ( ) ;
custCalendar . setTime ( new Date ( ) ) ;
GenSerialNoModel custGenSerialNoModel = new GenSerialNoModel ( "WH_CUST_SN_RULE" ) ;
String prefix = partNo . substring ( 0 , partNo . length ( ) - 4 ) ;
String partNo4 = partNo . substring ( partNo . length ( ) - 4 ) . toUpperCase ( ) ;
custGenSerialNoModel . setPartNo ( prefix + partNo4 ) ;
String year = custCalendar . get ( Calendar . YEAR ) + "" ;
custGenSerialNoModel . setYear ( year . substring ( 2 ) ) ;
custGenSerialNoModel . setDay ( String . format ( "%03d" , custCalendar . get ( Calendar . DAY_OF_YEAR ) ) ) ;
List < String > custNumRuleList = syncFuncService . syncSerialNo ( custGenSerialNoModel , userName , organizeCode , 1 ) . getResultList ( ) ;
// [)>%RS%06%GS%Y,4110000000000X,%GS%P,%GS%12V,545238347,%GS%T1A,A2B4C,%RS%%EOT%
//截取替换为ascii码
String snOriginal = custNumRuleList . get ( 0 ) ;
String [ ] split = snOriginal . split ( "%RS%" ) ;
StringBuilder rsStr = new StringBuilder ( ) ;
for ( int i = 0 ; i < split . length - 1 ; i + + ) {
rsStr . append ( split [ i ] ) . append ( ( char ) 30 ) ;
}
rsStr . append ( split [ split . length - 1 ] ) ;
StringBuilder gsStr = new StringBuilder ( ) ;
String [ ] split1 = rsStr . toString ( ) . split ( "%GS%" ) ;
for ( int i = 0 ; i < split1 . length - 1 ; i + + ) {
gsStr . append ( split1 [ i ] ) . append ( ( char ) 29 ) ;
}
gsStr . append ( split1 [ split1 . length - 1 ] ) ;
String [ ] split2 = gsStr . toString ( ) . split ( "%EOT%" ) ;
return split2 [ 0 ] + ( char ) 4 ;
}
private List < MesWorkOrderPart > dismantleBom ( List < MesBom > bomList , double qty , String organizeCode , String workCellCode , String workOrderNo ) {
List < MesWorkOrderPart > orderPartList = new ArrayList < > ( ) ;
//1.根据bomList中的subPartNo 查询零件清单 partList
List < String > partNoList = bomList . stream ( ) . map ( MesBom : : getItemPartNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < MesPartSap > partSapList = mesPartSapService . findMesPartSapByPartNoList ( partNoList , organizeCode ) ;
Map < String , MesPartSap > partMap = partSapList . stream ( ) . collect ( Collectors . toMap ( MesPartSap : : getPartNo , Function . identity ( ) ) ) ;
//2.遍历bomList
for ( MesBom bom : bomList ) {
MesWorkOrderPart orderPart = new MesWorkOrderPart ( ) ;
MesPartSap partSap = partMap . get ( bom . getItemPartNo ( ) ) ;
if ( partSap = = null ) {
MesException . throwMesBusiException ( "工厂【%s】零件号【%s】未查到零件信息" , organizeCode , bom . getItemPartNo ( ) ) ;
}
List < MesWorkOrderPart > orderParts = orderPartList . stream ( ) . filter ( item - > item . getPartNo ( ) . equals ( partSap . getPartNo ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! orderParts . isEmpty ( ) ) {
MesWorkOrderPart tempPart = orderParts . get ( 0 ) ;
tempPart . setItemQty ( tempPart . getItemQty ( ) + bom . getItemQty ( ) * qty ) ;
continue ;
}
orderPart . setPartName ( partSap . getPartName ( ) ) ;
orderPart . setPartNo ( partSap . getPartNo ( ) ) ;
orderPart . setItemQty ( bom . getItemQty ( ) * qty ) ;
orderPart . setItemUnit ( partSap . getUnit ( ) ) ;
orderPart . setSourceId ( bom . getId ( ) ) ;
orderPart . setShippingPartNo ( partSap . getPartNo ( ) ) ;
orderPart . setWorkOrderNo ( workOrderNo ) ;
orderPart . setWorkCellCode ( workCellCode ) ;
orderPartList . add ( orderPart ) ;
}
return orderPartList ;
}
private List < MesPartPtr > getPartPtrList ( String organizeCode , String workCenterCode , List < String > partNoList ) {
DdlPackBean partPtrPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , partPtrPackBean ) ;
DdlPreparedPack . getInPackList ( partNoList , "srcPartNo" , partPtrPackBean ) ;
DdlPreparedPack . getStringSmallerPack ( TimeTool . getNowTime ( "yyyy-MM-dd HH:mm:ss" ) , "startTime" , partPtrPackBean ) ;
DdlPreparedPack . getStringBiggerPack ( TimeTool . getNowTime ( "yyyy-MM-dd HH:mm:ss" ) , "endTime" , partPtrPackBean ) ;
DdlPreparedPack . getIsNotNull ( "prtVehicleCount" , partPtrPackBean ) ;
List < MesPartPtr > partPtrList = partPtrRao . findByHqlWhere ( partPtrPackBean ) ;
partPtrList = partPtrList . stream ( ) . filter ( item - > item . getPrtVehicleCount ( ) ! = null & & item . getPrtVehicleCount ( ) > 0 )
. filter ( item - > item . getPrtVehicleCount ( ) > item . getPrtVehicleActualCount ( ) )
. collect ( Collectors . toList ( ) ) ;
return partPtrList ;
}
//根据排序信息PTR零件号 获取 ptr信息
private List < MesPartPtr > getCustPartPtrList ( List < String > ptrInfoList , String organizeCode ) {
DdlPackBean partPtrPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( ptrInfoList , "seqInfoPrtPart" , partPtrPackBean ) ;
return partPtrRao . findByHqlWhere ( partPtrPackBean ) ;
}
private List < MesWorkOrderAssembly > getAssemblyList ( String workCenterCode , String vehicleNo , List < MesWorkOrderPart > workOrderPartList , String organizeCode ) {
//TM_BAS_WORK_ORDER_ASSEMBLY_SETTING 对应 mes_prod_rule_sort_cfg 排序生产规则
List < MesWorkOrderAssembly > workOrderAssemblyList = new ArrayList < > ( ) ;
List < String > partNoList = workOrderPartList . stream ( ) . map ( MesWorkOrderPart : : getPartNo ) . collect ( Collectors . toList ( ) ) ;
DdlPackBean prodRuleSortPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , prodRuleSortPackBean ) ;
DdlPreparedPack . getInPackList ( partNoList , "assemblyPartNo" , prodRuleSortPackBean ) ;
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List < MesProdRuleSortCfg > sortCfgList = mesProdRuleSortCfgRao . findByHqlWhere ( prodRuleSortPackBean ) ;
List < MesProdRuleSortCfg > sortCfgListFilter = sortCfgList . stream ( ) . filter ( item - > partNoList . contains ( item . getAssemblyPartNo ( ) ) ) . collect ( Collectors . toList ( ) ) ;
Map < String , List < MesWorkOrderPart > > orderPartMap = workOrderPartList . stream ( ) . collect ( Collectors . groupingBy ( MesWorkOrderPart : : getPartNo ) ) ;
//遍历排序生产规则
for ( MesProdRuleSortCfg sortCfg : sortCfgListFilter ) {
List < MesWorkOrderPart > orderPartList = orderPartMap . get ( sortCfg . getAssemblyPartNo ( ) ) ;
MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly ( ) ;
MesWorkOrderPart orderPart = orderPartList . get ( 0 ) ;
//1.逻辑储量程序sortCfg.isLogicNum
if ( ( sortCfg . getIsLogicNum ( ) ! = null & & sortCfg . getIsLogicNum ( ) = = CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) ) & & ( sortCfg . getLogicNum ( ) ! = null & & sortCfg . getLogicNum ( ) > 0 ) ) {
Double total = orderPartList . stream ( ) . map ( MesWorkOrderPart : : getItemQty ) . reduce ( Double : : sum ) . get ( ) ;
if ( ! total . equals ( sortCfg . getLogicNum ( ) ) ) {
log . info ( "零件号:{}的数量:{}对应排序规则{}的逻辑数量:{}不一致" , orderPart . getPartNo ( ) , total , sortCfg . getWorkCenterCode ( ) , sortCfg . getLogicNum ( ) ) ;
continue ;
}
}
//2.当排序规则的车型不为空时,则需要与参数匹配,如果不符合 则不加这个装配项
if ( ! StringUtils . isEmpty ( sortCfg . getVehicleNo ( ) ) & & ! sortCfg . getVehicleNo ( ) . equals ( vehicleNo ) ) {
continue ;
}
orderAssembly . setAssemblyPartNo ( sortCfg . getAssemblyPartNo ( ) ) ;
orderAssembly . setAssemblyPartName ( sortCfg . getAssemblyPartName ( ) ) ;
orderAssembly . setProcessName ( sortCfg . getProcessName ( ) ) ;
orderAssembly . setWorkCenterCode ( sortCfg . getWorkCenterCode ( ) ) ;
orderAssembly . setDisplayRule ( sortCfg . getDisplayRule ( ) ) ;
orderAssembly . setMatchRule ( sortCfg . getMatchRule ( ) ) ;
orderAssembly . setMatchType ( sortCfg . getMatchType ( ) ) ;
orderAssembly . setPrintType ( sortCfg . getPrintType ( ) ) ;
orderAssembly . setProcessCode ( sortCfg . getProcessCode ( ) ) ;
orderAssembly . setDisplaySeq ( sortCfg . getDisplaySeq ( ) ) ;
orderAssembly . setDisplayValue ( sortCfg . getDisplayValue ( ) ) ;
orderAssembly . setProcessSeq ( sortCfg . getProcessSeq ( ) ) ;
orderAssembly . setCraftName ( sortCfg . getCraftName ( ) ) ;
orderAssembly . setCraftCode ( sortCfg . getCraftCode ( ) ) ;
orderAssembly . setRouteSeq ( sortCfg . getRouteSeq ( ) ) ;
orderAssembly . setWorkCellCode ( sortCfg . getWorkCellCode ( ) ) ;
orderAssembly . setOrderPartId ( orderPart . getId ( ) . toString ( ) ) ;
orderAssembly . setEquipmentCode ( sortCfg . getEquipmentCode ( ) ) ;
orderAssembly . setReportType ( sortCfg . getReportType ( ) ) ;
if ( sortCfg . getReportType ( ) ! = null & & sortCfg . getReportType ( ) = = MesExtEnumUtil . MES_REPORT_TYPE . REPORT . getValue ( ) ) {
orderAssembly . setReportStatus ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_30 . getValue ( ) ) ;
} else {
orderAssembly . setReportStatus ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_10 . getValue ( ) ) ;
}
orderAssembly . setReportPartNo ( sortCfg . getReportPartNo ( ) ) ;
orderAssembly . setImageFileId ( sortCfg . getImageFileId ( ) ) ;
orderAssembly . setCraftCode ( sortCfg . getCraftCode ( ) ) ;
orderAssembly . setCraftName ( sortCfg . getCraftName ( ) ) ;
orderAssembly . setPartTypeCode ( sortCfg . getPartTypeCode ( ) ) ;
orderAssembly . setShowColor ( sortCfg . getShowColor ( ) ) ;
orderAssembly . setProductPartNo ( sortCfg . getProductPartNo ( ) ) ;
orderAssembly . setPid ( sortCfg . getId ( ) ) ;
orderAssembly . setWorkCenterCode ( workCenterCode ) ;
orderAssembly . setPreCraftCode ( sortCfg . getPreCraftCode ( ) ) ;
workOrderAssemblyList . add ( orderAssembly ) ;
}
//车型不为空的逻辑--用于报工
DdlPackBean reportRuleSortPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , reportRuleSortPackBean ) ;
DdlPreparedPack . getStringEqualPack ( vehicleNo , "vehicleNo" , reportRuleSortPackBean ) ;
DdlPreparedPack . getNotInPack ( partNoList , "assemblyPartNo" , reportRuleSortPackBean ) ;
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List < MesProdRuleSortCfg > prodCfgList = mesProdRuleSortCfgRao . findByHqlWhere ( reportRuleSortPackBean ) ;
for ( MesProdRuleSortCfg ruleSortCfg : prodCfgList ) {
MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly ( ) ;
orderAssembly . setAssemblyPartNo ( ruleSortCfg . getAssemblyPartNo ( ) ) ;
orderAssembly . setAssemblyPartName ( ruleSortCfg . getAssemblyPartName ( ) ) ;
orderAssembly . setProcessName ( ruleSortCfg . getProcessName ( ) ) ;
orderAssembly . setWorkCenterCode ( ruleSortCfg . getWorkCenterCode ( ) ) ;
orderAssembly . setDisplayRule ( ruleSortCfg . getDisplayRule ( ) ) ;
orderAssembly . setMatchRule ( ruleSortCfg . getMatchRule ( ) ) ;
orderAssembly . setMatchType ( ruleSortCfg . getMatchType ( ) ) ;
orderAssembly . setPrintType ( ruleSortCfg . getPrintType ( ) ) ;
orderAssembly . setProcessCode ( ruleSortCfg . getProcessCode ( ) ) ;
orderAssembly . setWorkCellCode ( ruleSortCfg . getWorkCellCode ( ) ) ;
orderAssembly . setProcessCode ( ruleSortCfg . getProcessCode ( ) ) ;
orderAssembly . setProcessName ( ruleSortCfg . getProcessName ( ) ) ;
orderAssembly . setCraftCode ( ruleSortCfg . getCraftCode ( ) ) ;
orderAssembly . setRouteSeq ( ruleSortCfg . getRouteSeq ( ) ) ;
orderAssembly . setEquipmentCode ( ruleSortCfg . getEquipmentCode ( ) ) ;
orderAssembly . setReportType ( ruleSortCfg . getReportType ( ) ) ;
if ( ruleSortCfg . getReportType ( ) ! = null & & ruleSortCfg . getReportType ( ) = = MesExtEnumUtil . MES_REPORT_TYPE . REPORT . getValue ( ) ) {
orderAssembly . setReportStatus ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_30 . getValue ( ) ) ;
} else {
orderAssembly . setReportStatus ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_10 . getValue ( ) ) ;
}
orderAssembly . setReportPartNo ( ruleSortCfg . getReportPartNo ( ) ) ;
orderAssembly . setProcessSeq ( ruleSortCfg . getProcessSeq ( ) ) ;
orderAssembly . setPid ( ruleSortCfg . getId ( ) ) ;
orderAssembly . setImageFileId ( ruleSortCfg . getImageFileId ( ) ) ;
orderAssembly . setPartTypeCode ( ruleSortCfg . getPartTypeCode ( ) ) ;
orderAssembly . setMaxValue ( ruleSortCfg . getMaxValue ( ) ) ;
orderAssembly . setMinValue ( ruleSortCfg . getMinValue ( ) ) ;
orderAssembly . setProductPartNo ( ruleSortCfg . getProductPartNo ( ) ) ;
orderAssembly . setPreCraftCode ( ruleSortCfg . getPreCraftCode ( ) ) ;
workOrderAssemblyList . add ( orderAssembly ) ;
}
//查询所有共用的零件 且没有零件号,多用于螺钉---查询排序加工规则
DdlPackBean prodRuleSortPublicPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , prodRuleSortPublicPackBean ) ;
DdlPreparedPack . getIsNull ( "assemblyPartNo" , prodRuleSortPublicPackBean ) ;
List < MesProdRuleSortCfg > ruleSortCfgs = mesProdRuleSortCfgRao . findByHqlWhere ( prodRuleSortPublicPackBean ) ;
for ( MesProdRuleSortCfg ruleSortCfg : ruleSortCfgs ) {
MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly ( ) ;
orderAssembly . setAssemblyPartNo ( ruleSortCfg . getAssemblyPartNo ( ) ) ;
orderAssembly . setAssemblyPartName ( ruleSortCfg . getAssemblyPartName ( ) ) ;
orderAssembly . setProcessName ( ruleSortCfg . getProcessName ( ) ) ;
orderAssembly . setWorkCenterCode ( ruleSortCfg . getWorkCenterCode ( ) ) ;
orderAssembly . setDisplayRule ( ruleSortCfg . getDisplayRule ( ) ) ;
orderAssembly . setMatchRule ( ruleSortCfg . getMatchRule ( ) ) ;
orderAssembly . setMatchType ( ruleSortCfg . getMatchType ( ) ) ;
orderAssembly . setPrintType ( ruleSortCfg . getPrintType ( ) ) ;
orderAssembly . setProcessCode ( ruleSortCfg . getProcessCode ( ) ) ;
orderAssembly . setWorkCellCode ( ruleSortCfg . getWorkCellCode ( ) ) ;
orderAssembly . setProcessCode ( ruleSortCfg . getProcessCode ( ) ) ;
orderAssembly . setProcessName ( ruleSortCfg . getProcessName ( ) ) ;
orderAssembly . setCraftCode ( ruleSortCfg . getCraftCode ( ) ) ;
orderAssembly . setRouteSeq ( ruleSortCfg . getRouteSeq ( ) ) ;
orderAssembly . setEquipmentCode ( ruleSortCfg . getEquipmentCode ( ) ) ;
orderAssembly . setReportType ( ruleSortCfg . getReportType ( ) ) ;
if ( ruleSortCfg . getReportType ( ) ! = null & & ruleSortCfg . getReportType ( ) = = MesExtEnumUtil . MES_REPORT_TYPE . REPORT . getValue ( ) ) {
orderAssembly . setReportStatus ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_30 . getValue ( ) ) ;
} else {
orderAssembly . setReportStatus ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_10 . getValue ( ) ) ;
}
orderAssembly . setReportPartNo ( ruleSortCfg . getReportPartNo ( ) ) ;
orderAssembly . setProcessSeq ( ruleSortCfg . getProcessSeq ( ) ) ;
orderAssembly . setPid ( ruleSortCfg . getId ( ) ) ;
orderAssembly . setImageFileId ( ruleSortCfg . getImageFileId ( ) ) ;
orderAssembly . setPartTypeCode ( ruleSortCfg . getPartTypeCode ( ) ) ;
orderAssembly . setMaxValue ( ruleSortCfg . getMaxValue ( ) ) ;
orderAssembly . setMinValue ( ruleSortCfg . getMinValue ( ) ) ;
orderAssembly . setProductPartNo ( ruleSortCfg . getProductPartNo ( ) ) ;
orderAssembly . setPreCraftCode ( ruleSortCfg . getPreCraftCode ( ) ) ;
workOrderAssemblyList . add ( orderAssembly ) ;
}
return workOrderAssemblyList ;
}
}