入库写入任务号,盘点回流 出库回流写入任务号
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.api.controller;
|
package com.ruoyi.api.controller;
|
||||||
|
|
||||||
|
import com.ruoyi.api.domain.SsjTaskNoParam;
|
||||||
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
||||||
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.ruoyi.api.domain;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class SsjTaskNoParam {
|
||||||
|
private String taskNo;
|
||||||
|
private String deviceCode;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.api.service;
|
package com.ruoyi.api.service;
|
||||||
|
|
||||||
import com.ruoyi.api.domain.RequestLog;
|
import com.ruoyi.api.domain.RequestLog;
|
||||||
|
import com.ruoyi.api.domain.SsjTaskNoParam;
|
||||||
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest;
|
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest;
|
||||||
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse;
|
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse;
|
||||||
import com.ruoyi.api.domain.agv.cancelTask.CancelTaskRequest;
|
import com.ruoyi.api.domain.agv.cancelTask.CancelTaskRequest;
|
||||||
@@ -29,10 +30,18 @@ public interface IApiService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据条码请求入库
|
* 根据条码请求入库
|
||||||
|
*
|
||||||
* @param mydoJob
|
* @param mydoJob
|
||||||
* @return 返回入库口位置
|
* @return 返回入库口位置
|
||||||
*/
|
*/
|
||||||
public MydoJob requestEnterByTrayCode(MydoJob mydoJob);
|
public MydoJob requestEnterByTrayCode(MydoJob mydoJob);
|
||||||
|
/**
|
||||||
|
* 根据任务号请求入库
|
||||||
|
*
|
||||||
|
* @param mydoJob
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public MydoJob requestEnterByTaskNo(MydoJob mydoJob);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据入口请求入库
|
* 根据入口请求入库
|
||||||
@@ -110,7 +119,7 @@ public interface IApiService
|
|||||||
* @param param
|
* @param param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public AjaxResult sendOutMydoJobStatus(Map<String, Object> param) ;
|
public AjaxResult startMydoJobStatus(Map<String, Object> param) ;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ import com.ruoyi.schedule.plcRead.ssj.PlcRead;
|
|||||||
import com.ruoyi.schedule.plcRead.ssj.domain.SendData;
|
import com.ruoyi.schedule.plcRead.ssj.domain.SendData;
|
||||||
import com.ruoyi.schedule.plcRead.util.Tools;
|
import com.ruoyi.schedule.plcRead.util.Tools;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@@ -78,6 +78,25 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求入库
|
||||||
|
*
|
||||||
|
* @param mydoJob
|
||||||
|
* @return 返回入库口位置
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public MydoJob requestEnterByTaskNo(MydoJob mydoJob) {
|
||||||
|
RequestLog requestLog = requestLogService.getRequestLog(REQUEST_ENTER_BY_TASK_NO, "根据条码请求入库", JSONUtil.toJsonStr(mydoJob));
|
||||||
|
if ("1".equals(requestLog.getIsSuccessful())) {
|
||||||
|
String responseBody = requestLog.getResponseBody();
|
||||||
|
InterfaceReceive bean = JSONUtil.toBean(responseBody, InterfaceReceive.class);
|
||||||
|
return JSONUtil.toBean(JSONUtil.toJsonStr(bean.getData()), MydoJob.class);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求入库
|
* 请求入库
|
||||||
* @param mydoJob
|
* @param mydoJob
|
||||||
@@ -199,7 +218,7 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult sendOutMydoJobStatus(Map<String, Object> param) {
|
public AjaxResult startMydoJobStatus(Map<String, Object> param) {
|
||||||
RequestLog requestLog = requestLogService.getRequestLog(SEND_TASK_STARTED, "发送任务开始信号", JSONUtil.toJsonStr(param));
|
RequestLog requestLog = requestLogService.getRequestLog(SEND_TASK_STARTED, "发送任务开始信号", JSONUtil.toJsonStr(param));
|
||||||
if ("1".equals(requestLog.getIsSuccessful())) {
|
if ("1".equals(requestLog.getIsSuccessful())) {
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
@@ -245,7 +264,7 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
//通知wms
|
//通知wms
|
||||||
param.put("taskNo", agvQueue.getWmsTaskNo());
|
param.put("taskNo", agvQueue.getWmsTaskNo());
|
||||||
param.put("wmsType", agvQueue.getWmsTaskType());
|
param.put("wmsType", agvQueue.getWmsTaskType());
|
||||||
sendOutMydoJobStatus(param);
|
startMydoJobStatus(param);
|
||||||
break;
|
break;
|
||||||
case "outbin":
|
case "outbin":
|
||||||
//走出储位
|
//走出储位
|
||||||
@@ -396,7 +415,7 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult receiveInMydoJob(ReceiveJob receiveInJob) {
|
public AjaxResult receiveInMydoJob(ReceiveJob receiveInJob) {
|
||||||
AgvQueue agvQueue = createAgvQueue(receiveInJob.getEntranceId(),receiveInJob.getCargoSpaceId(),receiveInJob.getTrayCode(),receiveInJob.getTaskNo(),"1");
|
AgvQueue agvQueue = createAgvQueue(receiveInJob.getEntranceId(), receiveInJob.getCargoSpaceId(), receiveInJob.getTrayCode(), receiveInJob.getTaskNo(), "1");
|
||||||
if (agvQueue != null){
|
if (agvQueue != null){
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}else {
|
}else {
|
||||||
@@ -404,6 +423,24 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Scheduled(cron = "0/5 * * * * ?")
|
||||||
|
public void sendInSsjTaskNo(){
|
||||||
|
AgvQueue agvQueueParam = new AgvQueue();
|
||||||
|
agvQueueParam.setSsjTaskNo("0");
|
||||||
|
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam);
|
||||||
|
for (AgvQueue agvQueue : agvQueues) {
|
||||||
|
//输送机写入任务号
|
||||||
|
DeviceSsj deviceSsj = PlcRead.deviceMap.get(agvQueue.getPositionCode1());
|
||||||
|
SendData rwh = new SendData(Tools.DINT, agvQueue.getWmsTaskNo());
|
||||||
|
byte[] bytes = Tools.sendData(rwh);
|
||||||
|
int i = PlcRead.WriteToSSJ(deviceSsj.getPlcDbWriteAddress(), bytes);
|
||||||
|
if (i==1){
|
||||||
|
agvQueue.setSsjTaskNo("1");
|
||||||
|
agvQueueService.updateAgvQueue(agvQueue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流利架出库确认,清空流利架状态信息
|
* 流利架出库确认,清空流利架状态信息
|
||||||
* @param jobParam
|
* @param jobParam
|
||||||
@@ -484,6 +521,7 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
agvQueue.setStatus("0");
|
agvQueue.setStatus("0");
|
||||||
agvQueue.setTaskCode(taskCode);
|
agvQueue.setTaskCode(taskCode);
|
||||||
agvQueue.setWmsTaskType(wmsTaskType);
|
agvQueue.setWmsTaskType(wmsTaskType);
|
||||||
|
agvQueue.setSsjTaskNo("0");
|
||||||
agvQueueService.insertAgvQueue(agvQueue);
|
agvQueueService.insertAgvQueue(agvQueue);
|
||||||
return agvQueue;
|
return agvQueue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ public class Constant {
|
|||||||
|
|
||||||
|
|
||||||
public static final String REQUEST_ENTER_BY_TRAYCODE = "http://localhost:8080/api2wms/requestEnterByTrayCode";
|
public static final String REQUEST_ENTER_BY_TRAYCODE = "http://localhost:8080/api2wms/requestEnterByTrayCode";
|
||||||
|
public static final String REQUEST_ENTER_BY_TASK_NO = "http://localhost:8080/api2wms/requestEnterByTaskNo";
|
||||||
public static final String REQUEST_ENTER_BY_ENTER_ID = "http://localhost:8080/api2wms/requestEnterByEnterId";
|
public static final String REQUEST_ENTER_BY_ENTER_ID = "http://localhost:8080/api2wms/requestEnterByEnterId";
|
||||||
public static final String JOB_FINISH_URL = "http://localhost:8080/api2wms/jobFinish";
|
public static final String JOB_FINISH_URL = "http://localhost:8080/api2wms/jobFinish";
|
||||||
public static final String CONTINUE_TASK_URL = "http://127.0.0.1:8081/rcms-dps/rest/queryAgvStatus/";
|
public static final String CONTINUE_TASK_URL = "http://127.0.0.1:8081/rcms-dps/rest/queryAgvStatus/";
|
||||||
|
|||||||
@@ -80,6 +80,16 @@ public class AgvQueue extends BaseEntity
|
|||||||
|
|
||||||
private String wmsTaskType;
|
private String wmsTaskType;
|
||||||
|
|
||||||
|
private String ssjTaskNo;
|
||||||
|
|
||||||
|
public String getSsjTaskNo() {
|
||||||
|
return ssjTaskNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSsjTaskNo(String ssjTaskNo) {
|
||||||
|
this.ssjTaskNo = ssjTaskNo;
|
||||||
|
}
|
||||||
|
|
||||||
public String getWmsTaskType() {
|
public String getWmsTaskType() {
|
||||||
return wmsTaskType;
|
return wmsTaskType;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.schedule.scheduleTask.ssj.bs;
|
package com.ruoyi.schedule.scheduleTask.ssj.bs;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
@@ -148,19 +149,16 @@ public class BsInSsjThread implements Runnable {
|
|||||||
*/
|
*/
|
||||||
public void inDispatch(DeviceSsj inSsjDevice) {
|
public void inDispatch(DeviceSsj inSsjDevice) {
|
||||||
//如果入库请求1 并且 托盘码不为空
|
//如果入库请求1 并且 托盘码不为空
|
||||||
if (inSsjDevice.getDw()==1 && inSsjDevice.getRkqq() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) {
|
if (inSsjDevice.getDw()==1 && inSsjDevice.getRkqq() == 1 && inSsjDevice.getTaskNo()>0) {
|
||||||
//判断是否生成队列
|
//判断是否生成队列
|
||||||
AgvQueue agvQueueParam = new AgvQueue();
|
AgvQueue agvQueueParam = new AgvQueue();
|
||||||
agvQueueParam.setWmsTraycode(inSsjDevice.getTrayCode());
|
agvQueueParam.setWmsTaskNo(String.valueOf(inSsjDevice.getTaskNo()));
|
||||||
//agvQueueParam.setStatus("0");
|
|
||||||
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam);
|
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam);
|
||||||
if (CollUtil.isEmpty(agvQueues)) {
|
if (CollUtil.isEmpty(agvQueues)) {
|
||||||
//根据入口,查询对应的入库作业
|
//根据入口,查询对应的入库作业
|
||||||
MydoJob mydoJobParam = new MydoJob();
|
MydoJob mydoJobParam = new MydoJob();
|
||||||
mydoJobParam.setStatus("1");
|
mydoJobParam.setTaskNo(Convert.toStr(inSsjDevice.getTaskNo()));
|
||||||
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
|
MydoJob mydoJob = apiService.requestEnterByTaskNo(mydoJobParam);
|
||||||
mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
|
|
||||||
MydoJob mydoJob = apiService.requestEnterByTrayCode(mydoJobParam);
|
|
||||||
if (ObjUtil.isNotNull(mydoJob)) {
|
if (ObjUtil.isNotNull(mydoJob)) {
|
||||||
|
|
||||||
//生成agv队列
|
//生成agv队列
|
||||||
|
|||||||
@@ -95,9 +95,8 @@ public class JsInSsjThread implements Runnable {
|
|||||||
mydoJobParam.setStatus("1");
|
mydoJobParam.setStatus("1");
|
||||||
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
|
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
|
||||||
mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
|
mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
|
||||||
MydoJob mydoJob = apiService.requestEnterByTrayCode(mydoJobParam);
|
MydoJob mydoJob = apiService.requestEnterByTaskNo(mydoJobParam);
|
||||||
if (ObjUtil.isNotNull(mydoJob)) {
|
if (ObjUtil.isNotNull(mydoJob)) {
|
||||||
|
|
||||||
//生成agv队列
|
//生成agv队列
|
||||||
AgvQueue agvQueue = apiService.createAgvQueue(inSsjDevice.getName(), mydoJob.getCargoSpaceId(),mydoJob.getTrayCode(),mydoJob.getTaskNo(),"1");
|
AgvQueue agvQueue = apiService.createAgvQueue(inSsjDevice.getName(), mydoJob.getCargoSpaceId(),mydoJob.getTrayCode(),mydoJob.getTaskNo(),"1");
|
||||||
//请求任务生成
|
//请求任务生成
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="status != null and status != ''"> and status = #{status}</if>
|
<if test="status != null and status != ''"> and status = #{status}</if>
|
||||||
<if test="taskCode != null and taskCode != ''"> and task_code = #{taskCode}</if>
|
<if test="taskCode != null and taskCode != ''"> and task_code = #{taskCode}</if>
|
||||||
<if test="wmsTaskType != null and wmsTaskType != ''"> and wms_task_type = #{wmsTaskType}</if>
|
<if test="wmsTaskType != null and wmsTaskType != ''"> and wms_task_type = #{wmsTaskType}</if>
|
||||||
|
<if test="ssjTaskNo != null and ssjTaskNo != ''"> and ssj_task_no = #{ssjTaskNo}</if>
|
||||||
</where>
|
</where>
|
||||||
order by req_time desc
|
order by req_time desc
|
||||||
</select>
|
</select>
|
||||||
@@ -83,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="status != null">status,</if>
|
<if test="status != null">status,</if>
|
||||||
<if test="taskCode != null">task_code,</if>
|
<if test="taskCode != null">task_code,</if>
|
||||||
<if test="wmsTaskType != null">wms_task_type,</if>
|
<if test="wmsTaskType != null">wms_task_type,</if>
|
||||||
|
<if test="ssjTaskNo != null">ssj_task_no,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="reqCode != null">#{reqCode},</if>
|
<if test="reqCode != null">#{reqCode},</if>
|
||||||
@@ -103,6 +105,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="status != null">#{status},</if>
|
<if test="status != null">#{status},</if>
|
||||||
<if test="taskCode != null">#{taskCode},</if>
|
<if test="taskCode != null">#{taskCode},</if>
|
||||||
<if test="wmsTaskType != null">#{wmsTaskType},</if>
|
<if test="wmsTaskType != null">#{wmsTaskType},</if>
|
||||||
|
<if test="ssjTaskNo != null">#{ssjTaskNo},</if>
|
||||||
|
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="insertHistory">
|
<insert id="insertHistory">
|
||||||
@@ -130,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="wmsTraycode != null">wms_traycode = #{wmsTraycode},</if>
|
<if test="wmsTraycode != null">wms_traycode = #{wmsTraycode},</if>
|
||||||
<if test="wmsTaskNo != null">wms_task_no = #{wmsTaskNo},</if>
|
<if test="wmsTaskNo != null">wms_task_no = #{wmsTaskNo},</if>
|
||||||
<if test="status != null">status = #{status},</if>
|
<if test="status != null">status = #{status},</if>
|
||||||
|
<if test="ssjTaskNo != null">ssj_task_no =#{ssjTaskNo},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where req_code = #{reqCode}
|
where req_code = #{reqCode}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
Reference in New Issue
Block a user