package cn.com.goldenwater.dcproj.controller.sso; import cn.com.goldenwater.core.web.BaseController; import cn.com.goldenwater.core.web.BaseResponse; import cn.com.goldenwater.dcproj.dao.GwComFileDao; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.GwComFileParam; import cn.com.goldenwater.dcproj.param.TacProvincePblmInfoParam; import cn.com.goldenwater.dcproj.param.TacProvincePblmMendInfoParam; import cn.com.goldenwater.dcproj.service.SsoService; import cn.com.goldenwater.dcproj.service.TacAttPawpBaseService; import cn.com.goldenwater.dcproj.service.TacProvincePblmInfoService; import cn.com.goldenwater.dcproj.service.TacProvincePblmMendInfoService; import cn.com.goldenwater.dcproj.util.StringUtil; import cn.com.goldenwater.dcproj.utils.DateUtils; import cn.com.goldenwater.dcproj.utils.http.SsoHttpHelper; import cn.com.goldenwater.id.util.UuidUtil; import com.dcxx.framework.watermanagesdk.model.ResponseMessage; import com.dcxx.framework.watermanagesdk.utils.EncryptHelper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; import net.sf.json.JSONArray; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.*; import java.util.stream.Collectors; @Api(value = "定川数据同步接口", tags = "定川数据同步接口") @RestController @RequestMapping("/ding/chuan") @ComponentScan(basePackages = {"com.dcxx.framework.watermanagesdk.config"}) public class DingChuanController extends BaseController { @Autowired private SsoService ssoService; @Autowired private SsoHttpHelper ssoHttpHelper; @Value("${watermanage.appkey}") private String appkey; @Value("${ding.chuan.send.data}") private String dingChuanSendData; @Value("${watermanage.appsecret}") private String appsecret; private Logger logger = LoggerFactory.getLogger(getClass()); @Value("${watermanage.baseurl}") private String baseurl; @Autowired TacAttPawpBaseService tacAttPawpBaseService; @Autowired TacProvincePblmInfoService tacProvincePblmInfoService; @Autowired GwComFileDao gwComFileDao; @Autowired TacProvincePblmMendInfoService tacProvincePblmMendInfoService; //稽察整改问题反馈 @RequestMapping(value = "/recvPblmMend", method = RequestMethod.POST) public BaseResponse> recvPblmMend(@ApiParam(name = "tacProvincePblmInfoRecvs", value = "tacProvincePblmInfoRecvs", required = true) @RequestBody List tacProvincePblmInfoRecvs) throws Exception { //问题ID是否为空,问题整改状态 for (TacProvincePblmInfoRecv tacProvincePblmInfoRecv : tacProvincePblmInfoRecvs) { //搜索整改表是否加入过这个问题,加入过则更新,如果没有则先插入然后更新。 TacProvincePblmMendInfoParam tacProvincePblmMendInfoParam = new TacProvincePblmMendInfoParam(); tacProvincePblmMendInfoParam.setPblmId(tacProvincePblmInfoRecv.getId()); List tacProvincePblmMendInfos = tacProvincePblmMendInfoService.findList(tacProvincePblmMendInfoParam); TacProvincePblmMendInfo tacProvincePblmMendInfo = new TacProvincePblmMendInfo(); tacProvincePblmMendInfo.setPblmId(tacProvincePblmInfoRecv.getId()); tacProvincePblmMendInfo.setPersNm(tacProvincePblmInfoRecv.getPersName()); tacProvincePblmMendInfo.setCrtInfo(tacProvincePblmInfoRecv.getCrtInfo()); tacProvincePblmMendInfo.setCrtState(tacProvincePblmInfoRecv.getCrtState()); tacProvincePblmMendInfo.setIsStart("1"); tacProvincePblmMendInfo.setIsRect("1"); tacProvincePblmMendInfo.setPblmOut("1"); if (tacProvincePblmMendInfos.size() > 0) { //更新第一个的整改状态 tacProvincePblmMendInfoService.updateByPblmId(tacProvincePblmMendInfo); } else { //补充其他列信息 TacProvincePblmInfo tacProvincePblmInfo = tacProvincePblmInfoService.get(tacProvincePblmInfoRecv.getId()); tacProvincePblmMendInfo.setPblmId(tacProvincePblmInfoRecv.getId()); BeanUtils.copyProperties(tacProvincePblmInfo, tacProvincePblmMendInfo); //插入内容并更新整改状态 tacProvincePblmMendInfoService.insert(tacProvincePblmMendInfo); } //插入附件 for (GwComFile gwComFile : tacProvincePblmInfoRecv.getGwComFiles()) { gwComFile.setBizId(tacProvincePblmInfoRecv.getId()); gwComFile.setId(UuidUtil.uuid()); gwComFile.setCreateDate(new Date()); gwComFileDao.insert(gwComFile); } } return buildSuccessResponse(tacProvincePblmInfoRecvs); } /** * @param * @return java.lang.String * @Description 同步稽察问题数据 * @Date 2020/7/14 **/ //按照工程推送最终阶段历史问题,如果问题没有走到最终阶段则放弃。 @RequestMapping(value = "/sendTacPblm", method = RequestMethod.POST) @Scheduled(cron = "0 0 8 * * ? ") public void sendTacPblm() throws Exception { logger.info("---------------start send Data---------------"); logger.info("--------------------dingChuanSendData:" + dingChuanSendData + "--------------------"); if (dingChuanSendData.equals("1")) { /* logger.info("---------------start send---------------"); sendTacPblmByYear("2020"); logger.info("---------------send 2020 pblm end---------------"); sendTacPblmByYear("2021"); logger.info("---------------send 2021 pblm end ---------------");*/ sendTacPblmByYear("2022"); logger.info("---------------send 2022 pblm end ---------------"); } } public void sendTacPblmByYear(String year) throws Exception { try { List dingChuanTacProjects = tacAttPawpBaseService.getAllPrject(year); for (DingChuanTacProject dingChuanTacProject : dingChuanTacProjects) { String watermanage_access_token = ssoHttpHelper.getAccessTokenDingChuan("988e2fa1f97611eb8ed3005056bb91dd", "113e2fb1f31311"); //调用接口 Date dt = new Date(); Map parameter = new HashMap<>();//添加参数 parameter.put("appkey", appkey); String nonce = UuidUtil.genernateNonce(8); parameter.put("nonce", nonce); String timestamp = System.currentTimeMillis() + ""; parameter.put("timestamp", timestamp); String content = "988e2fa1f97611eb8ed3005056bb91dd" + "113e2fb1f31311" + nonce + timestamp; parameter.put("sign", EncryptHelper.sha(content)); parameter.put("inspectCode", dingChuanTacProject.getInspectCode()); parameter.put("inspectYear", dingChuanTacProject.getInspectYear()); parameter.put("inspectBatch", dingChuanTacProject.getInspectBatch()); parameter.put("inspectGroup", dingChuanTacProject.getInspectGroup()); parameter.put("objectName", dingChuanTacProject.getObjectName()); parameter.put("objectAdcd", dingChuanTacProject.getObjectAdcd()); parameter.put("inspectionDate", dingChuanTacProject.getInspectionDate()); parameter.put("projectOrgName", dingChuanTacProject.getProjectOrgName()); parameter.put("adName", dingChuanTacProject.getAdName()); parameter.put("inspectName", dingChuanTacProject.getInspectName()); parameter.put("objectLocation", dingChuanTacProject.getObjectLocation()); parameter.put("objectTypeName", dingChuanTacProject.getObjectTypeName()); parameter.put("manageUnitName", dingChuanTacProject.getManageUnitName()); parameter.put("suggestion", dingChuanTacProject.getSuggestion()); parameter.put("reformPeriod", dingChuanTacProject.getReformPeriod()); parameter.put("reformPeriodDate", dingChuanTacProject.getReformPeriodDate()); parameter.put("groupLeaderName", getJcLeader(tacAttPawpBaseService.getJcDescData(dingChuanTacProject.getRgstrId()))); parameter.put("groupMember", getJcPers(tacAttPawpBaseService.getJcDescData(dingChuanTacProject.getRgstrId()))); parameter.put("inspectFileUrl", dingChuanTacProject.getInspectFileUrl()); TacProvincePblmInfoParam tacProvincePblmInfoParam = new TacProvincePblmInfoParam(); tacProvincePblmInfoParam.setRgstrId(dingChuanTacProject.getRgstrId()); tacProvincePblmInfoParam.setStepId(dingChuanTacProject.getStepId()); List tacProvincePblmInfos = tacProvincePblmInfoService.findList(tacProvincePblmInfoParam); List tacProvincePblmInfoDingChuans = convertPblm(tacProvincePblmInfos); //获取问题对应附件信息 for (TacProvincePblmInfoDingChuan tacProvincePblmInfoDingChuan : tacProvincePblmInfoDingChuans ) { GwComFileParam gwComFileParam = new GwComFileParam(); gwComFileParam.setBizId(tacProvincePblmInfoDingChuan.getId()); List gwComFiles = gwComFileDao.findList(gwComFileParam); gwComFiles = convertGwFile(gwComFiles); tacProvincePblmInfoDingChuan.setGwComFileList(gwComFiles); } parameter.put("problemList", tacProvincePblmInfoDingChuans);//获取最后阶段问题数据 if (tacProvincePblmInfos.size() > 0) { ResponseMessage re = ssoHttpHelper.allMethodDingChuan(parameter, "/api/open/saveInspectRecord", watermanage_access_token, "https://sldc.dcyun.com:38266/supervisepc"); } } } catch (Exception ex) { ex.printStackTrace(); } } public String getJcLeader(List> descData) { List jcLeaderList = descData.stream().filter(x -> "20".equals(MapUtils.getString(x, "ROLE_TYPE"))) .map(x -> formatCheckNull(MapUtils.getString(x, "NAME"))) .distinct().collect(Collectors.toList()); String jcLeader = nameDeal(jcLeaderList); return jcLeader; } public String getJcPers(List> descData) { List jcExpertsList = descData.stream() .filter(x -> "11,12,13,14,15,16".contains(formatCheckNull(MapUtils.getString(x, "ROLE_TYPE")))) .map(x -> formatCheckNull(MapUtils.getString(x, "NAME"))) .distinct() .collect(Collectors.toList()); String jcExperts = nameDeal(jcExpertsList); return jcExperts; } public static String formatCheckNull(String value) { if (value == null) { return ""; } return value; } private String nameDeal(List nameList) { if (null == nameList || nameList.size() == 0) { return ""; } int i = 0; int jcLeaderListSize = nameList.size(); while (i < jcLeaderListSize) { if ((i + 1) % 3 == 0 && i + 1 != nameList.size()) { nameList.set(i, nameList.get(i) + "\n "); } i++; } return StringUtils.join(nameList, " "); } public List convertGwFile(List gwComFiles) { for (GwComFile gwComFile : gwComFiles) { gwComFile.setFilePath("http://pdc.goldenwater.com.cn" + gwComFile.getFilePath()); } return gwComFiles; } public List convertPblm(List tacProvincePblmInfos) { List tacProvincePblmInfoDingChuans = new ArrayList<>(); for (TacProvincePblmInfo tacProvincePblmInfo : tacProvincePblmInfos) { TacProvincePblmInfoDingChuan tacProvincePblmInfoDingChuan = new TacProvincePblmInfoDingChuan(); tacProvincePblmInfoDingChuan.setId(tacProvincePblmInfo.getId()); tacProvincePblmInfoDingChuan.setProblemName(tacProvincePblmInfo.getPblmNm()); tacProvincePblmInfoDingChuan.setPblmDesc(tacProvincePblmInfo.getPblmDesc()); tacProvincePblmInfoDingChuan.setSubjectNames(tacProvincePblmInfo.getSubjectNames()); tacProvincePblmInfoDingChuan.setPblmPasi(tacProvincePblmInfo.getPblmPasi()); tacProvincePblmInfoDingChuan.setPblmReason(tacProvincePblmInfo.getPblmReason()); tacProvincePblmInfoDingChuan.setPblmSggtn(tacProvincePblmInfo.getPblmSggtn()); tacProvincePblmInfoDingChuan.setSn(tacProvincePblmInfo.getSn()); tacProvincePblmInfoDingChuan.setListType(tacProvincePblmInfo.getListType()); tacProvincePblmInfoDingChuans.add(tacProvincePblmInfoDingChuan); } return tacProvincePblmInfoDingChuans; } /*@Scheduled(cron = "0 0/10 * * * ? ") public void sendHisDataScheduled() throws Exception { if (dingChuanSendData.equals("1")) { //同步历史数据2020年 全年 所有月份的 for (int i = 1; i < 13; i++) { sendHisData(2020, i); } Date dt = new Date(); //同步2021年数据 for (int i = 1; i < dt.getMonth() + 1; i++) { sendHisData(2021, i); logger.info("推送 2021年" + i + "月份 数据"); } } }*/ public void sendHisData(Integer year, Integer month) throws Exception { try { String watermanage_access_token = ssoHttpHelper.getAccessToken(); //调用接口 Date dt = new Date(); List workInxMonths = tacAttPawpBaseService.getMonthPro("33", year, month, "330000000000", DateUtils.getTodayYMD()); Map parameter = new HashMap<>();//添加参数 parameter.put("appkey", appkey); String nonce = UuidUtil.genernateNonce(8); parameter.put("nonce", nonce); String timestamp = System.currentTimeMillis() + ""; parameter.put("timestamp", timestamp); String content = "appkey=" + appkey + "&appsecret=" + appsecret + "&nonce=" + nonce + "×tamp=" + timestamp; parameter.put("sign", EncryptHelper.sha(content)); parameter.put("inxName", "建设项目稽察"); parameter.put("inxCat", "强监管"); parameter.put("workInxMonthList", JSONArray.fromObject(workInxMonths).toString()); parameter.put("inxType", "1"); parameter.put("inxDes", "建设项目稽察完成情况"); parameter.put("inxUnit", "个"); parameter.put("inxNumDes", "建设项目稽察完成量"); parameter.put("inxDenDes", "建设项目稽察度计划量"); parameter.put("inxStatDes", "建设项目稽察完成量"); parameter.put("inxPctDes", "建设项目稽察完成率"); parameter.put("ordId", "1"); ResponseMessage re = ssoHttpHelper.allMethod(parameter, "/oapi/water-manage-entry/api/wmh/pushWorkIndex", watermanage_access_token); } catch (Exception ex) { ex.printStackTrace(); } } /** * @param * @return java.lang.String * @Description 同步整体智治平台数据 * @Date 2020/7/14 **/ //@RequestMapping(value = "/sendData", method = RequestMethod.POST) /*@Scheduled(cron = "0 0 0-4 * * ? ") public void sendData() throws Exception { try { String watermanage_access_token = ssoHttpHelper.getAccessToken(); //调用接口 Date dt = new Date(); List workInxMonths = tacAttPawpBaseService.getMonthPro("33", DateUtils.getYear(dt), DateUtils.getMonth(dt), "330000000000", DateUtils.getTodayYMD()); Map parameter = new HashMap<>();//添加参数 parameter.put("appkey", appkey); String nonce = UuidUtil.genernateNonce(8); parameter.put("nonce", nonce); String timestamp = System.currentTimeMillis() + ""; parameter.put("timestamp", timestamp); String content = "appkey=" + appkey + "&appsecret=" + appsecret + "&nonce=" + nonce + "×tamp=" + timestamp; parameter.put("sign", EncryptHelper.sha(content)); parameter.put("inxCat", "强监管"); parameter.put("inxName", "建设项目稽察"); parameter.put("workInxMonthList", JSONArray.fromObject(workInxMonths).toString()); parameter.put("inxType", "1"); parameter.put("inxDes", "建设项目稽察完成情况"); parameter.put("inxUnit", "个"); parameter.put("inxNumDes", "建设项目稽察完成量"); parameter.put("inxDenDes", "建设项目稽察度计划量"); parameter.put("inxStatDes", "建设项目稽察完成量"); parameter.put("inxPctDes", "建设项目稽察完成率"); parameter.put("ordId", "1"); ResponseMessage re = ssoHttpHelper.allMethod(parameter, "/oapi/water-manage-entry/api/wmh/pushWorkIndex", watermanage_access_token); } catch (Exception ex) { ex.printStackTrace(); } }*/ }