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 e7c86d0..f4994b1 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 @@ -3,12 +3,10 @@ package com.ruoyi.api.controller; import com.ruoyi.api.domain.wcs2wms.JobParam; import com.ruoyi.api.domain.wcs2wms.ReceiveJob; import com.ruoyi.api.service.IApiService; +import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/wcs2Wms/api") @@ -16,6 +14,8 @@ public class Wcs2WmsController { @Autowired private IApiService apiService; + @Autowired + private IWcsPortService wcsPortService; /** * 接收出库任务 @@ -52,5 +52,15 @@ public class Wcs2WmsController { } + /** + * 查询缓存点 + * @param jobParam + * @return + */ + @PostMapping("/selectWcsPort") + @ResponseBody + public AjaxResult selectWcsPort(@RequestBody JobParam jobParam) { + return apiService.selectWcsPort(jobParam); + } } 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 8d42633..a0026bf 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 @@ -100,6 +100,8 @@ public interface IApiService */ AjaxResult cancelMydoJob(JobParam jobParam); + AjaxResult selectWcsPort(JobParam jobParam); + /** 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 9c31fe3..b97f13f 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 @@ -18,6 +18,8 @@ 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.service.IApiService; +import com.ruoyi.bas.port.domain.WcsPort; +import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.job.domain.MydoJob; @@ -51,6 +53,8 @@ public class ApiServiceImpl implements IApiService { private IAgvQueueService agvQueueService; @Autowired private IMydoJobService mydoJobService; + @Autowired + private IWcsPortService wcsPortService; @@ -169,9 +173,23 @@ public class ApiServiceImpl implements IApiService { log.info("【AGV请求放货】任务号:{}", request.getTaskCode()); break; case "end": + agvQueue.setStatus("7"); agvQueueService.updateAgvQueue(agvQueue); log.info("【AGV任务结束】任务号:{}", request.getTaskCode()); + List wcsPorts = wcsPortService.selectWcsPortList(new WcsPort()); + // 查询agvQueue中的positionCode2的值是否在wcsPorts列表中存在 + boolean isPositionValid = wcsPorts.stream() + .anyMatch(port -> port.getPortCode().equals(agvQueue.getPositionCode2())); + if (isPositionValid) { + agvQueueService.insertHistory(agvQueue.getReqCode()); + agvQueueService.deleteAgvQueueByReqCode(agvQueue.getReqCode()); + WcsPort wcsPort = new WcsPort(); + wcsPort.setPortCode(agvQueue.getPositionCode2()); + wcsPort.setStatus("2"); + wcsPortService.updateWcsPort(wcsPort); + } + break; default: log.info("未知方法"); @@ -311,7 +329,7 @@ public class ApiServiceImpl implements IApiService { */ @Override public GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) { - //todo 请求ctu + GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); genAgvSchedulingTaskRequest.setTaskMode("0"); @@ -391,4 +409,10 @@ public class ApiServiceImpl implements IApiService { return AjaxResult.error(); } } + + @Override + public AjaxResult selectWcsPort(JobParam jobParam) { + List wcsPorts = wcsPortService.selectWcsPortList(new WcsPort()); + return AjaxResult.success(wcsPorts); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java index 328e888..62d4cbb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java @@ -32,11 +32,11 @@ public class TaskStatusCode { /** * 任务执行阶段 AGV */ - public static final String TASK_EP_AGV = "1"; + public static final String TASK_EP_AGV = "2"; /** * 任务执行阶段 入口输送机 */ - public static final String TASK_EP_SSJ = "2"; + public static final String TASK_EP_SSJ = "3"; /** * 任务执行阶段 巷道口 */ @@ -49,6 +49,8 @@ public class TaskStatusCode { /** * 任务执行阶段 回传wms完成 */ - public static final String TASK_EP_WMS_FINISH = "5"; + public static final String TASK_EP_WMS_FINISH = "6"; + + public static final String TASK_EP_LINE_SSJ = "1"; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java index e594c06..a5c7ac0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java @@ -1,6 +1,8 @@ package com.ruoyi.schedule.scheduleTask.ssj.floor2; +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.common.core.domain.AjaxResult; import com.ruoyi.common.utils.spring.SpringUtils; @@ -19,6 +21,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; +import static com.ruoyi.common.TaskStatusCode.TASK_EP_LINE_SSJ; import static com.ruoyi.common.TaskStatusCode.TASK_EP_SSJ; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj; @@ -44,6 +47,9 @@ public class Floor2InOutSsjThread implements Runnable { ssjCodes.add("L1011"); ssjCodes.add("L1012"); ssjCodeList.put("inout", ssjCodes); + ssjCodes.add("L1001"); + ssjCodes.add("L1003"); + ssjCodeList.put("sm", ssjCodes); apiService = SpringUtils.getBean(IApiService.class); agvQueueService = SpringUtils.getBean(IAgvQueueService.class); mydoJobService = SpringUtils.getBean(IMydoJobService.class); @@ -59,7 +65,7 @@ public class Floor2InOutSsjThread implements Runnable { switch (type) { case "inout": - //生产线入库 + //入库口 for (String ssjCode : ssjCodeList.get(type)) { try { if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { @@ -73,6 +79,17 @@ public class Floor2InOutSsjThread implements Runnable { } break; + case "sm": + //入库扫码 + for (String ssjCode : ssjCodeList.get(type)) { + try { + if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { + inDispatch1(PlcSsjRead.deviceSsjMap.get(ssjCode)); + } else { + log.error("设备不存在 ssjCode{}", ssjCode); + } + } catch (RuntimeException e) {} + } } } try { @@ -90,16 +107,17 @@ public class Floor2InOutSsjThread implements Runnable { if (inSsjDevice.getKx() == 1) { AgvQueue agvQueue = new AgvQueue(); agvQueue.setStatus("5");//请求放货 + //todo 与agv对点 agvQueue.setPositionCode2(inSsjDevice.getDeviceCode()); List agvQueues = agvQueueService.selectAgvQueueList(agvQueue); - //不允许放货 - if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0) { - //如果有这个输送机口的agv队列并请求放货(状态为6) - int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(agvQueues.get(0).getCtnrType()),1); - if (i == 1) { - log.info(inSsjDevice.getDeviceCode() + "输送机下发请求放货成功"); - } - } + //不允许放货 等着 +// if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0) { + //如果有这个输送机口的agv队列并请求放货(状态为6) +// int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(agvQueues.get(0).getCtnrType()),1); +// if (i == 1) { +// log.info(inSsjDevice.getDeviceCode() + "输送机下发请求放货异常成功"); +// } +// } //允许放货 if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 1) { log.info("设备:{} 位置:{} 任务号:{} 请求放货成功", inSsjDevice.getDeviceCode(), "输送线", agvQueues.get(0).getTaskCode()); @@ -115,6 +133,7 @@ public class Floor2InOutSsjThread implements Runnable { if (inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo() == 0) { AgvQueue agvQueue = new AgvQueue(); agvQueue.setStatus("7"); //end + //todo 与agv对点 agvQueue.setPositionCode2(inSsjDevice.getDeviceCode()); List agvQueues = agvQueueService.selectAgvQueueList(agvQueue); if (!agvQueues.isEmpty()) { @@ -148,6 +167,73 @@ public class Floor2InOutSsjThread implements Runnable { } } + public void inDispatch1(DeviceSsj ssjDevice) { + //有入库请求就肯定是电气的任务号的作业,如果有正执行的出库作业退回 + if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<=1000){ + + MydoJob mydoJobParam = new MydoJob(); + mydoJobParam.setInOut("2"); + mydoJobParam.setStatus("3"); + mydoJobParam.setExitId(ssjDevice.getDeviceCode()); + List outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam); + if(!outMydoJobList.isEmpty()){ + //todo 去向不明朗 + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"0",2,2); + if (i == 1) { + log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" ); + } + } + + + MydoJob mydoJob = new MydoJob(); + mydoJob.setInOrOut("1"); +// mydoJob.setStatus("1"); + mydoJob.setEntranceId(ssjDevice.getDeviceCode()); +// mydoJob.setExecutionPhase("0"); + List mydoJobs = mydoJobService.selectMydoJobList(mydoJob); + if(!mydoJobs.isEmpty()){ + MydoJob mydoJob1 = mydoJobs.get(0); + if(mydoJob1.getStatus().equals("1") && mydoJob1.getExecutionPhase().equals("0")){ + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob1.getTaskNo(),1,1); + if (i == 1) { + mydoJob1.setExecutionPhase(TASK_EP_SSJ); + mydoJob1.setStatus("3"); + mydoJobService.updateMydoJob(mydoJob1); + log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob1.getTaskNo()); + } + } + + }else{ + HashMap map = new HashMap<>(); + map.put("trayCode",ssjDevice.getTrayCode()); + map.put("entranceId",ssjDevice.getDeviceCode()); + AjaxResult ajaxResult = apiService.selectMydoJobByTrayCodeAndEntranceId(map); + if(ajaxResult.isSuccess()){ + MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class) ; + mydoJob2.setStatus("1"); + mydoJob2.setExecutionPhase("0"); + mydoJob2.setCreateTime(new Date()); + mydoJobService.insertMydoJob(mydoJob2); + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); + if (i == 1) { + mydoJob2.setExecutionPhase(TASK_EP_SSJ); + mydoJobService.updateMydoJob(mydoJob2); + log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob2.getTaskNo()); + } + }else{ + //todo 去向不明朗 + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"0",2,2); + if (i == 1) { + log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" ); + } + } + + } + + + } + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java index 458c523..03ccee5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java @@ -4,6 +4,8 @@ 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.domain.WcsPort; +import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.domain.SendData; import com.ruoyi.common.utils.spring.SpringUtils; @@ -22,6 +24,7 @@ import java.util.HashMap; import java.util.List; import static com.ruoyi.common.TaskStatusCode.TASK_EP_AGV; +import static com.ruoyi.common.TaskStatusCode.TASK_EP_LINE_SSJ; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.deviceSsjMap; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj; @@ -36,6 +39,7 @@ public class LineSsjThread implements Runnable { private IApiService apiService; private IAgvQueueService agvQueueService; private IMydoJobService mydoJobService; + private IWcsPortService wcsPortService; public boolean isRun = true; @@ -48,6 +52,7 @@ public class LineSsjThread implements Runnable { apiService = SpringUtils.getBean(IApiService.class); agvQueueService = SpringUtils.getBean(IAgvQueueService.class); mydoJobService = SpringUtils.getBean(IMydoJobService.class); + wcsPortService = SpringUtils.getBean(IWcsPortService.class); log.info("初始化服务 {},{}", apiService, agvQueueService); } @@ -75,6 +80,7 @@ public class LineSsjThread implements Runnable { break; } } + try { Thread.sleep(1500); } catch (InterruptedException e) { @@ -93,22 +99,23 @@ public class LineSsjThread implements Runnable { //查作业,入如果已经有了,直接下发输送线 MydoJob mydoJob = new MydoJob(); mydoJob.setInOrOut("1"); - mydoJob.setStatus("1"); +// mydoJob.setStatus("1"); mydoJob.setEntranceId("G1005"); - mydoJob.setExecutionPhase("0"); +// mydoJob.setExecutionPhase("0"); 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_AGV); - mydoJobService.updateMydoJob(mydoJob); - log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); + if(mydoJob.getStatus().equals("1")&& mydoJob.getExecutionPhase().equals("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 { //请求wms生成入库作业 @@ -124,11 +131,10 @@ public class LineSsjThread implements Runnable { mydoJob2.setStatus("1"); mydoJob2.setExecutionPhase("0"); mydoJob2.setCreateTime(new Date()); - mydoJobService.insertMydoJob(mydoJob2); int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); if (i == 1) { - mydoJob2.setExecutionPhase(TASK_EP_AGV); + mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ); mydoJobService.updateMydoJob(mydoJob2); log.info("G1005产线输送机下发任务号成功:{}" , mydoJob2.getTaskNo()); } @@ -140,6 +146,12 @@ public class LineSsjThread implements Runnable { if (i == 1) { log.info("G1005产线输送机下发错误信息成功"); } + //7是报工单失败,不处理 + if(!"7".equals(Integer.parseInt(ajaxResult.get("code").toString()))){ + createMoveToPort(SsjDevice); + + } + } @@ -153,17 +165,19 @@ public class LineSsjThread implements Runnable { //查wcs有没作业,有下发给输送机任务号,覆盖任务号 MydoJob mydoJob = new MydoJob(); mydoJob.setInOrOut("1"); - mydoJob.setStatus("1"); +// mydoJob.setStatus("1"); mydoJob.setEntranceId("G1005"); - mydoJob.setExecutionPhase("0"); +// mydoJob.setExecutionPhase("0"); 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_AGV); - mydoJobService.updateMydoJob(mydoJob); - log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); + if(mydoJob.getStatus().equals("1") && mydoJob.getExecutionPhase().equals("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... @@ -175,7 +189,7 @@ public class LineSsjThread implements Runnable { mydoJobService.insertMydoJob(mydoJob2); int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); if (i == 1) { - mydoJob2.setExecutionPhase(TASK_EP_AGV); + mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ); mydoJobService.updateMydoJob(mydoJob2); log.info("G1005产线输送机下发任务号成功:" + mydoJob2.getTaskNo()); } @@ -187,6 +201,10 @@ public class LineSsjThread implements Runnable { if (i == 1) { log.info("G1005产线输送机下发错误信息成功"); } + //7是报工单失败,不处理 + if(!"7".equals(Integer.parseInt(ajaxResult.get("code").toString()))){ + createMoveToPort(SsjDevice); + } } } @@ -201,9 +219,9 @@ public class LineSsjThread implements Runnable { String deviceCode = ""; if (mydoJob != null) { if ("1".equals(mydoJob.getRoadwayId())) { - deviceCode = "L1011"; + deviceCode = "L1001"; } else { - deviceCode = "L1012"; + deviceCode = "L1003"; } int kx = deviceSsjMap.get(deviceCode).getKx(); MydoJob mydoJobParam = new MydoJob(); @@ -228,8 +246,9 @@ public class LineSsjThread implements Runnable { }else { if ("1".equals(mydoJob.getStatus())){ HashMap paramMap = new HashMap<>(); - paramMap.put("trayCode", mydoJob.getTrayCode()); +// paramMap.put("trayCode", mydoJob.getTrayCode()); paramMap.put("taskNo", mydoJob.getJobId()); + //todo 与agv对点 paramMap.put("startPoint", "G1005"); paramMap.put("endPoint", deviceCode); paramMap.put("traySize",String.valueOf(SsjDevice.getTraySize())); @@ -253,6 +272,40 @@ public class LineSsjThread implements Runnable { } + void createMoveToPort(DeviceSsj SsjDevice){ + WcsPort wcsPort = new WcsPort(); + wcsPort.setStatus("1"); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPort); + List agvQueues = agvQueueService.selectAgvQueueList(new AgvQueue()); + //检查agvQueues中是否有任何一个positionCode2是wcsPorts中的portCode + boolean hasMatchingPort = agvQueues.stream() + .map(AgvQueue::getPositionCode2) + .anyMatch(positionCode2 -> wcsPorts.stream() + .map(WcsPort::getPortCode) + .anyMatch(portCode -> portCode.equals(positionCode2))); + + if(hasMatchingPort==false){ + + if(!wcsPorts.isEmpty()){ + HashMap map = new HashMap<>(); +// map.put("trayCode", mydoJob.getTrayCode()); + map.put("taskNo", StrUtil.uuid()); + //todo 与agv对点 + map.put("startPoint", "G1005"); + map.put("endPoint", wcsPorts.get(0).getPortCode()); + map.put("traySize",String.valueOf(SsjDevice.getTraySize())); +// map.put("wmsTaskNo", mydoJob.getTaskNo()); + AjaxResult ajaxResult1 = apiService.receiveAgvMoveJob(map); + if(ajaxResult1.isSuccess()){ + log.info("G1005产线生成作业失败,AGV下发搬运至缓存点任务成功:{}" , ajaxResult1.get("data")); + + } + } + } + } + + + diff --git a/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml b/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml index f8f8ac6..0008e07 100644 --- a/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml @@ -79,7 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" spare3 = #{spare3}, status = #{status}, - where id = #{id} + where port_code = #{portCode}