From 82a596c2b774cdc7e71516e408ca373efa085464 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Fri, 16 Jan 2026 11:17:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BasFaultRecordController.java | 104 ++++++ .../bas/fault/domain/BasFaultRecord.java | 157 ++++++++ .../fault/mapper/BasFaultRecordMapper.java | 61 +++ .../fault/service/IBasFaultRecordService.java | 61 +++ .../impl/BasFaultRecordServiceImpl.java | 93 +++++ .../main/java/com/ruoyi/common/Constant.java | 2 +- .../com/ruoyi/schedule/ScheduleThread.java | 10 +- .../schedule/plcRead/ddj/PlcDdjRead.java | 5 +- .../schedule/plcRead/ssj/PlcSsjRead.java | 8 + .../scheduleTask/ddj/BaseDdjThread.java | 352 ++++++++++-------- .../scheduleTask/ddj/impl/Ddj1Thread.java | 57 +-- .../scheduleTask/ddj/impl/Ddj2Thread.java | 4 +- .../scheduleTask/ddj/impl/Ddj3Thread.java | 4 +- .../scheduleTask/ddj/impl/Ddj4Thread.java | 8 +- .../scheduleTask/ddj/impl/Ddj5Thread.java | 4 +- .../scheduleTask/ddj/impl/Ddj6Thread.java | 4 +- .../scheduleTask/monit/MonitoringThread.java | 45 ++- .../com/ruoyi/schedule/util/CheckWeight.java | 9 +- .../mapper/bas/BasFaultRecordMapper.xml | 93 +++++ .../resources/mapper/device/MsgDdjMapper.xml | 3 - 20 files changed, 874 insertions(+), 210 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/bas/fault/controller/BasFaultRecordController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/bas/fault/domain/BasFaultRecord.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/bas/fault/mapper/BasFaultRecordMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/IBasFaultRecordService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/impl/BasFaultRecordServiceImpl.java create mode 100644 ruoyi-admin/src/main/resources/mapper/bas/BasFaultRecordMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/controller/BasFaultRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/controller/BasFaultRecordController.java new file mode 100644 index 0000000..037ad66 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/controller/BasFaultRecordController.java @@ -0,0 +1,104 @@ +package com.ruoyi.bas.fault.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.bas.fault.domain.BasFaultRecord; +import com.ruoyi.bas.fault.service.IBasFaultRecordService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 设备故障记录Controller + * + * @author ruoyi + * @date 2026-01-16 + */ +@RestController +@RequestMapping("/bas/falut") +public class BasFaultRecordController extends BaseController +{ + @Autowired + private IBasFaultRecordService basFaultRecordService; + + /** + * 查询设备故障记录列表 + */ + @PreAuthorize("@ss.hasPermi('bas:falut:list')") + @GetMapping("/list") + public TableDataInfo list(BasFaultRecord basFaultRecord) + { + startPage(); + List list = basFaultRecordService.selectBasFaultRecordList(basFaultRecord); + return getDataTable(list); + } + + /** + * 导出设备故障记录列表 + */ + @PreAuthorize("@ss.hasPermi('bas:falut:export')") + @Log(title = "设备故障记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BasFaultRecord basFaultRecord) + { + List list = basFaultRecordService.selectBasFaultRecordList(basFaultRecord); + ExcelUtil util = new ExcelUtil(BasFaultRecord.class); + util.exportExcel(response, list, "设备故障记录数据"); + } + + /** + * 获取设备故障记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('bas:falut:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(basFaultRecordService.selectBasFaultRecordById(id)); + } + + /** + * 新增设备故障记录 + */ + @PreAuthorize("@ss.hasPermi('bas:falut:add')") + @Log(title = "设备故障记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody BasFaultRecord basFaultRecord) + { + return toAjax(basFaultRecordService.insertBasFaultRecord(basFaultRecord)); + } + + /** + * 修改设备故障记录 + */ + @PreAuthorize("@ss.hasPermi('bas:falut:edit')") + @Log(title = "设备故障记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody BasFaultRecord basFaultRecord) + { + return toAjax(basFaultRecordService.updateBasFaultRecord(basFaultRecord)); + } + + /** + * 删除设备故障记录 + */ + @PreAuthorize("@ss.hasPermi('bas:falut:remove')") + @Log(title = "设备故障记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(basFaultRecordService.deleteBasFaultRecordByIds(ids)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/domain/BasFaultRecord.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/domain/BasFaultRecord.java new file mode 100644 index 0000000..b4d89ef --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/domain/BasFaultRecord.java @@ -0,0 +1,157 @@ +package com.ruoyi.bas.fault.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 设备故障记录对象 bas_fault_record + * + * @author ruoyi + * @date 2026-01-16 + */ +public class BasFaultRecord extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id 主键 */ + private String id; + + /** 设备id */ + @Excel(name = "设备id") + private String deviceId; + + /** 设备名称 */ + @Excel(name = "设备名称") + private String deviceName; + + /** 设备类型 */ + @Excel(name = "设备类型") + private String deviceType; + + /** 任务号 */ + @Excel(name = "任务号") + private String taskNo; + + /** 作业id */ + @Excel(name = "作业id ") + private String jobId; + + /** 报警信息 */ + @Excel(name = "报警信息") + private String fault; + + /** 报警开始时间 */ + @Excel(name = "报警开始时间") + private String startTime; + + /** 报警结束时间 */ + @Excel(name = "报警结束时间") + private String finishTime; + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + + public void setDeviceId(String deviceId) + { + this.deviceId = deviceId; + } + + public String getDeviceId() + { + return deviceId; + } + + public void setDeviceName(String deviceName) + { + this.deviceName = deviceName; + } + + public String getDeviceName() + { + return deviceName; + } + + public void setDeviceType(String deviceType) + { + this.deviceType = deviceType; + } + + public String getDeviceType() + { + return deviceType; + } + + public void setTaskNo(String taskNo) + { + this.taskNo = taskNo; + } + + public String getTaskNo() + { + return taskNo; + } + + public void setJobId(String jobId) + { + this.jobId = jobId; + } + + public String getJobId() + { + return jobId; + } + + public void setFault(String fault) + { + this.fault = fault; + } + + public String getFault() + { + return fault; + } + + public void setStartTime(String startTime) + { + this.startTime = startTime; + } + + public String getStartTime() + { + return startTime; + } + + public void setFinishTime(String finishTime) + { + this.finishTime = finishTime; + } + + public String getFinishTime() + { + return finishTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("deviceId", getDeviceId()) + .append("deviceName", getDeviceName()) + .append("deviceType", getDeviceType()) + .append("taskNo", getTaskNo()) + .append("jobId", getJobId()) + .append("fault", getFault()) + .append("startTime", getStartTime()) + .append("finishTime", getFinishTime()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/mapper/BasFaultRecordMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/mapper/BasFaultRecordMapper.java new file mode 100644 index 0000000..729b22f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/mapper/BasFaultRecordMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.bas.fault.mapper; + +import java.util.List; +import com.ruoyi.bas.fault.domain.BasFaultRecord; + +/** + * 设备故障记录Mapper接口 + * + * @author ruoyi + * @date 2026-01-16 + */ +public interface BasFaultRecordMapper +{ + /** + * 查询设备故障记录 + * + * @param id 设备故障记录主键 + * @return 设备故障记录 + */ + public BasFaultRecord selectBasFaultRecordById(String id); + + /** + * 查询设备故障记录列表 + * + * @param basFaultRecord 设备故障记录 + * @return 设备故障记录集合 + */ + public List selectBasFaultRecordList(BasFaultRecord basFaultRecord); + + /** + * 新增设备故障记录 + * + * @param basFaultRecord 设备故障记录 + * @return 结果 + */ + public int insertBasFaultRecord(BasFaultRecord basFaultRecord); + + /** + * 修改设备故障记录 + * + * @param basFaultRecord 设备故障记录 + * @return 结果 + */ + public int updateBasFaultRecord(BasFaultRecord basFaultRecord); + + /** + * 删除设备故障记录 + * + * @param id 设备故障记录主键 + * @return 结果 + */ + public int deleteBasFaultRecordById(String id); + + /** + * 批量删除设备故障记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteBasFaultRecordByIds(String[] ids); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/IBasFaultRecordService.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/IBasFaultRecordService.java new file mode 100644 index 0000000..1925f43 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/IBasFaultRecordService.java @@ -0,0 +1,61 @@ +package com.ruoyi.bas.fault.service; + +import java.util.List; +import com.ruoyi.bas.fault.domain.BasFaultRecord; + +/** + * 设备故障记录Service接口 + * + * @author ruoyi + * @date 2026-01-16 + */ +public interface IBasFaultRecordService +{ + /** + * 查询设备故障记录 + * + * @param id 设备故障记录主键 + * @return 设备故障记录 + */ + public BasFaultRecord selectBasFaultRecordById(String id); + + /** + * 查询设备故障记录列表 + * + * @param basFaultRecord 设备故障记录 + * @return 设备故障记录集合 + */ + public List selectBasFaultRecordList(BasFaultRecord basFaultRecord); + + /** + * 新增设备故障记录 + * + * @param basFaultRecord 设备故障记录 + * @return 结果 + */ + public int insertBasFaultRecord(BasFaultRecord basFaultRecord); + + /** + * 修改设备故障记录 + * + * @param basFaultRecord 设备故障记录 + * @return 结果 + */ + public int updateBasFaultRecord(BasFaultRecord basFaultRecord); + + /** + * 批量删除设备故障记录 + * + * @param ids 需要删除的设备故障记录主键集合 + * @return 结果 + */ + public int deleteBasFaultRecordByIds(String[] ids); + + /** + * 删除设备故障记录信息 + * + * @param id 设备故障记录主键 + * @return 结果 + */ + public int deleteBasFaultRecordById(String id); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/impl/BasFaultRecordServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/impl/BasFaultRecordServiceImpl.java new file mode 100644 index 0000000..39b3032 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/fault/service/impl/BasFaultRecordServiceImpl.java @@ -0,0 +1,93 @@ +package com.ruoyi.bas.fault.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.bas.fault.mapper.BasFaultRecordMapper; +import com.ruoyi.bas.fault.domain.BasFaultRecord; +import com.ruoyi.bas.fault.service.IBasFaultRecordService; + +/** + * 设备故障记录Service业务层处理 + * + * @author ruoyi + * @date 2026-01-16 + */ +@Service +public class BasFaultRecordServiceImpl implements IBasFaultRecordService +{ + @Autowired + private BasFaultRecordMapper basFaultRecordMapper; + + /** + * 查询设备故障记录 + * + * @param id 设备故障记录主键 + * @return 设备故障记录 + */ + @Override + public BasFaultRecord selectBasFaultRecordById(String id) + { + return basFaultRecordMapper.selectBasFaultRecordById(id); + } + + /** + * 查询设备故障记录列表 + * + * @param basFaultRecord 设备故障记录 + * @return 设备故障记录 + */ + @Override + public List selectBasFaultRecordList(BasFaultRecord basFaultRecord) + { + return basFaultRecordMapper.selectBasFaultRecordList(basFaultRecord); + } + + /** + * 新增设备故障记录 + * + * @param basFaultRecord 设备故障记录 + * @return 结果 + */ + @Override + public int insertBasFaultRecord(BasFaultRecord basFaultRecord) + { + return basFaultRecordMapper.insertBasFaultRecord(basFaultRecord); + } + + /** + * 修改设备故障记录 + * + * @param basFaultRecord 设备故障记录 + * @return 结果 + */ + @Override + public int updateBasFaultRecord(BasFaultRecord basFaultRecord) + { + return basFaultRecordMapper.updateBasFaultRecord(basFaultRecord); + } + + /** + * 批量删除设备故障记录 + * + * @param ids 需要删除的设备故障记录主键 + * @return 结果 + */ + @Override + public int deleteBasFaultRecordByIds(String[] ids) + { + return basFaultRecordMapper.deleteBasFaultRecordByIds(ids); + } + + /** + * 删除设备故障记录信息 + * + * @param id 设备故障记录主键 + * @return 结果 + */ + @Override + public int deleteBasFaultRecordById(String id) + { + return basFaultRecordMapper.deleteBasFaultRecordById(id); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java index c96ed2f..07724aa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java @@ -3,7 +3,7 @@ package com.ruoyi.common; public class Constant { - public static final String WMS_BASE_URL = "http://localhost:8080/api2wcs/"; + public static final String WMS_BASE_URL = "http://172.19.1.117:8080/api2wcs/"; public static final String RCS_BASE_URL = "http://127.0.0.1:8081/rcms-dps/rest/"; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java index 43679ae..c66724d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -66,7 +66,7 @@ public class ScheduleThread { private void scheduleInit() { MonitoringThread monitoringThread = new MonitoringThread(); monitoringCustomThread = new CustomThread(new Thread(monitoringThread), monitoringThread); - Ddj4Thread ddj4Thread = new Ddj4Thread(plcDdj4ReadCustomThread.runnable); + Ddj4Thread ddj4Thread = new Ddj4Thread(plcDdj4ReadCustomThread.runnable,plcSsjReadCustomThread.runnable); ddj4CustomThread = new CustomThread<>(new Thread(ddj4Thread), ddj4Thread); /*Ddj2Thread ddj2Thread = new Ddj2Thread(); ddj2CustomThread = new CustomThread<>(new Thread(ddj2Thread), ddj2Thread); @@ -177,6 +177,7 @@ public class ScheduleThread { plcDdj2ReadCustomThread.runnable.isRun = false; plcDdj3ReadCustomThread.runnable.isRun = false; plcDdj4ReadCustomThread.runnable.isRun = false; + plcDdj4ReadCustomThread.thread.interrupt(); plcDdj5ReadCustomThread.runnable.isRun = false; plcDdj6ReadCustomThread.runnable.isRun = false; plcReadInit(); @@ -189,13 +190,8 @@ public class ScheduleThread { public void stopAllThread2() { monitoringCustomThread.runnable.isRun = false; monitoringCustomThread.thread.interrupt(); - ddj1CustomThread.runnable.isRun = false; - ddj1CustomThread.thread.interrupt(); - /*ddj2CustomThread.runnable.isRun = false; - ddj3CustomThread.runnable.isRun = false; ddj4CustomThread.runnable.isRun = false; - ddj5CustomThread.runnable.isRun = false; - ddj6CustomThread.runnable.isRun = false;*/ + ddj4CustomThread.thread.interrupt(); scheduleInit(); isRun2 = false; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java index d8f4bf5..17e7f37 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java @@ -74,9 +74,8 @@ public class PlcDdjRead extends Thread { msgDdj.setXtxh(ParseUtil.optInt(26, ddsx)); msgDdj.setHeight(ParseUtil.optInt(40, ddsx)); String trayCode = ParseUtil.optString(32, 8, ddsx); - if (! "11111111".equals(trayCode) && !"NoRead00".equals(trayCode)){ - msgDdj.setTrayCode(trayCode); - } + + msgDdj.setTrayCode(trayCode); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java index 6ca7c73..dd93eb9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java @@ -235,6 +235,14 @@ public class PlcSsjRead implements Runnable { return PlcSsjRead.WriteToSSJ(address, bytes); } + public int writeToSsJ(String address, byte[] data) { + int a = 0; + if (readWriteNet != null) { + a = HslRead.WriteResultRender(readWriteNet.Write(address, data), address); + } + return a; + } + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java index e1bd147..7e41b5c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java @@ -12,6 +12,7 @@ import com.ruoyi.api.service.IApiService; import com.ruoyi.bas.cargospace.domain.BasCargoSpace; import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.domain.SendData; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.ddj.domain.MsgDdj; import com.ruoyi.device.ddj.service.IMsgDdjService; @@ -46,19 +47,21 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { private IBasCargoSpaceService basCargoSpaceService; public Map> roadwayMap = new HashMap<>(); private PlcDdjRead plcDdjRead; + private PlcSsjRead plcSsjRead; - public Map czRoadwayMap = new HashMap<>(); + public Map czRoadwayMap = new HashMap<>(); - public BaseDdjThread(PlcDdjRead plcDdjRead) { + public BaseDdjThread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { this.plcDdjRead = plcDdjRead; + this.plcSsjRead = plcSsjRead; } - public Map roadwayRollback = new HashMap<>(); + public Map roadwayRollback = new HashMap<>(); public boolean isRun = true; @Override - public abstract HashMap getParamMap(String trayCode,Integer height,double weight); + public abstract HashMap getParamMap(String trayCode, Integer height, double weight); @Override @@ -87,6 +90,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { generateInBoundPickQueue(msgDdj); generateInBoundLoadQueue(msgDdj); generateOutBoundQueue(msgDdj); + setOutSsjStatus(msgDdj); ddjTask(msgDdj); } } else { @@ -107,89 +111,104 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { } + private void setOutSsjStatus(MsgDdj msgDdj) { + Long rwh = msgDdj.getRwh(); + + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, msgDdj.getId()); + if (ddjDeviceExecutionQueue !=null && ddjDeviceExecutionQueue.getDdjxf().equals("1") && (ddjDeviceExecutionQueue.getRwlx().equals(DDJ_RWLX_3)||ddjDeviceExecutionQueue.getRwlx().equals(DDJ_RWLX_4))){ + DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ddjDeviceExecutionQueue.getSpare2()); + SendData by1 = new SendData(Tools.INT,1); + byte[] sendData = Tools.sendData(by1); + plcSsjRead.writeToSsJ(deviceSsj.getPlcDbWriteAddress(),sendData); + }//else if (ddjDeviceExecutionQueue !=null){ +// DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ddjDeviceExecutionQueue.getSpare2()); +// SendData by1 = new SendData(Tools.INT,0); +// byte[] sendData = Tools.sendData(by1); +// plcSsjRead.writeToSsJ(deviceSsj.getPlcDbWriteAddress(),sendData); +// } + } + /** * 创建出库队列 */ private void generateOutBoundQueue(MsgDdj ddj) { List outJobList = mydoJobService.selectMydoJobList(getOutJobParam()); if (CollUtil.isNotEmpty(outJobList)) { - for (MydoJob outJob : outJobList) { - String exitId = outJob.getExitId(); + MydoJob outJob = outJobList.get(0); + String exitId = outJob.getExitId(); - String outSsj = ""; - switch (exitId) { - case "1": - List outSsj1 = getDeviceSsjs("outSsj1"); - if (outSsj1.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() ==0 && ddj.getHczt()==0 && ddj.getSbzt()==0)) { - outSsj = outSsj1.get(0).getDeviceCode(); - int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); - if (StrUtil.isNotEmpty(outSsj) && ssjJobCount==0){ - break; - } + String outSsj = ""; + switch (exitId) { + case "1": + List outSsj1 = getDeviceSsjs("outSsj1"); + if (outSsj1.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { + outSsj = outSsj1.get(0).getDeviceCode(); + int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); + if (StrUtil.isNotEmpty(outSsj) && ssjJobCount == 0) { + break; } - List outSsj2 = getDeviceSsjs("outSsj2"); - if (outSsj2.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() ==0&& ddj.getHczt()==0 && ddj.getSbzt()==0)) { - outSsj = outSsj2.get(0).getDeviceCode(); - int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); - if (StrUtil.isNotEmpty(outSsj) && ssjJobCount==0){ - break; - } - } - break; - case "2": - List outSsj3 = getDeviceSsjs("outSsj3"); - if (outSsj3.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() ==0&& ddj.getHczt()==0 && ddj.getSbzt()==0)) { - outSsj = outSsj3.get(0).getDeviceCode(); - int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); - if (StrUtil.isNotEmpty(outSsj) && ssjJobCount==0){ - break; - } - } - List outSsj4 = getDeviceSsjs("outSsj4"); - if (outSsj4.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() ==0&& ddj.getHczt()==0 && ddj.getSbzt()==0)) { - outSsj = outSsj4.get(0).getDeviceCode(); - int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); - if (StrUtil.isNotEmpty(outSsj) && ssjJobCount==0){ - break; - } - } - break; - default: - log.error("出库任务出口错误"); - continue; - } - - if ("0".equals(outJob.getExecutionPhase()) && StrUtil.isNotEmpty(outSsj)) { - DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(outJob.getTaskNo()), ddj.getId()); - //查询这个站点是否存在任务 - if (ObjUtil.isNull(ddjQueue) ) { - DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); - ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); - ddjDeviceExecutionQueue.setRwh(Convert.toLong(outJob.getTaskNo())); - ddjDeviceExecutionQueue.setDevName(ddj.getName()); - ddjDeviceExecutionQueue.setDevId(ddj.getId()); - ddjDeviceExecutionQueue.setRwzt(0); - - BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(outJob.getCargoSpaceId()); - ddjDeviceExecutionQueue.setYph(basCargoSpace.getThePlatoon()); - ddjDeviceExecutionQueue.setYlh(basCargoSpace.getTheColumn()); - ddjDeviceExecutionQueue.setYch(basCargoSpace.getTheFloor()); - List integers = roadwayMap.get(outSsj); - ddjDeviceExecutionQueue.setMbph(integers.get(0)); - ddjDeviceExecutionQueue.setMblh(integers.get(1)); - ddjDeviceExecutionQueue.setMbch(integers.get(2)); - ddjDeviceExecutionQueue.setDdjxf("0"); - ddjDeviceExecutionQueue.setMlfs(5); - ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); - ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); - ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); - outJob.setStatus("3"); - outJob.setStartTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); - outJob.setExecutionPhase(TASK_EP_DDJ); - mydoJobService.updateMydoJob(outJob); - } else { - log.info("任务已存在 rwh{}", outJob.getTaskNo()); } + List outSsj2 = getDeviceSsjs("outSsj2"); + if (outSsj2.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { + outSsj = outSsj2.get(0).getDeviceCode(); + int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); + if (StrUtil.isNotEmpty(outSsj) && ssjJobCount == 0) { + break; + } + } + break; + case "2": + List outSsj3 = getDeviceSsjs("outSsj3"); + if (outSsj3.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getYxxf() == 1 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { + outSsj = outSsj3.get(0).getDeviceCode(); + int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); + if (StrUtil.isNotEmpty(outSsj) && ssjJobCount == 0) { + break; + } + } + List outSsj4 = getDeviceSsjs("outSsj4"); + if (outSsj4.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getYxxf() == 1 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { + outSsj = outSsj4.get(0).getDeviceCode(); + int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); + if (StrUtil.isNotEmpty(outSsj) && ssjJobCount == 0) { + break; + } + } + break; + default: + log.error("出库任务出口错误"); + } + + if ("0".equals(outJob.getExecutionPhase()) && StrUtil.isNotEmpty(outSsj)) { + DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(outJob.getTaskNo()), ddj.getId()); + //查询这个站点是否存在任务 + if (ObjUtil.isNull(ddjQueue)) { + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); + ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); + ddjDeviceExecutionQueue.setRwh(Convert.toLong(outJob.getTaskNo())); + ddjDeviceExecutionQueue.setDevName(ddj.getName()); + ddjDeviceExecutionQueue.setDevId(ddj.getId()); + ddjDeviceExecutionQueue.setRwzt(0); + + BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(outJob.getCargoSpaceId()); + ddjDeviceExecutionQueue.setYph(basCargoSpace.getThePlatoon()); + ddjDeviceExecutionQueue.setYlh(basCargoSpace.getTheColumn()); + ddjDeviceExecutionQueue.setYch(basCargoSpace.getTheFloor()); + List integers = roadwayMap.get(outSsj); + ddjDeviceExecutionQueue.setMbph(integers.get(0)); + ddjDeviceExecutionQueue.setMblh(integers.get(1)); + ddjDeviceExecutionQueue.setMbch(integers.get(2)); + ddjDeviceExecutionQueue.setDdjxf("0"); + ddjDeviceExecutionQueue.setMlfs(5); + ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); + ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); + ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); + outJob.setStatus("3"); + outJob.setStartTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + outJob.setExecutionPhase(TASK_EP_DDJ); + mydoJobService.updateMydoJob(outJob); + } else { + log.info("任务已存在 rwh{}", outJob.getTaskNo()); } } } @@ -212,106 +231,113 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { * 创建入库放货队列 */ private void generateInBoundLoadQueue(MsgDdj ddj) { - if (ddj.getCzfs() == 5 && ddj.getSbzt() == 0 && ddj.getHczt()==1 && ddj.getYxxf() == 1 && ddj.getHeight()>0) { + if (ddj.getCzfs() == 5 && ddj.getSbzt() == 0 && ddj.getHczt() == 1 && ddj.getYxxf() == 1 && ddj.getHeight() > 0) { //允许下发 联机 有货待机 - if (ddj.getTrayCode() != null && StrUtil.isNotEmpty(ddj.getTrayCode().trim()) && !ddj.getTrayCode().equals("00000000")) { - MydoJob param = new MydoJob(); - param.setTrayCode(ddj.getTrayCode()); - List mydoJobs = mydoJobService.selectMydoJobList(param); - MydoJob inJob = null; - if (CollUtil.isEmpty(mydoJobs)) { - //获取 重量spare3 - DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(ddj.getRwh(), ddj.getId()); - if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)){ - //请求wms获取任务 并生成队列 - AjaxResult result = apiService.selectMydoJobByTrayCodeAndEntranceId(getParamMap(ddj.getTrayCode(),Convert.toInt(ddj.getHeight()),Convert.toDouble(ddjDeviceExecutionQueue.getSpare3()))); - if (result.isSuccess()) { - inJob = BeanUtil.toBean(result.get("data"), MydoJob.class); - inJob.setStatus(TASK_STATUS_CREATE); - inJob.setExecutionPhase(TASK_EP_ROADWAY_SSJ); - inJob.setRoadwayId(Convert.toStr(ddj.getId())); - inJob.setFaultFlag("0"); - mydoJobService.insertMydoJob(inJob); - } else { - createRollbackQueue(ddj,2); - log.error(result.get("msg").toString()); + if (ddj.getTrayCode() != null && StrUtil.isNotEmpty(ddj.getTrayCode().trim())) { + if ("11111111".equals(ddj.getTrayCode()) || "NoRead00".equalsIgnoreCase(ddj.getTrayCode())){ + createRollbackQueue(ddj, 1); + + }else if (!"00000000".equals(ddj.getTrayCode())){ + String trayCode = ddj.getTrayCode(); + trayCode = trayCode.substring(trayCode.length()-4); + MydoJob param = new MydoJob(); + param.setTrayCode(trayCode); + List mydoJobs = mydoJobService.selectMydoJobList(param); + MydoJob inJob = null; + if (CollUtil.isEmpty(mydoJobs)) { + //获取 重量spare3 + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(ddj.getRwh(), ddj.getId()); + if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) { + //请求wms获取任务 并生成队列 + AjaxResult result = apiService.selectMydoJobByTrayCodeAndEntranceId(getParamMap(trayCode, Convert.toInt(ddj.getHeight()), Convert.toDouble(ddjDeviceExecutionQueue.getSpare3()))); + if (result.isSuccess()) { + inJob = BeanUtil.toBean(result.get("data"), MydoJob.class); + inJob.setStatus(TASK_STATUS_CREATE); + inJob.setExecutionPhase(TASK_EP_ROADWAY_SSJ); + inJob.setRoadwayId(Convert.toStr(ddj.getId())); + inJob.setFaultFlag("0"); + mydoJobService.insertMydoJob(inJob); + } else { + createRollbackQueue(ddj, 2); + log.error(result.get("msg").toString()); + } } + + } else { + inJob = mydoJobs.get(0); } - } else { - inJob = mydoJobs.get(0); - } + if (ObjUtil.isNotNull(inJob) && inJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) { + DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(inJob.getTaskNo()), ddj.getId()); + if (ObjUtil.isNull(ddjQueue)) { + BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(inJob.getCargoSpaceId()); + if (ObjUtil.isNotNull(basCargoSpace)) { + ddjTaskFinish(ddj.getRwh(), ddj.getId(), 2); - if (ObjUtil.isNotNull(inJob) && inJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) { - DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(inJob.getTaskNo()), ddj.getId()); - if (ObjUtil.isNull(ddjQueue)) { - BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(inJob.getCargoSpaceId()); - if (ObjUtil.isNotNull(basCargoSpace)) { - ddjTaskFinish(ddj.getRwh(), ddj.getId(),2); + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); + ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); + ddjDeviceExecutionQueue.setRwh(Convert.toLong(inJob.getTaskNo())); + ddjDeviceExecutionQueue.setDevName(ddj.getName()); + ddjDeviceExecutionQueue.setDevId(ddj.getId()); + ddjDeviceExecutionQueue.setRwzt(0); + ddjDeviceExecutionQueue.setYph(1); + ddjDeviceExecutionQueue.setYlh(1); + ddjDeviceExecutionQueue.setYch(1); + ddjDeviceExecutionQueue.setMbph(Convert.toInt(basCargoSpace.getThePlatoon())); + ddjDeviceExecutionQueue.setMblh(Convert.toInt(basCargoSpace.getTheColumn())); + ddjDeviceExecutionQueue.setMbch(Convert.toInt(basCargoSpace.getTheFloor())); + ddjDeviceExecutionQueue.setDdjxf("0"); + ddjDeviceExecutionQueue.setMlfs(5); + ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); + ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2); + ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); - DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); - ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); - ddjDeviceExecutionQueue.setRwh(Convert.toLong(inJob.getTaskNo())); - ddjDeviceExecutionQueue.setDevName(ddj.getName()); - ddjDeviceExecutionQueue.setDevId(ddj.getId()); - ddjDeviceExecutionQueue.setRwzt(0); - ddjDeviceExecutionQueue.setYph(1); - ddjDeviceExecutionQueue.setYlh(1); - ddjDeviceExecutionQueue.setYch(1); - ddjDeviceExecutionQueue.setMbph(Convert.toInt(basCargoSpace.getThePlatoon())); - ddjDeviceExecutionQueue.setMblh(Convert.toInt(basCargoSpace.getTheColumn())); - ddjDeviceExecutionQueue.setMbch(Convert.toInt(basCargoSpace.getTheFloor())); - ddjDeviceExecutionQueue.setDdjxf("0"); - ddjDeviceExecutionQueue.setMlfs(5); - ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); - ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2); - ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); - - inJob.setStatus("3"); - inJob.setStartTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); - inJob.setExecutionPhase(TASK_EP_DDJ); - mydoJobService.updateMydoJob(inJob); - }else { - log.error("货位不存在 basCargoSpace{}",inJob.getCargoSpaceId()); + inJob.setStatus("3"); + inJob.setStartTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + inJob.setExecutionPhase(TASK_EP_DDJ); + mydoJobService.updateMydoJob(inJob); + } else { + log.error("货位不存在 basCargoSpace{}", inJob.getCargoSpaceId()); + } + } else { + log.info("任务已存在 rwh{}", inJob.getTaskNo()); } - } else { - log.info("任务已存在 rwh{}", inJob.getTaskNo()); } } } else { - createRollbackQueue(ddj,1); + createRollbackQueue(ddj, 1); } } } - private void createRollbackQueue(MsgDdj ddj,int type) { + private void createRollbackQueue(MsgDdj ddj, int type) { DdjDeviceExecutionQueue pickQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(ddj.getRwh(), ddj.getId()); - if (pickQueue != null){ + if (pickQueue != null) { Integer mbph = pickQueue.getYph(); Integer mblh = pickQueue.getYlh(); Integer mbch = pickQueue.getYch(); String road = ""; for (String roadway : roadwayMap.keySet()) { List integers = roadwayMap.get(roadway); - if (integers.get(0).equals(mbph) && integers.get(1).equals(mblh) && integers.get(2).equals(mbch)){ + if (integers.get(0).equals(mbph) && integers.get(1).equals(mblh) && integers.get(2).equals(mbch)) { road = roadway; break; } } - if (!roadwayRollback.containsKey(road)){ - log.error("未找到回滚任务号 p:{} l:{} c:{}",mbph,mblh,mbch); + if (!roadwayRollback.containsKey(road)) { + log.error("未找到回滚任务号 p:{} l:{} c:{}", mbph, mblh, mbch); return; } DeviceSsj roadWay = PlcSsjRead.deviceSsjMap.get(road); - if (roadWay.getKx()==1){ + if (roadWay.getKx() == 1) { long rwh = roadwayRollback.get(road); log.info("扫码失败,放回原位 排:{} 列:{} 层:{} 任务号:{}", mbph, mblh, mbch, rwh); DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, ddj.getId()); if (ObjUtil.isNull(ddjQueue)) { - ddjTaskFinish(ddj.getRwh(), ddj.getId(),2); + ddjTaskFinish(ddj.getRwh(), ddj.getId(), 2); - if (type == 2){ - rwh = rwh+100; + if (type == 2) { + rwh = rwh + 100; } @@ -335,8 +361,8 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { } } - }else { - log.error("未找到回滚任务号 rwh{}",ddj.getRwh()); + } else { + log.error("未找到回滚任务号 rwh{}", ddj.getRwh()); } } @@ -350,13 +376,14 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { for (DeviceSsj ssj : roadSsjList) { int taskNo = ssj.getTaskNo(); int rkqq = ssj.getRkqq(); - if (taskNo > 0 && rkqq == 1) { + if (taskNo > 0 && rkqq == 1) { //todo 连接称重 并保存数据 String czDeviceIpPort = czRoadwayMap.get(ssj.getDeviceCode()); String[] split = czDeviceIpPort.split(":"); String weight = CheckWeight.sendWeight(split[0], Convert.toInt(split[1])); + Double aDouble = Convert.toDouble(weight); DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(ssj.getTaskNo()), ddj.getId()); - if (ObjUtil.isNull(ddjQueue) ) { + if (ObjUtil.isNull(ddjQueue) && aDouble > 0) { DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); ddjDeviceExecutionQueue.setRwh(Convert.toLong(ssj.getTaskNo())); @@ -393,15 +420,15 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { Long rwh = ddj.getRwh(); //完成作业 DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, ddj.getId()); - if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)){ - if (ddjDeviceExecutionQueue.getRwlx()==2 || ddjDeviceExecutionQueue.getRwlx()==3 ){ + if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) { + if (ddjDeviceExecutionQueue.getRwlx() == 2 || ddjDeviceExecutionQueue.getRwlx() == 3) { MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(rwh); - if (ObjUtil.isNotNull(mydoJob)){ + if (ObjUtil.isNotNull(mydoJob)) { //回传完成信号 - ddjTaskFinish(rwh, ddj.getId(),1); + ddjTaskFinish(rwh, ddj.getId(), 1); } - }else if (ddjDeviceExecutionQueue.getRwlx() == 4){ - ddjTaskFinish(rwh, ddj.getId(),2); + } else if (ddjDeviceExecutionQueue.getRwlx() == 4) { + ddjTaskFinish(rwh, ddj.getId(), 2); } } } @@ -497,12 +524,12 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { } } //正常下发 - if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5 ) { + if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5) { DdjDeviceExecutionQueue ddjDeviceExecutionRunningQueueParam = new DdjDeviceExecutionQueue(); ddjDeviceExecutionRunningQueueParam.setDdjxf("1"); List ddjDeviceExecutionQueues1 = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionRunningQueueParam); - if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues1)){ + if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues1)) { log.info("正在执行任务 {}", ddjDeviceExecutionQueues1.get(0).getRwh()); return; } @@ -576,8 +603,8 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { * @param rwh 作业单号 * @param id 作业单id */ - private void ddjTaskFinish(Long rwh, Integer id,Integer type) { - mydoJobService.ddjTaskFinish(rwh, id,type); + private void ddjTaskFinish(Long rwh, Integer id, Integer type) { + mydoJobService.ddjTaskFinish(rwh, id, type); } @@ -601,4 +628,11 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { byte[] sendData = Tools.sendDataToDevice(taskNo, null, yph, ylh, ych, mbph, mblh, mbch, mlfs, xfwc, jym); return plcDdjRead.WriteToDDJ("DB61.0", sendData); } + + public static void main(String[] args) { + String a = "00001234"; + String b = "004567"; + System.out.println(a.substring(a.length()-4)); + System.out.println(b.substring(b.length()-4)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java index 2863dbd..5013dc9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import static com.ruoyi.common.Constant.ROADWAY_ID_01; import static com.ruoyi.common.Constant.WAREHOUSE_01; @@ -22,49 +23,55 @@ public class Ddj1Thread extends BaseDdjThread { public volatile boolean isRun = true; - public Ddj1Thread(PlcDdjRead plcDdjRead) { - super(plcDdjRead); + public Ddj1Thread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + super(plcDdjRead,plcSsjRead); } @Override public void init() { - /*super.init(); + super.init(); ddjCodeList = new HashMap<>(); ssjList = new HashMap<>(); - ArrayList ddjCodes = new ArrayList<>(); - ddjCodes.add(PlcDdjRead.deviceDdjMap.get("ddj1")); + ArrayList ddjCodes = new ArrayList<>(); + ddjCodes.add("ddj1"); ddjCodeList.put("ddj", ddjCodes); - ArrayList roadSsjList = new ArrayList<>(); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2001")); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2002")); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2007")); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2008")); + ArrayList roadSsjList = new ArrayList<>(); + roadSsjList.add("L2001"); + roadSsjList.add("L2002"); + roadSsjList.add("L2007"); + roadSsjList.add("L2008"); ssjList.put("roadSsjList", roadSsjList); - ArrayList outSsj1 = new ArrayList<>(); - outSsj1.add(PlcSsjRead.deviceSsjMap.get("L2001")); + ArrayList outSsj1 = new ArrayList<>(); + outSsj1.add("L2001"); ssjList.put("outSsj1", outSsj1); - ArrayList outSsj2 = new ArrayList<>(); - outSsj2.add(PlcSsjRead.deviceSsjMap.get("L2002")); + ArrayList outSsj2 = new ArrayList<>(); + outSsj2.add("L2002"); ssjList.put("outSsj2", outSsj2); - ArrayList outSsj3 = new ArrayList<>(); - outSsj3.add(PlcSsjRead.deviceSsjMap.get("L2007")); + ArrayList outSsj3 = new ArrayList<>(); + outSsj3.add("L2007"); ssjList.put("outSsj3", outSsj3); - ArrayList outSsj4 = new ArrayList<>(); - outSsj4.add(PlcSsjRead.deviceSsjMap.get("L2008")); + ArrayList outSsj4 = new ArrayList<>(); + outSsj4.add("L2008"); ssjList.put("outSsj4", outSsj4); //初始化巷道口 排 列 层 roadwayMap.put("L2001", Arrays.asList(1, 0, 1)); roadwayMap.put("L2002", Arrays.asList(2, 0, 1)); - roadwayMap.put("L2007", Arrays.asList(1, 22, 1)); - roadwayMap.put("L2008", Arrays.asList(2, 22, 1)); + roadwayMap.put("L2007", Arrays.asList(1, 20, 1)); + roadwayMap.put("L2008", Arrays.asList(2, 20, 1)); roadwayRollback.put("L2001", 80); roadwayRollback.put("L2002", 81); roadwayRollback.put("L2007", 82); roadwayRollback.put("L2008", 83); + //初始化称重设备连接ip port + czRoadwayMap.put("L2001", "172.19.50.72:4001"); + czRoadwayMap.put("L2002", "172.19.50.72:4001"); + czRoadwayMap.put("L2007", "172.19.50.73:4001"); + czRoadwayMap.put("L2008", "172.19.50.74:4001"); - log.info("Ddj1Thread init");*/ + + log.info("Ddj1Thread init"); } @@ -90,7 +97,13 @@ public class Ddj1Thread extends BaseDdjThread { @Override public DdjDeviceExecutionQueue getOtherOutDdjQueue(String exitSsj) { - return null; + List integers = roadwayMap.get(exitSsj); + DdjDeviceExecutionQueue param = new DdjDeviceExecutionQueue(); + param.setDevId(1); + param.setMbph(integers.get(0)); + param.setMblh(integers.get(1)); + param.setMbch(integers.get(2)); + return param; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java index 4d8ba44..c128a20 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java @@ -19,8 +19,8 @@ import static com.ruoyi.common.Constant.*; @Slf4j public class Ddj2Thread extends BaseDdjThread { - public Ddj2Thread(PlcDdjRead plcDdjRead) { - super(plcDdjRead); + public Ddj2Thread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + super(plcDdjRead,plcSsjRead); } @Override diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj3Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj3Thread.java index ed80df0..a305bf1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj3Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj3Thread.java @@ -19,8 +19,8 @@ import static com.ruoyi.common.Constant.*; @Slf4j public class Ddj3Thread extends BaseDdjThread { - public Ddj3Thread(PlcDdjRead plcDdjRead) { - super(plcDdjRead); + public Ddj3Thread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + super(plcDdjRead,plcSsjRead); } @Override diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java index 5baca5f..6c50125 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java @@ -20,8 +20,8 @@ import static com.ruoyi.common.Constant.*; @Slf4j public class Ddj4Thread extends BaseDdjThread { - public Ddj4Thread(PlcDdjRead plcDdjRead) { - super(plcDdjRead); + public Ddj4Thread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + super(plcDdjRead,plcSsjRead); } @Override @@ -51,8 +51,8 @@ public class Ddj4Thread extends BaseDdjThread { roadwayRollback.put("L1002", 93); //初始化称重设备连接ip port - czRoadwayMap.put("L1001", "192.168.57.101:4001"); - czRoadwayMap.put("L1002", "192.168.57.101:4001"); + czRoadwayMap.put("L1001", "172.19.40.203:4001"); + czRoadwayMap.put("L1002", "172.19.40.202:4001"); log.info("Ddj4Thread init"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj5Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj5Thread.java index 133e519..18e5c7e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj5Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj5Thread.java @@ -19,8 +19,8 @@ import static com.ruoyi.common.Constant.*; @Slf4j public class Ddj5Thread extends BaseDdjThread { - public Ddj5Thread(PlcDdjRead plcDdjRead) { - super(plcDdjRead); + public Ddj5Thread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + super(plcDdjRead,plcSsjRead); } @Override diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj6Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj6Thread.java index c099fc3..1fdada1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj6Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj6Thread.java @@ -19,8 +19,8 @@ import static com.ruoyi.common.Constant.*; @Slf4j public class Ddj6Thread extends BaseDdjThread { - public Ddj6Thread(PlcDdjRead plcDdjRead) { - super(plcDdjRead); + public Ddj6Thread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + super(plcDdjRead,plcSsjRead); } @Override diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java index bc848e1..b711f43 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java @@ -1,6 +1,13 @@ package com.ruoyi.schedule.scheduleTask.monit; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.ruoyi.bas.fault.domain.BasFaultRecord; +import com.ruoyi.bas.fault.service.IBasFaultRecordService; import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.device.ddj.domain.MsgDdj; import com.ruoyi.device.ddj.service.IMsgDdjService; import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.device.ssj.service.IDeviceSsjService; @@ -8,6 +15,9 @@ import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import lombok.extern.slf4j.Slf4j; +import java.util.Date; +import java.util.List; + /** * 监控线程 */ @@ -18,11 +28,13 @@ public class MonitoringThread implements Runnable { private IDeviceSsjService deviceSsjService; private IMsgDdjService msgDdjService; + private IBasFaultRecordService basFaultRecordService; public void init() { deviceSsjService = SpringUtils.getBean(IDeviceSsjService.class); msgDdjService = SpringUtils.getBean(IMsgDdjService.class); + basFaultRecordService = SpringUtils.getBean(IBasFaultRecordService.class); } @Override @@ -35,7 +47,38 @@ public class MonitoringThread implements Runnable { deviceSsjService.updateDeviceSsj(deviceSsj); } for (String ddjCode : PlcDdjRead.deviceDdjMap.keySet()) { - msgDdjService.updateMsgDdj(PlcDdjRead.deviceDdjMap.get(ddjCode)); + MsgDdj msgDdj = PlcDdjRead.deviceDdjMap.get(ddjCode); + msgDdjService.updateMsgDdj(msgDdj); + if (msgDdj.getSbzt() > 1000) { + //查询记录,添加故障开始时间 + BasFaultRecord param = new BasFaultRecord(); + param.setTaskNo(Convert.toStr(msgDdj.getRwh())); + param.setDeviceId(Convert.toStr(msgDdj.getId())); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isEmpty(basFaultRecords)){ + BasFaultRecord record = new BasFaultRecord(); + record.setId(IdUtil.simpleUUID()); + record.setDeviceId(Convert.toStr(msgDdj.getId())); + record.setDeviceName(msgDdj.getName()); + record.setDeviceType("ddj"); + record.setTaskNo(Convert.toStr(msgDdj.getRwh())); + record.setStartTime(DateUtil.formatDateTime(new Date())); + record.setFault(Convert.toStr(msgDdj.getSbzt())); + basFaultRecordService.insertBasFaultRecord(record); + } + } + if (msgDdj.getSbzt() < 1000 && msgDdj.getCzfs()==5){ + //查询记录 更新故障结束时间 + BasFaultRecord param = new BasFaultRecord(); + param.setTaskNo(Convert.toStr(msgDdj.getRwh())); + param.setDeviceId(Convert.toStr(msgDdj.getId())); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isNotEmpty(basFaultRecords)){ + BasFaultRecord record = basFaultRecords.get(0); + record.setFinishTime(DateUtil.formatDateTime(new Date())); + basFaultRecordService.updateBasFaultRecord(record); + } + } } Thread.sleep(1500); } catch (Exception e) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java index 5bb4cf0..ad9c4ba 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java @@ -1,5 +1,7 @@ package com.ruoyi.schedule.util; +import cn.hutool.core.convert.Convert; + import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; @@ -48,8 +50,11 @@ public class CheckWeight { } public static void main(String[] args) { - CheckWeight checkWeight = new CheckWeight(); - System.out.println(checkWeight.sendWeight("192.168.56.101", 4001)); + /*CheckWeight checkWeight = new CheckWeight(); + System.out.println(checkWeight.sendWeight("172.19.40.203", 4001)); + System.out.println(checkWeight.sendWeight("172.19.40.202", 4001));*/ + Double aDouble = Convert.toDouble("-000019"); + System.out.println(aDouble); } } diff --git a/ruoyi-admin/src/main/resources/mapper/bas/BasFaultRecordMapper.xml b/ruoyi-admin/src/main/resources/mapper/bas/BasFaultRecordMapper.xml new file mode 100644 index 0000000..449984d --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/bas/BasFaultRecordMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + select id, device_id, device_name, device_type, task_no, job_id, fault, start_time, finish_time from bas_fault_record + + + + + + + + insert into bas_fault_record + + id, + device_id, + device_name, + device_type, + task_no, + job_id, + fault, + start_time, + finish_time, + + + #{id}, + #{deviceId}, + #{deviceName}, + #{deviceType}, + #{taskNo}, + #{jobId}, + #{fault}, + #{startTime}, + #{finishTime}, + + + + + update bas_fault_record + + device_id = #{deviceId}, + device_name = #{deviceName}, + device_type = #{deviceType}, + task_no = #{taskNo}, + job_id = #{jobId}, + fault = #{fault}, + start_time = #{startTime}, + finish_time = #{finishTime}, + + where id = #{id} + + + + delete from bas_fault_record where id = #{id} + + + + delete from bas_fault_record where id in + + #{id} + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/device/MsgDdjMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/MsgDdjMapper.xml index b30aa09..e60955f 100644 --- a/ruoyi-admin/src/main/resources/mapper/device/MsgDdjMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/device/MsgDdjMapper.xml @@ -131,9 +131,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" xtxh = #{xtxh}, dqxd = #{dqxd}, hczt = #{hczt}, - spare1 = #{spare1}, - spare2 = #{spare2}, - spare3 = #{spare3}, where id = #{id}