cae67818967625d5f9c5fe1fa302e78d805561e2.svn-base 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. package cn.com.goldenwater.dcproj.service.impl;
  2. import cn.com.goldenwater.core.persistence.CrudDao;
  3. import cn.com.goldenwater.core.service.AbstractCrudService;
  4. import cn.com.goldenwater.dcproj.constValue.CommonLabel;
  5. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  6. import cn.com.goldenwater.dcproj.dao.*;
  7. import cn.com.goldenwater.dcproj.model.*;
  8. import cn.com.goldenwater.dcproj.param.BisInspRsvrynPblmMendParam;
  9. import cn.com.goldenwater.dcproj.param.GwComFileParam;
  10. import cn.com.goldenwater.dcproj.service.AttRsBaseService;
  11. import cn.com.goldenwater.dcproj.service.BisInspRsvrynPblmMendService;
  12. import cn.com.goldenwater.dcproj.service.GwComFileService;
  13. import cn.com.goldenwater.dcproj.utils.*;
  14. import com.github.pagehelper.PageHelper;
  15. import com.github.pagehelper.PageInfo;
  16. import net.sf.json.JSONArray;
  17. import net.sf.json.JSONObject;
  18. import net.sf.json.JsonConfig;
  19. import org.apache.commons.collections.map.HashedMap;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.beans.factory.annotation.Value;
  25. import org.springframework.stereotype.Service;
  26. import java.io.File;
  27. import java.text.SimpleDateFormat;
  28. import java.util.*;
  29. import java.util.stream.Collectors;
  30. /**
  31. * @author lune
  32. * @date 2020-7-7
  33. */
  34. @Service
  35. public class BisInspRsvrynPblmMendServiceImpl extends AbstractCrudService<BisInspRsvrynPblmMend, BisInspRsvrynPblmMendParam> implements BisInspRsvrynPblmMendService {
  36. private Logger logger = LoggerFactory.getLogger(getClass());
  37. private static String accessToken = "";
  38. @Value("${mwr.ducha.url}")
  39. private String quanguoUrl;
  40. @Value("${hunan.phone}")
  41. private String phone;
  42. @Value("${quanguocode}")
  43. private String smscode;
  44. @Value("${getFile.prefix}")
  45. public String prefix;
  46. @Autowired
  47. private OlBisInspOrgDao olBisInspOrgDao;
  48. @Autowired
  49. private BisInspRsvrynPblmMendDao bisInspRsvrynPblmMendDao;
  50. @Autowired
  51. private GwComFileDao gwComFileDao;
  52. @Autowired
  53. private AttAdBaseDao attAdBaseDao;
  54. @Value("${web.upload-path}")
  55. public String fileDir;
  56. @Autowired
  57. private BisInspRsvrynRgstrDao bisInspRsvrynRgstrDao;
  58. @Autowired
  59. private GwComFileService gwComFileService;
  60. public BisInspRsvrynPblmMendServiceImpl(BisInspRsvrynPblmMendDao bisInspRsvrynPblmMendDao) {
  61. super(bisInspRsvrynPblmMendDao);
  62. this.bisInspRsvrynPblmMendDao = bisInspRsvrynPblmMendDao;
  63. }
  64. @Override
  65. public PageInfo<BisInspRsvrynPblmMend> findRsvrPblmPage(BisInspRsvrynPblmMendParam bisInspRsvrynPblmMendParam) {
  66. if (StringUtils.isNotBlank(bisInspRsvrynPblmMendParam.getAdCode())) {
  67. bisInspRsvrynPblmMendParam.setAdCode(AdLevelUtil.SubAd(bisInspRsvrynPblmMendParam.getAdCode()).get(SplitValue.SUBAD).toString());
  68. }
  69. PageHelper.startPage(bisInspRsvrynPblmMendParam);
  70. List<BisInspRsvrynPblmMend> result = bisInspRsvrynPblmMendDao.findRsvrPblmList(bisInspRsvrynPblmMendParam);
  71. if (result.size() > 0) {
  72. result.forEach(mend -> {
  73. List<GwComFile> gwComFiles = gwComFileDao.findFileByBiz(mend.getId());
  74. if (gwComFiles != null && gwComFiles.size() > 0) {
  75. gwComFiles = gwComFiles.stream().filter(file -> "MEND_EXTRA".equals(file.getBizType())).collect(Collectors.toList());
  76. }
  77. mend.setGwComFiles(gwComFiles);
  78. });
  79. }
  80. PageInfo<BisInspRsvrynPblmMend> pageInfo = new PageInfo<>(result);
  81. return pageInfo;
  82. }
  83. /**
  84. * 每日凌晨一点定时导入小水库问题数据
  85. */
  86. @Override
  87. public void getQuanguo() {
  88. //登录
  89. BisInspAllRlationPers bisInspAllRlationPers = this.login();
  90. Map<String, String> params = new HashMap<>();
  91. if (bisInspAllRlationPers != null) {
  92. Map<String, String> headerMap = new HashMap<>();
  93. headerMap.put(CommonLabel.ACCESS_TOKEN, accessToken);
  94. headerMap.put(CommonLabel.PERSID, bisInspAllRlationPers.getGuid());
  95. List<AttAdBase> attAdBases = attAdBaseDao.getAdData("000000000000");
  96. Calendar calendar = Calendar.getInstance();
  97. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  98. String entm = DateUtils.Calendar2Str(calendar, "yyyy-MM-dd HH:mm:ss");
  99. calendar.add(Calendar.DAY_OF_MONTH, -3);//今天的时间减三天
  100. String sttm = DateUtils.Calendar2Str(calendar, "yyyy-MM-dd HH:mm:ss");
  101. logger.info("-------------开始导入部里数据----------------");
  102. for (AttAdBase attAdBase : attAdBases) {
  103. //设置省份导入
  104. String adCode = attAdBase.getAdCode();
  105. params.put("adCode", AdLevelUtil.getAddvcd(adCode));
  106. /*params.put("adCode", "53");*/
  107. params.put("startTime", sttm);
  108. params.put("endTime", entm);
  109. List<BisInspRsvrynPblmMend> bisInspRsvrynPblmMends = getBisInspRects(bisInspAllRlationPers, params, headerMap);
  110. //获取小水库数据并插入本地库
  111. // insertRsvr(bisInspRsvrynPblmMends, bisInspAllRlationPers, params, headerMap);
  112. bisInspRsvrynPblmMends.stream().forEach(bisInspRsvrynPblmMend -> {
  113. bisInspRsvrynPblmMendDao.insertRsvr(bisInspRsvrynPblmMend);
  114. //插入附件信息,下载附件文件
  115. String fileBizId = bisInspRsvrynPblmMend.getId();
  116. if (downloadFile(fileBizId, headerMap)) {
  117. //下载成功
  118. logger.info("下载成功");
  119. } else {
  120. //下载失败
  121. logger.info("下载失败");
  122. }
  123. //如果附件已经插入则放弃,如果没有则进行插入
  124. });
  125. }
  126. logger.info("-------------导入部里数据结束----------------");
  127. }
  128. }
  129. /**
  130. * 调用部里登录接口
  131. *
  132. * @return
  133. */
  134. public BisInspAllRlationPers login() {
  135. String apiUrl = quanguoUrl + "/bis/insp/loginByCode";
  136. Map<String, String> params = new HashMap<>();
  137. params.put("phone", phone);
  138. params.put("code", smscode);
  139. String content = HttpClientUtils.doHttpsPost(apiUrl, params, new HashedMap());
  140. JSONObject jsonObject = JSONObject.fromObject(content);
  141. //登录结果返回
  142. if (jsonObject != null && jsonObject.size() > 3) {
  143. //获取token
  144. accessToken = jsonObject.getString(CommonLabel.ACCESS_TOKEN);
  145. String data = jsonObject.getString("data");
  146. JSONObject object = JSONObject.fromObject(data);
  147. return (BisInspAllRlationPers) JSONObject.toBean(object, BisInspAllRlationPers.class);
  148. }
  149. return new BisInspAllRlationPers();
  150. }
  151. /**
  152. * 下发通知,问题反馈
  153. *
  154. * @param params
  155. * @param headerMap
  156. * @param
  157. */
  158. private void sendInform(Map<String, String> params, Map<String, String> headerMap, List<BisInspRsvrynPblmMend> bisInspRsvrynPblmMends) {
  159. /* String rectIds = rectList.stream().map(n -> n.getId()).collect(Collectors.joining(","));
  160. params.clear();
  161. params.put("rectIds", rectIds);
  162. String rectpblmUrl = quanguoUrl + "/api/bis/insp/rect/findRecPblmListByRectIds";
  163. HttpClientUtils.doHttpsPost(rectpblmUrl, params, headerMap);
  164. //通知下发成功,更改获取通知状态
  165. String rectMsgUrl = quanguoUrl + "/api/bis/insp/rect/restRectByIds";
  166. HttpClientUtils.doHttpsPost(rectMsgUrl, params, headerMap);
  167. //问题反馈成功,信息反馈(未部署)
  168. String rectPortUrl = quanguoUrl + "/api/bis/insp/rect/restRectPblmByIds";
  169. HttpClientUtils.doHttpsPost(rectPortUrl, params, headerMap);*/
  170. }
  171. /**
  172. * 获取小水库数据并插入本地库
  173. *
  174. * @param bisInspAllRlationPers
  175. * @param params
  176. * @param headerMap
  177. */
  178. private void insertRsvr(List<BisInspRsvrynPblmMend> bisInspRsvrynPblmMends, BisInspAllRlationPers bisInspAllRlationPers, Map<String, String> params, Map<String, String> headerMap) {
  179. /* List<BisInspRsvrynPblmMend> list = new ArrayList<>();
  180. int delDataStep = 0;
  181. for (int i = 0; i < bisInspRsvrynPblmMends.size(); i++) {
  182. list.add(bisInspRsvrynPblmMends.get(i));
  183. delDataStep++;
  184. if (delDataStep == 50) {
  185. bisInspRsvrynPblmMendDao.insertRsvr(list);
  186. list.clear();
  187. delDataStep = 0;
  188. }
  189. if (i == bisInspRsvrynPblmMends.size() - 1) {
  190. bisInspRsvrynPblmMendDao.insertRsvr(list);
  191. list.clear();
  192. }
  193. }*/
  194. }
  195. /**
  196. * 下载数据
  197. *
  198. * @param bisInspAllRlationPers
  199. * @param params
  200. * @param headerMap
  201. * @return
  202. */
  203. private List<BisInspRsvrynPblmMend> getBisInspRects(BisInspAllRlationPers bisInspAllRlationPers, Map<String, String> params, Map<String, String> headerMap) {
  204. //OlBisInspOrg olBisInspOrg = olBisInspOrgDao.get(bisInspAllRlationPers.getOrgId());
  205. //获取用户相关信息
  206. String rectUrl = quanguoUrl + "/bis/insp/rsvr/pblm/mend/downLoadRsvrList";
  207. Calendar date = Calendar.getInstance();
  208. params.put("year", String.valueOf(date.get(Calendar.YEAR)));
  209. params.put("mnth", String.valueOf(date.get(Calendar.MONTH) + 1));
  210. //params.put("rsName", "弄贯(二)水库");
  211. String rectContent = "";
  212. try {
  213. rectContent = HttpClientUtils.doHttpsPost2(rectUrl, params, headerMap);
  214. JSONObject jsonObject = JSONObject.fromObject(rectContent);
  215. JSONArray jsonArray = jsonObject.getJSONArray("data");
  216. List<BisInspRsvrynPblmMend> bisInspRsvrynPblmMends;
  217. bisInspRsvrynPblmMends = JSONArray.toList(jsonArray, new BisInspRsvrynPblmMend(), new JsonConfig());
  218. return bisInspRsvrynPblmMends;
  219. } catch (Exception e) {
  220. logger.info(rectContent);
  221. logger.info(e.getMessage());
  222. return null;
  223. }
  224. }
  225. /**
  226. * 手动导入小水库数据
  227. *
  228. * @param bisInspRsvrynPblmMendParam
  229. */
  230. @Override
  231. public void importRsvrData(BisInspRsvrynPblmMendParam bisInspRsvrynPblmMendParam) {
  232. //调用部里登录接口
  233. BisInspAllRlationPers bisInspAllRlationPers = this.login();
  234. Map<String, String> params = new HashMap<>();
  235. if (bisInspAllRlationPers != null) {
  236. Map<String, String> headerMap = new HashMap<>();
  237. headerMap.put(CommonLabel.ACCESS_TOKEN, accessToken);
  238. headerMap.put(CommonLabel.PERSID, bisInspAllRlationPers.getGuid());
  239. //获取用户相关信息
  240. List<AttAdBase> attAdBases = attAdBaseDao.getAdData("000000000000");
  241. for (AttAdBase attAdBase : attAdBases) {
  242. String adCode = attAdBase.getAdCode();
  243. params.put("adCode", AdLevelUtil.getAddvcd(adCode));
  244. List<BisInspRsvrynPblmMend> bisInspRsvrynPblmMends = getBisInspRects(bisInspAllRlationPers, params, headerMap);
  245. //获取小水库数据并插入本地库
  246. /*insertRsvr(bisInspRsvrynPblmMends, bisInspAllRlationPers, params, headerMap);*/
  247. bisInspRsvrynPblmMends.stream().forEach(bisInspRsvrynPblmMend -> {
  248. bisInspRsvrynPblmMendDao.insertRsvr(bisInspRsvrynPblmMend);
  249. });
  250. }
  251. }
  252. }
  253. public Boolean downloadFile(String bizId, Map<String, String> headerMap) {
  254. String rectUrl = quanguoUrl + "/file/findFileByBiz?bizId=" + bizId;
  255. Map<String, String> params = new HashMap<>();
  256. //params.put("bizId", bizId);
  257. String rectContent = "";
  258. try {
  259. rectContent = HttpClientUtils.doHttpsPost(rectUrl, params, headerMap);
  260. JSONObject jsonObject = JSONObject.fromObject(rectContent);
  261. JSONArray jsonArray = jsonObject.getJSONArray("data");
  262. List<GwComFile> gwComFiles;
  263. gwComFiles = JSONArray.toList(jsonArray, new GwComFile(), new JsonConfig());
  264. //拼接 访问地址做下载
  265. for (GwComFile gwComFile : gwComFiles
  266. ) {
  267. String path = quanguoUrl + "/" + gwComFile.getFilePath();
  268. fileDir = fileDir.replace("upload/", "");
  269. String dirPath = fileDir + gwComFile.getFilePath().substring(0, gwComFile.getFilePath().lastIndexOf("/"));
  270. File pathFile = new File(dirPath);
  271. if (!pathFile.exists()) {
  272. pathFile.mkdirs();
  273. }
  274. ;
  275. HttpsDownloadUtils.downloadFile(path, fileDir + gwComFile.getFilePath());
  276. //插入插入本地数据库记录
  277. if (null != gwComFileService.get(gwComFile.getId())) {
  278. gwComFileService.update(gwComFile);
  279. } else {
  280. gwComFileService.insert(gwComFile);
  281. }
  282. }
  283. return true;
  284. } catch (Exception ex) {
  285. logger.info(rectContent);
  286. logger.info(ex.getMessage());
  287. return false;
  288. }
  289. }
  290. @Override
  291. public void updRevwInfo() {
  292. //调用部里登录接口
  293. BisInspAllRlationPers bisInspAllRlationPers = this.login();
  294. Map<String, String> params = new HashMap<>();
  295. String mwrUrl = quanguoUrl + "/bis/insp/rsvr/pblm/mend/findRsvrList";
  296. Map<String, String> headerMap = new HashMap<>();
  297. headerMap.put(CommonLabel.ACCESS_TOKEN, accessToken);
  298. headerMap.put(CommonLabel.PERSID, bisInspAllRlationPers.getGuid());
  299. params.put("revwInfo", "revwInfo");
  300. params.put("persGuid", bisInspAllRlationPers.getGuid());
  301. String mwrContent = HttpClientUtils.doHttpsPost2(mwrUrl, params, headerMap);
  302. JSONObject jsonObject = JSONObject.fromObject(mwrContent);
  303. JSONArray mwrJsonArray = jsonObject.getJSONArray("data");
  304. List<BisInspRsvrynPblmMend> bisInspRsvrynPblmMends = JSONArray.toList(mwrJsonArray, new BisInspRsvrynPblmMend(), new JsonConfig());
  305. for (BisInspRsvrynPblmMend bisInspRsvrynPblmMend : bisInspRsvrynPblmMends) {
  306. bisInspRsvrynPblmMendDao.updateRevwInfo(bisInspRsvrynPblmMend.getId(), bisInspRsvrynPblmMend.getRevwInfo());
  307. }
  308. }
  309. @Override
  310. public int update2021(BisInspRsvrynPblmMend bisInspRsvrynPblmMend) {
  311. int update = update(bisInspRsvrynPblmMend);
  312. BisInspRsvrynRgstr bisInspRsvrynRgstr = new BisInspRsvrynRgstr();
  313. String rgstrId = bisInspRsvrynPblmMend.getRgstrId();
  314. bisInspRsvrynRgstr.setRgstrId(rgstrId);
  315. BisInspRsvrynPblmMendParam mendParam = new BisInspRsvrynPblmMendParam();
  316. mendParam.setRsCode(bisInspRsvrynPblmMend.getRsCode());
  317. // mendParam.setRsName(bisInspRsvrynPblmMend.getRsName());
  318. // mendParam.setAdCode(bisInspRsvrynPblmMend.getAdCode());
  319. List<BisInspRsvrynPblmMend> mendList = findList(mendParam);
  320. if (mendList != null) { //统计所有问题的状态得出登记表状态
  321. String rectState = "2";//要求前端校验提交的数据(即当前修改的问题必须有值)
  322. for (BisInspRsvrynPblmMend mend : mendList) {
  323. if (mend.getRevwState() == null || !"2".equals(mend.getRevwState())) {
  324. rectState = "1";
  325. break;
  326. }
  327. }
  328. bisInspRsvrynRgstr.setRectStat(rectState);
  329. }
  330. BisInspRsvrynRgstr rgstr = bisInspRsvrynRgstrDao.get(rgstrId);
  331. if (rgstr != null) {
  332. if (!Constant.STRING_TWO.equals(rgstr.getState())) {
  333. bisInspRsvrynRgstr.setState(Constant.STRING_ONE);
  334. }
  335. bisInspRsvrynRgstrDao.update(bisInspRsvrynRgstr);
  336. }
  337. List<GwComFile> gwComFiles = bisInspRsvrynPblmMend.getGwComFiles();
  338. // 为 佐证材料 类的文件 不能删除,所以直接加上
  339. GwComFileParam param = new GwComFileParam();
  340. param.setBizId(bisInspRsvrynPblmMend.getId());
  341. param.setBizType("MEND_PROV");
  342. List<GwComFile> prov = gwComFileService.findList(param);
  343. if (gwComFiles != null && gwComFiles.size() > 0) {
  344. if (prov != null) {
  345. gwComFiles.addAll(prov);
  346. }
  347. gwComFileService.updateBiz(gwComFiles, bisInspRsvrynPblmMend.getId());
  348. }
  349. return 0;
  350. }
  351. @Autowired
  352. private AttRsBaseService attRsBaseService;
  353. @Override
  354. public int insert2021(BisInspRsvrynPblmMend bisInspRsvrynPblmMend) {
  355. Optional.ofNullable(bisInspRsvrynPblmMend).map(BisInspRsvrynPblmMend::getRsCode).ifPresent(rsCode -> {
  356. AttRsBase attRsBase = attRsBaseService.get(rsCode);
  357. Optional.ofNullable(attRsBase).ifPresent(base -> {
  358. bisInspRsvrynPblmMend.setEngScal(base.getEngScal());
  359. bisInspRsvrynPblmMend.setRsName(base.getRsName());
  360. });
  361. });
  362. int insert = insert(bisInspRsvrynPblmMend);
  363. BisInspRsvrynRgstr bisInspRsvrynRgstr = new BisInspRsvrynRgstr();
  364. String rgstrId = bisInspRsvrynPblmMend.getRgstrId();
  365. bisInspRsvrynRgstr.setRgstrId(rgstrId);
  366. BisInspRsvrynPblmMendParam mendParam = new BisInspRsvrynPblmMendParam();
  367. // mendParam.setRsCode(bisInspRsvrynPblmMend.getRsCode());
  368. mendParam.setRsName(bisInspRsvrynPblmMend.getRsName());
  369. mendParam.setAdCode(bisInspRsvrynPblmMend.getAdCode());
  370. List<BisInspRsvrynPblmMend> mendList = findList(mendParam);
  371. if (mendList != null) { //统计所有问题的状态得出登记表状态
  372. String rectState = "2";//要求前端校验提交的数据(即当前修改的问题必须有值)
  373. for (BisInspRsvrynPblmMend mend : mendList) {
  374. if (mend.getRevwState() == null || !mend.getRevwState().equals("2")) {
  375. rectState = "1";
  376. break;
  377. }
  378. }
  379. bisInspRsvrynRgstr.setRectStat(rectState);
  380. }
  381. BisInspRsvrynRgstr rgstr = bisInspRsvrynRgstrDao.get(rgstrId);
  382. if (rgstr != null) {
  383. if (!Constant.STRING_TWO.equals(rgstr.getState())) {
  384. bisInspRsvrynRgstr.setState(Constant.STRING_ONE);
  385. }
  386. bisInspRsvrynRgstrDao.update(bisInspRsvrynRgstr);
  387. }
  388. List<GwComFile> gwComFiles = bisInspRsvrynPblmMend.getGwComFiles();
  389. if (gwComFiles != null && gwComFiles.size() > 0) {
  390. gwComFileService.updateBiz(gwComFiles, bisInspRsvrynPblmMend.getId());
  391. }
  392. return 0;
  393. }
  394. @Override
  395. public PageInfo<BisInspRsvrynPblmMend> pagerPc(BisInspRsvrynPblmMendParam bisInspRsvrynPblmMendParam) {
  396. PageHelper.startPage(bisInspRsvrynPblmMendParam);
  397. List<BisInspRsvrynPblmMend> list = bisInspRsvrynPblmMendDao.findList(bisInspRsvrynPblmMendParam);
  398. return new PageInfo<>(list);
  399. }
  400. }