zhangnaisong
2024-07-24 9aac460a313ac8284e0fd633183c93815f95e0de
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
@@ -2,25 +2,20 @@
import java.util.*;
import com.dtflys.forest.annotation.Var;
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.ArdSyCar;
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.sy.domain.ArdTankLockState;
import com.ruoyi.sy.mapper.*;
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.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;
@@ -50,6 +45,12 @@
    private SysConfigMapper sysConfigMapper;
    @Resource
    private ArdSyCarMapper ardSyCarMapper;
    @Resource
    private ArdTankLockStateMapper ardTankLockStateMapper;
    @Resource
    private SYClient sYClient;
    /**
@@ -77,7 +78,6 @@
    /**
     * 新增电磁锁
     *
     * @param ardTankLock 电磁锁
     * @return 结果
     */
    @Override
@@ -144,22 +144,23 @@
    @Override
    //public Results List<Map<String,Object>> getAll(String usersId) {
    public List<Map<String,Object>> getAll(String usersId) {
    public Map<String,Object> getAll(String usersId) {
        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
        ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
        /*if(ardSyUser == null){
            return Results.error("没有挂接三一车辆用户");
        }*/
        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 Results.error("三一车辆地址未录入");
        }*/
        }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");
        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
        //List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
        List<Map<String,Object>> result = new ArrayList();
        for(ArdTankLock ardTankLock : ardTankLockList){
            Map<String,Object> map = new HashMap();
@@ -206,23 +207,26 @@
                }
            }
        }
        //return Results.succeed(result0);
        return result0;
        Long total = ardTankLockMapper.selectArdTankLockTotal();
        Map<String,Object> resultMap = new HashMap();
        resultMap.put("list",result0);
        resultMap.put("total",total);
        return resultMap;
    }
    @Override
    public Map<String, Object> getLockByCarId(String carId, String usersId) {
        ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
        /*if(ardSyUser == null){
            return Results.error("没有挂接三一车辆用户");
        }*/
        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 Results.error("三一车辆地址未录入");
        }*/
        }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");
@@ -265,6 +269,24 @@
            }else{
                map.put("onlineTime",ardTankLock.getOnlineTime());
            }
            if(ardTankLock.getArdTankLockState() != null){//电磁锁状态
                map.put("ardTankLockState",ardTankLock.getArdTankLockState());
            }else{
                ArdTankLockState ardTankLockState = new ArdTankLockState();
                ardTankLockState.setId("");
                ardTankLockState.setLockId("");
                ardTankLockState.setLockNum("");
                ardTankLockState.setLockState("");
                ardTankLockState.setLockPositionState("");
                ardTankLockState.setLockShellState("");
                ardTankLockState.setRestartState("");
                ardTankLockState.setBatterVoltage("");
                ardTankLockState.setPowerVoltage("");
                ardTankLockState.setUploadTime("");
                ardTankLockState.setUniqueMark("");
                ardTankLockState.setLockStateMark(false);
                map.put("ardTankLockState",ardTankLockState);
            }
            Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
            map.put("carPlate",carMap.get("carPlate"));
            result.add(map);
@@ -272,4 +294,207 @@
        resultMap.put("lockList",result);
        return resultMap;
    }
    @Override
    public int deleteLockByCarId(String carId) {
        int result = ardTankLockMapper.deleteLockByCarId(carId);
        return result;
    }
    @Override
    public int updateLockByCarId(Map<String, Object> para) {
        int result = 0;
        String carId = (String) para.get("carId");
        List<ArdTankLock> ardTankLockOldList = ardTankLockMapper.getLockByCarId(carId);
        Set<String> idSet = new HashSet();//之前的主键
        for(ArdTankLock ardTankLock : ardTankLockOldList){
            idSet.add(ardTankLock.getId());
        }
        //Set<String> newIdSet = new HashSet();//传参的主键
        List<Map<String,Object>> lockList = (List<Map<String, Object>>) para.get("lockList");
        if(lockList.isEmpty()){//数组为空,做删除操作
            if(ardTankLockOldList.isEmpty()){//若没有挂接,不做操作
                return 1;
            }
            result = ardTankLockMapper.deleteLockByCarId(carId);
            return result;
        }
        List<ArdTankLock> ardTankLocks = new ArrayList();
        for(Map<String,Object> map : lockList){
            if(map.get("id") != null){//有主键,做修改操作
                //newIdSet.add((String) map.get("id"));
                idSet.remove((String) map.get("id"));
                ArdTankLock ardTankLock = new ArdTankLock();
                ardTankLock.setId((String) map.get("id"));
                ardTankLock.setLockNum((String) map.get("lockNum"));
                ardTankLock.setLockName((String) map.get("lockName"));
                ardTankLock.setImgPositionTop((String) map.get("imgPositionTop"));
                ardTankLock.setImgPositionLeft((String) map.get("imgPositionLeft"));
                ardTankLock.setCarId((String) map.get("carId"));
                ardTankLock.setEnable((String) map.get("enable"));
                result = result + ardTankLockMapper.updateArdTankLock(ardTankLock);
            }else{//无主键,做新增操作
                ArdTankLock ardTankLock = new ArdTankLock();
                ardTankLock.setId(IdUtils.simpleUUID());
                ardTankLock.setLockNum((String) map.get("lockNum"));
                ardTankLock.setLockName((String) map.get("lockName"));
                ardTankLock.setImgPositionTop((String) map.get("imgPositionTop"));
                ardTankLock.setImgPositionLeft((String) map.get("imgPositionLeft"));
                ardTankLock.setCarId(carId);
                ardTankLock.setEnable((String) map.get("enable"));
                ardTankLocks.add(ardTankLock);
            }
        }
        if(ardTankLocks.size() != 0){
            result = result + ardTankLockMapper.insertArdTankLocks(ardTankLocks);
        }
        if(!idSet.isEmpty()){
            result = result + ardTankLockMapper.deleteArdTankLockByIdSet(idSet);
        }
        return result;
    }
    @Override
    public Map<String,Object> getLockByCarPlate(String usersId, String carPlate, Integer pageNum, Integer pageSize) {
        ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
        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");
        List<ArdTankLock> ardTankLockList = new ArrayList();
        List<Map<String,Object>> result = new ArrayList();
        List<String> carIdList = new ArrayList();//记录三一车辆主键
        if(!carPlate.equals("")){
            Map<String,Object> carMap = sYClient.getCarListByPlate(syURL,carPlate,ardSyUser.getUserId(),sessionId);//车牌号模糊搜索车辆
            List<Map<String,Object>> carList = new ArrayList();
            if(((String)carMap.get("rspCode")).equals("1")){
                carList = (List<Map<String, Object>>) carMap.get("list");
            }else{
                return new HashMap();
            }
            //List<String> carIdList = new ArrayList();//记录三一车辆主键
            for(Map<String,Object> map : carList){
                carIdList.add((String) map.get("carId"));
            }
            PageHelper.startPage(pageNum, pageSize);//分页
            ardTankLockList = ardTankLockMapper.getLockByCarIdList(carIdList);
            for(ArdTankLock ardTankLock : ardTankLockList){
                if(carIdList.contains(ardTankLock.getCarId())){//返回的车辆包含数据库录入的车辆
                    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> car = carList.stream().filter(mapCar -> ((String)mapCar.get("carId")).equals(ardTankLock.getCarId())).collect(Collectors.toList()).get(0);
                    map.put("carPlate", (String) car.get("carPlate"));
                    result.add(map);
                }else{
                    continue;
                }
            }
        }else{
            PageHelper.startPage(pageNum, pageSize);//分页
            ardTankLockList = ardTankLockMapper.getAll();
            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", (String) carMap.get("carPlate"));
                }
                result.add(map);
            }
        }
        Long total = Long.valueOf(0);
        if(!carPlate.equals("")){
            total = ardTankLockMapper.selectArdTankLockTotalByCarIdList(carIdList);
        }else{
            total = ardTankLockMapper.selectArdTankLockAllTotal();
        }
        Map<String,Object> mapResult = new HashMap();
        mapResult.put("list",result);
        mapResult.put("total",total);
        return mapResult;
    }
    @Override
    public List<ArdTankLock> getArdTankLockAll() {
        List<ArdTankLock> result = ardTankLockMapper.getAll();
        return result;
    }
    @Override
    public void sendLockState(String userId, String syUserId, String syPassword) {
        /*List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
        String syURL = "";
        if(syURLResult.size() != 0){
            syURL = syURLResult.get(0).getConfigValue();
        }else{
            return;
        }
        String passwordMd5 = DigestUtils.md5Hex(syPassword);
        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, syUserId);
        String sessionId = (String) LogInResult.get("sessionId");
        Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, carId, syUserId, sessionId);
        List<Map<String,Object>> result = new ArrayList();
        List<ArdSyCar> ardSyCarResult = ardSyCarMapper.selectArdSyCarAndTankLockByUserId(userId);
        for(ArdSyCar ardSyCar : ardSyCarResult){
            Map<String,Object> map = new HashMap();
            map.put("id",ardSyCar.getId());
            map.put("carId",ardSyCar.getCarId());
            map.put("carModel",ardSyCar.getCarModel());
            map.put("carType",ardSyCar.getCarType());
            map.put("carBrand",ardSyCar.getCarBrand());
            map.put("deptId",ardSyCar.getDeptId());
            List<ArdTankLock> ardTankLockList = ardSyCar.getArdTankLockList();
            for(ArdTankLock ardTankLock : ardTankLockList){
                ArdTankLockState ardTankLockStateResult = ardTankLockStateMapper.selectArdTankLockStateByLockIdLimitOne(ardTankLock.getId());
            }
        }*/
    }
}