@ -8,10 +8,8 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext ;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesEquipmentSpotCheckModel ;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSpotCheckOrderModel ;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords ;
import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud ;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService ;
import cn.estsh.i3plus.mes.pcn.util.DateUtil ;
import cn.estsh.i3plus.platform.common.convert.ConvertBean ;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum ;
import cn.estsh.i3plus.platform.common.tool.TimeTool ;
@ -30,6 +28,7 @@ import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder ;
import cn.estsh.impp.framework.boot.util.ValidatorBean ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.commons.collections.map.HashedMap ;
import org.apache.commons.collections4.ListUtils ;
import org.springframework.beans.BeanUtils ;
import org.springframework.beans.factory.annotation.Autowired ;
@ -39,7 +38,6 @@ import org.springframework.util.StringUtils;
import java.util.* ;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
/ * *
* @Description :
@ -87,16 +85,13 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
@Autowired
private MesEquipmentRepository mesEquipmentRepository ;
@Autowired
private MesEquipmentSpotCheckTagRepository mesEquipmentSpotCheckTagRepository ;
@Override
public ListPager < MesSpotCheckOrder > querySpotCheckOrder ( MesSpotCheckOrder spotCheckOrder , Pager pager ) {
DdlPackBean packBean = getDdlPackBean ( spotCheckOrder ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { "createDatetime" } , packBean ) ;
pager = PagerHelper . getPager ( pager , spotCheckOrderRepository . findByHqlWhereCount ( packBean ) ) ;
DdlPreparedPack . getOrderByPack ( new Object [ ] { CommonEnumUtil . ASC_OR_DESC . ASC . getValue ( ) , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) } , new String [ ] { "status" , "createDatetime" } , packBean ) ;
List < MesSpotCheckOrder > resultList = spotCheckOrderRepository . findByHqlWherePage ( packBean , pager ) ;
if ( CollectionUtils . isEmpty ( resultList ) ) {
return new ListPager < > ( resultList , pager ) ;
@ -207,19 +202,16 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
//校验点检单
checkSpotCheckOrder ( model . getSpotCheckOrder ( ) ) ;
//点检单类型为产品首检,产品末检时 需要判断单据的条码是否都扫描完成
if ( Stream . of ( MesExtEnumUtil . EQUIPMENT_CHECK_ORDER_TYPE . FIRST_INSPECTION . getValue ( ) , MesExtEnumUtil . EQUIPMENT_CHECK_ORDER_TYPE . END_INSPECTION . getValue ( ) ) . collect ( Collectors . toList ( ) ) . contains ( model . getSpotCheckOrder ( ) . getSpotCheckOrderType ( ) ) ) {
Optional < MesSpotCheckOrderPart > orderPartOptional = model . getOrderPartList ( ) . stream ( ) . filter ( k - > ! StringUtils . isEmpty ( k . getSn ( ) ) ) . findFirst ( ) ;
if ( ! orderPartOptional . isPresent ( ) ) {
throw new ImppBusiException ( "未扫描条码,请扫描条码后再查询设备数据,请检查数据" ) ;
//点检单类型为产品首检时 需要判断单据的条码是否都扫描完成
if ( model . getSpotCheckOrder ( ) . getSpotCheckOrderType ( ) = = MesExtEnumUtil . SPOT_CHECK_ORDER_TYPE . FIRST_PRODUCT_INSPECTION . getValue ( ) ) {
List < String > partNoList = model . getOrderPartList ( ) . stream ( ) . filter ( k - > StringUtils . isEmpty ( k . getSn ( ) ) ) . map ( k - > k . getPartNo ( ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( partNoList ) ) {
throw new ImppBusiException ( String . format ( "剩余物料号【%s】对应的条码未扫描, 请扫描完成后再完成质检" , partNoList ) ) ;
}
}
//根据设备代码获取EQUIP_ID
MesEquipment mesEquipment = mesEquipmentExtService . getMesEquipment ( org , model . getSpotCheckOrder ( ) . getEquipCode ( ) ) ;
//是否允许开始点检
allowSpotCheckOrder ( model . getSpotCheckOrder ( ) , org , mesEquipment . getEquipId ( ) ) ;
Map < Long , List < MesEquipVariableCollectContext > > setMap = null ;
//实际值地址数据Map
Map < Long , List < MesEquipVariableCollectContext > > realMap = null ;
@ -237,19 +229,13 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
//获取设定值设备数据
List < MesEquipVariableCollectContext > setEquipmentLogList = new ArrayList < > ( ) ;
for ( List < Long > tmp : ListUtils . partition ( setEquipVariableIdList , MesCommonConstant . MAX_PAGER_SIZE ) ) {
List < MesEquipVariableCollectContext > equipmentLogCollectList = mesEquipmentLogExtService . getEquipmentLogCollectList ( org , mesEquipment . getEquipId ( ) , MesExtEnumUtil . EQUIP_VARIABLE_NEED_NEW_VALUE . TRUE . getValue ( ) , MesExtEnumUtil . EQUIP_VARIABLE_TYPE . PROCESS_FINISH . getValue ( ) , tmp ) ;
if ( ! CollectionUtils . isEmpty ( equipmentLogCollectList ) ) {
setEquipmentLogList . addAll ( equipmentLogCollectList ) ;
}
setEquipmentLogList . addAll ( mesEquipmentLogExtService . getEquipmentLogCollectList ( org , mesEquipment . getEquipId ( ) , MesExtEnumUtil . EQUIP_VARIABLE_NEED_NEW_VALUE . TRUE . getValue ( ) , MesExtEnumUtil . EQUIP_VARIABLE_TYPE . PROCESS_FINISH . getValue ( ) , tmp ) ) ;
}
//设定值地址数据Map
setMap = setEquipmentLogList . stream ( ) . collect ( Collectors . groupingBy ( MesEquipVariableCollectContext : : getEquipVariableId ) ) ;
for ( List < Long > tmp : ListUtils . partition ( realEquipVariableIdList , MesCommonConstant . MAX_PAGER_SIZE ) ) {
List < MesEquipVariableCollectContext > equipmentLogCollectList = mesEquipmentLogExtService . getEquipmentLogCollectList ( org , mesEquipment . getEquipId ( ) , MesExtEnumUtil . EQUIP_VARIABLE_NEED_NEW_VALUE . TRUE . getValue ( ) , MesExtEnumUtil . EQUIP_VARIABLE_TYPE . PROCESS_FINISH . getValue ( ) , tmp ) ;
if ( ! CollectionUtils . isEmpty ( equipmentLogCollectList ) ) {
realEquipmentLogList . addAll ( equipmentLogCollectList ) ;
}
realEquipmentLogList . addAll ( mesEquipmentLogExtService . getEquipmentLogCollectList ( org , mesEquipment . getEquipId ( ) , MesExtEnumUtil . EQUIP_VARIABLE_NEED_NEW_VALUE . TRUE . getValue ( ) , MesExtEnumUtil . EQUIP_VARIABLE_TYPE . PROCESS_FINISH . getValue ( ) , tmp ) ) ;
}
//实际值地址数据Map
realMap = realEquipmentLogList . stream ( ) . collect ( Collectors . groupingBy ( MesEquipVariableCollectContext : : getEquipVariableId ) ) ;
@ -311,11 +297,12 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
//校验点检单
MesSpotCheckOrder spotCheckOrder = checkSpotCheckOrder ( model . getSpotCheckOrder ( ) ) ;
//点检单类型为产品首检,产品末检时 需要判断单据的条码是否都扫描完成
if ( Stream . of ( MesExtEnumUtil . EQUIPMENT_CHECK_ORDER_TYPE . FIRST_INSPECTION . getValue ( ) , MesExtEnumUtil . EQUIPMENT_CHECK_ORDER_TYPE . END_INSPECTION . getValue ( ) ) . collect ( Collectors . toList ( ) ) . contains ( model . getSpotCheckOrder ( ) . getSpotCheckOrderType ( ) ) ) {
Optional < MesSpotCheckOrderPart > orderPartOptional = model . getOrderPartList ( ) . stream ( ) . filter ( k - > ! StringUtils . isEmpty ( k . getSn ( ) ) ) . findFirst ( ) ;
if ( ! orderPartOptional . isPresent ( ) ) {
throw new ImppBusiException ( "未扫描条码,请扫描条码后再查询设备数据,请检查数据" ) ;
//点检单类型为产品首检时 需要判断单据的条码是否都扫描完成
if ( model . getSpotCheckOrder ( ) . getSpotCheckOrderType ( ) = = MesExtEnumUtil . SPOT_CHECK_ORDER_TYPE . FIRST_PRODUCT_INSPECTION . getValue ( ) ) {
List < String > partNoList = model . getOrderPartList ( ) . stream ( ) . filter ( k - > StringUtils . isEmpty ( k . getSn ( ) ) ) . map ( k - > k . getPartNo ( ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! CollectionUtils . isEmpty ( partNoList ) ) {
throw new ImppBusiException ( String . format ( "剩余物料号【%s】对应的条码未扫描, 请扫描完成后再完成质检" , partNoList ) ) ;
}
}
model . getOrderPartList ( ) . forEach ( k - > {
@ -605,13 +592,15 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
}
private DdlPackBean getDdlPackBean ( MesSpotCheckOrder spotCheckOrder ) {
String createDateTime = TimeTool . pareDateToString ( DateUtil . addDays ( new Date ( ) , - ( Objects . isNull ( spotCheckOrder . getDays ( ) ) ? MesPcnExtConstWords . SEVEN : spotCheckOrder . getDays ( ) ) ) ) ;
List < Integer > statusList = new ArrayList < > ( ) ;
statusList . add ( MesExtEnumUtil . SPOT_CHECK_ORDER_STATUS . CREATE . getValue ( ) ) ;
statusList . add ( MesExtEnumUtil . SPOT_CHECK_ORDER_STATUS . COMPLETE . getValue ( ) ) ;
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( spotCheckOrder . getOrganizeCode ( ) ) ;
DdlPreparedPack . getStringLikerPack ( spotCheckOrder . getWorkCenterCode ( ) , "workCenterCode" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( spotCheckOrder . getWorkCellCode ( ) , "workCellCode" , packBean ) ;
DdlPreparedPack . getStringLikerPack ( spotCheckOrder . getSpotCheckOrderNo ( ) , "spotCheckOrderNo" , packBean ) ;
DdlPreparedPack . getStringEqualPack ( spotCheckOrder . getEquipCode ( ) , "equipCode" , packBean ) ;
packBean . setWhereAppend ( packBean . getWhereAppend ( ) + String . format ( " and (model.status = %s or (model.status = %s and model.createDatetime >= '%s'))" , MesExtEnumUtil . SPOT_CHECK_ORDER_STATUS . CREATE . getValue ( ) , MesExtEnumUtil . SPOT_CHECK_ORDER_STATUS . COMPLETE . getValue ( ) , createDateTime ) ) ;
DdlPreparedPack . getInPackList ( statusList , "status" , packBean ) ;
return packBean ;
}
@ -675,24 +664,5 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
}
}
private void allowSpotCheckOrder ( MesSpotCheckOrder spotCheckOrder , String org , Integer equipId ) {
if ( Objects . isNull ( spotCheckOrder ) | | StringUtils . isEmpty ( spotCheckOrder . getSpotCheckCode ( ) ) | | StringUtils . isEmpty ( org ) ) {
return ;
}
DdlPackBean packBean = DdlPackBean . getDdlPackBean ( org ) ;
DdlPreparedPack . getStringEqualPack ( spotCheckOrder . getSpotCheckCode ( ) , "spotCheckCode" , packBean ) ;
MesEquipmentSpotCheckTag equipmentSpotCheckTag = mesEquipmentSpotCheckTagRepository . getByProperty ( packBean ) ;
if ( Objects . isNull ( equipmentSpotCheckTag ) ) {
return ;
}
List < MesEquipVariableCollectContext > equipmentLogCollectList = mesEquipmentLogExtService . getEquipmentLogCollectList ( org , equipId , MesExtEnumUtil . EQUIP_VARIABLE_NEED_NEW_VALUE . TRUE . getValue ( ) , MesExtEnumUtil . EQUIP_VARIABLE_TYPE . PROCESS_FINISH . getValue ( ) , Stream . of ( equipmentSpotCheckTag . getEquipVariableId ( ) ) . collect ( Collectors . toList ( ) ) ) ;
if ( CollectionUtils . isEmpty ( equipmentLogCollectList ) ) {
throw new ImppBusiException ( String . format ( "点检项目代码【%s】设备地址【%s】未查询到设备返回值, 请检查数据! " , spotCheckOrder . getSpotCheckCode ( ) , equipmentSpotCheckTag . getTagName ( ) ) ) ;
}
if ( ! equipmentLogCollectList . iterator ( ) . next ( ) . getEquipVariableValue ( ) . equals ( equipmentSpotCheckTag . getSuccessValue ( ) ) ) {
throw new ImppBusiException ( String . format ( "点检项目代码【%s】设备地址【%s】设备返回值【%s】与理论成功值【%s】不匹配, 请检查数据! " , spotCheckOrder . getSpotCheckCode ( ) , equipmentSpotCheckTag . getTagName ( ) , equipmentLogCollectList . iterator ( ) . next ( ) . getEquipVariableValue ( ) , equipmentSpotCheckTag . getSuccessValue ( ) ) ) ;
}
}
}