@ -100,7 +100,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
}
@Override
public MesKanBanShowModel g etData( Long id , String organizeCode ) throws ParseException {
public MesKanBanShowModel doG etData( Long id , String organizeCode ) throws ParseException {
DdlPackBean earlyWarningKanBanPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getNumEqualPack ( id , "id" , earlyWarningKanBanPackBean ) ;
List < MesEarlyWarningKanBan > list = earlyWarningKanBanRao . findByHqlTopWhere ( earlyWarningKanBanPackBean , 1 ) ;
@ -132,7 +132,6 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
lastWorkOrder = lastOfflineOrder ;
}
//6.查询报警产量 & 获取开班起始时间
String dStart ;
Date now = new Date ( ) ;
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
SimpleDateFormat sdf1 = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
@ -205,12 +204,13 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
//工单 productSeq = work_order表中最大的排序信息 【work_order 的id in (装配件清单表中 工位等于@workCellCode 且 status = 1 已经装配) 产线=, order_type = 排序单, sort_flag 不为 x ,E;status not in 入参1, 入参2, cust_order_code不为空】
// workOrderAssembly
DdlPackBean assemblyPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , assemblyPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCellCode , "workCellCode" , assemblyPackBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . ASSEMBLY_STATUS . ASSEMBLY_STATUS_10 . getValue ( ) , "assemblyStatus" , assemblyPackBean ) ;
List < MesWorkOrderAssembly > mesWorkOrderAssemblyList = workOrderAssemblyRao . findByHqlWhere ( assemblyPackBean ) ;
List < String > workOrderNoList = mesWorkOrderAssemblyList . stream ( ) . map ( MesWorkOrderAssembly : : getWorkOrderNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
// DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",assemblyPackBean);
// DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",assemblyPackBean);
// DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(),"assemblyStatus",assemblyPackBean);
// List<MesWorkOrderAssembly> mesWorkOrderAssemblyList = workOrderAssemblyRao.findByHqlWhere(assemblyPackBean);
// //todo 有内存溢出风险 调试一下,写hql按照分组查询出workOrderNoList
// List<String> workOrderNoList = mesWorkOrderAssemblyList.stream().map(MesWorkOrderAssembly::getWorkOrderNo).distinct().collect(Collectors.toList());
List < Integer > orderStatusList = new ArrayList < > ( ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . CLOSE . getValue ( ) ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . DISMANTLE . getValue ( ) ) ;
@ -219,14 +219,15 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
orderFlagList . add ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . E . getValue ( ) ) ;
orderFlagList . add ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . X . getValue ( ) ) ;
DdlPackBean queueOrderPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
DdlPreparedPack . getInPackList ( workOrderNoList , "workOrderNo" , queueOrderPackBean ) ;
// DdlPreparedPack.getInPackList(workOrderNoList,"workOrderNo",queueOrderPackBean);
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , queueOrderPackBean ) ;
DdlPreparedPack . getStringEqualPack ( workCellCode , "workCellCode" , queueOrderPackBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . QUEUE_ORDER_STATUS . FINISH . getValue ( ) , "status" , queueOrderPackBean ) ;
DdlPreparedPack . getNotInPack ( orderFlagList , "orderFlag" , queueOrderPackBean ) ;
DdlPreparedPack . getStringNotBlanklPack ( "custOrderNo" , queueOrderPackBean ) ;
DdlPreparedPack . getOrderBy ( "productSeq" , CommonEnumUtil . ASC_OR_DESC . DESC . getValue ( ) , queueOrderPackBean ) ;
//先查对列表,找到对应产线工位的工单
List < MesQueueOrder > queueOrderList = queueOrderRao . findByHql Where( queueOrderPackBean ) ;
List < MesQueueOrder > queueOrderList = queueOrderRao . findByHql Top Where( queueOrderPackBean , 20 ) ;
//过滤掉关闭和拆解的工单
List < String > workOrderNoQueueList = queueOrderList . stream ( ) . map ( MesQueueOrder : : getWorkOrderNo ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
DdlPackBean orderPackBean = DdlPackBean . getDdlPackBean ( organizeCode ) ;
@ -264,7 +265,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
DdlPreparedPack . getStringEqualPack ( workCenterCode , "workCenterCode" , workOrderPackBean ) ;
DdlPreparedPack . getInPackList ( orderStatusList , "workOrderStatus" , workOrderPackBean ) ;
DdlPreparedPack . getNumEqualPack ( MesExtEnumUtil . ORDER_TYPE . SORT . getValue ( ) , "workOrderType" , workOrderPackBean ) ;
DdlPreparedPack . getStringBiggerPack ( realEndTime , " end Time", workOrderPackBean ) ;
DdlPreparedPack . getStringBiggerPack ( realEndTime , " offline Time", workOrderPackBean ) ;
DdlPreparedPack . getStringNoEqualPack ( MesExtEnumUtil . ORDER_TYPE_IDENTIFICATION . X . getValue ( ) , "orderFlag" , workOrderPackBean ) ;
return workOrderRao . findByHqlWhereCount ( workOrderPackBean ) ;
@ -273,8 +274,10 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
//报警产量
private List < String > getCLWarning ( String date , int qty , String organizeCode ) {
List < Integer > orderStatusList = new ArrayList < > ( ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . CREATE . getValue ( ) ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . RELEASE . getValue ( ) ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . PROCESS . getValue ( ) ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . DISMANTLE . getValue ( ) ) ;
orderStatusList . add ( MesExtEnumUtil . ORDER_STATUS . SHIPPING . getValue ( ) ) ;
StringBuilder hql = new StringBuilder ( ) ;
hql . append ( " select carModelCode from MesWorkOrder" ) ;
@ -312,18 +315,23 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
if ( infoV107List . isEmpty ( ) ) {
return mesKanBanShowModel ;
}
StringBuilder errorMsg = new StringBuilder ( ) ;
for ( int i = 0 ; i < infoV107List . size ( ) - 1 ; i + + ) {
int preCsnNo = Integer . parseInt ( infoV107List . get ( i + 1 ) . getCsnNo ( ) . substring ( 3 , 10 ) ) ;
int curCsnNo = Integer . parseInt ( infoV107List . get ( i ) . getCsnNo ( ) . substring ( 3 , 10 ) ) ;
if ( curCsnNo ! = preCsnNo + 1 ) {
//需要保留截图
//需要发声音
mesKanBanShowModel . setVoice ( "跳号的声音" ) ;
//需要发送记录信息 当前csnNo进行了跳号
mesKanBanShowModel. setErrorMsg ( String . format ( "当前CsnNo:%d进行了跳号 ", curCsnNo ) ) ;
break ;
errorMsg. append ( String . format ( "当前CsnNo:%d进行了跳号 ;\n ", curCsnNo ) ) ;
}
}
if ( errorMsg . length ( ) > 0 ) {
shortCut = true ;
mesKanBanShowModel . setVoice ( "跳号的声音" ) ;
}
mesKanBanShowModel . setErrorMsg ( errorMsg . toString ( ) ) ;
// if (infoDD == null){
// return mesKanBanShowModel;
// }
@ -347,12 +355,18 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
mesKanBanShowModel . setWorkOrderCenter ( workOrderCenter ) ;
//供货缓冲 >=
Long supplyRedBuffer = kanBan . getSupplyRedBuffer ( ) ;
Long supplyYellowBuffer = kanBan . getSupplyYellowBuffer ( ) ;
mesKanBanShowModel . setSupplyRedBuffer ( supplyRedBuffer ) ;
//供货缓冲实际
Long realSupplyBuffer = Long . parseLong ( infoDD . getCsnNo ( ) . substring ( 3 , 10 ) ) - Long . parseLong ( infoKH . getCsnNo ( ) . substring ( 3 , 10 ) ) - kanBan . getOnlineAdjustNum ( ) ;
mesKanBanShowModel . setRealSupplyBuffer ( realSupplyBuffer ) ;
//成品缓冲文字颜色
//private String realSupplyBufferColor;
if ( realSupplyBuffer < supplyRedBuffer ) {
mesKanBanShowModel . setRealSupplyBufferColor ( "RED" ) ;
mesKanBanShowModel . setSupplyRedBuffer ( supplyRedBuffer ) ;
} else if ( realSupplyBuffer < supplyYellowBuffer ) {
mesKanBanShowModel . setRealSupplyBufferColor ( "YELLOW" ) ;
mesKanBanShowModel . setSupplyRedBuffer ( supplyYellowBuffer ) ;
}
//线头积单
Long summaryWorkOrderRedCount = kanBan . getSummaryWorkOrderRedCount ( ) ;
mesKanBanShowModel . setSummaryWorkOrderRedCount ( summaryWorkOrderRedCount ) ;
@ -365,6 +379,13 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
summaryRealSupplyRealCount = Long . parseLong ( infoDD . getCsnNo ( ) . substring ( infoDD . getCsnNo ( ) . length ( ) - 5 ) ) - Long . parseLong ( workOrder . getCustOrderNo ( ) . substring ( workOrderLast . getCustOrderNo ( ) . length ( ) - 7 ) ) - kanBan . getOnlineAdjustNum ( ) ;
}
mesKanBanShowModel . setSummaryRealSupplyRealCount ( summaryRealSupplyRealCount ) ;
Long summaryWorkOrderYellowCount = kanBan . getSummaryWorkOrderYellowCount ( ) ;
if ( summaryRealSupplyRealCount > summaryWorkOrderRedCount ) {
mesKanBanShowModel . setSummaryWorkOrderColor ( "RED" ) ;
} else if ( summaryRealSupplyRealCount > summaryWorkOrderYellowCount ) {
mesKanBanShowModel . setSummaryWorkOrderColor ( "YELLOW" ) ;
}
//成品缓冲
Long productionRedBuffer = kanBan . getProductionRedBuffer ( ) ;
mesKanBanShowModel . setProductionRedBuffer ( productionRedBuffer ) ;
@ -377,8 +398,12 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
}
mesKanBanShowModel . setRealProductionBuffer ( realProductionBuffer ) ;
//成品缓冲文字颜色
//private String realProductionBufferColor;
Long productionYellowBuffer = kanBan . getProductionYellowBuffer ( ) ;
if ( realProductionBuffer < productionRedBuffer ) {
mesKanBanShowModel . setRealProductionBufferColor ( "RED" ) ;
} else if ( realProductionBuffer < productionYellowBuffer ) {
mesKanBanShowModel . setRealProductionBufferColor ( "YELLOW" ) ;
}
//声音信息
//private String voice;
//错误信息
@ -390,14 +415,23 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
if ( kanBan . getRecord ( ) . equals ( CommonEnumUtil . TRUE_OR_FALSE . TRUE . getValue ( ) ) ) {
MesEarlyWarningRecord record = new MesEarlyWarningRecord ( ) ;
//供货缓冲实际值
record . setRealSupplyBuffer ( realSupplyBuffer ) ;
//实际积累
record . setSummaryRealSupplyRealCount ( summaryRealSupplyRealCount ) ;
//成品缓冲
record . setRealProductionBuffer ( realProductionBuffer ) ;
// 告警数量
record . setWorkOrderCount ( ( long ) workCount ) ;
record . setWorkCenterCode ( workOrderCenter ) ;
record . setGaNo ( infoDD . getCsnNo ( ) ) ;
record . setLastGaNo ( infoKH . getCsnNo ( ) ) ;
record . setRemark ( kanBan . getId ( ) . toString ( ) ) ;
ConvertBean . saveOrUpdate ( record , "kanban" ) ;
earlyWarningRecordRao . insert ( record ) ;
mesKanBanShowModel . setRecordId ( record . getId ( ) ) ;
}
mesKanBanShowModel . setTotalCount ( ( long ) workCount ) ;
return mesKanBanShowModel ;
}
}