0e344fd28ad6fb4cf03897b37267d6304efb48d9.svn-base 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. package cn.com.goldenwater.dcproj.service.impl;
  2. import cn.com.goldenwater.dcproj.dao.IndexTotalSyDao;
  3. import cn.com.goldenwater.dcproj.dto.DcIndexTotalSyDto;
  4. import cn.com.goldenwater.dcproj.dto.FileDto;
  5. import cn.com.goldenwater.dcproj.dto.ObjDto;
  6. import cn.com.goldenwater.dcproj.service.IndexTotalSyService;
  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.lang.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.text.SimpleDateFormat;
  14. import java.util.*;
  15. import java.util.stream.Collectors;
  16. @Service
  17. public class IndexTotalSyServiceImpl implements IndexTotalSyService {
  18. @Autowired
  19. private OlBisInspOrgService olBisInspOrgService;
  20. @Autowired
  21. private IndexTotalSyDao indexTotalSyDao;
  22. @Override
  23. public List<Map<String, Object>> totalByType(DcIndexTotalSyDto dcIndexTotalSyDto) {
  24. getAdCode(dcIndexTotalSyDto);
  25. List<Map<String,Object>> objPblmDate = indexTotalSyDao.getObjPblmData(dcIndexTotalSyDto);
  26. List<Map<String,Object>> persDate = indexTotalSyDao.getPersData(dcIndexTotalSyDto);
  27. List<Map<String, Object>> zgData = indexTotalSyDao.getZgData(dcIndexTotalSyDto);
  28. List<String> objTypeList = objPblmDate.stream()
  29. .map(o -> MapUtils.getString(o, "CODE"))
  30. .filter(StringUtils::isNotBlank)
  31. .distinct()
  32. .collect(Collectors.toList());
  33. List<Map<String,Object>> ret = new ArrayList<>();
  34. Map<String, Object> all = new HashMap<>(8);
  35. all.put("inspName","全部");
  36. all.put("PERSIZE",persDate.stream()
  37. .map(o ->MapUtils.getString(o,"PERSID"))
  38. .filter(StringUtils::isNotBlank)
  39. .distinct()
  40. .count()
  41. );
  42. all.put("GROUPSIZE", objPblmDate.stream()
  43. .map(o ->MapUtils.getString(o,"ID"))
  44. .filter(StringUtils::isNotBlank)
  45. .distinct()
  46. .count()
  47. );
  48. all.put("OBJSIZE",objPblmDate.stream()
  49. .map(o->MapUtils.getString(o,"OBJ_ID"))
  50. .filter(StringUtils::isNotBlank)
  51. .distinct()
  52. .count()
  53. );
  54. all.put("PBLMSIZE",objPblmDate.stream()
  55. .map(o->MapUtils.getString(o,"PBLM_ID"))
  56. .filter(StringUtils::isNotBlank)
  57. .distinct()
  58. .count()
  59. );
  60. all.put("MENDSIZE",zgData.stream()
  61. .map(o->MapUtils.getString(o,"ID"))
  62. .filter(StringUtils::isNotBlank)
  63. .distinct()
  64. .count()
  65. );
  66. all.put("PDSIZE",zgData.stream()
  67. .filter(o -> "1".equals(MapUtils.getString(o,"PBLM_OUT")))
  68. .map(o -> MapUtils.getString(o,"ID"))
  69. .filter(StringUtils::isNotBlank)
  70. .distinct()
  71. .count()
  72. );
  73. all.put("ONLINESIZE","15");
  74. SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
  75. all.put("TODAYPBLM",objPblmDate.stream()
  76. .filter(o ->(MapUtils.getString(o,"TIME")).startsWith(fmt.format(new Date()).toString()))
  77. .map(o->MapUtils.getString(o,"PBLM_ID"))
  78. .filter(StringUtils::isNotBlank)
  79. .distinct()
  80. .count()
  81. );
  82. ret.add(all);
  83. for (String objType : objTypeList) {
  84. Map<String, Object> map = new HashMap<>(8);
  85. map.put("CODE", objType);
  86. map.put("inspName", objPblmDate.stream()
  87. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  88. .map(o -> MapUtils.getString(o, "INSP_NAME"))
  89. .filter(StringUtils::isNotBlank)
  90. .distinct()
  91. .findFirst());
  92. map.put("PERSIZE", persDate.stream()
  93. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  94. .map(o -> MapUtils.getString(o, "PERSID"))
  95. .filter(StringUtils::isNotBlank)
  96. .distinct()
  97. .count()
  98. );
  99. map.put("GROUPSIZE", objPblmDate.stream()
  100. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  101. .map(o -> MapUtils.getString(o, "ID"))
  102. .filter(StringUtils::isNotBlank)
  103. .distinct()
  104. .count()
  105. );
  106. map.put("OBJSIZE", objPblmDate.stream()
  107. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  108. .map(o -> MapUtils.getString(o, "OBJ_ID"))
  109. .filter(StringUtils::isNotBlank)
  110. .distinct()
  111. .count()
  112. );
  113. map.put("PBLMSIZE", objPblmDate.stream()
  114. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  115. .map(o -> MapUtils.getString(o, "PBLM_ID"))
  116. .filter(StringUtils::isNotBlank)
  117. .distinct()
  118. .count()
  119. );
  120. map.put("MENDSIZE", zgData.stream()
  121. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  122. .map(o -> MapUtils.getString(o, "ID"))
  123. .filter(StringUtils::isNotBlank)
  124. .distinct()
  125. .count()
  126. );
  127. map.put("PDSIZE", zgData.stream()
  128. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  129. .filter(o -> "1".equals(MapUtils.getString(o, "PBLM_OUT")))
  130. .map(o -> MapUtils.getString(o, "ID"))
  131. .filter(StringUtils::isNotBlank)
  132. .distinct()
  133. .count()
  134. );
  135. map.put("ONLINESIZE","15");
  136. map.put("TODAYPBLM", objPblmDate.stream()
  137. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  138. .filter(o ->(MapUtils.getString(o,"TIME")).startsWith(fmt.format(new Date()).toString()))
  139. .map(o -> MapUtils.getString(o, "PBLM_ID"))
  140. .filter(StringUtils::isNotBlank)
  141. .distinct()
  142. .count()
  143. );
  144. ret.add(map);
  145. }
  146. return ret;
  147. }
  148. private void getAdCode(DcIndexTotalSyDto dcIndexTotalSyDto) {
  149. if(StringUtils.isBlank(dcIndexTotalSyDto.getAdCode())){
  150. dcIndexTotalSyDto.setAdCode(AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(dcIndexTotalSyDto.getOrgId())));
  151. } else {
  152. dcIndexTotalSyDto.setAdCode(AdLevelUtil.getAddvcd(dcIndexTotalSyDto.getAdCode()));
  153. }
  154. }
  155. public static boolean isToday(Date date){
  156. SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
  157. if(fmt.format(date).toString().equals(fmt.format(new Date()).toString())){//格式化为相同格式
  158. return true;
  159. }else {
  160. return false;
  161. }
  162. }
  163. @Override
  164. public List<FileDto> getTopPblm(String adCode,String pType, String currentAdCode) {
  165. return indexTotalSyDao.getTopPblm(adCode, pType, currentAdCode);
  166. }
  167. @Override
  168. public List<Map<String, Object>> totalPblmByPtype(DcIndexTotalSyDto dcIndexTotalSyDto) {
  169. getAdCode(dcIndexTotalSyDto);
  170. List<Map<String, Object>> objPblmData = indexTotalSyDao.getObjPblmData(dcIndexTotalSyDto);
  171. List<String> objTypeList = objPblmData.stream()
  172. .map(o -> MapUtils.getString(o, "CODE"))
  173. .filter(StringUtils::isNotBlank)
  174. .distinct()
  175. .collect(Collectors.toList());
  176. List<Map<String, Object>> ret = new ArrayList<>();
  177. for (String objType : objTypeList) {
  178. Map<String, Object> map = new HashMap<>(3);
  179. map.put("CODE", objType);
  180. map.put("inspName", objPblmData.stream()
  181. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  182. .map(o -> MapUtils.getString(o, "INSP_NAME"))
  183. .filter(StringUtils::isNotBlank)
  184. .distinct()
  185. .findFirst());
  186. map.put("PBLMSIZE", objPblmData.stream()
  187. .filter(o -> objType.equals(MapUtils.getString(o, "CODE")))
  188. .map(o -> MapUtils.getString(o, "PBLM_ID"))
  189. .filter(StringUtils::isNotBlank)
  190. .distinct()
  191. .count()
  192. );
  193. ret.add(map);
  194. }
  195. ret = ret.stream()
  196. .sorted(Comparator.comparingInt(o -> MapUtils.getIntValue((Map) o, "PBLMSIZE")).reversed())
  197. .limit(10)
  198. .collect(Collectors.toList());
  199. return ret;
  200. }
  201. @Override
  202. public ObjDto getObj(String objId) {
  203. String ptype = indexTotalSyDao.getObjPtype(objId);
  204. int choice = Integer.parseInt(ptype);
  205. String tableName = indexTotalSyDao.getTableName(objId);
  206. String idName = "ID";
  207. switch (choice){
  208. case 1 :
  209. idName = "RGSTR_ID";
  210. break;
  211. case 3 :
  212. idName = "TRACK_ID";
  213. break;
  214. }
  215. switch (choice)
  216. {
  217. case 22:
  218. case 34:
  219. case 26:
  220. case 96:
  221. case 1:
  222. case 24:
  223. case 84:
  224. case 106:
  225. case 21:
  226. case 80:
  227. return indexTotalSyDao.getSkObj(objId,idName,tableName);
  228. case 7:
  229. return indexTotalSyDao.getEmpwtrunObj(objId);
  230. default:
  231. return indexTotalSyDao.getObj(objId,idName,tableName);
  232. }
  233. }
  234. }