| | |
| | | |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import com.ruoyi.sy.domain.ArdTankWall; |
| | | import com.ruoyi.sy.service.IArdTankWallService; |
| | | import com.ruoyi.utils.result.Results; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | public class ArdTankLockController extends BaseController { |
| | | @Autowired |
| | | private IArdTankLockService ardTankLockService; |
| | | |
| | | @Autowired |
| | | private IArdTankWallService ardTankWallService; |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£éå表 |
| | |
| | | /** |
| | | * æ°å¢çµç£é |
| | | */ |
| | | @ApiOperation("æ°å¢çµç£é") |
| | | /*@ApiOperation("æ°å¢çµç£é") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:add')") |
| | | @Log(title = "çµç£é" , businessType = BusinessType.INSERT) |
| | | @PostMapping |
| | | public AjaxResult add(@RequestBody ArdTankLock ardTankLock) { |
| | | return toAjax(ardTankLockService.insertArdTankLock(ardTankLock)); |
| | | }*/ |
| | | @ApiOperation("æ°å¢çµç£é") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:add')") |
| | | @Log(title = "çµç£é" , businessType = BusinessType.INSERT) |
| | | @PostMapping |
| | | public AjaxResult add(@RequestBody Map<String,Object> para) { |
| | | return toAjax(ardTankLockService.insertArdTankLock(para)); |
| | | } |
| | | |
| | | /** |
| | |
| | | Results result = ardTankLockService.getAll(userId); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢çµåå´æ |
| | | */ |
| | | @ApiOperation("æ°å¢çµåå´æ ") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:addWall')") |
| | | @Log(title = "çµç£é" , businessType = BusinessType.INSERT) |
| | | @PostMapping("/addWall") |
| | | public AjaxResult addWall(@RequestBody ArdTankWall ardTankWall) { |
| | | return toAjax(ardTankWallService.insertArdTankWall(ardTankWall)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹çµåå´æ |
| | | */ |
| | | @ApiOperation("ä¿®æ¹çµåå´æ ") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:updateWall')") |
| | | @Log(title = "çµç£é" , businessType = BusinessType.UPDATE) |
| | | @PutMapping("/updateWall") |
| | | public AjaxResult updateWall(@RequestBody ArdTankWall ardTankWall) { |
| | | return toAjax(ardTankWallService.updateArdTankWall(ardTankWall)); |
| | | } |
| | | |
| | | /** |
| | | * å é¤çµåå´æ |
| | | */ |
| | | @ApiOperation("å é¤åä¸çµåå´æ ") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:removeWall')") |
| | | @Log(title = "çµç£é" , businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/removeWall/{id}") |
| | | public AjaxResult removeWall(@PathVariable String id) { |
| | | return toAjax(ardTankWallService.deleteArdTankWallById(id)); |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢å
¨é¨çµåå´æ ") |
| | | @PreAuthorize("@ss.hasPermi('sy:lock:getAllArdTankWall')") |
| | | @GetMapping("/getAllArdTankWall") |
| | | public Results getAllArdTankWall() { |
| | | List<ArdTankWall> result = ardTankWallService.getAllArdTankWall(); |
| | | return Results.succeed(result); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.domain; |
| | | |
| | | import org.apache.commons.lang3.builder.ToStringBuilder; |
| | | import org.apache.commons.lang3.builder.ToStringStyle; |
| | | import com.ruoyi.common.annotation.Excel; |
| | | import com.ruoyi.common.core.domain.BaseEntity; |
| | | |
| | | /** |
| | | * çµç£éçµåå´æ 对象 ard_tank_wall |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-01 |
| | | */ |
| | | public class ArdTankWall extends BaseEntity |
| | | { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** ä¸»é® */ |
| | | private String id; |
| | | |
| | | /** çµåå´æ åç§° */ |
| | | @Excel(name = "çµåå´æ åç§°") |
| | | private String wallName; |
| | | |
| | | /** ç»åº¦ */ |
| | | @Excel(name = "ç»åº¦") |
| | | private Double longitude; |
| | | |
| | | /** 纬度 */ |
| | | @Excel(name = "纬度") |
| | | private Double latitude; |
| | | |
| | | /** è·ç¦» */ |
| | | @Excel(name = "è·ç¦»") |
| | | private Integer distance; |
| | | |
| | | public void setId(String id) |
| | | { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getId() |
| | | { |
| | | return id; |
| | | } |
| | | public void setWallName(String wallName) |
| | | { |
| | | this.wallName = wallName; |
| | | } |
| | | |
| | | public String getWallName() |
| | | { |
| | | return wallName; |
| | | } |
| | | public void setLongitude(Double longitude) |
| | | { |
| | | this.longitude = longitude; |
| | | } |
| | | |
| | | public Double getLongitude() |
| | | { |
| | | return longitude; |
| | | } |
| | | public void setLatitude(Double latitude) |
| | | { |
| | | this.latitude = latitude; |
| | | } |
| | | |
| | | public Double getLatitude() |
| | | { |
| | | return latitude; |
| | | } |
| | | public void setDistance(Integer distance) |
| | | { |
| | | this.distance = distance; |
| | | } |
| | | |
| | | public Integer getDistance() |
| | | { |
| | | return distance; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) |
| | | .append("id", getId()) |
| | | .append("wallName", getWallName()) |
| | | .append("longitude", getLongitude()) |
| | | .append("latitude", getLatitude()) |
| | | .append("distance", getDistance()) |
| | | .toString(); |
| | | } |
| | | } |
| | |
| | | |
| | | import java.util.List; |
| | | import com.ruoyi.sy.domain.ArdTankLock; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * çµç£éMapperæ¥å£ |
| | |
| | | public int deleteArdTankLockByIds(String[] ids); |
| | | |
| | | public List<ArdTankLock> getAll(); |
| | | |
| | | public int insertArdTankLocks(@Param("ardTankLocks") List<ArdTankLock> ardTankLocks); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.mapper; |
| | | |
| | | import java.util.List; |
| | | import com.ruoyi.sy.domain.ArdTankWall; |
| | | |
| | | /** |
| | | * çµç£éçµåå´æ Mapperæ¥å£ |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-01 |
| | | */ |
| | | public interface ArdTankWallMapper |
| | | { |
| | | /** |
| | | * æ¥è¯¢çµç£éçµåå´æ |
| | | * |
| | | * @param id çµç£éçµåå´æ ä¸»é® |
| | | * @return çµç£éçµåå´æ |
| | | */ |
| | | public ArdTankWall selectArdTankWallById(String id); |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£éçµåå´æ å表 |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return çµç£éçµåå´æ éå |
| | | */ |
| | | public List<ArdTankWall> selectArdTankWallList(ArdTankWall ardTankWall); |
| | | |
| | | /** |
| | | * æ°å¢çµç£éçµåå´æ |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return ç»æ |
| | | */ |
| | | public int insertArdTankWall(ArdTankWall ardTankWall); |
| | | |
| | | /** |
| | | * ä¿®æ¹çµç£éçµåå´æ |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return ç»æ |
| | | */ |
| | | public int updateArdTankWall(ArdTankWall ardTankWall); |
| | | |
| | | /** |
| | | * å é¤çµç£éçµåå´æ |
| | | * |
| | | * @param id çµç£éçµåå´æ ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankWallById(String id); |
| | | |
| | | /** |
| | | * æ¹éå é¤çµç£éçµåå´æ |
| | | * |
| | | * @param ids éè¦å é¤çæ°æ®ä¸»é®éå |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankWallByIds(String[] ids); |
| | | |
| | | public List<ArdTankWall> getAllArdTankWall(); |
| | | } |
| | |
| | | * @param ardTankLock çµç£é |
| | | * @return ç»æ |
| | | */ |
| | | public int insertArdTankLock(ArdTankLock ardTankLock); |
| | | //public int insertArdTankLock(ArdTankLock ardTankLock); |
| | | public int insertArdTankLock(Map<String,Object> para); |
| | | |
| | | /** |
| | | * ä¿®æ¹çµç£é |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.service; |
| | | |
| | | import java.util.List; |
| | | import com.ruoyi.sy.domain.ArdTankWall; |
| | | |
| | | /** |
| | | * çµç£éçµåå´æ Serviceæ¥å£ |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-01 |
| | | */ |
| | | public interface IArdTankWallService |
| | | { |
| | | /** |
| | | * æ¥è¯¢çµç£éçµåå´æ |
| | | * |
| | | * @param id çµç£éçµåå´æ ä¸»é® |
| | | * @return çµç£éçµåå´æ |
| | | */ |
| | | public ArdTankWall selectArdTankWallById(String id); |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£éçµåå´æ å表 |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return çµç£éçµåå´æ éå |
| | | */ |
| | | public List<ArdTankWall> selectArdTankWallList(ArdTankWall ardTankWall); |
| | | |
| | | /** |
| | | * æ°å¢çµç£éçµåå´æ |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return ç»æ |
| | | */ |
| | | public int insertArdTankWall(ArdTankWall ardTankWall); |
| | | |
| | | /** |
| | | * ä¿®æ¹çµç£éçµåå´æ |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return ç»æ |
| | | */ |
| | | public int updateArdTankWall(ArdTankWall ardTankWall); |
| | | |
| | | /** |
| | | * æ¹éå é¤çµç£éçµåå´æ |
| | | * |
| | | * @param ids éè¦å é¤ççµç£éçµåå´æ 主é®éå |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankWallByIds(String[] ids); |
| | | |
| | | /** |
| | | * å é¤çµç£éçµåå´æ ä¿¡æ¯ |
| | | * |
| | | * @param id çµç£éçµåå´æ ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdTankWallById(String id); |
| | | |
| | | public List<ArdTankWall> getAllArdTankWall(); |
| | | } |
| | |
| | | package com.ruoyi.sy.service.impl; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | import com.dtflys.forest.annotation.Var; |
| | | import com.ruoyi.common.core.domain.entity.SysConfig; |
| | |
| | | import org.apache.commons.codec.digest.DigestUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import java.util.ArrayList; |
| | | import java.util.Map; |
| | | |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int insertArdTankLock(Map<String,Object> para) { |
| | | String carId = (String) para.get("carId"); |
| | | List<Map<String,String>> lockList = (List<Map<String,String>>)para.get("lockList"); |
| | | List<ArdTankLock> ardTankLocks = new ArrayList(); |
| | | for(Map<String,String> map : lockList){ |
| | | ArdTankLock ardTankLock = new ArdTankLock(); |
| | | ardTankLock.setId(IdUtils.simpleUUID()); |
| | | ardTankLock.setLockNum(map.get("lockNum")); |
| | | ardTankLock.setLockName(map.get("lockName")); |
| | | ardTankLock.setImgPositionTop(map.get("imgPositionTop")); |
| | | ardTankLock.setImgPositionLeft(map.get("imgPositionLeft")); |
| | | ardTankLock.setCarId(carId); |
| | | ardTankLock.setEnable(map.get("enable")); |
| | | ardTankLocks.add(ardTankLock); |
| | | } |
| | | return ardTankLockMapper.insertArdTankLocks(ardTankLocks); |
| | | } |
| | | /*@Override |
| | | public int insertArdTankLock(ArdTankLock ardTankLock) { |
| | | ardTankLock.setId(IdUtils.simpleUUID()); |
| | | return ardTankLockMapper.insertArdTankLock(ardTankLock); |
| | | } |
| | | }*/ |
| | | |
| | | /** |
| | | * ä¿®æ¹çµç£é |
| | |
| | | map.put("imgPositionLeft",ardTankLock.getImgPositionLeft()); |
| | | map.put("carId",ardTankLock.getCarId()); |
| | | map.put("enable",ardTankLock.getEnable()); |
| | | map.put("restartState",ardTankLock.getRestartState()); |
| | | if(ardTankLock.getRestartState() == null){ |
| | | map.put("restartState",""); |
| | | }else{ |
| | | map.put("restartState",ardTankLock.getRestartState()); |
| | | } |
| | | if(ardTankLock.getOnlineTime() == null){ |
| | | map.put("onlineTime",""); |
| | | }else{ |
| | |
| | | } |
| | | result.add(map); |
| | | } |
| | | return Results.succeed(result); |
| | | List<Map<String,Object>> result0 = new ArrayList();//æ¼æ¥carIdåcarPlate |
| | | Set<String> carIdSet = new HashSet(); |
| | | for(Map<String,Object> map : result){ |
| | | if(!carIdSet.contains((String) map.get("carId"))){ |
| | | Map<String,Object> mapr = new HashMap(); |
| | | mapr.put("carId",map.get("carId")); |
| | | mapr.put("carPlate",map.get("carPlate")); |
| | | mapr.put("lockList",new ArrayList()); |
| | | result0.add(mapr); |
| | | } |
| | | carIdSet.add((String) map.get("carId")); |
| | | } |
| | | for(Map<String,Object> map : result0){ |
| | | for(Map<String,Object> map0 : result){ |
| | | if(((String)map.get("carId")).equals((String)map0.get("carId"))){ |
| | | ((List)map.get("lockList")).add(map0); |
| | | } |
| | | } |
| | | } |
| | | return Results.succeed(result0); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sy.service.impl; |
| | | |
| | | import java.util.List; |
| | | |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import java.util.ArrayList; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.sy.mapper.ArdTankWallMapper; |
| | | import com.ruoyi.sy.domain.ArdTankWall; |
| | | import com.ruoyi.sy.service.IArdTankWallService; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * çµç£éçµåå´æ Serviceä¸å¡å±å¤ç |
| | | * |
| | | * @author ard |
| | | * @date 2024-07-01 |
| | | */ |
| | | @Service |
| | | public class ArdTankWallServiceImpl implements IArdTankWallService { |
| | | @Resource |
| | | private ArdTankWallMapper ardTankWallMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£éçµåå´æ |
| | | * |
| | | * @param id çµç£éçµåå´æ ä¸»é® |
| | | * @return çµç£éçµåå´æ |
| | | */ |
| | | @Override |
| | | public ArdTankWall selectArdTankWallById(String id) { |
| | | return ardTankWallMapper.selectArdTankWallById(id); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢çµç£éçµåå´æ å表 |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return çµç£éçµåå´æ |
| | | */ |
| | | @Override |
| | | public List<ArdTankWall> selectArdTankWallList(ArdTankWall ardTankWall) { |
| | | return ardTankWallMapper.selectArdTankWallList(ardTankWall); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢çµç£éçµåå´æ |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int insertArdTankWall(ArdTankWall ardTankWall) { |
| | | ardTankWall.setId(IdUtils.simpleUUID()); |
| | | return ardTankWallMapper.insertArdTankWall(ardTankWall); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹çµç£éçµåå´æ |
| | | * |
| | | * @param ardTankWall çµç£éçµåå´æ |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int updateArdTankWall(ArdTankWall ardTankWall) { |
| | | return ardTankWallMapper.updateArdTankWall(ardTankWall); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå é¤çµç£éçµåå´æ |
| | | * |
| | | * @param ids éè¦å é¤ççµç£éçµåå´æ ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteArdTankWallByIds(String[] ids) { |
| | | return ardTankWallMapper.deleteArdTankWallByIds(ids); |
| | | } |
| | | |
| | | /** |
| | | * å é¤çµç£éçµåå´æ ä¿¡æ¯ |
| | | * |
| | | * @param id çµç£éçµåå´æ ä¸»é® |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteArdTankWallById(String id) { |
| | | return ardTankWallMapper.deleteArdTankWallById(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<ArdTankWall> getAllArdTankWall() { |
| | | List<ArdTankWall> result = ardTankWallMapper.getAllArdTankWall(); |
| | | return result; |
| | | } |
| | | } |
| | |
| | | <select id="getAll" resultMap="ArdTankLockResult"> |
| | | select * from ard_tank_lock atl order by atl.car_id |
| | | </select> |
| | | |
| | | <insert id="insertArdTankLocks" parameterType="com.ruoyi.sy.domain.ArdTankLock" > |
| | | insert into ard_tank_lock (id, lock_num, lock_name, |
| | | img_position_top, img_position_left, car_id, |
| | | enable, restart_state, online_time) |
| | | values |
| | | <foreach collection ="ardTankLocks" item="ardTankLock" separator =","> |
| | | (#{ardTankLock.id},#{ardTankLock.lockNum},#{ardTankLock.lockName}, |
| | | #{ardTankLock.imgPositionTop},#{ardTankLock.imgPositionLeft}, |
| | | #{ardTankLock.carId},#{ardTankLock.enable},#{ardTankLock.restartState}, |
| | | #{ardTankLock.onlineTime}) |
| | | </foreach > |
| | | </insert> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.sy.mapper.ArdTankWallMapper"> |
| | | |
| | | <resultMap type="ArdTankWall" id="ArdTankWallResult"> |
| | | <result property="id" column="id" /> |
| | | <result property="wallName" column="wall_name" /> |
| | | <result property="longitude" column="longitude" /> |
| | | <result property="latitude" column="latitude" /> |
| | | <result property="distance" column="distance" /> |
| | | </resultMap> |
| | | |
| | | <sql id="selectArdTankWallVo"> |
| | | select id, wall_name, longitude, latitude, distance from ard_tank_wall |
| | | </sql> |
| | | |
| | | <select id="selectArdTankWallList" parameterType="ArdTankWall" resultMap="ArdTankWallResult"> |
| | | <include refid="selectArdTankWallVo"/> |
| | | <where> |
| | | <if test="wallName != null and wallName != ''"> and wall_name like '%'||#{wallName}||'%'</if> |
| | | <if test="longitude != null "> and longitude = #{longitude}</if> |
| | | <if test="latitude != null "> and latitude = #{latitude}</if> |
| | | <if test="distance != null "> and distance = #{distance}</if> |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="selectArdTankWallById" parameterType="String" resultMap="ArdTankWallResult"> |
| | | <include refid="selectArdTankWallVo"/> |
| | | where id = #{id} |
| | | </select> |
| | | |
| | | <insert id="insertArdTankWall" parameterType="ArdTankWall"> |
| | | insert into ard_tank_wall |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null">id,</if> |
| | | <if test="wallName != null">wall_name,</if> |
| | | <if test="longitude != null">longitude,</if> |
| | | <if test="latitude != null">latitude,</if> |
| | | <if test="distance != null">distance,</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null">#{id},</if> |
| | | <if test="wallName != null">#{wallName},</if> |
| | | <if test="longitude != null">#{longitude},</if> |
| | | <if test="latitude != null">#{latitude},</if> |
| | | <if test="distance != null">#{distance},</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <update id="updateArdTankWall" parameterType="ArdTankWall"> |
| | | update ard_tank_wall |
| | | <trim prefix="SET" suffixOverrides=","> |
| | | <if test="wallName != null">wall_name = #{wallName},</if> |
| | | <if test="longitude != null">longitude = #{longitude},</if> |
| | | <if test="latitude != null">latitude = #{latitude},</if> |
| | | <if test="distance != null">distance = #{distance},</if> |
| | | </trim> |
| | | where id = #{id} |
| | | </update> |
| | | |
| | | <delete id="deleteArdTankWallById" parameterType="String"> |
| | | delete from ard_tank_wall where id = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteArdTankWallByIds" parameterType="String"> |
| | | delete from ard_tank_wall where id in |
| | | <foreach item="id" collection="array" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | </mapper> |