diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java index 6c0e7da..2cd981d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java @@ -2,6 +2,7 @@ package com.ruoyi.api.controller; import com.ruoyi.api.domain.wcs2wms.JobParam; import com.ruoyi.api.domain.wcs2wms.ReceiveJob; +import com.ruoyi.api.domain.wcs2wms.stockout.StockoutReceive; import com.ruoyi.api.service.IApiService; import com.ruoyi.bas.port.domain.WcsPort; import com.ruoyi.bas.port.service.IWcsPortService; @@ -12,7 +13,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@RequestMapping("/wcs2Wms/api") +@RequestMapping("/wcs2wms/api") public class Wcs2WmsController { @Autowired @@ -23,12 +24,12 @@ public class Wcs2WmsController { /** * 接收wms出库任务 * - * @param receiveOutJob + * @param stockoutReceive * @return */ @PostMapping("/receiveOutMydoJob") - public AjaxResult receiveOutMydoJob(@RequestBody ReceiveJob receiveOutJob) { - return apiService.receiveOutMydoJob(receiveOutJob); + public AjaxResult receiveOutMydoJob(@RequestBody StockoutReceive stockoutReceive) { + return apiService.receiveOutMydoJob(stockoutReceive); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/stockout/StockoutReceive.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/stockout/StockoutReceive.java new file mode 100644 index 0000000..3bfaf7d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/stockout/StockoutReceive.java @@ -0,0 +1,38 @@ +package com.ruoyi.api.domain.wcs2wms.stockout; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +/** + * wms推送出库请求参数 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StockoutReceive { + + /** + * 请求时传入的 reqCode,原样回传 + */ + private String reqCode; + + /** + * wms下发的任务号 + */ + private String taskCode; + + /** + * 出库库位编号 + */ + private String siteCode; + + /** + * 任务类型编号 + */ + private String taskTypeCode; + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java index aea9724..6c4913e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java @@ -12,6 +12,7 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRespons import com.ruoyi.api.domain.wcs2wms.JobParam; import com.ruoyi.api.domain.wcs2wms.ReceiveJob; import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionRequest; +import com.ruoyi.api.domain.wcs2wms.stockout.StockoutReceive; import com.ruoyi.bas.port.domain.WcsPort; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.exception.job.TaskException; @@ -141,16 +142,16 @@ public interface IApiService /** * 入库请求生成作业 */ - public AjaxResult createInMydoJob(Map param); + AjaxResult createInMydoJob(Map param); /** * 入库请求作业异常反馈(扫码失败、外形、称重等异常) */ - public AjaxResult createInMydoJobException(Map param); + AjaxResult createInMydoJobException(Map param); - public AjaxResult selectMydoJobByNoTrayCode(Map param); + AjaxResult selectMydoJobByNoTrayCode(Map param); - AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob); + AjaxResult receiveOutMydoJob(StockoutReceive stockoutReceive); AjaxResult receiveInMydoJob(ReceiveJob receiveInJob); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java index 1a2f713..1a74a30 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java @@ -19,6 +19,7 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.PositionCodeData; import com.ruoyi.api.domain.wcs2wms.JobParam; import com.ruoyi.api.domain.wcs2wms.ReceiveJob; import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionRequest; +import com.ruoyi.api.domain.wcs2wms.stockout.StockoutReceive; import com.ruoyi.api.service.IApiService; import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService; import com.ruoyi.bas.port.domain.WcsPort; @@ -450,37 +451,42 @@ public class ApiServiceImpl implements IApiService { @Override - public AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob) { + public AjaxResult receiveOutMydoJob(StockoutReceive stockoutReceive) { //检查任务是否存在,避免重复生成 MydoJob job = new MydoJob(); - job.setTaskNo(receiveOutJob.getTaskNo()); + job.setWmsTaskNo(stockoutReceive.getTaskCode()); List tasks = mydoJobService.selectMydoJobList(job); //校验:任务已存在 if (tasks.size() != 0) { - log.info("【请求异常】wms下发出库任务失败,该任务已存在,单号:{},任务号:{}", receiveOutJob.getJobId(), receiveOutJob.getTaskNo()); - return AjaxResult.error("【请求异常】wms下发出库任务失败,该任务已存在,单号:" + receiveOutJob.getJobId() + ",任务号:" + receiveOutJob.getTaskNo()); + log.info("【请求异常】wms下发出库任务失败,该任务已存在,任务号:{}", stockoutReceive.getTaskCode()); + return AjaxResult.error("【请求异常】wms下发出库任务失败,任务号:" + stockoutReceive.getTaskCode()); } //生成出库作业 MydoJob mydoJob = new MydoJob(); - mydoJob.setJobId(receiveOutJob.getJobId()); - mydoJob.setTaskNo(receiveOutJob.getTaskNo()); - mydoJob.setCargoSpaceId(receiveOutJob.getCargoSpaceId()); + mydoJob.setJobId(mydoJobService.getJobId("CK")); + mydoJob.setTaskNo(mydoJobService.getTaskNo("3")); + mydoJob.setWmsTaskNo(stockoutReceive.getTaskCode()); + //todo 可能需要解析货位 wms参数【siteCode】 + mydoJob.setCargoSpaceId(stockoutReceive.getSiteCode()); mydoJob.setExitId("G1004"); - mydoJob.setInOrOut(receiveOutJob.getInOrOut()); + //todo 是否需要解析wms推送的任务类型? +// mydoJob.setInOrOut(stockoutReceive.getTaskTypeCode()); + mydoJob.setInOrOut("2"); mydoJob.setStatus("1"); mydoJob.setPriority(Long.valueOf(10)); - mydoJob.setTrayCode(receiveOutJob.getTrayCode()); - mydoJob.setRoadwayId(receiveOutJob.getRoadwayId()); + //todo 可能需要查本地库存信息获取条码? +// mydoJob.setTrayCode(receiveOutJob.getTrayCode()); mydoJob.setCreateTime(DateUtils.getNowDate()); mydoJob.setExecutionPhase(TASK_EP_CREATE); // mydoJob.setTraySize(receiveOutJob.getDepartmentId()); int i = mydoJobService.insertMydoJob(mydoJob); - if (i > 0) { +// boolean success = mydoJobService.saveOrUpdate(mydoJob); + if (i != 0) { return AjaxResult.success( - "【请求成功】wms下发出库作业,作业单号:" + receiveOutJob.getJobId() + ",任务号:" + receiveOutJob.getTaskNo() + ",出库货位:" + receiveOutJob.getCargoSpaceId()); + "【请求成功】wms下发出库作业,下发任务号:" + stockoutReceive.getTaskCode() + ",出库货位:" + stockoutReceive.getSiteCode()); }else{ return AjaxResult.error(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java b/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java index 1a70c06..27f9e73 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java @@ -1,5 +1,7 @@ package com.ruoyi.job.domain; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -21,11 +23,13 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @ToString +//@TableName("mydo_job_wcs") public class MydoJob extends BaseEntity { private static final long serialVersionUID = 1L; /** 任务ID */ +// @TableId private String jobId; /** 任务状态 */ @@ -90,7 +94,7 @@ public class MydoJob extends BaseEntity private String trayCode; - private String inOut; +// private String inOut; private String flag; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java index 8055496..eb21f1b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java @@ -2,6 +2,8 @@ package com.ruoyi.job.mapper; import java.util.HashMap; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.job.domain.MydoJob; import org.apache.ibatis.annotations.Param; @@ -11,7 +13,7 @@ import org.apache.ibatis.annotations.Param; * @author ruoyi * @date 2025-09-22 */ -public interface MydoJobMapper +public interface MydoJobMapper extends BaseMapper { /** * 查询作业信息 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java index bd4492f..2346a21 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java @@ -3,6 +3,8 @@ package com.ruoyi.job.service; import java.util.HashMap; import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.job.domain.MydoJob; import org.apache.ibatis.annotations.Param; @@ -13,7 +15,7 @@ import org.apache.ibatis.annotations.Param; * @author ruoyi * @date 2025-09-22 */ -public interface IMydoJobService +public interface IMydoJobService extends IService { /** * 查询作业信息 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java index 03713db..38230a6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java @@ -1,11 +1,14 @@ package com.ruoyi.job.service.impl; +import java.io.Serializable; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.job.domain.JobCallBack; @@ -25,7 +28,7 @@ import javax.annotation.PostConstruct; * @date 2025-09-22 */ @Service -public class MydoJobServiceImpl implements IMydoJobService +public class MydoJobServiceImpl extends ServiceImpl implements IMydoJobService { @Autowired private MydoJobMapper mydoJobMapper; @@ -308,4 +311,5 @@ public class MydoJobServiceImpl implements IMydoJobService } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/LineConvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/LineConvThread.java deleted file mode 100644 index fbab4c5..0000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/LineConvThread.java +++ /dev/null @@ -1,337 +0,0 @@ -package com.ruoyi.schedule.scheduleTask.ssj; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.convert.Convert; -import cn.hutool.core.util.StrUtil; -import com.ruoyi.api.service.IApiService; -import com.ruoyi.bas.port.service.IWcsPortService; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.utils.spring.SpringUtils; -import com.ruoyi.device.ssj.domain.DeviceSsj; -import com.ruoyi.job.domain.MydoJob; -import com.ruoyi.job.service.IMydoJobService; -import com.ruoyi.queue.agv.domain.AgvQueue; -import com.ruoyi.queue.agv.service.IAgvQueueService; -import lombok.extern.slf4j.Slf4j; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static com.ruoyi.common.TaskStatusCode.*; -import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.*; - -/** - * 生产线输送机 - * 生产线线程 检测到位+托盘条码+托盘大小 请求wms生成入库作业 。 循环作业表,检测有没有出库作业 ,生成agv搬运作业。 - */ -@Slf4j -public class LineConvThread implements Runnable { - public HashMap> ssjCodeList; - - private IApiService apiService; - private IAgvQueueService agvQueueService; - private IMydoJobService mydoJobService; - private IWcsPortService wcsPortService; - - public boolean isRun = true; - - - public void init() { - ssjCodeList = new HashMap<>(); - ArrayList ssjCodes = new ArrayList<>(); - ssjCodes.add("G1005"); - ssjCodeList.put("line", ssjCodes); - apiService = SpringUtils.getBean(IApiService.class); - agvQueueService = SpringUtils.getBean(IAgvQueueService.class); - mydoJobService = SpringUtils.getBean(IMydoJobService.class); - wcsPortService = SpringUtils.getBean(IWcsPortService.class); - log.info("初始化服务 {},{}", apiService, agvQueueService); - } - - @Override - public void run() { - init(); - while (isRun) { - for (String type : ssjCodeList.keySet()) { - - switch (type) { - case "line": - //生产线入库 - for (String ssjCode : ssjCodeList.get(type)) { - try { - if (deviceSsjMap.containsKey(ssjCode)) { - inDispatch(deviceSsjMap.get(ssjCode)); - } else { - log.error("设备不存在 ssjCode{}", ssjCode); - } - } catch (RuntimeException e) { - log.error(e.getMessage(), e); - } - - } - break; - } - } - - try { - Thread.sleep(1500); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - - } - - - public void inDispatch(DeviceSsj SsjDevice) { - //如果到位,扫到条码,托盘大小,执行阶段卡控一下(下发输送机后改执行阶段) - if (SsjDevice.getRkqq() == 1 && StrUtil.isNotBlank(SsjDevice.getTrayCode()) - && SsjDevice.getTraySize() != 0 && SsjDevice.getTaskNo() < 1000) { - //log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}", SsjDevice.getDeviceCode(), "产线到位", SsjDevice.getTrayCode(), SsjDevice.getTraySize()); - - //查作业,入如果已经有了,直接下发输送线 - MydoJob mydoJob = new MydoJob(); - mydoJob.setInOrOut("1"); - String trayCode = SsjDevice.getTrayCode(); - //String[] split = trayCode.split("\\s+"); - String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); - - mydoJob.setTrayCode(serial); - mydoJob.setEntranceId("G1005"); - mydoJob.setFlag("0"); - mydoJob.setStatus("1"); - List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); - //有作业,下发输送机任务号,覆盖任务号 - if (!mydoJobs.isEmpty()) { - //永远有且只有一条 - mydoJob = mydoJobs.get(0); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), Integer.parseInt(mydoJob.getTraySize()), 1); - if (i == 1) { - mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ); - mydoJobService.updateMydoJob(mydoJob); - log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); - } - } else { - - //请求wms生成入库作业 - HashMap paramMap = new HashMap<>(); - paramMap.put("trayCode", SsjDevice.getTrayCode()); - paramMap.put("size", SsjDevice.getTraySize()); - paramMap.put("floor", "2"); - paramMap.put("entranceId", "G1005"); - paramMap.put("flag", "0"); - AjaxResult ajaxResult = apiService.createInMydoJob(paramMap); - if (ajaxResult.isSuccess()) { - //拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号 - MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); - mydoJob2.setStatus("1"); - mydoJob2.setExecutionPhase(TASK_EP_CREATE); - mydoJob2.setCreateTime(new Date()); - mydoJob2.setTraySize(Convert.toStr(SsjDevice.getTraySize())); - mydoJob2.setFaultFlag("0"); - mydoJob2.setPriority(Long.valueOf(10)); - mydoJobService.insertMydoJob(mydoJob2); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob2.getTaskNo(), Integer.parseInt(mydoJob2.getTraySize()), 1); - if (i == 1) { - mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ); - mydoJobService.updateMydoJob(mydoJob2); - log.info("G1005产线输送机下发任务号成功:{}", mydoJob2.getTaskNo()); - } - } else { - /** - * 1, "二维码内容错误!" - * 2,"该序列号已有作业或库存!" - * 3, "物料不存在!" - * 4, "入口与托盘尺寸对应错误!" - * 5, "超大托盘!" - * 6, "托盘大小不匹配!" - * 7, "巷道入库锁定!" - * 8, "没有可用货位!" - * 9, "创建工艺入库单失败!" - */ - } - } - } - - if (SsjDevice.getRkqq() == 1 && StrUtil.isBlank(SsjDevice.getTrayCode()) && - SsjDevice.getTraySize() != 0 && SsjDevice.getTaskNo() < 1000) { - //查wcs有没作业,有下发给输送机任务号,覆盖任务号 - MydoJob mydoJob = new MydoJob(); - mydoJob.setInOrOut("1"); - mydoJob.setEntranceId("G1005"); - mydoJob.setFlag("1"); - mydoJob.setStatus("1"); - - List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); - if (!mydoJobs.isEmpty()) { - mydoJob = mydoJobs.get(0); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1); - if (i == 1) { - mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ); - mydoJobService.updateMydoJob(mydoJob); - log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); - - } - } else { - //没有,请求错误接口,找作业,返回成功,//拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号,shibai... - HashMap paramMap = new HashMap<>(); - paramMap.put("size", SsjDevice.getTraySize()); - paramMap.put("entranceId", "G1005"); - AjaxResult ajaxResult = apiService.selectMydoJobByNoTrayCode(paramMap); - if (ajaxResult.isSuccess()) { - MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); - if (mydoJob2 != null) { - mydoJob2.setStatus("1"); - mydoJob2.setExecutionPhase("0"); - mydoJob2.setCreateTime(new Date()); - mydoJob2.setTraySize(Convert.toStr(SsjDevice.getTraySize())); - mydoJob2.setFaultFlag("0"); - mydoJob2.setPriority(Long.valueOf(10)); - mydoJobService.insertMydoJob(mydoJob2); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob2.getTaskNo(), 1, 1); - if (i == 1) { - mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ); - mydoJobService.updateMydoJob(mydoJob2); - log.info("G1005产线输送机下发任务号成功:" + mydoJob2.getTaskNo()); - } - } - - } else if (ajaxResult.isError()) { - //超大,给plc下发错误信息,等待人工处理 - //托盘大小对不上,给plc下发错误信息,等待人工处理 - //码不对,给plc下发错误信息,等待人工处理 - } - } - - } - - if (SsjDevice.getDw() == 1 && SsjDevice.getTaskNo() > 1000) { - - //log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}", SsjDevice.getDeviceCode(), "产线收到wcs任务号", SsjDevice.getTrayCode(), SsjDevice.getTraySize()); - //任务号查wcs作业,查巷道,看目标输送线是否空闲,查是否有出库作业,生成agv队列 - MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(SsjDevice.getTaskNo())); - String deviceCode = ""; - if (mydoJob != null) { - - if ("1".equals(mydoJob.getRoadwayId())) { - deviceCode = "L1001"; - } else { - deviceCode = "L1003"; - } - int kx = deviceSsjMap.get(deviceCode).getKx(); - MydoJob mydoJobParam = new MydoJob(); - mydoJobParam.setInOut("2"); - mydoJobParam.setStatus("3"); - mydoJobParam.setExitId(deviceCode); - List outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam); - - - if (outMydoJobList.isEmpty() && kx == 1) { - //查是否有队列,如果有了请求放货修改为允许放货 - AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(mydoJob.getJobId()); - if (agvQueue != null) { - if ("3".equals(mydoJob.getStatus()) && "2".equals(agvQueue.getStatus()) && SsjDevice.getAllowPut() == 1) { - AjaxResult ajaxResult = apiService.continueTask(agvQueue); - if (ajaxResult.isSuccess()) { - log.info("给agv下发允许取货继续任务成功" + agvQueue.getWmsTaskNo()); - agvQueue.setStatus("2"); - agvQueueService.updateAgvQueue(agvQueue); - } - } - if ("0".equals(agvQueue.getStatus())) { - apiService.requestAgvQueue(agvQueue); - } - } else { - if ("1".equals(mydoJob.getStatus())) { - HashMap paramMap = new HashMap<>(); - paramMap.put("trayCode", mydoJob.getTrayCode()); - paramMap.put("taskCode", mydoJob.getJobId()); - //todo 与agv对点 - paramMap.put("startPoint", "G1005"); - paramMap.put("endPoint", deviceCode); - paramMap.put("traySize", mydoJob.getTraySize()); - paramMap.put("wmsTaskNo", mydoJob.getTaskNo()); - AjaxResult ajaxResult = apiService.receiveAgvMoveJob(paramMap); - if (ajaxResult.isSuccess()) { - mydoJob.setStatus("3"); - mydoJob.setExecutionPhase(TASK_EP_AGV); - mydoJobService.updateMydoJob(mydoJob); - } - } - } - } - } - } - if (SsjDevice.getDw() == 1 && SsjDevice.getTaskNo() == 2222 && SsjDevice.getTraySize() == 4) { - AgvQueue agvQueue = agvQueueService.selectAgvQueueByWmsTask(SsjDevice.getTaskNo()); - if (agvQueue != null) { - if ("2".equals(agvQueue.getStatus()) && SsjDevice.getAllowPut() == 1) { - AjaxResult ajaxResult = apiService.continueTask(agvQueue); - if (ajaxResult.isSuccess()) { - log.info("给agv下发允许取货继续任务成功" + agvQueue.getWmsTaskNo()); - agvQueue.setStatus("2"); - agvQueueService.updateAgvQueue(agvQueue); - } - } - if ("0".equals(agvQueue.getStatus())) { - apiService.requestAgvQueue(agvQueue); - } - } else { - HashMap paramMap = new HashMap<>(); - String trayCode = SsjDevice.getTrayCode(); - //String[] split = trayCode.split("\\s+"); - String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String taskCode = "BY" + sdf.format(new Date()); - paramMap.put("trayCode", serial); - paramMap.put("taskCode", taskCode); - //todo 与agv对点 - paramMap.put("startPoint", "G1005"); - paramMap.put("endPoint", ""); - paramMap.put("traySize", "5"); - paramMap.put("wmsTaskNo", "2222"); - AjaxResult ajaxResult = apiService.receiveAgvMoveJob(paramMap); - if (ajaxResult.isSuccess()) { - log.info("G1005超大托盘下发AGV搬运成功!"); - } - } - } - if (SsjDevice.getDw() == 0 && SsjDevice.getTaskNo() > 1000 && SsjDevice.getTraySize() > 0) { - AgvQueue agvQueue = agvQueueService.selectAgvQueueByWmsTask(SsjDevice.getTaskNo()); - if (agvQueue != null) { - if ("4".equals(agvQueue.getStatus())) { - int i = writeToSsjQH("DB802.122", 1); - if (i == 1) { - log.info("G1005产线输送机下发取货完成成功!"); - } - } - } - } - - } - - private static final Map PATTERNS = createPatterns(); - - private static Map createPatterns() { - Map map = new LinkedHashMap<>(); - map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE)); - return map; - } - - private static String findFirst(Pattern pattern, String input) { - if (pattern == null || input == null) return null; - Matcher m = pattern.matcher(input); - return m.find() ? m.group(1) : null; - } -} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java index c1cc542..2e47130 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java @@ -270,7 +270,7 @@ public class PortConvThread implements Runnable { if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<1000){ //,如果有正执行的出库作业退回 MydoJob mydoJobParam = new MydoJob(); - mydoJobParam.setInOut("2"); +// mydoJobParam.setInOut("2"); mydoJobParam.setStatus("3"); mydoJobParam.setExitId(ssjDevice.getDeviceCode()); List outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam);