68dde546c154a0cd884222cc35da8c6a438fb286.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. package cn.com.goldenwater.dcproj.service.impl;
  2. import cn.com.goldenwater.dcproj.dao.IndexTotalQhJcDao;
  3. import cn.com.goldenwater.dcproj.dto.DcIndexTotalQhDto;
  4. import cn.com.goldenwater.dcproj.model.AttAdBase;
  5. import cn.com.goldenwater.dcproj.service.AttAdBaseService;
  6. import cn.com.goldenwater.dcproj.service.IndexTotalQhJcService;
  7. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  8. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  9. import org.apache.commons.collections.MapUtils;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.stream.Collectors;
  18. @Service
  19. public class IndexTotalQhJcServiceImpl implements IndexTotalQhJcService {
  20. @Autowired
  21. private IndexTotalQhJcDao indexTotalQhDao;
  22. @Autowired
  23. private OlBisInspOrgService olBisInspOrgService;
  24. @Autowired
  25. private AttAdBaseService attAdBaseService;
  26. private static Map<String, String> listTypeMap = new HashMap<>(6);
  27. {
  28. listTypeMap.put("1", "前期与设计");
  29. listTypeMap.put("2", "建设管理");
  30. listTypeMap.put("3", "计划下达与执行");
  31. listTypeMap.put("4", "资金使用与管理");
  32. listTypeMap.put("5", "工程质量");
  33. listTypeMap.put("6", "工程安全");
  34. }
  35. private List<Map<String, Object>> getObjPblmData(DcIndexTotalQhDto dcIndexTotalQhDto) {
  36. List<Map<String, Object>> objPblmData = indexTotalQhDao.getObjPblmData(dcIndexTotalQhDto);
  37. for (Map<String, Object> map : objPblmData) {
  38. map.put("inspName", listTypeMap.get(MapUtils.getString(map, "LIST_TYPE", "")));
  39. }
  40. return objPblmData;
  41. }
  42. /**
  43. * PERSIZE PBLMSIZE GROUPSIZE MENDSIZE OBJSIZE PDSIZE
  44. *
  45. * @param dcIndexTotalQhDto
  46. * @return
  47. */
  48. @Override
  49. public List<Map<String, Object>> totalByType(DcIndexTotalQhDto dcIndexTotalQhDto) {
  50. getAdCode(dcIndexTotalQhDto);
  51. List<Map<String, Object>> objPblmData = getObjPblmData(dcIndexTotalQhDto);
  52. List<Map<String, Object>> ret = new ArrayList<>();
  53. Map<String, Object> all = new HashMap<>(5);
  54. all.put("inspName", "全部");
  55. all.put("PBLMSIZE", objPblmData.stream()
  56. .map(o -> MapUtils.getString(o, "ID"))
  57. .filter(StringUtils::isNotBlank)
  58. .distinct()
  59. .count()
  60. );
  61. all.put("INFOSIZE", objPblmData.stream()
  62. .filter(o -> "0".equals(MapUtils.getString(o, "PBLM_PASI")))
  63. .map(o -> MapUtils.getString(o, "ID"))
  64. .filter(StringUtils::isNotBlank)
  65. .distinct()
  66. .count()
  67. );
  68. all.put("WARMSIZE", objPblmData.stream()
  69. .filter(o -> "1".equals(MapUtils.getString(o, "PBLM_PASI")))
  70. .map(o -> MapUtils.getString(o, "ID"))
  71. .filter(StringUtils::isNotBlank)
  72. .distinct()
  73. .count()
  74. );
  75. all.put("ERRORSIZE", objPblmData.stream()
  76. .filter(o -> "2".equals(MapUtils.getString(o, "PBLM_PASI")))
  77. .map(o -> MapUtils.getString(o, "ID"))
  78. .filter(StringUtils::isNotBlank)
  79. .distinct()
  80. .count()
  81. );
  82. ret.add(all);
  83. for (int i = 1; i < 7; i++) {
  84. String iStr = String.valueOf(i);
  85. List<Map<String, Object>> listTypeList = objPblmData.stream()
  86. .filter(o -> iStr.equals(MapUtils.getString(o, "LIST_TYPE"))).collect(Collectors.toList());
  87. Map<String, Object> map = new HashMap<>(8);
  88. map.put("CODE", String.valueOf(i));
  89. map.put("inspName", listTypeMap.get(String.valueOf(i)));
  90. map.put("PBLMSIZE", listTypeList.stream()
  91. .map(o -> MapUtils.getString(o, "ID"))
  92. .filter(StringUtils::isNotBlank)
  93. .distinct()
  94. .count()
  95. );
  96. map.put("INFOSIZE", listTypeList.stream()
  97. .filter(o -> "0".equals(MapUtils.getString(o, "PBLM_PASI")))
  98. .map(o -> MapUtils.getString(o, "ID"))
  99. .filter(StringUtils::isNotBlank)
  100. .distinct()
  101. .count()
  102. );
  103. map.put("WARMSIZE", listTypeList.stream()
  104. .filter(o -> "1".equals(MapUtils.getString(o, "PBLM_PASI")))
  105. .map(o -> MapUtils.getString(o, "ID"))
  106. .filter(StringUtils::isNotBlank)
  107. .distinct()
  108. .count()
  109. );
  110. map.put("ERRORSIZE", listTypeList.stream()
  111. .filter(o -> "2".equals(MapUtils.getString(o, "PBLM_PASI")))
  112. .map(o -> MapUtils.getString(o, "ID"))
  113. .filter(StringUtils::isNotBlank)
  114. .distinct()
  115. .count()
  116. );
  117. ret.add(map);
  118. }
  119. return ret;
  120. }
  121. /**
  122. * PERSIZE PBLMSIZE GROUPSIZE MENDSIZE OBJSIZE PDSIZE
  123. *
  124. * @param dcIndexTotalQhDto
  125. * @return
  126. */
  127. @Override
  128. public List<Map<String, Object>> totalPblmByPtype(DcIndexTotalQhDto dcIndexTotalQhDto) {
  129. getAdCode(dcIndexTotalQhDto);
  130. List<Map<String, Object>> objPblmData = getObjPblmData(dcIndexTotalQhDto);
  131. List<Map<String, Object>> ret = new ArrayList<>();
  132. for (int i = 1; i < 7; i++) {
  133. Map<String, Object> map = new HashMap<>(3);
  134. map.put("CODE", i);
  135. map.put("inspName", listTypeMap.get(String.valueOf(i)));
  136. String iStr = String.valueOf(i);
  137. map.put("PBLMSIZE", objPblmData.stream()
  138. .filter(o -> iStr.equals(MapUtils.getString(o, "LIST_TYPE")))
  139. .map(o -> MapUtils.getString(o, "ID"))
  140. .filter(StringUtils::isNotBlank)
  141. .distinct()
  142. .count()
  143. );
  144. ret.add(map);
  145. }
  146. return ret;
  147. }
  148. /**
  149. * PERSIZE PBLMSIZE GROUPSIZE MENDSIZE OBJSIZE PDSIZE
  150. *
  151. * @param dcIndexTotalQhDto
  152. * @return
  153. */
  154. @Override
  155. public List<Map<String, Object>> totalByAdCode(DcIndexTotalQhDto dcIndexTotalQhDto) {
  156. getAdCode(dcIndexTotalQhDto);
  157. List<Map<String, Object>> objPblmData = getObjPblmData(dcIndexTotalQhDto);
  158. String upAdCode = dcIndexTotalQhDto.getAdCode();
  159. switch (upAdCode.length()) {
  160. case 2:
  161. upAdCode += "0000000000";
  162. break;
  163. case 4:
  164. upAdCode += "00000000";
  165. break;
  166. default:
  167. }
  168. List<AttAdBase> adBaseList = attAdBaseService.getAdData(upAdCode);
  169. List<Map<String, Object>> ret = new ArrayList<>();
  170. for (AttAdBase attAdBase : adBaseList) {
  171. String adCode = AdLevelUtil.getAddvcd(attAdBase.getAdCode());
  172. Map<String, Object> map = new HashMap<>(10);
  173. map.put("CODE", attAdBase.getAdCode());
  174. map.put("inspName", attAdBase.getAdName());
  175. map.put("LAT", attAdBase.getLttd());
  176. map.put("LONG", attAdBase.getLgtd());
  177. map.put("PBLMSIZE", objPblmData.stream()
  178. .filter(o -> MapUtils.getString(o, "AD_CODE", "AAA").contains(adCode))
  179. .map(o -> MapUtils.getString(o, "ID"))
  180. .filter(StringUtils::isNotBlank)
  181. .distinct()
  182. .count()
  183. );
  184. ret.add(map);
  185. }
  186. return ret;
  187. }
  188. /**
  189. * PERSIZE PBLMSIZE GROUPSIZE MENDSIZE OBJSIZE PDSIZE
  190. *
  191. * @param dcIndexTotalQhDto
  192. * @return
  193. */
  194. @Override
  195. public List<Map<String, Object>> pblmByAdCode(DcIndexTotalQhDto dcIndexTotalQhDto) {
  196. getAdCode(dcIndexTotalQhDto);
  197. List<Map<String, Object>> objPblmData = indexTotalQhDao.getObjPblmData(dcIndexTotalQhDto);
  198. List<String> rgstrIdList = objPblmData.stream()
  199. .map(o -> MapUtils.getString(o, "RGSTR_ID"))
  200. .filter(StringUtils::isNotBlank)
  201. .distinct()
  202. .collect(Collectors.toList());
  203. List<Map<String, Object>> ret = new ArrayList<>();
  204. for (String rgstrId : rgstrIdList) {
  205. List<Map<String, Object>> rgstrData = objPblmData.stream()
  206. .filter(o -> rgstrId.equals(MapUtils.getString(o, "RGSTR_ID")))
  207. .distinct()
  208. .collect(Collectors.toList());
  209. Map<String, Object> map = new HashMap<>(3);
  210. map.put("CODE", rgstrId);
  211. map.put("inspName", rgstrData.stream().map(o -> MapUtils.getString(o, "NAME")).findFirst());
  212. List<Map<String, Object>> value = new ArrayList<>();
  213. for (int i = 1; i < 7; i++) {
  214. String iStr = String.valueOf(i);
  215. List<Map<String, Object>> listTypeList = rgstrData.stream()
  216. .filter(o -> iStr.equals(MapUtils.getString(o, "LIST_TYPE"))).collect(Collectors.toList());
  217. Map<String, Object> valueMap = new HashMap<>(8);
  218. valueMap.put("CODE", String.valueOf(i));
  219. valueMap.put("inspName", listTypeMap.get(String.valueOf(i)));
  220. valueMap.put("PBLMSIZE", listTypeList.stream()
  221. .map(o -> MapUtils.getString(o, "ID"))
  222. .filter(StringUtils::isNotBlank)
  223. .distinct()
  224. .count()
  225. );
  226. valueMap.put("INFOSIZE", listTypeList.stream()
  227. .filter(o -> "0".equals(MapUtils.getString(o, "PBLM_PASI")))
  228. .map(o -> MapUtils.getString(o, "ID"))
  229. .filter(StringUtils::isNotBlank)
  230. .distinct()
  231. .count()
  232. );
  233. valueMap.put("WARMSIZE", listTypeList.stream()
  234. .filter(o -> "1".equals(MapUtils.getString(o, "PBLM_PASI")))
  235. .map(o -> MapUtils.getString(o, "ID"))
  236. .filter(StringUtils::isNotBlank)
  237. .distinct()
  238. .count()
  239. );
  240. valueMap.put("ERRORSIZE", listTypeList.stream()
  241. .filter(o -> "2".equals(MapUtils.getString(o, "PBLM_PASI")))
  242. .map(o -> MapUtils.getString(o, "ID"))
  243. .filter(StringUtils::isNotBlank)
  244. .distinct()
  245. .count()
  246. );
  247. value.add(valueMap);
  248. }
  249. map.put("PBLMSIZE", value);
  250. ret.add(map);
  251. }
  252. return ret;
  253. }
  254. private void getAdCode(DcIndexTotalQhDto dcIndexTotalQhDto) {
  255. dcIndexTotalQhDto.setProvince(AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(dcIndexTotalQhDto.getOrgId())));
  256. if (StringUtils.isBlank(dcIndexTotalQhDto.getAdCode())) {
  257. dcIndexTotalQhDto.setAdCode(AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(dcIndexTotalQhDto.getOrgId())));
  258. } else {
  259. dcIndexTotalQhDto.setAdCode(AdLevelUtil.getAddvcd(dcIndexTotalQhDto.getAdCode()));
  260. }
  261. }
  262. }