zhangnaisong
2024-07-26 b468cde8bfd9d6e1d7ae7ccc535fc7e8ffb9f818
电磁锁报警查询提交
已添加5个文件
已修改5个文件
754 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java 156 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockAlarm.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockAlarmMapper.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockAlarmService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockAlarmServiceImpl.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/sy/ArdTankLockAlarmMapper.xml 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -104,8 +104,6 @@
    @Value("${syCar.password}")
    private String password;
    private Timer lockStateTimer;
    @PostConstruct
    public void init(){
        ardSyCarController = this;
@@ -155,7 +153,7 @@
        //删除结束时间为null的记录
        int result = ardTankAbnormalParkAlarmService.deleteArdTankAbnormalParkAlarmByEndTime();
        this.lockStateTimer = new Timer();//定时获取各个锁的状态
        Timer lockStateTimer = new Timer();//定时获取各个锁的状态
        TimerTask lockStateTask =new TimerTask(){
            @Override
            public void run(){
@@ -180,7 +178,7 @@
                        List<ArdTankLock> result = ardTankLockService.getArdTankLockAll();//查询全部电磁锁
                        for(ArdTankLock ardTankLock : result){
                            Thread LockThread = new Thread(finalSyURL){
                            Thread lockThread = new Thread(finalSyURL){
                                @Override
                                public void run() {
                                    String lockNumHead = ardTankLock.getLockNum().substring(0,2);
@@ -197,9 +195,13 @@
                                    String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "01" + checkNum + "%22%7D";
                                    sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
                                    PositionContainer.getCarThreadMap().remove(ardTankLock.getCarId());//发送完,从容器去除
                                }
                            };
                            LockThread.start();
                            if(PositionContainer.getCarThreadMap().get(ardTankLock.getCarId()) != null){//容器中无线程,放入容器
                                PositionContainer.getCarThreadMap().put(ardTankLock.getCarId(),lockThread);
                            }
                            lockThread.start();
                        }
                    }
                };
@@ -214,80 +216,84 @@
        TimerTask lockCheckTimeTask =new TimerTask(){
            @Override
            public void run() {
                SysConfig config = new SysConfig();
                config.setConfigKey("syCarPT");
                List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config);
                String syURL = "";
            SysConfig config = new SysConfig();
            config.setConfigKey("syCarPT");
            List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config);
            String syURL = "";
                if(sysConfigResult.size() == 0){
                    return;
                }else{
                    syURL = sysConfigResult.get(0).getConfigValue();
                }
                String passwordMd5 = DigestUtils.md5Hex(password);
                Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
                String sessionId = (String) LogInResult.get("sessionId");
            if(sysConfigResult.size() == 0){
                return;
            }else{
                syURL = sysConfigResult.get(0).getConfigValue();
            }
            String passwordMd5 = DigestUtils.md5Hex(password);
            Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
            String sessionId = (String) LogInResult.get("sessionId");
                String finalSyURL = syURL;
            String finalSyURL = syURL;
                List<ArdTankLock> result = ardTankLockService.getArdTankLockAll();//查询全部电磁锁
                for(ArdTankLock ardTankLock : result){
                    Thread LockThread = new Thread(finalSyURL){
                        @Override
                        public void run() {
                            //获取时间并拆分年月日时分秒
                            String nowTime = sdf.format(new Date());
                            String nowYear = nowTime.substring(2,4);
                            String nowMonth = nowTime.substring(5,7);
                            String nowDay = nowTime.substring(8,10);
                            String nowHour = nowTime.substring(11,13);
                            String nowMinute = nowTime.substring(14,16);
                            String nowSecond = nowTime.substring(17,19);
            List<ArdTankLock> result = ardTankLockService.getArdTankLockAll();//查询全部电磁锁
            for(ArdTankLock ardTankLock : result){
                Thread lockThread = new Thread(finalSyURL){
                    @Override
                    public void run() {
                        //获取时间并拆分年月日时分秒
                        String nowTime = sdf.format(new Date());
                        String nowYear = nowTime.substring(2,4);
                        String nowMonth = nowTime.substring(5,7);
                        String nowDay = nowTime.substring(8,10);
                        String nowHour = nowTime.substring(11,13);
                        String nowMinute = nowTime.substring(14,16);
                        String nowSecond = nowTime.substring(17,19);
                            String nowYearHex = Integer.toHexString(Integer.parseInt(nowYear));
                            if(nowYearHex.length() == 1){
                                nowYearHex = "0" + nowYearHex;
                            }
                            String nowMonthHex = Integer.toHexString(Integer.parseInt(nowMonth));
                            if(nowMonthHex.length() == 1){
                                nowMonthHex = "0" + nowMonthHex;
                            }
                            String nowDayHex = Integer.toHexString(Integer.parseInt(nowDay));
                            if(nowDayHex.length() == 1){
                                nowDayHex = "0" + nowDayHex;
                            }
                            String nowHourHex = Integer.toHexString(Integer.parseInt(nowHour));
                            if(nowHourHex.length() == 1){
                                nowHourHex = "0" + nowHourHex;
                            }
                            String nowMinuteHex = Integer.toHexString(Integer.parseInt(nowMinute));
                            if(nowMinuteHex.length() == 1){
                                nowMinuteHex = "0" + nowMinuteHex;
                            }
                            String nowSecondHex = Integer.toHexString(Integer.parseInt(nowSecond));
                            if(nowSecondHex.length() == 1){
                                nowSecondHex = "0" + nowSecondHex;
                            }
                            //16进制时间
                            String timeHex = nowYearHex + nowMonthHex + nowDayHex + nowHourHex + nowMinuteHex + nowSecondHex;
                            String lockNumHead = ardTankLock.getLockNum().substring(0,2);
                            String lockNumTail = ardTankLock.getLockNum().substring(2,4);
                            //计算校验
                            String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt("08", 16) +
                                    Integer.parseInt(nowYearHex, 16) + Integer.parseInt(nowMonthHex, 16) + Integer.parseInt(nowDayHex, 16) +
                                    Integer.parseInt(nowHourHex, 16) + Integer.parseInt(nowMinuteHex, 16) + Integer.parseInt(nowSecondHex, 16));
                            if(checkNum.length() == 1){
                                checkNum = "0" + checkNum;
                            }else if(checkNum.length() > 2){
                                checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
                            }
                            String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "08" + timeHex + checkNum + "%22%7D";
                            sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
                        String nowYearHex = Integer.toHexString(Integer.parseInt(nowYear));
                        if(nowYearHex.length() == 1){
                            nowYearHex = "0" + nowYearHex;
                        }
                    };
                    LockThread.start();
                        String nowMonthHex = Integer.toHexString(Integer.parseInt(nowMonth));
                        if(nowMonthHex.length() == 1){
                            nowMonthHex = "0" + nowMonthHex;
                        }
                        String nowDayHex = Integer.toHexString(Integer.parseInt(nowDay));
                        if(nowDayHex.length() == 1){
                            nowDayHex = "0" + nowDayHex;
                        }
                        String nowHourHex = Integer.toHexString(Integer.parseInt(nowHour));
                        if(nowHourHex.length() == 1){
                            nowHourHex = "0" + nowHourHex;
                        }
                        String nowMinuteHex = Integer.toHexString(Integer.parseInt(nowMinute));
                        if(nowMinuteHex.length() == 1){
                            nowMinuteHex = "0" + nowMinuteHex;
                        }
                        String nowSecondHex = Integer.toHexString(Integer.parseInt(nowSecond));
                        if(nowSecondHex.length() == 1){
                            nowSecondHex = "0" + nowSecondHex;
                        }
                        //16进制时间
                        String timeHex = nowYearHex + nowMonthHex + nowDayHex + nowHourHex + nowMinuteHex + nowSecondHex;
                        String lockNumHead = ardTankLock.getLockNum().substring(0,2);
                        String lockNumTail = ardTankLock.getLockNum().substring(2,4);
                        //计算校验
                        String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt("08", 16) +
                                Integer.parseInt(nowYearHex, 16) + Integer.parseInt(nowMonthHex, 16) + Integer.parseInt(nowDayHex, 16) +
                                Integer.parseInt(nowHourHex, 16) + Integer.parseInt(nowMinuteHex, 16) + Integer.parseInt(nowSecondHex, 16));
                        if(checkNum.length() == 1){
                            checkNum = "0" + checkNum;
                        }else if(checkNum.length() > 2){
                            checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
                        }
                        String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "08" + timeHex + checkNum + "%22%7D";
                        sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
                        PositionContainer.getCarThreadMap().remove(ardTankLock.getCarId());//发送完,从容器去除
                    }
                };
                if(PositionContainer.getCarThreadMap().get(ardTankLock.getCarId()) != null){//容器中无线程,放入容器
                    PositionContainer.getCarThreadMap().put(ardTankLock.getCarId(),lockThread);
                }
                lockThread.start();
            }
            }
        };
        lockCheckTimeTimer.scheduleAtFixedRate(lockCheckTimeTask,date,7000);
@@ -316,7 +322,7 @@
        }
        Timer alarmTimer = new Timer();//定时获取报警
        /*Timer alarmTimer = new Timer();//定时获取报警
        TimerTask alarmTask = new TimerTask(){
            @Override
            public void run() {
@@ -329,7 +335,7 @@
                alarmThread.start();
            }
        };
        alarmTimer.scheduleAtFixedRate(alarmTask,date,3000);
        alarmTimer.scheduleAtFixedRate(alarmTask,date,3000);*/
    }
ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
@@ -9,9 +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.sy.service.*;
import com.ruoyi.utils.result.Results;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -30,7 +28,6 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.sy.domain.ArdTankLock;
import com.ruoyi.sy.service.IArdTankLockService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -55,6 +52,9 @@
    @Autowired
    private IArdTankLockProcessLogService ardTankLockProcessLogService;
    @Autowired
    private IArdTankLockAlarmService ardTankLockAlarmService;
    /**
     * æŸ¥è¯¢ç”µç£é”åˆ—表
@@ -335,4 +335,21 @@
        String username = SecurityUtils.getUsername();
        return ardTankLockProcessLogService.processArdTankLockByLockId(userId,username,para);
    }
    @ApiOperation("查询电磁锁报警")
    @PreAuthorize("@ss.hasPermi('sy:lock:getAlarm')")
    @PostMapping("/getAlarm")
    public TableDataInfo getAlarm(@RequestBody Map<String,Object> para) {
        PageHelper.startPage((Integer) para.get("pageNum"), (Integer) para.get("pageSize"));
        String userId = SecurityUtils.getUserId();
        Map<String,Object> result = ardTankLockAlarmService.getAlarm(userId,para);
        TableDataInfo dataTable = new TableDataInfo();
        dataTable.setRows((List<Map<String,Object>>) result.get("list"));
        dataTable.setTotal((Long) result.get("total"));
        dataTable.setCode(200);
        dataTable.setMsg("查询成功");
        return dataTable;
    }
}
ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankLockAlarm.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
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_alarm
 *
 * @author ard
 * @date 2024-07-26
 */
public class ArdTankLockAlarm extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** é”ç¼–号 */
    @Excel(name = "锁编号")
    private String lockNum;
    /** æŠ¥è­¦ä¿¡æ¯ */
    @Excel(name = "报警信息")
    private String alarmInfo;
    /** ä¸»é”® */
    private String id;
    /** é”ä¸»é”® */
    @Excel(name = "锁主键")
    private String lockId;
    /** æŠ¥è­¦æ—¶é—´ */
    @Excel(name = "报警时间")
    private String alarmTime;
    public void setLockNum(String lockNum)
    {
        this.lockNum = lockNum;
    }
    public String getLockNum()
    {
        return lockNum;
    }
    public void setAlarmInfo(String alarmInfo)
    {
        this.alarmInfo = alarmInfo;
    }
    public String getAlarmInfo()
    {
        return alarmInfo;
    }
    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 setAlarmTime(String alarmTime)
    {
        this.alarmTime = alarmTime;
    }
    public String getAlarmTime()
    {
        return alarmTime;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("lockNum", getLockNum())
            .append("alarmInfo", getAlarmInfo())
            .append("id", getId())
            .append("lockId", getLockId())
            .append("alarmTime", getAlarmTime())
            .toString();
    }
}
ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java
@@ -16,6 +16,8 @@
    private static Map<String,Thread> tankCarParkingAlarmTHread = new HashMap();//依车辆存放异常停车线程:carId,异常停车线程
    private static Map<String,Thread> carThreadMap = new HashMap();//车辆主键,线程容器
    public static Map<String, List<ArdSyCarLock>> getTopicSubscribe() {
        return topicSubscribe;
    }
@@ -58,4 +60,12 @@
    public static void setTankCarParkingAlarmTHread(Map<String, Thread> tankCarParkingAlarmTHread) {
        PositionContainer.tankCarParkingAlarmTHread = tankCarParkingAlarmTHread;
    }
    public static Map<String, Thread> getCarThreadMap() {
        return carThreadMap;
    }
    public static void setCarThreadMap(Map<String, Thread> carThreadMap) {
        PositionContainer.carThreadMap = carThreadMap;
    }
}
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
@@ -121,9 +121,14 @@
                        for(int i = 0;i <= data.length() - 4;i = i + 2){
                            String str = data.substring(i, i + 2);
                            sum = sum + Integer.parseInt(str, 16);
                        }
                        }//求和
                        String checkNum = data.substring(data.length() - 2, data.length());
                        if(!checkNum.equals(Integer.toHexString(sum).toUpperCase())){//校验不通过,就返回
                        String checkNumComputed = Integer.toHexString(sum).toUpperCase();//计算校验
                        //当校验数据大于2个字符,截取最后两位
                        if(checkNumComputed.length() != 2){
                            checkNumComputed = checkNumComputed.substring(checkNumComputed.length() - 2,checkNumComputed.length());
                        }
                        if(!checkNum.equals(checkNumComputed)){//校验不通过,就返回
                            return;
                        }
@@ -196,9 +201,6 @@
                            }
                            long cha = now.getTime() - sdf.parse(time).getTime();
                            /*System.out.println("////////////////");
                            System.out.println(time);
                            System.out.println(cha);*/
                            if(Math.abs(cha) >= 5 * 1000){
                                //时间校准
                                /*String url = "http://" + ip + ":9999";
@@ -328,9 +330,9 @@
                                ardTankLockState.setUniqueMark(uniqueMark);
                                ((ArdTankLockStateServiceImpl)SpringUtils.getBean("ardTankLockStateServiceImpl")).insertOrUpdateArdTankLockState(ardTankLockState);
                            }
                        }else if(code.equals("06")){//功能码06为锁历史报警
                        }/*else if(code.equals("06")){//功能码06为锁历史报警
                        }
                        }*/
                    }catch (Exception e){
                        e.printStackTrace();
                        return;//强转失败返回
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockAlarmMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.sy.mapper;
import java.util.List;
import java.util.Map;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.sy.domain.ArdTankLockAlarm;
import org.apache.ibatis.annotations.Param;
/**
 * ç”µç£é”æŠ¥è­¦Mapper接口
 *
 * @author ard
 * @date 2024-07-26
 */
public interface ArdTankLockAlarmMapper
{
    /**
     * æŸ¥è¯¢ç”µç£é”æŠ¥è­¦
     *
     * @param lockNum ç”µç£é”æŠ¥è­¦ä¸»é”®
     * @return ç”µç£é”æŠ¥è­¦
     */
    public ArdTankLockAlarm selectArdTankLockAlarmByLockNum(String lockNum);
    /**
     * æŸ¥è¯¢ç”µç£é”æŠ¥è­¦åˆ—表
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç”µç£é”æŠ¥è­¦é›†åˆ
     */
    public List<ArdTankLockAlarm> selectArdTankLockAlarmList(ArdTankLockAlarm ardTankLockAlarm);
    /**
     * æ–°å¢žç”µç£é”æŠ¥è­¦
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int insertArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
    /**
     * ä¿®æ”¹ç”µç£é”æŠ¥è­¦
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int updateArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
    /**
     * åˆ é™¤ç”µç£é”æŠ¥è­¦
     *
     * @param lockNum ç”µç£é”æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdTankLockAlarmByLockNum(String lockNum);
    /**
     * æ‰¹é‡åˆ é™¤ç”µç£é”æŠ¥è­¦
     *
     * @param lockNums éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdTankLockAlarmByLockNums(String[] lockNums);
    public List<Map<String, Object>> selectArdTankLockAlarmBylockIdAndTime(@Param("carId") String carId,@Param("lockId") String lockId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
    public Long selectArdTankLockAlarmTotalBylockIdAndTime(@Param("carId") String carId,@Param("lockId") String lockId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
    public List<Map<String, Object>> selectArdTankLockAlarmByDeptIdAndTime(@Param("deptId") Long deptId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
    public Long selectArdTankLockAlarmTotalByDeptIdAndTime(@Param("deptId") Long deptId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
}
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockAlarmService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.ruoyi.sy.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.sy.domain.ArdTankLockAlarm;
/**
 * ç”µç£é”æŠ¥è­¦Service接口
 *
 * @author ard
 * @date 2024-07-26
 */
public interface IArdTankLockAlarmService
{
    /**
     * æŸ¥è¯¢ç”µç£é”æŠ¥è­¦
     *
     * @param lockNum ç”µç£é”æŠ¥è­¦ä¸»é”®
     * @return ç”µç£é”æŠ¥è­¦
     */
    public ArdTankLockAlarm selectArdTankLockAlarmByLockNum(String lockNum);
    /**
     * æŸ¥è¯¢ç”µç£é”æŠ¥è­¦åˆ—表
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç”µç£é”æŠ¥è­¦é›†åˆ
     */
    public List<ArdTankLockAlarm> selectArdTankLockAlarmList(ArdTankLockAlarm ardTankLockAlarm);
    /**
     * æ–°å¢žç”µç£é”æŠ¥è­¦
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int insertArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
    /**
     * ä¿®æ”¹ç”µç£é”æŠ¥è­¦
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int updateArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm);
    /**
     * æ‰¹é‡åˆ é™¤ç”µç£é”æŠ¥è­¦
     *
     * @param lockNums éœ€è¦åˆ é™¤çš„电磁锁报警主键集合
     * @return ç»“æžœ
     */
    public int deleteArdTankLockAlarmByLockNums(String[] lockNums);
    /**
     * åˆ é™¤ç”µç£é”æŠ¥è­¦ä¿¡æ¯
     *
     * @param lockNum ç”µç£é”æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdTankLockAlarmByLockNum(String lockNum);
    public Map<String,Object> getAlarm(String userId,Map<String,Object> para);
}
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockAlarmServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,172 @@
package com.ruoyi.sy.service.impl;
import java.util.HashMap;
import java.util.List;
import com.github.pagehelper.PageHelper;
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.mapper.ArdSyCarMapper;
import com.ruoyi.sy.mapper.ArdSyUserMapper;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.utils.forest.SYClient;
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 com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.sy.mapper.ArdTankLockAlarmMapper;
import com.ruoyi.sy.domain.ArdTankLockAlarm;
import com.ruoyi.sy.service.IArdTankLockAlarmService;
import javax.annotation.Resource;
/**
 * ç”µç£é”æŠ¥è­¦Service业务层处理
 *
 * @author ard
 * @date 2024-07-26
 */
@Service
public class ArdTankLockAlarmServiceImpl implements IArdTankLockAlarmService {
    @Resource
    private ArdTankLockAlarmMapper ardTankLockAlarmMapper;
    @Resource
    private SysConfigMapper sysConfigMapper;
    @Resource
    private ArdSyUserMapper ardSyUserMapper;
    @Resource
    private SYClient sYClient;
    /**
     * æŸ¥è¯¢ç”µç£é”æŠ¥è­¦
     *
     * @param lockNum ç”µç£é”æŠ¥è­¦ä¸»é”®
     * @return ç”µç£é”æŠ¥è­¦
     */
    @Override
    public ArdTankLockAlarm selectArdTankLockAlarmByLockNum(String lockNum) {
        return ardTankLockAlarmMapper.selectArdTankLockAlarmByLockNum(lockNum);
    }
    /**
     * æŸ¥è¯¢ç”µç£é”æŠ¥è­¦åˆ—表
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç”µç£é”æŠ¥è­¦
     */
    @Override
    public List<ArdTankLockAlarm> selectArdTankLockAlarmList(ArdTankLockAlarm ardTankLockAlarm) {
        return ardTankLockAlarmMapper.selectArdTankLockAlarmList(ardTankLockAlarm);
    }
    /**
     * æ–°å¢žç”µç£é”æŠ¥è­¦
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç»“æžœ
     */
    @Override
    public int insertArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm) {
                ardTankLockAlarm.setId(IdUtils.simpleUUID());
            return ardTankLockAlarmMapper.insertArdTankLockAlarm(ardTankLockAlarm);
    }
    /**
     * ä¿®æ”¹ç”µç£é”æŠ¥è­¦
     *
     * @param ardTankLockAlarm ç”µç£é”æŠ¥è­¦
     * @return ç»“æžœ
     */
    @Override
    public int updateArdTankLockAlarm(ArdTankLockAlarm ardTankLockAlarm) {
        return ardTankLockAlarmMapper.updateArdTankLockAlarm(ardTankLockAlarm);
    }
    /**
     * æ‰¹é‡åˆ é™¤ç”µç£é”æŠ¥è­¦
     *
     * @param lockNums éœ€è¦åˆ é™¤çš„电磁锁报警主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdTankLockAlarmByLockNums(String[] lockNums) {
        return ardTankLockAlarmMapper.deleteArdTankLockAlarmByLockNums(lockNums);
    }
    /**
     * åˆ é™¤ç”µç£é”æŠ¥è­¦ä¿¡æ¯
     *
     * @param lockNum ç”µç£é”æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdTankLockAlarmByLockNum(String lockNum) {
        return ardTankLockAlarmMapper.deleteArdTankLockAlarmByLockNum(lockNum);
    }
    @Override
    public Map<String, Object> getAlarm(String userId,Map<String, Object> para) {
        //条件属性
        String carId = (String) para.get("carId");
        String lockId = (String) para.get("lockId");
        String beginTime = (String) para.get("beginTime");
        String endTime = (String) para.get("endTime");
        //分页属性
        Integer pageNum = (Integer) para.get("pageNum");
        Integer pageSize = (Integer) para.get("pageSize");
        ArdSyUser ardSyUser = ardSyUserMapper.userById(userId);
        if(ardSyUser == null){
            return new HashMap();
        }
        List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
        String syURL = "";
        if(syURLResult.size() != 0){
            syURL = syURLResult.get(0).getConfigValue();
        }else{
            return new HashMap();
        }
        String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
        String sessionId = (String) LogInResult.get("sessionId");
        PageHelper.startPage(pageNum, pageSize);//分页
        List<Map<String, Object>> resultList = new ArrayList();
        Long total = Long.valueOf(0);
        Map<String,Object> resultMap = new HashMap();
        if(!carId.equals("") || !lockId.equals("")){//carI或lockId为空字符串
            resultList = ardTankLockAlarmMapper.selectArdTankLockAlarmBylockIdAndTime(carId,lockId,beginTime,endTime);
            total =  ardTankLockAlarmMapper.selectArdTankLockAlarmTotalBylockIdAndTime(carId,lockId,beginTime,endTime);
        }else{//carI和lockId都为空字符串,查询权限下全部车辆报警
            try{
                resultList = ardTankLockAlarmMapper.selectArdTankLockAlarmByDeptIdAndTime(SecurityUtils.getDeptId(),beginTime,endTime);
            }catch(Exception e){
                e.printStackTrace();
            }
            try{
                total =  ardTankLockAlarmMapper.selectArdTankLockAlarmTotalByDeptIdAndTime(SecurityUtils.getDeptId(),beginTime,endTime);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        for(Map<String, Object> map : resultList){
            Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, (String) map.get("carId"), ardSyUser.getUserId(), sessionId);
            if(((String)syResult.get("rspCode")).equals("1")){
                Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
                map.put("carPlate",carMap.get("carPlate"));
            }
        }
        resultMap.put("list",resultList);
        resultMap.put("total",total);
        return resultMap;
    }
}
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
@@ -592,6 +592,9 @@
                    lockMap.put("ardTankLockState",ardTankLockState);*/
                    String alarmInfo = "";
                    lockMap.put("lockState",ardTankLockStateResult.getLockState());
                    if(ardTankLockStateResult.getLockState().equals("异常状态")){
                        alarmInfo = alarmInfo + "锁芯异常;";
                    }
                    lockMap.put("lockPositionState",ardTankLockStateResult.getLockPositionState());
                    if(ardTankLockStateResult.getLockPositionState().equals("异常")){
                        alarmInfo = alarmInfo + "位置异常;";
ard-work/src/main/resources/mapper/sy/ArdTankLockAlarmMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
<?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.ArdTankLockAlarmMapper">
    <resultMap type="ArdTankLockAlarm" id="ArdTankLockAlarmResult">
        <result property="lockNum"    column="lock_num"    />
        <result property="alarmInfo"    column="alarm_info"    />
        <result property="id"    column="id"    />
        <result property="lockId"    column="lock_id"    />
        <result property="alarmTime"    column="alarm_time"    />
    </resultMap>
    <sql id="selectArdTankLockAlarmVo">
        select lock_num, alarm_info, id, lock_id, alarm_time from ard_tank_lock_alarm
    </sql>
    <select id="selectArdTankLockAlarmList" parameterType="ArdTankLockAlarm" resultMap="ArdTankLockAlarmResult">
        <include refid="selectArdTankLockAlarmVo"/>
        <where>
            <if test="lockNum != null  and lockNum != ''"> and lock_num = #{lockNum}</if>
            <if test="alarmInfo != null  and alarmInfo != ''"> and alarm_info = #{alarmInfo}</if>
            <if test="lockId != null  and lockId != ''"> and lock_id = #{lockId}</if>
            <if test="alarmTime != null  and alarmTime != ''"> and alarm_time = #{alarmTime}</if>
        </where>
    </select>
    <select id="selectArdTankLockAlarmByLockNum" parameterType="String" resultMap="ArdTankLockAlarmResult">
        <include refid="selectArdTankLockAlarmVo"/>
        where lock_num = #{lockNum}
    </select>
    <insert id="insertArdTankLockAlarm" parameterType="ArdTankLockAlarm">
        insert into ard_tank_lock_alarm
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="lockNum != null">lock_num,</if>
            <if test="alarmInfo != null">alarm_info,</if>
            <if test="id != null">id,</if>
            <if test="lockId != null">lock_id,</if>
            <if test="alarmTime != null">alarm_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="lockNum != null">#{lockNum},</if>
            <if test="alarmInfo != null">#{alarmInfo},</if>
            <if test="id != null">#{id},</if>
            <if test="lockId != null">#{lockId},</if>
            <if test="alarmTime != null">#{alarmTime},</if>
         </trim>
    </insert>
    <update id="updateArdTankLockAlarm" parameterType="ArdTankLockAlarm">
        update ard_tank_lock_alarm
        <trim prefix="SET" suffixOverrides=",">
            <if test="alarmInfo != null">alarm_info = #{alarmInfo},</if>
            <if test="id != null">id = #{id},</if>
            <if test="lockId != null">lock_id = #{lockId},</if>
            <if test="alarmTime != null">alarm_time = #{alarmTime},</if>
        </trim>
        where lock_num = #{lockNum}
    </update>
    <delete id="deleteArdTankLockAlarmByLockNum" parameterType="String">
        delete from ard_tank_lock_alarm where lock_num = #{lockNum}
    </delete>
    <delete id="deleteArdTankLockAlarmByLockNums" parameterType="String">
        delete from ard_tank_lock_alarm where lock_num in
        <foreach item="lockNum" collection="array" open="(" separator="," close=")">
            #{lockNum}
        </foreach>
    </delete>
    <select id="selectArdTankLockAlarmBylockIdAndTime" parameterType="java.lang.String" resultType="java.util.Map">
        select atlm.id,atlm.lock_id as "lockId",atlm.lock_num as "lockNum",
        atlm.alarm_info as "alarmInfo",atlm.alarm_time as "alarmTime",
        atl.lock_name as "lockName",atl.car_id as "carId"
        from ard_tank_lock_alarm atlm
        inner join ard_tank_lock atl on atlm.lock_id = atl."id"
        <where>
            <if test="carId != null  and carId != ''"> and car_id = #{carId}</if>
            <if test="lockId != null  and lockId != ''"> and lock_id = #{lockId}</if>
            <if test="beginTime != null  and beginTime != ''"> and alarm_time &gt;= #{beginTime}</if>
            <if test="endTime != null  and endTime != ''"> and alarm_time &lt;= #{endTime}</if>
        </where>
        order by atlm.alarm_time desc
    </select>
    <select id="selectArdTankLockAlarmTotalBylockIdAndTime" parameterType="java.lang.String" resultType="java.lang.Long">
        select count(*)
        from ard_tank_lock_alarm atlm
        inner join ard_tank_lock atl on atlm.lock_id = atl."id"
        <where>
            <if test="carId != null  and carId != ''"> and car_id = #{carId}</if>
            <if test="lockId != null  and lockId != ''"> and lock_id = #{lockId}</if>
            <if test="beginTime != null  and beginTime != ''"> and alarm_time &gt;= #{beginTime}</if>
            <if test="endTime != null  and endTime != ''"> and alarm_time &lt;= #{endTime}</if>
        </where>
    </select>
    <select id="selectArdTankLockAlarmByDeptIdAndTime" resultType="java.util.Map">
        select atlm.id,atlm.lock_id as "lockId",atlm.lock_num as "lockNum",
        atlm.alarm_info as "alarmInfo",atlm.alarm_time as "alarmTime",
        atl.lock_name as "lockName",atl.car_id as "carId"
        from ard_tank_lock_alarm atlm
        inner join ard_tank_lock atl on atlm.lock_id = atl."id"
        <where>
            <if test="beginTime != null  and beginTime != ''"> and alarm_time &gt;= #{beginTime}</if>
            <if test="endTime != null  and endTime != ''"> and alarm_time &lt;= #{endTime}</if>
            <if test="deptId != null">
                and atl.car_id in (select car_id from ard_sy_car "asc" where "asc".dept_id in (
                with recursive rsd as (
                select sd.dept_id from sys_dept sd where sd.dept_id = #{deptId}
                union
                select csd.dept_id from sys_dept csd inner join rsd on rsd.dept_id = csd.parent_id
                )
                select * from rsd))
            </if>
        </where>
        order by atlm.alarm_time desc
    </select>
    <select id="selectArdTankLockAlarmTotalByDeptIdAndTime" resultType="java.lang.Long">
        select count(*)
        from ard_tank_lock_alarm atlm
        inner join ard_tank_lock atl on atlm.lock_id = atl."id"
        <where>
            <if test="beginTime != null  and beginTime != ''"> and alarm_time &gt;= #{beginTime}</if>
            <if test="endTime != null  and endTime != ''"> and alarm_time &lt;= #{endTime}</if>
            <if test="deptId != null">
                and atl.car_id in (select car_id from ard_sy_car "asc" where "asc".dept_id in (
                with recursive rsd as (
                select sd.dept_id from sys_dept sd where sd.dept_id =  #{deptId}
                union
                select csd.dept_id from sys_dept csd inner join rsd on rsd.dept_id = csd.parent_id
                )
                select * from rsd))
            </if>
        </where>
    </select>
</mapper>