充电桩逻辑

This commit is contained in:
liuhanqing
2025-12-05 16:49:05 +08:00
parent 3a57df8e8d
commit 8db3a61515
3 changed files with 155 additions and 77 deletions

View File

@@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 充电任务对象 srgv_charging_job * 充电任务对象 srgv_charging_job
* *
* @author ruoyi * @author ruoyi
* @date 2025-11-21 * @date 2025-11-21
*/ */
@@ -50,92 +50,101 @@ public class SrgvChargingJob extends BaseEntity
@Excel(name = "充电桩编号") @Excel(name = "充电桩编号")
private String chargingId; 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; this.guid = guid;
} }
public String getGuid() public String getGuid()
{ {
return guid; return guid;
} }
public void setChargingSite(String chargingSite) public void setChargingSite(String chargingSite)
{ {
this.chargingSite = chargingSite; this.chargingSite = chargingSite;
} }
public String getChargingSite() public String getChargingSite()
{ {
return chargingSite; return chargingSite;
} }
public void setJobStatus(String jobStatus) public void setJobStatus(String jobStatus)
{ {
this.jobStatus = jobStatus; this.jobStatus = jobStatus;
} }
public String getJobStatus() public String getJobStatus()
{ {
return jobStatus; return jobStatus;
} }
public void setChargingStatus(String chargingStatus) public void setChargingStatus(String chargingStatus)
{ {
this.chargingStatus = chargingStatus; this.chargingStatus = chargingStatus;
} }
public String getChargingStatus() public String getChargingStatus()
{ {
return chargingStatus; return chargingStatus;
} }
public void setStartDate(String startDate) public void setStartDate(String startDate)
{ {
this.startDate = startDate; this.startDate = startDate;
} }
public String getStartDate() public String getStartDate()
{ {
return startDate; return startDate;
} }
public void setChargingDate(String chargingDate) public void setChargingDate(String chargingDate)
{ {
this.chargingDate = chargingDate; this.chargingDate = chargingDate;
} }
public String getChargingDate() public String getChargingDate()
{ {
return chargingDate; return chargingDate;
} }
public void setJobType(String jobType) public void setJobType(String jobType)
{ {
this.jobType = jobType; this.jobType = jobType;
} }
public String getJobType() public String getJobType()
{ {
return jobType; return jobType;
} }
public void setAgvId(String agvId) public void setAgvId(String agvId)
{ {
this.agvId = agvId; this.agvId = agvId;
} }
public String getAgvId() public String getAgvId()
{ {
return agvId; return agvId;
} }
public void setChargingId(String chargingId) public void setChargingId(String chargingId)
{ {
this.chargingId = chargingId; this.chargingId = chargingId;
} }
public String getChargingId() public String getChargingId()
{ {
return chargingId; return chargingId;
} }

View File

@@ -11,6 +11,7 @@ import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService;
import com.ruoyi.bas.srgvmap.service.RoadCacheService; import com.ruoyi.bas.srgvmap.service.RoadCacheService;
import com.ruoyi.common.domain.SendData2; import com.ruoyi.common.domain.SendData2;
import com.ruoyi.common.utils.spring.SpringUtils; 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.domain.DeviceSrgv;
import com.ruoyi.device.srgv.service.IDeviceSrgvService; import com.ruoyi.device.srgv.service.IDeviceSrgvService;
import com.ruoyi.device.tsj.domain.DeviceTsj; 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.srgv.service.IWcsSrgvQueueService;
import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue; import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue;
import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService; 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.PlcSrgvRead;
import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder; import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder;
import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead;
@@ -98,7 +100,6 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
createCarQueue(deviceSrgv); createCarQueue(deviceSrgv);
inCharging(deviceSrgv); inCharging(deviceSrgv);
outCharging(deviceSrgv); outCharging(deviceSrgv);
@@ -129,7 +130,25 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
* @param deviceSrgv * @param deviceSrgv
*/ */
private void outCharging(DeviceSrgv deviceSrgv) { private void outCharging(DeviceSrgv deviceSrgv) {
SrgvChargingJob param = new SrgvChargingJob();
param.setJobStatus("1");
param.setJobType("2");
param.setAgvId(deviceSrgv.getDeviceId().toString());
List<SrgvChargingJob> 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<SrgvChargingJob> srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param); List<SrgvChargingJob> srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param);
if (CollUtil.isNotEmpty(srgvChargingJobs)) { if (CollUtil.isNotEmpty(srgvChargingJobs)) {
SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0); SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0);
String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点 if ("1".equals(srgvChargingJob.getChargingStatus())){
WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue(); //初始状态
wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString());
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); //判断小车和充电桩是否在同一层
if (CollUtil.isEmpty(wcsSrgvQueues)) { String agvId = srgvChargingJob.getAgvId();
//生成队列 String chargingId = srgvChargingJob.getChargingId();
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); DeviceSrgv srgv = PlcSrgvRead.deviceSrgvMap.get(agvId);
wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); DeviceCdz cdz = PlcCdzRead.deviceCdzMap.get(chargingId);
wcsSrgvQueue.setTaskNo(""); if (srgv.getCurrFloor().equals(cdz.getSzcs())){
wcsSrgvQueue.setTaskType("3"); //生成四向小车充电队列
wcsSrgvQueue.setPriority(Long.parseLong("2")); String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点
wcsSrgvQueue.setCargo("0"); WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
wcsSrgvQueue.setIssued("0"); wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString());
wcsSrgvQueue.setExecutionStatus("1"); List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam);
wcsSrgvQueue.setCargoPickSite(""); if (CollUtil.isEmpty(wcsSrgvQueues)) {
wcsSrgvQueue.setCargoPlaceSite(""); //生成队列
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); 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<WcsSrgvQueue> 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{ } else{
if ( "1".equals(wcsSrgvQueue.getIssued())) { if ( "1".equals(wcsSrgvQueue.getIssued())) {
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(wcsSrgvQueue.getTaskNo())); MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(wcsSrgvQueue.getTaskNo()));
if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && wcsSrgvQueue.getTaskType().equals("1")) { if (mydoJob != null){
// todo 通知wms入库完成 完成队列 完成作业 if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && "1".equals(wcsSrgvQueue.getTaskType())) {
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); // todo 通知wms入库完成 完成队列 完成作业
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
mydoJobService.insertHistory(mydoJob.getJobId()); mydoJobService.insertHistory(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
} else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("2")) { } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && "2".equals(wcsSrgvQueue.getTaskType())) {
//完成队列 更新作业阶段 //完成队列 更新作业阶段
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
//提升机修改阶段 //提升机修改阶段
// mydoJob.setExecutionPhase(""); // mydoJob.setExecutionPhase("");
// mydoJobService.updateMydoJob(mydoJob); // mydoJobService.updateMydoJob(mydoJob);
} else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("4")) { } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && "4".equals(wcsSrgvQueue.getTaskType())) {
//根据任务类型 ,生成队列 //根据任务类型 ,生成队列
if (Convert.toInt(mydoJob.getInOrOut()) < 20) { 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.insertHistory(wcsSrgvQueue.getTaskNo());
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); 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")){ }else {
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); //查询充电任务
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); SrgvChargingJob srgvChargingJob = new SrgvChargingJob();
srgvChargingJob.setAgvId(String.valueOf(wcsSrgvQueue.getAgvId()));
srgvChargingJob.setTaskNo(wcsSrgvQueue.getTaskNo());
srgvChargingJob.setJobStatus("2");
srgvChargingJob.setJobType("1");
List<SrgvChargingJob> 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());
} }
} }
} }

View File

@@ -129,11 +129,11 @@ public class TsjThread implements Runnable {
if (CollUtil.isNotEmpty(wcsSrgvQueues)) { if (CollUtil.isNotEmpty(wcsSrgvQueues)) {
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueues.get(0); WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueues.get(0);
String rwlx = ""; String rwlx = "";
if ("2".equals(wcsSrgvQueue.getDefault02())){ if ("2".equals(wcsSrgvQueue.getTaskType())){
//出库 //出库
rwlx = "1"; 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"; rwlx = "2";
} }