流利架 入库出库逻辑修改

This commit is contained in:
liuhanqing
2025-07-31 13:37:58 +08:00
parent e1f0f8f35e
commit 58c3822e07
18 changed files with 156 additions and 65 deletions

View File

@@ -30,9 +30,9 @@ public class ToWcsApiController {
/**
* 推送CTU流利架空料箱入库任务
*/
@PostMapping("/pushInMydoJob")
public void pushInMydoJob(String trayCode) {
toWcsService.pushInMydoJob(trayCode);
@Scheduled(fixedDelay=10000)
public void pushInMydoJob() {
toWcsService.pushInMydoJob();
}
/**

View File

@@ -27,11 +27,20 @@ public class ToWmsApiController {
/**
* 入库任务请求
*/
@PostMapping("/requestEnter")
public AjaxResult requestEnter(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.requestEnter(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "InJob");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
@PostMapping("/requestEnterByTrayCode")
public AjaxResult requestEnterByTrayCode(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCode(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "InJobByTrayCode",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 入库任务请求
*/
@PostMapping("/requestEnterByEnterId")
public AjaxResult requestEnterByEnterId(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.requestEnterByEnterId(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "InJobByEnterId",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -42,8 +51,7 @@ public class ToWmsApiController {
@PostMapping("/startSignal")
public AjaxResult startSignal(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.startSignal(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "startSignal");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "startSignal",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -62,8 +70,7 @@ public class ToWmsApiController {
@PostMapping("/jobFinish")
public AjaxResult jobFinish(@RequestBody WmsJobRequest wmsJobRequest) {
AjaxResult ajaxResult = toWmsService.jobFinish(wmsJobRequest);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "jobFinish");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "jobFinish",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -74,8 +81,7 @@ public class ToWmsApiController {
@PostMapping("/reAssign")
public AjaxResult reAssign(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.reAssign(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "reAssign");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "reAssign",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -86,8 +92,7 @@ public class ToWmsApiController {
@PostMapping("/reMaterial")
public AjaxResult reMaterial(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.reMaterial(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "reMaterial");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "reMaterial",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -100,8 +105,7 @@ public class ToWmsApiController {
@PostMapping("/getJob")
public AjaxResult getJob(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.getJob(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "getJob");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "getJob",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}

View File

@@ -5,6 +5,8 @@ import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.job.mydojob.domain.MydoJob;
import java.util.HashMap;
/**
* 作业统计 Service 接口
*/
@@ -15,5 +17,7 @@ public interface IToWcsService {
AjaxResult pushAgvMoveJob(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest);
void pushInMydoJob(String trayCode);
void pushInMydoJob();
AjaxResult outMydojobMakeSure(HashMap<String, String> outMydojobMakeSureParam);
}

View File

@@ -11,7 +11,8 @@ import java.util.Map;
*/
public interface IToWmsService {
AjaxResult requestEnter(MydoJob mydoJob);
AjaxResult requestEnterByTrayCode(MydoJob mydoJob);
AjaxResult requestEnterByEnterId(MydoJob mydoJob);
AjaxResult jobFinish(WmsJobRequest wmsJobRequest);

View File

@@ -1,5 +1,6 @@
package com.ruoyi.api.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
@@ -27,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
@@ -39,9 +41,10 @@ public class ToWcsServiceImpl implements IToWcsService {
@Autowired
private IMydoJobService mydoJobService;
public static final String PUSH_OUT_MYDO_JOB = "http://localhost:8081/agv/api/receiveOutMydoJob";
public static final String PUSH_IN_MYDO_JOB = "http://localhost:8081/agv/api/receiveInMydoJob";
public static final String PUSH_AGV_MOVE_JOB = "http://localhost:8081/agv/api/receiveAgvMoveJob";
public static final String PUSH_OUT_MYDO_JOB = "http://localhost:8081/wcs2Wms/api/receiveOutMydoJob";
public static final String PUSH_IN_MYDO_JOB = "http://localhost:8081/agv/wcs2Wms/api/receiveInMydoJob";
public static final String PUSH_AGV_MOVE_JOB = "http://localhost:8081/api/receiveAgvMoveJob";
public static final String OUT_MYDOJOB_MS = "http://localhost:8081/wcs2Wms/api/outMydojobMakesure";
@Override
@@ -75,14 +78,30 @@ public class ToWcsServiceImpl implements IToWcsService {
}
@Override
public void pushInMydoJob(String trayCode) {
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode);
if (ObjUtil.isNotNull(mydoJob)){
RequestLog requestLog = requestLogService.getRequestLog(PUSH_IN_MYDO_JOB, JSONUtil.toJsonStr(mydoJob), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
public void pushInMydoJob() {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setInOrOut("1");
mydoJobParam.setStatus("1");
mydoJobParam.setExitId("fluent");
mydoJobParam.setEntranceId("fluent");
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)){
for (MydoJob mydoJob : mydoJobs) {
RequestLog requestLog = requestLogService.getRequestLog(PUSH_IN_MYDO_JOB, JSONUtil.toJsonStr(mydoJob), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}
@Override
public AjaxResult outMydojobMakeSure(HashMap<String, String> outMydojobMakeSureParam) {
RequestLog requestLog = requestLogService.getRequestLog(OUT_MYDOJOB_MS, JSONUtil.toJsonStr(outMydojobMakeSureParam), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
return AjaxResult.success();
}
return AjaxResult.error(requestLog.getDuration());
}
}

View File

@@ -77,8 +77,7 @@ public class ToWmsServiceImpl implements IToWmsService {
@Override
public AjaxResult requestEnter(MydoJob param) {
public AjaxResult requestEnterByTrayCode(MydoJob param) {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTrayCode(param.getTrayCode());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
@@ -95,6 +94,24 @@ public class ToWmsServiceImpl implements IToWmsService {
return AjaxResult.success(mydoJob);
}
@Override
public AjaxResult requestEnterByEnterId(MydoJob param) {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setEntranceId(param.getEntranceId());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if(mydoJobs.isEmpty()){
return AjaxResult.warn(MessageUtils.message("warn.message"));
}
MydoJob mydoJob = mydoJobs.get(0);
if ("1".equals(mydoJob.getExecutionPhase())){
mydoJob.setExecutionPhase("2");
mydoJob.setTrayCode(param.getTrayCode());
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
}
return AjaxResult.success(mydoJob);
}
@Override
public AjaxResult jobFinish(WmsJobRequest wmsJobRequest) {
MydoJob mydoJobParam = new MydoJob();

View File

@@ -231,7 +231,7 @@ public class MydoJobServiceImpl implements IMydoJobService {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(job.getWarehouseId());
if("2".equals(basWarehouse.getWarehouseType())) {
if ("1".equals(job.getStatus()) || "2".equals(job.getStatus())) {
return AjaxResult.warn(MessageUtils.message("warn.message1"));
return AjaxResult.warn(MessageUtils.message("warn.message13"));
}
}
if ("1".equals(job.getInOrOut()) || "4".equals(job.getInOrOut())) {

View File

@@ -1,6 +1,8 @@
package com.ruoyi.log.service;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.log.domain.RequestLog;
/**
@@ -74,5 +76,5 @@ public interface IRequestLogService
* @param remark
* @return
*/
public RequestLog getRequestLog(String param, String remark);
public RequestLog getRequestLog(String param, String remark, AjaxResult ajaxResult);
}

View File

@@ -10,6 +10,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.log.mapper.RequestLogMapper;
@@ -23,6 +24,7 @@ import com.ruoyi.log.service.IRequestLogService;
* @date 2025-07-02
*/
@Service
@Slf4j
public class RequestLogServiceImpl implements IRequestLogService
{
@Autowired
@@ -61,7 +63,12 @@ public class RequestLogServiceImpl implements IRequestLogService
@Override
public int insertRequestLog(RequestLog requestLog)
{
return requestLogMapper.insertRequestLog(requestLog);
if (requestLog.getIsSuccessful().equals("1")){
return requestLogMapper.insertRequestLog(requestLog);
}else {
log.error("请求失败:" + requestLog.getErrorDetails());
return 0;
}
}
/**
@@ -138,7 +145,7 @@ public class RequestLogServiceImpl implements IRequestLogService
requestLog.setIsSuccessful("0");
requestLog.setResponseStatus("0");
} finally {
requestLogMapper.insertRequestLog(requestLog);
insertRequestLog(requestLog);
}
return requestLog;
}
@@ -149,7 +156,7 @@ public class RequestLogServiceImpl implements IRequestLogService
* @return requestLog
*/
@Override
public RequestLog getRequestLog(String param, String remark) {
public RequestLog getRequestLog(String param, String remark,AjaxResult ajaxResult) {
RequestLog requestLog = new RequestLog();
requestLog.setRequestTime(DateUtil.formatDateTime(new Date()));
requestLog.setRequestBody(param);
@@ -159,7 +166,13 @@ public class RequestLogServiceImpl implements IRequestLogService
requestLog.setRequestMethod("post");
requestLog.setResponseTime(DateUtil.formatDateTime(new Date()));
requestLog.setDuration(Convert.toStr(DateUtil.between(Convert.toDate(requestLog.getRequestTime()), Convert.toDate(requestLog.getResponseTime()), DateUnit.MS)));
requestLog.setIsSuccessful("1");
requestLog.setResponseStatus("1");
if (ajaxResult.isSuccess()){
requestLog.setIsSuccessful("1");
}else {
requestLog.setIsSuccessful("0");
}
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
return requestLog;
}
}

View File

@@ -18,6 +18,8 @@ import com.ruoyi.bas.tag.domain.BasTag;
import com.ruoyi.bas.tag.service.IBasTagService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.out.tagTask.domain.ExecuteSocket;
import com.ruoyi.pda.domain.TrayCodeMakeSure;
import com.ruoyi.pda.domain.TrayCodeMsg;
@@ -46,6 +48,8 @@ public class TagTaskServiceImpl implements ITagTaskService {
private IBasTagService basTagService;
@Autowired
private PdaService pdaService;
@Autowired
private IMydoJobService mydoJobService;
private HashMap<String, ExecuteSocket> tagSockteMap = new HashMap<>();
@@ -242,12 +246,23 @@ public class TagTaskServiceImpl implements ITagTaskService {
String type = s.substring(4, 6);//指令类型 01是下发成功反馈 12是拍灭绿灯指令
if ("12".equals(type)) {
//12为 绿色拍灯指令
//生成agv空料箱入库作业
TrayCodeMsg trayCodeMsg = new TrayCodeMsg();
trayCodeMsg.setTrayCode(IdUtil.fastSimpleUUID());
trayCodeMsg.setWarehouseId("02");
trayCodeMsg.setEntranceId(basTag.getPickAdd());
pdaService.emptyBoxIn(trayCodeMsg);
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setInOrOut("1");
mydoJobParam.setExitId("fluent");
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJobParam);
if (CollUtil.isEmpty(mydoJobs)){
//生成agv空料箱入库作业
TrayCodeMsg trayCodeMsg = new TrayCodeMsg();
trayCodeMsg.setTrayCode(IdUtil.fastSimpleUUID());
trayCodeMsg.setWarehouseId("02");
trayCodeMsg.setEntranceId(basTag.getPickAdd());
pdaService.emptyBoxIn(trayCodeMsg);
}else {
MydoJob mydoJob = mydoJobs.get(0);
mydoJob.setEntranceId(basTag.getPickAdd());
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.container.domain.BasContainer;
@@ -102,6 +103,8 @@ public class PdaServiceImp implements PdaService {
private IBasWarehouseService basWarehouseService;
@Autowired
private IBasContainerService basContainerService;
@Autowired
private IToWcsService iToWcsService;
/**
* 空托盘入库
@@ -306,15 +309,14 @@ public class PdaServiceImp implements PdaService {
List<MydoJobDetail> currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
if (flag) {
deleteTagTask(trayCodeMakeSure, basWarehouse);
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
map.put("v_type", "1");
pdaMapper.outMakeSure(map);
String result = map.get("v_result").toString();
if ("10".equals(result)) {
//通知wcs 出库确认
deleteTagTask(trayCodeMakeSure, basWarehouse);
return AjaxResult.success(map.get("v_resultmsg").toString());
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
@@ -383,7 +385,7 @@ public class PdaServiceImp implements PdaService {
List<MydoJobDetail> currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
if (flag) {
deleteTagTask(trayCodeMakeSure, basWarehouse);
HashMap<String, Object> map = new HashMap<>();
@@ -392,6 +394,7 @@ public class PdaServiceImp implements PdaService {
pdaMapper.outMakeSure(map);
String result = map.get("v_result").toString();
if ("10".equals(result)) {
deleteTagTask(trayCodeMakeSure, basWarehouse);
return AjaxResult.success(map.get("v_resultmsg").toString());
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
@@ -434,12 +437,13 @@ public class PdaServiceImp implements PdaService {
}
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(mydoJob.getJobId());
if (mydoJobDetails.stream().allMatch(x -> "1".equals(x.getSpare3()))) {
deleteTagTask(trayCodeMakeSure, basWarehouse);
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
pdaMapper.checkMakeSure(map);
String result = map.get("v_result").toString();
if ("10".equals(result)) {
deleteTagTask(trayCodeMakeSure, basWarehouse);
return AjaxResult.success(map.get("v_resultmsg").toString());
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
@@ -476,6 +480,8 @@ public class PdaServiceImp implements PdaService {
private void deleteTagTask(TrayCodeMakeSure trayCodeMakeSure, BasWarehouse basWarehouse) {
if ("2".equals(basWarehouse.getWarehouseType())) {
BasTag basTag = basTagService.selectBasTagByTrayCode(trayCodeMakeSure.getTrayCode());
basTag.setTrayCode("");
basTagService.updateBasTag(basTag);
//删除电子标签
TagTask param = new TagTask();
param.setTagId(basTag.getId());
@@ -485,6 +491,13 @@ public class PdaServiceImp implements PdaService {
.map(TagTask::getId)
.toArray(Long[]::new));
}
//通知wcs出库确认成功
HashMap<String, String> outMydojobMakeSureParam = new HashMap<>();
outMydojobMakeSureParam.put("trayCode", trayCodeMakeSure.getTrayCode());
AjaxResult ajaxResult = iToWcsService.outMydojobMakeSure(outMydojobMakeSureParam);
if (!ajaxResult.isSuccess()){
throw new RuntimeException(ajaxResult.toString());
}
}
}