a1071af0dab53cab423f1f28cd06e19f71c0d7e4.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. package cn.com.goldenwater.dcproj.controller.sso;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.dao.GwComFileDao;
  5. import cn.com.goldenwater.dcproj.model.*;
  6. import cn.com.goldenwater.dcproj.param.GwComFileParam;
  7. import cn.com.goldenwater.dcproj.param.TacProvincePblmInfoParam;
  8. import cn.com.goldenwater.dcproj.param.TacProvincePblmMendInfoParam;
  9. import cn.com.goldenwater.dcproj.service.SsoService;
  10. import cn.com.goldenwater.dcproj.service.TacAttPawpBaseService;
  11. import cn.com.goldenwater.dcproj.service.TacProvincePblmInfoService;
  12. import cn.com.goldenwater.dcproj.service.TacProvincePblmMendInfoService;
  13. import cn.com.goldenwater.dcproj.util.StringUtil;
  14. import cn.com.goldenwater.dcproj.utils.DateUtils;
  15. import cn.com.goldenwater.dcproj.utils.http.SsoHttpHelper;
  16. import cn.com.goldenwater.id.util.UuidUtil;
  17. import com.dcxx.framework.watermanagesdk.model.ResponseMessage;
  18. import com.dcxx.framework.watermanagesdk.utils.EncryptHelper;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiParam;
  21. import net.sf.json.JSONArray;
  22. import org.apache.commons.collections.MapUtils;
  23. import org.apache.commons.lang3.StringUtils;
  24. import org.slf4j.Logger;
  25. import org.slf4j.LoggerFactory;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.beans.factory.annotation.Value;
  29. import org.springframework.context.annotation.ComponentScan;
  30. import org.springframework.scheduling.annotation.Scheduled;
  31. import org.springframework.web.bind.annotation.RequestBody;
  32. import org.springframework.web.bind.annotation.RequestMapping;
  33. import org.springframework.web.bind.annotation.RequestMethod;
  34. import org.springframework.web.bind.annotation.RestController;
  35. import java.util.*;
  36. import java.util.stream.Collectors;
  37. @Api(value = "定川数据同步接口", tags = "定川数据同步接口")
  38. @RestController
  39. @RequestMapping("/ding/chuan")
  40. @ComponentScan(basePackages =
  41. {"com.dcxx.framework.watermanagesdk.config"})
  42. public class DingChuanController extends BaseController {
  43. @Autowired
  44. private SsoService ssoService;
  45. @Autowired
  46. private SsoHttpHelper ssoHttpHelper;
  47. @Value("${watermanage.appkey}")
  48. private String appkey;
  49. @Value("${ding.chuan.send.data}")
  50. private String dingChuanSendData;
  51. @Value("${watermanage.appsecret}")
  52. private String appsecret;
  53. private Logger logger = LoggerFactory.getLogger(getClass());
  54. @Value("${watermanage.baseurl}")
  55. private String baseurl;
  56. @Autowired
  57. TacAttPawpBaseService tacAttPawpBaseService;
  58. @Autowired
  59. TacProvincePblmInfoService tacProvincePblmInfoService;
  60. @Autowired
  61. GwComFileDao gwComFileDao;
  62. @Autowired
  63. TacProvincePblmMendInfoService tacProvincePblmMendInfoService;
  64. //稽察整改问题反馈
  65. @RequestMapping(value = "/recvPblmMend", method = RequestMethod.POST)
  66. public BaseResponse<List<TacProvincePblmInfoRecv>> recvPblmMend(@ApiParam(name = "tacProvincePblmInfoRecvs", value = "tacProvincePblmInfoRecvs", required = true) @RequestBody List<TacProvincePblmInfoRecv> tacProvincePblmInfoRecvs) throws Exception {
  67. //问题ID是否为空,问题整改状态
  68. for (TacProvincePblmInfoRecv tacProvincePblmInfoRecv : tacProvincePblmInfoRecvs) {
  69. //搜索整改表是否加入过这个问题,加入过则更新,如果没有则先插入然后更新。
  70. TacProvincePblmMendInfoParam tacProvincePblmMendInfoParam = new TacProvincePblmMendInfoParam();
  71. tacProvincePblmMendInfoParam.setPblmId(tacProvincePblmInfoRecv.getId());
  72. List<TacProvincePblmMendInfo> tacProvincePblmMendInfos = tacProvincePblmMendInfoService.findList(tacProvincePblmMendInfoParam);
  73. TacProvincePblmMendInfo tacProvincePblmMendInfo = new TacProvincePblmMendInfo();
  74. tacProvincePblmMendInfo.setPblmId(tacProvincePblmInfoRecv.getId());
  75. tacProvincePblmMendInfo.setPersNm(tacProvincePblmInfoRecv.getPersName());
  76. tacProvincePblmMendInfo.setCrtInfo(tacProvincePblmInfoRecv.getCrtInfo());
  77. tacProvincePblmMendInfo.setCrtState(tacProvincePblmInfoRecv.getCrtState());
  78. tacProvincePblmMendInfo.setIsStart("1");
  79. tacProvincePblmMendInfo.setIsRect("1");
  80. tacProvincePblmMendInfo.setPblmOut("1");
  81. if (tacProvincePblmMendInfos.size() > 0) {
  82. //更新第一个的整改状态
  83. tacProvincePblmMendInfoService.updateByPblmId(tacProvincePblmMendInfo);
  84. } else {
  85. //补充其他列信息
  86. TacProvincePblmInfo tacProvincePblmInfo = tacProvincePblmInfoService.get(tacProvincePblmInfoRecv.getId());
  87. tacProvincePblmMendInfo.setPblmId(tacProvincePblmInfoRecv.getId());
  88. BeanUtils.copyProperties(tacProvincePblmInfo, tacProvincePblmMendInfo);
  89. //插入内容并更新整改状态
  90. tacProvincePblmMendInfoService.insert(tacProvincePblmMendInfo);
  91. }
  92. //插入附件
  93. for (GwComFile gwComFile : tacProvincePblmInfoRecv.getGwComFiles()) {
  94. gwComFile.setBizId(tacProvincePblmInfoRecv.getId());
  95. gwComFile.setId(UuidUtil.uuid());
  96. gwComFile.setCreateDate(new Date());
  97. gwComFileDao.insert(gwComFile);
  98. }
  99. }
  100. return buildSuccessResponse(tacProvincePblmInfoRecvs);
  101. }
  102. /**
  103. * @param
  104. * @return java.lang.String
  105. * @Description 同步稽察问题数据
  106. * @Date 2020/7/14
  107. **/
  108. //按照工程推送最终阶段历史问题,如果问题没有走到最终阶段则放弃。
  109. @RequestMapping(value = "/sendTacPblm", method = RequestMethod.POST)
  110. @Scheduled(cron = "0 0 8 * * ? ")
  111. public void sendTacPblm() throws Exception {
  112. logger.info("---------------start send Data---------------");
  113. logger.info("--------------------dingChuanSendData:" + dingChuanSendData + "--------------------");
  114. if (dingChuanSendData.equals("1")) {
  115. /* logger.info("---------------start send---------------");
  116. sendTacPblmByYear("2020");
  117. logger.info("---------------send 2020 pblm end---------------");
  118. sendTacPblmByYear("2021");
  119. logger.info("---------------send 2021 pblm end ---------------");*/
  120. sendTacPblmByYear("2022");
  121. logger.info("---------------send 2022 pblm end ---------------");
  122. }
  123. }
  124. public void sendTacPblmByYear(String year) throws Exception {
  125. try {
  126. List<DingChuanTacProject> dingChuanTacProjects = tacAttPawpBaseService.getAllPrject(year);
  127. for (DingChuanTacProject dingChuanTacProject : dingChuanTacProjects) {
  128. String watermanage_access_token = ssoHttpHelper.getAccessTokenDingChuan("988e2fa1f97611eb8ed3005056bb91dd", "113e2fb1f31311");
  129. //调用接口
  130. Date dt = new Date();
  131. Map<String, Object> parameter = new HashMap<>();//添加参数
  132. parameter.put("appkey", appkey);
  133. String nonce = UuidUtil.genernateNonce(8);
  134. parameter.put("nonce", nonce);
  135. String timestamp = System.currentTimeMillis() + "";
  136. parameter.put("timestamp", timestamp);
  137. String content = "988e2fa1f97611eb8ed3005056bb91dd" + "113e2fb1f31311" + nonce + timestamp;
  138. parameter.put("sign", EncryptHelper.sha(content));
  139. parameter.put("inspectCode", dingChuanTacProject.getInspectCode());
  140. parameter.put("inspectYear", dingChuanTacProject.getInspectYear());
  141. parameter.put("inspectBatch", dingChuanTacProject.getInspectBatch());
  142. parameter.put("inspectGroup", dingChuanTacProject.getInspectGroup());
  143. parameter.put("objectName", dingChuanTacProject.getObjectName());
  144. parameter.put("objectAdcd", dingChuanTacProject.getObjectAdcd());
  145. parameter.put("inspectionDate", dingChuanTacProject.getInspectionDate());
  146. parameter.put("projectOrgName", dingChuanTacProject.getProjectOrgName());
  147. parameter.put("adName", dingChuanTacProject.getAdName());
  148. parameter.put("inspectName", dingChuanTacProject.getInspectName());
  149. parameter.put("objectLocation", dingChuanTacProject.getObjectLocation());
  150. parameter.put("objectTypeName", dingChuanTacProject.getObjectTypeName());
  151. parameter.put("manageUnitName", dingChuanTacProject.getManageUnitName());
  152. parameter.put("suggestion", dingChuanTacProject.getSuggestion());
  153. parameter.put("reformPeriod", dingChuanTacProject.getReformPeriod());
  154. parameter.put("reformPeriodDate", dingChuanTacProject.getReformPeriodDate());
  155. parameter.put("groupLeaderName", getJcLeader(tacAttPawpBaseService.getJcDescData(dingChuanTacProject.getRgstrId())));
  156. parameter.put("groupMember", getJcPers(tacAttPawpBaseService.getJcDescData(dingChuanTacProject.getRgstrId())));
  157. parameter.put("inspectFileUrl", dingChuanTacProject.getInspectFileUrl());
  158. TacProvincePblmInfoParam tacProvincePblmInfoParam = new TacProvincePblmInfoParam();
  159. tacProvincePblmInfoParam.setRgstrId(dingChuanTacProject.getRgstrId());
  160. tacProvincePblmInfoParam.setStepId(dingChuanTacProject.getStepId());
  161. List<TacProvincePblmInfo> tacProvincePblmInfos = tacProvincePblmInfoService.findList(tacProvincePblmInfoParam);
  162. List<TacProvincePblmInfoDingChuan> tacProvincePblmInfoDingChuans = convertPblm(tacProvincePblmInfos);
  163. //获取问题对应附件信息
  164. for (TacProvincePblmInfoDingChuan tacProvincePblmInfoDingChuan : tacProvincePblmInfoDingChuans
  165. ) {
  166. GwComFileParam gwComFileParam = new GwComFileParam();
  167. gwComFileParam.setBizId(tacProvincePblmInfoDingChuan.getId());
  168. List<GwComFile> gwComFiles = gwComFileDao.findList(gwComFileParam);
  169. gwComFiles = convertGwFile(gwComFiles);
  170. tacProvincePblmInfoDingChuan.setGwComFileList(gwComFiles);
  171. }
  172. parameter.put("problemList", tacProvincePblmInfoDingChuans);//获取最后阶段问题数据
  173. if (tacProvincePblmInfos.size() > 0) {
  174. ResponseMessage re = ssoHttpHelper.allMethodDingChuan(parameter, "/api/open/saveInspectRecord", watermanage_access_token, "https://sldc.dcyun.com:38266/supervisepc");
  175. }
  176. }
  177. } catch (Exception ex) {
  178. ex.printStackTrace();
  179. }
  180. }
  181. public String getJcLeader(List<Map<String, Object>> descData) {
  182. List<String> jcLeaderList = descData.stream().filter(x -> "20".equals(MapUtils.getString(x, "ROLE_TYPE")))
  183. .map(x -> formatCheckNull(MapUtils.getString(x, "NAME")))
  184. .distinct().collect(Collectors.toList());
  185. String jcLeader = nameDeal(jcLeaderList);
  186. return jcLeader;
  187. }
  188. public String getJcPers(List<Map<String, Object>> descData) {
  189. List<String> jcExpertsList = descData.stream()
  190. .filter(x -> "11,12,13,14,15,16".contains(formatCheckNull(MapUtils.getString(x, "ROLE_TYPE"))))
  191. .map(x -> formatCheckNull(MapUtils.getString(x, "NAME")))
  192. .distinct()
  193. .collect(Collectors.toList());
  194. String jcExperts = nameDeal(jcExpertsList);
  195. return jcExperts;
  196. }
  197. public static String formatCheckNull(String value) {
  198. if (value == null) {
  199. return "";
  200. }
  201. return value;
  202. }
  203. private String nameDeal(List<String> nameList) {
  204. if (null == nameList || nameList.size() == 0) {
  205. return "";
  206. }
  207. int i = 0;
  208. int jcLeaderListSize = nameList.size();
  209. while (i < jcLeaderListSize) {
  210. if ((i + 1) % 3 == 0 && i + 1 != nameList.size()) {
  211. nameList.set(i, nameList.get(i) + "\n ");
  212. }
  213. i++;
  214. }
  215. return StringUtils.join(nameList, " ");
  216. }
  217. public List<GwComFile> convertGwFile(List<GwComFile> gwComFiles) {
  218. for (GwComFile gwComFile : gwComFiles) {
  219. gwComFile.setFilePath("http://pdc.goldenwater.com.cn" + gwComFile.getFilePath());
  220. }
  221. return gwComFiles;
  222. }
  223. public List<TacProvincePblmInfoDingChuan> convertPblm(List<TacProvincePblmInfo> tacProvincePblmInfos) {
  224. List<TacProvincePblmInfoDingChuan> tacProvincePblmInfoDingChuans = new ArrayList<>();
  225. for (TacProvincePblmInfo tacProvincePblmInfo : tacProvincePblmInfos) {
  226. TacProvincePblmInfoDingChuan tacProvincePblmInfoDingChuan = new TacProvincePblmInfoDingChuan();
  227. tacProvincePblmInfoDingChuan.setId(tacProvincePblmInfo.getId());
  228. tacProvincePblmInfoDingChuan.setProblemName(tacProvincePblmInfo.getPblmNm());
  229. tacProvincePblmInfoDingChuan.setPblmDesc(tacProvincePblmInfo.getPblmDesc());
  230. tacProvincePblmInfoDingChuan.setSubjectNames(tacProvincePblmInfo.getSubjectNames());
  231. tacProvincePblmInfoDingChuan.setPblmPasi(tacProvincePblmInfo.getPblmPasi());
  232. tacProvincePblmInfoDingChuan.setPblmReason(tacProvincePblmInfo.getPblmReason());
  233. tacProvincePblmInfoDingChuan.setPblmSggtn(tacProvincePblmInfo.getPblmSggtn());
  234. tacProvincePblmInfoDingChuan.setSn(tacProvincePblmInfo.getSn());
  235. tacProvincePblmInfoDingChuan.setListType(tacProvincePblmInfo.getListType());
  236. tacProvincePblmInfoDingChuans.add(tacProvincePblmInfoDingChuan);
  237. }
  238. return tacProvincePblmInfoDingChuans;
  239. }
  240. /*@Scheduled(cron = "0 0/10 * * * ? ")
  241. public void sendHisDataScheduled() throws Exception {
  242. if (dingChuanSendData.equals("1")) {
  243. //同步历史数据2020年 全年 所有月份的
  244. for (int i = 1; i < 13; i++) {
  245. sendHisData(2020, i);
  246. }
  247. Date dt = new Date();
  248. //同步2021年数据
  249. for (int i = 1; i < dt.getMonth() + 1; i++) {
  250. sendHisData(2021, i);
  251. logger.info("推送 2021年" + i + "月份 数据");
  252. }
  253. }
  254. }*/
  255. public void sendHisData(Integer year, Integer month) throws Exception {
  256. try {
  257. String watermanage_access_token = ssoHttpHelper.getAccessToken();
  258. //调用接口
  259. Date dt = new Date();
  260. List<WorkInxMonth> workInxMonths = tacAttPawpBaseService.getMonthPro("33", year, month, "330000000000", DateUtils.getTodayYMD());
  261. Map<String, String> parameter = new HashMap<>();//添加参数
  262. parameter.put("appkey", appkey);
  263. String nonce = UuidUtil.genernateNonce(8);
  264. parameter.put("nonce", nonce);
  265. String timestamp = System.currentTimeMillis() + "";
  266. parameter.put("timestamp", timestamp);
  267. String content = "appkey=" + appkey + "&appsecret=" + appsecret + "&nonce=" + nonce + "&timestamp=" + timestamp;
  268. parameter.put("sign", EncryptHelper.sha(content));
  269. parameter.put("inxName", "建设项目稽察");
  270. parameter.put("inxCat", "强监管");
  271. parameter.put("workInxMonthList", JSONArray.fromObject(workInxMonths).toString());
  272. parameter.put("inxType", "1");
  273. parameter.put("inxDes", "建设项目稽察完成情况");
  274. parameter.put("inxUnit", "个");
  275. parameter.put("inxNumDes", "建设项目稽察完成量");
  276. parameter.put("inxDenDes", "建设项目稽察度计划量");
  277. parameter.put("inxStatDes", "建设项目稽察完成量");
  278. parameter.put("inxPctDes", "建设项目稽察完成率");
  279. parameter.put("ordId", "1");
  280. ResponseMessage re = ssoHttpHelper.allMethod(parameter, "/oapi/water-manage-entry/api/wmh/pushWorkIndex", watermanage_access_token);
  281. } catch (Exception ex) {
  282. ex.printStackTrace();
  283. }
  284. }
  285. /**
  286. * @param
  287. * @return java.lang.String
  288. * @Description 同步整体智治平台数据
  289. * @Date 2020/7/14
  290. **/
  291. //@RequestMapping(value = "/sendData", method = RequestMethod.POST)
  292. /*@Scheduled(cron = "0 0 0-4 * * ? ")
  293. public void sendData() throws Exception {
  294. try {
  295. String watermanage_access_token = ssoHttpHelper.getAccessToken();
  296. //调用接口
  297. Date dt = new Date();
  298. List<WorkInxMonth> workInxMonths = tacAttPawpBaseService.getMonthPro("33", DateUtils.getYear(dt), DateUtils.getMonth(dt), "330000000000", DateUtils.getTodayYMD());
  299. Map<String, String> parameter = new HashMap<>();//添加参数
  300. parameter.put("appkey", appkey);
  301. String nonce = UuidUtil.genernateNonce(8);
  302. parameter.put("nonce", nonce);
  303. String timestamp = System.currentTimeMillis() + "";
  304. parameter.put("timestamp", timestamp);
  305. String content = "appkey=" + appkey + "&appsecret=" + appsecret + "&nonce=" + nonce + "&timestamp=" + timestamp;
  306. parameter.put("sign", EncryptHelper.sha(content));
  307. parameter.put("inxCat", "强监管");
  308. parameter.put("inxName", "建设项目稽察");
  309. parameter.put("workInxMonthList", JSONArray.fromObject(workInxMonths).toString());
  310. parameter.put("inxType", "1");
  311. parameter.put("inxDes", "建设项目稽察完成情况");
  312. parameter.put("inxUnit", "个");
  313. parameter.put("inxNumDes", "建设项目稽察完成量");
  314. parameter.put("inxDenDes", "建设项目稽察度计划量");
  315. parameter.put("inxStatDes", "建设项目稽察完成量");
  316. parameter.put("inxPctDes", "建设项目稽察完成率");
  317. parameter.put("ordId", "1");
  318. ResponseMessage re = ssoHttpHelper.allMethod(parameter, "/oapi/water-manage-entry/api/wmh/pushWorkIndex", watermanage_access_token);
  319. } catch (Exception ex) {
  320. ex.printStackTrace();
  321. }
  322. }*/
  323. }