充电桩逻辑

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
*
*
* @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;
}

View File

@@ -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<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);
if (CollUtil.isNotEmpty(srgvChargingJobs)) {
SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0);
String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点
WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString());
List<WcsSrgvQueue> 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<WcsSrgvQueue> 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<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{
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<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)) {
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";
}