refactor(schedule): 重构调度线程任务初始化逻辑

- 移除BeanUtil等无关注入工具类
- 使用SpringUtils手动获取依赖服务实例
- 调整设备读取逻辑,从连接判断改为直接加载列表
- 注释掉部分冗余或暂时不用的启动线程代码
- 新增对TSJ、CDZ等设备的支持与初始化配置
- 更新XML映射文件中的SQL查询条件及格式化内容
- 优化SRGV任务中断处理逻辑,增加break语句防止空循环
- 暂时注释实际下发指令方法以避免执行真实操作
This commit is contained in:
liuhanqing
2025-12-02 16:54:26 +08:00
parent 7e5b17b3e7
commit bd77c1e2b4
8 changed files with 83 additions and 30 deletions

View File

@@ -41,6 +41,11 @@ public class RoadCacheServiceImpl implements RoadCacheService {
for (WcsSrgvMap wcsSrgvMap : wcsSrgvMaps) { for (WcsSrgvMap wcsSrgvMap : wcsSrgvMaps) {
maps.put(wcsSrgvMap.getSiteId(), wcsSrgvMap); maps.put(wcsSrgvMap.getSiteId(), wcsSrgvMap);
} }
param.setAxy("7,7");
List<WcsSrgvMap> tsjMap = wcsSrgvMapMapper.selectWcsSrgvMapList(param);
for (WcsSrgvMap wcsSrgvMap : tsjMap) {
maps.put("tsj",wcsSrgvMap);
}
return maps; return maps;
} }

View File

@@ -11,9 +11,12 @@ import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead; import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead;
import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
import com.ruoyi.schedule.scheduleTask.cdz.CdzThread;
import com.ruoyi.schedule.scheduleTask.ddj.impl.Ddj1Thread; import com.ruoyi.schedule.scheduleTask.ddj.impl.Ddj1Thread;
import com.ruoyi.schedule.scheduleTask.monit.MonitoringThread; import com.ruoyi.schedule.scheduleTask.monit.MonitoringThread;
import com.ruoyi.schedule.scheduleTask.srgv.impl.SRgv1Thread;
import com.ruoyi.schedule.scheduleTask.ssj.SsjThread; import com.ruoyi.schedule.scheduleTask.ssj.SsjThread;
import com.ruoyi.schedule.scheduleTask.tsj.TsjThread;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -34,6 +37,9 @@ public class ScheduleThread {
public CustomThread<MonitoringThread> monitoringCustomThread; public CustomThread<MonitoringThread> monitoringCustomThread;
public CustomThread<SsjThread> ssjThreadCustomThread; public CustomThread<SsjThread> ssjThreadCustomThread;
public CustomThread<SRgv1Thread> sRgvThreadCustomThread;
public CustomThread<TsjThread> tsjThreadCustomThread;
public CustomThread<CdzThread> cdzThreadCustomThread;
// public CustomThread<Ddj1Thread> ddj1CustomThread; // public CustomThread<Ddj1Thread> ddj1CustomThread;
/*public CustomThread<Ddj2Thread> ddj2CustomThread; /*public CustomThread<Ddj2Thread> ddj2CustomThread;
public CustomThread<Ddj3Thread> ddj3CustomThread; public CustomThread<Ddj3Thread> ddj3CustomThread;
@@ -43,8 +49,6 @@ public class ScheduleThread {
@Autowired @Autowired
private IDeviceSsjService deviceSsjService; private IDeviceSsjService deviceSsjService;
@Autowired @Autowired
private IMsgDdjService msgDdjService;
@Autowired
private IDeviceSrgvService deviceSrgvService; private IDeviceSrgvService deviceSrgvService;
private boolean isRun = false; private boolean isRun = false;
@@ -71,6 +75,12 @@ public class ScheduleThread {
monitoringCustomThread = new CustomThread<MonitoringThread>(new Thread(monitoringThread), monitoringThread); monitoringCustomThread = new CustomThread<MonitoringThread>(new Thread(monitoringThread), monitoringThread);
SsjThread ssjThread=new SsjThread(); SsjThread ssjThread=new SsjThread();
ssjThreadCustomThread=new CustomThread<SsjThread>(new Thread(ssjThread),ssjThread); ssjThreadCustomThread=new CustomThread<SsjThread>(new Thread(ssjThread),ssjThread);
SRgv1Thread srgvThread=new SRgv1Thread();
sRgvThreadCustomThread=new CustomThread<>(new Thread(srgvThread),srgvThread);
TsjThread tsjThread=new TsjThread();
tsjThreadCustomThread=new CustomThread<>(new Thread(tsjThread),tsjThread);
CdzThread cdzThread = new CdzThread();
cdzThreadCustomThread=new CustomThread<>(new Thread(cdzThread),cdzThread);
// Ddj1Thread ddj1Thread = new Ddj1Thread(); // Ddj1Thread ddj1Thread = new Ddj1Thread();
// ddj1CustomThread = new CustomThread<>(new Thread(ddj1Thread), ddj1Thread); // ddj1CustomThread = new CustomThread<>(new Thread(ddj1Thread), ddj1Thread);
/*Ddj2Thread ddj2Thread = new Ddj2Thread(); /*Ddj2Thread ddj2Thread = new Ddj2Thread();
@@ -135,8 +145,9 @@ public class ScheduleThread {
public void startAllThread() { public void startAllThread() {
plcSsjReadCustomThread.getThread().start(); plcSsjReadCustomThread.getThread().start();
plcSrgvReadCustomThread1.getThread().start(); plcSrgvReadCustomThread1.getThread().start();
plcSrgvReadCustomThread2.getThread().start(); //plcSrgvReadCustomThread2.getThread().start();
plcSrgvReadCustomThread3.getThread().start(); //plcSrgvReadCustomThread3.getThread().start();
isRun = true; isRun = true;
} }
@@ -147,6 +158,9 @@ public class ScheduleThread {
public void startAllThread2() { public void startAllThread2() {
monitoringCustomThread.thread.start(); monitoringCustomThread.thread.start();
ssjThreadCustomThread.thread.start(); ssjThreadCustomThread.thread.start();
//tsjThreadCustomThread.thread.start();
sRgvThreadCustomThread.thread.start();
//cdzThreadCustomThread.thread.start();
// ddj1CustomThread.thread.start(); // ddj1CustomThread.thread.start();
/*ddj2CustomThread.thread.start(); /*ddj2CustomThread.thread.start();
ddj3CustomThread.thread.start(); ddj3CustomThread.thread.start();

View File

@@ -9,9 +9,12 @@ import HslCommunication.ModBus.ModbusTcpNet;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.ruoyi.common.domain.HslRead; import com.ruoyi.common.domain.HslRead;
import com.ruoyi.common.domain.PlcConnectInfo; import com.ruoyi.common.domain.PlcConnectInfo;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.srgv.domain.DeviceSrgv;
import com.ruoyi.device.srgv.service.IDeviceSrgvService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@Slf4j @Slf4j
@@ -55,17 +58,25 @@ public class PlcSrgvRead implements Runnable {
public void run() { public void run() {
while (isRun) { while (isRun) {
try { try {
if (IsConnect()) { /*if (IsConnect()) {
if (deviceSrgv != null) { *//*if (deviceSrgv != null) {
readSrgvPlc(deviceSrgv); //readSrgvPlc(deviceSrgv);
} }*//*
Thread.sleep(1000);
} else { } else {
reConnect(); reConnect();
}*/
IDeviceSrgvService deviceSrgvService = SpringUtils.getBean(IDeviceSrgvService.class);
List<DeviceSrgv> srgvs=deviceSrgvService.selectDeviceSrgvList(new DeviceSrgv());
ConcurrentHashMap<String, DeviceSrgv> srgvList = new ConcurrentHashMap<>();
for(DeviceSrgv srgv:srgvs){
srgvList.put(srgv.getDeviceId().toString(),srgv);
} }
PlcSrgvRead.deviceSrgvMap=srgvList;
Thread.sleep(1000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
// 捕获中断异常,退出循环 // 捕获中断异常,退出循环
Thread.currentThread().interrupt(); // 重新设置中断标志 Thread.currentThread().interrupt(); // 重新设置中断标志

View File

@@ -7,15 +7,18 @@ import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net; import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.ruoyi.common.domain.SendData; import com.ruoyi.common.domain.SendData;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.ddj.domain.MsgDdj; import com.ruoyi.device.ddj.domain.MsgDdj;
import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.common.domain.HslRead; import com.ruoyi.common.domain.HslRead;
import com.ruoyi.common.domain.PlcConnectInfo; import com.ruoyi.common.domain.PlcConnectInfo;
import com.ruoyi.device.ssj.service.impl.DeviceSsjServiceImpl;
import com.ruoyi.schedule.plcRead.util.ParseUtil; import com.ruoyi.schedule.plcRead.util.ParseUtil;
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 java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@Slf4j @Slf4j
@@ -48,10 +51,10 @@ public class PlcSsjRead implements Runnable {
public void run() { public void run() {
while (isRun) { while (isRun) {
try { try {
if (IsConnect()) { /*if (IsConnect()) {
int step = 20; int step = 20;
int baseOffset = 0; int baseOffset = 0;
for (String ssjCode : deviceSsjMap.keySet()) { *//*for (String ssjCode : deviceSsjMap.keySet()) {
DeviceSsj ssjDevice = deviceSsjMap.get(ssjCode); DeviceSsj ssjDevice = deviceSsjMap.get(ssjCode);
switch (ssjDevice.getType()) { switch (ssjDevice.getType()) {
case "1": case "1":
@@ -64,11 +67,19 @@ public class PlcSsjRead implements Runnable {
readPlcOtherSsj(ssjDevice); readPlcOtherSsj(ssjDevice);
break; break;
} }
} }*//*
Thread.sleep(1000);
} else { } else {
reConnect(); reConnect();
}*/
DeviceSsjServiceImpl deviceSsjService = SpringUtils.getBean(DeviceSsjServiceImpl.class);
List<DeviceSsj> deviceSsjs = deviceSsjService.selectDeviceSsjList(new DeviceSsj());
ConcurrentHashMap<String, DeviceSsj> ssjList = new ConcurrentHashMap<>();
for (DeviceSsj deviceSsj : deviceSsjs) {
ssjList.put(deviceSsj.getDeviceCode(), deviceSsj);
} }
PlcSsjRead.deviceSsjMap = ssjList;
Thread.sleep(1000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
// 捕获中断异常,退出循环 // 捕获中断异常,退出循环
Thread.currentThread().interrupt(); // 重新设置中断标志 Thread.currentThread().interrupt(); // 重新设置中断标志

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUnit;
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;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.cdz.domain.DeviceCdz; import com.ruoyi.device.cdz.domain.DeviceCdz;
import com.ruoyi.device.cdz.service.IDeviceCdzService; import com.ruoyi.device.cdz.service.IDeviceCdzService;
import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.srgv.domain.DeviceSrgv;
@@ -36,7 +37,10 @@ public class CdzThread implements Runnable {
private IWcsSrgvQueueService wcsSrgvQueueService; private IWcsSrgvQueueService wcsSrgvQueueService;
public void init() { public void init() {
chargingJobService = SpringUtils.getBean(ISrgvChargingJobService.class);
deviceCdzService = SpringUtils.getBean(IDeviceCdzService.class);
deviceSrgvService = SpringUtils.getBean(IDeviceSrgvService.class);
wcsSrgvQueueService = SpringUtils.getBean(IWcsSrgvQueueService.class);
} }
@Override @Override

View File

@@ -1,6 +1,5 @@
package com.ruoyi.schedule.scheduleTask.srgv; package com.ruoyi.schedule.scheduleTask.srgv;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
@@ -10,13 +9,13 @@ import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService; import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService;
import com.ruoyi.bas.srgvmap.service.RoadCacheService; import com.ruoyi.bas.srgvmap.service.RoadCacheService;
import com.ruoyi.common.domain.SendData2; import com.ruoyi.common.domain.SendData2;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.srgv.domain.DeviceSrgv;
import com.ruoyi.job.charg.domain.SrgvChargingJob; import com.ruoyi.job.charg.domain.SrgvChargingJob;
import com.ruoyi.job.charg.service.ISrgvChargingJobService; import com.ruoyi.job.charg.service.ISrgvChargingJobService;
import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue; import com.ruoyi.queue.srgv.domain.WcsSrgvQueue;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueueFinish;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService;
import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead;
@@ -59,6 +58,14 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
sRgvCodes.add("2"); sRgvCodes.add("2");
sRgvCodes.add("3"); sRgvCodes.add("3");
sRgvCodeList.put("srgv", sRgvCodes); sRgvCodeList.put("srgv", sRgvCodes);
wcsSagvQueueMapper = SpringUtils.getBean(IWcsSrgvQueueService.class);
wcsSagvQueueFinishMapper = SpringUtils.getBean(IWcsSrgvQueueFinishService.class);
wcsPortService = SpringUtils.getBean(IWcsPortService.class);
srgvChargingJobMapper = SpringUtils.getBean(ISrgvChargingJobService.class);
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
wcsSrgvMapService = SpringUtils.getBean(IWcsSrgvMapService.class);
roadCacheService = SpringUtils.getBean(RoadCacheService.class);
} }
@Override @Override
@@ -209,6 +216,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString()); WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) { if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) {
deviceSrgv = deviceSrgv1; deviceSrgv = deviceSrgv1;
break;
} }
} }
} }
@@ -380,8 +388,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
//筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象 //筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象
List<DeviceSrgv> sameSiteDevices = deviceSrgvMap.values().stream() List<DeviceSrgv> sameSiteDevices = deviceSrgvMap.values().stream()
.filter(d -> d.getWorkMode() == 4 .filter(d -> d.getWorkMode() == 4
&& d.getStatus() == 1 && d.getStatus() == 1
&& d.getCurrSite().equals(cargoPickSite)) && d.getCurrSite().equals(cargoPickSite))
.collect(Collectors.toList()); .collect(Collectors.toList());
if(!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){ if(!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){
@@ -642,7 +650,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
sendDataList.add(flag); sendDataList.add(flag);
//下发数据 //下发数据
boolean b = sendCarTask(sendDataList, deviceSrgv); boolean b = true;// sendCarTask(sendDataList, deviceSrgv);
if (b) { if (b) {
wcsSrgvQueue.setPathInfo(pathBuilder.toString()); wcsSrgvQueue.setPathInfo(pathBuilder.toString());
wcsSrgvQueue.setTrunPath(turnBuilder.toString()); wcsSrgvQueue.setTrunPath(turnBuilder.toString());

View File

@@ -11,6 +11,7 @@ import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
import com.ruoyi.bas.port.domain.WcsPort; import com.ruoyi.bas.port.domain.WcsPort;
import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.bas.port.service.IWcsPortService;
import com.ruoyi.common.domain.SendData; import com.ruoyi.common.domain.SendData;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.srgv.domain.DeviceSrgv;
import com.ruoyi.device.tsj.domain.DeviceTsj; import com.ruoyi.device.tsj.domain.DeviceTsj;
import com.ruoyi.device.tsj.service.IDeviceTsjService; import com.ruoyi.device.tsj.service.IDeviceTsjService;
@@ -35,17 +36,15 @@ public class TsjThread implements Runnable {
private ITsjDeviceExecutionQueueService tsjDeviceExecutionQueueService; private ITsjDeviceExecutionQueueService tsjDeviceExecutionQueueService;
private ITsjDeviceExecutionQueueFinishService tsjDeviceExecutionQueueFinishService; private ITsjDeviceExecutionQueueFinishService tsjDeviceExecutionQueueFinishService;
private IDeviceTsjService deviceTsjService;
private IMydoJobService mydoJobService;
private IWcsPortService wcsPortService; private IWcsPortService wcsPortService;
private IBasCargoSpaceService basCargoSpaceService;
private IWcsSrgvQueueService wcsSrgvQueueService; private IWcsSrgvQueueService wcsSrgvQueueService;
public void init() { public void init() {
tsjDeviceExecutionQueueService = SpringUtils.getBean(ITsjDeviceExecutionQueueService.class);
tsjDeviceExecutionQueueFinishService = SpringUtils.getBean(ITsjDeviceExecutionQueueFinishService.class);
wcsPortService = SpringUtils.getBean(IWcsPortService.class);
wcsSrgvQueueService = SpringUtils.getBean(IWcsSrgvQueueService.class);
} }
@Override @Override

View File

@@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.bas.srgvmap.mapper.WcsSrgvMapMapper"> <mapper namespace="com.ruoyi.bas.srgvmap.mapper.WcsSrgvMapMapper">
<resultMap type="WcsSrgvMap" id="WcsSrgvMapResult"> <resultMap type="WcsSrgvMap" id="WcsSrgvMapResult">
<result property="guid" column="guid" /> <result property="guid" column="guid" />
<result property="x" column="x" /> <result property="x" column="x" />
@@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectWcsSrgvMapList" parameterType="WcsSrgvMap" resultMap="WcsSrgvMapResult"> <select id="selectWcsSrgvMapList" parameterType="WcsSrgvMap" resultMap="WcsSrgvMapResult">
<include refid="selectWcsSrgvMapVo"/> <include refid="selectWcsSrgvMapVo"/>
<where> <where>
<if test="guid != null and guid != ''"> and guid = #{guid}</if> <if test="guid != null and guid != ''"> and guid = #{guid}</if>
<if test="x != null "> and x = #{x}</if> <if test="x != null "> and x = #{x}</if>
<if test="y != null "> and y = #{y}</if> <if test="y != null "> and y = #{y}</if>
@@ -57,9 +57,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="plcLayer != null "> and plc_layer = #{plcLayer}</if> <if test="plcLayer != null "> and plc_layer = #{plcLayer}</if>
<if test="warehouse != null and warehouse != ''"> and warehouse = #{warehouse}</if> <if test="warehouse != null and warehouse != ''"> and warehouse = #{warehouse}</if>
<if test="spaceArea != null and spaceArea != ''"> and space_area = #{spaceArea}</if> <if test="spaceArea != null and spaceArea != ''"> and space_area = #{spaceArea}</if>
<if test="remark != null and remark != ''"> and remark = #{remark}</if>
</where> </where>
</select> </select>
<select id="selectWcsSrgvMapByGuid" parameterType="String" resultMap="WcsSrgvMapResult"> <select id="selectWcsSrgvMapByGuid" parameterType="String" resultMap="WcsSrgvMapResult">
<include refid="selectWcsSrgvMapVo"/> <include refid="selectWcsSrgvMapVo"/>
where guid = #{guid} where guid = #{guid}
@@ -155,9 +156,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete> </delete>
<delete id="deleteWcsSrgvMapByGuids" parameterType="String"> <delete id="deleteWcsSrgvMapByGuids" parameterType="String">
delete from wcs_srgv_map where guid in delete from wcs_srgv_map where guid in
<foreach item="guid" collection="array" open="(" separator="," close=")"> <foreach item="guid" collection="array" open="(" separator="," close=")">
#{guid} #{guid}
</foreach> </foreach>
</delete> </delete>
</mapper> </mapper>