17f95c3a55226a987b24f61c3924436fa9a0f516.svn-base 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package cn.com.goldenwater.dcproj.service.impl.other;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  4. import cn.com.goldenwater.dcproj.dao.BisInspItemQuesNumDao;
  5. import cn.com.goldenwater.dcproj.dao.BisInspPblmDao;
  6. import cn.com.goldenwater.dcproj.dao.BisInspRsvrImpStatDao;
  7. import cn.com.goldenwater.dcproj.dao.ObjInspPblmsDao;
  8. import cn.com.goldenwater.dcproj.dto.BisInspItemQuesNumDto;
  9. import cn.com.goldenwater.dcproj.model.*;
  10. import cn.com.goldenwater.dcproj.param.BisInspRsvrImpStatParam;
  11. import cn.com.goldenwater.dcproj.param.ReverParam;
  12. import cn.com.goldenwater.dcproj.service.BisInspRsvrImpStatService;
  13. import cn.com.goldenwater.dcproj.service.ObjInspPblmsService;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. /**
  24. * 统计小水库填报异常信息
  25. *
  26. * @author lhc
  27. * @date 2019-11-08
  28. */
  29. @Service
  30. @Transactional
  31. public class BisInspRsvrImpStatServicesImpl extends AbstractCrudService<BisInspRsvrImpStat, BisInspRsvrImpStatParam> implements BisInspRsvrImpStatService {
  32. private Logger logger = LoggerFactory.getLogger(getClass());
  33. @Autowired
  34. private BisInspRsvrImpStatDao bisInspRsvrImpStatDao;
  35. @Autowired
  36. private BisInspPblmDao bisInspPblmDao;
  37. @Autowired
  38. private ObjInspPblmsService objInspPblmsService;
  39. @Autowired
  40. private ObjInspPblmsDao objInspPblmsDao;
  41. @Autowired
  42. private BisInspItemQuesNumDao bisInspItemQuesNumDao;
  43. public BisInspRsvrImpStatServicesImpl(BisInspRsvrImpStatDao bisInspRsvrImpStatDao) {
  44. super(bisInspRsvrImpStatDao);
  45. this.bisInspRsvrImpStatDao = bisInspRsvrImpStatDao;
  46. }
  47. @Override
  48. public List<BisInspRsvrImpStat> getRsvrImpStat(String persId, String pid) {
  49. //提取水库填报信息
  50. List<BisInspRsvrImpStat> bisInspRsvrImpStats = bisInspRsvrImpStatDao.getRsvrImpInfo(persId, pid);
  51. //提取小水库填报规则信息
  52. List<BisInspRsvrImpRule> bisInspRsvrImpRules = bisInspRsvrImpStatDao.getRsvrRule("1");
  53. //提取小水库填报规则关联选项信息
  54. //提出所有的填报的问题,用于做对比
  55. ReverParam reverParam = new ReverParam();
  56. reverParam.setOrgId(pid);
  57. reverParam.setPersId(persId);
  58. List<BisInspPblm> bisInspPblms = bisInspPblmDao.findReverPlbmList(reverParam);
  59. //设置填报项目对应规则表组合成对象
  60. for (BisInspRsvrImpRule bisInspRsvrImpRule : bisInspRsvrImpRules) {
  61. String id = bisInspRsvrImpRule.getId();
  62. String tName = bisInspRsvrImpRule.gettName();
  63. String eName = bisInspRsvrImpRule.geteName();
  64. String ivalue = bisInspRsvrImpRule.getiValue();
  65. List<ObjTypeCheck> objTypeChecks = getPblmsByQuesNum(id, tName, eName, ivalue, "1");
  66. bisInspRsvrImpRule.setObjTypeChecks(objTypeChecks);
  67. }
  68. for (BisInspRsvrImpStat bisInspRsvrImpStat : bisInspRsvrImpStats) {
  69. //设置是否异常
  70. //判断是否有异常
  71. bisInspRsvrImpStat.setSchPlanSameEmeFlag(getValResult("schPlanSameEme", bisInspRsvrImpStat.getSchPlanSameEme(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  72. bisInspRsvrImpStat.setWaterRunInfoFlag(getValResult("waterRunInfo", bisInspRsvrImpStat.getWaterRunInfo(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  73. bisInspRsvrImpStat.setFsltdzInfoFlag(getValResult("fsltdzInfo", bisInspRsvrImpStat.getFsltdzInfo(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  74. bisInspRsvrImpStat.setHasSpeManageFlag(getValResult("hasSpeManage", bisInspRsvrImpStat.getHasSpeManage(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  75. bisInspRsvrImpStat.setIfManageRegFlag(getValResult("ifManageReg", bisInspRsvrImpStat.getIfManageReg(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  76. bisInspRsvrImpStat.setWiunWaoLegPersTrainFlag(getValResult("wiunWaoLegPersTrain", bisInspRsvrImpStat.getWiunWaoLegPersTrain(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  77. bisInspRsvrImpStat.setWiunWaoLegPersCnpsFlag(getValResult("wiunWaoLegPersCnps", bisInspRsvrImpStat.getWiunWaoLegPersCnps(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  78. bisInspRsvrImpStat.setTechPersResuFlag(getValResult("techPersResu", bisInspRsvrImpStat.getTechPersResu(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  79. bisInspRsvrImpStat.setEmerPlanSameExtaFlag(getValResult("emerPlanSameExta", bisInspRsvrImpStat.getEmerPlanSameExta(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  80. bisInspRsvrImpStat.setMainFlNormalFlag(getValResult("isMainFlNormal", bisInspRsvrImpStat.getIsMainFlNormal(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  81. bisInspRsvrImpStat.setHasWiunWaoLegPersFlag(getValResult("hasWiunWaoLegPers", bisInspRsvrImpStat.getHasWiunWaoLegPers(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  82. bisInspRsvrImpStat.setPatrolPersCnpsFlag(getValResult("patrolPersCnps", bisInspRsvrImpStat.getPatrolPersCnps(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  83. bisInspRsvrImpStat.setSchPlanSameApprFlag(getValResult("schPlanSameAppr", bisInspRsvrImpStat.getSchPlanSameAppr(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  84. bisInspRsvrImpStat.setSchPlanSameSpeedFlag(getValResult("schPlanSameSpeed", bisInspRsvrImpStat.getSchPlanSameSpeed(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  85. bisInspRsvrImpStat.setEmerPlanSameSpeedFlag(getValResult("emerPlanSameSpeed", bisInspRsvrImpStat.getEmerPlanSameSpeed(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  86. bisInspRsvrImpStat.setReinForceRunFlag(getValResult("reinForceRun", bisInspRsvrImpStat.getReinForceRun(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  87. bisInspRsvrImpStat.setIfManageRegFlag(getValResult("ifManageRegRel", bisInspRsvrImpStat.getIfManageRegRel(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  88. bisInspRsvrImpStat.setIfDamWarnLogoFlag(getValResult("ifDamWarnLogo", bisInspRsvrImpStat.getIfDamWarnLogo(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  89. bisInspRsvrImpStat.setHasTechPersFlag(getValResult("hasTechPers", bisInspRsvrImpStat.getHasTechPers(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  90. bisInspRsvrImpStat.setPourFyIsNormalFlag(getValResult(" pourFyIsNormal", bisInspRsvrImpStat.getPourFyIsNormal(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  91. bisInspRsvrImpStat.setNotReinForceFlag(getValResult(" notReinForce", bisInspRsvrImpStat.getNotReinForce(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  92. bisInspRsvrImpStat.setEmerPlanSameEmeFlag(getValResult(" emerPlanSameEme", bisInspRsvrImpStat.getEmerPlanSameEme(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  93. bisInspRsvrImpStat.setDiskRunInfoFlag(getValResult(" diskRunInfo", bisInspRsvrImpStat.getDiskRunInfo(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  94. bisInspRsvrImpStat.setExtDamSafeApprFlag(getValResult(" extDamSafeAppr", bisInspRsvrImpStat.getExtDamSafeAppr(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  95. bisInspRsvrImpStat.setSchPlanSameExtaFlag(getValResult(" schPlanSameExta", bisInspRsvrImpStat.getSchPlanSameExta(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  96. bisInspRsvrImpStat.setTechPersCnpsFlag(getValResult(" techPersCnps", bisInspRsvrImpStat.getTechPersCnps(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  97. bisInspRsvrImpStat.setPatrolPersTrainFlag(getValResult(" patrolPersTrain", bisInspRsvrImpStat.getPatrolPersTrain(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  98. bisInspRsvrImpStat.setPatrolPersResuFlag(getValResult(" patrolPersResu", bisInspRsvrImpStat.getPatrolPersResu(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  99. bisInspRsvrImpStat.setRainForcFlag(getValResult(" rainForc", bisInspRsvrImpStat.getRainForc(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  100. bisInspRsvrImpStat.setHasSetMainFlFlag(getValResult(" hasSetMainFl", bisInspRsvrImpStat.getHasSetMainFl(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  101. bisInspRsvrImpStat.setHasWdEmnicFlag(getValResult(" hasWdEmnic", bisInspRsvrImpStat.getHasWdEmnic(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  102. bisInspRsvrImpStat.setEmerPlanSameApprFlag(getValResult(" emerPlanSameAppr", bisInspRsvrImpStat.getEmerPlanSameAppr(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  103. bisInspRsvrImpStat.setTechPersTrainFlag(getValResult(" techPersTrain", bisInspRsvrImpStat.getTechPersTrain(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  104. bisInspRsvrImpStat.setHasPatrolPersFlag(getValResult(" hasPatrolPers", bisInspRsvrImpStat.getHasPatrolPers(), bisInspRsvrImpRules, bisInspPblms, bisInspRsvrImpStat));
  105. }
  106. //返回结果集合
  107. return bisInspRsvrImpStats;
  108. }
  109. public Boolean getValResult(String cName, String realValue, List<BisInspRsvrImpRule> bisInspRsvrImpRules, List<BisInspPblm> bisInspPblms, BisInspRsvrImpStat bisInspRsvrImpStat) {
  110. Map<String, Object> listIvalue = getVilate(cName, bisInspRsvrImpRules);
  111. if (listIvalue.size() > 0) {
  112. if (listIvalue.get(realValue) != null) {
  113. // 循环问题是否有填报,如果有则是true 没有则是false;
  114. Boolean realFlag = false;
  115. for (BisInspPblm bisInspPblm : bisInspPblms) {
  116. if (bisInspPblm.getRegid() != null && bisInspRsvrImpStat.getRgstrId() != null && bisInspPblm.getRegid().equals(bisInspRsvrImpStat.getRgstrId())) {
  117. List<ObjInspPblms> objInspPblms = (List<ObjInspPblms>) listIvalue.get(realValue);
  118. for (ObjInspPblms objInspPblm : objInspPblms) {
  119. if (bisInspPblm.getPblmsTypeId().equals(objInspPblm.getGuid())) {
  120. realFlag = true;
  121. }
  122. }
  123. }
  124. }
  125. return realFlag;
  126. } else {
  127. //循环问题是否包含item里面的子项目的填报,则视为异常
  128. Boolean realFlag = true;
  129. for (BisInspPblm bisInspPblm : bisInspPblms) {
  130. if (bisInspPblm.getRegid() != null && bisInspRsvrImpStat.getRgstrId() != null && bisInspPblm.getRegid().equals(bisInspRsvrImpStat.getRgstrId())) {
  131. for (String key : listIvalue.keySet()) {
  132. List<ObjInspPblms> objInspPblms = (List<ObjInspPblms>) listIvalue.get(key);
  133. for (ObjInspPblms objInspPblm : objInspPblms) {
  134. if (bisInspPblm.getPblmsTypeId() != null && objInspPblm.getGuid() != null && bisInspPblm.getPblmsTypeId().equals(objInspPblm.getGuid())) {
  135. realFlag = false;
  136. }
  137. }
  138. }
  139. }
  140. }
  141. return realFlag;
  142. }
  143. }
  144. return true;
  145. }
  146. public List<ObjTypeCheck> getPblmsByQuesNum(String id, String tName, String eName, String ivalue, String type) {
  147. List<ObjTypeCheck> list = new ArrayList<>();
  148. //跟id取出对应的 规则
  149. List<BisInspItemQuesNumDto> bisInspItemQuesNumDtoList = new ArrayList<>();
  150. bisInspItemQuesNumDtoList = bisInspItemQuesNumDao.getById(id,"");
  151. if (bisInspItemQuesNumDtoList != null && bisInspItemQuesNumDtoList.size() > 0) {
  152. for (BisInspItemQuesNumDto bisInspItemQuesNumDto : bisInspItemQuesNumDtoList) {
  153. //根据规则取出对应的附件 填入对象里
  154. String sn = bisInspItemQuesNumDto.getQuesSn();
  155. List<String> snList = new ArrayList<>();
  156. String[] snSplitList = sn.split(SplitValue.HENG_SPLIT);
  157. if (snSplitList.length > 0) {
  158. for (int i = 0; i < snSplitList.length; i++) {
  159. if (snSplitList[i].contains(SplitValue.HENG_SPLIT)) {
  160. Integer startIndex = Integer.parseInt(snSplitList[i].split(SplitValue.HENG_SPLIT)[0].toString());
  161. Integer endIndex = Integer.parseInt(snSplitList[i].split(SplitValue.HENG_SPLIT)[1].toString());
  162. while (startIndex <= endIndex) {
  163. snList.add(startIndex.toString());
  164. startIndex++;
  165. }
  166. } else {
  167. snList.add(snSplitList[i]);
  168. }
  169. }
  170. } else {
  171. snList.add(sn);
  172. }
  173. Map<String, Object> param = new HashMap<>();
  174. //获取标准库中问题类别
  175. param.put("type", type);
  176. param.put("fileNum", bisInspItemQuesNumDto.getFileNum());
  177. param.put("sheetNum", bisInspItemQuesNumDto.getSheetNum());
  178. param.put("snList", snList);
  179. List<Map<String, String>> pblmTypeList = objInspPblmsDao.getPblmsTypeBySnAttType(param);
  180. for (Map<String, String> pblmType : pblmTypeList) {
  181. String sort1 = pblmType.get("SORT1");
  182. String name = pblmType.get("INSP_PBLMS_NAME");
  183. List<ObjTypeCheck> checkList = new ArrayList<>();
  184. //获取每个问题类别下的检查项
  185. param.put("sort1", sort1);
  186. List<Map<String, String>> pblmCheckList = objInspPblmsDao.getPblmsCheckBySnAttType(param);
  187. for (Map<String, String> pblmCheck : pblmCheckList) {
  188. String sort2 = pblmCheck.get("SORT2");
  189. String check = pblmCheck.get("CHECK_POINT");
  190. //获取检查项下的所有问题描述列表(问题序号)
  191. param.put("sort2", sort2);
  192. List<ObjInspPblms> pblmList = objInspPblmsDao.getPblmsBySnAttTypeSort(param);
  193. ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  194. objTypeCheck.setSort(sort2);
  195. objTypeCheck.setName(check);
  196. objTypeCheck.setItems(pblmList);
  197. objTypeCheck.settName(tName);
  198. objTypeCheck.seteName(eName);
  199. objTypeCheck.setIvalue(ivalue);
  200. checkList.add(objTypeCheck);
  201. }
  202. ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  203. objTypeCheck.setSort(sort1);
  204. objTypeCheck.setName(name);
  205. objTypeCheck.setItems(checkList);
  206. objTypeCheck.settName(tName);
  207. objTypeCheck.seteName(eName);
  208. objTypeCheck.setIvalue(ivalue);
  209. list.add(objTypeCheck);
  210. }
  211. }
  212. }
  213. return list;
  214. }
  215. public Map<String, Object> getVilate(String cName, List<BisInspRsvrImpRule> bisInspRsvrImpRules) {
  216. Map<String, Object> listValue = new HashMap<>();
  217. for (BisInspRsvrImpRule bisInspRsvrImpRule : bisInspRsvrImpRules) {
  218. List<ObjTypeCheck> objTypeChecks = bisInspRsvrImpRule.getObjTypeChecks();
  219. for (ObjTypeCheck objTypeCheck : objTypeChecks) {
  220. if (cName.equals(objTypeCheck.geteName())) {
  221. listValue.put(objTypeCheck.getIvalue(), ((ObjTypeCheck) objTypeCheck.getItems().get(0)).getItems());
  222. }
  223. }
  224. }
  225. return listValue;
  226. }
  227. }