diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java index 38230a6..689ce06 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java @@ -7,6 +7,7 @@ import java.util.HashMap; import java.util.List; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.UUID; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; @@ -191,7 +192,7 @@ public class MydoJobServiceImpl extends ServiceImpl impl //插入历史表 mydoJobMapper.insertHistory(jobId); - //生成回传记录的参数 + //生成回传记录 MydoJob mydoJob = mydoJobMapper.selectMydoJobByJobId(jobId); JobCallBack jobCallBack = new JobCallBack(); long jobIdNum = Long.parseLong(mydoJob.getInOrOut()); @@ -206,8 +207,8 @@ public class MydoJobServiceImpl extends ServiceImpl impl jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); jobCallBack.setCreateTime(new Date()); jobCallBack.setTaskCode(mydoJob.getWmsTaskNo()); -// jobCallBack.setTaskTypeCode();//todo wms下发的任务类型 - jobCallBack.setReqCode(mydoJob.getJobId() + mydoJob.getTaskNo()); + jobCallBack.setTaskTypeCode("");//todo wms下发的任务类型 + jobCallBack.setReqCode(UUID.randomUUID().toString()); // jobCallBack.setSpare1("0"); jobCallBackService.insertJobCallBack(jobCallBack); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java index 71ac7f7..667fea4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java @@ -110,11 +110,12 @@ public class PortConvThread implements Runnable { // inSsjDevice.setException(0); // inSsjDevice.setRkqq(1); + //todo 是否需要校验出入库模式 switch (inSsjDevice.getInOrOut()) { //---------------------------入库模式--------------------------- case 1: //---------------------------入口取输送机(叉车取放货位置)--------------------------- - //输送机【非空闲】、【输送到位】、【入库请求】 + //输送机【非空闲】、【输送到位】、【入库请求?】 if (inSsjDevice.getKx() != 1 && inSsjDevice.getDw() == 1) { //更新入库任务阶段 @@ -136,102 +137,6 @@ public class PortConvThread implements Runnable { } - - - public void inDispatch1(DeviceSsj ssjDevice) { - //有入库请求就肯定是电气的任务号的作业 - if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<1000){ - //,如果有正执行的出库作业退回 - MydoJob mydoJobParam = new MydoJob(); -// mydoJobParam.setInOut("2"); - mydoJobParam.setStatus("3"); - mydoJobParam.setExitId(ssjDevice.getDeviceCode()); - List outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam); - if(!outMydoJobList.isEmpty()){ - //todo 去向不明朗 - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2); - if (i == 1) { - log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" ); - } - return; - } - - MydoJob mydoJob = new MydoJob(); - mydoJob.setInOrOut("1"); -// mydoJob.setStatus("1"); - String trayCode = ssjDevice.getTrayCode(); - //String[] split = trayCode.split("\\s+"); - String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); - mydoJob.setTrayCode(serial); - mydoJob.setEntranceId(ssjDevice.getDeviceCode()); - List mydoJobs = mydoJobService.selectMydoJobList(mydoJob); - if(!mydoJobs.isEmpty()){ - MydoJob mydoJob1 = mydoJobs.get(0); - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob1.getTaskNo(),1,1); - if (i == 1) { - mydoJob1.setExecutionPhase(TASK_EP_SSJ); - mydoJob1.setStatus("3"); - mydoJobService.updateMydoJob(mydoJob1); - log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob1.getTaskNo()); - } - }else{ - HashMap map = new HashMap<>(); - map.put("trayCode",ssjDevice.getTrayCode()); - map.put("entranceId",ssjDevice.getDeviceCode()); - map.put("floor", "2"); - AjaxResult ajaxResult = apiService.selectMydoJobByTrayCodeAndEntranceId(map); - if(ajaxResult.isSuccess()){ - MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); - mydoJob2.setStatus("1"); - mydoJob2.setExecutionPhase(TASK_EP_CREATE); - mydoJob2.setCreateTime(new Date()); - mydoJob2.setFaultFlag("0"); - mydoJob2.setPriority(10L); - mydoJobService.insertMydoJob(mydoJob2); - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); - if (i == 1) { - mydoJob2.setExecutionPhase(TASK_EP_SSJ); - mydoJob2.setStatus("3"); - mydoJobService.updateMydoJob(mydoJob2); - log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob2.getTaskNo()); - } - }else{ - //todo 去向不明朗 - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2); - if (i == 1) { - log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" ); - } - } - } - } - - } - - private static final Map PATTERNS = createPatterns(); - - private static Map createPatterns() { - Map map = new LinkedHashMap<>(); - map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - return map; - } - - private static String findFirst(Pattern pattern, String input) { - if (pattern == null || input == null) return null; - Matcher m = pattern.matcher(input); - return m.find() ? m.group(1) : null; - } - - - /** * 请求wms获取wcs任务参数 * @param inSsjDevice @@ -409,4 +314,99 @@ public class PortConvThread implements Runnable { } } + + + + public void inDispatch1(DeviceSsj ssjDevice) { + //有入库请求就肯定是电气的任务号的作业 + if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<1000){ + //,如果有正执行的出库作业退回 + MydoJob mydoJobParam = new MydoJob(); +// mydoJobParam.setInOut("2"); + mydoJobParam.setStatus("3"); + mydoJobParam.setExitId(ssjDevice.getDeviceCode()); + List outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam); + if(!outMydoJobList.isEmpty()){ + //todo 去向不明朗 + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2); + if (i == 1) { + log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" ); + } + return; + } + + MydoJob mydoJob = new MydoJob(); + mydoJob.setInOrOut("1"); +// mydoJob.setStatus("1"); + String trayCode = ssjDevice.getTrayCode(); + //String[] split = trayCode.split("\\s+"); + String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); + mydoJob.setTrayCode(serial); + mydoJob.setEntranceId(ssjDevice.getDeviceCode()); + List mydoJobs = mydoJobService.selectMydoJobList(mydoJob); + if(!mydoJobs.isEmpty()){ + MydoJob mydoJob1 = mydoJobs.get(0); + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob1.getTaskNo(),1,1); + if (i == 1) { + mydoJob1.setExecutionPhase(TASK_EP_SSJ); + mydoJob1.setStatus("3"); + mydoJobService.updateMydoJob(mydoJob1); + log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob1.getTaskNo()); + } + }else{ + HashMap map = new HashMap<>(); + map.put("trayCode",ssjDevice.getTrayCode()); + map.put("entranceId",ssjDevice.getDeviceCode()); + map.put("floor", "2"); + AjaxResult ajaxResult = apiService.selectMydoJobByTrayCodeAndEntranceId(map); + if(ajaxResult.isSuccess()){ + MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); + mydoJob2.setStatus("1"); + mydoJob2.setExecutionPhase(TASK_EP_CREATE); + mydoJob2.setCreateTime(new Date()); + mydoJob2.setFaultFlag("0"); + mydoJob2.setPriority(10L); + mydoJobService.insertMydoJob(mydoJob2); + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); + if (i == 1) { + mydoJob2.setExecutionPhase(TASK_EP_SSJ); + mydoJob2.setStatus("3"); + mydoJobService.updateMydoJob(mydoJob2); + log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob2.getTaskNo()); + } + }else{ + //todo 去向不明朗 + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2); + if (i == 1) { + log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" ); + } + } + } + } + + } + + private static final Map PATTERNS = createPatterns(); + + private static Map createPatterns() { + Map map = new LinkedHashMap<>(); + map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE)); + return map; + } + + private static String findFirst(Pattern pattern, String input) { + if (pattern == null || input == null) return null; + Matcher m = pattern.matcher(input); + return m.find() ? m.group(1) : null; + } + } diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 7d934a7..75b28b4 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -89,7 +89,7 @@
任务类型分布
-
+
@@ -97,7 +97,7 @@
设备状态分布
-
+
@@ -149,9 +149,12 @@ style="width: 100%" height="300" v-loading="loading.devices"> - - - + + + + + + @@ -585,6 +588,8 @@ export default { height: 120px; cursor: pointer; transition: all 0.3s; + overflow-x: auto; + /* white-space: nowrap; */ } .stats-card:hover { @@ -601,6 +606,7 @@ export default { .stats-icon { width: 60px; + /* width: 60vh; */ height: 60px; border-radius: 50%; display: flex; diff --git a/ruoyi-ui/src/views/job/mydoJob/index.vue b/ruoyi-ui/src/views/job/mydoJob/index.vue index e71ad85..3df76ec 100644 --- a/ruoyi-ui/src/views/job/mydoJob/index.vue +++ b/ruoyi-ui/src/views/job/mydoJob/index.vue @@ -401,7 +401,7 @@ export default { /** 删除按钮操作 */ handleDelete(row) { const jobIds = row.jobId || this.ids - this.$modal.confirm('是否确认删除作业信息编号为"' + jobIds + '"的数据项?').then(function() { + this.$modal.confirm('是否确认删除作业信息编号为"' + jobIds + '"的数据项?(此操作可能影响任务回传,请和上层系统核对账目)').then(function() { return delMydoJob(jobIds) }).then(() => { this.getList()