4ee2df076815e793e2414deacb187104f7dfba53.svn-base 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. package cn.com.goldenwater.dcproj.controller.keyreg;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  5. import cn.com.goldenwater.dcproj.dao.AttMampuInfoDao;
  6. import cn.com.goldenwater.dcproj.dao.BisInspKeyRegisterSectionDao;
  7. import cn.com.goldenwater.dcproj.dao.BisInspPblmDao;
  8. import cn.com.goldenwater.dcproj.dao.ObjKeyPblmRelDao;
  9. import cn.com.goldenwater.dcproj.dto.ObjKeyCate;
  10. import cn.com.goldenwater.dcproj.dto.ObjKeyDic;
  11. import cn.com.goldenwater.dcproj.model.*;
  12. import cn.com.goldenwater.dcproj.param.*;
  13. import cn.com.goldenwater.dcproj.service.BisInspPblmService;
  14. import cn.com.goldenwater.dcproj.service.GwComFileService;
  15. import cn.com.goldenwater.dcproj.service.ObjKeyPblmRelService;
  16. import cn.com.goldenwater.dcproj.service.ObjKeyPblmsService;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import io.swagger.annotations.ApiParam;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.web.bind.annotation.*;
  25. import java.util.ArrayList;
  26. import java.util.Collections;
  27. import java.util.List;
  28. /**
  29. * @author lune
  30. * @date 2019-4-25
  31. */
  32. @Api(value = "172 问题与标准库关系管理", tags = "172 问题与标准库关系管理")
  33. @RestController
  34. @RequestMapping("/obj/key/pblm")
  35. public class ObjKeyPblmRelController extends BaseController {
  36. private Logger logger = LoggerFactory.getLogger(getClass());
  37. @Autowired
  38. private ObjKeyPblmRelService objKeyPblmRelService;
  39. @Autowired
  40. private ObjKeyPblmRelDao objKeyPblmRelDao;
  41. @Autowired
  42. private ObjKeyPblmsService objKeyPblmsService;
  43. @Autowired
  44. private BisInspPblmDao pblmDao;
  45. @Autowired
  46. private AttMampuInfoDao mampuInfoDao;
  47. @Autowired
  48. private GwComFileService gwComFileService;
  49. @Autowired
  50. private BisInspKeyRegisterSectionDao bisInspKeyRegisterSectionDao;
  51. // @Autowired
  52. // private BisInspKeysafqhRegisterUniService bisInspKeysafqhRegisterUniService;
  53. @ApiOperation(value = "根据ID获取172 问题与标准库关系管理")
  54. @RequestMapping(value = "/list", method = RequestMethod.POST)
  55. public BaseResponse<List<ObjKeyPblmRel>> list(@RequestBody ObjKeyPblmRelParam pblmRelParam) {
  56. ObjParam objParam = new ObjParam();
  57. objParam.setProType(pblmRelParam.getProType());
  58. pblmRelParam.setProType(getProType(objParam));
  59. List<ObjKeyPblmRel> keyPblmRels = objKeyPblmRelService.findList(pblmRelParam);
  60. return buildSuccessResponse(keyPblmRels);
  61. }
  62. @ApiOperation(value = "根据ID获取172 问题标准库管理(单表)")
  63. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  64. public BaseResponse<ObjKeyPblms> get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  65. ObjKeyPblms objKeyPblms = objKeyPblmsService.get(id);
  66. return buildSuccessResponse(objKeyPblms);
  67. }
  68. @Autowired
  69. private BisInspPblmService bisInspPblmService;
  70. @ApiOperation(value = "根据问题id获取172问题详情,type=1为水利工程建设,2为水利工程运行")
  71. @RequestMapping(value = "/getPblm/{pblmId}/{type}", method = RequestMethod.GET)
  72. public BaseResponse<KeyRegPblm> getPblm(@ApiParam(name = "pblmId", value = "pblmId", required = true) @PathVariable String pblmId,
  73. @ApiParam(name = "type", value = "type", required = true) @PathVariable String type) {
  74. String pType = "7";
  75. if ("1".equals(type)) {
  76. pType = "4";
  77. }
  78. KeyRegPblm objKeyPblms = pblmDao.getOnePblm(pblmId, pType);
  79. objKeyPblms = bisInspPblmService.convertRegPblm(objKeyPblms);
  80. List<GwComFile> comFiles = gwComFileService.findFileByBiz(objKeyPblms.getPblmId());
  81. objKeyPblms.setGwComFiles(comFiles);
  82. ObjParam objParam = new ObjParam();
  83. objParam.setProType(type);
  84. objKeyPblms.setProjectName(getProType(objParam));
  85. //水利工程运行需要获取几级单位
  86. switch (type) {
  87. case "2":
  88. String regId = objKeyPblms.getRegid();
  89. AttMampuInfo attMampuInfo = mampuInfoDao.get(regId);
  90. if (attMampuInfo != null) {
  91. String thirdName = "";
  92. String secondName = "";
  93. String firstName = "";
  94. if ("3".equals(attMampuInfo.getLev())) {
  95. thirdName = attMampuInfo.getNm();
  96. objKeyPblms.setLocalDepartType("三级管理单位");
  97. attMampuInfo = mampuInfoDao.get(attMampuInfo.getPid());
  98. if (attMampuInfo != null) {
  99. secondName = attMampuInfo.getNm();
  100. attMampuInfo = mampuInfoDao.get(attMampuInfo.getPid());
  101. if (attMampuInfo != null) {
  102. firstName = attMampuInfo.getNm();
  103. }
  104. }
  105. } else if ("2".equals(attMampuInfo.getLev())) {
  106. secondName = attMampuInfo.getNm();
  107. objKeyPblms.setLocalDepartType("二级管理单位");
  108. attMampuInfo = mampuInfoDao.get(attMampuInfo.getPid());
  109. if (attMampuInfo != null) {
  110. firstName = attMampuInfo.getNm();
  111. }
  112. } else if ("1".equals(attMampuInfo.getLev())) {
  113. firstName = attMampuInfo.getNm();
  114. objKeyPblms.setLocalDepartType("一级管理单位");
  115. }
  116. objKeyPblms.setFirstName(firstName);
  117. objKeyPblms.setSecondName(secondName);
  118. objKeyPblms.setThirdName(thirdName);
  119. }
  120. break;
  121. // case "99":
  122. // BisInspKeyRegisterSection keyRegisterSection = bisInspKeyRegisterSectionDao.findSecByUnitId(objKeyPblms.getRegid());
  123. // if (keyRegisterSection != null) {
  124. // objKeyPblms.setSecName(keyRegisterSection.getNm());
  125. // }
  126. // break;
  127. // case "100":
  128. // BisInspKeyRegisterSection keyRegisterSection = bisInspKeyRegisterSectionDao.findSecByUnitId(objKeyPblms.getRegid());
  129. // if (keyRegisterSection != null) {
  130. // objKeyPblms.setSecName(keyRegisterSection.getNm());
  131. // }
  132. // break;
  133. default:
  134. BisInspKeyRegisterSection keyRegisterSection = bisInspKeyRegisterSectionDao.findSecByUnitId(objKeyPblms.getRegid());
  135. if (keyRegisterSection != null) {
  136. objKeyPblms.setSecName(keyRegisterSection.getNm());
  137. }
  138. }
  139. return buildSuccessResponse(objKeyPblms);
  140. }
  141. @ApiOperation(value = "获取172问题类型分组")
  142. @RequestMapping(value = "/convertGroup", method = RequestMethod.POST)
  143. public BaseResponse<List<ObjKeyPblmRel>> convertGroup(@RequestBody ObjKeyPblmRelParam pblmRelParam) {
  144. ObjParam objParam = new ObjParam();
  145. objParam.setProType(pblmRelParam.getProType());
  146. pblmRelParam.setPtype(pblmRelParam.getProType());
  147. pblmRelParam.setProType(getProType(objParam));
  148. List<ObjKeyPblmRel> keyPblmRels = objKeyPblmRelService.convertGroup(pblmRelParam);
  149. for (ObjKeyPblmRel keyPblmRel : keyPblmRels) {
  150. pblmRelParam.setPblmPoint(keyPblmRel.getPblmPoint());
  151. List<ObjKeyPblmRel> keyPblmRelsBak = objKeyPblmRelService.findList(pblmRelParam);
  152. List<PblmRelDic> relDicList = new ArrayList<>();
  153. for (ObjKeyPblmRel keyPblmRel1 : keyPblmRelsBak) {
  154. PblmRelDic relDic = new PblmRelDic();
  155. relDic.setPblmSn(keyPblmRel1.getPblmSn());
  156. relDic.setPblmAttachName(keyPblmRel1.getPblmAttachName());
  157. relDic.setPblmAttach(keyPblmRel1.getPblmAttach());
  158. relDicList.add(relDic);
  159. }
  160. keyPblmRel.setPblmRelDics(relDicList);
  161. }
  162. if ("违规行为".equals(pblmRelParam.getPblmType())) {
  163. Collections.reverse(keyPblmRels);
  164. }
  165. return buildSuccessResponse(keyPblmRels);
  166. }
  167. @ApiOperation(value = "根据工程类型和单位性质查找对应的问题类别,如合同问题,违规行为等")
  168. @RequestMapping(value = "/listPblmType", method = RequestMethod.POST)
  169. public BaseResponse<List<ObjKeyPblmRel>> listPblmType(@RequestBody KeyRegParam keyRegPatam) {
  170. ObjParam objParam = new ObjParam();
  171. objParam.setProType(keyRegPatam.getProType());
  172. keyRegPatam.setPtype(keyRegPatam.getProType());
  173. keyRegPatam.setProType(getProType(objParam));
  174. List<ObjKeyPblmRel> keyPblmRels = objKeyPblmRelDao.findPblmType(keyRegPatam);
  175. return buildSuccessResponse(keyPblmRels);
  176. }
  177. @ApiOperation(value = "根据工程类型和单位性质查找对应的问题类别,如合同问题,违规行为等,包含子类问题分组")
  178. @RequestMapping(value = "/listPblmContainGroup", method = RequestMethod.POST)
  179. public BaseResponse<List<KegPlbmGroup>> listPblmContainGroup(@RequestBody KeyRegParam keyRegPatam) {
  180. ObjParam objParam = new ObjParam();
  181. objParam.setProType(keyRegPatam.getProType());
  182. keyRegPatam.setProType(getProType(objParam));
  183. List<ObjKeyPblmRel> keyPblmRels = objKeyPblmRelDao.findPblmType(keyRegPatam);
  184. List<KegPlbmGroup> kegPlbmGroups = new ArrayList<KegPlbmGroup>();
  185. for (ObjKeyPblmRel pblmRel : keyPblmRels) {
  186. KegPlbmGroup kegPlbmGroup = new KegPlbmGroup();
  187. ObjKeyPblmRelParam pblmRelParam = new ObjKeyPblmRelParam();
  188. pblmRelParam.setProType(keyRegPatam.getProType());
  189. pblmRelParam.setOrgType(keyRegPatam.getOrgType());
  190. pblmRelParam.setPblmType(pblmRel.getPblmType());
  191. List<ObjKeyPblmRel> keyPblmRelsss = objKeyPblmRelService.convertGroup(pblmRelParam);
  192. kegPlbmGroup.setKeyPblmRels(keyPblmRelsss);
  193. kegPlbmGroup.setPblmType(pblmRel.getPblmType());
  194. kegPlbmGroups.add(kegPlbmGroup);
  195. }
  196. return buildSuccessResponse(kegPlbmGroups);
  197. }
  198. @ApiOperation(value = "根据项目类型获取172单位性质,1水利工程建设,2水利工程运行")
  199. @RequestMapping(value = "/listProType", method = RequestMethod.POST)
  200. public BaseResponse<List<ObjKeyPblmRel>> listProType(@RequestBody ObjParam objParam) {
  201. List<ObjKeyPblmRel> keyPblmRels = objKeyPblmRelDao.findProType(getProType(objParam));
  202. return buildSuccessResponse(keyPblmRels);
  203. }
  204. private String getProType(ObjParam objParam) {
  205. String proType = "水利工程建设";
  206. if (objParam != null) {
  207. if ("2".equals(objParam.getProType())) {
  208. proType = "水利工程运行";
  209. }
  210. }
  211. return proType;
  212. }
  213. @ApiOperation("172工程问题清单,根据工程附件范围和问题序号范围查找相关问题,改接口必须通过上下文传参")
  214. @RequestMapping(value = "/pblmsList", method = RequestMethod.POST)
  215. public BaseResponse<Object> pblmsList(@RequestBody KeyPblmParams keyPblmParams) {
  216. List<ObjKeyPblms> keyPblmsListAll = new ArrayList<>();
  217. if (StringUtils.isNotBlank(keyPblmParams.getProType())) {
  218. ObjParam objParam = new ObjParam();
  219. objParam.setProType(keyPblmParams.getProType());
  220. keyPblmParams.setAttachType(getProType(objParam));
  221. }
  222. List<ObjKeyDic> keyDicList = new ArrayList<>();
  223. String attach = keyPblmParams.getAttach();
  224. if (attach.contains(SplitValue.DOUHAO_SPLIT)) {
  225. String[] arrays = attach.split(SplitValue.DOUHAO_SPLIT);
  226. String[] snes = keyPblmParams.getSn().split(SplitValue.DOUHAO_SPLIT);
  227. for (int i = 0; i < arrays.length; i++) {
  228. keyPblmsListAll.addAll(findObjKeys(arrays[i], snes[i], keyPblmParams));
  229. }
  230. } else {
  231. keyPblmsListAll.addAll(findObjKeys(attach, keyPblmParams.getSn(), keyPblmParams));
  232. }
  233. keyDicList = convertTree(keyPblmsListAll, "");
  234. if (!"v3".equals(keyPblmParams.getVersion())) {
  235. return buildSuccessResponse(keyDicList);
  236. }
  237. if ("工程缺陷".equals(keyPblmParams.getPblmType())) {
  238. return buildSuccessResponse(changeQueXian(keyPblmsListAll, keyDicList));
  239. }
  240. List<ObjKeyDicClass> keyDicClassList = new ArrayList<>();
  241. ObjKeyDicClass keyDicClass = new ObjKeyDicClass();
  242. keyDicClass.setClassName("");
  243. keyDicClass.setKeyDicList(keyDicList);
  244. keyDicClassList.add(keyDicClass);
  245. return buildSuccessResponse(keyDicClassList);
  246. }
  247. @ApiOperation("172工程问题清单,根据工程附件范围和问题序号范围查找相关问题,改接口必须通过上下文传参")
  248. @RequestMapping(value = "/v2/pblmsList", method = RequestMethod.POST)
  249. public BaseResponse<Object> pblmsList_v2(@RequestBody KeyPblmParams keyPblmParams) {
  250. List<ObjKeyPblms> keyPblmsListAll = new ArrayList<>();
  251. if (StringUtils.isNotBlank(keyPblmParams.getProType())) {
  252. ObjParam objParam = new ObjParam();
  253. objParam.setProType(keyPblmParams.getProType());
  254. keyPblmParams.setAttachType(getProType(objParam));
  255. }
  256. List<ObjKeyDic> keyDicList = new ArrayList<>();
  257. String attach = keyPblmParams.getAttach();
  258. if (attach.contains(SplitValue.DOUHAO_SPLIT)) {
  259. String[] arrays = attach.split(SplitValue.DOUHAO_SPLIT);
  260. String[] snes = keyPblmParams.getSn().split(SplitValue.DOUHAO_SPLIT);
  261. for (int i = 0; i < arrays.length; i++) {
  262. keyPblmsListAll.addAll(findObjKeys(arrays[i], snes[i], keyPblmParams));
  263. }
  264. } else {
  265. keyPblmsListAll.addAll(findObjKeys(attach, keyPblmParams.getSn(), keyPblmParams));
  266. }
  267. keyDicList = convertTree(keyPblmsListAll, "v2");
  268. if (!"v3".equals(keyPblmParams.getVersion())) {
  269. return buildSuccessResponse(keyDicList);
  270. }
  271. if ("工程缺陷".equals(keyPblmParams.getPblmType())) {
  272. return buildSuccessResponse(changeQueXian(keyPblmsListAll, keyDicList));
  273. }
  274. List<ObjKeyDicClass> keyDicClassList = new ArrayList<>();
  275. ObjKeyDicClass keyDicClass = new ObjKeyDicClass();
  276. keyDicClass.setClassName("");
  277. keyDicClass.setKeyDicList(keyDicList);
  278. keyDicClassList.add(keyDicClass);
  279. return buildSuccessResponse(keyDicList);
  280. }
  281. private List<ObjKeyDicClass> changeQueXian(List<ObjKeyPblms> keyPblmsListAll, List<ObjKeyDic> keyDicList) {
  282. List<ObjKeyDicClass> quexianList = new ArrayList<ObjKeyDicClass>();
  283. for (int i = 0; i < keyPblmsListAll.size(); i++) {
  284. ObjKeyPblms keyPblms = keyPblmsListAll.get(i);
  285. ObjKeyDicClass keyDic_quexian = new ObjKeyDicClass();
  286. keyDic_quexian.setClassName(keyPblms.getClassName());
  287. if (StringUtils.isNotBlank(keyPblms.getClassName()) && !quexianList.contains(keyDic_quexian)) {
  288. quexianList.add(keyDic_quexian);
  289. }
  290. }
  291. for (ObjKeyDicClass keyDicClass : quexianList) {
  292. List<ObjKeyDic> objKeyDicList = new ArrayList<>();
  293. for (ObjKeyDic keyDic : keyDicList) {
  294. if (keyDicClass.getClassName().equals(keyDic.getClassName())) {
  295. objKeyDicList.add(keyDic);
  296. }
  297. }
  298. keyDicClass.setKeyDicList(objKeyDicList);
  299. }
  300. return quexianList;
  301. }
  302. private List<ObjKeyDic> convertTree(List<ObjKeyPblms> keyPblmsListAll, String version) {
  303. List<ObjKeyDic> objKeyDics = new ArrayList<>();
  304. for (int i = 0; i < keyPblmsListAll.size(); i++) {
  305. ObjKeyPblms keyPblms = keyPblmsListAll.get(i);
  306. ObjKeyDic keyDic = new ObjKeyDic();
  307. keyDic.setCheckPoint(keyPblms.getCheckPoint());
  308. keyDic.setClassName(keyPblms.getClassName());
  309. if (!objKeyDics.contains(keyDic)) {
  310. objKeyDics.add(keyDic);
  311. }
  312. }
  313. if ("v2".equals(version)) {
  314. for (ObjKeyDic objKeyDic : objKeyDics) {
  315. List<ObjKeyCate> keyCateList = new ArrayList<>();
  316. for (ObjKeyPblms keyPblms : keyPblmsListAll) {
  317. if (objKeyDic.getCheckPoint().equals(keyPblms.getCheckPoint())) {
  318. ObjKeyCate keyCate = new ObjKeyCate();
  319. keyCate.setCheckPoint(objKeyDic.getCheckPoint());
  320. keyCate.setInspPblmCate(keyPblms.getInspPblmCate());
  321. keyCate.setPblmCateName(getCateName(keyPblms.getInspPblmCate()));
  322. if (!keyCateList.contains(keyCate)) {
  323. keyCateList.add(keyCate);
  324. }
  325. }
  326. }
  327. objKeyDic.setKeyCateList(keyCateList);
  328. for (ObjKeyCate keyCate : objKeyDic.getKeyCateList()) {
  329. List<ObjKeyPblms> keyPblmsList = new ArrayList<>();
  330. for (ObjKeyPblms keyPblms : keyPblmsListAll) {
  331. if (keyCate.getCheckPoint().equals(keyPblms.getCheckPoint()) && keyCate.getInspPblmCate().equals(keyPblms.getInspPblmCate())) {
  332. keyPblmsList.add(keyPblms);
  333. }
  334. }
  335. keyCate.setKeyDicList(keyPblmsList);
  336. }
  337. }
  338. } else {
  339. for (ObjKeyDic objKeyDic : objKeyDics) {
  340. List<ObjKeyPblms> keyPblmsList = new ArrayList<>();
  341. for (ObjKeyPblms keyPblms : keyPblmsListAll) {
  342. if (objKeyDic.getCheckPoint().equals(keyPblms.getCheckPoint())) {
  343. keyPblmsList.add(keyPblms);
  344. }
  345. }
  346. objKeyDic.setKeyDicList(keyPblmsList);
  347. }
  348. }
  349. return objKeyDics;
  350. }
  351. private String getCateName(String cate) {
  352. if ("0".equals(cate)) {
  353. return "一般";
  354. }
  355. if ("1".equals(cate)) {
  356. return "较重";
  357. }
  358. if ("2".equals(cate)) {
  359. return "严重";
  360. }
  361. if ("3".equals(cate)) {
  362. return "特别严重";
  363. }
  364. return "";
  365. }
  366. private List<ObjKeyPblms> findObjKeys(String attach, String sn, KeyPblmParams keyPblmParams) {
  367. ObjKeyPblmsParam pblmsParam = new ObjKeyPblmsParam();
  368. if (StringUtils.isNotBlank(attach)) {
  369. String[] attaches = attach.split(SplitValue.HENG_SPLIT);
  370. if (attaches.length == 2) {
  371. pblmsParam.setAttach(attaches[0].trim());
  372. pblmsParam.setSheet(attaches[1].trim());
  373. } else {
  374. pblmsParam.setAttach(attaches[0].trim());
  375. }
  376. pblmsParam.setCheckPoint(keyPblmParams.getCheckPoint());
  377. pblmsParam.setAttachType(keyPblmParams.getAttachType());
  378. pblmsParam.setSheetName(keyPblmParams.getSheetName());
  379. pblmsParam.setInspPblmsName(keyPblmParams.getInspPblmsName());
  380. pblmsParam.setPblmType(keyPblmParams.getPblmType());
  381. pblmsParam.setClassName(keyPblmParams.getClassName());
  382. String snStr = "";
  383. if (StringUtils.isNotBlank(sn)) {
  384. if (sn.contains(SplitValue.HENG_SPLIT)) {
  385. String[] snes = sn.split(SplitValue.HENG_SPLIT);
  386. if (snes.length == 2) {
  387. int start = Integer.parseInt(snes[0]);
  388. int end = Integer.parseInt(snes[1]);
  389. for (int i = start; i <= end; i++) {
  390. snStr += i + SplitValue.DOUHAO_SPLIT;
  391. }
  392. } else {
  393. snStr = snes[0];
  394. }
  395. if (snStr.endsWith(SplitValue.DOUHAO_SPLIT)) {
  396. snStr = snStr.substring(0, snStr.length() - 1);
  397. }
  398. pblmsParam.setSn(snStr);
  399. } else {
  400. pblmsParam.setSn(sn);
  401. }
  402. }
  403. }
  404. pblmsParam.setPblmDesc(keyPblmParams.getPblmDesc());
  405. List<ObjKeyPblms> keyPblmsList = objKeyPblmsService.findKeyPblms(pblmsParam);
  406. return keyPblmsList;
  407. }
  408. }