zhangnaisong
2024-07-11 cbbea55a92b178b75f58e7c468f7e8d8ae417c9d
电磁锁手动操控提交
已添加5个文件
已修改3个文件
686 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockProcessLog.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockProcessLogMapper.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/sy/ArdTankLockProcessLogMapper.xml 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.sy.domain.ArdTankWall;
import com.ruoyi.sy.service.IArdTankLockProcessLogService;
import com.ruoyi.sy.service.IArdTankWallLockService;
import com.ruoyi.sy.service.IArdTankWallService;
import com.ruoyi.utils.result.Results;
@@ -51,6 +52,9 @@
    @Autowired
    private IArdTankWallLockService ardTankWallLockService;
    @Autowired
    private IArdTankLockProcessLogService ardTankLockProcessLogService;
    /**
     * æŸ¥è¯¢ç”µç£é”åˆ—表
@@ -318,4 +322,17 @@
    public AjaxResult deleteArdTankWallLockByLockId(@PathVariable String id) {
        return toAjax(ardTankWallLockService.deleteArdTankWallLockByLockId(id));
    }
    /**
     * æ“æŽ§ç”µç£é”
     */
    @ApiOperation("操控电磁锁")
    @PreAuthorize("@ss.hasPermi('sy:lock:processArdTankLockByLockId')")
    @Log(title = "电磁锁" , businessType = BusinessType.INSERT)
    @PostMapping("/processArdTankLockByLockId")
    public AjaxResult processArdTankLockByLockId(@RequestBody Map<String,String> para) {
        String userId = SecurityUtils.getUserId();
        String username = SecurityUtils.getUsername();
        return AjaxResult.success(ardTankLockProcessLogService.processArdTankLockByLockId(userId,username,para));
    }
}
ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockProcessLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,191 @@
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_lock_process_log
 *
 * @author ard
 * @date 2024-07-10
 */
public class ArdTankLockProcessLog extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ä¸»é”® */
    private String id;
    /** é”ä¸»é”® */
    @Excel(name = "锁主键")
    private String lockId;
    /** é”ç¼–号 */
    @Excel(name = "锁编号")
    private String lockNum;
    /** ä¸‰ä¸€è½¦è¾†ä¸»é”® */
    @Excel(name = "三一车辆主键")
    private String carId;
    /** è½¦ç‰Œå· */
    @Excel(name = "车牌号")
    private String carPlate;
    /** æ“ä½œç”¨æˆ·ä¸»é”® */
    @Excel(name = "操作用户主键")
    private String userId;
    /** æ“ä½œç”¨æˆ·è´¦å· */
    @Excel(name = "操作用户账号")
    private String userName;
    /** æ“ä½œ */
    @Excel(name = "操作")
    private String process;
    /** æ“ä½œåŽŸå›  */
    @Excel(name = "操作原因")
    private String processReason;
    /** ç»åº¦ */
    @Excel(name = "经度")
    private String longitude;
    /** çº¬åº¦ */
    @Excel(name = "纬度")
    private String latitude;
    /** æ“ä½œæ—¶é—´ */
    @Excel(name = "操作时间")
    private String processTime;
    public void setId(String id)
    {
        this.id = id;
    }
    public String getId()
    {
        return id;
    }
    public void setLockId(String lockId)
    {
        this.lockId = lockId;
    }
    public String getLockId()
    {
        return lockId;
    }
    public void setLockNum(String lockNum)
    {
        this.lockNum = lockNum;
    }
    public String getLockNum()
    {
        return lockNum;
    }
    public void setCarId(String carId)
    {
        this.carId = carId;
    }
    public String getCarId()
    {
        return carId;
    }
    public void setCarPlate(String carPlate)
    {
        this.carPlate = carPlate;
    }
    public String getCarPlate()
    {
        return carPlate;
    }
    public void setUserId(String userId)
    {
        this.userId = userId;
    }
    public String getUserId()
    {
        return userId;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    public String getUserName()
    {
        return userName;
    }
    public void setProcess(String process)
    {
        this.process = process;
    }
    public String getProcess()
    {
        return process;
    }
    public void setProcessReason(String processReason)
    {
        this.processReason = processReason;
    }
    public String getProcessReason()
    {
        return processReason;
    }
    public void setLongitude(String longitude)
    {
        this.longitude = longitude;
    }
    public String getLongitude()
    {
        return longitude;
    }
    public void setLatitude(String latitude)
    {
        this.latitude = latitude;
    }
    public String getLatitude()
    {
        return latitude;
    }
    public void setProcessTime(String processTime)
    {
        this.processTime = processTime;
    }
    public String getProcessTime()
    {
        return processTime;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("lockId", getLockId())
            .append("lockNum", getLockNum())
            .append("carId", getCarId())
            .append("carPlate", getCarPlate())
            .append("userId", getUserId())
            .append("userName", getUserName())
            .append("process", getProcess())
            .append("processReason", getProcessReason())
            .append("longitude", getLongitude())
            .append("latitude", getLatitude())
            .append("processTime", getProcessTime())
            .toString();
    }
}
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockProcessLogMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.sy.mapper;
import java.util.List;
import com.ruoyi.sy.domain.ArdTankLockProcessLog;
/**
 * ç½è½¦é”æ“æŽ§æ—¥å¿—Mapper接口
 *
 * @author ard
 * @date 2024-07-10
 */
public interface ArdTankLockProcessLogMapper
{
    /**
     * æŸ¥è¯¢ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param id ç½è½¦é”æ“æŽ§æ—¥å¿—主键
     * @return ç½è½¦é”æ“æŽ§æ—¥å¿—
     */
    public ArdTankLockProcessLog selectArdTankLockProcessLogById(String id);
    /**
     * æŸ¥è¯¢ç½è½¦é”æ“æŽ§æ—¥å¿—列表
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç½è½¦é”æ“æŽ§æ—¥å¿—集合
     */
    public List<ArdTankLockProcessLog> selectArdTankLockProcessLogList(ArdTankLockProcessLog ardTankLockProcessLog);
    /**
     * æ–°å¢žç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç»“æžœ
     */
    public int insertArdTankLockProcessLog(ArdTankLockProcessLog ardTankLockProcessLog);
    /**
     * ä¿®æ”¹ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç»“æžœ
     */
    public int updateArdTankLockProcessLog(ArdTankLockProcessLog ardTankLockProcessLog);
    /**
     * åˆ é™¤ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param id ç½è½¦é”æ“æŽ§æ—¥å¿—主键
     * @return ç»“æžœ
     */
    public int deleteArdTankLockProcessLogById(String id);
    /**
     * æ‰¹é‡åˆ é™¤ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdTankLockProcessLogByIds(String[] ids);
}
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java
@@ -70,4 +70,6 @@
    public List<ArdTankWall> getDistinctArdTankWallByCarId(String carId);
    public int deleteArdTankAbnormalParkAlarmByCarId(String carId);
    public List<ArdTankWall> getArdTankWallProcessByLockId(String lockId);
}
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.ruoyi.sy.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.sy.domain.ArdTankLockProcessLog;
/**
 * ç½è½¦é”æ“æŽ§æ—¥å¿—Service接口
 *
 * @author ard
 * @date 2024-07-10
 */
public interface IArdTankLockProcessLogService
{
    /**
     * æŸ¥è¯¢ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param id ç½è½¦é”æ“æŽ§æ—¥å¿—主键
     * @return ç½è½¦é”æ“æŽ§æ—¥å¿—
     */
    public ArdTankLockProcessLog selectArdTankLockProcessLogById(String id);
    /**
     * æŸ¥è¯¢ç½è½¦é”æ“æŽ§æ—¥å¿—列表
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç½è½¦é”æ“æŽ§æ—¥å¿—集合
     */
    public List<ArdTankLockProcessLog> selectArdTankLockProcessLogList(ArdTankLockProcessLog ardTankLockProcessLog);
    /**
     * æ–°å¢žç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç»“æžœ
     */
    public int insertArdTankLockProcessLog(ArdTankLockProcessLog ardTankLockProcessLog);
    /**
     * ä¿®æ”¹ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç»“æžœ
     */
    public int updateArdTankLockProcessLog(ArdTankLockProcessLog ardTankLockProcessLog);
    /**
     * æ‰¹é‡åˆ é™¤ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ids éœ€è¦åˆ é™¤çš„罐车锁操控日志主键集合
     * @return ç»“æžœ
     */
    public int deleteArdTankLockProcessLogByIds(String[] ids);
    /**
     * åˆ é™¤ç½è½¦é”æ“æŽ§æ—¥å¿—信息
     *
     * @param id ç½è½¦é”æ“æŽ§æ—¥å¿—主键
     * @return ç»“æžœ
     */
    public int deleteArdTankLockProcessLogById(String id);
    public String processArdTankLockByLockId(String userId, String username, Map<String,String> para);
}
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,236 @@
package com.ruoyi.sy.service.impl;
import java.awt.geom.Point2D;
import java.text.SimpleDateFormat;
import java.util.*;
import com.ruoyi.common.core.domain.entity.SysConfig;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.sy.domain.ArdSyUser;
import com.ruoyi.sy.domain.ArdTankLock;
import com.ruoyi.sy.domain.ArdTankWall;
import com.ruoyi.sy.mapper.ArdSyUserMapper;
import com.ruoyi.sy.mapper.ArdTankLockMapper;
import com.ruoyi.sy.mapper.ArdTankWallMapper;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.utils.forest.SYClient;
import com.ruoyi.utils.gps.GeoTools;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.sy.mapper.ArdTankLockProcessLogMapper;
import com.ruoyi.sy.domain.ArdTankLockProcessLog;
import com.ruoyi.sy.service.IArdTankLockProcessLogService;
import javax.annotation.Resource;
/**
 * ç½è½¦é”æ“æŽ§æ—¥å¿—Service业务层处理
 *
 * @author ard
 * @date 2024-07-10
 */
@Service
public class ArdTankLockProcessLogServiceImpl implements IArdTankLockProcessLogService {
    @Resource
    private ArdTankLockProcessLogMapper ardTankLockProcessLogMapper;
    @Resource
    private ArdTankWallMapper ardTankWallMapper;
    @Resource
    private ArdSyUserMapper ardSyUserMapper;
    @Resource
    private SysConfigMapper sysConfigMapper;
    @Resource
    private ArdTankLockMapper ardTankLockMapper;
    @Resource
    private SYClient sYClient;
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /**
     * æŸ¥è¯¢ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param id ç½è½¦é”æ“æŽ§æ—¥å¿—主键
     * @return ç½è½¦é”æ“æŽ§æ—¥å¿—
     */
    @Override
    public ArdTankLockProcessLog selectArdTankLockProcessLogById(String id) {
        return ardTankLockProcessLogMapper.selectArdTankLockProcessLogById(id);
    }
    /**
     * æŸ¥è¯¢ç½è½¦é”æ“æŽ§æ—¥å¿—列表
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç½è½¦é”æ“æŽ§æ—¥å¿—
     */
    @Override
    public List<ArdTankLockProcessLog> selectArdTankLockProcessLogList(ArdTankLockProcessLog ardTankLockProcessLog) {
        return ardTankLockProcessLogMapper.selectArdTankLockProcessLogList(ardTankLockProcessLog);
    }
    /**
     * æ–°å¢žç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç»“æžœ
     */
    @Override
    public int insertArdTankLockProcessLog(ArdTankLockProcessLog ardTankLockProcessLog) {
                ardTankLockProcessLog.setId(IdUtils.simpleUUID());
                ardTankLockProcessLog.setUserId(SecurityUtils.getUserId());
            return ardTankLockProcessLogMapper.insertArdTankLockProcessLog(ardTankLockProcessLog);
    }
    /**
     * ä¿®æ”¹ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ardTankLockProcessLog ç½è½¦é”æ“æŽ§æ—¥å¿—
     * @return ç»“æžœ
     */
    @Override
    public int updateArdTankLockProcessLog(ArdTankLockProcessLog ardTankLockProcessLog) {
        return ardTankLockProcessLogMapper.updateArdTankLockProcessLog(ardTankLockProcessLog);
    }
    /**
     * æ‰¹é‡åˆ é™¤ç½è½¦é”æ“æŽ§æ—¥å¿—
     *
     * @param ids éœ€è¦åˆ é™¤çš„罐车锁操控日志主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdTankLockProcessLogByIds(String[] ids) {
        return ardTankLockProcessLogMapper.deleteArdTankLockProcessLogByIds(ids);
    }
    /**
     * åˆ é™¤ç½è½¦é”æ“æŽ§æ—¥å¿—信息
     *
     * @param id ç½è½¦é”æ“æŽ§æ—¥å¿—主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdTankLockProcessLogById(String id) {
        return ardTankLockProcessLogMapper.deleteArdTankLockProcessLogById(id);
    }
    @Override
    public String processArdTankLockByLockId(String userId, String username, Map<String,String> para) {
        String lockId = para.get("lockId");
        String lockNum = para.get("lockNum");
        String carId = para.get("carId");
        String process = para.get("process");//01:开,02:关
        String processReason = para.get("processReason");//操控原因
        //判断使能
        ArdTankLock ardTankLock = ardTankLockMapper.selectArdTankLockById(lockId);
        if(ardTankLock.getEnable().equals("false")){
            return "该锁使能关闭,无法操控";
        }
        ArdSyUser ardSyUser = ardSyUserMapper.userById(userId);
        if(ardSyUser == null){
            return "未挂接三一账号";
        }
        List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
        String syURL = "";
        if(syURLResult.size() != 0){
            syURL = syURLResult.get(0).getConfigValue();
        }else{
            return "三一平台未录入";
        }
        String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
        String sessionId = (String) LogInResult.get("sessionId");
        String lng = "";
        String lat = "";
        String carPlate = "";
        Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, carId, ardSyUser.getUserId(), sessionId);
        if(((String)syResult.get("rspCode")).equals("1")){
            Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
            lng = (String) carMap.get("lng");
            lat = (String) carMap.get("lat");
            carPlate = (String) carMap.get("carName");
        }else{
            return "三一平台报错";
        }
        List<ArdTankWall> ardTankWallList = ardTankWallMapper.getArdTankWallProcessByLockId(lockId);//查询锁挂接的全部需要动作的电子围栏
        if(!ardTankWallList.isEmpty()){//挂接了动作电子围栏
            Point2D.Double point = new Point2D.Double(Double.parseDouble(lng), Double.parseDouble(lat));//车辆当前位置
            List<Point2D.Double> pts = new ArrayList<Point2D.Double>();
            for(ArdTankWall ardTankWall : ardTankWallList){
                pts.clear();
                String[] wallpoiArro = ardTankWall.getWallPoi().split(",");
                for (int j = 0; j < wallpoiArro.length; j = j + 3) {//构建多边形
                    pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
                }
                if(GeoTools.IsPtInPoly(point, pts)){//在任意电子围栏内,不报警
                    return "当前车辆正处在" + ardTankWall.getWallName() + "中";
                }
            }
            return "当前车辆正处在电子围栏外";
        }else{
            try{
                String lockNumHead = lockNum.substring(0,2);
                String lockNumTail = lockNum.substring(2,4);
                String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16)//锁编号高8位
                                                        + Integer.parseInt(lockNumTail, 16)//锁编号低8位
                                                        + Integer.parseInt("02", 16)//设置锁芯状态功能码02
                                                        + Integer.parseInt(process, 16));//操作
                if(checkNum.length() == 1){
                    checkNum = "0" + checkNum;
                }
                if(checkNum.length() > 2){
                    checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
                }
                String paramsStr = lockNum + "02" + process + checkNum;
                paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
                Map<String,Object> result = sYClient.sendCmd(syURL, ardSyUser.getUserId(), carId, 199, "DataDownTransfer", paramsStr, sessionId);
                if(((String)result.get("rspCode")).equals("0")){
                    //入库操作
                    ArdTankLockProcessLog ardTankLockProcessLog = new ArdTankLockProcessLog();
                    ardTankLockProcessLog.setId(IdUtils.simpleUUID());
                    ardTankLockProcessLog.setLockId(lockId);
                    ardTankLockProcessLog.setLockNum(lockNum);
                    ardTankLockProcessLog.setCarId(carId);
                    ardTankLockProcessLog.setCarPlate(carPlate);
                    ardTankLockProcessLog.setUserId(userId);
                    ardTankLockProcessLog.setUserName(username);
                    if(process.equals("01")){
                        ardTankLockProcessLog.setProcess("开动作");
                    }else if(process.equals("02")){
                        ardTankLockProcessLog.setProcess("关动作");
                    }
                    ardTankLockProcessLog.setProcessReason(processReason);
                    ardTankLockProcessLog.setLongitude(lng);
                    ardTankLockProcessLog.setLatitude(lat);
                    ardTankLockProcessLog.setProcessTime(this.sdf.format(new Date()));
                    ardTankLockProcessLogMapper.insertArdTankLockProcessLog(ardTankLockProcessLog);
                    return "发送成功";
                }else{
                    return "发送失败";
                }
            }catch(Exception e){
                e.printStackTrace();
                return "发送失败";
            }
        }
    }
}
ard-work/src/main/resources/mapper/sy/ArdTankLockProcessLogMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
<?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.ArdTankLockProcessLogMapper">
    <resultMap type="ArdTankLockProcessLog" id="ArdTankLockProcessLogResult">
        <result property="id"    column="id"    />
        <result property="lockId"    column="lock_id"    />
        <result property="lockNum"    column="lock_num"    />
        <result property="carId"    column="car_id"    />
        <result property="carPlate"    column="car_plate"    />
        <result property="userId"    column="user_id"    />
        <result property="userName"    column="user_name"    />
        <result property="process"    column="process"    />
        <result property="processReason"    column="process_reason"    />
        <result property="longitude"    column="longitude"    />
        <result property="latitude"    column="latitude"    />
        <result property="processTime"    column="process_time"    />
    </resultMap>
    <sql id="selectArdTankLockProcessLogVo">
        select id, lock_id, lock_num, car_id, car_plate, user_id, user_name, process, process_reason, longitude, latitude, process_time from ard_tank_lock_process_log
    </sql>
    <select id="selectArdTankLockProcessLogList" parameterType="ArdTankLockProcessLog" resultMap="ArdTankLockProcessLogResult">
        <include refid="selectArdTankLockProcessLogVo"/>
        <where>
            <if test="lockId != null  and lockId != ''"> and lock_id = #{lockId}</if>
            <if test="lockNum != null  and lockNum != ''"> and lock_num = #{lockNum}</if>
            <if test="carId != null  and carId != ''"> and car_id = #{carId}</if>
            <if test="carPlate != null  and carPlate != ''"> and car_plate = #{carPlate}</if>
            <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
            <if test="userName != null  and userName != ''"> and user_name like '%'||#{userName}||'%'</if>
            <if test="process != null  and process != ''"> and process = #{process}</if>
            <if test="processReason != null  and processReason != ''"> and process_reason = #{processReason}</if>
            <if test="longitude != null  and longitude != ''"> and longitude = #{longitude}</if>
            <if test="latitude != null  and latitude != ''"> and latitude = #{latitude}</if>
            <if test="processTime != null  and processTime != ''"> and process_time = #{processTime}</if>
        </where>
    </select>
    <select id="selectArdTankLockProcessLogById" parameterType="String" resultMap="ArdTankLockProcessLogResult">
        <include refid="selectArdTankLockProcessLogVo"/>
        where id = #{id}
    </select>
    <insert id="insertArdTankLockProcessLog" parameterType="ArdTankLockProcessLog">
        insert into ard_tank_lock_process_log
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="lockId != null">lock_id,</if>
            <if test="lockNum != null">lock_num,</if>
            <if test="carId != null">car_id,</if>
            <if test="carPlate != null">car_plate,</if>
            <if test="userId != null">user_id,</if>
            <if test="userName != null">user_name,</if>
            <if test="process != null">process,</if>
            <if test="processReason != null">process_reason,</if>
            <if test="longitude != null">longitude,</if>
            <if test="latitude != null">latitude,</if>
            <if test="processTime != null">process_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="lockId != null">#{lockId},</if>
            <if test="lockNum != null">#{lockNum},</if>
            <if test="carId != null">#{carId},</if>
            <if test="carPlate != null">#{carPlate},</if>
            <if test="userId != null">#{userId},</if>
            <if test="userName != null">#{userName},</if>
            <if test="process != null">#{process},</if>
            <if test="processReason != null">#{processReason},</if>
            <if test="longitude != null">#{longitude},</if>
            <if test="latitude != null">#{latitude},</if>
            <if test="processTime != null">#{processTime},</if>
         </trim>
    </insert>
    <update id="updateArdTankLockProcessLog" parameterType="ArdTankLockProcessLog">
        update ard_tank_lock_process_log
        <trim prefix="SET" suffixOverrides=",">
            <if test="lockId != null">lock_id = #{lockId},</if>
            <if test="lockNum != null">lock_num = #{lockNum},</if>
            <if test="carId != null">car_id = #{carId},</if>
            <if test="carPlate != null">car_plate = #{carPlate},</if>
            <if test="userId != null">user_id = #{userId},</if>
            <if test="userName != null">user_name = #{userName},</if>
            <if test="process != null">process = #{process},</if>
            <if test="processReason != null">process_reason = #{processReason},</if>
            <if test="longitude != null">longitude = #{longitude},</if>
            <if test="latitude != null">latitude = #{latitude},</if>
            <if test="processTime != null">process_time = #{processTime},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteArdTankLockProcessLogById" parameterType="String">
        delete from ard_tank_lock_process_log where id = #{id}
    </delete>
    <delete id="deleteArdTankLockProcessLogByIds" parameterType="String">
        delete from ard_tank_lock_process_log where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml
@@ -88,4 +88,10 @@
       inner join ard_tank_wall atw on atwl.wall_id = atw.id
       where atl.car_id = #{carId}
    </select>
    <select id="getArdTankWallProcessByLockId" resultMap="ArdTankWallResult" parameterType="java.lang.String">
        select atw.* from ard_tank_wall_lock atwl
        inner join ard_tank_wall atw on atwl.wall_id = atw.id
        where atwl.lock_id = #{lockId} and atwl.process_type != '0'
    </select>
</mapper>