diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ScreenTotalFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ScreenTotalFormDTO.java index 8332a8e06..f3fc111fb 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ScreenTotalFormDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ScreenTotalFormDTO.java @@ -39,6 +39,11 @@ public class ScreenTotalFormDTO implements Serializable { */ private String yearMonth; + /** + * 是否查询其他数据(0:否;1:是) + */ + private String isElse; + /** * 时间数组 */ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/CategoryAnalysisPieResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/CategoryAnalysisPieResultDTO.java index c170d7962..6c87fb9aa 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/CategoryAnalysisPieResultDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/CategoryAnalysisPieResultDTO.java @@ -3,6 +3,9 @@ package com.elink.esua.epdc.dto.item.result; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; /** * 大屏-类别分析-返回值DTO diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java index 9f1597338..222ea4127 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java @@ -24,6 +24,11 @@ public enum ItemHandleCategoryEnum { HANDLE_CLOSING_CASE(10, "结案"), HANDLE_CLOSING_CASE_APPLY(11, "结案申请"), // 之前的结案 2022.9.4需求变更 HANDLE_I_HANDLE_GRID_TOP(1001, "响应拟办"), // 等同于网格回应 2022.9.4项目发布时使用 + + HANDLE_I_HANDLE_CHECK_APPLY(1002, "终验申请"), // 终验申请 + HANDLE_I_HANDLE_CHECK_AGREE(1003, "终验同意"), // 终验同意 + HANDLE_I_HANDLE_CHECK_UN_AGREE(1004, "终验不同意"), // 终验不同意 + HANDLE_REPORT(15, "社区吹哨");// 之前的上报网格化平台 2022.9.4需求变更 private int value; diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java index 9783f06a3..9ae52e413 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java @@ -454,5 +454,47 @@ public class ItemController { return new Result>().ok(itemService.getItemListByAddress(params)); } + /** + * 接受市平台诉求督办 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/10/21 16:13 + */ + @PostMapping("gov/case/supervise") + public Result supervise(@RequestBody AppealSuperviseResultDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return itemService.supervise(formDto); + } + + /** + * 接受市平台吹哨驳回 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/10/21 16:13 + */ + @PostMapping("gov/case/whistle/reportreject") + public Result reportReject(@RequestBody AppealWhistleReportRejectResultDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return itemService.reportReject(formDto); + } + + /** + * 接受市平台吹哨反馈 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/10/21 16:13 + */ + @PostMapping("gov/case/whistle/feedback") + public Result feedback(@RequestBody AppealWhistleFeedbackResultDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return itemService.feedback(formDto); + } + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java index 6ae2d8aec..452f73284 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java @@ -474,7 +474,8 @@ public interface ItemDao extends BaseDao { * @param formDTO * @return */ - List categoryAnalysis(ScreenTotalFormDTO formDTO); + List categoryAnalysisFirst(ScreenTotalFormDTO formDTO); + List categoryAnalysisSecond(ScreenTotalFormDTO formDTO); /** * 满意度统计 diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java index 47cb6d30d..0669917ea 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java @@ -663,6 +663,37 @@ public interface ItemService extends BaseService { List getItemListByAddress(Map params); + /** + * 接受市平台诉求督办 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/10/21 16:16 + */ + Result supervise(AppealSuperviseResultDTO formDto); + + /** + * 接受市平台吹哨驳回 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/10/21 16:16 + */ + Result reportReject(AppealWhistleReportRejectResultDTO formDto); + + /** + * 接受市平台吹哨反馈 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/10/21 16:16 + */ + Result feedback(AppealWhistleFeedbackResultDTO formDto); + + /** * 诉求变为可评价 * diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java index 12804865d..4c6846ba6 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java @@ -2712,6 +2712,7 @@ public class ItemServiceImpl extends BaseServiceImpl implem wrapper.eq("item_id", itemId); wrapper.eq("created_by", "网格化平台"); wrapper.eq("del_flag", NumConstant.ZERO_STR); + // 任何主动在流程表里插入的网格化操作都应该在过滤列表中,为了能够正常拉取网格化流程数据 wrapper.notIn("state", ItemGridPlatformHandleStatusEnum.HANDLE_BH.getValue(), ItemGridPlatformHandleStatusEnum.HANDLE_JA.getValue()); wrapper.orderByDesc("created_time"); wrapper.last("limit 1"); @@ -2838,9 +2839,14 @@ public class ItemServiceImpl extends BaseServiceImpl implem } else if (ItemGridPlatformHandleStatusEnum.HANDLE_ZCZ.getValue() == dto.getState() || ItemGridPlatformHandleStatusEnum.HANDLE_XSSQ.getValue() == dto.getState()) { pushToCityGridService.again(dto);//再处置、向上申请时判断上个节点是退回则(2.9 退件审核)结果为通过 } else if (ItemGridPlatformHandleStatusEnum.HANDLE_DB.getValue() == dto.getState()) { - //诉求督办 - pushToCityGridService.appealSupervise(dto); - } else if (ItemGridPlatformHandleStatusEnum.HANDLE_XFPJ.getValue() == dto.getState()) { + //诉求督办10.20废弃 +// pushToCityGridService.appealSupervise(dto); + } else if (ItemGridPlatformHandleStatusEnum.HANDLE_XFHC.getValue() == dto.getState()) { + //初验申请 + pushToCityGridService.earlyInspectionApply(dto); + } else if (ItemGridPlatformHandleStatusEnum.HANDLE_HCSB.getValue() == dto.getState()) { + //诉求初验 + pushToCityGridService.earlyInspection(dto); //诉求终验 pushToCityGridService.endInspection(dto); } else if (ItemGridPlatformHandleStatusEnum.HANDLE_ZF.getValue() == dto.getState()) { @@ -3701,6 +3707,7 @@ public class ItemServiceImpl extends BaseServiceImpl implem return new Result().error("未查到相关事件信息"); } // 插入项目处理进度表 + String firstHandleId = ""; ItemHandleProcessDTO itemHandleProcessDto = new ItemHandleProcessDTO(); itemHandleProcessDto.setId(UUID.randomUUID().toString().replaceAll("-", "")); itemHandleProcessDto.setItemId(itemPlat.getReferenceId()); @@ -3731,17 +3738,6 @@ public class ItemServiceImpl extends BaseServiceImpl implem //吹哨 itemHandleProcessDto.setOutHandleAdvice(formDto.getHandleAdvice() + "h_s办理人:" + item.getHandlePeopleName() + ",联系电话:" + item.getHandlePeopleMobile()); } else { - /* - //内容组成:第一个发起结案申请+办理人:XXX+办理电话:XXX。换行(前端处理) 感谢您的支持,“北尚诉办”全程为您服务! - ItemHandleProcessEntity firsthandleProcess = baseDao.selectFirstHandleProcessByItemId(itemPlat.getReferenceId()); - // 结案去掉本系统拼接的办理人信息(2022-09-30 修改 wgf) - String handleAdvice = ""; - if(StringUtils.isNotBlank(firsthandleProcess.getHandleAdvice())){ - handleAdvice = firsthandleProcess.getHandleAdvice(); - handleAdvice= handleAdvice.substring(0,handleAdvice.lastIndexOf(" 办理人:")); - } - itemHandleProcessDto.setOutHandleAdvice(handleAdvice+"h_s办理人:"+item.getHandlePeopleName()+",联系电话:"+item.getHandlePeopleMobile()); -*/ //内容组成:第一个发起结案申请+办理人:XXX+办理电话:XXX。换行(前端处理) 感谢您的支持,“北尚诉办”全程为您服务!没有结案申请就取网格化结案状态流程数据 ItemHandleProcessEntity firsthandleProcess = baseDao.selectFirstHandleProcessByItemId(itemPlat.getReferenceId(), ItemGridPlatformHandleStatusEnum.HANDLE_SQ.getValue()); if (firsthandleProcess == null) { @@ -3749,9 +3745,11 @@ public class ItemServiceImpl extends BaseServiceImpl implem if (firsthandleProcess == null) { itemHandleProcessDto.setOutHandleAdvice("办理人:" + item.getHandlePeopleName() + ",联系电话:" + item.getHandlePeopleMobile()); } else { + firstHandleId = firsthandleProcess.getId(); itemHandleProcessDto.setOutHandleAdvice(firsthandleProcess.getHandleAdvice() + "h_s办理人:" + item.getHandlePeopleName() + ",联系电话:" + item.getHandlePeopleMobile()); } } else { + firstHandleId = firsthandleProcess.getId(); itemHandleProcessDto.setOutHandleAdvice(firsthandleProcess.getHandleAdvice() + "h_s办理人:" + item.getHandlePeopleName() + ",联系电话:" + item.getHandlePeopleMobile()); } @@ -3779,6 +3777,17 @@ public class ItemServiceImpl extends BaseServiceImpl implem itemHandleProcessDto.setCreatedTime(null == formDto.getCreatedTime() ? new Date() : formDto.getCreatedTime()); itemHandleProcessDto.setUpdatedTime(new Date()); itemHandleProcessService.saveItemHandleProcess(itemHandleProcessDto); + + if(StringUtils.isNotBlank(firstHandleId)){ + // 插入第一级结案申请时的图片 + List imageList = imgDao.selectListByRefeId(firstHandleId); + for(ImgEntity imgEntity : imageList){ + imgEntity.setId(null); + imgEntity.setReferenceId(itemHandleProcessDto.getId()); + imgDao.insert(imgEntity); + } + } + try { //网格化平台结案/驳回操作增加的推送数据到市平台逻辑报错不能影响原有程序流程 if ("1".equals(formDto.getState())) { @@ -3802,8 +3811,10 @@ public class ItemServiceImpl extends BaseServiceImpl implem } successFlag = YesOrNoEnum.YES.value(); // 保存接口调用日志 + String message = formDto.getP_recId(); + message = message + ":" + formDto; this.saveInterfaceLog(itemPlat.getReferenceId(), InterfaceLogBusinessTypeEnum.ACCEPT_ITEM_PROCESS.getValue(), - ApiConstants.acceptItemProcess, successFlag, formDto.getP_recId(), returnMsgBody); + ApiConstants.acceptItemProcess, successFlag, message, returnMsgBody); return new Result().ok("操作成功"); } @@ -3839,49 +3850,6 @@ public class ItemServiceImpl extends BaseServiceImpl implem return 0 == process.getState() || 15 == process.getState(); } - /** - * 领域类别处理 - * - * @param - * @return void - * @author zhy - * @date 2022/9/6 21:14 - */ - private void lbHandle(SendEventFormDto dto, String secondCategory) { - if (StringUtils.isNotBlank(secondCategory)) { - int length = secondCategory.length(); - if (length % 2 == 0) { - // 偶数 - } else { - // 奇数 - secondCategory = "0" + secondCategory; - } - if (length > 2) { - // 每隔2位加一个逗号 - secondCategory = secondCategory.replaceAll("(.{2})", "$1,"); - String[] categoryList = secondCategory.split(","); - if (categoryList.length == NumConstant.TWO) { - // 事件大类 - dto.setSJDL(categoryList[1]); - } else if (categoryList.length == NumConstant.THREE) { - // 事件大类 - dto.setSJDL(categoryList[1]); - //事件小类 - dto.setSJXL(categoryList[2]); - } else if (categoryList.length == NumConstant.FOUR) { - // 事件大类 - dto.setSJDL(categoryList[1]); - //事件小类 - dto.setSJXL(categoryList[2]); - //事件细类 - dto.setSJXIL(categoryList[3]); - } - - } - - } - } - /** * 处理中流程的当前处理部门 * @@ -3942,10 +3910,62 @@ public class ItemServiceImpl extends BaseServiceImpl implem @Override public List categoryAnalysis(ScreenTotalFormDTO formDTO) { + // 返回值 + List resultList = new ArrayList(); + + if("0".equals(formDTO.getIsElse())){ + // 城市综合 + // 定义初始【城市综合】5大类 + List cityCompre = new ArrayList<>(); + cityCompre.add("城市综合-交通运输"); + cityCompre.add("城市综合-城市管理"); + cityCompre.add("城市综合-城管执法"); + cityCompre.add("城市综合-环境保护"); + cityCompre.add("城市综合-居民生活"); + // 获取分类全部数据 + List list = baseDao.categoryAnalysisSecond(formDTO); + // 其他总数 + Integer elseValue = 0; + for(CategoryAnalysisPieResultDTO dto : list){ + if(cityCompre.contains(dto.getName())){ + String newName = dto.getName(); + dto.setName(newName.replace("城市综合-","")); + resultList.add(dto); + }else{ + elseValue += Integer.parseInt(dto.getValue()); + } - List list = baseDao.categoryAnalysis(formDTO); + } + // 定义【其他】 + CategoryAnalysisPieResultDTO elseCategory = new CategoryAnalysisPieResultDTO(); + elseCategory.setCode("其他"); + elseCategory.setName("其他"); + elseCategory.setValue(elseValue.toString()); + resultList.add(elseCategory); + + }else{ + // 其他 + // 总数 + Integer total = 0; + List list = baseDao.categoryAnalysisFirst(formDTO); + for(CategoryAnalysisPieResultDTO dto1 : list){ + total += Integer.parseInt(dto1.getValue()); + } + for(CategoryAnalysisPieResultDTO dto2 : list){ + if(!"城市综合".equals(dto2.getName())){ - return list; + BigDecimal value = BigDecimal.valueOf(Integer.parseInt(dto2.getValue())); + BigDecimal totalBig = BigDecimal.valueOf(total); + BigDecimal proportion = value .divide(totalBig,2, RoundingMode.HALF_UP); + dto2.setProportion(proportion + "%"); + resultList.add(dto2); + + } + } + + } + + return resultList; } @Override @@ -4061,6 +4081,10 @@ public class ItemServiceImpl extends BaseServiceImpl implem return baseDao.getItemListByAddress(params); } + @Override + public Result supervise(AppealSuperviseResultDTO formDto){ + return new Result(); + } /** * 诉求变为可评价 * @@ -4152,4 +4176,13 @@ public class ItemServiceImpl extends BaseServiceImpl implem + @Override + public Result reportReject(AppealWhistleReportRejectResultDTO formDto){ + return new Result(); + } + + @Override + public Result feedback(AppealWhistleFeedbackResultDTO formDto){ + return new Result(); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenServiceImpl.java index 0e0c9649e..878d5b5a3 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenServiceImpl.java @@ -17,6 +17,7 @@ package com.elink.esua.epdc.modules.screen.service.impl; +import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.DeptDTO; @@ -72,6 +73,10 @@ public class ScreenServiceImpl implements ScreenService { } //2.按条件统计数据 resultDTO = itemDao.itemDailyStatis(formDTO); + int greenTotal = resultDTO.getPendingTotal() + resultDTO.getProcessingTotal() - resultDTO.getRedTotal() - resultDTO.getYellowTotal(); + if (greenTotal > NumConstant.ZERO) { + resultDTO.setGreenTotal(greenTotal); + } return resultDTO; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml index 5945eecf0..94fc8b90b 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml @@ -578,6 +578,9 @@ and (process.state is not null and process.state not in (11,14,15)) and (item.IS_PEOPLE = '0' or (item.IS_PEOPLE = '1' and item.PEOPLE_FLAG = '0')) + + and (item.EVALUATION_SCORE is null or item.EVALUATION_SCORE = '') + and (process.state != 0 or process.state is null) @@ -2177,22 +2180,19 @@ SUM(a.ITEM_STATE='10')closedTotal, sum((case when a.item_state='0' and b.state = 1001 then 1 else 0 end))pendingTotal, sum((case when a.item_state='0' and b.state != 1001 then 1 else 0 end))processingTotal, - sum((case when a.item_state='0' and getworkminute(a.created_time, now()) > 480 then 1 else 0 end))redTotal, - sum( - (case when a.item_state = '0' - and getworkminute(a.created_time, now()) > 360 - and getworkminute(a.created_time, now()) 480 - then 1 else 0 end) - )yellowTotal, - sum((case when a.item_state = '0' and getworkminute(a.created_time, now()) 360 then 1 else 0 end))greenTotal + sum((case when b.handleId is null and a.item_state='0' and getworkminute(a.created_time, now()) > 480 then 1 else 0 end))redTotal, + sum((case when b.handleId is null and a.item_state = '0' and (getworkminute(a.created_time, now()) BETWEEN 360 and 480) then 1 else 0 end))yellowTotal FROM epdc_item a LEFT JOIN ( - select h.id,h.item_id,h.created_time,h.state + select h.id,h.item_id,h.created_time,h.state,p.id as handleId from epdc_item ei inner join epdc_item_handle_process h on ei.id = h.item_id - where ei.is_people = '1' + LEFT JOIN ( + select id,item_id FROM epdc_item_handle_process where handler_dept = '网格化平台' and del_flag = '0' group by item_id + ) p ON ei.id = p.item_id + where ei.is_people = '1' and ei.del_flag = '0' AND ei.event_id is NULL AND ei.issue_id is NULL @@ -2243,8 +2243,11 @@ epdc_item i INNER JOIN ( SELECT - b.id, b.item_id, b.created_time, b.state + b.id, b.item_id, b.created_time, b.state, p.id as handleId FROM epdc_item_handle_process b + LEFT JOIN ( + select id,item_id FROM epdc_item_handle_process where handler_dept = '网格化平台' and del_flag = '0' group by item_id + ) p ON b.item_id = p.item_id WHERE b.del_flag = '0' AND b.created_time = ( SELECT max(created_time) @@ -2299,13 +2302,38 @@ AND DATE_FORMAT(i.created_time,'%Y-%m-%d') #{statDate} - + AND SUBSTRING_INDEX(i.category_full_code,'-',1) = #{code} + + AND SUBSTRING_INDEX(i.category_full_code,'-',2) = #{code} + + + + and process.handleId is null and i.item_state='0' and getworkminute(i.created_time, now()) > 480 + + + and process.handleId is null + and i.item_state='0' + and (getworkminute(i.created_time, now()) BETWEEN 360 and 480 ) + + + + and i.item_state='0' + and ( + process.handleId is not null + or getworkminute(i.created_time, now()) 360 + ) + + + + + AND i.evaluation_score = #{evaluationScore} + order by i.created_time DESC - +