SiteServiceImpl.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. package com.bizmatics.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  4. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5. import com.bizmatics.common.core.exception.BusinessException;
  6. import com.bizmatics.common.core.util.BeanMapperUtils;
  7. import com.bizmatics.common.mvc.base.AbstractCrudService;
  8. import com.bizmatics.model.*;
  9. import com.bizmatics.model.system.SysUser;
  10. import com.bizmatics.persistence.mapper.AlarmPowerMapper;
  11. import com.bizmatics.persistence.mapper.DeviceMapper;
  12. import com.bizmatics.persistence.mapper.SiteMapper;
  13. import com.bizmatics.persistence.mapper.system.SysUserMapper;
  14. import com.bizmatics.service.*;
  15. import com.bizmatics.service.enums.DeviceStatusCode;
  16. import com.bizmatics.service.util.SecurityUtils;
  17. import com.bizmatics.service.vo.DeviceCountVO;
  18. import com.bizmatics.service.vo.SiteVO;
  19. import com.bizmatics.service.vo.SiteVOT;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import java.time.LocalDateTime;
  24. import java.util.*;
  25. import java.util.stream.Collectors;
  26. import java.util.stream.Stream;
  27. /**
  28. * <p>
  29. * 服务实现类
  30. * </p>
  31. *
  32. * @author ya
  33. * @since 2021-07-07
  34. */
  35. @Slf4j
  36. @Service
  37. public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> implements SiteService {
  38. @Autowired
  39. private DeviceMapper deviceMapper;
  40. @Autowired
  41. private DeviceService deviceService;
  42. @Autowired
  43. private AlarmPowerMapper alarmPowerMapper;
  44. @Autowired
  45. private UserSiteService userSiteService;
  46. @Autowired
  47. private SiteDynamicPropertiesService siteDynamicPropertiesService;
  48. @Autowired
  49. private RouteService routeService;
  50. @Autowired
  51. private SysUserMapper userMapper;
  52. @Override
  53. public DeviceCountVO selectCount() {
  54. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  55. DeviceCountVO deviceCountVO = new DeviceCountVO();
  56. deviceCountVO.setNormalCount(baseMapper.selectCount(userId, null, DeviceStatusCode.NORMAL.getValue()));
  57. deviceCountVO.setOffLineCount(baseMapper.selectCount(userId, null, DeviceStatusCode.OFFLINE.getValue()));
  58. deviceCountVO.setDeviceCount(baseMapper.selectCount(userId, null, DeviceStatusCode.DEVICE.getValue()));
  59. deviceCountVO.setFaultCount(baseMapper.selectCount(userId, null, DeviceStatusCode.FAULT.getValue()));
  60. deviceCountVO.setCount(userSiteService.count(userId));
  61. return deviceCountVO;
  62. }
  63. @Override
  64. public List<Site> list(String name) {
  65. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  66. List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
  67. if (tenantDaya.size() < 0) {
  68. throw new BusinessException("无此租户,请联系管理员");
  69. }
  70. return baseMapper.list(userId, name, tenantDaya.get(0).getTenantId());
  71. }
  72. @Override
  73. public List<SiteTwo> list2(String name) {
  74. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  75. return baseMapper.list2(userId, name);
  76. }
  77. @Override
  78. public List<Site> siteList(String name) {
  79. LambdaQueryWrapper<Site> QueryWrapper = Wrappers.lambdaQuery();
  80. QueryWrapper.eq(Site::getEnable, 1);
  81. if (null != name) {
  82. QueryWrapper.eq(Site::getSiteName, name);
  83. }
  84. List<Site> siteList = this.list(QueryWrapper);
  85. return siteList;
  86. }
  87. @Override
  88. public List<SiteVO> siteAndStatusList(String name) {
  89. List<SiteVO> list = new ArrayList<>();
  90. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  91. List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
  92. if (tenantDaya.size() < 0) {
  93. throw new BusinessException("无此租户,请联系管理员");
  94. }
  95. List<Site> sites = baseMapper.list(userId, name, tenantDaya.get(0).getTenantId());
  96. List<Device> deviceList = deviceMapper.list(userId, null, null, null, null, null);
  97. List<AlarmPower> alarmPowers = alarmPowerMapper.list(userId, null, null, null, null, null, 1);
  98. sites.forEach(site -> list.add(enhanceSite(deviceList, site, alarmPowers)));
  99. return list;
  100. }
  101. @Override
  102. public SiteVO getOne(Long siteId) {
  103. Site site = baseMapper.selectOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, siteId));
  104. return Optional.ofNullable(site)
  105. .map(st -> {
  106. // LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = Wrappers.lambdaQuery();
  107. // deviceLambdaQueryWrapper.eq(Device::getSiteId, site.getId());
  108. // List<Device> list = deviceService.list(deviceLambdaQueryWrapper);
  109. List<Device> list = baseMapper.getDeviceListOne(site.getId());
  110. Integer count = alarmPowerMapper.selectCount(null, site.getId(), null, null, null, null, 1);
  111. SiteVO siteVO = enhanceSite(list, site, null);
  112. siteVO.setAlarmPowerCount(count);
  113. return siteVO;
  114. })
  115. .orElseThrow(() -> new BusinessException("站点信息不存在"));
  116. }
  117. public SiteVO enhanceSite(List<Device> list, Site site, List<AlarmPower> alarmPowers) {
  118. SiteVO siteVo = BeanMapperUtils.map(site, SiteVO.class);
  119. siteVo.setDeviceCount(list.size());
  120. long deviceCount = list.stream()
  121. .filter(device -> device.getSiteId().equals(site.getId()))
  122. .filter(device -> DeviceStatusCode.DEVICE.getValue().equals(device.getDeviceStatus()))
  123. .count();
  124. long faultCount = list.stream()
  125. .filter(device -> device.getSiteId().equals(site.getId()))
  126. .filter(device -> DeviceStatusCode.FAULT.getValue().equals(device.getDeviceStatus()))
  127. .count();
  128. long offCount = list.stream()
  129. .filter(device -> device.getSiteId().equals(site.getId()))
  130. .filter(device -> DeviceStatusCode.OFFLINE.getValue().equals(device.getDeviceStatus()))
  131. .count();
  132. if (CollectionUtils.isNotEmpty(alarmPowers)) {
  133. siteVo.setAlarmPowerCount((int) alarmPowers.stream().filter(alarmPower -> alarmPower.getSiteId().equals(site.getId())).count());
  134. } else {
  135. siteVo.setAlarmPowerCount(0);
  136. }
  137. if (deviceCount > 0) {
  138. siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
  139. } else if (offCount > 0) {
  140. siteVo.setStatus(DeviceStatusCode.OFFLINE.getDescribe());
  141. } else if (faultCount > 0) {
  142. siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
  143. } else {
  144. siteVo.setStatus(DeviceStatusCode.NORMAL.getDescribe());
  145. }
  146. List<String> deviceTypes = list.stream()
  147. .filter(device -> device.getSiteId().equals(site.getId()))
  148. .map(Device::getDeviceType).collect(Collectors.toList());
  149. siteVo.setDeviceType(deviceTypes);
  150. return siteVo;
  151. }
  152. @Override
  153. public void siteAdd(SiteVOT siteVOT) {
  154. List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
  155. if (tenantDaya.size() < 0) {
  156. throw new BusinessException("无此租户,请联系管理员");
  157. }
  158. SysUser user = SecurityUtils.getLoginUser().getUser();
  159. Site site1 = siteVOT.getSite();
  160. site1.setCreateTime(new Date());
  161. site1.setCreator(user.getUserName());
  162. site1.setCompanyCode(11111);
  163. site1.setEnable(1);
  164. site1.setTenantId(tenantDaya.get(0).getTenantId());
  165. this.save(site1);
  166. int ID = site1.getId();
  167. SiteDynamicProperties siteDynamicProperties = siteVOT.getSiteDynamicProperties();
  168. siteDynamicProperties.setSiteId(ID);
  169. siteDynamicProperties.setCreator(user.getUserName());
  170. siteDynamicProperties.setCreateTime(LocalDateTime.now());
  171. siteDynamicPropertiesService.siteDynamicPropertiesAdd(siteDynamicProperties);
  172. userSiteService.UserSiteAdd(ID);
  173. }
  174. @Override
  175. public List<TemplateData> getSite(String id) {
  176. List<TemplateData> TemplateDataList = null;
  177. TemplateDataList = baseMapper.templateQuery(Integer.parseInt(id));
  178. // TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0);
  179. return TemplateDataList;
  180. }
  181. @Override
  182. public void siteUpdate(SiteVOT siteVOT) {
  183. this.updateById(siteVOT.getSite());
  184. siteDynamicPropertiesService.updateById(siteVOT.getSiteDynamicProperties());
  185. }
  186. @Override
  187. public void sitedel(String id) {
  188. List<Site> SiteList = null;
  189. SiteList = baseMapper.list1(Integer.parseInt(id));
  190. Site SiteList1 = (Site) SiteList.get(0);
  191. SiteList1.setId(Integer.parseInt(id));
  192. SiteList1.setEnable(0);
  193. this.updateById(SiteList1);
  194. }
  195. @Override
  196. public List<Map<String, Object>> sitelist(String name) {
  197. SysUser user = SecurityUtils.getLoginUser().getUser();
  198. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  199. List<Map<String, Object>> list = new ArrayList<>();
  200. List<SiteList> site_list = null;
  201. List<GroupingList> grouping_list = null;
  202. List<SiteList> site_grouping_list = null;
  203. List<Map<String, Object>> list1 = new ArrayList<>();
  204. List<SysUser> tenantDaya = userMapper.getTenantId(SecurityUtils.getLoginUser().getUser().getUserId());
  205. if (tenantDaya.size() < 0) {
  206. throw new BusinessException("无此租户,请联系管理员");
  207. }
  208. if (tenantDaya.get(0).getUserType().equals("01")){
  209. grouping_list = baseMapper.GroupingList(name, null,tenantDaya.get(0).getTenantId());
  210. site_list = baseMapper.SitelistOne(name,tenantDaya.get(0).getTenantId());
  211. site_grouping_list = baseMapper.SiteGroupinglist(0, name,tenantDaya.get(0).getTenantId());
  212. if (grouping_list.size() > 0) {
  213. for (int i = 0; i < grouping_list.size(); i++) {
  214. GroupingList grouping_list_one = (GroupingList) grouping_list.get(i);
  215. Map<String, Object> map1 = new HashMap<>();
  216. List<Map<String, Object>> list2 = new ArrayList<>();
  217. map1.put("id", grouping_list_one.getId());
  218. map1.put("grouping_id", grouping_list_one.getId());
  219. map1.put("grouping_name", grouping_list_one.getGroupingName());
  220. if (site_list.size() > 0) {
  221. for (int j = 0; j < site_list.size(); j++) {
  222. SiteList site_list_one = (SiteList) site_list.get(j);
  223. Map<String, Object> map2 = new HashMap<>();
  224. if (grouping_list_one.getId().equals(site_list_one.getGroupingId())) {
  225. map2.put("site_id", site_list_one.getId());
  226. map2.put("site_name", site_list_one.getSiteName());
  227. // map2.put("grouping_id",site_list_one.getGroupingId());
  228. list2.add(map2);
  229. }
  230. }
  231. map1.put("site_list", list2);
  232. } else {
  233. map1.put("site_list", list2);
  234. }
  235. list1.add(map1);
  236. }
  237. }
  238. if (site_grouping_list.size() > 0) {
  239. List<Map<String, Object>> list3 = new ArrayList<>();
  240. for (int i = 0; i < site_grouping_list.size(); i++) {
  241. SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
  242. Map<String, Object> map3 = new HashMap<>();
  243. map3.put("id", site_grouping_list_one.getId());
  244. map3.put("grouping_id", 0);
  245. map3.put("grouping_name", site_grouping_list_one.getSiteName());
  246. map3.put("site_list", list3);
  247. list1.add(map3);
  248. }
  249. }
  250. }else if (tenantDaya.get(0).getUserType().equals("00")){
  251. List<GroupingList> grouping_list_one = null;
  252. List<GroupingList> grouping_list_two = null;
  253. site_list = baseMapper.Sitelist(userId, name,tenantDaya.get(0).getTenantId());
  254. grouping_list_one = baseMapper.GroupingListOne(name, userId,tenantDaya.get(0).getTenantId());
  255. grouping_list_two = baseMapper.GroupingListTwo(user.getUserName());
  256. // 合并list
  257. grouping_list = Stream.of(grouping_list_one, grouping_list_two).flatMap(Collection::stream).collect(Collectors.toList());
  258. //排序
  259. List<GroupingList> dateListMap = grouping_list;
  260. // Map<Integer, List<GroupingList>> dateListMap = grouping_list.stream().collect(Collectors.groupingBy(GroupingList::getId,TreeMap::new,Collectors.toList())).descendingMap();
  261. site_grouping_list = baseMapper.SiteGroupinglist(userId, name,tenantDaya.get(0).getTenantId());
  262. if (dateListMap.size() > 0) {
  263. for (int i = 0; i < dateListMap.size(); i++) {
  264. GroupingList grouping_list_three = (GroupingList) dateListMap.get(i);
  265. Map<String, Object> map1 = new HashMap<>();
  266. List<Map<String, Object>> list2 = new ArrayList<>();
  267. map1.put("id", grouping_list_three.getId());
  268. map1.put("grouping_id", grouping_list_three.getId());
  269. map1.put("grouping_name", grouping_list_three.getGroupingName());
  270. if (site_list.size() > 0) {
  271. for (int j = 0; j < site_list.size(); j++) {
  272. SiteList site_list_one = (SiteList) site_list.get(j);
  273. Map<String, Object> map2 = new HashMap<>();
  274. if (grouping_list_three.getId().equals(site_list_one.getGroupingId())) {
  275. map2.put("site_id", site_list_one.getId());
  276. map2.put("site_name", site_list_one.getSiteName());
  277. // map2.put("grouping_id",site_list_one.getGroupingId());
  278. list2.add(map2);
  279. }
  280. }
  281. map1.put("site_list", list2);
  282. } else {
  283. map1.put("site_list", list2);
  284. }
  285. list1.add(map1);
  286. }
  287. }
  288. if (site_grouping_list.size() > 0) {
  289. List<Map<String, Object>> list3 = new ArrayList<>();
  290. for (int i = 0; i < site_grouping_list.size(); i++) {
  291. SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
  292. Map<String, Object> map3 = new HashMap<>();
  293. map3.put("id", site_grouping_list_one.getId());
  294. map3.put("grouping_id", 0);
  295. map3.put("grouping_name", site_grouping_list_one.getSiteName());
  296. map3.put("site_list", list3);
  297. list1.add(map3);
  298. }
  299. }
  300. }
  301. return list1;
  302. }
  303. @Override
  304. public List<DeviceAnalogVariableList> dynamicPropertiesDroplist(Integer siteId, Integer dataArea) {
  305. List<DeviceAnalogVariableList> deviceAnalogVariableList = new ArrayList<>();
  306. if (siteId != 0) {
  307. deviceAnalogVariableList = baseMapper.deviceAnalogVariableList(siteId, dataArea);
  308. }
  309. return deviceAnalogVariableList;
  310. }
  311. @Override
  312. public List<Route> routeDroplist() {
  313. LambdaQueryWrapper<Route> routeLambdaQueryWrapper = Wrappers.lambdaQuery();
  314. routeLambdaQueryWrapper.eq(Route::getEnable, 1);
  315. List<Route> list = routeService.list(routeLambdaQueryWrapper);
  316. return list;
  317. }
  318. }