package com.ruoyi.sy.service.impl;
|
|
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.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 org.apache.commons.codec.digest.DigestUtils;
|
import org.springframework.stereotype.Service;
|
|
import java.util.stream.Collectors;
|
|
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<ArdTankLock> selectArdTankLockList(ArdTankLock ardTankLock) {
|
return ardTankLockMapper.selectArdTankLockList(ardTankLock);
|
}
|
|
/**
|
* 新增电磁锁
|
*
|
* @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);
|
}*/
|
|
/**
|
* 修改电磁锁
|
*
|
* @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<Map<String,Object>> getAll(String usersId) {
|
public List<Map<String,Object>> getAll(String usersId) {
|
ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
|
if(ardSyUser == null){
|
return new ArrayList();
|
}
|
List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
|
String syURL = "";
|
if(syURLResult.size() != 0){
|
syURL = syURLResult.get(0).getConfigValue();
|
}else{
|
return new ArrayList();
|
}
|
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 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 = 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;
|
}
|
|
@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");
|
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 List<Map<String, Object>> getLockByCarPlate(String usersId, String carPlate) {
|
List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
|
ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
|
if(ardSyUser == null){
|
return new ArrayList();
|
}
|
List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
|
String syURL = "";
|
if(syURLResult.size() != 0){
|
syURL = syURLResult.get(0).getConfigValue();
|
}else{
|
return new ArrayList();
|
}
|
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();
|
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 ArrayList();
|
}
|
List<String> carIdList = new ArrayList();//记录三一车辆主键
|
for(Map<String,Object> map : carList){
|
carIdList.add((String) map.get("carId"));
|
}
|
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{
|
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);
|
}
|
}
|
return result;
|
}
|
}
|