SiteServiceImpl.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  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.persistence.mapper.AlarmPowerMapper;
  10. import com.bizmatics.persistence.mapper.DeviceMapper;
  11. import com.bizmatics.persistence.mapper.SiteMapper;
  12. import com.bizmatics.service.DeviceService;
  13. import com.bizmatics.service.SiteDynamicPropertiesService;
  14. import com.bizmatics.service.SiteService;
  15. import com.bizmatics.service.UserSiteService;
  16. import com.bizmatics.service.enums.DeviceStatusCode;
  17. import com.bizmatics.service.util.SessionLocal;
  18. import com.bizmatics.service.vo.DeviceCountVO;
  19. import com.bizmatics.service.vo.SiteVO;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import java.time.format.DateTimeFormatter;
  24. import java.util.*;
  25. import java.util.stream.Collectors;
  26. /**
  27. * <p>
  28. * 服务实现类
  29. * </p>
  30. *
  31. * @author ya
  32. * @since 2021-07-07
  33. */
  34. @Slf4j
  35. @Service
  36. public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> implements SiteService {
  37. @Autowired
  38. private DeviceMapper deviceMapper;
  39. @Autowired
  40. private DeviceService deviceService;
  41. @Autowired
  42. private AlarmPowerMapper alarmPowerMapper;
  43. @Autowired
  44. private UserSiteService userSiteService;
  45. @Autowired
  46. private SiteDynamicPropertiesService siteDynamicPropertiesService;
  47. @Override
  48. public DeviceCountVO selectCount() {
  49. // Integer userId = UserUtil.getUserId();
  50. Integer userId = SessionLocal.getUserId();
  51. DeviceCountVO deviceCountVO = new DeviceCountVO();
  52. deviceCountVO.setNormalCount(baseMapper.selectCount(userId, null, DeviceStatusCode.NORMAL.getValue()));
  53. deviceCountVO.setOffLineCount(baseMapper.selectCount(userId, null, DeviceStatusCode.OFFLINE.getValue()));
  54. deviceCountVO.setDeviceCount(baseMapper.selectCount(userId, null, DeviceStatusCode.DEVICE.getValue()));
  55. deviceCountVO.setFaultCount(baseMapper.selectCount(userId, null, DeviceStatusCode.FAULT.getValue()));
  56. deviceCountVO.setCount(userSiteService.count(userId));
  57. return deviceCountVO;
  58. }
  59. @Override
  60. public List<Site> list(String name) {
  61. return baseMapper.list(SessionLocal.getUserId(), name);
  62. }
  63. @Override
  64. public List<Map<String, Object>> Sitelist(String name) {
  65. List<Map<String, Object>> list = new ArrayList<>();
  66. List<SiteList> site_list = null;
  67. List<GroupingList> grouping_list = null;
  68. List<SiteList> site_grouping_list = null;
  69. grouping_list = baseMapper.GroupingList(name,SessionLocal.getUser().getUserName());
  70. site_list = baseMapper.Sitelist(SessionLocal.getUserId(), name);
  71. site_grouping_list = baseMapper.SiteGroupinglist(SessionLocal.getUserId(), name);
  72. List<Map<String, Object>> list1 = new ArrayList<>();
  73. if (grouping_list.size() > 0) {
  74. for (int i = 0; i < grouping_list.size(); i++) {
  75. GroupingList grouping_list_one = (GroupingList) grouping_list.get(i);
  76. Map<String, Object> map1 = new HashMap<>();
  77. List<Map<String, Object>> list2 = new ArrayList<>();
  78. map1.put("id", grouping_list_one.getId());
  79. map1.put("grouping_id", grouping_list_one.getId());
  80. map1.put("grouping_name", grouping_list_one.getGroupingName());
  81. if (site_list.size() > 0) {
  82. for (int j = 0; j < site_list.size(); j++) {
  83. SiteList site_list_one = (SiteList) site_list.get(j);
  84. Map<String, Object> map2 = new HashMap<>();
  85. if (grouping_list_one.getId().equals(site_list_one.getGroupingId())) {
  86. map2.put("site_id", site_list_one.getId());
  87. map2.put("site_name", site_list_one.getSiteName());
  88. // map2.put("grouping_id",site_list_one.getGroupingId());
  89. list2.add(map2);
  90. }
  91. }
  92. map1.put("site_list", list2);
  93. }else {
  94. map1.put("site_list", list2);
  95. }
  96. list1.add(map1);
  97. }
  98. }
  99. if (site_grouping_list.size() > 0) {
  100. List<Map<String, Object>> list3 = new ArrayList<>();
  101. for (int i = 0; i < site_grouping_list.size(); i++) {
  102. SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
  103. Map<String, Object> map3 = new HashMap<>();
  104. map3.put("id", site_grouping_list_one.getId());
  105. map3.put("grouping_id", 0);
  106. map3.put("grouping_name", site_grouping_list_one.getSiteName());
  107. map3.put("site_list", list3);
  108. list1.add(map3);
  109. }
  110. }
  111. return list1;
  112. }
  113. @Override
  114. public List<SiteVO> siteAndStatusList(String name) {
  115. List<SiteVO> list = new ArrayList<>();
  116. // Integer userId = UserUtil.getUserId();
  117. Integer userId = SessionLocal.getUserId();
  118. List<Site> sites = baseMapper.list(SessionLocal.getUserId(), name);
  119. List<Device> deviceList = deviceMapper.list(userId, null, null, null, null, null);
  120. List<AlarmPower> alarmPowers = alarmPowerMapper.list(userId, null, null, null, null, null, 1);
  121. sites.forEach(site -> list.add(enhanceSite(deviceList, site, alarmPowers)));
  122. return list;
  123. }
  124. @Override
  125. public SiteVO getOne(Long siteId) {
  126. Site site = baseMapper.selectOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, siteId));
  127. return Optional.ofNullable(site)
  128. .map(st -> {
  129. LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = Wrappers.lambdaQuery();
  130. deviceLambdaQueryWrapper.eq(Device::getSiteId, site.getId());
  131. List<Device> list = deviceService.list(deviceLambdaQueryWrapper);
  132. Integer count = alarmPowerMapper.selectCount(null, site.getId(), null, null, null, null, 1);
  133. SiteVO siteVO = enhanceSite(list, site, null);
  134. siteVO.setAlarmPowerCount(count);
  135. return siteVO;
  136. })
  137. .orElseThrow(() -> new BusinessException("站点信息不存在"));
  138. }
  139. public SiteVO enhanceSite(List<Device> list, Site site, List<AlarmPower> alarmPowers) {
  140. SiteVO siteVo = BeanMapperUtils.map(site, SiteVO.class);
  141. siteVo.setDeviceCount(list.size());
  142. long deviceCount = list.stream()
  143. .filter(device -> device.getSiteId().equals(site.getId()))
  144. .filter(device -> DeviceStatusCode.DEVICE.getValue().equals(device.getDeviceStatus()))
  145. .count();
  146. long faultCount = list.stream()
  147. .filter(device -> device.getSiteId().equals(site.getId()))
  148. .filter(device -> DeviceStatusCode.FAULT.getValue().equals(device.getDeviceStatus()))
  149. .count();
  150. long offCount = list.stream()
  151. .filter(device -> device.getSiteId().equals(site.getId()))
  152. .filter(device -> DeviceStatusCode.OFFLINE.getValue().equals(device.getDeviceStatus()))
  153. .count();
  154. if (CollectionUtils.isNotEmpty(alarmPowers)) {
  155. siteVo.setAlarmPowerCount((int) alarmPowers.stream().filter(alarmPower -> alarmPower.getSiteId().equals(site.getId())).count());
  156. } else {
  157. siteVo.setAlarmPowerCount(0);
  158. }
  159. if (deviceCount > 0) {
  160. siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
  161. } else if (offCount > 0) {
  162. siteVo.setStatus(DeviceStatusCode.OFFLINE.getDescribe());
  163. } else if (faultCount > 0) {
  164. siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
  165. } else {
  166. siteVo.setStatus(DeviceStatusCode.NORMAL.getDescribe());
  167. }
  168. List<String> deviceTypes = list.stream()
  169. .filter(device -> device.getSiteId().equals(site.getId()))
  170. .map(Device::getDeviceType).collect(Collectors.toList());
  171. siteVo.setDeviceType(deviceTypes);
  172. return siteVo;
  173. }
  174. public void SiteAdd(String site_name,String site_address,String user_name,String phone,
  175. String station_area_id,String route_id,String installed_capacity,String rheological_change,String longitude,
  176. String latitude,String region,String grouping_id,String fault_status, String real_time_load,
  177. String total_electricity, String power_factor, String site_type, String user_company,
  178. String operation_time, String service_deadline, String power_supply_type, String voltage_level,
  179. String Demolition_standard_coal, String Demolition_standard_coal1,String sitePictureOne,
  180. String sitePictureTwo,String sitePictureThree,String templateId){
  181. if (templateId.equals("")){
  182. Site site=new Site();
  183. site.setSiteName(site_name);
  184. site.setSiteAddress(site_address);
  185. site.setCompanyCode(11111);
  186. site.setUserName(user_name);
  187. site.setPhone(phone);
  188. site.setStationAreaId(Integer.parseInt(station_area_id));
  189. site.setRouteId(Integer.parseInt(route_id));
  190. site.setInstalledCapacity(installed_capacity);
  191. site.setRheologicalChange(rheological_change);
  192. site.setLongitude(longitude);
  193. site.setLatitude(latitude);
  194. site.setRegion(Integer.parseInt(region));
  195. site.setCreateTime(new Date());
  196. site.setCreator(SessionLocal.getUser().getUserName());
  197. site.setEnable(1);
  198. site.setGroupingId(Integer.parseInt(grouping_id));
  199. this.save(site);
  200. int ID = site.getId();
  201. siteDynamicPropertiesService.SiteDynamicPropertiesAdd(fault_status,real_time_load,total_electricity,power_factor,
  202. ID,site_type, user_company, operation_time, service_deadline, power_supply_type, voltage_level,
  203. Demolition_standard_coal, Demolition_standard_coal1,sitePictureOne,sitePictureTwo,sitePictureThree);
  204. userSiteService.UserSiteAdd(ID);
  205. }else {
  206. List<TemplateData> TemplateDataList = null;
  207. TemplateDataList = baseMapper.templateQuery(Integer.parseInt(templateId));
  208. TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0);
  209. Site site=new Site();
  210. site.setSiteName(site_name);
  211. site.setSiteAddress(TemplateDataListOne.getSiteAddress());
  212. site.setCompanyCode(11111);
  213. site.setUserName(TemplateDataListOne.getUserName());
  214. site.setPhone(TemplateDataListOne.getPhone());
  215. site.setStationAreaId(TemplateDataListOne.getStationAreaId());
  216. site.setRouteId(TemplateDataListOne.getRouteId());
  217. site.setInstalledCapacity(TemplateDataListOne.getInstalledCapacity());
  218. site.setRheologicalChange(TemplateDataListOne.getRheologicalChange());
  219. site.setLongitude(TemplateDataListOne.getLongitude());
  220. site.setLatitude(TemplateDataListOne.getLatitude());
  221. site.setRegion(TemplateDataListOne.getRegion());
  222. site.setCreateTime(new Date());
  223. site.setCreator(SessionLocal.getUser().getUserName());
  224. site.setEnable(1);
  225. // site.setGroupingId(TemplateDataListOne.getGroupingId());
  226. this.save(site);
  227. int ID = site.getId();
  228. DateTimeFormatter fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  229. siteDynamicPropertiesService.SiteDynamicPropertiesAdd(TemplateDataListOne.getFaultStatus(),TemplateDataListOne.getRealTimeLoad()
  230. ,TemplateDataListOne.getTotalElectricity(),TemplateDataListOne.getPowerFactor(),
  231. ID,Integer.toString(TemplateDataListOne.getSiteType()), TemplateDataListOne.getUserCompany(),
  232. TemplateDataListOne.getOperationTime().format(fmt12), TemplateDataListOne.getServiceDeadline().format(fmt12),
  233. Integer.toString(TemplateDataListOne.getPowerSupplyType()),TemplateDataListOne.getVoltageLevel(),
  234. Integer.toString(TemplateDataListOne.getDemolitionStandardCoal()),TemplateDataListOne.getDemolitionStandardCoal1()
  235. ,TemplateDataListOne.getSitePictureOne(),TemplateDataListOne.getSitePictureTwo(),TemplateDataListOne.getSitePictureThree());
  236. userSiteService.UserSiteAdd(ID);
  237. }
  238. }
  239. public List<TemplateData> GetSite(String id){
  240. List<TemplateData> TemplateDataList = null;
  241. TemplateDataList = baseMapper.templateQuery(Integer.parseInt(id));
  242. // TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0);
  243. return TemplateDataList;
  244. }
  245. }