充电桩逻辑
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user