508751d9f48285768b03a065c2b4961c29f72398.svn-base 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. package cn.com.goldenwater.dcproj.controller.ducha;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.dto.BisInspSelAreaDto;
  5. import cn.com.goldenwater.dcproj.dto.PersAllAreaDto;
  6. import cn.com.goldenwater.dcproj.dto.PersAllInfoDto;
  7. import cn.com.goldenwater.dcproj.model.AttRsBase;
  8. import cn.com.goldenwater.dcproj.model.BisInspSelArea;
  9. import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
  10. import cn.com.goldenwater.dcproj.param.BisInspSelAreaParam;
  11. import cn.com.goldenwater.dcproj.param.InGroupResParam;
  12. import cn.com.goldenwater.dcproj.service.BisInspSelAreaService;
  13. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  14. import cn.com.goldenwater.dcproj.service.SupervisionPlanService;
  15. import cn.com.goldenwater.dcproj.util.CheckUtil;
  16. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  17. import cn.com.goldenwater.dcproj.utils.InspPblmUtils;
  18. import cn.com.goldenwater.dcproj.utils.TimeRangeUtil;
  19. import cn.com.goldenwater.id.util.UuidUtil;
  20. import com.github.pagehelper.PageInfo;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import io.swagger.annotations.ApiParam;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.slf4j.Logger;
  26. import org.slf4j.LoggerFactory;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.util.Assert;
  29. import org.springframework.web.bind.annotation.*;
  30. import java.text.ParseException;
  31. import java.text.SimpleDateFormat;
  32. import java.util.*;
  33. import java.util.stream.Collectors;
  34. /**
  35. * @author litf
  36. * @date 2019-3-6
  37. */
  38. @Api(value = "可选区域管理", tags = "可选区域管理")
  39. @RestController
  40. @RequestMapping("/dc/insp/selarea")
  41. public class BisInspSelAreaController extends BaseController {
  42. private Logger logger = LoggerFactory.getLogger(getClass());
  43. @Autowired
  44. private BisInspSelAreaService bisInspSelAreaService;
  45. @Autowired
  46. private OlBisInspOrgService olBisInspOrgService;
  47. @Autowired
  48. private SupervisionPlanService supervisionPlanService;
  49. private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  50. @ApiOperation(value = "增加可选区域")
  51. @RequestMapping(value = "/insert", method = RequestMethod.POST)
  52. public BaseResponse<String> insert(@ApiParam(name = "bisInspSelArea", value = "BisInspSelArea", required = true) @RequestBody BisInspSelArea bisInspSelArea) {
  53. String uuid = UuidUtil.uuid(); // 生成uuid
  54. bisInspSelArea.setAreaId(uuid);
  55. bisInspSelArea.setOrgId(getCurrentOrgId());
  56. int ret = bisInspSelAreaService.insert(bisInspSelArea);
  57. return buildSuccessResponse(uuid);
  58. }
  59. @ApiOperation(value = "批量增加可选区域")
  60. @RequestMapping(value = "/muli/insert", method = RequestMethod.POST)
  61. public BaseResponse<Map> muliInsert(@ApiParam(name = "bisInspSelArea", value = "BisInspSelArea", required = true) @RequestBody List<BisInspSelArea> lists) {
  62. if(StringUtils.isBlank(lists.get(0).getIsInsert()) && lists.size()>0){
  63. Map<String,Object> map = isValiArea(lists);
  64. if(map.get("msg")!=null){
  65. return buildSuccessResponse(map);
  66. }
  67. }
  68. int ret = 0;
  69. for (BisInspSelArea area : lists) {
  70. String uuid = UuidUtil.uuid();
  71. area.setAreaId(uuid);
  72. area.setOrgId(getCurrentOrgId());
  73. bisInspSelAreaService.insert(area);
  74. ret++;
  75. }
  76. return buildSuccessResponse(new HashMap());
  77. }
  78. public Map<String,Object> isValiArea(List<BisInspSelArea> lists){
  79. String msg = "";
  80. Map<String,Object> map = new HashMap<>();
  81. if (lists != null && StringUtils.isNotBlank(lists.get(0).getId()) && lists.size() > 0) {
  82. Map<String, String> mapGroup = supervisionPlanService.getYearMonth(lists.get(0).getId());
  83. List<String> adCodeList = new ArrayList<String>();
  84. List<String> errorList = new ArrayList<String>();
  85. lists.forEach(item -> {
  86. adCodeList.add(item.getAdCode());
  87. });
  88. List<PersAllInfoDto> allNodeDtoList = this.supervisionPlanService.getAllInfoByPersidAndOrgId(getCurrentPersId(), mapGroup.get("INSP_YEAR"), mapGroup.get("INSP_MNTH"), getCurrentOrgId(), null);
  89. if (allNodeDtoList != null && allNodeDtoList.size() > 0 && (StringUtils.isNotBlank(mapGroup.get("STTM")) || StringUtils.isNotBlank(mapGroup.get("ENTM")))) {
  90. allNodeDtoList.forEach(item -> {
  91. if (lists.get(0).getId().equals(item.getId()) && item.getPersAllAreaDtoList() != null && item.getPersAllAreaDtoList().size() > 0) {
  92. item.getPersAllAreaDtoList().forEach(item1 -> {
  93. adCodeList.add(item1.getAdCode());
  94. });
  95. }
  96. });
  97. if (adCodeList.size() > 0) {
  98. allNodeDtoList.forEach(item -> {
  99. long count = 0;
  100. if (!lists.get(0).getId().equals(item.getId()) && item.getPersAllAreaDtoList() != null && item.getPersAllAreaDtoList().size() > 0) {
  101. count = item.getPersAllAreaDtoList().stream().filter(item1 -> adCodeList.indexOf(item1.getAdCode()) > -1).count();
  102. }
  103. try {
  104. if (count > 0 && TimeRangeUtil.isTimeRange(item,mapGroup)) {
  105. errorList.add("(检查计划事项:"+item.getChkName()+"-组名:"+item.getNm()+")");
  106. }
  107. } catch (ParseException e) {
  108. e.printStackTrace();
  109. }
  110. });
  111. }
  112. }
  113. if(errorList.size()>0){
  114. msg = "(检查计划事项:"+mapGroup.get("CHK_NAME")+"-当前组:"+mapGroup.get("PNM")+")与其他组"+String.join(",",errorList)+"重叠";
  115. map.put("msg",msg);
  116. }
  117. }
  118. return map;
  119. }
  120. @ApiOperation(value = "根据ID删除可选区域")
  121. @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
  122. public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  123. int ret = bisInspSelAreaService.delete(id);
  124. return buildSuccessResponse();
  125. }
  126. @ApiOperation(value = "根据ID删除可选区域")
  127. @RequestMapping(value = "/delete/{id}/{flag}", method = RequestMethod.POST)
  128. public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id, @ApiParam(name = "flag", value = "flag", required = true) @PathVariable String flag) {
  129. if ("1".equals(flag)) {
  130. String province = olBisInspOrgService.getProvince(getCurrentOrgId());
  131. bisInspSelAreaService.deleteAreaData(id, province);
  132. } else {
  133. bisInspSelAreaService.delete(id);
  134. }
  135. return buildSuccessResponse();
  136. }
  137. @ApiOperation(value = "根据ID批量删除可选区域")
  138. @PostMapping(value = "/deletes")
  139. public BaseResponse delete(@RequestBody BisInspSelAreaDto bisInspSelAreaDto) {
  140. if (null == bisInspSelAreaDto || null == bisInspSelAreaDto.getIds() || bisInspSelAreaDto.getIds().size() == 0) {
  141. return buildFailResponse("获取参数失败!");
  142. }
  143. String flag = Optional.of(bisInspSelAreaDto).map(BisInspSelAreaDto::getFlag).orElse(null);
  144. if ("1".equals(flag)) {
  145. String province = olBisInspOrgService.getProvince(getCurrentOrgId());
  146. for (String id : bisInspSelAreaDto.getIds()) {
  147. bisInspSelAreaService.deleteAreaData(id, province);
  148. }
  149. } else {
  150. for (String id : bisInspSelAreaDto.getIds()) {
  151. bisInspSelAreaService.delete(id);
  152. }
  153. }
  154. return buildSuccessResponse();
  155. }
  156. @ApiOperation(value = "更新可选区域信息")
  157. @RequestMapping(value = "/update", method = RequestMethod.POST)
  158. public BaseResponse update(@ApiParam(name = "bisInspSelArea", value = "BisInspSelArea", required = true) @RequestBody BisInspSelArea bisInspSelArea) {
  159. Assert.notNull(bisInspSelArea.getAreaId(), "主键areaId为必填参数");
  160. int ret = bisInspSelAreaService.update(bisInspSelArea);
  161. return buildSuccessResponse();
  162. }
  163. @ApiOperation(value = "根据ID获取可选区域")
  164. @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
  165. public BaseResponse<BisInspSelArea> get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  166. BisInspSelArea bisInspSelArea = bisInspSelAreaService.get(id);
  167. return buildSuccessResponse(bisInspSelArea);
  168. }
  169. @ApiOperation(value = "可选区域列表查询")
  170. @RequestMapping(value = "/list", method = RequestMethod.POST)
  171. public BaseResponse<PageInfo<BisInspSelArea>> list(@RequestBody BisInspSelAreaParam param) {
  172. param.setOrgId(getCurrentOrgId());
  173. if(StringUtils.isNotBlank(param.getId()) || StringUtils.isNotBlank(param.getAdCodes())){
  174. PageInfo<BisInspSelArea> list = bisInspSelAreaService.findPageInfo(param);
  175. return buildSuccessResponse(list);
  176. }
  177. return buildSuccessResponse(new PageInfo<>(new ArrayList<>()));
  178. }
  179. @ApiOperation(value = "可选区域列表查询(包含下级分组)")
  180. @RequestMapping(value = "/tree/list", method = RequestMethod.POST)
  181. public BaseResponse<PageInfo<BisInspSelArea>> treeList(@RequestBody BisInspSelAreaParam param) {
  182. param.setOrgId(getCurrentOrgId());
  183. param.setProvince(olBisInspOrgService.getProvinceFlag(getCurrentOrgId()));
  184. PageInfo<BisInspSelArea> list = bisInspSelAreaService.getAllSub(param);
  185. return buildSuccessResponse(list);
  186. }
  187. @ApiOperation(value = "根据人员id查询可选区域信息,pType=1小水库,2人饮工程,3水毁工程,pType=4地下水", notes = "")
  188. @RequestMapping(value = "/getAreaByPersid", method = RequestMethod.GET)
  189. public BaseResponse<List<Map<String, Object>>> getAreaByPersid(@RequestParam(value = "persId", required = false) String persId
  190. , @RequestParam(value = "adCode", required = false, defaultValue = "000000000000") String adCode,
  191. @RequestParam(value = "pType", required = false, defaultValue = "1") String pType) {
  192. //默认小水库
  193. if (StringUtils.isBlank(pType)) {
  194. pType = "1";
  195. }
  196. Map<String, Object> addvcd = AdLevelUtil.SubAd(adCode);
  197. String subAd = addvcd.get("subAd").toString();
  198. String level = addvcd.get("level").toString();
  199. String end = null, pattern = null, str = null;
  200. List<Map<String, Object>> list = null;
  201. if (level == null || "5".equals(level)) {
  202. end = "2";
  203. str = "0000000000";
  204. pattern = "\\d{12}";
  205. list = bisInspSelAreaService.getProvinceAreaByPersid(persId, end, str, pattern, adCode, pType, getCurrentOrgId());
  206. if (list.size() > 0) {
  207. return buildSuccessResponse(list);
  208. }
  209. } else if ("4".equals(level)) {
  210. end = "4";
  211. str = "00000000";
  212. pattern = subAd + "\\d{10}";
  213. list = bisInspSelAreaService.getProvinceAreaByPersid(persId, end, str, pattern, adCode, pType, getCurrentOrgId());
  214. if (list.size() > 0) {
  215. return buildSuccessResponse(list);
  216. } else {
  217. list = bisInspSelAreaService.getAddvcdByAdCode(subAd + "__00000000", "3");
  218. return buildSuccessResponse(list);
  219. }
  220. } else if ("3".equals(level)) {
  221. end = "6";
  222. str = "000000";
  223. pattern = subAd + "\\d{8}";
  224. list = bisInspSelAreaService.getProvinceAreaByPersid(persId, end, str, pattern, adCode, pType, getCurrentOrgId());
  225. if (list.size() > 0) {
  226. return buildSuccessResponse(list);
  227. } else {
  228. list = bisInspSelAreaService.getAddvcdByAdCode(subAd + "__000000", "4");
  229. return buildSuccessResponse(list);
  230. }
  231. }
  232. return buildFailResponse();
  233. }
  234. @ApiOperation(value = "根据人员id查询可选区域信息(手机缓存数据),pType=1小水库,2人饮工程,3水毁工程,pType=4地下水", notes = "")
  235. @RequestMapping(value = "/getAreaCacheByPersid", method = RequestMethod.GET)
  236. public BaseResponse<List<Map<String, Object>>> getAreaCacheByPersid(@RequestParam(value = "persId", required = false) String persId
  237. , @RequestParam(value = "adCode", required = false, defaultValue = "000000000000") String adCode,
  238. @RequestParam(value = "pType", required = false, defaultValue = "1") String pType) {
  239. if (StringUtils.isBlank(pType)) {
  240. pType = "1";
  241. }
  242. Map<String, Object> addvcd = AdLevelUtil.SubAd(adCode);
  243. String level = addvcd.get("level").toString();
  244. String end = null, pattern = null, str = null;
  245. List<Map<String, Object>> list = null;
  246. List<Map<String, Object>> retlist = new ArrayList<>();
  247. if ("5".equals(level) || level == null) {
  248. end = "2";
  249. str = "0000000000";
  250. pattern = "\\d{12}";
  251. list = bisInspSelAreaService.getProvinceAreaByPersid(persId, end, str, pattern, adCode, pType, getCurrentOrgId());
  252. if (list != null && !list.isEmpty()) {
  253. retlist.addAll(list);
  254. str = "00000000";
  255. String nmidStr = "";
  256. for (Map<String, Object> map : list) {
  257. String adCode1 = map.get("AD_CODE").toString();
  258. Map<String, Object> addvcd1 = AdLevelUtil.SubAd(adCode1);
  259. String subAd1 = addvcd1.get("subAd").toString();
  260. pattern = subAd1 + "\\d{10}";
  261. end = "4";
  262. list = bisInspSelAreaService.getProvinceAreaByPersid(persId, end, str, pattern, adCode1, pType, getCurrentOrgId());
  263. if (list == null || list.isEmpty()) {
  264. String subAd4 = subAd1.substring(0, 2) + "\\d{4}000000";
  265. if (!nmidStr.equals(subAd4)) {
  266. nmidStr = subAd4;
  267. list = bisInspSelAreaService.getAddvcdCacheByAdCode(subAd4, "3");
  268. }
  269. }
  270. retlist.addAll(list);
  271. if (list != null && !list.isEmpty()) {
  272. String subAdMid = "";
  273. for (Map<String, Object> params : list) {
  274. String adCode2 = params.get("AD_CODE").toString();
  275. Map<String, Object> addvcd2 = AdLevelUtil.SubAd(adCode2);
  276. String subAd2 = addvcd2.get("subAd").toString();
  277. end = "6";
  278. str = "000000";
  279. pattern = subAd2 + "\\d{8}";
  280. list = bisInspSelAreaService.getProvinceAreaByPersid(persId, end, str, pattern, adCode2, pType, getCurrentOrgId());
  281. if (list.size() > 0) {
  282. retlist.addAll(list);
  283. } else {
  284. String subAd3 = subAd2.substring(0, 2) + "\\d{4}000000";
  285. if (!subAdMid.equals(subAd3)) {
  286. subAdMid = subAd3;
  287. list = bisInspSelAreaService.getAddvcdCacheByAdCode(subAd3, "4");
  288. retlist.addAll(list);
  289. }
  290. }
  291. }
  292. }
  293. }
  294. }
  295. }
  296. return buildSuccessResponse(retlist);
  297. }
  298. @ApiOperation(value = "查询行政区下包含的水库", notes = "")
  299. @RequestMapping(value = "/getResByArea", method = RequestMethod.POST)
  300. public BaseResponse<PageInfo<Map<String, Object>>> getResByArea(@RequestBody BisInspSelAreaParam param) {
  301. String code = getPattern(param.getAdCode());
  302. param.setAdCode(code);
  303. if (param.getAreaId() != null && param.getAreaId().length() > 0) {
  304. String level = getLevel(param.getAreaId());
  305. param.setAreaId(level);
  306. }
  307. param.setOrgId(getCurrentOrgId());
  308. PageInfo<Map<String, Object>> list = bisInspSelAreaService.getResByArea(param);
  309. return buildSuccessResponse(list);
  310. }
  311. @ApiOperation(value = "查询督查组可选行政区", notes = "")
  312. @RequestMapping(value = "/getAreaByGroup", method = RequestMethod.GET)
  313. public BaseResponse<List<Map<String, Object>>> getOptionalArea(
  314. @RequestParam(value = "id") String id,
  315. @RequestParam(value = "adCode", defaultValue = "000000000000", required = false) String adCode,
  316. @RequestParam(value = "name", required = false) String name) {
  317. String ad = AdLevelUtil.Subordinate(adCode);
  318. List<Map<String, Object>> list = bisInspSelAreaService.getOptionalArea(id, ad, name, adCode, getCurrentOrgId());
  319. return buildSuccessResponse(list);
  320. }
  321. @ApiOperation(value = "查询督查组的区域分工", notes = "查询督查组的区域分工")
  322. @RequestMapping(value = "/getOptionalArea", method = RequestMethod.GET)
  323. public BaseResponse<List<Map<String, Object>>> getAreaByGroup(
  324. @RequestParam(value = "id") String id,
  325. @RequestParam(value = "adCode", defaultValue = "000000000000", required = false) String adCode,
  326. @RequestParam(value = "name", required = false) String name) {
  327. String province = olBisInspOrgService.getProvince(getCurrentOrgId());
  328. String ad = AdLevelUtil.Subordinate(adCode);
  329. List<Map<String, Object>> list = bisInspSelAreaService.getAreaByGroup(id, ad, name, adCode, province);
  330. return buildSuccessResponse(list);
  331. }
  332. public String getPattern(String adCode) {
  333. String[] adCodes = adCode.split(",");
  334. StringBuffer pattern = new StringBuffer();
  335. for (int i = 0; i < adCodes.length; i++) {
  336. if (i == (adCodes.length - 1)) {
  337. pattern.append("^").append(InspPblmUtils.Subordinate(adCodes[i]));
  338. } else {
  339. pattern.append("^").append(InspPblmUtils.Subordinate(adCodes[i])).append("|");
  340. }
  341. }
  342. return pattern.toString();
  343. }
  344. public String getLevel(String levels) {
  345. String[] level = levels.split(",");
  346. String ret = "";
  347. for (int i = 0; i < level.length; i++) {
  348. if (i == (level.length - 1)) {
  349. ret = ret + level[i];
  350. } else {
  351. ret = ret + level[i] + ",";
  352. }
  353. }
  354. return ret;
  355. }
  356. @ApiOperation(value = "查询不在该督查组下的水库", notes = "查询不在该督查组下的水库")
  357. @RequestMapping(value = "/getResByGroup", method = RequestMethod.POST)
  358. public BaseResponse<PageInfo<AttRsBase>> getResByGroup(@RequestBody InGroupResParam inGroupResParam) {
  359. OlBisInspOrg org = olBisInspOrgService.get(getCurrentOrgId());
  360. CheckUtil.notNull(org, "机构ID错误", getCurrentOrgId());
  361. inGroupResParam.setProvince(AdLevelUtil.getAddvcd(org.getAdCode()));
  362. inGroupResParam.setOrgId(getCurrentOrgId());
  363. PageInfo<AttRsBase> list = bisInspSelAreaService.getResByGroup(inGroupResParam);
  364. return buildSuccessResponse(list);
  365. }
  366. @ApiOperation(value = "删除分工(根据组id和行政区编码)", notes = "删除分工(根据组id和行政区编码)")
  367. @RequestMapping(value = "/deleteByGroupId", method = RequestMethod.GET)
  368. public BaseResponse deleteByGroupId(@RequestParam String id, @RequestParam String adCode) {
  369. this.bisInspSelAreaService.deleteByGroupId(id, adCode, getCurrentOrgId());
  370. return buildSuccessResponse();
  371. }
  372. @ApiOperation(value = "查询行政区下包含的稽察项目", notes = "")
  373. @RequestMapping(value = "/getPawpByArea", method = RequestMethod.POST)
  374. public BaseResponse<PageInfo<Map<String, Object>>> getPawpByArea(@RequestBody BisInspSelAreaParam param) {
  375. String code = getPattern(param.getAdCode());
  376. param.setAdCode(code);
  377. PageInfo<Map<String, Object>> list = bisInspSelAreaService.getPawpByArea(param);
  378. return buildSuccessResponse(list);
  379. }
  380. }