diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/charg/domain/SrgvChargingJob.java b/ruoyi-admin/src/main/java/com/ruoyi/job/charg/domain/SrgvChargingJob.java index ec8dfe5..58dc84d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/charg/domain/SrgvChargingJob.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/charg/domain/SrgvChargingJob.java @@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.BaseEntity; /** * 充电任务对象 srgv_charging_job - * + * * @author ruoyi * @date 2025-11-21 */ @@ -50,92 +50,101 @@ public class SrgvChargingJob extends BaseEntity @Excel(name = "充电桩编号") private String chargingId; - public void setGuid(String guid) + private String taskNo; + + public String getTaskNo() { + return taskNo; + } + public void setTaskNo(String taskNo) { + this.taskNo = taskNo; + } + + public void setGuid(String guid) { this.guid = guid; } - public String getGuid() + public String getGuid() { return guid; } - public void setChargingSite(String chargingSite) + public void setChargingSite(String chargingSite) { this.chargingSite = chargingSite; } - public String getChargingSite() + public String getChargingSite() { return chargingSite; } - public void setJobStatus(String jobStatus) + public void setJobStatus(String jobStatus) { this.jobStatus = jobStatus; } - public String getJobStatus() + public String getJobStatus() { return jobStatus; } - public void setChargingStatus(String chargingStatus) + public void setChargingStatus(String chargingStatus) { this.chargingStatus = chargingStatus; } - public String getChargingStatus() + public String getChargingStatus() { return chargingStatus; } - public void setStartDate(String startDate) + public void setStartDate(String startDate) { this.startDate = startDate; } - public String getStartDate() + public String getStartDate() { return startDate; } - public void setChargingDate(String chargingDate) + public void setChargingDate(String chargingDate) { this.chargingDate = chargingDate; } - public String getChargingDate() + public String getChargingDate() { return chargingDate; } - public void setJobType(String jobType) + public void setJobType(String jobType) { this.jobType = jobType; } - public String getJobType() + public String getJobType() { return jobType; } - public void setAgvId(String agvId) + public void setAgvId(String agvId) { this.agvId = agvId; } - public String getAgvId() + public String getAgvId() { return agvId; } - public void setChargingId(String chargingId) + public void setChargingId(String chargingId) { this.chargingId = chargingId; } - public String getChargingId() + public String getChargingId() { return chargingId; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java index a3165dc..6dda8e0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java @@ -11,6 +11,7 @@ import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService; import com.ruoyi.bas.srgvmap.service.RoadCacheService; import com.ruoyi.common.domain.SendData2; import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.device.cdz.domain.DeviceCdz; import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.srgv.service.IDeviceSrgvService; import com.ruoyi.device.tsj.domain.DeviceTsj; @@ -23,6 +24,7 @@ import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService; import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue; import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService; +import com.ruoyi.schedule.plcRead.cdz.PlcCdzRead; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder; import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; @@ -98,7 +100,6 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { createCarQueue(deviceSrgv); - inCharging(deviceSrgv); outCharging(deviceSrgv); @@ -129,7 +130,25 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { * @param deviceSrgv */ private void outCharging(DeviceSrgv deviceSrgv) { - + SrgvChargingJob param = new SrgvChargingJob(); + param.setJobStatus("1"); + param.setJobType("2"); + param.setAgvId(deviceSrgv.getDeviceId().toString()); + List srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param); + if (CollUtil.isNotEmpty(srgvChargingJobs)) { + for (SrgvChargingJob srgvChargingJob : srgvChargingJobs) { + String chargingId = srgvChargingJob.getChargingId(); + DeviceCdz deviceCdz = PlcCdzRead.deviceCdzMap.get(chargingId); + if (ObjUtil.isNotNull(deviceCdz)){ + //下发断电任务 + int i = PlcCdzRead.WriteToCdz("", null); + if (i == 1){ + srgvChargingJobMapper.insertHistory(srgvChargingJob.getGuid()); + srgvChargingJobMapper.deleteSrgvChargingJobByGuid(srgvChargingJob.getGuid()); + } + } + } + } } @@ -146,40 +165,70 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { List srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param); if (CollUtil.isNotEmpty(srgvChargingJobs)) { SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0); - String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点 - WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue(); - wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString()); - List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); - if (CollUtil.isEmpty(wcsSrgvQueues)) { - //生成队列 - WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); - wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); - wcsSrgvQueue.setTaskNo(""); - wcsSrgvQueue.setTaskType("3"); - wcsSrgvQueue.setPriority(Long.parseLong("2")); - wcsSrgvQueue.setCargo("0"); - wcsSrgvQueue.setIssued("0"); - wcsSrgvQueue.setExecutionStatus("1"); - wcsSrgvQueue.setCargoPickSite(""); - wcsSrgvQueue.setCargoPlaceSite(""); - wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + if ("1".equals(srgvChargingJob.getChargingStatus())){ + //初始状态 + + //判断小车和充电桩是否在同一层 + String agvId = srgvChargingJob.getAgvId(); + String chargingId = srgvChargingJob.getChargingId(); + DeviceSrgv srgv = PlcSrgvRead.deviceSrgvMap.get(agvId); + DeviceCdz cdz = PlcCdzRead.deviceCdzMap.get(chargingId); + if (srgv.getCurrFloor().equals(cdz.getSzcs())){ + //生成四向小车充电队列 + String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点 + WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue(); + wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString()); + List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); + if (CollUtil.isEmpty(wcsSrgvQueues)) { + //生成队列 + createSrgvChargingQueue(deviceSrgv, chargingSite,"8"); + srgvChargingJob.setJobStatus("3"); + srgvChargingJobMapper.updateSrgvChargingJob(srgvChargingJob); + } + }else { + //生成四向小车换层队列 + WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue(); + wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString()); + String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点 + List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); + if (CollUtil.isEmpty(wcsSrgvQueues)) { + createSrgvChargingQueue(deviceSrgv, chargingSite,"4"); + srgvChargingJob.setJobStatus("2"); + srgvChargingJobMapper.updateSrgvChargingJob(srgvChargingJob); + } - WcsSrgvMap wcsSrgvMap = wcsSrgvMapService.selectWcsSrgvMapBySiteId(chargingSite); - if (wcsSrgvMap.getTheLayer().equals(deviceSrgv.getCurrFloor())) { - wcsSrgvQueue.setEndSite(chargingSite); - } else { - wcsSrgvQueue.setEndSite("tsj"); } - wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString()); - wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - wcsSrgvQueue.setAgvId(deviceSrgv.getDeviceId().toString()); - wcsSrgvQueue.setDefault02("3"); - wcsSrgvQueue.setDefault07(Convert.toStr(wcsSrgvMap.getZ())); - wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue); } + } } + private void createSrgvChargingQueue(DeviceSrgv deviceSrgv, String chargingSite,String type) { + WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); + wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); + wcsSrgvQueue.setTaskNo(""); + wcsSrgvQueue.setTaskType("3"); + wcsSrgvQueue.setPriority(Long.parseLong("2")); + wcsSrgvQueue.setCargo("0"); + wcsSrgvQueue.setIssued("0"); + wcsSrgvQueue.setExecutionStatus("1"); + wcsSrgvQueue.setCargoPickSite(""); + wcsSrgvQueue.setCargoPlaceSite(""); + wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + WcsSrgvMap wcsSrgvMap = wcsSrgvMapService.selectWcsSrgvMapBySiteId(chargingSite); + if ("4".equals(type)){ + wcsSrgvQueue.setEndSite("tsj"); + }else if ("8".equals(type)){ + wcsSrgvQueue.setEndSite(chargingSite); + } + wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString()); + wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + wcsSrgvQueue.setAgvId(deviceSrgv.getDeviceId().toString()); + wcsSrgvQueue.setDefault02("3"); + wcsSrgvQueue.setDefault07(Convert.toStr(wcsSrgvMap.getZ())); + wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue); + } + /** * 四向小车任务处理 */ @@ -291,42 +340,62 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } else{ if ( "1".equals(wcsSrgvQueue.getIssued())) { MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(wcsSrgvQueue.getTaskNo())); - if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && wcsSrgvQueue.getTaskType().equals("1")) { - // todo 通知wms入库完成 完成队列 完成作业 - wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); - wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + if (mydoJob != null){ + if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && "1".equals(wcsSrgvQueue.getTaskType())) { + // todo 通知wms入库完成 完成队列 完成作业 + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); - mydoJobService.insertHistory(mydoJob.getJobId()); - mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); + mydoJobService.insertHistory(mydoJob.getJobId()); + mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); - } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("2")) { - //完成队列 更新作业阶段 - wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); - wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); - //提升机修改阶段 + } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && "2".equals(wcsSrgvQueue.getTaskType())) { + //完成队列 更新作业阶段 + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + //提升机修改阶段 // mydoJob.setExecutionPhase(""); // mydoJobService.updateMydoJob(mydoJob); - } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("4")) { - //根据任务类型 ,生成队列 - if (Convert.toInt(mydoJob.getInOrOut()) < 20) { + } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && "4".equals(wcsSrgvQueue.getTaskType())) { + //根据任务类型 ,生成队列 + if (Convert.toInt(mydoJob.getInOrOut()) < 20) { + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + + createCarQueue(mydoJob, deviceSrgv, "1","0"); + } else { + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + createCarQueue(mydoJob, deviceSrgv, "2","0"); + } + }else if(deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && "8".equals(wcsSrgvQueue.getTaskType())){ wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); - createCarQueue(mydoJob, deviceSrgv, "1","0"); - } else { - wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); - wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); - createCarQueue(mydoJob, deviceSrgv, "2","0"); } - }else if(deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("8")){ - wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); - wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + }else { + //查询充电任务 + SrgvChargingJob srgvChargingJob = new SrgvChargingJob(); + srgvChargingJob.setAgvId(String.valueOf(wcsSrgvQueue.getAgvId())); + srgvChargingJob.setTaskNo(wcsSrgvQueue.getTaskNo()); + srgvChargingJob.setJobStatus("2"); + srgvChargingJob.setJobType("1"); + List srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(srgvChargingJob); + if (!srgvChargingJobs.isEmpty()){ + SrgvChargingJob srgvChargingJob1 = srgvChargingJobs.get(0); + if ( deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && "4".equals(wcsSrgvQueue.getTaskType())) { + //查询换层任务 + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + //修改充电任务 + srgvChargingJob1.setJobStatus("1"); + srgvChargingJobMapper.updateSrgvChargingJob(srgvChargingJob1); + } + } + - }else if ( deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && wcsSrgvQueue.getTaskType().equals("3")) { - //充电任务 - wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); - wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java index cc8967f..4413953 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java @@ -129,11 +129,11 @@ public class TsjThread implements Runnable { if (CollUtil.isNotEmpty(wcsSrgvQueues)) { WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueues.get(0); String rwlx = ""; - if ("2".equals(wcsSrgvQueue.getDefault02())){ + if ("2".equals(wcsSrgvQueue.getTaskType())){ //出库 rwlx = "1"; } - if ("4".equals(wcsSrgvQueue.getDefault02()) || "3".equals(wcsSrgvQueue.getDefault02()) || "8".equals(wcsSrgvQueue.getDefault02())){ + if ( "3".equals(wcsSrgvQueue.getTaskType()) || "8".equals(wcsSrgvQueue.getTaskType())){ // rwlx = "2"; }