75f244b911b233cb244eb8a136de7962b1bdfe13.svn-base 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428
  1. package cn.com.goldenwater.dcproj.service.impl.pblm;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.constValue.BisInspEnum;
  4. import cn.com.goldenwater.dcproj.constValue.CommonLabel;
  5. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  6. import cn.com.goldenwater.dcproj.constValue.StateEnum;
  7. import cn.com.goldenwater.dcproj.dao.*;
  8. import cn.com.goldenwater.dcproj.dto.*;
  9. import cn.com.goldenwater.dcproj.model.*;
  10. import cn.com.goldenwater.dcproj.param.*;
  11. import cn.com.goldenwater.dcproj.service.*;
  12. import cn.com.goldenwater.dcproj.utils.*;
  13. import cn.com.goldenwater.id.util.UuidUtil;
  14. import cn.com.goldenwater.target.CheckException;
  15. import com.github.pagehelper.PageHelper;
  16. import com.github.pagehelper.PageInfo;
  17. import org.apache.commons.collections.map.HashedMap;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.text.SimpleDateFormat;
  27. import java.time.LocalDate;
  28. import java.time.format.DateTimeFormatter;
  29. import java.util.*;
  30. /**
  31. * @author lune
  32. * @date 2019-2-18
  33. */
  34. @Service
  35. @Transactional
  36. public class BisInspPblmServiceImpl extends AbstractCrudService<BisInspPblm, BisInspPblmParam> implements BisInspPblmService {
  37. private Logger logger = LoggerFactory.getLogger(getClass());
  38. @Autowired
  39. private BisInspPblmDao bisInspPblmDao;
  40. @Autowired
  41. private BisInspKeyRegSecUnitDao keyRegSecUnitDao;
  42. @Autowired
  43. private BisInspVillgdNvillService nvillService;
  44. @Autowired
  45. private BisInspVillgdVillService villService;
  46. @Autowired
  47. private BisInspVillgdWtspService wtspService;
  48. @Autowired
  49. private BisInspComPblmDao bisInspComPblmDao;
  50. @Autowired
  51. private GwComFileService gwComFileService;
  52. @Autowired
  53. private BisInspAllObjService bisInspAllObjService;
  54. @Autowired
  55. private OlBisInspOrgService inspOrgService;
  56. @Autowired
  57. private BisInspKeyRegSecUnitService bisInspKeyRegSecUnitService;
  58. @Autowired
  59. private BisInspPblmDutyService bisInspPblmDutyService;
  60. @Autowired
  61. AttRsBaseService attRsBaseService;
  62. public BisInspPblmServiceImpl(BisInspPblmDao bisInspPblmDao) {
  63. super(bisInspPblmDao);
  64. this.bisInspPblmDao = bisInspPblmDao;
  65. }
  66. @Override
  67. public BisInspPblm get(String key) {
  68. BisInspPblm bisInspPblm = super.get(key);
  69. BisInspPblmDutyParam bisInspPblmDutyParam = new BisInspPblmDutyParam();
  70. bisInspPblmDutyParam.setPblmId(key);
  71. List<BisInspPblmDuty> bisInspPblmDuties = bisInspPblmDutyService.findList(bisInspPblmDutyParam);
  72. bisInspPblm.setBisInspPblmDuties(bisInspPblmDuties);
  73. return bisInspPblm;
  74. }
  75. @Override
  76. public int insert(BisInspPblm entity) {
  77. if (StringUtils.isBlank(entity.getPblmStat())) {
  78. entity.setPblmStat(CommonLabel.INIT_DATA);
  79. }
  80. if (StringUtils.isBlank(entity.getIfCasePblm())) {
  81. entity.setIfCasePblm(CommonLabel.INIT_DATA);
  82. }
  83. if (StringUtils.isBlank(entity.getVillType())) {
  84. if (BisInspEnum.VILL.getValue().equals(entity.getObjType())) {
  85. if (StringUtils.isNotBlank(entity.getVillageCode())) {
  86. entity.setVillType("1");
  87. } else if (StringUtils.isNotBlank(entity.getCwsCode())) {
  88. entity.setVillType("3");
  89. } else {
  90. entity.setVillType("2");
  91. }
  92. }
  93. }
  94. if (BisInspEnum.EMPWT.getValue().equals(entity.getObjType()) ||
  95. BisInspEnum.EMPWTRUN.getValue().equals(entity.getObjType()) ||
  96. BisInspEnum.KEYSAFQH.getValue().equals(entity.getObjType()) ||
  97. BisInspEnum.KEYCHKQH.getValue().equals(entity.getObjType())
  98. ) {
  99. //新问题,复查状态,0新问题,1未复查,2已复查
  100. entity.setReviConc(StateEnum.NOWASTSTATE.getKey());
  101. entity.setProblemType(InspUtils.setProblemType(entity.getInspPblmName()));
  102. }
  103. if (StringUtils.isBlank(entity.getQuote())) {
  104. entity.setQuote("0");
  105. }
  106. // 整编任务 添加整编字段
  107. BisInspAllObj bisInspAllObj = bisInspAllObjService.get(entity.getObjId());
  108. Optional.ofNullable(bisInspAllObj).ifPresent(obj -> {
  109. entity.setObjCode(obj.getCode());
  110. entity.setObjAdCode(obj.getObjAdCode());
  111. entity.setObjName(obj.getNm());
  112. entity.setProvincial(obj.getProvincial());
  113. entity.setBelongOrgId(obj.getOrgId());
  114. // 行政区域代码
  115. entity.setBelongAdCode(obj.getAdCode());
  116. });
  117. entity.setPblmId(UuidUtil.uuid());
  118. entity.setDataStat("0");
  119. entity.setCommonFileIds("-1");
  120. entity.setCollTime(new Date());
  121. if (null != entity.getBisInspPblmDuties()) {
  122. for (BisInspPblmDuty bisInspPblmDuty : entity.getBisInspPblmDuties()) {
  123. bisInspPblmDuty.setPblmId(entity.getPblmId());
  124. bisInspPblmDutyService.insert(bisInspPblmDuty);
  125. }
  126. }
  127. return super.insert(entity);
  128. }
  129. @Override
  130. public void insertPblms(BisInspPblm bisInspPblm) {
  131. if (StringUtils.isBlank(bisInspPblm.getObjId())) {
  132. throw new CheckException("缺少必传参数objId");
  133. }
  134. if (bisInspPblm.getGwComFiles() != null &&
  135. bisInspPblm.getGwComFiles().size() > 0 &&
  136. StringUtils.isNotBlank(bisInspPblm.getGwComFiles().get(0).getFilePath())) {
  137. bisInspPblm.setHasVedio("1");
  138. } else {
  139. bisInspPblm.setHasVedio("0");
  140. }
  141. // 整编任务 添加整编字段
  142. BisInspAllObj bisInspAllObj = bisInspAllObjService.get(bisInspPblm.getObjId());
  143. Optional.ofNullable(bisInspAllObj).ifPresent(obj -> {
  144. bisInspPblm.setObjCode(obj.getCode());
  145. bisInspPblm.setObjAdCode(obj.getObjAdCode());
  146. bisInspPblm.setObjName(obj.getNm());
  147. bisInspPblm.setProvincial(obj.getProvincial());
  148. });
  149. if ("4".equals(bisInspPblm.getObjType()) && "034".equals(bisInspPblm.getOrgId())
  150. && StringUtils.isNotBlank(bisInspPblm.getQualityTypeId())) {
  151. BisInspKeyRegSecUnit regSecUnit = keyRegSecUnitDao.get(bisInspPblm.getRegid());
  152. if (regSecUnit != null && "4".equals(regSecUnit.getNature())) {
  153. BisInspKeyRegSecUnitParam keyRegSecUnitParam = new BisInspKeyRegSecUnitParam();
  154. keyRegSecUnitParam.setObjId(bisInspPblm.getObjId());
  155. keyRegSecUnitParam.setSecId(regSecUnit.getSecId());
  156. keyRegSecUnitParam.setNature("3");
  157. List<BisInspKeyRegSecUnit> inspKeyRegSecUnits = keyRegSecUnitDao.findList(keyRegSecUnitParam);
  158. for (BisInspKeyRegSecUnit secUnit : inspKeyRegSecUnits) {
  159. BisInspPblm copyPblm = new BisInspPblm();
  160. BeanUtil.copyObject1(bisInspPblm, copyPblm);
  161. copyPblm.setRegid(secUnit.getId());
  162. copyPblm.setPblmId(UuidUtil.uuid());
  163. bisInspPblmDao.insert(copyPblm);
  164. gwComFileService.updateBiz(bisInspPblm.getGwComFiles(), copyPblm.getPblmId());
  165. }
  166. }
  167. }
  168. // 设置 问题 来源机构
  169. Optional.ofNullable(bisInspAllObj).ifPresent(obj -> {
  170. // 机构id
  171. bisInspPblm.setBelongOrgId(obj.getOrgId());
  172. // 行政区域代码
  173. bisInspPblm.setBelongAdCode(obj.getAdCode());
  174. });
  175. // 督查对象类型为中小型水库时,字段:大坝注册登记号--从水库基础信息表ATT_RS_BASE中(REG_CODE)获取
  176. if(("80".equals(bisInspPblm.getObjType()) || "1".equals(bisInspPblm.getObjType()))
  177. && StringUtils.isNotBlank(bisInspPblm.getObjCode())){
  178. AttRsBase attRsBase = attRsBaseService.get(bisInspPblm.getObjCode());
  179. if(null!=attRsBase && StringUtils.isNotBlank(attRsBase.getRegCode())){
  180. bisInspPblm.setDamRegCode(attRsBase.getRegCode());
  181. }
  182. }
  183. insert(bisInspPblm);
  184. gwComFileService.updateBiz(bisInspPblm.getGwComFiles(), bisInspPblm.getPblmId());
  185. /* 更新登记表状态 为督察中 */
  186. bisInspAllObjService.updateRgstrByObjId(bisInspPblm.getObjId());
  187. }
  188. @Override
  189. public int updatePblm(BisInspPblm bisInspPblm) {
  190. bisInspPblm.setCollTime(new Date());
  191. if (bisInspPblm.getGwComFiles() != null && bisInspPblm.getGwComFiles().size() > 0 && StringUtils.isNotBlank(bisInspPblm.getGwComFiles().get(0).getFilePath())) {
  192. bisInspPblm.setHasVedio("1");
  193. }
  194. // 督查对象类型为中小型水库时,字段:大坝注册登记号--从水库基础信息表ATT_RS_BASE中(REG_CODE)获取
  195. if(("80".equals(bisInspPblm.getObjType()) || "1".equals(bisInspPblm.getObjType()))
  196. && StringUtils.isNotBlank(bisInspPblm.getObjCode())){
  197. AttRsBase attRsBase = attRsBaseService.get(bisInspPblm.getObjCode());
  198. if(null!=attRsBase && StringUtils.isNotBlank(attRsBase.getRegCode())){
  199. bisInspPblm.setDamRegCode(attRsBase.getRegCode());
  200. }
  201. }
  202. bisInspPblmDao.update(bisInspPblm);
  203. if (null != bisInspPblm.getBisInspPblmDuties()) {
  204. //删除之前问题数据
  205. BisInspPblmDutyParam bisInspPblmDutyParam = new BisInspPblmDutyParam();
  206. bisInspPblmDutyParam.setPblmId(bisInspPblm.getPblmId());
  207. bisInspPblmDutyService.deleteBy(bisInspPblmDutyParam);
  208. //重新循环插入问题
  209. for (BisInspPblmDuty bisInspPblmDuty : bisInspPblm.getBisInspPblmDuties()) {
  210. bisInspPblmDuty.setPblmId(bisInspPblm.getPblmId());
  211. bisInspPblmDutyService.insert(bisInspPblmDuty);
  212. }
  213. }
  214. gwComFileService.updateBiz(bisInspPblm.getGwComFiles(), bisInspPblm.getPblmId());
  215. return 0;
  216. }
  217. @Override
  218. public PageInfo<BisInspPblm> findPageList(PlbmParam plbmParam) {
  219. if (StringUtils.isNotBlank(plbmParam.getObjType()) && StringUtils.isNotBlank(plbmParam.getInspPblmName())) {
  220. BisInspEnum bisInspEnum = BisInspEnum.getEnumByType(plbmParam.getObjType());
  221. Optional.ofNullable(bisInspEnum).ifPresent(bisInspEnum1 -> {
  222. switch (bisInspEnum1) {
  223. case PRDQH:
  224. case FLOODQH:
  225. case MFDPQH:
  226. plbmParam.setPblmDescBz(plbmParam.getInspPblmName());
  227. plbmParam.setInspPblmName(null);
  228. break;
  229. default:
  230. }
  231. });
  232. }
  233. PageHelper.startPage(plbmParam);
  234. List<BisInspPblm> list = bisInspPblmDao.findPlbmList(plbmParam);
  235. return new PageInfo<>(list);
  236. }
  237. @Override
  238. public PageInfo<BisInspPblm> queryListByPage(BisInspPblmParam p) throws Exception {
  239. PageHelper.startPage(p.getPageNum(), p.getPageSize());
  240. List<BisInspPblm> list = bisInspPblmDao.findList(p);
  241. return new PageInfo<BisInspPblm>(list);
  242. }
  243. @Override
  244. public List<BisInspPblm> queryList(BisInspPblmParam p) throws Exception {
  245. List<BisInspPblm> list = bisInspPblmDao.findList(p);
  246. return list;
  247. }
  248. @Override
  249. public List<CountType> countByType(String presId, String adCode, String orgId) {
  250. Map<String, Object> map = new HashedMap();
  251. map.put("presId", presId);
  252. map.put("adCode", adCode);
  253. map.put("orgId", orgId);
  254. map.put("province", inspOrgService.getProvince(orgId));
  255. List<CountType> counts = bisInspPblmDao.countByType(map);
  256. // 根据人员Id统计通用问题个数
  257. CountType countType = new CountType();
  258. BisInspComPblmParam param = new BisInspComPblmParam();
  259. param.setCpRes(presId);
  260. countType.setCount(bisInspComPblmDao.selectCount(param));
  261. countType.setName("通用问题");
  262. countType.setVillType("6");
  263. counts.add(countType);
  264. return counts;
  265. }
  266. @Override
  267. public PageInfo<BisInspPblm> findReverPlbmList(ReverParam reverParam) {
  268. PageHelper.startPage(reverParam.getPageNum(), reverParam.getPageSize());
  269. String orgIds = InspUtils.setOrgIds(reverParam.getOrgIds());
  270. reverParam.setOrgIds(orgIds);
  271. reverParam.setCodes(InspUtils.setOrgIds(reverParam.getCodes()));
  272. List<BisInspPblm> bisInspBaseDtos = bisInspPblmDao.findReverPlbmList(reverParam);
  273. for (BisInspPblm inspPblm : bisInspBaseDtos) {
  274. inspPblm.setInspPblmsName(inspPblm.getPblmNameBz());
  275. inspPblm.setCheckPoint(inspPblm.getCheckPointBz());
  276. inspPblm.setSnNum(inspPblm.getSnNumBz());
  277. //
  278. int fileNum = gwComFileService.countByPblmId(inspPblm.getPblmId());
  279. if (fileNum > 0) {
  280. inspPblm.setHasVedio("1");
  281. } else {
  282. inspPblm.setHasVedio("0");
  283. }
  284. }
  285. return new PageInfo<>(bisInspBaseDtos);
  286. }
  287. @Override
  288. public PageInfo<BisInspPblm> findVillPlbmList(VillParam villParam) {
  289. PageHelper.startPage(villParam.getPageNum(), villParam.getPageSize());
  290. String orgIds = InspUtils.setOrgIds(villParam.getOrgIds());
  291. villParam.setOrgIds(orgIds);
  292. villParam.setCodes(InspUtils.setOrgIds(villParam.getCodes()));
  293. List<BisInspPblm> bisInspBaseDtos = bisInspPblmDao.findVillPlbmList(villParam);
  294. PageInfo page = new PageInfo(bisInspBaseDtos);
  295. return page;
  296. }
  297. @Override
  298. public PageInfo<BisInspPblm> findTrackPlbmList(TrackParam trackParam) {
  299. PageHelper.startPage(trackParam.getPageNum(), trackParam.getPageSize());
  300. String orgIds = InspUtils.setOrgIds(trackParam.getOrgIds());
  301. trackParam.setOrgIds(orgIds);
  302. trackParam.setCodes(InspUtils.setOrgIds(trackParam.getCodes()));
  303. List<BisInspPblm> bisInspBaseDtos = bisInspPblmDao.findTrackPlbmList(trackParam);
  304. return new PageInfo<>(bisInspBaseDtos);
  305. }
  306. @Override
  307. public BisInspPblmDelLog insertPblmLog(BisInspPblmDelLogDto bisInspPblmDelLogDto) {
  308. //根据id获取问题详情
  309. BisInspPblmDelLog bisInspPblmDelLog = this.bisInspPblmDao.getBisInspPblmById(bisInspPblmDelLogDto.getPblmId(), bisInspPblmDelLogDto.getOrgId());
  310. if (bisInspPblmDelLog != null) {
  311. String guid = UuidUtil.uuid();
  312. Date date = new Date();
  313. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  314. String format = dateFormat.format(date);
  315. bisInspPblmDelLog.setPblmDelId(guid);
  316. bisInspPblmDelLog.setPblmDelNote(bisInspPblmDelLogDto.getPblmDelNote());
  317. bisInspPblmDelLog.setPblmDelPers(bisInspPblmDelLogDto.getPblmDelPers());
  318. bisInspPblmDelLog.setPblmDelPersnm(bisInspPblmDelLogDto.getPblmDelPersnm());
  319. bisInspPblmDelLog.setPblmDelTm(format);
  320. this.bisInspPblmDao.insertPblmDelLog(bisInspPblmDelLog);
  321. return bisInspPblmDelLog;
  322. }
  323. return null;
  324. }
  325. @Override
  326. public PageInfo<BisInspPblm> findWaterPlbmList(UnderWaterParam waterParam) {
  327. PageHelper.startPage(waterParam.getPageNum(), waterParam.getPageSize());
  328. String orgIds = InspUtils.setOrgIds(waterParam.getOrgIds());
  329. waterParam.setOrgIds(orgIds);
  330. waterParam.setCodes(InspUtils.setOrgIds(waterParam.getCodes()));
  331. List<BisInspPblm> bisInspBaseDtos = bisInspPblmDao.findWaterPlbmList(waterParam);
  332. PageInfo page = new PageInfo(bisInspBaseDtos);
  333. return page;
  334. }
  335. @Override
  336. public PageInfo<PblmRetCount> countByReverPage(CountParam countParam) {
  337. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  338. List<PblmRetCount> pblmPage = bisInspPblmDao.findReverPblmPage(countParam);
  339. pblmPage = convertData(countParam.getPersId(), pblmPage, "", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  340. PageInfo page = new PageInfo(pblmPage);
  341. return page;
  342. }
  343. @Override
  344. public PageInfo<TrackCount> countByTrackPage(CountParam countParam) {
  345. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  346. List<TrackCount> pblmPage = bisInspPblmDao.findTrackPblmPage(countParam);
  347. pblmPage = convertTrackData(countParam.getPersId(), pblmPage, countParam.getProvince());
  348. PageInfo page = new PageInfo(pblmPage);
  349. return page;
  350. }
  351. @Override
  352. public PageInfo<VillCount> countByVillPage(CountParam countParam) {
  353. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  354. List<VillCount> pblmPage = bisInspPblmDao.findVillPblmPage(countParam);
  355. pblmPage = convertVillData(countParam.getPersId(), pblmPage, countParam.getOrgId(), countParam.getpType());
  356. PageInfo page = new PageInfo(pblmPage);
  357. return page;
  358. }
  359. /**
  360. * 人饮工程
  361. */
  362. private List<VillCount> convertVillData(String persId, List<VillCount> pblmPage, String orgId, String type) {
  363. String codes = "'";
  364. for (VillCount trackCount : pblmPage) {
  365. String adFullName = trackCount.getAdFullName();
  366. if (adFullName.contains("-")) {
  367. String[] arrays = adFullName.split("-");
  368. if (arrays.length == 3) {
  369. trackCount.setProvince(arrays[0]);
  370. trackCount.setCounty(arrays[2]);
  371. }
  372. if (arrays.length == 2) {
  373. trackCount.setProvince(arrays[0]);
  374. }
  375. } else {
  376. trackCount.setProvince(adFullName);
  377. }
  378. codes += trackCount.getCode() + "','";
  379. }
  380. if ("'".equals(codes)) {
  381. return null;
  382. }
  383. if (StringUtils.isNotBlank(codes)) {
  384. codes = codes.substring(0, codes.length() - 2);
  385. }
  386. List<VillTypeCount> typeCountList = bisInspPblmDao.countVill(persId, codes, inspOrgService.getProvince(orgId), orgId);
  387. for (VillCount villCount : pblmPage) {
  388. int total = 0;
  389. for (VillTypeCount typeCount : typeCountList) {
  390. if (villCount.getCode().equals(typeCount.getCode())) {
  391. setVillValue(villCount, typeCount, type);
  392. total += typeCount.getTotal();
  393. }
  394. }
  395. villCount.setTotal(total);
  396. villCount.setNm(villCount.getProvince());
  397. }
  398. return pblmPage;
  399. }
  400. /**
  401. * 水毁问题
  402. */
  403. private List<TrackCount> convertTrackData(String persId, List<TrackCount> pblmPage, String orgId) {
  404. if (pblmPage == null || StringUtils.isBlank(persId)) {
  405. return null;
  406. }
  407. String objIds = "'";
  408. for (TrackCount trackCount : pblmPage) {
  409. objIds += trackCount.getObjId() + "','";
  410. }
  411. if ("'".equals(objIds)) {
  412. return null;
  413. }
  414. if (StringUtils.isNotBlank(objIds)) {
  415. objIds = objIds.substring(0, objIds.length() - 2);
  416. }
  417. List<TrackTypeCount> trackTypeCounts = bisInspPblmDao.countTrack(persId, objIds, inspOrgService.getProvince(orgId), orgId);
  418. for (TrackCount trackCount : pblmPage) {
  419. int total = 0;
  420. for (TrackTypeCount typeCount : trackTypeCounts) {
  421. if (trackCount.getObjId().equals(typeCount.getObjId())) {
  422. setValue(trackCount, typeCount);
  423. total += typeCount.getTotal();
  424. }
  425. }
  426. trackCount.setTotal(total);
  427. }
  428. return pblmPage;
  429. }
  430. @Override
  431. public void setVillValue(VillCount villCount, VillTypeCount typeCount, String type) {
  432. if (BisInspEnum.VILL.getValue().equals(type)) {
  433. if ("行政村".equals(typeCount.getInspPblmName())) {
  434. villCount.setCountry(typeCount.getTotal());
  435. }
  436. if ("饮水工程".equals(typeCount.getInspPblmName())) {
  437. villCount.setWaterPro(typeCount.getTotal());
  438. }
  439. if ("水源地".equals(typeCount.getInspPblmName())) {
  440. villCount.setWaterLocal(typeCount.getTotal());
  441. }
  442. if ("责任落实".equals(typeCount.getInspPblmName())) {
  443. villCount.setReManage(typeCount.getTotal());
  444. }
  445. } else {
  446. if ("用水户".equals(typeCount.getInspPblmName())) {
  447. villCount.setCountry(typeCount.getTotal());
  448. }
  449. if ("饮水工程".equals(typeCount.getInspPblmName())) {
  450. villCount.setWaterPro(typeCount.getTotal());
  451. }
  452. if ("水价政策制度".equals(typeCount.getInspPblmName())) {
  453. villCount.setReManage(typeCount.getTotal());
  454. }
  455. }
  456. }
  457. @Override
  458. public void setValue(TrackCount trackCount, TrackTypeCount typeCount) {
  459. if ("统计管理情况".equals(typeCount.getInspPblmName())) {
  460. trackCount.setCountManage(typeCount.getTotal());
  461. }
  462. if ("进度管理情况".equals(typeCount.getInspPblmName())) {
  463. trackCount.setProceManage(typeCount.getTotal());
  464. }
  465. if ("质量保障体系建设情况".equals(typeCount.getInspPblmName())) {
  466. trackCount.setProtectLevel(typeCount.getTotal());
  467. }
  468. if ("责任落实情况".equals(typeCount.getInspPblmName())) {
  469. trackCount.setReManage(typeCount.getTotal());
  470. }
  471. if ("保障措施落实情况".equals(typeCount.getInspPblmName())) {
  472. trackCount.setProtectWay(typeCount.getTotal());
  473. }
  474. if ("其它".equals(typeCount.getInspPblmName())) {
  475. trackCount.setOther(typeCount.getTotal());
  476. }
  477. }
  478. @Override
  479. public List<TrackCount> findTrackPblmBYAreaId(String areaId, String persId, String orgId) {
  480. String province = inspOrgService.getProvince(orgId);
  481. Map<String, String> params = InspPblmUtils.getLength(province);
  482. String areaIdStr = bisInspPblmDao.getAreaOrgIdsNew(persId, areaId, province);
  483. if (StringUtils.isBlank(areaIdStr)) {
  484. return null;
  485. }
  486. List<TrackCount> trackCountList = bisInspPblmDao.findTrackPblmBYAreaId(areaIdStr, province, params.get("otherLength"), params.get("length"));
  487. if (trackCountList == null) {
  488. return null;
  489. }
  490. List<TrackTypeCount> typeCountList = bisInspPblmDao.countTrackPblmByArea(areaIdStr, province, params.get("otherLength"), params.get("length"));
  491. for (TrackCount trackCount : trackCountList) {
  492. int count = 0;
  493. for (TrackTypeCount typeCount : typeCountList) {
  494. if (trackCount.getNm().equals(typeCount.getNm())) {
  495. setValue(trackCount, typeCount);
  496. count += typeCount.getTotal();
  497. }
  498. }
  499. trackCount.setTotal(count);
  500. }
  501. return trackCountList;
  502. }
  503. @Override
  504. public PageInfo<BisInspPblm> findWagaPlbmList(WagaParam wagaParam) {
  505. PageHelper.startPage(wagaParam.getPageNum(), wagaParam.getPageSize());
  506. String orgIds = InspUtils.setOrgIds(wagaParam.getOrgIds());
  507. wagaParam.setOrgIds(orgIds);
  508. wagaParam.setCodes(InspUtils.setOrgIds(wagaParam.getCodes()));
  509. List<BisInspPblm> bisInspBaseDtos = bisInspPblmDao.findWagaPlbmList(wagaParam);
  510. PageInfo page = new PageInfo(bisInspBaseDtos);
  511. return page;
  512. }
  513. @Autowired
  514. private ObjKeyPblmsDao objKeyPblmsDao;
  515. @Override
  516. public PageInfo<KeyRegPblm> findKeyRegPlbmList(KeyRegPatam keyRegPatam) {
  517. PageHelper.startPage(keyRegPatam.getPageNum(), keyRegPatam.getPageSize());
  518. String orgIds = InspUtils.setOrgIds(keyRegPatam.getOrgIds());
  519. keyRegPatam.setOrgIds(orgIds);
  520. keyRegPatam.setCodes(InspUtils.setOrgIds(keyRegPatam.getCodes()));
  521. List<KeyRegPblm> bisInspBaseDtos = bisInspPblmDao.findKeyRegPlbmList(keyRegPatam);
  522. bisInspBaseDtos.forEach(this::convertRegPblm);
  523. return new PageInfo<>(bisInspBaseDtos);
  524. }
  525. @Autowired
  526. private RelOrgInspTypeDao relOrgInspTypeDao;
  527. @Override
  528. public PageInfo<BisInspPblm> listOfPage(BisInspPblmParam pblmParam) {
  529. String[] rgsterTable = relOrgInspTypeDao.listOfRgster(pblmParam.getOrgId());
  530. pblmParam.setRgsterTable(rgsterTable);
  531. setDate(pblmParam);
  532. if (StringUtils.isNotBlank(pblmParam.getAdCode())) {
  533. if("359900000000".equals(pblmParam.getAdCode())){
  534. // 福建省 省本级
  535. pblmParam.setAdCode("3500");
  536. }else{
  537. pblmParam.setAdCode(AdLevelUtil.getAddvcd(pblmParam.getAdCode()));
  538. }
  539. } else {
  540. pblmParam.setAdCode(pblmParam.getProvince());
  541. }
  542. PageHelper.startPage(pblmParam.getPageNum(), pblmParam.getPageSize());
  543. List<BisInspPblm> pblmList = bisInspPblmDao.listOfPage(pblmParam);
  544. PageInfo<BisInspPblm> pageInfo = new PageInfo<>(pblmList);
  545. InspUtils.addLocs(pageInfo);
  546. return pageInfo;
  547. }
  548. @Override
  549. public void exportPblmForExcel(PblmParam pblmParam, HttpServletResponse response) {
  550. // 1.设置 contentType 编码格式
  551. response.setContentType("application/vnd.ms-excel;charset=UTF-8");
  552. // 2.获取问题数据,转为map
  553. if ("999".equals(pblmParam.getpType())) {
  554. pblmParam.setProvince(AdLevelUtil.getAddvcd(olBisInspOrgService.getRlProvince(pblmParam.getOrgId())));
  555. InspPblmUtils.writeXlsxCommon(pblmParam.getpType(), response, null, importListOfPblm(pblmParam));
  556. } else {
  557. InspPblmUtils.writeXlsxCommon(pblmParam.getpType(), response, null, defaultListOfPblm(pblmParam));
  558. }
  559. }
  560. /**
  561. * 默认获取问题列表信息
  562. *
  563. * @param pblmParam 获取问题信息传参
  564. * @return List<Map < String, String>>
  565. */
  566. private List<Map<String, String>> importListOfPblm(PblmParam pblmParam) {
  567. List<Map<String, String>> mapList = new ArrayList<>();
  568. List<BisInspPblm> pblmList = bisInspPblmDao.getPblmListFromImport(pblmParam);
  569. for (BisInspPblm inspPblm : pblmList) {
  570. mapList.add(getMap(inspPblm, pblmParam.getpType()));
  571. }
  572. return mapList;
  573. }
  574. /**
  575. * 默认获取问题列表信息
  576. *
  577. * @param pblmParam 获取问题信息传参
  578. * @return List<Map < String, String>>
  579. */
  580. private List<Map<String, String>> defaultListOfPblm(PblmParam pblmParam) {
  581. List<Map<String, String>> mapList = new ArrayList<>();
  582. List<BisInspPblm> pblmList = pblmList(pblmParam);
  583. for (BisInspPblm inspPblm : pblmList) {
  584. switch (pblmParam.getpType()) {
  585. case "4":
  586. case "7":
  587. case "99":
  588. case "100":
  589. ObjKeyPblms objKeyPblms = objKeyPblmsDao.get(inspPblm.getPblmsTypeId());
  590. Optional.ofNullable(objKeyPblms).ifPresent(o -> {
  591. inspPblm.setAttachBz(o.getAttachName());
  592. inspPblm.setSnNum(o.getSn());
  593. });
  594. BisInspKeyRegSecUnit unit = bisInspKeyRegSecUnitService.get(inspPblm.getRegid());
  595. if (null == unit) {
  596. inspPblm.setNewVillName("");
  597. inspPblm.setVillType("");
  598. } else {
  599. inspPblm.setNewVillName(unit.getNm());
  600. String nature = unit.getNature();
  601. if (StringUtils.isNotBlank(nature)) {
  602. // 1:项目法人(建设单位) 2:勘察设计单位 3:监理单位 4:施工单位 5:金属结构及机电设备安装单位 6:安全监测单位 7:质量检测单位 9:其他
  603. switch (nature) {
  604. case "1":
  605. nature = "项目法人(建设单位)";
  606. break;
  607. case "2":
  608. nature = "勘察设计单位";
  609. break;
  610. case "3":
  611. nature = "监理单位";
  612. break;
  613. case "4":
  614. nature = "施工单位";
  615. break;
  616. case "5":
  617. nature = "金属结构及机电设备安装单位";
  618. break;
  619. case "6":
  620. nature = "安全监测单位";
  621. break;
  622. case "7":
  623. nature = "质量检测单位";
  624. break;
  625. case "9":
  626. nature = "其他";
  627. break;
  628. default:
  629. nature = "";
  630. }
  631. inspPblm.setVillType(nature);
  632. }
  633. }
  634. break;
  635. default:
  636. }
  637. }
  638. for (BisInspPblm inspPblm : pblmList) {
  639. mapList.add(getMap(inspPblm, pblmParam.getpType()));
  640. }
  641. return mapList;
  642. }
  643. public static Map<String, String> getMap(BisInspPblm inspPblm, String type) {
  644. Map<String, String> map = new HashMap<>();
  645. map.put("IFCASEPBLM", "1".equals(inspPblm.getIfCasePblm()) ? "是" : "否");
  646. if (StringUtils.isNotBlank(inspPblm.getAdFullName())) {
  647. if (inspPblm.getAdFullName().contains("-")) {
  648. String[] arrays = inspPblm.getAdFullName().split("-");
  649. if (arrays.length >= 3) {
  650. map.put("PROVINCE", arrays[0]);
  651. map.put("CITY", arrays[1]);
  652. map.put("COUNTRY", arrays[2]);
  653. }
  654. if (arrays.length == 2) {
  655. map.put("PROVINCE", arrays[0]);
  656. map.put("CITY", arrays[1]);
  657. map.put("COUNTRY", "");
  658. }
  659. } else {
  660. map.put("PROVINCE", "");
  661. map.put("CITY", "");
  662. map.put("COUNTRY", "");
  663. }
  664. }
  665. map.put("OBJNAME", inspPblm.getObjName());
  666. map.put("NAME", inspPblm.getNm());
  667. map.put("RVNAME", inspPblm.getObjName());
  668. map.put("ADFULLNAME", StringUtils.isNotBlank(inspPblm.getAdFullName()) ? inspPblm.getAdFullName().replace("-", "") : "");
  669. map.put("FILENONUMBER", inspPblm.getFileNoNumber());
  670. map.put("PBLMREASON", inspPblm.getPblmReason());
  671. map.put("PBLMSGGTN", inspPblm.getPblmSggtn());
  672. map.put("INSPPBLMNAME", inspPblm.getInspPblmName());
  673. map.put("CHECKPOINT", inspPblm.getCheckPointBz());
  674. map.put("PBLMDESCBZ", inspPblm.getPblmDescBz());
  675. map.put("INSPPBLMDESC", inspPblm.getInspPblmDesc());
  676. map.put("NOTE", inspPblm.getNote());
  677. map.put("PERSNAME", inspPblm.getPersName());
  678. map.put("NEWVILLNAME", inspPblm.getNewVillName());
  679. map.put("VILLTYPE", inspPblm.getVillType());
  680. map.put("LOC", inspPblm.getLoc());
  681. map.put("ORGNM", inspPblm.getOrgNm());
  682. if (StringUtils.isNotBlank(inspPblm.getAttach())) {
  683. map.put("ATTACH", "附件" + inspPblm.getAttach());
  684. if (StringUtils.isNotBlank(inspPblm.getSheet()) && !"1".equals(inspPblm.getSheet())) {
  685. map.put("ATTACH", "附件" + inspPblm.getAttach() + "-" + inspPblm.getSheet());
  686. }
  687. }
  688. map.put("ATTACHBZ", inspPblm.getAttachBz());
  689. map.put("SNNUM", inspPblm.getSnNum());
  690. map.put("COLLTIME", new SimpleDateFormat("yyyy/MM/dd").format(inspPblm.getCollTime()));
  691. if ("1".equals(inspPblm.getHasVedio())) {
  692. map.put("HASVEDIO", "是");
  693. } else {
  694. map.put("HASVEDIO", "否");
  695. }
  696. return map;
  697. }
  698. /**
  699. * 设置时间
  700. *
  701. * @param pblmParam
  702. */
  703. private void setDate(BisInspPblmParam pblmParam) {
  704. // 1. 判断 时间类别
  705. String timeType = pblmParam.getTimeType();
  706. if (timeType == null) {
  707. return;
  708. }
  709. if (timeType.contains("_")) {
  710. //自定义时间段
  711. String[] dateStr = timeType.split("_");
  712. if (2 == dateStr.length) {
  713. pblmParam.setSttm(dateStr[0]);
  714. pblmParam.setEntm(dateStr[1]);
  715. return;
  716. }
  717. }
  718. Date entm = new Date();
  719. Calendar sttm = Calendar.getInstance();
  720. switch (timeType) {
  721. // 近一个月
  722. case "1":
  723. sttm.add(Calendar.MONTH, -1);
  724. break;
  725. // 近三个月
  726. case "2":
  727. sttm.add(Calendar.MONTH, -3);
  728. break;
  729. // 近半年
  730. case "3":
  731. sttm.add(Calendar.MONTH, -6);
  732. break;
  733. // 近一年
  734. case "4":
  735. sttm.add(Calendar.YEAR, -1);
  736. break;
  737. // 今年以来
  738. case "6":
  739. sttm.set(Integer.parseInt(DateUtils.getToday("yyyy")), Calendar.JANUARY, 1);
  740. break;
  741. case "7":
  742. // 按年度
  743. break;
  744. default:
  745. return;
  746. }
  747. pblmParam.setSttm(DateUtils.Calendar2Str(sttm, "yyyy-MM-dd"));
  748. pblmParam.setEntm(DateUtils.Date2Str(entm, "yyyy-MM-dd"));
  749. if("7".equals(timeType)){
  750. // 福建省 督查首页 按年份统计
  751. String year = pblmParam.getYear();
  752. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  753. LocalDate startDate = null ;
  754. if(cn.com.goldenwater.dcproj.utils.StringUtils.isNotBlank(year)){
  755. try {
  756. startDate = LocalDate.parse(year+"-01-01", dtf);
  757. } catch (Exception e) {
  758. startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
  759. }
  760. }
  761. if(null == startDate){
  762. startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
  763. }
  764. LocalDate endDate = startDate.plusYears(1L).minusDays(1L) ;
  765. pblmParam.setSttm(startDate.format(dtf));
  766. pblmParam.setEntm(endDate.format(dtf));
  767. pblmParam.setYear(String.valueOf(startDate.getYear()));
  768. }
  769. }
  770. @Override
  771. public KeyRegPblm convertRegPblm(KeyRegPblm baseDtos) {
  772. if (baseDtos == null) {
  773. return null;
  774. }
  775. if (StringUtils.isNotBlank(baseDtos.getPblmsTypeId()) && StringUtils.isBlank(baseDtos.getAttachWgName())) {//违规历史数据填充
  776. ObjKeyPblms objKeyPblms = objKeyPblmsDao.getOld(baseDtos.getPblmsTypeId());
  777. if (objKeyPblms != null) {
  778. baseDtos.setAttachWg(objKeyPblms.getAttach() + "-" + objKeyPblms.getSheet());
  779. baseDtos.setAttachWgName(objKeyPblms.getAttachName());
  780. baseDtos.setAttachWgSn(objKeyPblms.getSn());
  781. }
  782. }
  783. if (StringUtils.isNotBlank(baseDtos.getPblmsId()) && StringUtils.isBlank(baseDtos.getAttachHetongName())) {//合同
  784. ObjKeyPblms objKeyPblms = objKeyPblmsDao.getOld(baseDtos.getPblmsTypeId());
  785. if (objKeyPblms != null) {
  786. baseDtos.setAttachHetong(objKeyPblms.getAttach() + "-" + objKeyPblms.getSheet());
  787. baseDtos.setAttachHetongName(objKeyPblms.getAttachName());
  788. baseDtos.setAttachHetongSn(objKeyPblms.getSn());
  789. }
  790. }
  791. if (StringUtils.isNotBlank(baseDtos.getQualityTypeId()) && StringUtils.isBlank(baseDtos.getAttachQuaName())) {//质量
  792. ObjKeyPblms objKeyPblms = objKeyPblmsDao.getOld(baseDtos.getPblmsTypeId());
  793. if (objKeyPblms != null) {
  794. baseDtos.setAttachQua(objKeyPblms.getAttach() + "-" + objKeyPblms.getSheet());
  795. baseDtos.setAttachQuaName(objKeyPblms.getAttachName());
  796. baseDtos.setAttachQuaSn(objKeyPblms.getSn());
  797. }
  798. }
  799. if (StringUtils.isNotBlank(baseDtos.getDefectTypeId()) && StringUtils.isBlank(baseDtos.getAttachDefName())) {
  800. ObjKeyPblms objKeyPblms = objKeyPblmsDao.getOld(baseDtos.getPblmsTypeId());
  801. if (objKeyPblms != null) {
  802. baseDtos.setAttachDef(objKeyPblms.getAttach() + "-" + objKeyPblms.getSheet());
  803. baseDtos.setAttachDefName(objKeyPblms.getAttachName());
  804. baseDtos.setAttachDefSn(objKeyPblms.getSn());
  805. }
  806. }
  807. return baseDtos;
  808. }
  809. @Override
  810. public void updateStateByObjId(String objId, String state) {
  811. logger.info("updatePblmState -> objId:{},state:{}", objId, state);
  812. if (StringUtils.isBlank(objId) || StringUtils.isBlank(state)) {
  813. return;
  814. }
  815. if (!"2".equals(state)) {
  816. state = "0";
  817. }
  818. bisInspPblmDao.updatePblmStateByObjId(Builder.of(BisInspPblmParam::new)
  819. .with(BisInspPblmParam::setObjId, objId)
  820. .with(BisInspPblmParam::setState, state)
  821. .build()
  822. );
  823. }
  824. @Override
  825. public PageInfo<PblmRetCount> countByWagaPage(CountParam countParam) {
  826. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  827. List<PblmRetCount> pblmPage = bisInspPblmDao.findWagaPblmPage(countParam);
  828. pblmPage = convertData(countParam.getPersId(), pblmPage, "waga", "", countParam.getProvince(), countParam.getOrgId());
  829. PageInfo page = new PageInfo(pblmPage);
  830. return page;
  831. }
  832. @Override
  833. public PageInfo<PblmRetCount> countByKeyRegPage(CountParam countParam) {
  834. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  835. List<PblmRetCount> pblmPage = bisInspPblmDao.findKeyRegPblmPage(countParam);
  836. pblmPage = convertData(countParam.getPersId(), pblmPage, "keyReg", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  837. PageInfo page = new PageInfo(pblmPage);
  838. return page;
  839. }
  840. @Override
  841. public List<PblmRetCount> findKeyRegBYAreaId(String pType, String persId, String orgId) {
  842. String areaIdStr = "";
  843. String province = inspOrgService.getProvince(orgId);
  844. Map<String, String> params = InspPblmUtils.getLength(province);
  845. List<KeyRegCount> keyRegCountList = bisInspPblmDao.findKeyRegBYAreaId(areaIdStr, pType, province, params.get("otherLength"), params.get("length"));
  846. if (keyRegCountList == null) {
  847. return null;
  848. }
  849. List<PblmRetCount> keyRegList = new ArrayList<>();
  850. List<String> regNames = new ArrayList<>();
  851. for (KeyRegCount regCount : keyRegCountList) {
  852. if (!regNames.contains(regCount.getAdFullName())) {
  853. regNames.add(regCount.getAdFullName());
  854. }
  855. }
  856. for (String regName : regNames) {
  857. PblmRetCount retCount = new PblmRetCount();
  858. retCount.setNm(regName);
  859. for (KeyRegCount regCount : keyRegCountList) {
  860. if (regName.equals(regCount.getAdFullName())) {
  861. if ("0".equals(regCount.getInspPblmCate())) {
  862. retCount.setCate0(regCount.getTotal());
  863. }
  864. if ("1".equals(regCount.getInspPblmCate())) {
  865. retCount.setCate1(regCount.getTotal());
  866. }
  867. if ("2".equals(regCount.getInspPblmCate())) {
  868. retCount.setCate2(regCount.getTotal());
  869. }
  870. if ("3".equals(regCount.getInspPblmCate())) {
  871. retCount.setCate3(regCount.getTotal());
  872. }
  873. }
  874. }
  875. retCount.setSub(retCount.getCate0() + retCount.getCate1() + retCount.getCate2() + retCount.getCate3());
  876. keyRegList.add(retCount);
  877. }
  878. return keyRegList;
  879. }
  880. @Override
  881. public List<WagaTotal> findWagaPblmBYAreaId(String pType, String persId, String orgId) {
  882. String areaIdStr = "";
  883. String province = inspOrgService.getProvince(orgId);
  884. Map<String, String> params = InspPblmUtils.getLength(province);
  885. List<WagaTotal> wagaTotalList = bisInspPblmDao.findWagaPblmBYAreaId(areaIdStr, province, params.get("otherLength"), params.get("length"));
  886. if (wagaTotalList == null) {
  887. return null;
  888. }
  889. List<WagaType> wagaTypeList = bisInspPblmDao.countWagaPblmByType(areaIdStr, province, params.get("otherLength"), params.get("length"));
  890. if (wagaTypeList != null && !wagaTypeList.isEmpty()) {
  891. for (WagaTotal wagaTotal : wagaTotalList) {
  892. for (WagaType wagaType : wagaTypeList) {
  893. if (wagaTotal.getNm().equals(wagaType.getNm())) {
  894. if ("1".equals(wagaType.getEngScal())) {
  895. wagaTotal.setEngScal1(wagaType.getTotal());
  896. }
  897. if ("2".equals(wagaType.getEngScal())) {
  898. wagaTotal.setEngScal2(wagaType.getTotal());
  899. }
  900. if ("3".equals(wagaType.getEngScal())) {
  901. wagaTotal.setEngScal3(wagaType.getTotal());
  902. }
  903. }
  904. }
  905. }
  906. }
  907. List<WagaType> wagaTypes = bisInspPblmDao.countWagaPblmByCate(areaIdStr, province, params.get("otherLength"), params.get("length"));
  908. if (wagaTypes != null && !wagaTypes.isEmpty()) {
  909. for (WagaTotal wagaTotal : wagaTotalList) {
  910. for (WagaType wagaType : wagaTypes) {
  911. if (wagaTotal.getNm().equals(wagaType.getNm())) {
  912. if ("0".equals(wagaType.getCate())) {
  913. wagaTotal.setCate0(wagaType.getTotal());
  914. }
  915. if ("1".equals(wagaType.getCate())) {
  916. wagaTotal.setCate1(wagaType.getTotal());
  917. }
  918. if ("2".equals(wagaType.getCate())) {
  919. wagaTotal.setCate2(wagaType.getTotal());
  920. }
  921. if ("3".equals(wagaType.getCate())) {
  922. wagaTotal.setCate3(wagaType.getTotal());
  923. }
  924. }
  925. }
  926. }
  927. }
  928. return wagaTotalList;
  929. }
  930. @Override
  931. public PageInfo<BisInspPblm> findSdPblmList(SdPblmParam param) {
  932. PageHelper.startPage(param);
  933. String orgIds = InspUtils.setOrgIds(param.getOrgIds());
  934. param.setOrgIds(orgIds);
  935. param.setCodes(InspUtils.setOrgIds(param.getCodes()));
  936. List<BisInspPblm> list = bisInspPblmDao.findSdPblmList(param);
  937. PageInfo<BisInspPblm> pageInfo = new PageInfo(list);
  938. return pageInfo;
  939. }
  940. @Override
  941. public PageInfo<PblmRetCount> countBySdPage(CountParam countParam) {
  942. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  943. List<PblmRetCount> pblmPage = bisInspPblmDao.findSdPblmPage(countParam);
  944. pblmPage = convertData(countParam.getPersId(), pblmPage, "sd", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  945. PageInfo page = new PageInfo(pblmPage);
  946. return page;
  947. }
  948. @Override
  949. public List<PblmRole> findPblmByPersId(String persId, String currentOrgId) {
  950. String province = inspOrgService.getProvince(currentOrgId);
  951. return bisInspPblmDao.findPblmByPersId(persId, province);
  952. }
  953. @Override
  954. public PageInfo<PblmRetCount> countBySwhsPage(CountParam countParam) {
  955. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  956. List<PblmRetCount> pblmPage = bisInspPblmDao.findSwhsPblmPage(countParam);
  957. pblmPage = convertData(countParam.getPersId(), pblmPage, "swhs", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  958. return new PageInfo<>(pblmPage);
  959. }
  960. @Override
  961. public PageInfo<BisInspPblm> findPblmList(PblmParam param) {
  962. PageHelper.startPage(param);
  963. return new PageInfo<>(pblmList(param));
  964. }
  965. @Override
  966. public List<BisInspPblm> pblmList(PblmParam param) {
  967. param.setOrgIds(InspUtils.setOrgIds(param.getOrgIds()));
  968. param.setCodes(InspUtils.setOrgIds(param.getCodes()));
  969. List<BisInspPblm> list = bisInspPblmDao.findPblmList(param);
  970. if ("79".equals(param.getpType())) {
  971. list.forEach(p -> {
  972. if (StringUtils.isNotBlank(p.getCwsCode())) {
  973. BisInspVillgdWtsp wtsp = wtspService.get(p.getCwsCode());
  974. Optional.ofNullable(wtsp).ifPresent(w -> p.setLoc(w.getLoc()));
  975. } else if (StringUtils.isNotBlank(p.getVillageCode())) {
  976. BisInspVillgdVill vill = villService.get(p.getVillageCode());
  977. Optional.ofNullable(vill).ifPresent(w -> p.setLoc(w.getLoc()));
  978. BisInspVillgdNvill nvill = nvillService.get(p.getVillageCode());
  979. Optional.ofNullable(nvill).ifPresent(w -> p.setLoc(w.getLoc()));
  980. }
  981. if (StringUtils.isNotBlank(p.getNewVillName())) {
  982. p.setNm(p.getNewVillName());
  983. }
  984. });
  985. }
  986. return list;
  987. }
  988. @Override
  989. public List<String> findVillType(String currentOrgId) {
  990. return bisInspPblmDao.findVillType(inspOrgService.getProvince(currentOrgId));
  991. }
  992. @Override
  993. public PageInfo<PblmRetCount> countByWiuPage(CountParam countParam) {
  994. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  995. List<PblmRetCount> pblmPage = bisInspPblmDao.findWiuPblmPage(countParam);
  996. pblmPage = convertData(countParam.getPersId(), pblmPage, "wiu", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  997. return new PageInfo<>(pblmPage);
  998. }
  999. @Override
  1000. public PageInfo<PblmRetCount> countByPrdPage(CountParam countParam) {
  1001. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  1002. List<PblmRetCount> pblmPage = bisInspPblmDao.findPrdPblmPage(countParam);
  1003. pblmPage = convertData(countParam.getPersId(), pblmPage, "prd", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  1004. PageInfo page = new PageInfo(pblmPage);
  1005. return page;
  1006. }
  1007. @Override
  1008. public PageInfo<PblmRetCount> countByJsflPage(CountParam countParam) {
  1009. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  1010. List<PblmRetCount> pblmPage = bisInspPblmDao.findJsflPblmPage(countParam);
  1011. pblmPage = convertData(countParam.getPersId(), pblmPage, "jsfl", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  1012. PageInfo page = new PageInfo(pblmPage);
  1013. return page;
  1014. }
  1015. @Override
  1016. public PageInfo<PblmRetCount> countByJswaPage(CountParam countParam) {
  1017. PageHelper.startPage(countParam.getPageNum(), countParam.getPageSize());
  1018. List<PblmRetCount> pblmPage = bisInspPblmDao.findJswaPblmPage(countParam);
  1019. pblmPage = convertData(countParam.getPersId(), pblmPage, "jswa", countParam.getpType(), countParam.getProvince(), countParam.getOrgId());
  1020. PageInfo page = new PageInfo(pblmPage);
  1021. return page;
  1022. }
  1023. @Override
  1024. public boolean havePblm(String value, String id) {
  1025. Map<String, String> params = new HashMap<>(2);
  1026. params.put("objType", value);
  1027. params.put("regId", id);
  1028. List<BisInspPblm> pblmList = bisInspPblmDao.getListByMap(params);
  1029. if (pblmList == null || pblmList.isEmpty()) {
  1030. return false;
  1031. }
  1032. return true;
  1033. }
  1034. @Override
  1035. public PageInfo<BisInspVo> pblmPage(BisInspVo bisInspVo) {
  1036. PageHelper.startPage(bisInspVo.getPageNum(), bisInspVo.getPageSize());
  1037. List<BisInspVo> pblmPage = bisInspPblmDao.pblmPage(bisInspVo);
  1038. PageInfo<BisInspVo> page = new PageInfo(pblmPage);
  1039. if (page.getList().size() > 0) {
  1040. for (BisInspVo v : page.getList()) {
  1041. if (v.getAdFullName() != null) {
  1042. if (v.getAdFullName().contains(SplitValue.HENG_SPLIT)) {
  1043. String[] split = v.getAdFullName().split(SplitValue.HENG_SPLIT);
  1044. if (split.length == 3) {
  1045. v.setProvince(split[0]);
  1046. v.setCity(split[1]);
  1047. v.setCountry(split[2]);
  1048. }
  1049. if (split.length == 2) {
  1050. v.setProvince(split[0]);
  1051. v.setCity(split[1]);
  1052. v.setCountry("");
  1053. }
  1054. } else {
  1055. v.setProvince(v.getAdFullName());
  1056. }
  1057. }
  1058. }
  1059. }
  1060. return page;
  1061. }
  1062. @Override
  1063. public PageInfo<BisInspVo> pblmRectPage(BisInspVo bisInspVo) {
  1064. PageHelper.startPage(bisInspVo.getPageNum(), bisInspVo.getPageSize());
  1065. List<BisInspVo> pblmPage = bisInspPblmDao.pblmRectPage(bisInspVo);
  1066. PageInfo page = new PageInfo(pblmPage);
  1067. return page;
  1068. }
  1069. @Override
  1070. public int updatePblmState(BisInspPblmParam pblmParam) throws Exception {
  1071. logger.info("updatePblmState -> objId:{},state:{}", pblmParam.getObjId(), pblmParam.getState());
  1072. if (StringUtils.isBlank(pblmParam.getObjId()) || StringUtils.isBlank(pblmParam.getState())) {
  1073. throw new Exception("缺少objId,state");
  1074. }
  1075. return bisInspPblmDao.updatePblmState(pblmParam);
  1076. }
  1077. @Autowired
  1078. private ObjInspPblmsDao objInspPblmsDao;
  1079. @Autowired
  1080. private BisInspItemQuesNumDao bisInspItemQuesNumDao;
  1081. @Autowired
  1082. private OlBisInspOrgService olBisInspOrgService;
  1083. @Override
  1084. public List<BisInspPblm> getPblmList(String id, String type, String objId, String orgId) {
  1085. if (StringUtils.isBlank(id)) {
  1086. return null;
  1087. }
  1088. OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(orgId);
  1089. List<BisInspItemQuesNumDto> bisInspItemQuesNumDtoList = new ArrayList<>();
  1090. if ("1".equals(olBisInspOrg.getPblmLogo()) && "1".equals(type)) {
  1091. bisInspItemQuesNumDtoList = bisInspItemQuesNumDao.getById(id, olBisInspOrg.getQuoteOrgId());
  1092. } else {
  1093. bisInspItemQuesNumDtoList = bisInspItemQuesNumDao.getById(id, "");
  1094. }
  1095. if (bisInspItemQuesNumDtoList.size() > 0) {
  1096. StringBuilder sb = new StringBuilder("");
  1097. //获取所有的问题标准id
  1098. List<String> snList = new ArrayList<>();
  1099. bisInspItemQuesNumDtoList.forEach(bisInspItemQuesNumDto -> {
  1100. String sn = bisInspItemQuesNumDto.getQuesSn();
  1101. if (StringUtils.isNotBlank(sn)) {
  1102. String[] snSplitList = sn.split(SplitValue.DOUHAO_SPLIT);
  1103. if (snSplitList.length > 0) {
  1104. for (int i = 0; i < snSplitList.length; i++) {
  1105. if (snSplitList[i].contains(SplitValue.HENG_SPLIT)) {
  1106. Integer startIndex = Integer.parseInt(snSplitList[i].split(SplitValue.HENG_SPLIT)[0].toString());
  1107. Integer endIndex = Integer.parseInt(snSplitList[i].split(SplitValue.HENG_SPLIT)[1].toString());
  1108. while (startIndex <= endIndex) {
  1109. snList.add(startIndex.toString());
  1110. startIndex++;
  1111. }
  1112. } else {
  1113. snList.add(snSplitList[i]);
  1114. }
  1115. }
  1116. } else {
  1117. snList.add(sn);
  1118. }
  1119. }
  1120. Map<String, Object> param = new HashMap<>();
  1121. //获取标准库中问题类别
  1122. param.put("type", type);
  1123. param.put("fileNum", bisInspItemQuesNumDto.getFileNum());
  1124. param.put("sheetNum", bisInspItemQuesNumDto.getSheetNum());
  1125. param.put("snList", snList);
  1126. param.put("orgId", "");
  1127. if ("1".equals(olBisInspOrg.getPblmLogo()) && "1".equals(type)) {
  1128. param.put("orgId", olBisInspOrg.getQuoteOrgId());
  1129. }
  1130. List<String> pblmIds = objInspPblmsDao.getPblmIdsList(param);
  1131. if (pblmIds.size() > 0) {
  1132. pblmIds.forEach(pblmTypeId -> {
  1133. sb.append("'").append(pblmTypeId).append("'").append(",");
  1134. });
  1135. }
  1136. });
  1137. if (sb.length() == 0) {
  1138. return null;
  1139. }
  1140. //根据问题标准id获取问题列表
  1141. BisInspPblmParam pblmParam = new BisInspPblmParam();
  1142. pblmParam.setObjType(type);
  1143. pblmParam.setPblmsTypeId(sb.substring(0, sb.length() - 1));
  1144. pblmParam.setObjId(objId);
  1145. if ("1".equals(olBisInspOrg.getPblmLogo()) && "1".equals(type)) {
  1146. pblmParam.setOrgId(olBisInspOrg.getQuoteOrgId());
  1147. }
  1148. List<BisInspPblm> result = bisInspPblmDao.getObjPblmList(pblmParam);
  1149. return result;
  1150. }
  1151. return null;
  1152. }
  1153. /**
  1154. * 根据行政区代码和时间获取问题数据
  1155. *
  1156. * @param adCode
  1157. * @param stTm
  1158. * @param enTm
  1159. * @return
  1160. */
  1161. @Override
  1162. public BisInspTaskTotal getPblmListByTm(String adCode, String objType, Date stTm, Date enTm) {
  1163. return bisInspPblmDao.getPblmListByTm(adCode, objType, stTm, enTm);
  1164. }
  1165. @Override
  1166. public List<VillCount> findVillPblmBYAreaId(String areaId, String persId, String orgId, String pType) {
  1167. String province = inspOrgService.getProvince(orgId);
  1168. String areaIdStr = bisInspPblmDao.getAreaOrgIdsNew(persId, areaId, province);
  1169. if (StringUtils.isBlank(areaIdStr)) {
  1170. return null;
  1171. }
  1172. Map<String, String> params = InspPblmUtils.getLength(province);
  1173. List<VillCount> villCountList = bisInspPblmDao.findVillPblmBYAreaId(areaIdStr, province, params.get("otherLength"), params.get("length"));
  1174. if (villCountList == null) {
  1175. return null;
  1176. }
  1177. List<VillTypeCount> typeCountList = bisInspPblmDao.countVillPblmByArea(areaIdStr, province);
  1178. for (VillCount villCount : villCountList) {
  1179. int total = 0;
  1180. for (VillTypeCount typeCount : typeCountList) {
  1181. if (villCount.getAdFullName().equals(typeCount.getAdFullName())) {
  1182. setVillValue(villCount, typeCount, pType);
  1183. total += typeCount.getTotal();
  1184. }
  1185. }
  1186. villCount.setTotal(total);
  1187. villCount.setNm(villCount.getAdFullName());
  1188. }
  1189. return villCountList;
  1190. }
  1191. /**
  1192. * 小水库转换
  1193. */
  1194. private List<PblmRetCount> convertData(String persId, List<PblmRetCount> pblmRetCountList, String
  1195. type, String pType, String province, String orgId) {
  1196. if (pblmRetCountList == null) {
  1197. return null;
  1198. }
  1199. String codes = "'";
  1200. for (PblmRetCount retCount : pblmRetCountList) {
  1201. codes += retCount.getCode() + "','";
  1202. }
  1203. if ("'".equals(codes)) {
  1204. return null;
  1205. }
  1206. if (StringUtils.isNotBlank(codes)) {
  1207. codes = codes.substring(0, codes.length() - 2);
  1208. }
  1209. List<PblmCount> bisInspBaseDtos = new ArrayList<>();
  1210. if ("".equals(type)) {
  1211. bisInspBaseDtos = bisInspPblmDao.countRever(persId, codes, province, pType, orgId);
  1212. }
  1213. if ("waga".equals(type)) {
  1214. bisInspBaseDtos = bisInspPblmDao.countWaga(persId, codes, province, orgId);
  1215. }
  1216. if ("keyReg".equals(type)) {
  1217. bisInspBaseDtos = bisInspPblmDao.countKeyReg(persId, codes, pType, province, orgId);
  1218. }
  1219. if ("sd".equals(type)) {
  1220. bisInspBaseDtos = bisInspPblmDao.countSd(persId, codes, pType, orgId);
  1221. }
  1222. if ("swhs".equals(type)) {
  1223. bisInspBaseDtos = bisInspPblmDao.countSwhs(persId, codes, pType, orgId);
  1224. }
  1225. if ("wiu".equals(type)) {
  1226. bisInspBaseDtos = bisInspPblmDao.countWiu(persId, codes, pType, orgId);
  1227. }
  1228. if ("prd".equals(type)) {
  1229. bisInspBaseDtos = bisInspPblmDao.countPrd(persId, codes, pType, orgId);
  1230. }
  1231. if ("jsfl".equals(type)) {
  1232. bisInspBaseDtos = bisInspPblmDao.countJsfl(persId, codes, pType, orgId);
  1233. }
  1234. if ("jswa".equals(type)) {
  1235. bisInspBaseDtos = bisInspPblmDao.countJswa(persId, codes, pType, orgId);
  1236. }
  1237. for (PblmRetCount retCount : pblmRetCountList) {
  1238. for (PblmCount pblmCount : bisInspBaseDtos) {
  1239. if (retCount.getRsName().equals(pblmCount.getRsName()) && retCount.getCode().equals(pblmCount.getCode())) {
  1240. if ("0".equals(pblmCount.getInspPblmCate())) {
  1241. retCount.setCate0(pblmCount.getTotal());
  1242. }
  1243. if ("1".equals(pblmCount.getInspPblmCate())) {
  1244. retCount.setCate1(pblmCount.getTotal());
  1245. }
  1246. if ("2".equals(pblmCount.getInspPblmCate())) {
  1247. retCount.setCate2(pblmCount.getTotal());
  1248. }
  1249. if ("3".equals(pblmCount.getInspPblmCate())) {
  1250. retCount.setCate3(pblmCount.getTotal());
  1251. }
  1252. }
  1253. }
  1254. retCount.setNm(retCount.getRsName());
  1255. if ("waga".equals(type)) {
  1256. retCount.setEngScal(changeEngScal(retCount.getEngScal()));
  1257. }
  1258. retCount.setSub(retCount.getCate0() + retCount.getCate1() + retCount.getCate2() + retCount.getCate3());
  1259. }
  1260. return pblmRetCountList;
  1261. }
  1262. private String changeEngScal(String engScal) {
  1263. if ("1".equals(engScal)) {
  1264. return "大型";
  1265. }
  1266. if ("2".equals(engScal)) {
  1267. return "中型";
  1268. }
  1269. if ("3".equals(engScal)) {
  1270. return "小型";
  1271. }
  1272. return "";
  1273. }
  1274. @Override
  1275. public List<String> getPblmPath(String pblmId) {
  1276. if (StringUtils.isBlank(pblmId)) {
  1277. return null;
  1278. }
  1279. return bisInspPblmDao.getPblmPath(pblmId);
  1280. }
  1281. /**
  1282. * 问题汇总功能增加外部问题导入
  1283. *
  1284. * @param f
  1285. */
  1286. @Autowired
  1287. AdCodeVerify adCodeVerify;
  1288. @Override
  1289. public List<String> excelImport(MultipartFile f, String recPers) throws Exception {
  1290. ImportUtil<BisInspPblmImportDto> util = new ImportUtil<BisInspPblmImportDto>() {
  1291. @Override
  1292. public void before(BisInspPblmImportDto bisInspPblmImportDto) {
  1293. bisInspPblmImportDto.setRecPers(recPers);
  1294. }
  1295. };
  1296. List<BisInspPblmImportDto> list = util.fileToList(f, BisInspPblmImportDto.class);
  1297. List<BisInspPblm> insertList = new ArrayList<>();
  1298. ExcelVerifyUtil verifyUtil = new ExcelVerifyUtil<>(list, new BisInspPblmVerify(), adCodeVerify);
  1299. List<BisInspPblmImportDto> rightList = verifyUtil.getRightList();
  1300. rightList.forEach(a -> insertList.add(a.transToBisInspPblm()));
  1301. bisInspPblmDao.insertByList(insertList);
  1302. List<String> errorList = verifyUtil.getErrorList();
  1303. return errorList;
  1304. }
  1305. /**
  1306. * excel导入问题查询
  1307. *
  1308. * @param param
  1309. * @return
  1310. */
  1311. @Override
  1312. public List<BisInspPblm> getPblmListFromImport(PblmParam param) {
  1313. PageHelper.startPage(param.getPageNum(), param.getPageSize());
  1314. return bisInspPblmDao.getPblmListFromImport(param);
  1315. }
  1316. @Override
  1317. public void batchDelete(List<PblmParam> param) {
  1318. bisInspPblmDao.batchDelete(param);
  1319. }
  1320. }