From 774cde7bff62cb28dee7f56d837d16336b86425d Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Tue, 12 May 2026 10:42:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E8=89=B2=E7=81=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modbus/entity/ResourceScheduled.java | 4 + .../mapper/ResourceScheduledMapper.java | 2 + .../impl/ModbusCollectServiceImpl.java | 193 ++++++++++++------ .../resources/dao/ResourceScheduledMapper.xml | 3 + 4 files changed, 138 insertions(+), 64 deletions(-) diff --git a/threecolor-modbus-collector/src/main/java/com/xujie/modbus/entity/ResourceScheduled.java b/threecolor-modbus-collector/src/main/java/com/xujie/modbus/entity/ResourceScheduled.java index 04a8fa2..a06ec27 100644 --- a/threecolor-modbus-collector/src/main/java/com/xujie/modbus/entity/ResourceScheduled.java +++ b/threecolor-modbus-collector/src/main/java/com/xujie/modbus/entity/ResourceScheduled.java @@ -22,4 +22,8 @@ public class ResourceScheduled { @TableField(updateStrategy = FieldStrategy.IGNORED) private Integer sfdcid; + + private String closeFlag; + + private String oriCloseFlag; } diff --git a/threecolor-modbus-collector/src/main/java/com/xujie/modbus/mapper/ResourceScheduledMapper.java b/threecolor-modbus-collector/src/main/java/com/xujie/modbus/mapper/ResourceScheduledMapper.java index 940b0a2..7674d99 100644 --- a/threecolor-modbus-collector/src/main/java/com/xujie/modbus/mapper/ResourceScheduledMapper.java +++ b/threecolor-modbus-collector/src/main/java/com/xujie/modbus/mapper/ResourceScheduledMapper.java @@ -9,4 +9,6 @@ import java.util.List; @Mapper public interface ResourceScheduledMapper extends BaseMapper { List selectResourceScheduledAndResourceList(String site, String resourceId); + + ResourceScheduled getOneResourceSchedule(String site, String resourceId, String seqNo); } diff --git a/threecolor-modbus-collector/src/main/java/com/xujie/modbus/service/impl/ModbusCollectServiceImpl.java b/threecolor-modbus-collector/src/main/java/com/xujie/modbus/service/impl/ModbusCollectServiceImpl.java index 20e5144..664c64e 100644 --- a/threecolor-modbus-collector/src/main/java/com/xujie/modbus/service/impl/ModbusCollectServiceImpl.java +++ b/threecolor-modbus-collector/src/main/java/com/xujie/modbus/service/impl/ModbusCollectServiceImpl.java @@ -340,23 +340,29 @@ public class ModbusCollectServiceImpl break; } if (!skipReopenHist) { - sfdcTimeHistByGreen.setTillTime(null); - sfdcTimeHistByGreen.setTillenteredTime(null); - sfdcTimeHistByGreen.setCompletedFlag("N"); - int i = sfdcTimeHistMapper.updateById(sfdcTimeHistByGreen); - if(i>0){ - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("site", folderLocation.getSite()); - updateWrapper.eq("resource_id", folderLocation.getResourceId()); - updateWrapper.eq("seq_no", sfdcTimeHistByGreen.getSeqNo()); - updateWrapper.set("issend", "Y"); - updateWrapper.set("sfdcid",sfdcTimeHistByGreen.getId()); - resourceScheduledMapper.update(updateWrapper); - logger.info("停机恢复后正常运行时间未到指定时间,sfdcid变为之前的,id:{}",sfdcTimeHistByGreen.getId()); - fireAndForget("syncMesFormStop", () -> - syncMesFormStop(folderLocation.getSite(), sfdcTimeHistByGreen.getSeqNo(), - sfdcTimeHistByGreen.getId(), sfdcTimeHistByGreen.getEventTime())); + ResourceScheduled getone = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(),folderLocation.getResourceId(),sfdcTimeHistByGreen.getSeqNo()); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("site", folderLocation.getSite()); + updateWrapper.eq("resource_id", folderLocation.getResourceId()); + updateWrapper.eq("seq_no", sfdcTimeHistByGreen.getSeqNo()); + updateWrapper.set("issend", "Y"); + updateWrapper.set("sfdcid",sfdcTimeHistByGreen.getId()); + updateWrapper.set("close_flag",getone.getOriCloseFlag()); + resourceScheduledMapper.update(updateWrapper); + ResourceScheduled getoneTwo = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(),folderLocation.getResourceId(),sfdcTimeHistByGreen.getSeqNo()); + if(!"Y".equals(getoneTwo.getCloseFlag())){ + sfdcTimeHistByGreen.setTillTime(null); + sfdcTimeHistByGreen.setTillenteredTime(null); + sfdcTimeHistByGreen.setCompletedFlag("N"); + int i = sfdcTimeHistMapper.updateById(sfdcTimeHistByGreen); + if(i>0){ + logger.info("停机恢复后正常运行时间未到指定时间,sfdcid变为之前的,id:{}",sfdcTimeHistByGreen.getId()); + fireAndForget("syncMesFormStop", () -> + syncMesFormStop(folderLocation.getSite(), sfdcTimeHistByGreen.getSeqNo(), + sfdcTimeHistByGreen.getId(), sfdcTimeHistByGreen.getEventTime())); + } } + } } @@ -382,7 +388,8 @@ public class ModbusCollectServiceImpl } if (shouldInsertHist){ - if(!"X".equals(resourceScheduled.getIssend())){ + ResourceScheduled redSchedule = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(), folderLocation.getResourceId(), resourceScheduled.getSeqNo()); + if(!"X".equals(resourceScheduled.getIssend()) && !"Y".equals(redSchedule.getCloseFlag())){ SfdcTimeHist timeHist = sfdcTimeHistMapper.selectSfdcTimeHistByNew(folderLocation.getSite(), resourceScheduled.getSeqNo(), "自动停机"); if(timeHist == null){ logger.info("开始空空插入前红灯寻找 sfdc_time_hist, seq_no:{}", resourceScheduled.getSeqNo()); @@ -530,7 +537,8 @@ public class ModbusCollectServiceImpl } if (yellowInsertHist){ - if(!"X".equals(resourceScheduled.getIssend())){ + ResourceScheduled yellowSchedule = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(), folderLocation.getResourceId(), resourceScheduled.getSeqNo()); + if(!"X".equals(resourceScheduled.getIssend()) && !"Y".equals(yellowSchedule.getCloseFlag())){ SfdcTimeHist timeHist = sfdcTimeHistMapper.selectSfdcTimeHistByNew(folderLocation.getSite(), resourceScheduled.getSeqNo(), "自动停机"); if(timeHist == null){ logger.info("开始插入空空前黄灯寻找 sfdc_time_hist, seq_no:{}", resourceScheduled.getSeqNo()); @@ -678,7 +686,8 @@ public class ModbusCollectServiceImpl } if (whiteInsertHist){ - if(!"X".equals(resourceScheduled.getIssend())){ + ResourceScheduled whiteSchedule = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(), folderLocation.getResourceId(), resourceScheduled.getSeqNo()); + if(!"X".equals(resourceScheduled.getIssend()) && !"Y".equals(whiteSchedule.getCloseFlag())){ SfdcTimeHist timeHist = sfdcTimeHistMapper.selectSfdcTimeHistByNew(folderLocation.getSite(), resourceScheduled.getSeqNo(), "自动停机"); if(timeHist == null){ logger.info("开始插入空空前白灯寻找 sfdc_time_hist, seq_no:{}", resourceScheduled.getSeqNo()); @@ -824,8 +833,9 @@ public class ModbusCollectServiceImpl ThreeColorLampDownlog downlogChangeLast = threeColorLampDownlogMapper.selectDownlogLast(folderLocation.getSite(),folderLocation.getResourceId()); //如果变灯了,则更新 if(!mapValueToString(registerData.get(0)).equals(colorLamp.getGreen()) || !mapValueToString(registerData.get(1)).equals(colorLamp.getOrange())|| !mapValueToString(registerData.get(2)).equals(colorLamp.getRed())){ + Date LampDownlogEndTime = new Date(); if(downlogChangeLast != null){ - downlogChangeLast.setEndDate(new Date()); + downlogChangeLast.setEndDate(LampDownlogEndTime); threeColorLampDownlogMapper.updateById(downlogChangeLast); } @@ -838,14 +848,29 @@ public class ModbusCollectServiceImpl downlog.setOrderNo(soscheduled.getOrderno() == null ? null : soscheduled.getOrderno()); downlog.setSeqNo(soscheduled.getSeqno() == null ? null : soscheduled.getSeqno()); downlog.setSShiftno(soscheduled.getSShiftno() == null ? null : soscheduled.getSShiftno()); + ResourceScheduled shortScheduled = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(), folderLocation.getResourceId(), resourceScheduled.getSeqNo()); if(registerData.get(2) == 1){ - downlog.setEventDesc("短暂停"); + + if(shortScheduled != null && "Y".equals(shortScheduled.getCloseFlag())){ + downlog.setEventDesc("短暂停(手动结束停机)"); + }else{ + downlog.setEventDesc("短暂停"); + } + } if(registerData.get(0) == 1){ - downlog.setEventDesc("正常运作"); + if(shortScheduled != null && "Y".equals(shortScheduled.getCloseFlag())){ + downlog.setEventDesc("正常运作(手动结束停机)"); + }else { + downlog.setEventDesc("正常运作"); + } } if(registerData.get(0) == 0 && registerData.get(1) == 0 && registerData.get(2) == 0){ - downlog.setEventDesc("设备离线"); + if(shortScheduled != null && "Y".equals(shortScheduled.getCloseFlag())){ + downlog.setEventDesc("设备离线(手动结束停机)"); + }else { + downlog.setEventDesc("设备离线"); + } } downlog.setStartDate(new Date()); downlog.setCreateDate(new Date()); @@ -860,48 +885,75 @@ public class ModbusCollectServiceImpl logger.info("正常中间表发送状态{},sfdcid{}", resourceScheduled.getIssend(),updateResourceScheduled.getSfdcid()); //如果发送标记不为null,且sfdcid不为null,修改mes表 if(StringUtils.isNotBlank(resourceScheduled.getIssend()) && updateResourceScheduled.getSfdcid() != null){ - SfdcTimeHist sfdcTimeHist = new SfdcTimeHist(); - sfdcTimeHist.setId(updateResourceScheduled.getSfdcid()); - sfdcTimeHist.setSite(folderLocation.getSite()); - sfdcTimeHist.setTillTime(new Date()); - sfdcTimeHist.setTillenteredTime(new Date()); - sfdcTimeHist.setCompletedFlag("Y"); - int i = sfdcTimeHistMapper.updatesfdcTimeHistById(sfdcTimeHist); - logger.info("更新了sfdc表,completedFlaf变为{},id:{}",sfdcTimeHist.getCompletedFlag(),updateResourceScheduled.getSfdcid()); - SfdcTimeHist sfdcTimeHist1 = sfdcTimeHistMapper.selectById(sfdcTimeHist.getId()); - if(sfdcTimeHist1 != null){ - logger.info("获取的sfdc表数据{}",sfdcTimeHist1); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - if(StringUtils.isNotBlank(sfdcTimeHist1.getEventDesc())){ - String startTime = sdf.format(sfdcTimeHist1.getEventTime()); - String endTime = sdf.format(sfdcTimeHist1.getTillTime()); - threeColorLampDownlogMapper.updateDownLogEventDesc( - startTime, - endTime, - sfdcTimeHist1.getEventDesc(), - folderLocation.getSite(), - folderLocation.getResourceId(), - sfdcTimeHist1.getSeqNo(), - sfdcTimeHist1.getOrderNo(), - runTime - ); + + if(!"Y".equals(updateResourceScheduled.getCloseFlag())){ + SfdcTimeHist sfdcTimeHist = new SfdcTimeHist(); + sfdcTimeHist.setId(updateResourceScheduled.getSfdcid()); + sfdcTimeHist.setSite(folderLocation.getSite()); + sfdcTimeHist.setTillTime(LampDownlogEndTime); + sfdcTimeHist.setTillenteredTime(LampDownlogEndTime); + sfdcTimeHist.setCompletedFlag("Y"); + int i = sfdcTimeHistMapper.updatesfdcTimeHistById(sfdcTimeHist); + logger.info("更新了sfdc表,completedFlaf变为{},id:{}",sfdcTimeHist.getCompletedFlag(),updateResourceScheduled.getSfdcid()); + SfdcTimeHist sfdcTimeHist1 = sfdcTimeHistMapper.selectById(sfdcTimeHist.getId()); + if(sfdcTimeHist1 != null){ + logger.info("获取的sfdc表数据{}",sfdcTimeHist1); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + if(StringUtils.isNotBlank(sfdcTimeHist1.getEventDesc())){ + String startTime = sdf.format(sfdcTimeHist1.getEventTime()); + String endTime = sdf.format(sfdcTimeHist1.getTillTime()); + threeColorLampDownlogMapper.updateDownLogEventDesc( + startTime, + endTime, + sfdcTimeHist1.getEventDesc(), + folderLocation.getSite(), + folderLocation.getResourceId(), + sfdcTimeHist1.getSeqNo(), + sfdcTimeHist1.getOrderNo(), + runTime + ); + } + + } + if(i >0){ + logger.info("发送请求",resourceScheduled.getId()); + fireAndForget("syncMesFormStart", () -> + syncMesFormStart(folderLocation.getSite(), resourceScheduled.getSeqNo(), + sfdcTimeHist.getId(), sfdcTimeHist.getEventTime())); } + }else{ + SfdcTimeHist sfdcTimeHist1 = sfdcTimeHistMapper.selectById(updateResourceScheduled.getSfdcid()); + if(sfdcTimeHist1 != null){ + logger.info("获取的sfdc表数据{}",sfdcTimeHist1); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + if(StringUtils.isNotBlank(sfdcTimeHist1.getEventDesc())){ + String startTime = sdf.format(sfdcTimeHist1.getEventTime()); + String endTime = sdf.format(sfdcTimeHist1.getTillTime()); + threeColorLampDownlogMapper.updateDownLogEventDesc( + startTime, + endTime, + sfdcTimeHist1.getEventDesc(), + folderLocation.getSite(), + folderLocation.getResourceId(), + sfdcTimeHist1.getSeqNo(), + sfdcTimeHist1.getOrderNo(), + runTime + ); + } - } - if(i >0){ - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("site", folderLocation.getSite()); - updateWrapper.eq("resource_id", folderLocation.getResourceId()); - updateWrapper.eq("seq_no", resourceScheduled.getSeqNo()); - updateWrapper.set("issend", "Y"); - updateWrapper.set("sfdcid",null); - resourceScheduledMapper.update(updateWrapper); - logger.info("更新了中间表,sfdcid变为null,id:{}",resourceScheduled.getId()); - fireAndForget("syncMesFormStart", () -> - syncMesFormStart(folderLocation.getSite(), resourceScheduled.getSeqNo(), - sfdcTimeHist.getId(), sfdcTimeHist.getEventTime())); + } } + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("site", folderLocation.getSite()); + updateWrapper.eq("resource_id", folderLocation.getResourceId()); + updateWrapper.eq("seq_no", resourceScheduled.getSeqNo()); + updateWrapper.set("issend", "Y"); + updateWrapper.set("sfdcid",null); + updateWrapper.set("ori_close_flag",updateResourceScheduled.getCloseFlag()); + updateWrapper.set("close_flag","N"); + resourceScheduledMapper.update(updateWrapper); + logger.info("更新了中间表,sfdcid变为null,id:{}",resourceScheduled.getId()); } } }else{ @@ -914,14 +966,27 @@ public class ModbusCollectServiceImpl downlog.setOrderNo(soscheduled.getOrderno()== null ? null : soscheduled.getOrderno()); downlog.setSeqNo(soscheduled.getSeqno()== null ? null : soscheduled.getSeqno()); downlog.setSShiftno(soscheduled.getSShiftno()== null ? null : soscheduled.getSShiftno()); + ResourceScheduled shortScheduled = resourceScheduledMapper.getOneResourceSchedule(folderLocation.getSite(), folderLocation.getResourceId(), resourceScheduled.getSeqNo()); if(registerData.get(2) == 1){ - downlog.setEventDesc("短暂停"); + if(shortScheduled != null && "Y".equals(shortScheduled.getCloseFlag())){ + downlog.setEventDesc("短暂停(手动结束停机)"); + }else{ + downlog.setEventDesc("短暂停"); + } } if(registerData.get(0) == 1){ - downlog.setEventDesc("正常运作"); + if(shortScheduled != null && "Y".equals(shortScheduled.getCloseFlag())){ + downlog.setEventDesc("正常运作(手动结束停机)"); + }else { + downlog.setEventDesc("正常运作"); + } } if(registerData.get(0) == 0 && registerData.get(1) == 0 && registerData.get(2) == 0){ - downlog.setEventDesc("设备离线"); + if(shortScheduled != null && "Y".equals(shortScheduled.getCloseFlag())){ + downlog.setEventDesc("设备离线(手动结束停机)"); + }else{ + downlog.setEventDesc("设备离线"); + } } downlog.setStartDate(new Date()); downlog.setCreateDate(new Date()); diff --git a/threecolor-modbus-collector/src/main/resources/dao/ResourceScheduledMapper.xml b/threecolor-modbus-collector/src/main/resources/dao/ResourceScheduledMapper.xml index ff8bb36..d58c644 100644 --- a/threecolor-modbus-collector/src/main/resources/dao/ResourceScheduledMapper.xml +++ b/threecolor-modbus-collector/src/main/resources/dao/ResourceScheduledMapper.xml @@ -5,4 +5,7 @@ + \ No newline at end of file