@ -1,7 +1,10 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi ;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService ;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService ;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPullingOrderInfoService ;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException ;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords ;
import cn.estsh.i3plus.platform.common.convert.ConvertBean ;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean ;
import cn.estsh.i3plus.pojo.base.bean.ListPager ;
@ -13,6 +16,7 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.* ;
import cn.estsh.i3plus.pojo.mes.repository.* ;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil ;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil ;
import lombok.extern.slf4j.Slf4j ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
@ -44,6 +48,9 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
@Autowired
private MesPullingOrderExtendsRepository mesPullingOrderExtendsRepository ;
@Autowired
private IMesProduceSnExtService mesProduceSnExtService ;
@Override
public ListPager < MesPullingOrderInfo > queryMesPullingOrderInfoByPager ( MesPullingOrderInfo bean , Pager pager ) {
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
@ -138,10 +145,10 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
public List < MesPullingOrderInfo > doMesPullingOrderInfoPrint ( MesPullingOrderInfo bean , String userName ) {
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
//多选
if ( ! StringUtil . isEmpty ( bean . getPullCode ( ) ) ) {
if ( ! StringUtil . isEmpty ( bean . getPullCode ( ) ) ) {
DdlPreparedPack . getInPackList ( Arrays . asList ( bean . getPullCode ( ) . split ( "," ) ) , "pullCode" , packBean ) ;
}
if ( ! StringUtil . isEmpty ( bean . getWorkCenterCode ( ) ) ) {
if ( ! StringUtil . isEmpty ( bean . getWorkCenterCode ( ) ) ) {
DdlPreparedPack . getInPackList ( Arrays . asList ( bean . getWorkCenterCode ( ) . split ( "," ) ) , "workCenterCode" , packBean ) ;
}
DdlPreparedPack . getStringEqualPack ( bean . getPullingOrderNo ( ) , "pullingOrderNo" , packBean ) ;
@ -167,4 +174,120 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
}
return pullingOrderInfos ;
}
@Override
public ListPager queryMesPullingOrderPartInfoByPager ( MesPullingOrderInfo bean , Pager pager ) {
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
if ( ! StringUtil . isEmpty ( bean . getPullCode ( ) ) ) {
DdlPreparedPack . getInPackList ( Arrays . asList ( bean . getPullCode ( ) . split ( "," ) ) , "pullCode" , packBean ) ;
}
if ( ! StringUtil . isEmpty ( bean . getWorkCenterCode ( ) ) ) {
DdlPreparedPack . getInPackList ( Arrays . asList ( bean . getWorkCenterCode ( ) . split ( "," ) ) , "workCenterCode" , packBean ) ;
}
//查询拉动单主表是JIS拉动且拉动状态为10
String append = packBean . getWhereAppend ( ) +
" AND EXISTS (select 1 from MesPullingOrderInfo po where po.pullingOrderNo = model.pullingOrderNo and po.pullOrderType=20 and po.pullOrderStatus =10 " ;
packBean . setWhereAppend ( append + " )" ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . ASC . getValue ( ) , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { "status" , "createDatetime" } , packBean ) ;
pager = PagerHelper . getPager ( pager , mesPullingOrderPartInfoRepository . findByHqlWhereCount ( packBean ) ) ;
List < MesPullingOrderPartInfo > resultList = mesPullingOrderPartInfoRepository . findByHqlWherePage ( packBean , pager ) ;
if ( ! CollectionUtils . isEmpty ( resultList ) ) {
//查拉动单明细对应的拉动组规则
DdlPackBean packBeanDetail = DdlPackBean . getDdlPackBean ( bean . getOrganizeCode ( ) ) ;
DdlPreparedPack . getInPackList ( resultList . stream ( ) . map ( MesPullingOrderPartInfo : : getPullCode ) . collect ( Collectors . toList ( ) ) , "pullCode" , packBeanDetail ) ;
List < MesPartPullDetail > mesPartPullDetails = mesPartPullDetailRDao . findByHqlWhere ( packBeanDetail ) ;
if ( ! CollectionUtils . isEmpty ( mesPartPullDetails ) ) {
Map < String , List < MesPartPullDetail > > pullCodePartMap = mesPartPullDetails . stream ( ) . collect ( Collectors . groupingBy ( a - > a . getPullCode ( ) + "=" + a . getPartNo ( ) ) ) ;
for ( MesPullingOrderPartInfo partInfo : resultList ) {
if ( ! CollectionUtils . isEmpty ( pullCodePartMap . get ( partInfo . getPullCode ( ) + "=" + partInfo . getPartNo ( ) ) ) ) {
MesPartPullDetail mesPartPullDetail = pullCodePartMap . get ( partInfo . getPullCode ( ) + "=" + partInfo . getPartNo ( ) ) . get ( 0 ) ;
partInfo . setScanValidationType ( StringUtil . isEmpty ( mesPartPullDetail . getScanValidationType ( ) ) ? 10 : mesPartPullDetail . getScanValidationType ( ) ) ;
partInfo . setRuleValidation ( StringUtil . isEmpty ( mesPartPullDetail . getRuleValidation ( ) ) ? "" : mesPartPullDetail . getRuleValidation ( ) ) ;
if ( partInfo . getScanValidationType ( ) = = 10 ) {
partInfo . setColor ( MesExtEnumUtil . PART_PULL_DETAIL_COLOR . WHITE . getCode ( ) ) ;
} else {
partInfo . setColor ( MesExtEnumUtil . PART_PULL_DETAIL_COLOR . RED . getCode ( ) ) ;
}
} else {
partInfo . setColor ( MesExtEnumUtil . PART_PULL_DETAIL_COLOR . WHITE . getCode ( ) ) ;
}
}
}
}
return new ListPager < > ( resultList , pager ) ;
}
@Override
public MesPullingOrderPartInfo doMesPullingOrderInfoJisScan ( MesPullingOrderPartInfo mesPullingOrderInfo , String userName ) {
MesPullingOrderPartInfo partInfo = mesPullingOrderPartInfoRepository . getById ( mesPullingOrderInfo . getId ( ) ) ;
if ( ! StringUtil . isEmpty ( partInfo ) ) {
//查拉动单明细对应的拉动组规则
DdlPackBean packBeanDetail = DdlPackBean . getDdlPackBean ( partInfo . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( partInfo . getPullCode ( ) , "pullCode" , packBeanDetail ) ;
DdlPreparedPack . getStringEqualPack ( partInfo . getPartNo ( ) , "partNo" , packBeanDetail ) ;
MesPartPullDetail mesPartPullDetail = mesPartPullDetailRDao . getByProperty ( packBeanDetail ) ;
if ( StringUtil . isEmpty ( mesPartPullDetail ) ) {
MesPcnException . throwMesBusiException ( "工单【%s】拉动组数据为空" , mesPullingOrderInfo . getWorkOrderNo ( ) ) ;
}
//校验规则
if ( checkRule ( mesPullingOrderInfo , mesPartPullDetail ) ) {
//校验成功修改颜色为黄色2
partInfo . setColor ( MesExtEnumUtil . PART_PULL_DETAIL_COLOR . YELLOW . getCode ( ) ) ;
ConvertBean . serviceModelUpdate ( partInfo , userName ) ;
mesPullingOrderPartInfoRepository . update ( partInfo ) ;
} else {
MesPcnException . throwMesBusiException ( "工单拉动组明细【%s】数据为空" , mesPullingOrderInfo . getWorkOrderNo ( ) ) ;
}
} else {
MesPcnException . throwMesBusiException ( "工单拉动组明细【%s】数据为空" , mesPullingOrderInfo . getWorkOrderNo ( ) ) ;
}
return partInfo ;
}
private boolean checkRule ( MesPullingOrderPartInfo mesPullingOrderInfo , MesPartPullDetail mesPartPullDetail ) {
String rule = mesPartPullDetail . getRuleValidation ( ) ;
if ( mesPullingOrderInfo . getScanValidationType ( ) = = MesExtEnumUtil . PART_PULL_DETAIL_SCAN_VALIDATION_TYPE . HOMEMADE_VALIDATE . getValue ( ) ) {
List < MesProduceSn > produceSnList = mesProduceSnExtService . getProduceSnList ( mesPullingOrderInfo . getOrganizeCode ( ) , mesPullingOrderInfo . getProductSn ( ) ) ;
return mesPartPullDetail . getPullPartNo ( ) . equals ( produceSnList . get ( 0 ) . getPartNo ( ) ) ;
} else if ( mesPullingOrderInfo . getScanValidationType ( ) = = MesExtEnumUtil . PART_PULL_DETAIL_SCAN_VALIDATION_TYPE . COOPERATION_VALIDATE . getValue ( ) ) {
return ( Boolean ) ( ( IMesNumberRuleMatchDispatchService ) SpringContextsUtil . getBean ( MesExtEnumUtil . ASSEMBLY_MATCH_TYPE . MATCH_TYPE_20 . getStrategyClass ( ) ) )
. matchNumberRule ( mesPullingOrderInfo . getOrganizeCode ( ) , mesPullingOrderInfo . getProductSn ( ) , rule , rule )
. get ( MesPcnExtConstWords . RESULT ) ;
} else {
return true ;
}
}
@Override
public List < MesPullingOrderPartInfo > doMesPullingOrderInfoSend ( List < MesPullingOrderPartInfo > infoList , String userName ) {
List < MesPullingOrderPartInfo > result = new ArrayList < > ( ) ;
for ( MesPullingOrderPartInfo mesPullingOrderPartInfo : infoList ) {
//查询拉动组明细
// DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(mesPullingOrderPartInfo.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(mesPullingOrderPartInfo.getPullingOrderNo(), "pullingOrderNo", partPackBean);
// DdlPreparedPack.getStringEqualPack(mesPullingOrderPartInfo.getPartNo(), "partNo", partPackBean);
MesPullingOrderPartInfo partInfo = mesPullingOrderPartInfoRepository . getById ( mesPullingOrderPartInfo . getId ( ) ) ;
if ( ! StringUtil . isEmpty ( partInfo ) ) {
//修改为已送料
partInfo . setStatus ( MesExtEnumUtil . PULL_ORDER_PART_STATUS . SENTED . getValue ( ) ) ;
partInfo . setColor ( MesExtEnumUtil . PART_PULL_DETAIL_COLOR . GREEN . getCode ( ) ) ;
ConvertBean . serviceModelUpdate ( partInfo , userName ) ;
mesPullingOrderPartInfoRepository . update ( partInfo ) ;
//拉动单改为已扫描
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( partInfo . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringEqualPack ( partInfo . getPullingOrderNo ( ) , "pullingOrderNo" , packBean ) ;
MesPullingOrderInfo pullingOrderInfo = mesPullingOrderInfoRepository . getByProperty ( packBean ) ;
if ( ! StringUtil . isEmpty ( pullingOrderInfo ) ) {
pullingOrderInfo . setPullOrderStatus ( MesExtEnumUtil . PULL_ORDER_STATUS . JIS_PULL . getValue ( ) ) ;
ConvertBean . serviceModelUpdate ( pullingOrderInfo , userName ) ;
mesPullingOrderInfoRepository . update ( pullingOrderInfo ) ;
}
result . add ( partInfo ) ;
}
}
return result ;
}
}