dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/service/AiCaseClassService.java
@@ -465,7 +465,7 @@ if (riskResult != null && riskResult.getIsRiskAi() != null) { try { int riskLevel = Integer.parseInt(riskResult.getIsRiskAi()); if (riskLevel > 3) { if (riskLevel > 4) { CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold(); caseInfoUnfold.setIsRisk(IS_RISK_STATUS_1); Map<String, Object> caseInfoUnfoldTerms = new HashMap<>(); dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/controller/AnalysisWebController.java
@@ -13,6 +13,7 @@ import cn.huge.module.cust.dto.CtUserDTO; import com.google.common.collect.Maps; import dm.jdbc.util.StringUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -22,10 +23,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; /** @@ -573,12 +571,32 @@ terms.put("caseStatus", caseStatus); } if(StringUtils.isNotBlank(regionCode) && StringUtils.isNotBlank(regionName)){ if(regionName.matches(".*市")){ terms.put("queCity", regionCode); if(regionName.matches(".*社区") || regionName.matches(".*村")){ terms.put("queVillage", regionCode); }else if(regionName.matches(".*街道") || regionName.matches(".*街") || regionName.matches(".*镇")){ terms.put("queRoad", regionCode); }else if(regionName.matches(".*区")){ terms.put("queArea", regionCode); }else if(regionName.contains("街道") || regionName.matches(".*街") || regionName.matches(".*镇")){ terms.put("queRoad", regionCode); }else if(regionName.matches(".*市")){ terms.put("queCity", regionCode); }else if(regionName.matches("本级")){ //把regionCode根据#分割成数组 String[] regionCodeArr = regionCode.split("#"); if(CollectionUtils.isNotEmpty(Arrays.asList(regionCodeArr))){ terms.put(regionCodeArr[0], regionCodeArr[1]); if(StringUtils.isNotBlank(regionName)){ if(terms.containsKey("queRoad")){ terms.put("unitGrade", "3"); }else if(terms.containsKey("queArea")){ terms.put("unitGrade", "2"); }else if(terms.containsKey("queCity")){ terms.put("unitGrade", "1"); } } } } } Sort sort = Sort.by(Sort.Direction.DESC, "t3.create_time"); dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/dao/mapper/xml/AnalysisMapper.xml
@@ -1368,6 +1368,10 @@ level = 3 and parent_id = #{terms.queArea} </if> <if test="terms.queRoad != null and terms.queRoad !=''"> level = 4 and parent_id = #{terms.queRoad} </if> ORDER BY level ASC,create_time ASC </select> @@ -1451,6 +1455,9 @@ and t4.handle_result = 3 and t4.node_id in ('ZJ_DFP', 'QJ_DFP', 'SJ_DFP', 'DFP', 'QJ_DSL', 'SJ_DSL', 'DSL', 'ZJ_DSL') </if> <if test="terms.unitGrade != null and terms.unitGrade !=''"> and t1.unit_grade = #{terms.unitGrade} </if> <include refid="statisticsCirculation-wherePart"/> </select> @@ -1497,6 +1504,9 @@ and t4.handle_result = 3 and t4.node_id in ('ZJ_DFP', 'QJ_DFP', 'SJ_DFP', 'DFP', 'QJ_DSL', 'SJ_DSL', 'DSL', 'ZJ_DSL') </if> <if test="terms.unitGrade != null and terms.unitGrade !=''"> and t1.unit_grade = #{terms.unitGrade} </if> <include refid="statisticsCirculation-wherePart"/> <if test="page.sort != null"> <foreach collection="page.sort" item="s" index="index" separator="," open="order by "> dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java
@@ -927,6 +927,17 @@ statisticsCirculationDTO.setLzl(Double.parseDouble(df.format(lzl))); statisticsCirculationDTO.setLzz((int) lzz); BeanUtils.copyProperties(statisticsCirculationDTO, statisticsCirculationDTONew); if("本级".equals(region)){ if(terms.containsKey("queRoad")){ statisticsCirculationDTO.setGroupCode("queRoad#"+terms.get("queRoad").toString()); }else if(terms.containsKey("queArea")){ statisticsCirculationDTO.setGroupCode("queArea#"+terms.get("queArea").toString()); }else if(terms.containsKey("queCity")){ statisticsCirculationDTO.setGroupCode("queCity#"+terms.get("queCity").toString()); }else if(terms.containsKey("queProv")){ statisticsCirculationDTO.setGroupCode("queProv"+terms.get("queProv").toString()); } } } } statisticsCirculationDTONew.setGroupName(region); @@ -949,6 +960,17 @@ double lzl = (lzz + lzsl) / zdj * 100; statisticsCirculationDTO.setLzl(Double.parseDouble(df.format(lzl))); statisticsCirculationDTO.setLzz((int) lzz); if("本级".equals(region)){ if(terms.containsKey("queRoad")){ statisticsCirculationDTO.setGroupCode("queRoad#"+terms.get("queRoad").toString()); }else if(terms.containsKey("queArea")){ statisticsCirculationDTO.setGroupCode("queArea#"+terms.get("queArea").toString()); }else if(terms.containsKey("queCity")){ statisticsCirculationDTO.setGroupCode("queCity#"+terms.get("queCity").toString()); }else if(terms.containsKey("queProv")){ statisticsCirculationDTO.setGroupCode("queProv#"+terms.get("queProv").toString()); } } } } if (flag) { dyh-service/dyh-mediate/src/main/java/cn/huge/module/casebook/service/CasebookInfoService.java
@@ -1663,7 +1663,7 @@ generateQrCodeRequestVo.setGridCode(area); caseInfo.setCaseRef(sysClient.getCaseRefByGenerateQrCode(generateQrCodeRequestVo)); // 生成调解案号 caseInfo.setCaseNo(utilsClient.createCaseNo(ctUnitDTO.getArea())); // caseInfo.setCaseNo(utilsClient.createCaseNo(ctUnitDTO.getArea())); caseInfo.setCreateTime(nowDate); caseInfo.setUpdateTime(nowDate); if (caseInfo.getCanal().equals(CaseBaseConstsEnum.CASE_CANAL_3.getIndex())) { dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/vo/SaveEventFeedBackVo.java
New file @@ -0,0 +1,74 @@ package cn.huge.module.cases.domain.vo; import cn.huge.module.sys.dto.FileInfoBaseDTO; import lombok.Data; import java.util.List; /** * @ClassName SaveEventFeedBackVo * @Description 同步办理反馈接口入参 * @Author 文锦钊 * @Date 2025/7/3 10:48 **/ @Data public class SaveEventFeedBackVo { /** * 反馈记录id,36位,建议用uuid (必填) */ private String id; /** * 事件工单id (必填) */ private String code; /** * 反馈用户部门名称 (必填) */ private String appOrgName; /** * 反馈用户名称 (必填) */ private String appUserName; /** * 反馈用户部门id (必填) */ private String appOrgId; /** * 反馈用户id (必填) */ private String appUserId; /** * 反馈时间,格式yyyy-MM-dd HH:mm:ss (必填) * 示例:2022-05-20 15:11:21 */ private String appTime; /** * 反馈意见 (必填) */ private String approveContent; /** * 环节处理期限,格式yyyy-MM-dd HH:mm:ss (必填) * 示例:2022-05-20 15:11:21 */ private String processingTime; /** * 环节处理类型 (选填) */ private String handleType; /** * 附件文件列表 */ private List<FileInfoBaseDTO> fileInfoList; } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java
@@ -1,12 +1,16 @@ package cn.huge.module.cases.service; import java.util.ArrayList; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.base.common.utils.ThreadPoolUtils; import cn.huge.module.cases.consts.CaseTaskConsts; import cn.huge.module.cases.domain.dto.FileRelateDTO; import cn.huge.module.cases.domain.dto.MediatorDTO; import cn.huge.module.cases.domain.po.*; import cn.huge.module.cases.domain.vo.SaveEventFeedBackVo; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; @@ -14,15 +18,19 @@ import cn.huge.module.cust.dto.CtUnitDTO; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.mediate.constant.CaseBaseConsts; import cn.huge.module.mediate.constant.CaseBaseConstsEnum; import cn.huge.module.sys.constant.FileOwnerTypeBaseEnum; import cn.huge.module.sys.dto.FileIdInfoBaseDTO; import cn.huge.module.sys.dto.FileInfoBaseDTO; import cn.huge.module.sys.dto.FileTypeInfoBaseDTO; import cn.huge.module.utils.TimeUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Maps; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -32,6 +40,8 @@ import javax.print.DocFlavor; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -73,6 +83,10 @@ @Autowired private CaseMediatorService caseMediatorService; @Autowired private CaseInfoService caseInfoService; /** * 更新对象 @@ -165,10 +179,95 @@ } caseFeedback.setUpdateTime(nowDate); this.saveOrUpdate(caseFeedback); // 异步同步纠纷办理反馈信息 asyncSaveEventFeedback(caseFeedback, userId); } catch (Exception e) { log.error("[caseFeedbackService.savecaseFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.savecaseFeedback", e); } } /** * 异步保存办理反馈信息 * * @param caseFeedback * @param userId */ private void asyncSaveEventFeedback(CaseFeedback caseFeedback, String userId) { log.info("同步办理反馈信息开始!!"); String caseId = caseFeedback.getCaseId(); CaseInfo caseInfo = caseInfoService.getById(caseId); String canalSecond = caseInfo.getCanalSecond(); // 需要同步的渠道类型 List<String> needSyncTypeList = new ArrayList<>(); needSyncTypeList.add(CaseBaseConstsEnum.CASE_CANAL_SECOND_1.getIndex()); needSyncTypeList.add(CaseBaseConstsEnum.CASE_CANAL_SECOND_2.getIndex()); needSyncTypeList.add(CaseBaseConstsEnum.CASE_CANAL_SECOND_7.getIndex()); if (!needSyncTypeList.contains(canalSecond)) { log.info("当前来源的事项不需要同步,来源为:" + CaseBaseConstsEnum.getDes(canalSecond)); return ; } // 使用completableFuture进行异步处理,使用jdk8的forkjoinPool线程池 CompletableFuture<Object> future = CompletableFuture.supplyAsync(() -> { log.info("异步保存办理反馈信息开始"); // 保存办理反馈信息后需要同步到大平台中 String code = caseInfo.getCaseRef(); // 反馈用户信息 CtUserDTO ctUserDTO = custClient.clientGetUser(userId); CtUnitDTO ctUnitDTO = custClient.getUnitById(ctUserDTO.getUnitId()); // 反馈意见内容 String handleContent = caseFeedback.getHandleContent(); // 反馈时间 Date now = new Date(); String appTime = TimeUtils.format(now,TimeUtils.STANDARD_PATTERN); String processingTime = TimeUtils.format(TimeUtils.after(now,14),TimeUtils.STANDARD_PATTERN); // 构建参数 SaveEventFeedBackVo saveEventFeedBackVo = new SaveEventFeedBackVo(); saveEventFeedBackVo.setId(caseFeedback.getId()); saveEventFeedBackVo.setCode(code); // 先传递当前子系统的用户id saveEventFeedBackVo.setAppUserId(userId); saveEventFeedBackVo.setAppUserName(ctUserDTO.getTrueName()); saveEventFeedBackVo.setAppOrgId(ctUnitDTO.getId()); saveEventFeedBackVo.setAppOrgName(ctUnitDTO.getUnitName()); saveEventFeedBackVo.setAppTime(appTime); saveEventFeedBackVo.setApproveContent(handleContent); saveEventFeedBackVo.setProcessingTime(processingTime); saveEventFeedBackVo.setHandleType(""); // 附件信息 // 先获取文件关联表信息 List<FileRelateDTO> fileRelateDTOS = sysClient.listFileRelateByOwnerId(caseFeedback.getId()); List<FileInfoBaseDTO> fileInfoBaseDTOS = new ArrayList<>(); if (CollectionUtils.isNotEmpty(fileRelateDTOS)){ fileInfoBaseDTOS = fileRelateDTOS.stream() .map(o->{ FileInfoBaseDTO fileInfoBaseDTO = new FileInfoBaseDTO(); fileInfoBaseDTO.setId(o.getFileId()); return fileInfoBaseDTO; }).collect(Collectors.toList()); } saveEventFeedBackVo.setFileInfoList(fileInfoBaseDTOS); // 发起同步 sysClient.saveEventFeedback(saveEventFeedBackVo); log.info("异步保存办理反馈信息成功!!"); return null; }); } /** @@ -333,6 +432,8 @@ caseFeedback.setHandleType(CaseTaskConsts.HANDLE_TYPE_2); } this.save(caseFeedback); // 异步同步纠纷办理反馈信息 asyncSaveEventFeedback(caseFeedback, userId); } catch (Exception e) { log.error("[caseFeedbackService.savecaseFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.savecaseFeedback", e); dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -1540,30 +1540,23 @@ sortType(caseStatisticsTypeDTOS); } Integer typeTotalNum = 0; Integer otherCaseNum = 0; int i = 1; List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) { typeList.add(caseStatisticsTypeDTO); i++; } else { otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); } } for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); } if (otherCaseNum > 0) { CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); caseStatisticsTypeDTO.setCaseTypeName("其他"); caseStatisticsTypeDTO.setCaseNum(otherCaseNum); caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); typeList.add(caseStatisticsTypeDTO); caseStatisticsBaseDTO.setTypeList(typeList); } } for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); } // if (otherCaseNum > 0) { // CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); // caseStatisticsTypeDTO.setCaseTypeName("其他"); // caseStatisticsTypeDTO.setCaseNum(otherCaseNum); // caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); // typeList.add(caseStatisticsTypeDTO); // caseStatisticsBaseDTO.setTypeList(typeList); // } caseStatisticsBaseDTO.setTypeList(caseStatisticsTypeDTOS); //事项来源 terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_1.getIndex()); CaseStatisticsSourceDTO oneSource = mapper.statisticsSource(terms); @@ -2439,29 +2432,25 @@ sortType(caseStatisticsTypeDTOS); } Integer typeTotalNum = 0; Integer otherCaseNum = 0; int i = 1; List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); // Integer otherCaseNum = 0; // int i = 1; // List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) { typeList.add(caseStatisticsTypeDTO); i++; } else { otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); } } for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); } if (otherCaseNum > 0) { CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); caseStatisticsTypeDTO.setCaseTypeName("其他"); caseStatisticsTypeDTO.setCaseNum(otherCaseNum); caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); typeList.add(caseStatisticsTypeDTO); caseStatisticsBaseDTO.setTypeList(typeList); } // if (otherCaseNum > 0) { // CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); // caseStatisticsTypeDTO.setCaseTypeName("其他"); // caseStatisticsTypeDTO.setCaseNum(otherCaseNum); // caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); // typeList.add(caseStatisticsTypeDTO); // caseStatisticsBaseDTO.setTypeList(typeList); // } caseStatisticsBaseDTO.setTypeList(caseStatisticsTypeDTOS); } List<QueAreaDTO> queArea = listAreaByType(areaCode); dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
@@ -846,7 +846,7 @@ || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex()) || caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex())) { webCaseFlowDTO.setStatusName("待受理"); webCaseFlowDTO.setStatusName("待分派"); } // 受理节点 if (caseTask.getNodeId().equals(FlowNodeEnum.FLOW_NODE_DSL.getIndex()) dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java
@@ -4,6 +4,7 @@ import cn.huge.base.common.bo.ReturnBO; import cn.huge.module.cases.domain.dto.GridApprovalRecordDTO; import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo; import cn.huge.module.cases.domain.vo.SaveEventFeedBackVo; import cn.huge.module.sys.vo.*; import cn.huge.module.sys.dto.*; import cn.huge.module.cases.domain.dto.FileRelateDTO; @@ -205,4 +206,14 @@ */ @GetMapping("/api/citizen/event/getCaseRefByGenerateQrCode") ReturnBO getCaseRefByGenerateQrCode(@RequestBody GenerateQrCodeRequestVo generateQrCodeRequestVo); /** * 同步办理反馈信息 * * @param saveEventFeedBackVo * @return Object * @url {ctx}/api/web/gridEvent/saveEventFeedback */ @PostMapping("/api/web/gridEvent/saveEventFeedback") ReturnBO saveEventFeedback(@RequestBody SaveEventFeedBackVo saveEventFeedBackVo); } dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java
@@ -10,6 +10,7 @@ import cn.huge.module.cases.domain.dto.GridApprovalRecordDTO; import cn.huge.module.cases.domain.dto.GridEventDTO; import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo; import cn.huge.module.cases.domain.vo.SaveEventFeedBackVo; import cn.huge.module.sy.service.SyHolidayService; import cn.huge.module.syncbydyh.domain.po.SyCause; import cn.huge.module.sys.vo.*; @@ -569,4 +570,27 @@ throw new ServiceException("SysClientImpl.getCaseRefByGenerateQrCode", e); } } /** * 同步办理反馈信息 * * @param vo 同步办理反馈信息的入参 * @return * @url {ctx}/api/client/event/generateQrCode */ public String saveEventFeedback(SaveEventFeedBackVo vo){ try{ ReturnBO returnBo = sysClient.saveEventFeedback(vo); if (ReturnConsts.OK == returnBo.getCode()){ String id = (String) returnBo.getData(); return id; }else{ log.error("Client外服务接口[SysClientImpl.saveEventFeedback]请求异常:" + returnBo.getMsg(), returnBo.getMsg()); throw new ClientException("SysClientImpl.saveEventFeedback", returnBo.getMsg()); } }catch (Exception e){ log.error("service方法[SysClientImpl.saveEventFeedback]请求成功,处理异常:"+e, e); throw new ServiceException("SysClientImpl.saveEventFeedback", e); } } } dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/web/GridEventWebController.java
@@ -508,4 +508,14 @@ } return ReturnSucUtils.getRepInfo(); } /** * 同步办理反馈接口信息 * @param saveEventFeedBackVo * @return */ @PostMapping("/saveEventFeedback") public R<Object> saveEventFeedback(@RequestBody SaveEventFeedBackVo saveEventFeedBackVo) { return service.saveEventFeedback(saveEventFeedBackVo); } } dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/SaveEventFeedBackVo.java
New file @@ -0,0 +1,79 @@ package cn.huge.module.grid.domain.vo; import cn.huge.module.sys.dto.FileInfoBaseDTO; import lombok.Data; import java.util.List; /** * @ClassName SaveEventFeedBackVo * @Description 同步办理反馈接口入参 * @Author 文锦钊 * @Date 2025/7/3 10:48 **/ @Data public class SaveEventFeedBackVo { /** * 反馈记录id,36位,建议用uuid (必填) */ private String id; /** * 事件工单id (必填) */ private String code; /** * 反馈用户部门名称 (必填) */ private String appOrgName; /** * 反馈用户名称 (必填) */ private String appUserName; /** * 反馈用户部门id (必填) */ private String appOrgId; /** * 反馈用户id (必填) */ private String appUserId; /** * 反馈时间,格式yyyy-MM-dd HH:mm:ss (必填) * 示例:2022-05-20 15:11:21 */ private String appTime; /** * 反馈意见 (必填) */ private String approveContent; /** * 环节处理期限,格式yyyy-MM-dd HH:mm:ss (必填) * 示例:2022-05-20 15:11:21 */ private String processingTime; /** * 环节处理类型 (选填) */ private String handleType; /** * 反馈附件列表 (选填) */ private List<GridFileRelatedVo> feedbackAttrInfos; /** * 原子系统的反馈附件列表 (选填) */ private List<FileInfoBaseDTO> fileInfoList; } dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridEventService.java
@@ -1,26 +1,38 @@ package cn.huge.module.grid.service; import cn.huge.base.common.bo.R; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.HttpClientUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.file.domain.po.FileInfo; import cn.huge.module.file.service.FileInfoService; import cn.huge.module.grid.dao.mapper.GridEventMapper; import cn.huge.module.grid.domain.dto.GridFileUploadDTO; import cn.huge.module.grid.domain.dto.GridOrgDTO; import cn.huge.module.grid.domain.po.GridEvent; import cn.huge.module.grid.domain.vo.*; import cn.huge.module.sys.dto.FileInfoBaseDTO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.ibatis.annotations.Param; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.PostConstruct; import java.util.Date; import java.util.List; import java.util.Map; import java.util.*; /** * @author wangwh @@ -40,6 +52,42 @@ @Autowired private UtilsClientImpl utilsClient; @Autowired private GridCaseTaskService gridCaseTaskService; @Autowired private GridCaseDataService gridCaseDataService; @Autowired private GridUserService gridUserService; @Autowired private CustClientImpl custClient; @Autowired private FileInfoService fileInfoService; @Value("${grid.url:http://219.137.166.84:8061}") private String gridUrl; @Value("${grid.username:mtxt0011}") private String userName; @Value("${grid.password}") private String passWord; @Value("${grid.secret:BZb2hLCx05}") private String secret; @Value("${grid.passid:b08c0ec0-772d-caf8-5c9b-1f7d86295a95}") private String passid; public HashMap<String,String> initHeadVo() { long timestamp = System.currentTimeMillis()/1000; HashMap<String,String> headVo = new HashMap<>(); headVo.put("x-rio-paasid",passid); headVo.put("x-rio-timestamp",timestamp+""); headVo.put("x-rio-nonce","mt"); headVo.put("x-rio-signature", DigestUtils.sha256Hex(timestamp+secret+"mt"+timestamp)); return headVo; } /** * 更新对象 @@ -141,4 +189,127 @@ public GridEvent getEventByCaseId(String caseId) { return mapper.getEventByCaseId(caseId); } /** * 同步矛纠工单的办理反馈信息 * * @param saveEventFeedBackVo * @return */ public R<Object> saveEventFeedback(SaveEventFeedBackVo saveEventFeedBackVo) { HashMap<String,String> headVo= initHeadVo(); try{ // 传递过来的是子平台的id,需要转换为大平台的id String appOrgId = saveEventFeedBackVo.getAppOrgId(); String appGridUnitId = null; if (StringUtils.isNotBlank(appOrgId)) { appGridUnitId = gridCaseTaskService.getGridUnitIdByUnitId(saveEventFeedBackVo.getAppOrgId()); saveEventFeedBackVo.setAppOrgId(appGridUnitId); if (StringUtils.isBlank(appGridUnitId)) { throw new Exception("矛纠工单的办理反馈信息的组织不存在"); } } // else { // saveEventFeedBackVo.setAppOrgId(gridEvent.getSysOrgId()); // saveEventFeedBackVo.setAppOrgName(gridEvent.getSysOrgName()); // } log.info("当前环节组织:" + saveEventFeedBackVo.getAppOrgId()); if (StringUtils.isNotBlank(saveEventFeedBackVo.getAppUserId())) { CtUserDTO ctUserDTO = custClient.clientGetUserAll(saveEventFeedBackVo.getAppUserId()); if (ObjectUtils.isNotEmpty(ctUserDTO)) { if (StringUtils.isNotBlank(ctUserDTO.getIdcard())) { GridUserIdNumberVo gridUserIdNumberVo = new GridUserIdNumberVo(); gridUserIdNumberVo.setIdNumber(ctUserDTO.getIdcard()); R<GridUserVo> result = gridUserService.getUserByIdNumber(gridUserIdNumberVo); if (R.SUCCESS == result.getCode()) { saveEventFeedBackVo.setAppUserId(result.getData().getId()); log.info("当前环节审批用户为: " + saveEventFeedBackVo.getAppUserId()); } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,身份证找不到用户{},{}", ctUserDTO.getIdcard(), ctUserDTO.getTrueName()); } } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}", saveEventFeedBackVo.getAppUserId()); } } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}", saveEventFeedBackVo.getAppUserId()); } } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("矛纠工单的办理反馈信息的用户为特殊用户"); } // 判断附件不为空 List<FileInfoBaseDTO> fileInfoList = saveEventFeedBackVo.getFileInfoList(); if (!CollectionUtils.isEmpty(fileInfoList)){ List<GridFileRelatedVo> feedbackAttrInfos = new ArrayList<>(); log.info("获取到矛纠工单的办理反馈信息的附件上传:" + fileInfoList.size()); for (FileInfoBaseDTO fileInfoBaseDTO : fileInfoList) { try { GridFileUploadVo gridFileUploadVo = new GridFileUploadVo(); // 通过id获取文件信息 FileInfo fileInfo = fileInfoService.getById(fileInfoBaseDTO.getId()); gridFileUploadVo.setFileName(fileInfo.getFileName()); gridFileUploadVo.setFilePath(fileInfo.getFullPath()); gridFileUploadVo.setFileSize(fileInfo.getSize() != null ? fileInfo.getSize().longValue() : 0L); gridFileUploadVo.setType(fileInfo.getSuffix()); R<GridFileUploadDTO> result = null; //上传附件信息 result = gridCaseDataService.uploadFileInfo(gridFileUploadVo); if (R.SUCCESS == result.getCode()) { //获取上传结果,组成新的附件对象 GridFileUploadDTO gridFileUploadDTO = result.getData(); GridFileRelatedVo gridFileRelatedVo = new GridFileRelatedVo(); gridFileRelatedVo.setFileName(gridFileUploadDTO.getFileName()); gridFileRelatedVo.setFilePath(gridFileUploadDTO.getFilePath()); gridFileRelatedVo.setOriginalFileName(gridFileUploadDTO.getOriginalFileName()); gridFileRelatedVo.setFileSize(gridFileUploadDTO.getFileSize()); gridFileRelatedVo.setType("add"); gridFileRelatedVo.setFileType(gridFileUploadDTO.getFileType()); feedbackAttrInfos.add(gridFileRelatedVo); } } catch (Exception e) { e.printStackTrace(); log.info("附件上传失败:" + fileInfoBaseDTO.getId()); } } // 上传完成后设置原附件列表为空 saveEventFeedBackVo.setFileInfoList(null); } // 发起请求 log.info("办理反馈信息-xsd:{}", JSON.toJSONString(saveEventFeedBackVo)); log.info("办理反馈信息-xsd:{}", gridUrl + "/standard/eventform/saveFeedback"); String s = null; try { s = HttpClientUtils.httpPostRaw(gridUrl + "/standard/eventform/saveFeedback", JSON.toJSONString(saveEventFeedBackVo), headVo, "utf-8"); } catch (Exception e) { log.info("xsderror:{}", e); throw new RuntimeException(e); } log.info("xsd:{}", s); // JSONObject object = JSONObject.parseObject(s); if (object.getInteger("code") != null && object.getInteger("code") == 0) { log.info("同步矛纠工单的办理反馈信息成功!"); Object data = object.get("data"); return R.ok(data); } else { log.info("同步矛纠工单的办理反馈信息失败,错误原因:" + object.getString("message")); return R.fail("同步矛纠工单的办理反馈信息失败"); } }catch (Exception e){ log.error("同步矛纠工单的办理反馈信息报错",e); } return R.fail("同步矛纠工单的办理反馈信息失败"); } } dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java
@@ -449,7 +449,7 @@ } } } else if (unitGrade.equals(3)) { SyRegion roadSyRegion = mapper.selectById(ctUnitDTO.getArea()); SyRegion roadSyRegion = mapper.selectById(ctUnitDTO.getRoad()); AreaBO roadaBO = new AreaBO(); roadaBO.setParentId("root"); roadaBO.setLabel(roadSyRegion.getName()); dyh-service/dyh-sys/src/main/resources/config/application.yml
@@ -16,6 +16,8 @@ main: #可以重复命名配置 allow-bean-definition-overriding: true # 处理循环引用 allow-circular-references: true #server配置 server: sql/20250704.sql
New file @@ -0,0 +1,75 @@ update "dyh_th_third_cause" set cause_code = '24_02-46' where case_code ='24_02-51'; update "dyh_th_third_cause" set cause_code = '24_02-9' where case_code = '24_02-52'; update "dyh_th_third_cause" set cause_code = '24_02-9' where case_code = '24_02-56'; update "dyh_th_third_cause" set cause_code = '24_02-5' where case_code = '24_02-67'; update "dyh_th_third_cause" set cause_code = '24_02-25' where case_code ='24_02-70'; update "dyh_th_third_cause" set cause_code = '24_02-5' where case_code = '24_02-71'; update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-59'; update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-69'; update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-62'; update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-60'; update "dyh_case_info" set case_type_first = '24_01-4' ,case_type_first_name='交通运输' where case_type='24_02-58'; update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-65'; update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-64'; update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-68'; update "dyh_case_info" set case_type_first = '24_01-7' ,case_type_first_name='房屋规划' where case_type='24_02-66'; update "dyh_case_info" set case_type_first = '24_01-9' ,case_type_first_name='民事经济纠纷' where case_type='24_02-57'; update "dyh_case_info" set case_type_first = '24_01-9' ,case_type_first_name='民事经济纠纷' where case_type='24_02-61'; update "dyh_case_info" set case_type_first = '24_01-9' ,case_type_first_name='民事经济纠纷' where case_type='24_02-63'; update "dyh_case_info" set case_type = '24_02-46',case_type_name='租赁纠纷' where case_type='24_02-51'; update "dyh_case_info" set case_type = '24_02-9' ,case_type_name='拖欠、克扣工资' where case_type='24_02-52'; update "dyh_case_info" set case_type = '24_02-9' ,case_type_name='拖欠、克扣工资' where case_type='24_02-56'; update "dyh_case_info" set case_type = '24_02-5' ,case_type_name='网购及其他消费纠纷' where case_type='24_02-67'; update "dyh_case_info" set case_type = '24_02-25',case_type_name='噪声、气味、污水等环境问题' where case_type='24_02-70'; update "dyh_case_info" set case_type = '24_02-5' ,case_type_name='网购及其他消费纠纷' where case_type='24_02-71'; insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-73','债务纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null); insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-74','涉退役军人纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null); insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-75','涉行政争议纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null); insert into "HUGETEST"."dyh_sy_cause"("id", "name", "level", "parent_id", "issue_id", "create_time", "update_time", "icon") VALUES('24_02-76','涉法涉诉纠纷','2','24_01-11',null,'2025-07-04','2025-07-04',null); delete from dyh_sy_cause where id ='24_02-51'; delete from dyh_sy_cause where id = '24_02-52'; delete from dyh_sy_cause where id = '24_02-56'; delete from dyh_sy_cause where id = '24_02-67'; delete from dyh_sy_cause where id ='24_02-70'; delete from dyh_sy_cause where id = '24_02-71'; update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-59'; update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-69'; update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-62'; update "dyh_sy_cause" set parent_id = '24_01-1' where id='24_02-60'; update "dyh_sy_cause" set parent_id = '24_01-4' where id='24_02-58'; update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-65'; update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-64'; update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-68'; update "dyh_sy_cause" set parent_id = '24_01-7' where id='24_02-66'; update "dyh_sy_cause" set parent_id = '24_01-9' where id='24_02-57'; update "dyh_sy_cause" set parent_id = '24_01-9' where id='24_02-61'; update "dyh_sy_cause" set parent_id = '24_01-9' where id='24_02-63'; update "dyh_case_info" set case_type_first = '24_01-3' ,case_type_first_name='城市管理' where case_type='24_02-25'; update "dyh_case_info" set case_type_first = '24_01-1' ,case_type_first_name='市场监管' where case_type='24_02-5'; update "dyh_case_info" set case_type_first = '24_01-2' ,case_type_first_name='劳动社保' where case_type='24_02-9';