zhangnaisong
2024-07-02 d85713cca5443547a7d4646d4e80abfce136eff8
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
@@ -1,27 +1,56 @@
package com.ruoyi.sy.service.impl;
import java.util.List;
import java.util.*;
import com.dtflys.forest.annotation.Var;
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.ArdSyUserMapper;
import com.ruoyi.sy.mapper.ArdTankWallLockMapper;
import com.ruoyi.sy.mapper.ArdTankWallLockTemporaryMapper;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.utils.forest.SYClient;
import com.ruoyi.utils.result.Results;
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.stream.Collectors;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.sy.mapper.ArdTankLockMapper;
import com.ruoyi.sy.domain.ArdTankLock;
import com.ruoyi.sy.service.IArdTankLockService;
import javax.annotation.Resource;
/**
 * 电磁锁Service业务层处理
 *
 * @author ard
 * @date 2024-06-29
 * @date 2024-07-01
 */
@Service
public class ArdTankLockServiceImpl implements IArdTankLockService {
    @Autowired
    @Resource
    private ArdTankLockMapper ardTankLockMapper;
    @Resource
    private ArdTankWallLockMapper ardTankWallLockMapper;
    @Resource
    private ArdTankWallLockTemporaryMapper ardTankWallLockTemporaryMapper;
    @Resource
    private ArdSyUserMapper ardSyUserMapper;
    @Resource
    private SysConfigMapper sysConfigMapper;
    @Resource
    private SYClient sYClient;
    /**
     * 查询电磁锁
@@ -52,10 +81,28 @@
     * @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);
    }
    }*/
    /**
     * 修改电磁锁
@@ -87,6 +134,148 @@
     */
    @Override
    public int deleteArdTankLockById(String id) {
        return ardTankLockMapper.deleteArdTankLockById(id);
        try{
            return ardTankLockMapper.deleteArdTankLockById(id);
        } finally {
            ardTankWallLockMapper.deleteArdTankWallLockByLockId(id);//删除永久电子围栏中间表
            ardTankWallLockTemporaryMapper.deleteArdTankWallLockTemporaryByLockId(id);//删除临时电子围栏中间表
        }
    }
    @Override
    //public Results List<Map<String,Object>> getAll(String usersId) {
    public List<Map<String,Object>> getAll(String usersId) {
        ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
        /*if(ardSyUser == null){
            return Results.error("没有挂接三一车辆用户");
        }*/
        List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
        String syURL = "";
        if(syURLResult.size() != 0){
            syURL = syURLResult.get(0).getConfigValue();
        }/*else{
            return Results.error("三一车辆地址未录入");
        }*/
        String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
        String sessionId = (String) LogInResult.get("sessionId");
        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
        List<Map<String,Object>> result = new ArrayList();
        for(ArdTankLock ardTankLock : ardTankLockList){
            Map<String,Object> map = new HashMap();
            map.put("id",ardTankLock.getId());
            map.put("lockNum",ardTankLock.getLockNum());
            map.put("lockName",ardTankLock.getLockName());
            map.put("imgPositionTop",ardTankLock.getImgPositionTop());
            map.put("imgPositionLeft",ardTankLock.getImgPositionLeft());
            map.put("carId",ardTankLock.getCarId());
            map.put("enable",ardTankLock.getEnable());
            if(ardTankLock.getRestartState() == null){
                map.put("restartState","");
            }else{
                map.put("restartState",ardTankLock.getRestartState());
            }
            if(ardTankLock.getOnlineTime() == null){
                map.put("onlineTime","");
            }else{
                map.put("onlineTime",ardTankLock.getOnlineTime());
            }
            Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, ardTankLock.getCarId(), 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"));
            }
            result.add(map);
        }
        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);
        return result0;
    }
    @Override
    public Map<String, Object> getLockByCarId(String carId, String usersId) {
        ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
        /*if(ardSyUser == null){
            return Results.error("没有挂接三一车辆用户");
        }*/
        List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
        String syURL = "";
        if(syURLResult.size() != 0){
            syURL = syURLResult.get(0).getConfigValue();
        }/*else{
            return Results.error("三一车辆地址未录入");
        }*/
        String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
        String sessionId = (String) LogInResult.get("sessionId");
        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getLockByCarId(carId);
        Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, carId, ardSyUser.getUserId(), sessionId);
        Map<String,Object> resultMap = new HashMap();
        if(ardTankLockList.size() != 0){
            resultMap.put("carId",carId);
            if(((String)syResult.get("rspCode")).equals("1")){
                Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
                resultMap.put("carPlate",carMap.get("carPlate"));
            }
        }else{
            resultMap.put("carId",carId);
            if(((String)syResult.get("rspCode")).equals("1")){
                Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
                resultMap.put("carPlate",carMap.get("carPlate"));
            }
            resultMap.put("lockList",new ArrayList());
        }
        List<Map<String,Object>> result = new ArrayList();
        for(ArdTankLock ardTankLock : ardTankLockList){
            Map<String,Object> map = new HashMap();
            map.put("id",ardTankLock.getId());
            map.put("lockNum",ardTankLock.getLockNum());
            map.put("lockName",ardTankLock.getLockName());
            map.put("imgPositionTop",ardTankLock.getImgPositionTop());
            map.put("imgPositionLeft",ardTankLock.getImgPositionLeft());
            map.put("carId",ardTankLock.getCarId());
            map.put("enable",ardTankLock.getEnable());
            if(ardTankLock.getRestartState() == null){
                map.put("restartState","");
            }else{
                map.put("restartState",ardTankLock.getRestartState());
            }
            if(ardTankLock.getOnlineTime() == null){
                map.put("onlineTime","");
            }else{
                map.put("onlineTime",ardTankLock.getOnlineTime());
            }
            Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
            map.put("carPlate",carMap.get("carPlate"));
            result.add(map);
        }
        resultMap.put("lockList",result);
        return resultMap;
    }
    @Override
    public int deleteLockByCarId(String carId) {
        int result = ardTankLockMapper.deleteLockByCarId(carId);
        return result;
    }
}