LampPoleServiceImpl.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. package com.welampiot.service.impl;
  2. import com.welampiot.common.BaseResult;
  3. import com.welampiot.common.InterfaceResultEnum;
  4. import com.welampiot.dao.LampPoleDao;
  5. import com.welampiot.dao.WifiDao;
  6. import com.welampiot.dto.LampInfoDTO;
  7. import com.welampiot.dto.LampPoleAlarmLogDTO;
  8. import com.welampiot.dto.LampPoleDTO;
  9. import com.welampiot.dto.WifiDTO;
  10. import com.welampiot.service.LampPoleAlarmLogService;
  11. import com.welampiot.service.LampPoleService;
  12. import com.welampiot.service.LampService;
  13. import com.welampiot.service.WifiService;
  14. import com.welampiot.utils.ToolUtils;
  15. import com.welampiot.vo.*;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Service;
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21. @Service
  22. public class LampPoleServiceImpl implements LampPoleService {
  23. @Autowired
  24. private LampPoleDao lampPoleDao;
  25. @Override
  26. public Integer getCountByVO(LampPoleCountVO lampPoleCountVO) {return lampPoleDao.getCountByVO(lampPoleCountVO);}
  27. @Override
  28. public List<LampPoleDTO> getNavByVO(LampPoleVO lampPoleVO) {
  29. return lampPoleDao.getNavByVO(lampPoleVO);
  30. }
  31. @Override
  32. public List<LampPoleDTO> getListByVO(LampPoleVO lampPoleVO) {
  33. return lampPoleDao.getListByVO(lampPoleVO);
  34. }
  35. @Autowired
  36. private LampPoleAlarmLogService lampPoleAlarmLogService;
  37. @Autowired
  38. private ToolUtils toolUtils;
  39. @Autowired
  40. private LampService lampService;
  41. @Autowired
  42. private WifiService wifiService;
  43. @Override
  44. public List<LampPoleDTO> lampPoleList(LampPoleVO lampPoleVO) {
  45. List<LampPoleDTO> lampPoleDTOS = lampPoleDao.lampPoleList(lampPoleVO);
  46. ArrayList<LampPoleDTO> lampPoleDTOS1 = new ArrayList<>();
  47. ArrayList<Integer> lampPoleIds = new ArrayList<>();
  48. lampPoleIds.add(0);
  49. for (LampPoleDTO l :lampPoleDTOS){
  50. lampPoleIds.add(l.getId());
  51. }
  52. List<LampPoleAlarmLogDTO> listByLampPoleIdList = lampPoleAlarmLogService.getListByLampPoleIdList(lampPoleIds);
  53. HashMap<Integer, LampPoleAlarmLogDTO> integerLampPoleAlarmLogDTOHashMap = new HashMap<>();
  54. for (LampPoleAlarmLogDTO l :listByLampPoleIdList) {
  55. integerLampPoleAlarmLogDTOHashMap.put(l.getId(),l);
  56. }
  57. HashMap<Integer, String> integerStringHashMap = new HashMap<>();
  58. integerStringHashMap.put(1,"摄像头");
  59. integerStringHashMap.put(2,"WIFI");
  60. integerStringHashMap.put(3,"RFID");
  61. integerStringHashMap.put(4,"LED屏");
  62. integerStringHashMap.put(5,"一键报警");
  63. integerStringHashMap.put(6,"充电桩");
  64. integerStringHashMap.put(7,"气象站");
  65. integerStringHashMap.put(8,"微基站");
  66. integerStringHashMap.put(9,"音柱");
  67. integerStringHashMap.put(10,"云盒");
  68. for (LampPoleDTO l :lampPoleDTOS) {
  69. if (l.getIsInspec() == null) l.setIsInspec(0);
  70. if (l.getCity() != null){
  71. l.setLocation(l.getCity()+" "+l.getArea()+" "+l.getSection());
  72. }else {
  73. l.setLocation(l.getArea()+" "+l.getSection());
  74. }
  75. if (l.getPolicyName() == null) {
  76. if (lampPoleVO.getVersion() == 0){
  77. l.setPolicyName("暂无");
  78. } else if (lampPoleVO.getVersion() == 1) {
  79. l.setPolicyName("none");
  80. }
  81. }
  82. if (integerLampPoleAlarmLogDTOHashMap.containsKey(l.getId())){
  83. LampPoleAlarmLogDTO lampPoleAlarmLogDTO = integerLampPoleAlarmLogDTOHashMap.get(l.getId());
  84. if (integerStringHashMap.containsKey(lampPoleAlarmLogDTO.getDevType())){
  85. String s = integerStringHashMap.get(lampPoleAlarmLogDTO.getDevType());
  86. l.setFaultstatus(0);
  87. l.setAlarmInfo(s+"离线");
  88. }else {
  89. l.setFaultstatus(0);
  90. l.setAlarmInfo("");
  91. }
  92. }else {
  93. l.setFaultstatus(0);
  94. }
  95. lampPoleDTOS1.add(l);
  96. }
  97. return lampPoleDTOS1;
  98. }
  99. @Override
  100. public Integer lampPoleCount(LampPoleVO lampPoleVO) {
  101. return lampPoleDao.lampPoleCount(lampPoleVO);
  102. }
  103. @Override
  104. public BaseResult add(LampPoleVO lampPoleVO) {
  105. LampPoleDTO lampPoleDTO = new LampPoleDTO();
  106. lampPoleDTO.setCreateId(lampPoleVO.getCreateId());
  107. if (lampPoleVO.getAreaId() == null || lampPoleVO.getAreaId() == 0) return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR,lampPoleVO.getVersion());
  108. if (lampPoleVO.getSectionId() == null || lampPoleVO.getSectionId() == 0) return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR,lampPoleVO.getVersion());
  109. if (lampPoleVO.getName() == null || lampPoleVO.getName().length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_LAMP_NAME_ERROR,lampPoleVO.getVersion());
  110. if (lampPoleVO.getNumber() == null || lampPoleVO.getNumber().length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_LAMP_POLE_NUMBER_ERROR,lampPoleVO.getVersion());
  111. if (!lampPoleVO.getNumber().matches("^[A-Za-z0-9_]+$")) return toolUtils.response(InterfaceResultEnum.LAMP_POLE_NUMBER_FORMAT_ERROR,lampPoleVO.getVersion());
  112. LampPoleCountVO lampPoleVO1 = new LampPoleCountVO();
  113. lampPoleVO1.setSectionId(lampPoleVO.getSectionId());
  114. lampPoleVO1.setName(lampPoleVO.getName());
  115. if (lampPoleDao.getCountByVO(lampPoleVO1).intValue() > 0) return toolUtils.response(InterfaceResultEnum.LAMP_POLE_NAME_UNIQUE_ERROR,lampPoleVO.getVersion());
  116. lampPoleVO1 = new LampPoleCountVO();
  117. lampPoleVO1.setSectionId(lampPoleVO.getSectionId());
  118. lampPoleVO1.setNumber(lampPoleVO.getNumber());
  119. if (lampPoleDao.getCountByVO(lampPoleVO1).intValue() > 0) return toolUtils.response(InterfaceResultEnum.LAMP_POLE_NUMBER_UNIQUE_ERROR,lampPoleVO.getVersion());
  120. lampPoleDTO.setName(lampPoleVO.getName());
  121. lampPoleDTO.setNumber(lampPoleVO.getNumber());
  122. lampPoleDTO.setAreaId(lampPoleVO.getAreaId());
  123. lampPoleDTO.setSectionId(lampPoleVO.getSectionId());
  124. lampPoleDTO.setHeight(lampPoleVO.getHeight() == null ? 0 : lampPoleVO.getHeight());
  125. lampPoleDTO.setLatitude(lampPoleVO.getLatitude());
  126. lampPoleDTO.setLongitude(lampPoleVO.getLongitude());
  127. lampPoleDTO.setInstallDate(lampPoleVO.getInstallDate());
  128. lampPoleDTO.setExpirationDate(lampPoleVO.getExpirationDate());
  129. Date endDate = new Date(System.currentTimeMillis());
  130. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  131. String createTime = simpleDateFormat.format(endDate).toString();
  132. lampPoleDTO.setCreateTime(createTime);
  133. lampPoleDao.add(lampPoleDTO);
  134. List<Integer> devType = new ArrayList<>();
  135. Integer id = lampPoleDTO.getId();
  136. // 添加云盒
  137. Map cloudBox = lampPoleVO.getCloudBox();
  138. WifiDTO wifiDTO = new WifiDTO();
  139. wifiDTO.setLampPoleId(id);
  140. wifiDTO.setVersion2(lampPoleVO.getVersion());
  141. if (cloudBox.containsKey("sn")) wifiDTO.setSn((String) cloudBox.get("sn"));
  142. if (cloudBox.containsKey("ipAddr")) wifiDTO.setIpAddr((String) cloudBox.get("ipAddr"));
  143. if (cloudBox.containsKey("model")) wifiDTO.setModel((String) cloudBox.get("model"));
  144. if (cloudBox.containsKey("remark1")) wifiDTO.setRemark1((String) cloudBox.get("remark1"));
  145. if (cloudBox.containsKey("remark2")) wifiDTO.setRemark2((String) cloudBox.get("remark2"));
  146. if (cloudBox.containsKey("remark3")) wifiDTO.setRemark3((String) cloudBox.get("remark3"));
  147. if (cloudBox.containsKey("remark4")) wifiDTO.setRemark4((String) cloudBox.get("remark4"));
  148. if (cloudBox.containsKey("remark5")) wifiDTO.setRemark5((String) cloudBox.get("remark5"));
  149. if (cloudBox.containsKey("remark6")) wifiDTO.setRemark6((String) cloudBox.get("remark6"));
  150. if (cloudBox.containsKey("installDate")) wifiDTO.setInstallDate((String) cloudBox.get("installDate"));
  151. if (cloudBox.containsKey("expirationDate")) wifiDTO.setExpirationDate((String) cloudBox.get("expirationDate"));
  152. BaseResult add1 = wifiService.add(wifiDTO);
  153. if (!add1.getCode().equals("0000")) return add1;
  154. devType.add(10);
  155. devType.add(2);
  156. // 添加灯控
  157. List<Map> lightDevList = lampPoleVO.getLightDevList();
  158. LampInfoDTO lampInfoDTO;
  159. for (Map m :lightDevList) {
  160. lampInfoDTO = new LampInfoDTO();
  161. if (m.containsKey("address")) lampInfoDTO.setSn(m.get("address").toString());
  162. if (m.containsKey("number")) lampInfoDTO.setNumber(m.get("number").toString());
  163. if (m.containsKey("name")) lampInfoDTO.setName(m.get("name").toString());
  164. if (m.containsKey("protocolType")) lampInfoDTO.setProtocolType(Integer.parseInt((String) m.get("protocolType")));
  165. if (m.containsKey("controlType")) lampInfoDTO.setControlType(Integer.parseInt((String) m.get("controlType")));
  166. if (m.containsKey("ratedPower")) {
  167. if ( m.get("ratedPower") == null || m.get("ratedPower").toString().length() == 0){
  168. lampInfoDTO.setRatedPower(0);
  169. }else {
  170. lampInfoDTO.setRatedPower(Integer.parseInt((String) m.get("ratedPower")));
  171. }
  172. }
  173. if (m.containsKey("installDate")) lampInfoDTO.setInstallDate( m.get("installDate").toString());
  174. if (m.containsKey("expirationDate")) lampInfoDTO.setExpirationDate( m.get("expirationDate").toString());
  175. lampInfoDTO.setCreateTime(createTime);
  176. lampInfoDTO.setVersion(lampPoleVO.getVersion());
  177. lampInfoDTO.setAreaId(lampPoleVO.getAreaId());
  178. lampInfoDTO.setSectionId(lampPoleVO.getSectionId());
  179. lampInfoDTO.setLatitude(lampPoleVO.getLatitude());
  180. lampInfoDTO.setLongitude(lampPoleVO.getLongitude());
  181. lampInfoDTO.setLampPoleId(id);
  182. BaseResult add = lampService.add(lampInfoDTO);
  183. if (!add.getCode().equals("0000")) return add;
  184. }
  185. devType.add(0);
  186. LampPoleDTO lampPoleDTO1 = new LampPoleDTO();
  187. lampPoleDTO1.setId(lampPoleDTO.getId());
  188. lampPoleDTO1.setDevType(StringUtils.join(devType,","));
  189. lampPoleDTO1.setSn(wifiDTO.getSn());
  190. lampPoleDao.update(lampPoleDTO1);
  191. return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,lampPoleVO.getVersion());
  192. }
  193. @Override
  194. public BaseResult update(LampPoleVO lampPoleVO) {
  195. LampPoleDTO lampPoleDTO = new LampPoleDTO();
  196. lampPoleDTO.setId(lampPoleVO.getId());
  197. if (lampPoleVO.getAreaId() == null || lampPoleVO.getAreaId() == 0) return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR,lampPoleVO.getVersion());
  198. if (lampPoleVO.getSectionId() == null || lampPoleVO.getSectionId() == 0) return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR,lampPoleVO.getVersion());
  199. if (lampPoleVO.getName() == null || lampPoleVO.getName().length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_LAMP_NAME_ERROR,lampPoleVO.getVersion());
  200. if (lampPoleVO.getNumber() == null || lampPoleVO.getNumber().length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_LAMP_POLE_NUMBER_ERROR,lampPoleVO.getVersion());
  201. if (!lampPoleVO.getNumber().matches("^[A-Za-z0-9_]+$")) return toolUtils.response(InterfaceResultEnum.LAMP_POLE_NUMBER_FORMAT_ERROR,lampPoleVO.getVersion());
  202. LampPoleCountVO lampPoleVO1 = new LampPoleCountVO();
  203. lampPoleVO1.setId(lampPoleDTO.getId());
  204. lampPoleVO1.setSectionId(lampPoleVO.getSectionId());
  205. lampPoleVO1.setName(lampPoleVO.getName());
  206. if (lampPoleDao.getCountByVO(lampPoleVO1).intValue() > 0) return toolUtils.response(InterfaceResultEnum.LAMP_POLE_NAME_UNIQUE_ERROR,lampPoleVO.getVersion());
  207. lampPoleVO1 = new LampPoleCountVO();
  208. lampPoleVO1.setId(lampPoleDTO.getId());
  209. lampPoleVO1.setSectionId(lampPoleVO.getSectionId());
  210. lampPoleVO1.setNumber(lampPoleVO.getNumber());
  211. if (lampPoleDao.getCountByVO(lampPoleVO1).intValue() > 0) return toolUtils.response(InterfaceResultEnum.LAMP_POLE_NUMBER_UNIQUE_ERROR,lampPoleVO.getVersion());
  212. lampPoleDTO.setName(lampPoleVO.getName());
  213. lampPoleDTO.setNumber(lampPoleVO.getNumber());
  214. lampPoleDTO.setAreaId(lampPoleVO.getAreaId());
  215. lampPoleDTO.setSectionId(lampPoleVO.getSectionId());
  216. lampPoleDTO.setHeight(lampPoleVO.getHeight() == null ? 0 : lampPoleVO.getHeight());
  217. lampPoleDTO.setLatitude(lampPoleVO.getLatitude());
  218. lampPoleDTO.setLongitude(lampPoleVO.getLongitude());
  219. lampPoleDTO.setInstallDate(lampPoleVO.getInstallDate());
  220. lampPoleDTO.setExpirationDate(lampPoleVO.getExpirationDate());
  221. lampPoleDao.update(lampPoleDTO);
  222. Map cloudBox = lampPoleVO.getCloudBox();
  223. WifiDTO wifiDTO = new WifiDTO();
  224. wifiDTO.setLampPoleId(lampPoleDTO.getId());
  225. wifiDTO.setVersion2(lampPoleVO.getVersion());
  226. if (cloudBox.containsKey("sn")) wifiDTO.setSn((String) cloudBox.get("sn"));
  227. if (cloudBox.containsKey("ipAddr")) wifiDTO.setIpAddr((String) cloudBox.get("ipAddr"));
  228. if (cloudBox.containsKey("model")) wifiDTO.setModel((String) cloudBox.get("model"));
  229. if (cloudBox.containsKey("remark1")) wifiDTO.setRemark1((String) cloudBox.get("remark1"));
  230. if (cloudBox.containsKey("remark2")) wifiDTO.setRemark2((String) cloudBox.get("remark2"));
  231. if (cloudBox.containsKey("remark3")) wifiDTO.setRemark3((String) cloudBox.get("remark3"));
  232. if (cloudBox.containsKey("remark4")) wifiDTO.setRemark4((String) cloudBox.get("remark4"));
  233. if (cloudBox.containsKey("remark5")) wifiDTO.setRemark5((String) cloudBox.get("remark5"));
  234. if (cloudBox.containsKey("remark6")) wifiDTO.setRemark6((String) cloudBox.get("remark6"));
  235. if (cloudBox.containsKey("installDate")) wifiDTO.setInstallDate((String) cloudBox.get("installDate"));
  236. if (cloudBox.containsKey("expirationDate")) wifiDTO.setExpirationDate((String) cloudBox.get("expirationDate"));
  237. BaseResult add1 = wifiService.update(wifiDTO);
  238. if (!add1.getCode().equals("0000")) return add1;
  239. // 添加灯控
  240. Date endDate = new Date(System.currentTimeMillis());
  241. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  242. String createTime = simpleDateFormat.format(endDate).toString();
  243. List<Map> lightDevList = lampPoleVO.getLightDevList();
  244. LampInfoDTO lampInfoDTO;
  245. for (Map m :lightDevList) {
  246. lampInfoDTO = new LampInfoDTO();
  247. if (m.containsKey("address")) lampInfoDTO.setSn(m.get("address").toString());
  248. if (m.containsKey("number")) lampInfoDTO.setNumber(m.get("number").toString());
  249. if (m.containsKey("name")) lampInfoDTO.setName(m.get("name").toString());
  250. if (m.containsKey("protocolType")) lampInfoDTO.setProtocolType(Integer.parseInt((String) m.get("protocolType")));
  251. if (m.containsKey("controlType")) lampInfoDTO.setControlType(Integer.parseInt((String) m.get("controlType")));
  252. if (m.containsKey("ratedPower")) {
  253. if ( m.get("ratedPower") == null || m.get("ratedPower").toString().length() == 0){
  254. lampInfoDTO.setRatedPower(0);
  255. }else {
  256. lampInfoDTO.setRatedPower(Integer.parseInt((String) m.get("ratedPower")));
  257. }
  258. }
  259. if (m.containsKey("installDate")) lampInfoDTO.setInstallDate( m.get("installDate").toString());
  260. if (m.containsKey("expirationDate")) lampInfoDTO.setExpirationDate( m.get("expirationDate").toString());
  261. if (m.containsKey("id") && m.get("id") != null && m.get("id").toString().length() != 0) lampInfoDTO.setId(Integer.parseInt((String) m.get("id")));
  262. lampInfoDTO.setVersion(lampPoleVO.getVersion());
  263. lampInfoDTO.setAreaId(lampPoleVO.getAreaId());
  264. lampInfoDTO.setSectionId(lampPoleVO.getSectionId());
  265. lampInfoDTO.setLatitude(lampPoleVO.getLatitude());
  266. lampInfoDTO.setLongitude(lampPoleVO.getLongitude());
  267. lampInfoDTO.setLampPoleId(lampPoleVO.getId());
  268. BaseResult add;
  269. if (lampInfoDTO.getId() != null && lampInfoDTO.getId() != 0){
  270. add = lampService.update(lampInfoDTO);
  271. }else {
  272. lampInfoDTO.setCreateTime(createTime);
  273. add = lampService.add(lampInfoDTO);
  274. }
  275. if (!add.getCode().equals("0000")) return add;
  276. }
  277. return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,lampPoleVO.getVersion());
  278. }
  279. @Override
  280. public LampPoleDTO getDetailById(Integer id) {
  281. return lampPoleDao.getDetailById(id);
  282. }
  283. @Override
  284. public Integer deleteById(Integer id) {
  285. if (id == null) return null;
  286. // 删除灯控
  287. LampListResponseVO lampListResponseVO = new LampListResponseVO();
  288. lampListResponseVO.setLampPoleId(id);
  289. List<LampInfoDTO> listByVO = lampService.getListByVO(lampListResponseVO);
  290. for (LampInfoDTO l :listByVO) {
  291. if (l.getId() != null) lampService.deleteById(l.getId());
  292. }
  293. // 删除云盒
  294. WifiDTO wifiDTO = new WifiDTO();
  295. wifiDTO.setLampPoleId(id);
  296. List<WifiDTO> wifiList = wifiService.getWifiListByDTO(wifiDTO);
  297. for (WifiDTO w :wifiList) {
  298. if (w.getId() != null) wifiService.deleteById(w.getId());
  299. }
  300. return lampPoleDao.deleteById(id);
  301. }
  302. }