743dd4d7ed3a0a58e425b069cd9d95849da6817d.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. package cn.com.goldenwater.dcproj.service.impl.general;
  2. import cn.com.goldenwater.dcproj.constValue.BisInspEnum;
  3. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao;
  4. import cn.com.goldenwater.dcproj.dao.BisInspPblmPlistDao;
  5. import cn.com.goldenwater.dcproj.dao.GeneralInfoDao;
  6. import cn.com.goldenwater.dcproj.dao.MenuDao;
  7. import cn.com.goldenwater.dcproj.dao.OlBisInspOrgDao;
  8. import cn.com.goldenwater.dcproj.dto.BisInspBaseListDto;
  9. import cn.com.goldenwater.dcproj.dto.EmpwtprjPadMapDto;
  10. import cn.com.goldenwater.dcproj.dto.LoginUser;
  11. import cn.com.goldenwater.dcproj.dto.MenuDto;
  12. import cn.com.goldenwater.dcproj.dto.PersCwsInfoDto;
  13. import cn.com.goldenwater.dcproj.dto.PersGrwInfoDto;
  14. import cn.com.goldenwater.dcproj.dto.PersInfoDto;
  15. import cn.com.goldenwater.dcproj.dto.PersResInfoDto;
  16. import cn.com.goldenwater.dcproj.dto.PersWtdstInfoDto;
  17. import cn.com.goldenwater.dcproj.dto.RsCountDto;
  18. import cn.com.goldenwater.dcproj.dto.RsStatusInfoDto;
  19. import cn.com.goldenwater.dcproj.enums.PrivTypeEnum;
  20. import cn.com.goldenwater.dcproj.model.AttInspType;
  21. import cn.com.goldenwater.dcproj.model.AttInteBase;
  22. import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
  23. import cn.com.goldenwater.dcproj.model.BisInspWorkInfo;
  24. import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
  25. import cn.com.goldenwater.dcproj.model.PersLoc;
  26. import cn.com.goldenwater.dcproj.model.PersPositionViewLog;
  27. import cn.com.goldenwater.dcproj.param.EmptprjPadMapInfoParam;
  28. import cn.com.goldenwater.dcproj.param.GeneralInfoParam;
  29. import cn.com.goldenwater.dcproj.param.RsStatusInfoParam;
  30. import cn.com.goldenwater.dcproj.param.StartAndEndTimeParam;
  31. import cn.com.goldenwater.dcproj.service.GeneralInfoService;
  32. import cn.com.goldenwater.dcproj.service.PersPositionViewLogService;
  33. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  34. import cn.com.goldenwater.dcproj.utils.BeanUtil;
  35. import cn.com.goldenwater.dcproj.utils.EnumUtil;
  36. import cn.com.goldenwater.dcproj.utils.expExcel.ExcelExport;
  37. import cn.com.goldenwater.dcproj.utils.expExcel.ExportAbstract;
  38. import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil;
  39. import cn.com.goldenwater.dcproj.vo.BisInspPblmMapVo;
  40. import cn.com.goldenwater.target.CheckException;
  41. import com.github.pagehelper.PageHelper;
  42. import com.github.pagehelper.PageInfo;
  43. import org.apache.commons.collections.CollectionUtils;
  44. import org.apache.commons.lang3.StringUtils;
  45. import org.springframework.beans.factory.annotation.Autowired;
  46. import org.springframework.stereotype.Service;
  47. import org.springframework.transaction.annotation.Transactional;
  48. import javax.servlet.http.HttpServletResponse;
  49. import java.time.LocalDate;
  50. import java.util.ArrayList;
  51. import java.util.List;
  52. import java.util.Map;
  53. import java.util.Optional;
  54. /**
  55. * Created by 61618 on 2019/4/12.
  56. */
  57. @Service
  58. @Transactional(rollbackFor = Exception.class)
  59. public class GeneralInfoServiceImpl implements GeneralInfoService {
  60. @Autowired
  61. private GeneralInfoDao generalInfoDao;
  62. @Autowired
  63. private OlBisInspOrgDao olBisInspOrgDao;
  64. @Autowired
  65. private BisInspAllRlationPersDao bisInspAllRlationPersDao;
  66. @Autowired
  67. private PersPositionViewLogService persPositionViewLogService;
  68. @Autowired
  69. private MenuDao menuDao;
  70. @Autowired
  71. private BisInspPblmPlistDao bisInspPblmPlistDao;
  72. @Override
  73. public List<PersInfoDto> getInfoByPers(String persid, String sttm, String entm, String province) {
  74. //存放最终结果
  75. List<PersInfoDto> persInfoDtoList = this.generalInfoDao.getGroup(persid, sttm, entm, province);
  76. if (persInfoDtoList.size() > 0) {
  77. for (PersInfoDto persInfoDto : persInfoDtoList) {
  78. if ("001".equals(persInfoDto.getId().substring(0, 3)) || "036".equals(persInfoDto.getId().substring(0, 36))) {//小水库
  79. String ptype = "1";
  80. if ("036".equals(persInfoDto.getId().substring(0, 3))) {
  81. ptype = "36";
  82. }
  83. List<PersResInfoDto> persResInfoDtoList = this.generalInfoDao.getPersResInfoDtoList(persInfoDto.getId(), province, ptype);
  84. if (persResInfoDtoList.size() > 0) {
  85. persInfoDto.setPersResInfoDtoList(persResInfoDtoList);
  86. }
  87. } else if (BisInspEnum.VILL.getRlation().equals(persInfoDto.getId().substring(0, 3))) {//人饮
  88. List<PersCwsInfoDto> persCwsInfoDtoList = this.generalInfoDao.getPersCwsInfoDtoList(persInfoDto.getId(), province);
  89. if (persCwsInfoDtoList.size() > 0) {
  90. persInfoDto.setPersCwsInfoDtoList(persCwsInfoDtoList);
  91. }
  92. } else if (BisInspEnum.TRACK.getRlation().equals(persInfoDto.getId().substring(0, 3))) {//水毁
  93. List<PersWtdstInfoDto> persWtdstInfoDtoList = this.generalInfoDao.getPersWtdstInfoDtoList(persInfoDto.getId(), province);
  94. if (persWtdstInfoDtoList.size() > 0) {
  95. persInfoDto.setPersWtdstInfoDtoList(persWtdstInfoDtoList);
  96. }
  97. } else if (BisInspEnum.GRW.getRlation().equals(persInfoDto.getId().substring(0, 3))) {//地下水
  98. List<PersGrwInfoDto> persGrwInfoDtoList = this.generalInfoDao.getPersGrwInfoDtoList(persInfoDto.getId(), province);
  99. if (persGrwInfoDtoList.size() > 0) {
  100. persInfoDto.setPersGrwInfoDtoList(persGrwInfoDtoList);
  101. }
  102. }
  103. }
  104. }
  105. return persInfoDtoList;
  106. }
  107. @Override
  108. public PageInfo<RsStatusInfoDto> getRsSupData(RsStatusInfoParam rsStatusInfoParam, HttpServletResponse response) {
  109. if (!"".equals(rsStatusInfoParam.getAdCode())) {
  110. String subAd = AdLevelUtil.SubAd(rsStatusInfoParam.getAdCode()).get("subAd").toString();
  111. rsStatusInfoParam.setAdCode(subAd);
  112. }
  113. if ("1".equals(rsStatusInfoParam.getIsExport())) {
  114. List<Map<String, Object>> mapList = new ArrayList<>();
  115. for (RsStatusInfoDto info : this.generalInfoDao.getRsSupData(rsStatusInfoParam)) {
  116. mapList.add(BeanUtil.transBean2Map(info));
  117. }
  118. ExportAbstract export = new ExcelExport();
  119. export.setFileName("水库列表");
  120. export.setExport_ps_export(true);
  121. export.setExport_ps_type(ExportAbstract.XLS);
  122. export.setExport_bzip(false);
  123. export.setTitle("水库列表");
  124. ArrayList<Object> cols = new ArrayList<Object>();
  125. cols.add("rsCode[水库编码]");
  126. cols.add("rsName[水库名称]");
  127. cols.add("rsType[水库类型]");
  128. cols.add("totCap[总容量(万m3)]");
  129. cols.add("rsAdmName[负责公司]");
  130. cols.add("rsAdmDep[部门]");
  131. export.setCols(cols);
  132. export.setGroupable(false);
  133. // 设置视图指标
  134. export.setLevel(1);
  135. export.setLocksize(0);
  136. try {
  137. export.Export(response);
  138. export.ExportHeadForCustom(response);//导出表头
  139. export.ContinueExport(mapList);
  140. export.EndExport();
  141. } catch (Exception e) {
  142. e.printStackTrace();
  143. }
  144. }
  145. PageHelper.startPage(rsStatusInfoParam.getPageNum(), rsStatusInfoParam.getPageSize());
  146. List<RsStatusInfoDto> rsStatusInfoList = this.generalInfoDao.getRsSupData(rsStatusInfoParam);
  147. if (rsStatusInfoList.size() > 0) {
  148. for (RsStatusInfoDto rs : rsStatusInfoList) {
  149. if (rs.getObjId() != null) {
  150. if (rs.getRgstrStatus().equals("0")) {
  151. rs.setStatus(rs.getUptm() + "年 未填报");
  152. } else if (rs.getRgstrStatus().equals("1")) {
  153. rs.setStatus(rs.getUptm() + "年 督查中");
  154. } else if (rs.getRgstrStatus().equals("2")) {
  155. rs.setStatus(rs.getUptm() + "年 已督查");
  156. }
  157. } else {
  158. rs.setStatus("未督查");
  159. }
  160. }
  161. }
  162. PageInfo<RsStatusInfoDto> pageInfo = new PageInfo(rsStatusInfoList);
  163. return pageInfo;
  164. }
  165. @Override
  166. public PageInfo<EmpwtprjPadMapDto> getEmptprjData(EmptprjPadMapInfoParam p) throws Exception {
  167. if (!"".equals(p.getAdCode())) {
  168. String subAd = AdLevelUtil.SubAd(p.getAdCode()).get("subAd").toString();
  169. p.setAdCode(subAd);
  170. }
  171. PageHelper.startPage(p.getPageNum(), p.getPageSize());
  172. List<EmpwtprjPadMapDto> rsStatusInfoList = this.generalInfoDao.getEmptprjData(p);
  173. if (rsStatusInfoList.size() > 0) {
  174. for (EmpwtprjPadMapDto rs : rsStatusInfoList) {
  175. if ("1".equals(rs.getHstInsp()) && rs.getObjId() != null) {
  176. if ("0".equals(rs.getRgstrStatus())) {
  177. rs.setStatus("复查-未督查");
  178. } else if ("1".equals(rs.getRgstrStatus())) {
  179. rs.setStatus("复查-督查中");
  180. } else if ("2".equals(rs.getRgstrStatus())) {
  181. rs.setStatus("复查-已督查");
  182. }
  183. } else if ("1".equals(rs.getHstInsp()) && rs.getObjId() == null) {
  184. rs.setStatus("2018-已督查");
  185. } else if (!"1".equals(rs.getHstInsp()) && rs.getObjId() != null) {
  186. if ("0".equals(rs.getRgstrStatus())) {
  187. rs.setStatus("2019-未督查");
  188. } else if ("1".equals(rs.getRgstrStatus())) {
  189. rs.setStatus("2019-督查中");
  190. } else if ("2".equals(rs.getRgstrStatus())) {
  191. rs.setStatus("2019-已督查");
  192. }
  193. } else {
  194. rs.setStatus("督查计划外");
  195. }
  196. }
  197. }
  198. PageInfo<EmpwtprjPadMapDto> pageInfo = new PageInfo(rsStatusInfoList);
  199. return pageInfo;
  200. }
  201. @Override
  202. public int insertInte(AttInteBase attInteBase) {
  203. return this.generalInfoDao.insertInte(attInteBase);
  204. }
  205. @Override
  206. public int deleteInte(String id) {
  207. return this.generalInfoDao.deleteInte(id);
  208. }
  209. @Override
  210. public int updateInte(AttInteBase attInteBase) {
  211. return this.generalInfoDao.updateInte(attInteBase);
  212. }
  213. @Override
  214. public List<BisInspWorkInfo> getWorkInfoByPersId(String persId, String province) {
  215. //获取人员所在组的督查对象
  216. List<BisInspWorkInfo> workInfoList = this.generalInfoDao.getWorkDetailByPersId(persId);
  217. return workInfoList;
  218. }
  219. @Override
  220. public List<PersLoc> getSttmEntmByPersId(String persId, Double lon, Double lat,String orgId,LoginUser currentLoginUser) {
  221. OlBisInspOrg inspOrg = olBisInspOrgDao.get(orgId);
  222. // 查询轨迹记录
  223. List<PersLoc> persLocList = this.generalInfoDao.getSttmEntm(persId, lon, lat, inspOrg.getRlcode());
  224. // 增加查询轨迹记录的日志
  225. BisInspAllRlationPers pers = bisInspAllRlationPersDao.get(persId);
  226. PersPositionViewLog persPositionViewLog = new PersPositionViewLog();
  227. persPositionViewLog.setPersIdViewed(persId);
  228. persPositionViewLog.setPersNameViewed(pers.getPersName());
  229. persPositionViewLog.setOrgId(orgId);
  230. persPositionViewLog.setAdCode(inspOrg.getAdCode());
  231. persPositionViewLog.setAdName(inspOrg.getOrgNm());
  232. persPositionViewLog.setPersId(currentLoginUser.getPersId());
  233. persPositionViewLog.setPersName(currentLoginUser.getPersName());
  234. persPositionViewLog.setNote(String.format("persid:%s;lon:%s;lat:%s",persId,null== lon?"null":lon.toString(),null== lat?"null":lat.toString()));
  235. persPositionViewLogService.insert(persPositionViewLog);
  236. return persLocList;
  237. }
  238. @Override
  239. public PageInfo<AttInteBase> getIntePage(StartAndEndTimeParam startAndEndTimeParam) {
  240. PageHelper.startPage(startAndEndTimeParam);
  241. List<AttInteBase> list = this.generalInfoDao.getIntePage(startAndEndTimeParam);
  242. PageInfo<AttInteBase> pageInfo = new PageInfo(list);
  243. return pageInfo;
  244. }
  245. @Override
  246. public List<RsCountDto> getObjCount(GeneralInfoParam param) {
  247. if (StringUtils.isNotBlank(param.getAdCode())) {
  248. param.setAdCode(AdLevelUtil.SubAd(param.getAdCode()).get("subAd").toString());
  249. }
  250. List<RsCountDto> list = new ArrayList<>();
  251. if (StringUtils.isBlank(param.getAdGrad())) {
  252. return list;
  253. }
  254. if ("1".equals(param.getObjType())) {
  255. list = generalInfoDao.getObjRsCount(param);
  256. return list;
  257. } else if ("2".equals(param.getObjType())) {
  258. list = generalInfoDao.getObjVlgCount(param);
  259. } else if ("21".equals(param.getObjType())) {
  260. param.setObjType(param.getObjType().substring(0, 1));
  261. list = generalInfoDao.getObjCwsCount(param);
  262. } else if ("22".equals(param.getObjType())) {
  263. param.setObjType(param.getObjType().substring(0, 1));
  264. list = generalInfoDao.getObjPspCount(param);
  265. } else if ("23".equals(param.getObjType())) {
  266. param.setObjType(param.getObjType().substring(0, 1));
  267. list = generalInfoDao.getObjAdBaseCount(param);
  268. } else if ("3".equals(param.getObjType())) {
  269. list = generalInfoDao.getObjWtdstCount(param);
  270. } else if ("4".equals(param.getObjType())) {
  271. list = generalInfoDao.getObjEmpwtCount(param);
  272. } else if ("6".equals(param.getObjType())) {
  273. list = generalInfoDao.getObjWagaCount(param);
  274. }
  275. return list;
  276. }
  277. @Override
  278. public List<BisInspBaseListDto> getBaseList(GeneralInfoParam param) {
  279. if (StringUtils.isNotBlank(param.getAdCode())) {
  280. param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get("subAd")));
  281. }
  282. return generalInfoDao.getBaseList(param);
  283. }
  284. @Override
  285. public PageInfo<BisInspBaseListDto> getBasePage(GeneralInfoParam param, HttpServletResponse response) {
  286. if (StringUtils.isNotBlank(param.getAdCode())) {
  287. param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get("subAd")));
  288. }
  289. if ("1".equals(param.getIsExport())) {
  290. BisInspEnum bisInspEnum = EnumUtil.getBisInspEnum(param.getObjType());
  291. String fileName = "结果列表";
  292. if (bisInspEnum != null) {
  293. fileName = bisInspEnum.getDesc() + "列表";
  294. }
  295. List<String> columns = new ArrayList<>();
  296. columns.add("id");
  297. columns.add("code");
  298. columns.add("objId");
  299. columns.add("rgstrId");
  300. columns.add("objType");
  301. columns.add("displayLevel");
  302. columns.add("baseCode");
  303. ExportUtil.exportExcel(generalInfoDao.getBaseList(param), response, fileName, columns, BisInspBaseListDto.class);
  304. }
  305. PageHelper.startPage(param);
  306. List<BisInspBaseListDto> listDtos = generalInfoDao.getBaseList(param);
  307. return new PageInfo<>(listDtos);
  308. }
  309. /**
  310. * 查询当前用户机构的督查类型列表
  311. * @param param
  312. * @return
  313. */
  314. @Override
  315. public List<AttInspType> getObjTypeList(GeneralInfoParam param){
  316. return this.generalInfoDao.getObjTypeList(param);
  317. }
  318. /**
  319. * 查询当前用户机构的督查类型的问题列表
  320. * @param param
  321. * @return
  322. */
  323. @Override
  324. public List<BisInspPblmMapVo> getPblmList(GeneralInfoParam param){
  325. if(StringUtils.isBlank(param.getObjType())){
  326. throw new CheckException("督查对象类型不能为空!");
  327. }
  328. if(StringUtils.isBlank(param.getStartTime()) && StringUtils.isBlank(param.getEndTime())){
  329. // 没有时间限制 默认设置为当年
  330. LocalDate curDate = LocalDate.now();
  331. param.setStartTime(String.format("%d-1-1",curDate.getYear()));
  332. param.setEndTime(String.format("%d-%d-%d",curDate.getYear(),curDate.getMonthValue(),curDate.getDayOfMonth()));
  333. }
  334. List<BisInspPblmMapVo> pblmMapVoList = this.generalInfoDao.selectPblmListByObjType(param);
  335. if(null != pblmMapVoList && pblmMapVoList.size()>0 ){
  336. // 设置 工作流信息
  337. for(BisInspPblmMapVo pblmVo :pblmMapVoList){
  338. String plistId = pblmVo.getId();
  339. if(StringUtils.isNotEmpty(plistId)){
  340. // 查询
  341. List<Map<String, String>> bpmDataIdList = this.bisInspPblmPlistDao.getBpmDataId(plistId, param.getOrgId(), param.getProvince());
  342. if (CollectionUtils.isNotEmpty(bpmDataIdList)) {
  343. Map<String, String> bpmData = bpmDataIdList.get(0);
  344. pblmVo.setTaskInstId(bpmData.get("taskInstId"));
  345. pblmVo.setProcInstId(bpmData.get("procInstId"));
  346. pblmVo.setProcTypeName("督查-" + bpmData.get("procTypeName"));
  347. }
  348. }
  349. }
  350. }
  351. return pblmMapVoList;
  352. }
  353. /**
  354. * 查询当前用户督查填报菜单
  355. * @param param
  356. * @return
  357. */
  358. @Override
  359. public List<MenuDto> getObjTypeMenuListByPersId(GeneralInfoParam param){
  360. String curUserId = param.getPersId();
  361. BisInspAllRlationPers pers = bisInspAllRlationPersDao.get(curUserId);
  362. Optional.ofNullable(pers).orElseThrow(() -> new CheckException("此人员不存在:" + curUserId));
  363. String owerSystem = pers.getOwnerSystem();
  364. List<MenuDto> menuList = menuDao.getListByUserId(curUserId, PrivTypeEnum.MENU.getValue(), param.getOwnApp(), owerSystem);
  365. if(null != menuList && menuList.size()>0){
  366. MenuDto menuDto = menuList.stream().filter(f -> "督查填报".equals(f.getMenuName())).findFirst().orElse(null);
  367. return null == menuDto? new ArrayList<>():menuDto.getMenuList();
  368. }else {
  369. return new ArrayList<>() ;
  370. }
  371. }
  372. }