SiteServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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.service.DeviceService;
  14. import com.bizmatics.service.SiteDynamicPropertiesService;
  15. import com.bizmatics.service.SiteService;
  16. import com.bizmatics.service.UserSiteService;
  17. import com.bizmatics.service.enums.DeviceStatusCode;
  18. import com.bizmatics.service.util.SecurityUtils;
  19. import com.bizmatics.service.vo.DeviceCountVO;
  20. import com.bizmatics.service.vo.SiteVO;
  21. import com.bizmatics.service.vo.SiteVOT;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import java.time.LocalDate;
  26. import java.time.LocalDateTime;
  27. import java.time.format.DateTimeFormatter;
  28. import java.util.*;
  29. import java.util.stream.Collectors;
  30. /**
  31. * <p>
  32. * 服务实现类
  33. * </p>
  34. *
  35. * @author ya
  36. * @since 2021-07-07
  37. */
  38. @Slf4j
  39. @Service
  40. public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> implements SiteService {
  41. @Autowired
  42. private DeviceMapper deviceMapper;
  43. @Autowired
  44. private DeviceService deviceService;
  45. @Autowired
  46. private AlarmPowerMapper alarmPowerMapper;
  47. @Autowired
  48. private UserSiteService userSiteService;
  49. @Autowired
  50. private SiteDynamicPropertiesService siteDynamicPropertiesService;
  51. @Override
  52. public DeviceCountVO selectCount() {
  53. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  54. DeviceCountVO deviceCountVO = new DeviceCountVO();
  55. deviceCountVO.setNormalCount(baseMapper.selectCount(userId, null, DeviceStatusCode.NORMAL.getValue()));
  56. deviceCountVO.setOffLineCount(baseMapper.selectCount(userId, null, DeviceStatusCode.OFFLINE.getValue()));
  57. deviceCountVO.setDeviceCount(baseMapper.selectCount(userId, null, DeviceStatusCode.DEVICE.getValue()));
  58. deviceCountVO.setFaultCount(baseMapper.selectCount(userId, null, DeviceStatusCode.FAULT.getValue()));
  59. deviceCountVO.setCount(userSiteService.count(userId));
  60. return deviceCountVO;
  61. }
  62. @Override
  63. public List<Site> list(String name) {
  64. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  65. return baseMapper.list(userId, name);
  66. }
  67. @Override
  68. public List<Map<String, Object>> siteList(String name) {
  69. return null;
  70. }
  71. @Override
  72. public List<SiteVO> siteAndStatusList(String name) {
  73. List<SiteVO> list = new ArrayList<>();
  74. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  75. List<Site> sites = baseMapper.list(userId, name);
  76. List<Device> deviceList = deviceMapper.list(userId, null, null, null, null, null);
  77. List<AlarmPower> alarmPowers = alarmPowerMapper.list(userId, null, null, null, null, null, 1);
  78. sites.forEach(site -> list.add(enhanceSite(deviceList, site, alarmPowers)));
  79. return list;
  80. }
  81. @Override
  82. public SiteVO getOne(Long siteId) {
  83. Site site = baseMapper.selectOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, siteId));
  84. return Optional.ofNullable(site)
  85. .map(st -> {
  86. LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = Wrappers.lambdaQuery();
  87. deviceLambdaQueryWrapper.eq(Device::getSiteId, site.getId());
  88. List<Device> list = deviceService.list(deviceLambdaQueryWrapper);
  89. Integer count = alarmPowerMapper.selectCount(null, site.getId(), null, null, null, null, 1);
  90. SiteVO siteVO = enhanceSite(list, site, null);
  91. siteVO.setAlarmPowerCount(count);
  92. return siteVO;
  93. })
  94. .orElseThrow(() -> new BusinessException("站点信息不存在"));
  95. }
  96. public SiteVO enhanceSite(List<Device> list, Site site, List<AlarmPower> alarmPowers) {
  97. SiteVO siteVo = BeanMapperUtils.map(site, SiteVO.class);
  98. siteVo.setDeviceCount(list.size());
  99. long deviceCount = list.stream()
  100. .filter(device -> device.getSiteId().equals(site.getId()))
  101. .filter(device -> DeviceStatusCode.DEVICE.getValue().equals(device.getDeviceStatus()))
  102. .count();
  103. long faultCount = list.stream()
  104. .filter(device -> device.getSiteId().equals(site.getId()))
  105. .filter(device -> DeviceStatusCode.FAULT.getValue().equals(device.getDeviceStatus()))
  106. .count();
  107. long offCount = list.stream()
  108. .filter(device -> device.getSiteId().equals(site.getId()))
  109. .filter(device -> DeviceStatusCode.OFFLINE.getValue().equals(device.getDeviceStatus()))
  110. .count();
  111. if (CollectionUtils.isNotEmpty(alarmPowers)) {
  112. siteVo.setAlarmPowerCount((int) alarmPowers.stream().filter(alarmPower -> alarmPower.getSiteId().equals(site.getId())).count());
  113. } else {
  114. siteVo.setAlarmPowerCount(0);
  115. }
  116. if (deviceCount > 0) {
  117. siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
  118. } else if (offCount > 0) {
  119. siteVo.setStatus(DeviceStatusCode.OFFLINE.getDescribe());
  120. } else if (faultCount > 0) {
  121. siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
  122. } else {
  123. siteVo.setStatus(DeviceStatusCode.NORMAL.getDescribe());
  124. }
  125. List<String> deviceTypes = list.stream()
  126. .filter(device -> device.getSiteId().equals(site.getId()))
  127. .map(Device::getDeviceType).collect(Collectors.toList());
  128. siteVo.setDeviceType(deviceTypes);
  129. return siteVo;
  130. }
  131. @Override
  132. public void siteAdd(SiteVOT siteVOT) {
  133. SysUser user = SecurityUtils.getLoginUser().getUser();
  134. Site site1 = siteVOT.getSite();
  135. site1.setCreateTime(new Date());
  136. site1.setCreator(user.getUserName());
  137. site1.setCompanyCode(11111);
  138. site1.setEnable(1);
  139. this.save(site1);
  140. int ID = site1.getId();
  141. SiteDynamicProperties siteDynamicProperties = siteVOT.getSiteDynamicProperties();
  142. siteDynamicProperties.setSiteId(ID);
  143. siteDynamicProperties.setCreator(user.getUserName());
  144. siteDynamicProperties.setCreateTime(LocalDateTime.now());
  145. siteDynamicPropertiesService.siteDynamicPropertiesAdd(siteDynamicProperties);
  146. userSiteService.UserSiteAdd(ID);
  147. }
  148. @Override
  149. public List<TemplateData> getSite(String id) {
  150. List<TemplateData> TemplateDataList = null;
  151. TemplateDataList = baseMapper.templateQuery(Integer.parseInt(id));
  152. // TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0);
  153. return TemplateDataList;
  154. }
  155. @Override
  156. public void siteUpdate(SiteVOT siteVOT) {
  157. this.updateById(siteVOT.getSite());
  158. siteDynamicPropertiesService.updateById(siteVOT.getSiteDynamicProperties());
  159. }
  160. @Override
  161. public void sitedel(String id) {
  162. List<Site> SiteList = null;
  163. SiteList = baseMapper.list1(Integer.parseInt(id));
  164. Site SiteList1 = (Site) SiteList.get(0);
  165. SiteList1.setId(Integer.parseInt(id));
  166. SiteList1.setEnable(0);
  167. this.updateById(SiteList1);
  168. }
  169. @Override
  170. public List<Map<String, Object>> sitelist(String name) {
  171. SysUser user = SecurityUtils.getLoginUser().getUser();
  172. Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
  173. List<Map<String, Object>> list = new ArrayList<>();
  174. List<SiteList> site_list = null;
  175. List<GroupingList> grouping_list = null;
  176. List<SiteList> site_grouping_list = null;
  177. grouping_list = baseMapper.GroupingList(name,user.getUserName());
  178. site_list = baseMapper.Sitelist(userId, name);
  179. site_grouping_list = baseMapper.SiteGroupinglist(userId, name);
  180. List<Map<String, Object>> list1 = new ArrayList<>();
  181. if (grouping_list.size() > 0) {
  182. for (int i = 0; i < grouping_list.size(); i++) {
  183. GroupingList grouping_list_one = (GroupingList) grouping_list.get(i);
  184. Map<String, Object> map1 = new HashMap<>();
  185. List<Map<String, Object>> list2 = new ArrayList<>();
  186. map1.put("id", grouping_list_one.getId());
  187. map1.put("grouping_id", grouping_list_one.getId());
  188. map1.put("grouping_name", grouping_list_one.getGroupingName());
  189. if (site_list.size() > 0) {
  190. for (int j = 0; j < site_list.size(); j++) {
  191. SiteList site_list_one = (SiteList) site_list.get(j);
  192. Map<String, Object> map2 = new HashMap<>();
  193. if (grouping_list_one.getId().equals(site_list_one.getGroupingId())) {
  194. map2.put("site_id", site_list_one.getId());
  195. map2.put("site_name", site_list_one.getSiteName());
  196. // map2.put("grouping_id",site_list_one.getGroupingId());
  197. list2.add(map2);
  198. }
  199. }
  200. map1.put("site_list", list2);
  201. }else {
  202. map1.put("site_list", list2);
  203. }
  204. list1.add(map1);
  205. }
  206. }
  207. if (site_grouping_list.size() > 0) {
  208. List<Map<String, Object>> list3 = new ArrayList<>();
  209. for (int i = 0; i < site_grouping_list.size(); i++) {
  210. SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
  211. Map<String, Object> map3 = new HashMap<>();
  212. map3.put("id", site_grouping_list_one.getId());
  213. map3.put("grouping_id", 0);
  214. map3.put("grouping_name", site_grouping_list_one.getSiteName());
  215. map3.put("site_list", list3);
  216. list1.add(map3);
  217. }
  218. }
  219. return list1;
  220. }
  221. }