414ca6c910ea8ee28bee2004fc76eec52b754d72.svn-base 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. package cn.com.goldenwater.dcproj.service.impl.pblm;
  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.ObjInspPblmsDao;
  6. import cn.com.goldenwater.dcproj.dto.BisInspItemQuesNumDto;
  7. import cn.com.goldenwater.dcproj.dto.DictDto;
  8. import cn.com.goldenwater.dcproj.dto.ObjInspPblmsDto;
  9. import cn.com.goldenwater.dcproj.model.ObjInspPblms;
  10. import cn.com.goldenwater.dcproj.model.ObjTypeCheck;
  11. import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
  12. import cn.com.goldenwater.dcproj.param.ObjInspPblmsParam;
  13. import cn.com.goldenwater.dcproj.param.ObjInspPblmsParams;
  14. import cn.com.goldenwater.dcproj.service.ObjInspPblmsService;
  15. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  16. import cn.com.goldenwater.dcproj.utils.Builder;
  17. import cn.com.goldenwater.dcproj.utils.RedisOperator;
  18. import cn.com.goldenwater.target.CheckException;
  19. import com.alibaba.fastjson.JSON;
  20. import org.apache.commons.collections.MapUtils;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.util.*;
  26. /**
  27. * @author lune
  28. * @date 2019-2-18
  29. */
  30. @Service
  31. @Transactional
  32. public class ObjInspPblmsServiceImpl extends AbstractCrudService<ObjInspPblms, ObjInspPblmsParam> implements ObjInspPblmsService {
  33. @Autowired
  34. private ObjInspPblmsDao objInspPblmsDao;
  35. @Autowired
  36. private BisInspItemQuesNumDao bisInspItemQuesNumDao;
  37. @Autowired
  38. private OlBisInspOrgService olBisInspOrgService;
  39. @Autowired
  40. private RedisOperator redisOperator;
  41. private final String OBJ_INSP_PBLMS_PRE = "OBJ_INSP_PBLMS_PRE_";
  42. public ObjInspPblmsServiceImpl(ObjInspPblmsDao objInspPblmsDao) {
  43. super(objInspPblmsDao);
  44. this.objInspPblmsDao = objInspPblmsDao;
  45. }
  46. // 问题标准 - 全国标准
  47. private final static String NATIONAL_STANDARD = "0";
  48. // 问题标准 - 自定义标准
  49. private final static String CUSTOM_STANDARD = "1";
  50. @Override
  51. public List findList(ObjInspPblmsParam param) {
  52. List objInspPblmsList = null;
  53. String redisKey = OBJ_INSP_PBLMS_PRE + (param == null ? "NULL" : param.toString());
  54. String objInspPblmsListStr = redisOperator.get(redisKey);
  55. if (objInspPblmsListStr == null) {
  56. objInspPblmsList = super.findList(param);
  57. redisOperator.set(redisKey, JSON.toJSONString(objInspPblmsList), 300);
  58. return objInspPblmsList;
  59. }
  60. return JSON.parseArray(objInspPblmsListStr, ObjInspPblms.class);
  61. }
  62. @Override
  63. public List<ObjInspPblmsDto> findPblmsDTO(String type, String pblmsName, String orgId,String sort1) {
  64. return objInspPblmsDao.findPblmsDTO(type, pblmsName, orgId, sort1);
  65. }
  66. @Override
  67. public List<ObjInspPblms> getPblmType(String type, String pguid, String orgId) {
  68. ObjInspPblmsParam p = Builder.of(ObjInspPblmsParam::new)
  69. .with(ObjInspPblmsParam::setType, type)
  70. .with(ObjInspPblmsParam::setPguid, StringUtils.isBlank(pguid) ? "00000000000000000000000000000000" : pguid)
  71. .with(ObjInspPblmsParam::setOrgId, orgId)
  72. .build();
  73. return objInspPblmsDao.findList(p);
  74. }
  75. @Override
  76. public List<ObjInspPblms> getPblmTypeInAttach(ObjInspPblmsParams objInspPblms) {
  77. List<ObjInspPblms> list = new ArrayList<>();
  78. ObjInspPblmsParam p = new ObjInspPblmsParam();
  79. p.setType(objInspPblms.getType());
  80. p.setAttach(objInspPblms.getAttach());
  81. if (StringUtils.isBlank(objInspPblms.getPguid())) {
  82. p.setPguid("00000000000000000000000000000000");
  83. } else {
  84. p.setPguid(objInspPblms.getPguid());
  85. }
  86. p.setSort1(objInspPblms.getSort1());
  87. p.setSn(objInspPblms.getSn());
  88. list = objInspPblmsDao.findList(p);
  89. return list;
  90. }
  91. @Override
  92. public List<ObjInspPblms> getPblmTypeInAttach(String attach, String type, String sn) {
  93. ObjInspPblmsParam p = new ObjInspPblmsParam();
  94. p.setSn(sn);
  95. p.setAttach(attach);
  96. p.setType(type);
  97. p.setSnClass("1");
  98. List<ObjInspPblms> pblmsParam = objInspPblmsDao.findList(p);
  99. if (pblmsParam == null) {
  100. return new ArrayList<>();
  101. }
  102. return pblmsParam;
  103. }
  104. @Override
  105. public ObjInspPblms getPblmTypeInAttach(String attach, String type, String sn, String snClass) {
  106. ObjInspPblmsParam p = new ObjInspPblmsParam();
  107. p.setSn(sn);
  108. p.setAttach(attach);
  109. p.setType(type);
  110. p.setSnClass(snClass);
  111. ObjInspPblms pblmsParam = objInspPblmsDao.getBy(p);
  112. if (pblmsParam == null) {
  113. return new ObjInspPblms();
  114. }
  115. return pblmsParam;
  116. }
  117. @Override
  118. public List<String> findPblmsName(String orgId) {
  119. return objInspPblmsDao.findPblmsName(orgId);
  120. }
  121. @Override
  122. public List<String> findPblmsCheckPoints(ObjInspPblmsParam objInspPblmsParam, String orgId) {
  123. OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(orgId);
  124. if (olBisInspOrg == null) {
  125. throw new CheckException("当前机构不存在!!");
  126. }
  127. if ("1".equals(olBisInspOrg.getPblmLogo()) && "1".equals(objInspPblmsParam.getType())) {
  128. orgId = olBisInspOrg.getQuoteOrgId();
  129. } else {
  130. orgId = "";
  131. }
  132. return objInspPblmsDao.findPblmsCheckPoints(objInspPblmsParam.getInspPblmsName(), orgId, objInspPblmsParam.getType());
  133. }
  134. @Override
  135. public List<String> findPblmsDesc(Map<String, String> params) {
  136. return objInspPblmsDao.findPblmsDesc(params);
  137. }
  138. @Override
  139. public ObjInspPblms getByPblms(Map<String, String> params) {
  140. // Questions ??? 为啥要默认为小水库问题清单
  141. String type = params.get("type");
  142. if (StringUtils.isBlank(type)) {
  143. type = "1";
  144. params.put("type", type);
  145. }
  146. List<ObjInspPblms> inspPblms = objInspPblmsDao.getByPblms(params);
  147. if (inspPblms.size() > 0) {
  148. return inspPblms.get(0);
  149. }
  150. return new ObjInspPblms();
  151. }
  152. @Override
  153. public List<ObjTypeCheck> getPblmsByQuesNum(String id, String type, OlBisInspOrg olBisInspOrg) {
  154. List<ObjTypeCheck> list = new ArrayList<>();
  155. // 2. 获取问题
  156. List<BisInspItemQuesNumDto> bisInspItemQuesNumDtoList = new ArrayList<>();
  157. if (id == null || "0".equals(id)) {
  158. list = getAllPblmsByType(type, olBisInspOrg.getOrgId());
  159. } else {
  160. if (CUSTOM_STANDARD.equals(olBisInspOrg.getPblmLogo()) && "1".equals(type)) {
  161. // 自定义标准 - 要传 orgId
  162. bisInspItemQuesNumDtoList = bisInspItemQuesNumDao.getById(id, olBisInspOrg.getQuoteOrgId());
  163. } else {
  164. // 全国标准
  165. bisInspItemQuesNumDtoList = bisInspItemQuesNumDao.getById(id, null);
  166. }
  167. }
  168. // 3. 根据规则取出对应的附件 填入对象里
  169. if (bisInspItemQuesNumDtoList != null && bisInspItemQuesNumDtoList.size() > 0) {
  170. // 拼接
  171. for (BisInspItemQuesNumDto bisInspItemQuesNumDto : bisInspItemQuesNumDtoList) {
  172. //根据规则取出对应的附件 填入对象里
  173. String sn = bisInspItemQuesNumDto.getQuesSn();
  174. List<String> snList = new ArrayList<>();
  175. if (StringUtils.isBlank(sn)) {
  176. continue;
  177. }
  178. String[] snSplitList = sn.split(SplitValue.DOUHAO_SPLIT);
  179. if (snSplitList.length > 0) {
  180. for (String s : snSplitList) {
  181. if (s.contains(SplitValue.HENG_SPLIT)) {
  182. Integer startIndex = Integer.parseInt(s.split(SplitValue.HENG_SPLIT)[0]);
  183. Integer endIndex = Integer.parseInt(s.split(SplitValue.HENG_SPLIT)[1]);
  184. while (startIndex <= endIndex) {
  185. snList.add(startIndex.toString());
  186. startIndex++;
  187. }
  188. } else {
  189. snList.add(s);
  190. }
  191. }
  192. } else {
  193. snList.add(sn);
  194. }
  195. Map<String, Object> param = new HashMap<>();
  196. //获取标准库中问题类别
  197. param.put("orgId", "");
  198. if ("1".equals(olBisInspOrg.getPblmLogo()) && "1".equals(type)) {
  199. param.put("orgId", olBisInspOrg.getQuoteOrgId());
  200. }
  201. param.put("type", type);
  202. param.put("fileNum", bisInspItemQuesNumDto.getFileNum());
  203. param.put("sheetNum", bisInspItemQuesNumDto.getSheetNum());
  204. param.put("snList", snList);
  205. List<Map<String, String>> pblmTypeList = objInspPblmsDao.getPblmsTypeBySnAttType(param);
  206. for (Map<String, String> pblmType : pblmTypeList) {
  207. String sort1 = pblmType.get("SORT1");
  208. String name = pblmType.get("INSP_PBLMS_NAME");
  209. List<ObjTypeCheck> checkList = new ArrayList<>();
  210. //获取每个问题类别下的检查项
  211. param.put("sort1", sort1);
  212. List<Map<String, String>> pblmCheckList = objInspPblmsDao.getPblmsCheckBySnAttType(param);
  213. for (Map<String, String> pblmCheck : pblmCheckList) {
  214. String sort2 = pblmCheck.get("SORT2");
  215. String check = pblmCheck.get("CHECK_POINT");
  216. //获取检查项下的所有问题描述列表(问题序号)
  217. param.put("SORT2", sort2);
  218. List<ObjInspPblms> pblmList = objInspPblmsDao.getPblmsBySnAttTypeSort(param);
  219. ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  220. objTypeCheck.setSort(sort2);
  221. objTypeCheck.setName(check);
  222. objTypeCheck.setItems(pblmList);
  223. checkList.add(objTypeCheck);
  224. }
  225. ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  226. objTypeCheck.setSort(sort1);
  227. objTypeCheck.setName(name);
  228. objTypeCheck.setItems(checkList);
  229. list.add(objTypeCheck);
  230. }
  231. }
  232. }
  233. return list;
  234. }
  235. @Override
  236. public List<ObjTypeCheck> getAllPblmsByType(String type, String orgId) {
  237. List<ObjTypeCheck> list = new ArrayList<>();
  238. Map<String, Object> param = new HashMap<>(2);
  239. // 获取标准库中问题类别
  240. OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(orgId);
  241. Optional.ofNullable(olBisInspOrg).orElseThrow(() -> new CheckException("当前机构不存在!!"));
  242. param.put("type", type);
  243. if ("1".equals(olBisInspOrg.getPblmLogo()) && "1".equals(type)) {
  244. param.put("orgId", olBisInspOrg.getQuoteOrgId());
  245. }
  246. List<Map<String, String>> pblmTypeList = objInspPblmsDao.getPblmsTypeBySnAttType(param);
  247. for (Map<String, String> pblmType : pblmTypeList) {
  248. pblmType.put("CHECK_POINT", null);
  249. pblmType.put("PBLM_DESC", null);
  250. }
  251. pblmTypeList.stream()
  252. .sorted(Comparator.comparing(a -> MapUtils.getInteger(a, "SORT1")))
  253. .distinct().forEach(one -> {
  254. List<ObjTypeCheck> checkList = new ArrayList<>();
  255. String name = one.get("INSP_PBLMS_NAME");
  256. param.put("fileNum", one.get("ATTACH"));
  257. param.put("sort1", one.get("SORT1"));
  258. List<Map<String, String>> pblmCheckList = objInspPblmsDao.getPblmsCheckBySnAttType(param);
  259. for (Map<String, String> pblmCheck : pblmCheckList) {
  260. String sort2 = pblmCheck.get("SORT2");
  261. String check = pblmCheck.get("CHECK_POINT");
  262. //获取检查项下的所有问题描述列表(问题序号)
  263. param.put("sort2", sort2);
  264. List<ObjInspPblms> pblmList = objInspPblmsDao.getPblmsBySnAttTypeSort(param);
  265. ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  266. objTypeCheck.setOrgId(orgId);
  267. objTypeCheck.setSort(sort2);
  268. objTypeCheck.setName(check);
  269. objTypeCheck.setItems(pblmList);
  270. checkList.add(objTypeCheck);
  271. }
  272. ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  273. objTypeCheck.setSort(one.get("SORT1"));
  274. objTypeCheck.setName(one.get("INSP_PBLMS_NAME"));
  275. objTypeCheck.setItems(checkList);
  276. list.add(objTypeCheck);
  277. });
  278. // for (Map<String, String> pblmType : pblmTypeList) {
  279. // String attach = pblmType.get("ATTACH");
  280. // String sort1 = pblmType.get("SORT1");
  281. // String name = pblmType.get("INSP_PBLMS_NAME");
  282. // List<ObjTypeCheck> checkList = new ArrayList<>();
  283. // //获取每个问题类别下的检查项
  284. // param.put("fileNum", attach);
  285. // param.put("sort1", sort1);
  286. // List<Map<String, String>> pblmCheckList = objInspPblmsDao.getPblmsCheckBySnAttType(param);
  287. // for (Map<String, String> pblmCheck : pblmCheckList) {
  288. // String sort2 = pblmCheck.get("SORT2");
  289. // String check = pblmCheck.get("CHECK_POINT");
  290. // //获取检查项下的所有问题描述列表(问题序号)
  291. // param.put("sort2", sort2);
  292. // List<ObjInspPblms> pblmList = objInspPblmsDao.getPblmsBySnAttTypeSort(param);
  293. // ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  294. // objTypeCheck.setOrgId(orgId);
  295. // objTypeCheck.setSort(sort2);
  296. // objTypeCheck.setName(check);
  297. // objTypeCheck.setItems(pblmList);
  298. // checkList.add(objTypeCheck);
  299. // }
  300. // ObjTypeCheck objTypeCheck = new ObjTypeCheck();
  301. // objTypeCheck.setSort(sort1);
  302. // objTypeCheck.setName(name);
  303. // objTypeCheck.setItems(checkList);
  304. // list.add(objTypeCheck);
  305. // }
  306. return list;
  307. }
  308. @Override
  309. public ObjInspPblms getPblmsByType(ObjInspPblmsParam objInspPblmsParam) {
  310. List<ObjInspPblms> inspPblms = objInspPblmsDao.getPblmsByType(objInspPblmsParam);
  311. if (inspPblms.size() > 0) {
  312. return inspPblms.get(0);
  313. }
  314. return new ObjInspPblms();
  315. }
  316. @Override
  317. public List<String> getPblmNames(ObjInspPblmsParam objInspPblmsParam) {
  318. return this.objInspPblmsDao.getPblmNames(objInspPblmsParam);
  319. }
  320. @Override
  321. public List<ObjInspPblmsDto> findPblmsDtoName(String type, String pblmsName, String orgId,String sort1) {
  322. return objInspPblmsDao.findPblmsDtoName(type, pblmsName, orgId,sort1);
  323. }
  324. @Override
  325. public DictDto findLastVersion(String name) {
  326. return objInspPblmsDao.findLastVersion(name);
  327. }
  328. }