@ -35,18 +35,19 @@ import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean ;
import com.alibaba.fastjson.JSONObject ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.commons.collections.CollectionUtils ;
import org.apache.commons.collections.map.CaseInsensitiveMap ;
import org.springframework.beans.BeanUtils ;
import org.springframework.beans.BeansException ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import org.springframework.util.CollectionUtils ;
import org.springframework.util.StringUtils ;
import java.text.SimpleDateFormat ;
import java.util.* ;
import java.util.function.Function ;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
@Service
@Slf4j
@ -156,6 +157,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private MesQueueOrderRepository queueOrderRao ;
@Autowired
private MesPullingOrderInfoRepository pullingOrderInfoRepository ;
@Autowired
private IMesWorkOrderAssemblyService mesWorkOrderAssemblyService ;
@Autowired
@ -246,9 +250,11 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( ! Objects . equals ( bean . getWorkOrderStatus ( ) , result . getWorkOrderStatus ( ) ) & & bean . getWorkOrderStatus ( ) = = MesExtEnumUtil . ORDER_STATUS . RELEASE . getValue ( ) ) {
isSavePrintQueue = true ;
}
//排序工单 关闭工单对列表
//排序工单 关闭 同时关闭 创建状态单工单队列 JIS拉动单 SPS拉动单 目视单打印队列
if ( ! Objects . equals ( bean . getWorkOrderStatus ( ) , result . getWorkOrderStatus ( ) ) & & MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) = = bean . getWorkOrderStatus ( ) & & MesExtEnumUtil . ORDER_TYPE . SORT . getValue ( ) = = bean . getWorkOrderType ( ) ) {
closeMesQueueOrder ( bean . getWorkOrderNo ( ) , bean . getOrganizeCode ( ) , AuthUtilExt . getUserName ( ) ) ;
closeMesPullingOrderInfo ( bean . getWorkOrderNo ( ) , bean . getOrganizeCode ( ) , AuthUtilExt . getUserName ( ) ) ;
closeMesPrintQueue ( bean . getWorkOrderNo ( ) , bean . getOrganizeCode ( ) , AuthUtilExt . getUserName ( ) ) ;
}
result . setWorkOrderStatus ( bean . getWorkOrderStatus ( ) ) ;
}
@ -262,24 +268,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override
protected void setPackQueryBean ( MesWorkOrder bean , DdlPackBean packBean ) {
DdlPreparedPack . getStringLikerPack ( bean . getWorkOrderNo ( ) , "workOrderNo" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getPartName ( ) , "partName" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getCreateUser ( ) , "createUser" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getPartNo ( ) , "partNo" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( bean . getCustPartNo ( ) , "custPartNo" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getWorkCenterCode ( ) , "workCenterCode" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getVinCode ( ) , "vinCode" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( bean . getOrderFlag ( ) , "orderFlag" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getWorkOrderNo ( ) , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getPartName ( ) , MesExtConstWords . PART_NAME , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getCreateUser ( ) , MesExtConstWords . CREATE_USER , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getPartNo ( ) , MesExtConstWords . PART_NO , packBean ) ;
DdlPreparedPack . getStringEqualPack ( bean . getCustPartNo ( ) , MesExtConstWords . CUST_PART_NO , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getWorkCenterCode ( ) , MesExtConstWords . WORK_CENTER_CODE , packBean ) ;
DdlPreparedPack . getStringLikerPack ( bean . getVinCode ( ) , MesExtConstWords . VIN_CODE , packBean ) ;
DdlPreparedPack . getStringEqualPack ( bean . getOrderFlag ( ) , MesExtConstWords . ORDER_FLAG , packBean ) ;
if ( ! StringUtil . isEmpty ( bean . getWorkOrderStatusQuery ( ) ) ) {
DdlPreparedPack . getInPackList ( Arrays . stream ( bean . getWorkOrderStatusQuery ( ) . split ( MesExtConstWords . COMMA ) ) . map ( Integer : : parseInt ) . collect ( Collectors . toList ( ) ) , "workOrderStatus" , packBean ) ;
} else DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderStatus ( ) , "workOrderStatus" , packBean ) ;
DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderType ( ) , "workOrderType" , packBean ) ;
DdlPreparedPack . getStringBiggerPack ( bean . getCreateDateTimeStart ( ) , "createDatetime" , packBean ) ;
DdlPreparedPack . getStringSmallerPack ( bean . getCreateDateTimeEnd ( ) , "createDatetime" , packBean ) ;
DdlPreparedPack . getStringBiggerPack ( bean . getStartTimeStart ( ) , "planStartTime" , packBean ) ;
DdlPreparedPack . getStringSmallerPack ( bean . getStartTimeEnd ( ) , "planStartTime" , packBean ) ;
DdlPreparedPack . getStringBiggerPack ( bean . getEndTimeStart ( ) , "planEndTime" , packBean ) ;
DdlPreparedPack . getStringSmallerPack ( bean . getEndTimeEnd ( ) , "planEndTime" , packBean ) ;
DdlPreparedPack . getInPackList ( Arrays . stream ( bean . getWorkOrderStatusQuery ( ) . split ( MesExtConstWords . COMMA ) ) . map ( Integer : : parseInt ) . collect ( Collectors . toList ( ) ) , MesExtConstWords . WORK_ORDER_STATUS , packBean ) ;
} else DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderStatus ( ) , MesExtConstWords . WORK_ORDER_STATUS , packBean ) ;
DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderType ( ) , MesExtConstWords . WORK_ORDER_TYPE , packBean ) ;
DdlPreparedPack . timeBuilder ( bean . getCreateDateTimeStart ( ) , bean . getCreateDateTimeEnd ( ) , MesExtConstWords . CREATE_DATE_TIME , packBean , false ) ;
DdlPreparedPack . timeBuilder ( bean . getStartTimeStart ( ) , bean . getStartTimeEnd ( ) , MesExtConstWords . PLAN_START_TIME , packBean , false ) ;
DdlPreparedPack . timeBuilder ( bean . getEndTimeStart ( ) , bean . getEndTimeEnd ( ) , MesExtConstWords . PLAN_END_TIME , packBean , false ) ;
packBean . setOrderByStr ( " order by workOrderSeq desc, createDatetime desc, productSeq asc, workOrderNo asc " ) ;
}
@ -291,15 +294,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
MesWorkOrder mesWorkOrder = mesWorkOrderList . iterator ( ) . next ( ) ;
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( mesWorkOrder . getOrganizeCode ( ) ) ;
DdlPreparedPack . getInPackList ( mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getWorkCenterCode ) . filter ( workCenterCode - > ! StringUtils . isEmpty ( workCenterCode ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) , "workCenterCode" , ddlPackBean ) ;
DdlPreparedPack . getInPackList ( mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getWorkCenterCode ) . filter ( workCenterCode - > ! StringUtils . isEmpty ( workCenterCode ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) , MesExtConstWords . WORK_CENTER_CODE , ddlPackBean ) ;
List < MesWorkCenter > mesWorkCenterList = mesWorkCenterRDao . findByHqlWhere ( ddlPackBean ) ;
if ( CollectionUtils . isEmpty ( mesWorkCenterList ) ) {
return ;
}
Map < String , List < MesWorkCenter > > mesWorkCenterMap = mesWorkCenterList . stream ( ) . collect ( Collectors . groupingBy ( MesWorkCenter : : getWorkCenterCode ) ) ;
mesWorkOrderList . forEach ( t - > {
t . setWorkCenterName ( mesWorkCenterMap . containsKey ( t . getWorkCenterCode ( ) ) ? mesWorkCenterMap . get ( t . getWorkCenterCode ( ) ) . iterator ( ) . next ( ) . getWorkCenterName ( ) : "" ) ;
} ) ;
mesWorkOrderList . forEach ( t - > t . setWorkCenterName ( mesWorkCenterMap . containsKey ( t . getWorkCenterCode ( ) ) ? mesWorkCenterMap . get ( t . getWorkCenterCode ( ) ) . iterator ( ) . next ( ) . getWorkCenterName ( ) : MesExtConstWords . EMPTY ) ) ;
}
@ -308,7 +309,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
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" , "" ) ;
String serialNo = resultList . get ( 0 ) . replace ( "MES_WORK_ORDER_NO_WU_HAN" , MesExtConstWords . EMPTY ) ;
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 ) ;
@ -319,7 +320,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
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 ) ;
DdlPreparedPack . getStringEqualPack ( orderNo , MesExtConstWords . WORK_ORDER_NO , orderPackBean ) ;
if ( baseRDao . isExitByHql ( orderPackBean ) ) {
MesException . throwMesBusiException ( "单号流水码生成重复" ) ;
}
@ -327,81 +328,104 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
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 ;
}
}
}
}
}
//打印目视单使用
StringBuilder descriptionStr = new StringBuilder ( ) ;
//客户ptr信息
StringBuilder ptrInfos = new StringBuilder ( ) ;
boolean ptrFlag = false ;
boolean fOrderFlag = false ;
List < MesWorkOrderAssembly > assemblyList = new ArrayList < > ( ) ;
if ( ! CollectionUtils . isEmpty ( orderPartList ) ) {
//是否基于排序加工规则--待定
//查询装配目视项
assemblyList = getAssemblyList ( item . getWorkCenterCode ( ) , item . getCarModelCode ( ) , orderPartList , item . getOrganizeCode ( ) ) ;
//ptr信息
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 ;
for ( MesWorkOrderPart orderPart : orderPartList ) {
List < MesPartPtr > ptr = partPtrList . stream ( ) . filter ( t - > t . getSrcPartNo ( ) . equals ( orderPart . getPartNo ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( ptr . isEmpty ( ) ) {
continue ;
}
MesPartPtr mesPartPtr = null ;
MesPartPtrDetail mesPartPtrDetail = null ;
//获取相同总成的ptrId 在ptr详情中
List < MesPartPtr > custPartPtrList = ptr . stream ( ) . filter ( t - > t . getIsCustomerSendPrtInfo ( ) = = null | | t . getIsCustomerSendPrtInfo ( ) ! = CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( custPartPtrList ) ) {
mesPartPtr = custPartPtrList . iterator ( ) . next ( ) ;
//查询ptr总成--只有特定总成才会替换
DdlPackBean detailPartPtr = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getNumEqualPack ( mesPartPtr . getId ( ) , MesExtConstWords . PTR_ID , detailPartPtr ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartNo ( ) , MesExtConstWords . TOTAL_PART_NO , detailPartPtr ) ;
List < MesPartPtrDetail > ptrDetailList = partPtrDetailRao . findByHqlWhere ( detailPartPtr ) ;
if ( ! ptrDetailList . isEmpty ( ) ) {
mesPartPtrDetail = ptrDetailList . get ( 0 ) ;
}
//更新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 ) ;
}
if ( mesPartPtr = = null | | mesPartPtrDetail = = null ) {
continue ;
}
ptrFlag = true ;
if ( mesPartPtr . getIsInterPrt ( ) = = CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) ) {
fOrderFlag = true ;
}
//将工单类零件表替换位PTR条件中维护的替换零件
MesPartSap mesPartSap = mesPartSapService . getMesPartSapByPartNo ( mesPartPtr . getDestPartNo ( ) , item . getOrganizeCode ( ) ) ;
orderPart . setPartNo ( mesPartSap . getPartNo ( ) ) ;
orderPart . setPartName ( mesPartSap . getPartName ( ) ) ;
//用于打印目视单
descriptionStr . append ( mesPartPtr . getMemo ( ) ) ;
//更新mes_part_ptr的实际数量 + 1
mesPartPtr . setPrtVehicleActualCount ( mesPartPtr . getPrtVehicleActualCount ( ) + 1 ) ;
ConvertBean . saveOrUpdate ( mesPartPtr , MesExtConstWords . JOB ) ;
partPtrRao . update ( mesPartPtr ) ;
if ( mesPartPtrDetail ! = null ) {
mesPartPtrDetail . setQty ( mesPartPtrDetail . getQty ( ) + 1 ) ;
ConvertBean . saveOrUpdate ( mesPartPtrDetail , MesExtConstWords . JOB ) ;
partPtrDetailRao . update ( mesPartPtrDetail ) ;
}
MesWorkOrderAssembly orderAssemblyList = null ;
for ( MesWorkOrderAssembly orderAssembly : assemblyList ) {
String assemblyPartNo = orderAssembly . getAssemblyPartNo ( ) ;
if ( ! StringUtils . isEmpty ( assemblyPartNo ) & & assemblyPartNo . equals ( mesPartPtr . getSrcPartNo ( ) ) ) {
orderAssemblyList = orderAssembly ;
}
}
/ * *
* 原 pisces 逻 辑
* add by aix 2017.4 .11 增 加 根 据 PTR 维 护 页 面 维 护 的 目 视 单 显 示 项 来 替 换 WORKORDERASSEMBLY 中 的 partdesc
* /
if ( ! Objects . isNull ( orderAssemblyList ) ) {
if ( orderAssemblyList . getDisplaySeq ( ) ! = null & & orderAssemblyList . getDisplaySeq ( ) ! = 0 ) {
orderAssemblyList . setDisplayValue ( mesPartPtr . getVisualItem ( ) ) ;
}
orderAssemblyList . setAssemblyPartNo ( mesPartSap . getPartNo ( ) ) ;
orderAssemblyList . setAssemblyPartName ( mesPartSap . getPartName ( ) ) ;
orderAssemblyList . setMatchRule ( mesPartPtr . getReplacePartSnRule ( ) ) ;
ptrInfos . append ( "INFO|" ) . append ( mesPartPtr . getId ( ) ) ;
if ( mesPartPtrDetail ! = null ) {
ptrInfos . append ( "PART|" ) . append ( mesPartPtrDetail . getId ( ) ) ;
}
//更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么
}
}
}
// 生成装配件清单
if ( isModifyPOrder ) {
if ( ptrFlag & & ! fOrderFlag ) {
item . setOrderFlag ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . PTR . getValue ( ) ) ;
} else if ( ptrFlag ) {
item . setOrderFlag ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . F . getValue ( ) ) ;
}
item . setPtrInfo ( ptrInfos . toString ( ) ) ;
//生成工单号
item . setWorkOrderNo ( getOrderNo ( item ) ) ;
//获取车型remark用于目视单打印
String remark = getCarRemark ( item . getCustCode ( ) , item . getCarModelCode ( ) , item . getOrganizeCode ( ) ) ;
item . setDescription ( descriptionStr . append ( remark ) . toString ( ) ) ;
if ( ! CollectionUtils . isEmpty ( orderPartList ) ) {
for ( MesWorkOrderPart orderPart : orderPartList ) {
@ -411,12 +435,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
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 ( ) ) ;
@ -486,7 +506,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesPartProdGroup = getMesPartProdGroup ( item ) ;
} else {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartProdGroupCode ( ) , "partProdGroupCode" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartProdGroupCode ( ) , MesExtConstWords . PART_PROD_GROUP_CODE , ddlPackBean ) ;
mesPartProdGroup = mesPartProdGroupRDao . getByProperty ( ddlPackBean ) ;
if ( Objects . isNull ( mesPartProdGroup ) ) {
MesException . throwMesBusiException ( "零件生产组【%s】信息不存在" , item . getPartProdGroupCode ( ) ) ;
@ -499,8 +519,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//自动发布
if ( CommonEnumUtil . VALID = = mesPartProdGroup . getIsAutoRelease ( ) ) {
item . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . RELEASE . getValue ( ) ) ;
// 创建工单打印队列
insertPrintQueue ( item ) ;
} else {
item . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . CREATE . getValue ( ) ) ;
}
@ -541,7 +559,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private void getCustomerPart ( MesWorkOrder item ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartNo ( ) , "erpPartNo" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( item . getPartNo ( ) , MesExtConstWords . ERP_PART_NO , ddlPackBean ) ;
MesCustomerPart customerPart = mesCustomerPartRDao . getByProperty ( ddlPackBean ) ;
if ( ! Objects . isNull ( customerPart ) ) {
item . setCustPartNo ( customerPart . getCustPartNo ( ) ) ;
@ -570,8 +588,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item . setShiftName ( mesShift . getShiftName ( ) ) ;
try {
//拼接
item . setPlanStartTime ( TimeTool . parseStringFormat ( item . getPlanDate ( ) + " " + mesShift . getStartTime ( ) , DateUtil . BASE_FORMAT1 , DateUtil . BASE_FORMAT ) ) ;
item . setPlanEndTime ( TimeTool . parseStringFormat ( item . getPlanDate ( ) + " " + mesShift . getEndTime ( ) , DateUtil . BASE_FORMAT1 , DateUtil . BASE_FORMAT ) ) ;
item . setPlanStartTime ( TimeTool . parseStringFormat ( item . getPlanDate ( ) + MesExtConstWords . ONE_SPACE + mesShift . getStartTime ( ) , DateUtil . BASE_FORMAT1 , DateUtil . BASE_FORMAT ) ) ;
item . setPlanEndTime ( TimeTool . parseStringFormat ( item . getPlanDate ( ) + MesExtConstWords . ONE_SPACE + mesShift . getEndTime ( ) , DateUtil . BASE_FORMAT1 , DateUtil . BASE_FORMAT ) ) ;
int windowStartEndTimeCompare = DateUtilExt . compareDateTime ( DateUtil . BASE_FORMAT , item . getPlanStartTime ( ) , item . getPlanEndTime ( ) ) ;
if ( windowStartEndTimeCompare > 0 ) {
item . setPlanEndTime ( TimeTool . pareDateToString ( DateUtil . addDays ( item . getPlanEndTime ( ) , 1 ) ) ) ;
@ -586,8 +604,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override
public ListPager < MesProductVersion > queryMesProductVersionByPager ( MesProductVersion mesProductVersion , Pager pager ) {
DdlPackBean productVersionQueryPackBean = DdlPackBean . getDdlPackBean ( mesProductVersion . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesProductVersion . getPartNo ( ) , "partNo" , productVersionQueryPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesProductVersion . getWorkCenterCode ( ) , "workCenterCode" , productVersionQueryPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesProductVersion . getPartNo ( ) , MesExtConstWords . PART_NO , productVersionQueryPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesProductVersion . getWorkCenterCode ( ) , MesExtConstWords . WORK_CENTER_CODE , productVersionQueryPackBean ) ;
pager = PagerHelper . getPager ( pager , mesProductVersionRDao . findByHqlWhereCount ( productVersionQueryPackBean ) ) ;
List < MesProductVersion > mesProductVersions = mesProductVersionRDao . findByHqlWherePage ( productVersionQueryPackBean , pager ) ;
return new ListPager < > ( mesProductVersions , pager ) ;
@ -609,9 +627,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
for ( MesWorkOrder item : mesWorkOrderList ) {
//获取相同类型 相同标识 生产序号最大值的
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getNumEqualPack ( item . getWorkOrderStatus ( ) , "workOrderStatus" , orderPackBean ) ;
DdlPreparedPack . getStringEqualPack ( item . getOrderFlag ( ) , "orderFlag" , orderPackBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { "productSeq" } , orderPackBean ) ;
DdlPreparedPack . getNumEqualPack ( item . getWorkOrderStatus ( ) , MesExtConstWords . WORK_ORDER_STATUS , orderPackBean ) ;
DdlPreparedPack . getStringEqualPack ( item . getOrderFlag ( ) , MesExtConstWords . ORDER_FLAG , orderPackBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { MesExtConstWords . PRODUCT_SEQ } , orderPackBean ) ;
MesWorkOrder result = baseRDao . getByProperty ( orderPackBean ) ;
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
@ -655,7 +673,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrderLogList . add ( workOrderLog ) ;
}
//保存工单记录
if ( CollectionUtils . is Not Empty( mesWorkOrderLogList ) ) {
if ( ! CollectionUtils . is Empty( mesWorkOrderLogList ) ) {
workOrderLogService . insertBatch ( mesWorkOrderLogList ) ;
}
}
@ -665,7 +683,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String nowDate = TimeTool . getNowTime ( true ) ;
//获取产线信息
List < String > workCenterCodeList = mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getWorkCenterCode ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < MesWorkCenter > mesWorkCenterList = BeanMapUtilsExt . getBeanList ( mesWorkCenterRDao , "workCenterCode" , organizeCode , workCenterCodeList , "产线信息" ) ;
List < MesWorkCenter > mesWorkCenterList = BeanMapUtilsExt . getBeanList ( mesWorkCenterRDao , MesExtConstWords . WORK_CENTER_CODE , organizeCode , workCenterCodeList , "产线信息" ) ;
//产线导入不区分大小小
Map < String , MesWorkCenter > workCenterMap = new CaseInsensitiveMap ( ) ;
for ( MesWorkCenter workCenter : mesWorkCenterList ) {
@ -676,21 +694,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
Map < String , List < MesShift > > mesShiftMap = mesShiftList . stream ( ) . collect ( Collectors . groupingBy ( t - > t . getWorkCenterCode ( ) + t . getShiftCode ( ) ) ) ;
//获取生产版本
List < String > partNoList = mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getPartNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < MesProductVersion > mesProductVersionList = BeanMapUtilsExt . getBeanList ( mesProductVersionRDao , "partNo" , organizeCode , partNoList , "生产版本信息" ) ;
List < MesProductVersion > mesProductVersionList = BeanMapUtilsExt . getBeanList ( mesProductVersionRDao , MesExtConstWords . PART_NO , organizeCode , partNoList , "生产版本信息" ) ;
//客户物料信息
Map < String , MesCustomerPart > mesCustomerPartMap = null ;
try {
mesCustomerPartMap = BeanMapUtilsExt . getBeanMap ( mesCustomerPartRDao , "erpPartNo" , organizeCode , partNoList , "客户物料信息" ) ;
mesCustomerPartMap = BeanMapUtilsExt . getBeanMap ( mesCustomerPartRDao , MesExtConstWords . ERP_PART_NO , organizeCode , partNoList , "客户物料信息" ) ;
} catch ( Exception e ) {
}
//获取物料信息
Map < String , MesPartSap > mesPartSapMap = BeanMapUtilsExt . getBeanMap ( mesPartSapRDao , "partNo" , organizeCode , partNoList , "物料信息" ) ;
Map < String , MesPartSap > mesPartSapMap = BeanMapUtilsExt . getBeanMap ( mesPartSapRDao , MesExtConstWords . PART_NO , organizeCode , partNoList , "物料信息" ) ;
//获取获取vin号
List < String > vinCodeList = mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getVinCode ) . filter ( Objects : : nonNull ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( vinCodeList ) ) {
List < MesWorkOrder > mesWorkOrders = null ;
try {
mesWorkOrders = BeanMapUtilsExt . getBeanList ( baseRDao , "vinCode" , organizeCode , vinCodeList , "生产工单" ) ;
mesWorkOrders = BeanMapUtilsExt . getBeanList ( baseRDao , MesExtConstWords . VIN_CODE , organizeCode , vinCodeList , "生产工单" ) ;
} catch ( Exception e ) {
}
if ( ! CollectionUtils . isEmpty ( mesWorkOrders ) ) {
@ -713,7 +731,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//查询工单是否已经存在
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( next . getOrganizeCode ( ) ) ;
DdlPreparedPack . getInPackList ( orderList , "workOrderNo" , orderPackBean ) ;
DdlPreparedPack . getInPackList ( orderList , MesExtConstWords . WORK_ORDER_NO , orderPackBean ) ;
if ( baseRDao . isExitByHql ( orderPackBean ) ) {
MesException . throwMesBusiException ( "单号已存在" ) ;
}
@ -893,9 +911,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private List < MesShift > getMesShifts ( String organizeCode , String nowDate , List < String > workCenterCodeList ) {
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( workCenterCodeList , "workCenterCode" , packBean ) ;
DdlPreparedPack . getStringSmallerPack ( nowDate , "beginDate" , packBean ) ;
DdlPreparedPack . getStringBiggerPack ( nowDate , "endDate" , packBean ) ;
DdlPreparedPack . getInPackList ( workCenterCodeList , MesExtConstWords . WORK_CENTER_CODE , packBean ) ;
DdlPreparedPack . getStringSmallerPack ( nowDate , MesExtConstWords . BEGIN_DATE , packBean ) ;
DdlPreparedPack . getStringBiggerPack ( nowDate , MesExtConstWords . END_DATE , packBean ) ;
List < MesShift > mesShiftList = mesShiftRDao . findByHqlWhere ( packBean ) ;
if ( CollectionUtils . isEmpty ( mesShiftList ) ) {
MesException . throwMesBusiException ( "有效期内的班次信息不存在" ) ;
@ -1079,7 +1097,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
updateMesWorkOrder ( mesWorkOrder , ( MesExtEnumUtil . REPORT_TYPE . REPORT . getValue ( ) = = mesWorkOrderNew . getReportType ( ) ) ? MesExtEnumUtil . WORK_ORDER_LOG_TYPE . REPORT : MesExtEnumUtil . WORK_ORDER_LOG_TYPE . REPORT_ADJUST , mesWorkOrderNew . getNum ( ) ) ;
//保存报工记录 试制单不报工
if ( CollectionUtils . is Not Empty( mesProductOffLineList ) & & ( Objects . isNull ( mesWorkOrder . getOrderFlag ( ) ) | | ! MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . P . getValue ( ) . equals ( mesWorkOrder . getOrderFlag ( ) ) ) ) {
if ( ! CollectionUtils . is Empty( mesProductOffLineList ) & & ( Objects . isNull ( mesWorkOrder . getOrderFlag ( ) ) | | ! MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . P . getValue ( ) . equals ( mesWorkOrder . getOrderFlag ( ) ) ) ) {
mesProductOffLineList . forEach ( t - > {
if ( Objects . isNull ( t . getBomTotalSize ( ) ) ) {
t . setBomTotalSize ( mesProductOffLineList . size ( ) ) ;
@ -1088,7 +1106,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesProductOffLineService . insertBatch ( mesProductOffLineList ) ;
}
//保存移库记录
if ( CollectionUtils . is Not Empty( mesMoveList ) ) {
if ( ! CollectionUtils . is Empty( mesMoveList ) ) {
mesMoveRDao . saveAll ( mesMoveList ) ;
}
}
@ -1096,13 +1114,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override
public void doCloseUnSortOrder ( String organizeCode , String userName ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . ORDER_TYPE . UN_SORT . getValue ( ) , "workOrderType" , ddlPackBean ) ;
DdlPreparedPack . getStringSmallerNotEqualPack ( TimeTool . getToday ( ) , "planStartTime" , ddlPackBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . ORDER_TYPE . UN_SORT . getValue ( ) , MesExtConstWords . WORK_ORDER_TYPE , ddlPackBean ) ;
DdlPreparedPack . getStringSmallerNotEqualPack ( TimeTool . getToday ( ) , MesExtConstWords . PLAN_START_TIME , ddlPackBean ) ;
//非排序的试制工单(P单)不自动关单(芜湖)
if ( mesConfigService . checkCfgValue ( organizeCode , MesExtConstWords . CLOSE_P_WORK_ORDER , MesExtConstWords . ONE_STR ) ) {
DdlPreparedPack . getStringNoEqualPack ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . P . getValue ( ) , "orderFlag" , ddlPackBean ) ;
DdlPreparedPack . getStringNoEqualPack ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . P . getValue ( ) , MesExtConstWords . ORDER_FLAG , ddlPackBean ) ;
}
DdlPreparedPack . getNumberSmallerPack ( MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) , "workOrderStatus" , ddlPackBean ) ;
DdlPreparedPack . getNumberSmallerPack ( MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) , MesExtConstWords . WORK_ORDER_STATUS , ddlPackBean ) ;
List < MesWorkOrder > mesWorkOrderList = baseRDao . findByHqlWhere ( ddlPackBean ) ;
if ( CollectionUtils . isEmpty ( mesWorkOrderList ) ) {
return ;
@ -1110,10 +1128,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
log . info ( "关闭工单个数{},工单:{}" , mesWorkOrderList . size ( ) , mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getWorkOrderNo ) . collect ( Collectors . toList ( ) ) ) ;
//查询自制件零件
List < String > partNoList = mesPartSapService . findMesPartSapByPartNoList ( mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getPartNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) , organizeCode ) . stream ( ) . filter ( t - > t . getIsTestPiece ( ) = = CommonEnumUtil . FALSE ) . map ( MesPartSap : : getPartNo ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . is Not Empty( partNoList ) ) {
if ( ! CollectionUtils . is Empty( partNoList ) ) {
//关闭工单回传
List < String > partNoAndDataKey = mesWorkOrderList . stream ( ) . filter ( t - > ! MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . P . getValue ( ) . equals ( t . getOrderFlag ( ) ) & & partNoList . contains ( t . getPartNo ( ) ) ) . map ( t - > new StringJoiner ( MesExtConstWords . COMMA ) . add ( t . getPartNo ( ) ) . add ( t . getProductVersion ( ) ) . add ( t . getPlanStartTime ( ) . substring ( 0 , 10 ) ) . toString ( ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . is Not Empty( partNoAndDataKey ) ) {
if ( ! CollectionUtils . is Empty( partNoAndDataKey ) ) {
List < MesWorkOrderToSap > mesWorkOrderToSapList = new ArrayList < > ( ) ;
for ( String partNoAndData : partNoAndDataKey ) {
MesWorkOrderToSap orderToSap = new MesWorkOrderToSap ( organizeCode , partNoAndData . split ( MesExtConstWords . COMMA ) [ 0 ] , partNoAndData . split ( MesExtConstWords . COMMA ) [ 1 ] , 0d , partNoAndData . split ( MesExtConstWords . COMMA ) [ 2 ] ) ;
@ -1124,8 +1142,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
//关闭工单
baseRDao . updateByProperties ( new String [ ] { "modifyUser" , "modifyDatetime" , "workOrderStatus" , "systemSyncStatus" } ,
new Object [ ] { userName , TimeTool . getNowTime ( true ) , MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) , CommonEnumUtil . FALSE } , ddlPackBean ) ;
baseRDao . updateByProperties ( new String [ ] { MesExtConstWords . MODIFY_USER , MesExtConstWords . MODIFY_DATE_TIME , MesExtConstWords . WORK_ORDER_STATUS , MesExtConstWords . SYSTEM_SYNC_STATUS } ,
new Object [ ] { userName , TimeTool . getNowTime ( true ) , MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) , CommonEnumUtil . TRUE_OR_FALSE . FALSE . getValue ( ) } , ddlPackBean ) ;
}
@ -1171,7 +1189,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//更新工单状态
mesWorkOrder . setWorkOrderStatus ( MesExtEnumUtil . ORDER_STATUS . PROCESS . getValue ( ) ) ;
mesWorkOrder . setCcscStatus ( "" ) ;
mesWorkOrder . setCcscStatus ( MesExtConstWords . EMPTY ) ;
updateMesWorkOrder ( mesWorkOrder , MesExtEnumUtil . WORK_ORDER_LOG_TYPE . UPDATE , mesWorkOrder . getQty ( ) ) ;
}
//重新生成CCSC task
@ -1211,19 +1229,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
Map < String , MesWorkOrder > workOrderMapByWorkOrderNo = mesWorkOrderList . stream ( ) . collect ( Collectors . toMap ( MesWorkOrder : : getWorkOrderNo , Function . identity ( ) , ( x , y ) - > y ) ) ;
// 产线代码集合
List < String > workCenterCodeList = mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getWorkCenterCode ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < String > workCenterCodeList = ( mesWorkOrderList . stream ( ) . filter ( o - > ( null ! = o & & ! StringUtils . isEmpty ( o . getWorkCenterCode ( ) ) ) ) . map ( MesWorkOrder : : getWorkCenterCode ) . collect ( Collectors . toList ( ) ) )
. stream ( ) . filter ( o - > ! StringUtils . isEmpty ( o ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
// 根据产线代码节后获取产线信息集合
List < MesWorkCenter > mesWorkCenters = workCenterService . queryMesWorkCenterList ( workCenterCodeList , organizeCode ) ;
List < MesWorkCenter > workCenterList = CollectionUtils . isEmpty ( workCenterCodeList ) ? null : workCenterService . queryMesWorkCenterList ( workCenterCodeList , organizeCode ) ;
// 产线名称集合
Map < String , String > workCenterNameMap = CollectionUtils . isEmpty ( mesWorkCenters) ? null : mesWorkCenters . stream ( ) . collect ( Collectors . toMap ( MesWorkCenter : : getWorkCenterCode , MesWorkCenter : : getWorkCenterName , ( x , y ) - > y ) ) ;
Map < String , List< MesWorkCenter > > workCenterNameMap = CollectionUtils . isEmpty ( workCenterList) ? null : workCenterList . stream ( ) . filter ( o - > null ! = o ) . collect ( Collectors . groupingBy ( MesWorkCenter : : getWorkCenterCode ) ) ;
// 生产零件号
List < String > partProdGroupCodeList = mesWorkOrderList . stream ( ) . map ( MesWorkOrder : : getPartProdGroupCode ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
// 零件生产组代码
List < String > partProdGroupCodeList = ( mesWorkOrderList . stream ( ) . filter ( o - > ( null ! = o & & ! StringUtils . isEmpty ( o . getPartProdGroupCode ( ) ) ) ) . map ( MesWorkOrder : : getPartProdGroupCode ) . collect ( Collectors . toList ( ) ) )
. stream ( ) . filter ( o - > ! StringUtils . isEmpty ( o ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
// 根据零件生产组代码分组
Map < String , MesPartProdGroup > partProdGroupMap = partProdGroupService. getMesPartProdGroupMap ( organizeCode , partProdGroupCodeList ) ;
Map < String , MesPartProdGroup > partProdGroupMap = CollectionUtils. isEmpty ( partProdGroupCodeList ) ? null : partProdGroupService. getMesPartProdGroupMap ( organizeCode , partProdGroupCodeList ) ;
// 客户车型配置名称MAP
Map < String , MesCustomerCarModel > carModelMapByCode = getMesCustomerCarModelMap ( organizeCode , mesWorkOrderList ) ;
@ -1244,9 +1264,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
continue ;
}
mesWorkOrder . setWorkCenterName ( !Objects . isNull ( workCenterNameMap ) & & workCenterNameMap . containsKey ( mesWorkOrder . getWorkCenterCode ( ) ) ? workCenterNameMap . get ( mesWorkOrder . getWorkCenterCode ( ) ) : "" ) ;
mesWorkOrder . setWorkCenterName ( (! StringUtils . isEmpty ( mesWorkOrder . getWorkCenterCode ( ) ) & & ! CollectionUtils . isEmpty ( workCenterNameMap ) & & workCenterNameMap . containsKey ( mesWorkOrder . getWorkCenterCode ( ) ) ) ? workCenterNameMap . get ( mesWorkOrder . getWorkCenterCode ( ) ) . get ( 0 ) . getWorkCenterName ( ) : MesExtConstWords . EMPTY ) ;
MesPartProdGroup mesPartProdGroup = !Objects . isNull ( partProdGroupMap ) & & partProdGroupMap . containsKey ( mesWorkOrder . getPartProdGroupCode ( ) ) ? partProdGroupMap . get ( mesWorkOrder . getPartProdGroupCode ( ) ) : null ;
MesPartProdGroup mesPartProdGroup = (! StringUtils . isEmpty ( mesWorkOrder . getPartProdGroupCode ( ) ) & & ! CollectionUtils . isEmpty ( partProdGroupMap ) & & partProdGroupMap . containsKey ( mesWorkOrder . getPartProdGroupCode ( ) ) ) ? partProdGroupMap . get ( mesWorkOrder . getPartProdGroupCode ( ) ) : null ;
if ( mesPartProdGroup = = null ) {
MesException . throwMesBusiException ( "工单【%s】关联零件生产组【%s】不存在" , mesWorkOrder . getWorkOrderNo ( ) , mesWorkOrder . getPartProdGroupCode ( ) ) ;
@ -1273,10 +1293,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( customerCarModel ! = null ) {
modelMap . put ( "mesCustomerCarModel" , customerCarModel ) ;
}
List < MesWorkOrderAssembly > workOrderAssemblyListByWorkOrderNo = ! Objects . isNull ( workOrderAssemblyMapByWorkOrderNo ) & & workOrderAssemblyMapByWorkOrderNo . containsKey ( mesWorkOrder . getWorkOrderNo ( ) ) ? workOrderAssemblyMapByWorkOrderNo . get ( mesWorkOrder . getWorkOrderNo ( ) ) : null ;
if ( ! CollectionUtils . isEmpty ( workOrderAssembly ListByWorkOrderNo ) ) {
modelMap . put ( "mesWorkOrderAssemblyList" , workOrderAssembly ListByWorkOrderNo ) ;
if ( ! CollectionUtils . isEmpty ( workOrderAssembly MapByWorkOrderNo) & & workOrderAssemblyMapByWorkOrderNo . containsKey ( mesWorkOrder . getWorkOrderNo ( ) ) ) {
modelMap . put ( "mesWorkOrderAssemblyList" , workOrderAssembly MapByWorkOrderNo. get ( mesWorkOrder . getWorkOrderNo ( ) ) ) ;
}
MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel ( ) ;
@ -1330,21 +1349,29 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private Map < String , MesCustomerCarModel > getMesCustomerCarModelMap ( String organizeCode , List < MesWorkOrder > workOrderList ) {
List < String > carModelCodeList = workOrderList . stream ( ) . map ( MesWorkOrder : : getCarModelCode ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < String > carModelCodeList = CollectionUtils . isEmpty ( workOrderList ) ? null :
( workOrderList . stream ( ) . filter ( o - > ( null ! = o & & ! StringUtils . isEmpty ( o . getCarModelCode ( ) ) ) ) . map ( MesWorkOrder : : getCarModelCode ) . collect ( Collectors . toList ( ) ) )
. stream ( ) . filter ( o - > ! StringUtils . isEmpty ( o ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( StringUtils . isEmpty ( organizeCode ) | | CollectionUtils . isEmpty ( workOrderList ) ) return null ;
// 客户车型配置
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( carModelCodeList , MesExtConstWords . CAR_MODEL_CODE , packBean ) ;
if ( carModelCodeList . size ( ) = = 1 ) DdlPreparedPack . getStringEqualPack ( carModelCodeList . get ( 0 ) , MesExtConstWords . CAR_MODEL_CODE , packBean ) ;
else DdlPreparedPack . getInPackList ( carModelCodeList , MesExtConstWords . CAR_MODEL_CODE , packBean ) ;
List < MesCustomerCarModel > customerCarModelList = customerCarModelRepository . findByHqlWhere ( packBean ) ;
return CollectionUtils . isEmpty ( customerCarModelList ) ? null : customerCarModelList . stream ( ) . collect ( Collectors . toMap ( MesCustomerCarModel : : getCarModelCode , Function . identity ( ) , ( x , y ) - > y ) ) ;
if ( CollectionUtils . isEmpty ( customerCarModelList ) ) return null ;
customerCarModelList = customerCarModelList . stream ( ) . filter ( o - > null ! = o ) . collect (
Collectors . collectingAndThen ( Collectors . toCollection ( ( ) - > new TreeSet < > ( Comparator . comparing ( MesCustomerCarModel : : getCarModelCode ) ) ) , ArrayList : : new ) ) ;
return customerCarModelList . stream ( ) . filter ( o - > null ! = o ) . collect ( Collectors . toMap ( MesCustomerCarModel : : getCarModelCode , o - > o ) ) ;
}
private Map < String , List < MesWorkOrderAssembly > > getWorkOrderAssemblyMapByWorkOrderNo ( String organizeCode , Map < String , MesWorkOrder > workOrderMapByWorkOrderNo ) {
if ( CollectionUtils . isEmpty ( workOrderMapByWorkOrderNo ) ) return null ;
List < String > workOrderNoList = workOrderMapByWorkOrderNo . keySet ( ) . stream ( ) . collect ( Collectors . toList ( ) ) ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( workOrderNoList , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
if ( workOrderNoList . size ( ) = = 1 ) DdlPreparedPack . getStringEqualPack ( workOrderNoList . get ( 0 ) , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
else DdlPreparedPack . getInPackList ( workOrderNoList , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
List < MesWorkOrderAssembly > workOrderAssemblyList = workOrderAssemblyRepository . findByHqlWhere ( packBean ) ;
return CollectionUtils . isEmpty ( workOrderAssemblyList ) ? null : workOrderAssemblyList . stream ( ) . collect( Collectors . groupingBy ( MesWorkOrderAssembly : : getWorkOrderNo ) ) ;
return CollectionUtils . isEmpty ( workOrderAssemblyList ) ? null : workOrderAssemblyList . stream ( ) . filter( o - > null ! = o ) . collect( Collectors . groupingBy ( MesWorkOrderAssembly : : getWorkOrderNo ) ) ;
}
private List < MesProductOffLine > getMesProductOffLineList ( WmsProductModel model , String nowTime ) {
@ -1365,7 +1392,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesProductOffLine . setDescription ( nowTime ) ;
mesProductOffLine . setStgeLoc ( item . getAlort ( ) ) ;
mesProductOffLine . setSystemSyncStatus ( CommonEnumUtil . FALSE ) ;
mesProductOffLine . setSystemSyncDatetime ( "" ) ;
mesProductOffLine . setSystemSyncDatetime ( MesExtConstWords . EMPTY ) ;
ConvertBean . serviceModelInitialize ( mesProductOffLine , model . getUserName ( ) ) ;
newProductOffLineList . add ( mesProductOffLine ) ;
} ) ;
@ -1384,7 +1411,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
public MesWorkOrder getMesWorkOrder ( String workOrderNo , String organizeCode ) {
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , "workOrderNo" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
MesWorkOrder mesWorkOrder = baseRDao . getByProperty ( packBean ) ;
if ( Objects . isNull ( mesWorkOrder ) ) {
MesException . throwMesBusiException ( "工单【%s】信息不存在" , workOrderNo ) ;
@ -1488,7 +1515,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( mesPartSapMap . containsKey ( mesBom . getItemPartNo ( ) ) ) {
mesPartSap = mesPartSapMap . get ( mesBom . getItemPartNo ( ) ) . iterator ( ) . next ( ) ;
}
MesMove move = createMove ( mesPartSap , moveRule . getErpSrcLocateNo ( ) , moveRule . getErpDestLocateNo ( ) , mesBom . getOrganizeCode ( ) , mesWorkOrder . getWorkCenterCode ( ) , mesBom . getItemQty ( ) , "" , MesExtEnumUtil . MOVE_TYPE . RAW_MATERIAL_MOVE . getValue ( ) ) ;
MesMove move = createMove ( mesPartSap , moveRule . getErpSrcLocateNo ( ) , moveRule . getErpDestLocateNo ( ) , mesBom . getOrganizeCode ( ) , mesWorkOrder . getWorkCenterCode ( ) , mesBom . getItemQty ( ) , MesExtConstWords . EMPTY , MesExtEnumUtil . MOVE_TYPE . RAW_MATERIAL_MOVE . getValue ( ) ) ;
move . setMatnr ( mesBom . getItemPartNo ( ) ) ;
mesMoveList . add ( move ) ;
}
@ -1514,8 +1541,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private MesProdRuleSortCfg getMesProdRuleSortCfg ( MesWorkOrder mesWorkOrder ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( mesWorkOrder . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrder . getPartNo ( ) , "reportPartNo" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrder . getWorkCenterCode ( ) , "workCenterCode" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrder . getPartNo ( ) , MesExtConstWords . REPORT_PART_NO , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrder . getWorkCenterCode ( ) , MesExtConstWords . WORK_CENTER_CODE , ddlPackBean ) ;
MesProdRuleSortCfg mesProdRuleSortCfg = mesProdRuleSortCfgRDao . getByProperty ( ddlPackBean ) ;
if ( Objects . isNull ( mesProdRuleSortCfg ) ) {
MesException . throwMesBusiException ( "产线【%s】物料【%s】排序加工规则未维护" , mesWorkOrder . getWorkCenterCode ( ) , mesWorkOrder . getPartNo ( ) ) ;
@ -1541,9 +1568,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( isItemReport & & mesBom . getPartNo ( ) . equals ( mesWorkOrder . getPartNo ( ) ) ) {
newMesProductOffLine . setReportPartNo ( mesBom . getItemPartNo ( ) ) ;
newMesProductOffLine . setReportPartNameRdd ( mesBom . getItemPartName ( ) ) ;
newMesProductOffLine . setItemPartNo ( "" ) ;
newMesProductOffLine . setItemPartName ( "" ) ;
newMesProductOffLine . setItemUnit ( "" ) ;
newMesProductOffLine . setItemPartNo ( MesExtConstWords . EMPTY ) ;
newMesProductOffLine . setItemPartName ( MesExtConstWords . EMPTY ) ;
newMesProductOffLine . setItemUnit ( MesExtConstWords . EMPTY ) ;
newMesProductOffLine . setItemQty ( 0d ) ;
}
newMesProductOffLine . setReportSn ( sn ) ;
@ -1623,7 +1650,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
// statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( statusList , "workOrderStatus" , packBean ) ;
DdlPreparedPack . getInPackList ( statusList , MesExtConstWords . WORK_ORDER_STATUS , packBean ) ;
return baseRDao . findByHqlWhere ( packBean ) ;
}
@ -1650,36 +1677,33 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//1.获取生产加工记录production_record表中, report_status为待汇报状态的工单
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , ddlPackBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_10 . getValue ( ) , "reportStatus" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , ddlPackBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . REPORT_STATUS . REPORT_STATUS_10 . getValue ( ) , MesExtConstWords . REPORT_STATUS , ddlPackBean ) ;
//获取前一天的早班到当天早班的区间的所有加工记录,统计个数
DdlPreparedPack . timeBuilder (
new SimpleDateFormat ( "yyyy-MM-dd" ) . format ( TimeTool . getDateBefore ( new Date ( ) , 1 ) ) + " 08:00:00" ,
TimeTool . getToday ( ) + " 08:00:00" ,
"completeDateTime" , ddlPackBean , true ) ;
DdlPreparedPack . timeBuilder ( new SimpleDateFormat ( MesExtConstWords . DATE_FORMAT ) . format ( TimeTool . getDateBefore ( new Date ( ) , MesExtConstWords . ONE ) ) + MesExtConstWords . APPEND_8_HMS ,
TimeTool . getToday ( ) + MesExtConstWords . APPEND_8_HMS , MesExtConstWords . COMPLETE_DATE_TIME , ddlPackBean , true ) ;
return productionRecordRao . findByHqlWhere ( ddlPackBean ) ;
}
@Override
public List < MesProduceSn > getPreDayReportMesProduceSn ( String organizeCode , List < MesProductionRecord > mesProductionRecordList ) {
DdlPackBean snPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( mesProductionRecordList . stream ( ) . map ( MesProductionRecord : : getProductSn ) . collect ( Collectors . toList ( ) ) ,
"productSn" , snPackBean ) ;
DdlPreparedPack . getInPackList ( mesProductionRecordList . stream ( ) . map ( MesProductionRecord : : getProductSn ) . collect ( Collectors . toList ( ) ) , MesExtConstWords . PRODUCT_SN , snPackBean ) ;
return mesProduceSnRao . findByHqlWhere ( snPackBean ) ;
}
@Override
public List < MesWorkOrder > insertMesWorkOrder ( List < MesProductionRecord > mesProductionRecordList , List < MesShift > mesShiftList , String organizeCode , String userName ) {
List < MesWorkOrder > mesWorkOrderList = new ArrayList < > ( ) ;
Map < String , List < MesProductionRecord > > mesProductionRecordListMap = mesProductionRecordList . stream ( ) . collect ( Collectors . groupingBy ( sn - > sn . getWorkCenterCode ( ) + "=" + sn . getPartNo ( ) ) ) ;
Map < String , List < MesProductionRecord > > mesProductionRecordListMap = mesProductionRecordList . stream ( ) . collect ( Collectors . groupingBy ( sn - > sn . getWorkCenterCode ( ) + MesExtConstWords . EQUAL + sn . getPartNo ( ) ) ) ;
for ( Map . Entry < String , List < MesProductionRecord > > stringListEntry : mesProductionRecordListMap . entrySet ( ) ) {
List < MesProductionRecord > value = stringListEntry . getValue ( ) ;
MesProductionRecord mesProductionRecord = value . get ( 0 ) ;
String [ ] split = stringListEntry . getKey ( ) . split ( "=" ) ;
String [ ] split = stringListEntry . getKey ( ) . split ( MesExtConstWords . EQUAL ) ;
String workCenterCode = split [ 0 ] ;
String partNo = split [ 1 ] ;
//查询工作中心
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , ddlPackBean ) ;
MesWorkCenter mesWorkCenter = mesWorkCenterRDao . getByProperty ( ddlPackBean ) ;
if ( Objects . isNull ( mesWorkCenter ) ) {
MesException . throwMesBusiException ( "产线【%s】不存在" , workCenterCode ) ;
@ -1691,13 +1715,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item . setPartNo ( partNo ) ;
item . setWorkOrderType ( MesExtEnumUtil . ORDER_TYPE . UN_SORT . getValue ( ) ) ;
item . setOrderFlag ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . N . getValue ( ) ) ;
List < MesShift > collect = mesShiftList . stream ( ) . filter ( s - > s . getShiftCode ( ) . equalsIgnoreCase ( "1" ) ) . collect ( Collectors . toList ( ) ) ;
List < MesShift > collect = mesShiftList . stream ( ) . filter ( s - > s . getShiftCode ( ) . equalsIgnoreCase ( MesExtConstWords . ONE_STR ) ) . collect ( Collectors . toList ( ) ) ;
MesShift mesShift = collect . get ( 0 ) ;
item . setShiftCode ( mesShift . getShiftCode ( ) ) ;
item . setShiftCode ( mesShift . getShiftName ( ) ) ;
String today = TimeTool . getToday ( ) ;
item . setPlanStartTime ( today + " " + mesShift . getStartTime ( ) + ":00" ) ;
item . setPlanEndTime ( today + " " + mesShift . getEndTime ( ) + ":00" ) ;
item . setPlanStartTime ( today + MesExtConstWords . ONE_SPACE + mesShift . getStartTime ( ) + MesExtConstWords . APPEND_SECONDS ) ;
item . setPlanEndTime ( today + MesExtConstWords . ONE_SPACE + mesShift . getEndTime ( ) + MesExtConstWords . APPEND_SECONDS ) ;
//生成工单号
List < String > orderList = new ArrayList < > ( ) ;
@ -1707,7 +1731,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String orderNo = orderList . get ( 0 ) ;
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( item . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( orderNo , "workOrderNo" , orderPackBean ) ;
DdlPreparedPack . getStringEqualPack ( orderNo , MesExtConstWords . WORK_ORDER_NO , orderPackBean ) ;
if ( baseRDao . isExitByHql ( orderPackBean ) ) {
MesException . throwMesBusiException ( "单号流水码生成重复" ) ;
}
@ -1772,7 +1796,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if ( ! StringUtil . isEmpty ( bean . getVinCode ( ) ) ) {
//校验vin号是否重复
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( bean . getVinCode ( ) , "vinCode" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( bean . getVinCode ( ) , MesExtConstWords . VIN_CODE , ddlPackBean ) ;
if ( baseRDao . isExitByHql ( ddlPackBean ) ) {
MesException . throwMesBusiException ( "vin号【%s】重复" , bean . getVinCode ( ) ) ;
}
@ -1780,8 +1804,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//排序工单数量为1
bean . setQty ( 1d ) ;
//生成工单号
bean . setWorkOrderNo ( getOrderNo ( bean ) ) ;
//自动发布
List < MesWorkOrderPart > orderPartList = autoPublish ( bean ) ;
//顺序号
@ -1790,6 +1812,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
bean . setCustSn ( getCustSn ( bean . getCustPartNo ( ) , bean . getOrganizeCode ( ) , bean . getCreateUser ( ) ) ) ;
//生成工单零件 工单装配件
insertMesWorkOrder ( bean , orderPartList ) ;
// 创建工单打印队列
if ( bean . getWorkOrderStatus ( ) = = MesExtEnumUtil . ORDER_STATUS . RELEASE . getValue ( ) ) {
insertPrintQueue ( bean ) ;
}
//物料名称不存在,从物料信息中获取
MesPartSap mesPart = mesPartSapService . getMesPartSapByPartNo ( bean . getPartNo ( ) , bean . getOrganizeCode ( ) ) ;
@ -1884,7 +1910,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
bean . setFid ( UUID . randomUUID ( ) . toString ( ) ) ;
//生成WorkOrderSeq
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel ( MesCommonConstant . ORDER_NO_BTO_SEQ ) ;
List < String > resultList = syncFuncService . syncSerialNo ( orderSeqSerialNoModel . organizeCode ( bean . getOrganizeCode ( ) ) , bean . getCreateUser ( ) , bean . getOrganizeCode ( ) , 1 ) . getResultList ( ) ;
List < String > resultList = syncFuncService . syncSerialNo ( orderSeqSerialNoModel . organizeCode ( bean . getOrganizeCode ( ) ) , bean . getCreateUser ( ) , bean . getOrganizeCode ( ) , MesExtConstWords . ONE ) . getResultList ( ) ;
bean . setWorkOrderSeq ( resultList . get ( 0 ) ) ;
baseRDao . insert ( bean ) ;
workOrderLogService . saveMesWorkOrderLog ( bean , MesExtEnumUtil . WORK_ORDER_LOG_TYPE . INSERT , bean . getQty ( ) ) ;
@ -1894,7 +1920,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//查询物料信息
DdlPackBean ddlPackBeanPart = DdlPackBean . getDdlPackBean ( mesWorkOrderDb . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrderDb . getPartNo ( ) , "partNo" , ddlPackBeanPart ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrderDb . getPartNo ( ) , MesExtConstWords . PART_NO , ddlPackBeanPart ) ;
MesPart mesPart = mesPartRDao . getByProperty ( ddlPackBeanPart ) ;
if ( null = = mesPart ) {
MesException . throwMesBusiException ( "物料【%s】信息不存在" , mesWorkOrderDb . getPartNo ( ) ) ;
@ -1902,7 +1928,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//查询产线信息
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( mesWorkOrderDb . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrderDb . getWorkCenterCode ( ) , "workCenterCode" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( mesWorkOrderDb . getWorkCenterCode ( ) , MesExtConstWords . WORK_CENTER_CODE , ddlPackBean ) ;
MesWorkCenter mesWorkCenter = mesWorkCenterRDao . getByProperty ( ddlPackBean ) ;
if ( Objects . isNull ( mesWorkCenter ) ) {
MesException . throwMesBusiException ( "产线【%s】不存在" , mesWorkOrderDb . getWorkCenterCode ( ) ) ;
@ -1961,7 +1987,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
log . info ( "工厂:{}不存在未推送的工单" , organizeCode ) ;
}
//获取物料信息
Map < String , MesPart > partMap = BeanMapUtilsExt . getBeanMap ( mesPartRDao , "partNo" , organizeCode , mesWorkOrderListToWms . stream ( ) . map ( MesWorkOrder : : getPartNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) , "物料信息" ) ;
Map < String , MesPart > partMap = BeanMapUtilsExt . getBeanMap ( mesPartRDao , MesExtConstWords . PART_NO , organizeCode , mesWorkOrderListToWms . stream ( ) . map ( MesWorkOrder : : getPartNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) , "物料信息" ) ;
// 根据零件加生产版本分组
Map < String , List < MesWorkOrder > > mesWorkOrderListToWmsMap = mesWorkOrderListToWms . stream ( ) . collect ( Collectors . groupingBy ( t - > new StringJoiner ( MesExtConstWords . COMMA ) . add ( t . getPartNo ( ) ) . add ( t . getProductVersion ( ) ) . toString ( ) ) ) ;
@ -2009,7 +2035,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} else {
DdlPreparedPack . getInPackList ( workOrderNoList , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
}
baseRDao . updateByPropertiesNoSync ( new String [ ] { "modifyUser" , "modifyDatetime" , "syncToWms" } , new Object [ ] { userName , TimeTool . getNowTime ( true ) , CommonEnumUtil . VALID } , packBean ) ;
baseRDao . updateByPropertiesNoSync (
new String [ ] { MesExtConstWords . MODIFY_USER , MesExtConstWords . MODIFY_DATE_TIME , MesExtConstWords . SYNC_TO_WMS } ,
new Object [ ] { userName , TimeTool . getNowTime ( true ) , CommonEnumUtil . VALID } , packBean ) ;
}
public void saveMesWorkOrderLog ( MesWorkOrder mesWorkOrder ) {
@ -2020,9 +2048,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private List < MesWorkOrder > getMesWorkOrderListToWms ( String organizeCode , Integer pageSize ) {
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( Arrays . asList ( MesExtEnumUtil . ORDER_STATUS . RELEASE . getValue ( ) , MesExtEnumUtil . ORDER_STATUS . PROCESS . getValue ( ) ) , "workOrderStatus" , packBean ) ;
DdlPreparedPack . getNumEqualPack ( CommonEnumUtil . FALSE , "syncToWms" , packBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . ASC . getValue ( ) } , new String [ ] { "createDatetime" } , packBean ) ;
DdlPreparedPack . getInPackList ( Arrays . asList ( MesExtEnumUtil . ORDER_STATUS . RELEASE . getValue ( ) , MesExtEnumUtil . ORDER_STATUS . PROCESS . getValue ( ) ) , MesExtConstWords . WORK_ORDER_STATUS , packBean ) ;
DdlPreparedPack . getNumEqualPack ( CommonEnumUtil . FALSE , MesExtConstWords . SYNC_TO_WMS , packBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . ASC . getValue ( ) } , new String [ ] { MesExtConstWords . CREATE_DATE_TIME } , packBean ) ;
return baseRDao . findByHqlTopWhere ( packBean , StringUtil . isEmpty ( pageSize ) ? MesExtConstWords . TEN : pageSize ) ;
}
@ -2092,10 +2120,11 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
public List < MesBom > findMesBomByPartNoAndBomVersion ( String partNo , String organizeCode , String bomVersion ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( partNo , "partNo" , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( bomVersion , "bomVersion" , ddlPackBean ) ;
DdlPreparedPack . getStringSmallerPack ( TimeTool . getNowTime ( true ) , "effStartTime" , ddlPackBean ) ;
DdlPreparedPack . getOrderBy ( "effStartTime" , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( partNo , MesExtConstWords . PART_NO , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( bomVersion , MesExtConstWords . BOM_VERSION , ddlPackBean ) ;
DdlPreparedPack . getStringSmallerPack ( TimeTool . getNowTime ( true ) , MesExtConstWords . EFF_START_TIME , ddlPackBean ) ;
DdlPreparedPack . getStringBiggerPack ( TimeTool . getNowTime ( true ) , MesExtConstWords . EFF_END_TIME , ddlPackBean ) ;
DdlPreparedPack . getOrderBy ( MesExtConstWords . EFF_START_TIME , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) , ddlPackBean ) ;
List < MesBom > mesBoms = mesBomRDao . findByHqlWhere ( ddlPackBean ) ;
if ( org . springframework . util . CollectionUtils . isEmpty ( mesBoms ) ) {
MesException . throwMesBusiException ( "物料【%s】生产版本【%s】对应bom信息不存在" , partNo , bomVersion ) ;
@ -2108,8 +2137,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private boolean checkWorkCenterPartRelation ( String workCenterCode , String partNo ) {
DdlPackBean partRelationPackBean = DdlPackBean . getDdlPackBean ( AuthUtil . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , partRelationPackBean ) ;
DdlPreparedPack . getStringEqualPack ( partNo , "partNo" , partRelationPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , partRelationPackBean ) ;
DdlPreparedPack . getStringEqualPack ( partNo , MesExtConstWords . PART_NO , partRelationPackBean ) ;
int count = partRelationRao . findByHqlWhereCount ( partRelationPackBean ) ;
return count > 0 ;
}
@ -2121,7 +2150,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
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 ) + "" ;
String year = custCalendar . get ( Calendar . YEAR ) + MesExtConstWords . EMPTY ;
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 ( ) ;
@ -2180,24 +2209,47 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private List < MesPartPtr > getPartPtrList ( String organizeCode , String workCenterCode , List < String > partNoList ) {
/ * *
* 2024 / 11 / 16
* PTR 生 效
* 1. 有 开 始 时 间 和 结 束 时 间 和 需 要 数 量 , 达 到 其 中 一 个 就 结 束
* 2. 有 开 始 时 间 无 结 束 时 间 和 需 要 数 量 达 到 需 要 的 数 量 结 束
* 3. 有 开 始 时 间 无 结 束 时 间 , 无 结 束 数 量 一 直 替 换
* /
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 ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , partPtrPackBean ) ;
DdlPreparedPack . getInPackList ( partNoList , MesExtConstWords . SRC_PART_NO , partPtrPackBean ) ;
DdlPreparedPack . getStringSmallerPack ( TimeTool . getNowTime ( true ) , MesExtConstWords . START_TIME , partPtrPackBean ) ;
List < MesPartPtr > partPtrList = partPtrRao . findByHqlWhere ( partPtrPackBean ) ;
/ * *
* 有 开 始 时 间 和 无 结 束 时 间 和 需 要 的 数 量 , 只 有 达 到 数 量 才 结 束
* /
DdlPackBean part1PtrPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , part1PtrPackBean ) ;
DdlPreparedPack . getInPackList ( partNoList , MesExtConstWords . SRC_PART_NO , part1PtrPackBean ) ;
DdlPreparedPack . getStringSmallerPack ( TimeTool . getNowTime ( true ) , MesExtConstWords . START_TIME , part1PtrPackBean ) ;
DdlPreparedPack . getIsNotNull ( MesExtConstWords . PRT_VEHICLE_COUNT , part1PtrPackBean ) ;
DdlPreparedPack . getIsNull ( MesExtConstWords . END_TIME , part1PtrPackBean ) ;
List < MesPartPtr > partPtrList1 = partPtrRao . findByHqlWhere ( part1PtrPackBean ) ;
partPtrList . addAll ( partPtrList1 ) ;
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 ) ;
DdlPackBean part2PtrPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , part2PtrPackBean ) ;
DdlPreparedPack . getInPackList ( partNoList , MesExtConstWords . SRC_PART_NO , part2PtrPackBean ) ;
DdlPreparedPack . getStringSmallerPack ( TimeTool . getNowTime ( true ) , MesExtConstWords . START_TIME , part2PtrPackBean ) ;
DdlPreparedPack . getIsNull ( MesExtConstWords . PRT_VEHICLE_COUNT , part2PtrPackBean ) ;
DdlPreparedPack . getIsNull ( MesExtConstWords . END_TIME , part2PtrPackBean ) ;
List < MesPartPtr > partPtrList2 = partPtrRao . findByHqlWhere ( part2PtrPackBean ) ;
partPtrList . addAll ( partPtrList2 ) ;
return partPtrList ;
}
private MesPartProdGroup getMesPartProdGroup ( String organizeCode , String workCenterCode ) {
@ -2205,7 +2257,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return null ;
}
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , packBean ) ;
return mesPartProdGroupRDao . getByProperty ( packBean ) ;
}
@ -2215,8 +2267,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
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 ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , prodRuleSortPackBean ) ;
DdlPreparedPack . getInPackList ( partNoList , MesExtConstWords . ASSEMBLY_PART_NO , prodRuleSortPackBean ) ;
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List < MesProdRuleSortCfg > sortCfgList = mesProdRuleSortCfgRao . findByHqlWhere ( prodRuleSortPackBean ) ;
List < MesProdRuleSortCfg > sortCfgListFilter = sortCfgList . stream ( ) . filter ( item - > partNoList . contains ( item . getAssemblyPartNo ( ) ) ) . collect ( Collectors . toList ( ) ) ;
@ -2254,7 +2306,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
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 ( ) ) {
@ -2277,9 +2328,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//车型不为空的逻辑--用于报工
DdlPackBean reportRuleSortPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , reportRuleSortPackBean ) ;
DdlPreparedPack . getStringEqualPack ( vehicleNo , "vehicleNo" , reportRuleSortPackBean ) ;
DdlPreparedPack . getNotInPackList ( partNoList , "assemblyPartNo" , reportRuleSortPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , reportRuleSortPackBean ) ;
DdlPreparedPack . getStringEqualPack ( vehicleNo , MesExtConstWords . VEHICLE_NO , reportRuleSortPackBean ) ;
DdlPreparedPack . getNotInPackList ( partNoList , MesExtConstWords . ASSEMBLY_PART_NO , reportRuleSortPackBean ) ;
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List < MesProdRuleSortCfg > prodCfgList = mesProdRuleSortCfgRao . findByHqlWhere ( reportRuleSortPackBean ) ;
for ( MesProdRuleSortCfg ruleSortCfg : prodCfgList ) {
@ -2319,8 +2370,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//查询所有共用的零件 且没有零件号,多用于螺钉---查询排序加工规则
DdlPackBean prodRuleSortPublicPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , prodRuleSortPublicPackBean ) ;
DdlPreparedPack . getIsNull ( "assemblyPartNo" , prodRuleSortPublicPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , MesExtConstWords . WORK_CENTER_CODE , prodRuleSortPublicPackBean ) ;
DdlPreparedPack . getIsNull ( MesExtConstWords . ASSEMBLY_PART_NO , prodRuleSortPublicPackBean ) ;
List < MesProdRuleSortCfg > ruleSortCfgs = mesProdRuleSortCfgRao . findByHqlWhere ( prodRuleSortPublicPackBean ) ;
for ( MesProdRuleSortCfg ruleSortCfg : ruleSortCfgs ) {
MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly ( ) ;
@ -2474,31 +2525,56 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
p ublic List < MesQueueOrder > findMesQueueOrder ( String workOrderNo , String organizeCode ) {
p rivate List < MesQueueOrder > findMesQueueOrder ( String workOrderNo , String organizeCode ) {
if ( StringUtil . isEmpty ( workOrderNo ) | | StringUtil . isEmpty ( organizeCode ) ) return null ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , "workOrderNo" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
return queueOrderRao . findByHqlWhere ( packBean ) ;
}
public void closeMesQueueOrder ( String workOrderNo , String organizeCode , String userName ) {
private void closeMesQueueOrder ( String workOrderNo , String organizeCode , String userName ) {
if ( StringUtil . isEmpty ( workOrderNo ) | | StringUtil . isEmpty ( organizeCode ) ) return ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . QUEUE_ORDER_STATUS . CREATE . getValue ( ) , MesExtConstWords . STATUS , packBean ) ;
queueOrderRao . updateByProperties (
new String [ ] { MesExtConstWords . MODIFY_USER , MesExtConstWords . MODIFY_DATE_TIME , MesExtConstWords . STATUS } ,
new Object [ ] { userName , TimeTool . getNowTime ( true ) , MesExtEnumUtil . QUEUE_ORDER_STATUS . CLOSED . getValue ( ) } , packBean ) ;
}
private void closeMesPullingOrderInfo ( String workOrderNo , String organizeCode , String userName ) {
if ( StringUtil . isEmpty ( workOrderNo ) | | StringUtil . isEmpty ( organizeCode ) ) return ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
DdlPreparedPack . getInPackList (
Stream . of ( MesExtEnumUtil . PART_PULL_ORDER_TYPE . JIS_PULL . getValue ( ) , MesExtEnumUtil . PART_PULL_ORDER_TYPE . SPS_PULL . getValue ( ) ) . collect ( Collectors . toList ( ) ) ,
MesExtConstWords . PULL_ORDER_TYPE , packBean ) ;
pullingOrderInfoRepository . updateByProperties (
new String [ ] { MesExtConstWords . MODIFY_USER , MesExtConstWords . MODIFY_DATE_TIME , MesExtConstWords . PULL_ORDER_STATUS } ,
new Object [ ] { userName , TimeTool . getNowTime ( true ) , MesExtEnumUtil . PULL_ORDER_STATUS . PULL_ORDER_STATUS_50 . getValue ( ) } , packBean ) ;
}
private void closeMesPrintQueue ( String workOrderNo , String organizeCode , String userName ) {
if ( StringUtil . isEmpty ( workOrderNo ) | | StringUtil . isEmpty ( organizeCode ) ) return ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , "workOrderNo" , packBean ) ;
queueOrderRao . updateByProperties ( new String [ ] { "modifyUser" , "modifyDatetime" , "status" } , new Object [ ] { userName , TimeTool . getNowTime ( true ) , MesExtEnumUtil . QUEUE_ORDER_STATUS . CLOSED . getValue ( ) } , packBean ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . PRINT_QUEUE_TYPE . WORK_ORDER_ASSEMBLY . getValue ( ) , MesExtConstWords . PRINT_QUEUE_TYPE , packBean ) ;
printQueueRepository . updateByProperties (
new String [ ] { MesExtConstWords . MODIFY_USER , MesExtConstWords . MODIFY_DATE_TIME , MesExtConstWords . PRINT_STATUS } ,
new Object [ ] { userName , TimeTool . getNowTime ( true ) , MesExtEnumUtil . PRINT_STATUS . FAILURE . getValue ( ) } , packBean ) ;
}
public MesPrintQueue getMesPrintQuanOrder ( String workOrderNo , String organizeCode ) {
p rivate MesPrintQueue getMesPrintQuanOrder ( String workOrderNo , String organizeCode ) {
if ( StringUtil . isEmpty ( workOrderNo ) | | StringUtil . isEmpty ( organizeCode ) ) return null ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , "workOrderNo" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( workOrderNo , MesExtConstWords . WORK_ORDER_NO , packBean ) ;
return printQueueRepository . getByProperty ( packBean ) ;
}
private Long getMaxMesWorkOrderProductSeq ( MesWorkOrder bean ) {
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderType ( ) , "workOrderType" , orderPackBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { "productSeq" } , orderPackBean ) ;
DdlPreparedPack . getNumEqualPack ( bean . getWorkOrderType ( ) , MesExtConstWords . WORK_ORDER_TYPE , orderPackBean ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { MesExtConstWords . PRODUCT_SEQ } , orderPackBean ) ;
MesWorkOrder workOrder = baseRDao . getByProperty ( orderPackBean ) ;
return Objects . isNull ( workOrder ) | | StringUtils . isEmpty ( workOrder . getProductSeq ( ) ) ? 0 L : workOrder . getProductSeq ( ) . toString ( ) . endsWith ( "9" ) ? workOrder . getProductSeq ( ) + 2L : workOrder . getProductSeq ( ) + 1L ;
}
@ -2519,4 +2595,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesProductVersion ;
}
private String getCarRemark ( String custCode , String carModelCode , String organizeCode ) {
DdlPackBean ddlPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( custCode , MesExtConstWords . CUST_CODE , ddlPackBean ) ;
DdlPreparedPack . getStringEqualPack ( carModelCode , MesExtConstWords . CAR_MODEL_CODE , ddlPackBean ) ;
List < MesCustomerCarModel > carModelList = customerCarModelRepository . findByHqlTopWhere ( ddlPackBean , 1 ) ;
if ( carModelList ! = null & & ! carModelList . isEmpty ( ) ) {
return carModelList . get ( 0 ) . getRemark ( ) ;
}
return MesExtConstWords . EMPTY ;
}
}