package com.ruoyi.sy.service.impl; 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.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-07-01 */ @Service public class ArdTankLockServiceImpl implements IArdTankLockService { @Resource private ArdTankLockMapper ardTankLockMapper; @Resource private ArdTankWallLockMapper ardTankWallLockMapper; @Resource private ArdTankWallLockTemporaryMapper ardTankWallLockTemporaryMapper; @Resource private ArdSyUserMapper ardSyUserMapper; @Resource private SysConfigMapper sysConfigMapper; @Resource private SYClient sYClient; /** * 查询电磁锁 * * @param id 电磁锁主键 * @return 电磁锁 */ @Override public ArdTankLock selectArdTankLockById(String id) { return ardTankLockMapper.selectArdTankLockById(id); } /** * 查询电磁锁列表 * * @param ardTankLock 电磁锁 * @return 电磁锁 */ @Override public List selectArdTankLockList(ArdTankLock ardTankLock) { return ardTankLockMapper.selectArdTankLockList(ardTankLock); } /** * 新增电磁锁 * * @param ardTankLock 电磁锁 * @return 结果 */ @Override public int insertArdTankLock(Map para) { String carId = (String) para.get("carId"); List> lockList = (List>)para.get("lockList"); List ardTankLocks = new ArrayList(); for(Map 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); }*/ /** * 修改电磁锁 * * @param ardTankLock 电磁锁 * @return 结果 */ @Override public int updateArdTankLock(ArdTankLock ardTankLock) { return ardTankLockMapper.updateArdTankLock(ardTankLock); } /** * 批量删除电磁锁 * * @param ids 需要删除的电磁锁主键 * @return 结果 */ @Override public int deleteArdTankLockByIds(String[] ids) { return ardTankLockMapper.deleteArdTankLockByIds(ids); } /** * 删除电磁锁信息 * * @param id 电磁锁主键 * @return 结果 */ @Override public int deleteArdTankLockById(String id) { try{ return ardTankLockMapper.deleteArdTankLockById(id); } finally { ardTankWallLockMapper.deleteArdTankWallLockByLockId(id);//删除永久电子围栏中间表 ardTankWallLockTemporaryMapper.deleteArdTankWallLockTemporaryByLockId(id);//删除临时电子围栏中间表 } } @Override //public Results List> getAll(String usersId) { public List> getAll(String usersId) { ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId); /*if(ardSyUser == null){ return Results.error("没有挂接三一车辆用户"); }*/ List 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 LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId()); String sessionId = (String) LogInResult.get("sessionId"); List ardTankLockList = ardTankLockMapper.getAll(); List> result = new ArrayList(); for(ArdTankLock ardTankLock : ardTankLockList){ Map 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 syResult = sYClient.getCarNearPositionByCarId(syURL, ardTankLock.getCarId(), ardSyUser.getUserId(), sessionId); if(((String)syResult.get("rspCode")).equals("1")){ Map carMap = ((List>)syResult.get("list")).get(0); map.put("carPlate",carMap.get("carPlate")); } result.add(map); } List> result0 = new ArrayList();//拼接carId和carPlate Set carIdSet = new HashSet(); for(Map map : result){ if(!carIdSet.contains((String) map.get("carId"))){ Map 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 map : result0){ for(Map 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 getLockByCarId(String carId, String usersId) { ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId); /*if(ardSyUser == null){ return Results.error("没有挂接三一车辆用户"); }*/ List 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 LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId()); String sessionId = (String) LogInResult.get("sessionId"); List ardTankLockList = ardTankLockMapper.getLockByCarId(carId); Map syResult = sYClient.getCarNearPositionByCarId(syURL, carId, ardSyUser.getUserId(), sessionId); Map resultMap = new HashMap(); if(ardTankLockList.size() != 0){ resultMap.put("carId",carId); if(((String)syResult.get("rspCode")).equals("1")){ Map carMap = ((List>)syResult.get("list")).get(0); resultMap.put("carPlate",carMap.get("carPlate")); } }else{ resultMap.put("carId",carId); if(((String)syResult.get("rspCode")).equals("1")){ Map carMap = ((List>)syResult.get("list")).get(0); resultMap.put("carPlate",carMap.get("carPlate")); } resultMap.put("lockList",new ArrayList()); } List> result = new ArrayList(); for(ArdTankLock ardTankLock : ardTankLockList){ Map 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 carMap = ((List>)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; } }