From 57c673aa3e83677bcf5d30b4b45d06bae6609db8 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期四, 08 八月 2024 16:14:40 +0800 Subject: [PATCH] 优化:获取会话 --- ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java | 379 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 356 insertions(+), 23 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java index 14f8653..90d58d2 100644 --- a/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java @@ -1,11 +1,29 @@ package com.ruoyi.app.application.service.impl; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; -import com.alibaba.fastjson2.JSON; +import com.ruoyi.app.position.appcontainer.AppContainer; +import com.ruoyi.app.position.domain.ArdAppPosition; +import com.ruoyi.app.position.mapper.ArdAppPositionMapper; +import com.ruoyi.common.core.domain.entity.SysConfig; +import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; 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.system.mapper.SysDeptMapper; +import com.ruoyi.system.mapper.SysRoleMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.utils.forest.SYClient; +import com.ruoyi.utils.gis.GisUtil; +import com.ruoyi.utils.websocket.util.WebSocketUtils; +import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.ruoyi.common.utils.StringUtils; @@ -16,17 +34,47 @@ import javax.annotation.PostConstruct; import javax.annotation.Resource; +import javax.websocket.Session; + +import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; /** * 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆Service涓氬姟灞傚鐞� * * @author ard - * @date 2024-01-23 + * @date 2024-01-25 */ @Service public class ArdAppApplicationServiceImpl implements IArdAppApplicationService { @Resource private ArdAppApplicationMapper ardAppApplicationMapper; + + @Resource + private SysRoleMapper sysRoleMapper; + + @Resource + private SysUserMapper userMapper; + + @Resource + private SysDeptMapper sysDeptMapper; + + @Resource + private ArdAppPositionMapper ardAppPositionMapper; + + @Resource + private ArdSyUserMapper ardSyUserMapper; + + @Resource + private SysConfigMapper sysConfigMapper; + + @Resource + private ArdSyCarMapper ardSyCarMapper; + + @Resource + private SYClient sYClient; + + @Value("${minio.endpoint}") + private String minioEndpoint; private Map<String,Thread> threadMap = new HashMap(); @@ -75,12 +123,12 @@ /** * 鏌ヨ鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆 * - * @param applicationId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭 + * @param soilderId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭 * @return 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆 */ @Override - public ArdAppApplication selectArdAppApplicationByApplicationId(String applicationId) { - return ardAppApplicationMapper.selectArdAppApplicationByApplicationId(applicationId); + public ArdAppApplication selectArdAppApplicationBySoilderId(String soilderId) { + return ardAppApplicationMapper.selectArdAppApplicationBySoilderId(soilderId); } /** @@ -119,23 +167,23 @@ /** * 鎵归噺鍒犻櫎鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆 * - * @param applicationIds 闇�瑕佸垹闄ょ殑鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭 + * @param soilderIds 闇�瑕佸垹闄ょ殑鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭 * @return 缁撴灉 */ @Override - public int deleteArdAppApplicationByApplicationIds(String[] applicationIds) { - return ardAppApplicationMapper.deleteArdAppApplicationByApplicationIds(applicationIds); + public int deleteArdAppApplicationBySoilderIds(String[] soilderIds) { + return ardAppApplicationMapper.deleteArdAppApplicationBySoilderIds(soilderIds); } /** * 鍒犻櫎鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆淇℃伅 * - * @param applicationId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭 + * @param soilderId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭 * @return 缁撴灉 */ @Override - public int deleteArdAppApplicationByApplicationId(String applicationId) { - return ardAppApplicationMapper.deleteArdAppApplicationByApplicationId(applicationId); + public int deleteArdAppApplicationBySoilderId(String soilderId) { + return ardAppApplicationMapper.deleteArdAppApplicationBySoilderId(soilderId); } @Override @@ -151,6 +199,7 @@ ardAppApplication.setApplicationType("Commander"); ardAppApplication.setBegin(""); ardAppApplication.setState("0"); + ardAppApplication.setSoilderCheck("true");//鎸囨尌绔湭瀹℃壒涔熻涓簍rue,涓嶉渶瑕佸崟鍏电鏌ョ湅 int resultSingle = ardAppApplicationMapper.updateArdAppApplicationByCommanderIdAndSoilderIdAndType(ardAppApplication); result = result + resultSingle; if(resultSingle == 0){ @@ -175,12 +224,30 @@ ardAppApplication.setApplicationType("SYCar"); ardAppApplication.setBegin(""); ardAppApplication.setState("0"); + ardAppApplication.setSoilderCheck("true");//鎸囨尌绔湭瀹℃壒涔熻涓簍rue,涓嶉渶瑕佸崟鍏电鏌ョ湅 int resultSingle = ardAppApplicationMapper.updateArdAppApplicationByCommanderIdAndSoilderIdAndType(ardAppApplication); result = result + resultSingle; if(resultSingle == 0){ ardAppApplication.setApplicationId(IdUtils.simpleUUID()); resultSingle = ardAppApplicationMapper.insertArdAppApplication(ardAppApplication); result = result + resultSingle; + } + //鍔犲叆缁檖c绔痺ebsocket杞彂 + List<SysRole> sysRoleList = sysRoleMapper.selectRolePermissionByUserId(commanderId); + for(SysRole sysRole : sysRoleList){ + if(!sysRole.getRoleKey().equals("appLeader")){ + Map<String,Object> resultMap = ardAppApplicationMapper.selectSYCarApplicationByPCIdAndSoilderId(commanderId,usersId); + Map<String,Map<String,Object>> msg = new HashMap(); + msg.put("60000",resultMap); + for(String id : ONLINE_USER_SESSIONS.keySet()){ + if(id.startsWith(commanderId)){ + Session session = ONLINE_USER_SESSIONS.get(id); + WebSocketUtils.sendMessage(session,msg); + break; + } + } + break;//涓�涓猵c绔敤鎴峰彲鑳芥寕鎺ュ涓鑹诧紝姣忎釜pc绔彧杞彂涓�娆� + } } } return result; @@ -265,16 +332,6 @@ Date date = new Date(); //鏌ョ湅鎸囨尌绔綅缃敵璇� List<Map<String, Object>> resultCommanderPosition = new ArrayList(); - for(Map<String, Object> map : ardAppApplicationList){ - Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); - interval = 24 * 60 * 60 * 1000 - interval; - Long hour = interval / (60 * 60 * 1000); - Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); - map.put("time",hour + "鏃�" + min + "鍒�"); - if(((String)map.get("applicationType")).equals("Commander")){ - resultCommanderPosition.add(map); - } - } //鏌ョ湅杞﹁締浣嶇疆鐢宠 List<Map<String, Object>> resultSYCarsPosition = new ArrayList(); for(Map<String, Object> map : ardAppApplicationList){ @@ -282,8 +339,11 @@ interval = 24 * 60 * 60 * 1000 - interval; Long hour = interval / (60 * 60 * 1000); Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); - map.put("time",hour + "鏃�" + min + "鍒�"); - if(((String)map.get("applicationType")).equals("SYCar")){ + Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000; + map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�"); + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ resultSYCarsPosition.add(map); } } @@ -291,4 +351,277 @@ result.put("SYCars",resultSYCarsPosition); return result; } + + @Override + public Map<String, List<Map<String, Object>>> getSendPositionTrue(String soilderId) { + Map<String, List<Map<String, Object>>> result = new HashMap(); + List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationBySoilderIdTrue(soilderId); + Date date = new Date(); + //鏌ョ湅鎸囨尌绔綅缃敵璇� + List<Map<String, Object>> resultCommanderPosition = new ArrayList(); + //鏌ョ湅杞﹁締浣嶇疆鐢宠 + List<Map<String, Object>> resultSYCarsPosition = new ArrayList(); + for(Map<String, Object> map : ardAppApplicationList){ + Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); + interval = 24 * 60 * 60 * 1000 - interval; + Long hour = interval / (60 * 60 * 1000); + Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); + Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000; + map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�"); + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ + resultSYCarsPosition.add(map); + } + } + result.put("commander",resultCommanderPosition); + result.put("SYCars",resultSYCarsPosition); + return result; + } + + @Override + public Map<String, List<Map<String, Object>>> getCheckPositionOwn(String soilderId) { + Map<String, List<Map<String, Object>>> result = new HashMap(); + List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationBySoilderIdFalse(soilderId); + Date date = new Date(); + //鏌ョ湅鎸囨尌绔綅缃敵璇� + List<Map<String, Object>> resultCommanderPosition = new ArrayList(); + //鏌ョ湅杞﹁締浣嶇疆鐢宠 + List<Map<String, Object>> resultSYCarsPosition = new ArrayList(); + for(Map<String, Object> map : ardAppApplicationList){ + /*if(((String)map.get("state")).equals("1")){ + Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); + interval = 24 * 60 * 60 * 1000 - interval; + Long hour = interval / (60 * 60 * 1000); + Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); + map.put("time",hour + "鏃�" + min + "鍒�"); + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ + resultSYCarsPosition.add(map); + } + }else{ + map.put("time",""); + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ + resultSYCarsPosition.add(map); + } + }*/ + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ + resultSYCarsPosition.add(map); + } + } + result.put("commander",resultCommanderPosition); + result.put("SYCars",resultSYCarsPosition); + return result; + } + + @Override + public int approvalCheckPositionOwn(String soilderId, Map<String, String> para) { + String applicationType = para.get("applicationType"); + String commanderId = para.get("commanderId"); + int result = ardAppApplicationMapper.updateSoilderCheckByCommanderIdAndSoilderIdAndType(soilderId,commanderId,applicationType); + return result; + } + + @Override + public List<Map<String, Object>> getCheckPositionNo(String commanderId) {/// + List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationByCommanderIdNoCheck(commanderId); + Date date = new Date(); + for(Map<String, Object> map : ardAppApplicationList){ + if(((String)map.get("begin")).equals("")){ + map.put("time",""); + }else{ + Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); + interval = 24 * 60 * 60 * 1000 - interval; + Long hour = interval / (60 * 60 * 1000); + Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); + Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000; + map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�"); + } + } + return ardAppApplicationList; + } + + @Override + public Map<String,Map<String,List<Map<String,Object>>>> getSoilderAndCarPositionByCommanderId(String commanderId,Map<String, Double> para) { + Map<String,Map<String,List<Map<String,Object>>>> mapResault = new HashMap(); + SysUser sysUser = userMapper.selectUserById(commanderId);//鑾峰彇绯荤粺鐢ㄦ埛 + List<Long> deptIdList = new ArrayList(); + deptIdList.add(sysUser.getDeptId()); + deptIdList = getOwnAndChildrenDeptIdList(deptIdList,new ArrayList());//閫掑綊鏌ヨ涓嬪睘閮ㄩ棬涓婚敭 + List<SysUser> sysUsersResult = userMapper.getOwnAndChildrenSoilderListAll(deptIdList); + List<SysUser> sysUsersResultOnline = sysUsersResult.stream().filter(sysUserTest -> sysUserTest.getAppOnlineState().equals("1")).collect(Collectors.toList());//鍦ㄧ嚎鐢ㄦ埛 + List<SysUser> sysUsersResultOffline = sysUsersResult.stream().filter(sysUserTest -> !sysUserTest.getAppOnlineState().equals("1")).collect(Collectors.toList());//绂荤嚎鐢ㄦ埛 + List<Map<String,Object>> sysUsersOnlineList = new ArrayList(); + List<Map<String,Object>> sysUsersOfflineList = new ArrayList(); + for(SysUser sysUserIn : sysUsersResultOnline){ + Map<String,Object> map = new HashMap(); + map.put("userId",sysUserIn.getUserId()); + map.put("deptId",sysUserIn.getDeptId()); + map.put("userName",sysUserIn.getUserName()); + map.put("nickName",sysUserIn.getNickName()); + try{ + map.put("longitude", AppContainer.getArdAppPositionMap().get(sysUserIn.getUserId()).getLongitude()); + map.put("latitude",AppContainer.getArdAppPositionMap().get(sysUserIn.getUserId()).getLatitude()); + map.put("altitude",AppContainer.getArdAppPositionMap().get(sysUserIn.getUserId()).getAltitude()); + }catch(Exception e){ + ArdAppPosition ardAppPosition = ardAppPositionMapper.getLastAPPPositionByUserId(sysUserIn.getUserId()); + map.put("longitude",ardAppPosition.getLongitude()); + map.put("latitude",ardAppPosition.getLatitude()); + map.put("altitude",ardAppPosition.getAltitude()); + } + sysUsersOnlineList.add(map); + } + List<Map<String,Object>> sysUsersOnlineNearList = new ArrayList();//鍦�200绫冲唴 + for(Map<String,Object> mapOn : sysUsersOnlineList){ + Double longitude = (Double) mapOn.get("longitude"); + Double latitude = (Double) mapOn.get("latitude"); + double distance = GisUtil.getDistance(para.get("longitude"),para.get("latitude"),longitude,latitude); + if(distance <= 200){ + sysUsersOnlineNearList.add(mapOn); + } + } + Map<String,List<Map<String,Object>>> appMap = new HashMap(); + appMap.put("onlineApp",sysUsersOnlineNearList); + for(SysUser sysUserIn : sysUsersResultOffline){ + Map<String,Object> map = new HashMap(); + map.put("userId",sysUserIn.getUserId()); + map.put("deptId",sysUserIn.getDeptId()); + map.put("userName",sysUserIn.getUserName()); + map.put("nickName",sysUserIn.getNickName()); + sysUsersOfflineList.add(map); + } + appMap.put("offlineApp",sysUsersOfflineList); + mapResault.put("app",appMap); + + ArdSyUser ardSyUserPara = new ArdSyUser(); + ardSyUserPara.setSysUserId(commanderId); + List<ArdSyUser> ardSyUserList = ardSyUserMapper.selectArdSyUserList(ardSyUserPara);//鏌ヨ鎸傛帴鐨勪笁涓�璐﹀彿 + + String syURL = ""; + List<SysConfig> sysConfigResult = sysConfigMapper.selectByType("syCarPT"); + if(sysConfigResult.size() > 0){ + syURL = sysConfigResult.get(0).getConfigValue(); + } + + if(ardSyUserList.size() == 0 || syURL.equals("")){ + List<Map<String,Object>> onlineCar = new ArrayList(); + List<Map<String,Object>> offlineCar = new ArrayList(); + Map<String,List<Map<String,Object>>> carMap = new HashMap(); + carMap.put("onlineCar",onlineCar); + carMap.put("offlineCar",offlineCar); + mapResault.put("car",carMap); + return mapResault; + } + + List<String> carIdList = ardSyCarMapper.selectArdSyCarByDeptIds(deptIdList); + String carIds = ""; + for(String carId : carIdList){ + carIds = carIds + carId + ","; + } + carIds = carIds.substring(0,carIds.length() - 1); + String passwordMd5 = DigestUtils.md5Hex(ardSyUserList.get(0).getPassword()); + Map<String,Object> syLoginResult = sYClient.logIn(syURL, passwordMd5, ardSyUserList.get(0).getUserId()); + String sessionId = (String) syLoginResult.get("sessionId"); + Map<String,Object> carNearPositionResult = sYClient.getCarNearPositionByCarId(syURL, carIds, ardSyUserList.get(0).getUserId(),sessionId); + if(((String)carNearPositionResult.get("rspCode")).equals("1")){ + List<Map<String,Object>> SYCarPositionList = (List<Map<String, Object>>) carNearPositionResult.get("list"); + //绛涢�夊湪绾� + List<Map<String,Object>> onlineSYCarPositionList = SYCarPositionList.stream().filter(map -> ((String)map.get("stateCn")).startsWith("鍦ㄧ嚎")).collect(Collectors.toList()); + //绛涢��200绫宠寖鍥村唴 + List<Map<String,Object>> onlineSYCarPositionNearList = new ArrayList();//鍦�200绫冲唴 + for(Map<String,Object> mapOn : onlineSYCarPositionList){ + Double longitude = new BigDecimal((String) mapOn.get("lng")).doubleValue(); + Double latitude = new BigDecimal((String) mapOn.get("lat")).doubleValue(); + double distance = GisUtil.getDistance(para.get("longitude"),para.get("latitude"),longitude,latitude); + if(distance <= 200){ + mapOn.put("longitude",longitude); + mapOn.put("latitude",latitude); + onlineSYCarPositionNearList.add(mapOn); + } + } + + //for(Map<String,Object> sycar : onlineSYCarPositionList){ + for(Map<String,Object> sycar : onlineSYCarPositionNearList){ + Map<String,Object> map = ardSyCarMapper.getArdSyCarAndDeptByCarId((String)sycar.get("carId")); + String carModel = this.minioEndpoint + "/" + (String) map.get("carModel"); + map.put("carModel",carModel); + sycar.putAll(map); + } + //绛涢�夌绾� + List<Map<String,Object>> offlineSYCarPositionList = SYCarPositionList.stream().filter(map -> ((String)map.get("stateCn")).startsWith("绂荤嚎")).collect(Collectors.toList()); + for(Map<String,Object> sycar : offlineSYCarPositionList){ + Map<String,Object> map = ardSyCarMapper.getArdSyCarAndDeptByCarId((String)sycar.get("carId")); + String carModel = this.minioEndpoint + "/" + (String) map.get("carModel"); + map.put("carModel",carModel); + sycar.putAll(map); + } + Map<String,List<Map<String,Object>>> carMap = new HashMap(); + //carMap.put("onlineCar",onlineSYCarPositionList); + carMap.put("onlineCar",onlineSYCarPositionNearList); + carMap.put("offlineCar",offlineSYCarPositionList); + mapResault.put("car",carMap); + }else{ + List<Map<String,Object>> onlineCar = new ArrayList(); + List<Map<String,Object>> offlineCar = new ArrayList(); + Map<String,List<Map<String,Object>>> carMap = new HashMap(); + carMap.put("onlineCar",onlineCar); + carMap.put("offlineCar",offlineCar); + mapResault.put("car",carMap); + return mapResault; + } + + return mapResault; + } + + @Override + public Map<String, List<Map<String, Object>>> getSendPositionALL(String soilderId) { + Map<String, List<Map<String, Object>>> result = new HashMap(); + List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationBySoilderIdALL(soilderId); + Date date = new Date(); + //鏌ョ湅鎸囨尌绔綅缃敵璇� + List<Map<String, Object>> resultCommanderPosition = new ArrayList(); + //鏌ョ湅杞﹁締浣嶇疆鐢宠 + List<Map<String, Object>> resultSYCarsPosition = new ArrayList(); + for(Map<String, Object> map : ardAppApplicationList){ + if(((String)map.get("begin")).equals("")){ + map.put("time",""); + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ + resultSYCarsPosition.add(map); + } + }else{ + Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); + interval = 24 * 60 * 60 * 1000 - interval; + Long hour = interval / (60 * 60 * 1000); + Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); + Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000; + map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�"); + if(((String)map.get("applicationType")).equals("Commander")){ + resultCommanderPosition.add(map); + }else if(((String)map.get("applicationType")).equals("SYCar")){ + resultSYCarsPosition.add(map); + } + } + } + result.put("commander",resultCommanderPosition); + result.put("SYCars",resultSYCarsPosition); + return result; + } + + public List<Long> getOwnAndChildrenDeptIdList(List<Long> deptIdList,List<Long> deptIdListr){ + deptIdListr.addAll(deptIdList); + List<Long> result = sysDeptMapper.getChildrenDeptIdList(deptIdList); + if(result.size() != 0){ + deptIdListr.addAll(result); + result = getOwnAndChildrenDeptIdList(result,deptIdListr); + } + deptIdListr = deptIdListr.stream().distinct().collect(Collectors.toList()); + return deptIdListr; + } } -- Gitblit v1.9.3