diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysDeptDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysDeptDTO.java index 43fce73f5..ede9d7285 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysDeptDTO.java +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysDeptDTO.java @@ -92,6 +92,10 @@ public class SysDeptDTO extends TreeNode implements Serializable { @ApiModelProperty(value = "纬度") private String latitude; + /**第三方编码 + */ + private String infoCode; + public String getPartyCode() { return partyCode; } @@ -191,4 +195,12 @@ public class SysDeptDTO extends TreeNode implements Serializable { public void setLatitude(String latitude) { this.latitude = latitude; } + + public String getInfoCode() { + return infoCode; + } + + public void setInfoCode(String infoCode) { + this.infoCode = infoCode; + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java index 94b08e688..abbafcd18 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java @@ -104,4 +104,7 @@ public class SysDeptEntity extends BaseEntity { */ private String areaCode; + /**第三方编码 + */ + private String infoCode; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ExamineCaseFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ExamineCaseFormDTO.java new file mode 100644 index 000000000..272ad2ced --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ExamineCaseFormDTO.java @@ -0,0 +1,41 @@ +package com.elink.esua.epdc.dto.item.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @program: esua-epdc + * @description: 结案审批提交 + * @author: wangtong + * @create: 2022-09-05 09:54 + **/ +@Data +public class ExamineCaseFormDTO implements Serializable { + + /** + * 项目ID + */ + @NotBlank(message = "项目id不可为空") + private String itemId; + + /** + * 结案审批:0通过-并上报至网格化 1不通过-返回至网格 + */ + @NotBlank(message = "结案审批标识不可为空") + private String checkFlag; + + /** + * 处理意见(外部) + */ + @NotBlank(message = " 处理意见不可为空") + private String outHandleAdvice; + + /** + * 意见图片 + */ + private List images; + +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemGridPlatformHandleStatusEnum.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemGridPlatformHandleStatusEnum.java index c10b2bdec..99558930d 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemGridPlatformHandleStatusEnum.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemGridPlatformHandleStatusEnum.java @@ -6,6 +6,7 @@ package com.elink.esua.epdc.enums; * @Description: 网格化平台案件处理状态 */ public enum ItemGridPlatformHandleStatusEnum { + HANDLE_SQ(11, "结案申请"), HANDLE_SB(15, "上报"), HANDLE_SL(20, "受理"), HANDLE_LA(25, "立案"), 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 471b6f954..593a127eb 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 @@ -30,6 +30,7 @@ import com.elink.esua.epdc.dto.events.form.EventDeleteCommentsFormDTO; import com.elink.esua.epdc.dto.form.KpiMetaDataOfEventsFormDTO; import com.elink.esua.epdc.dto.item.ItemDTO; import com.elink.esua.epdc.dto.item.ItemPendingHandleDTO; +import com.elink.esua.epdc.dto.item.form.ExamineCaseFormDTO; import com.elink.esua.epdc.dto.item.form.HandleResultDTOSFormDTO; import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO; import com.elink.esua.epdc.dto.item.result.*; @@ -331,5 +332,18 @@ public class ItemController { PageData page = itemService.getExaminePage(params); return new Result>().ok(page); } + + + /** + * @describe: 社区审批结案申请 + * @author wangtong + * @date 2022/9/5 10:18 + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping("examineCase") + public Result examineCase(@RequestBody ExamineCaseFormDTO formDto) { + return itemService.examineCase(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 5266243d5..9a02d64f6 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 @@ -517,4 +517,13 @@ public interface ItemService extends BaseService { * @return com.elink.esua.epdc.commons.tools.utils.Result> */ PageData getExaminePage(Map params); + + /** + * @describe: 社区审批结案申请 + * @author wangtong + * @date 2022/9/5 10:18 + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + Result examineCase(ExamineCaseFormDTO 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 f3f630000..ff5134d5a 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 @@ -82,6 +82,7 @@ import com.elink.esua.epdc.modules.interfacelog.service.InterfaceLogService; import com.elink.esua.epdc.modules.issue.service.IssueService; import com.elink.esua.epdc.modules.item.dao.ItemDao; import com.elink.esua.epdc.modules.item.dao.ItemGridPlatformDao; +import com.elink.esua.epdc.modules.item.dao.ItemHandleProcessDao; import com.elink.esua.epdc.modules.item.dao.ItemLawDao; import com.elink.esua.epdc.modules.item.entity.*; import com.elink.esua.epdc.modules.item.service.*; @@ -181,6 +182,9 @@ public class ItemServiceImpl extends BaseServiceImpl implem @Autowired private ItemLawDao itemLawDao; + @Autowired + private ItemHandleProcessDao itemHandleProcessDao; + @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -1349,7 +1353,7 @@ public class ItemServiceImpl extends BaseServiceImpl implem private SendEventResultDto reportCaseNew(ItemHandleSubmitFormDTO dto) throws Exception { ItemEntity entity = baseDao.selectById(dto.getId()); // 组装上报信息 - SendEventFormDto sendEventFormDto = packageSendEventEntity(entity); + SendEventFormDto sendEventFormDto = packageSendEventEntity(entity,dto); // 接口请求返回实体,getCode 1失败 0成功(非空) log.info("处理项目-进入上报网格化平台-发送"); SendEventResultDto sendResult = shiBeiCityGridApi.sendEvent(sendEventFormDto); @@ -1456,13 +1460,28 @@ public class ItemServiceImpl extends BaseServiceImpl implem * @params [itemEntity] * @return com.elink.esua.epdc.gird.shibei.dto.form.SendInputInfoFormDto */ - private SendEventFormDto packageSendEventEntity(ItemEntity itemEntity) throws Exception { - UserDetail user = SecurityUser.getUser(); + private SendEventFormDto packageSendEventEntity(ItemEntity itemEntity,ItemHandleSubmitFormDTO dto) throws Exception { SendEventFormDto sendDto = new SendEventFormDto(); SendInputInfoFormDto formDto = new SendInputInfoFormDto(); //推送类别(事件上报) sendDto.setSENDTYPE(CommonConstants.SEND_TYPE); - //上报至区中心平台 + //上报 + if("1".equals(itemEntity.getIsPeople()) && + ("1".equals(itemEntity.getPeopleFlag()) || "2".equals(itemEntity.getPeopleFlag()))){ + //发展、执法上报到区中心平台 + sendDto.setSENDACTDEFID(CommonConstants.PARTY_SEND_TO); + sendDto.setSJZT(CommonConstants.PARTY_ITEM_ZT_ONE); + }else{ + //民生、正常议题转项目来的到街道平台 + sendDto.setSENDACTDEFID(CommonConstants.PARTY_SEND_STREET); + if(ItemHandleCategoryEnum.HANDLE_CLOSING_CASE_APPLY.getValue() == dto.getHandleCategory()){ + //结案申请 + sendDto.setSJZT(CommonConstants.PARTY_ITEM_ZT_ZERO); + }else { + //吹哨 + sendDto.setSJZT(CommonConstants.PARTY_ITEM_ZT_ONE); + } + } sendDto.setSENDACTDEFID(CommonConstants.PARTY_SEND_TO); //推送端记录唯一标识 sendDto.setUID(UUID.randomUUID().toString().trim().replaceAll("-", "")); @@ -1492,13 +1511,28 @@ public class ItemServiceImpl extends BaseServiceImpl implem //所属区市:只有市北区 sendDto.setSSQS(CommonConstants.CITY_INFO_CODE); //查询网格所对应的社区编码、街道编码 - Result deptResult = adminFeignClient.getDeptInfoCode(itemEntity.getGridId()); - DeptInfoCodeDTO deptInfo = deptResult.getData(); - if(deptInfo == null){ - throw new RenException("根据网格ID获取对应的社区编码、街道编码失败" + deptResult.getMsg()); + if(StringUtils.isNotBlank(itemEntity.getPeopleFlag()) && "2".equals(itemEntity.getPeopleFlag())){ + //执法诉求gridId存的是街道id,需要单独查 + Result streetResult = adminFeignClient.getSysDeptInfo(itemEntity.getGridId()); + SysDeptDTO deptInfo = streetResult.getData(); + if(deptInfo == null){ + throw new RenException("根据街道ID获取对应的街道编码失败" + streetResult.getMsg()); + } + //所属街道 + sendDto.setSSJD(deptInfo.getInfoCode()); + //事件描述 + sendDto.setSJMS(getItemLawContent(itemEntity.getId())); + }else{ + Result deptResult = adminFeignClient.getDeptInfoCode(itemEntity.getGridId()); + DeptInfoCodeDTO deptInfo = deptResult.getData(); + if(deptInfo == null){ + throw new RenException("根据网格ID获取对应的社区编码、街道编码失败" + deptResult.getMsg()); + } + //所属街道 + sendDto.setSSJD(deptInfo.getStreetInfoCode()); + //事件描述 + sendDto.setSJMS(itemEntity.getItemContent());// } - //所属街道 - sendDto.setSSJD(deptInfo.getStreetInfoCode()); //所属社区 sendDto.setSSSQ("");//deptInfo.getCommunityInfoCode() //诉求联系人及联系方式 @@ -1510,8 +1544,6 @@ public class ItemServiceImpl extends BaseServiceImpl implem } //事件地址 sendDto.setSJDZ(itemEntity.getIssueAddress()); - //事件描述 - sendDto.setSJMS(itemEntity.getItemContent());// log.info("处理项目-gps开始"); double[] gps = GPSUtils.gcj02_To_Gps84(itemEntity.getIssueLatitude(), itemEntity.getIssueLongitude()); log.info("处理项目-gps结束"); @@ -1525,6 +1557,8 @@ public class ItemServiceImpl extends BaseServiceImpl implem List handleList = getHandleList(itemEntity.getId(),handleImagesList); log.info("处理项目-获取进度结束"); sendDto.setHandleList(handleList); + //备注 + sendDto.setBZXX(dto.getOutHandleAdvice()); //图片 List images = getImageFileNew(itemEntity.getEventId() == null?itemEntity.getId():itemEntity.getEventId(),handleImagesList);//事件图片+处理流程图片 //时间处理进度图片 @@ -1533,6 +1567,30 @@ public class ItemServiceImpl extends BaseServiceImpl implem return sendDto; } + private String getItemLawContent(String itemId){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("item_id", itemId); + wrapper.eq("del_flag", "0"); + ItemLawEntity itemLaw = itemLawDao.selectOne(wrapper); + String result = "事项名称-" + itemLaw.getLawName() + + ";诉求详情-"+itemLaw.getLawContent() + + ";主办单位-"+itemLaw.getHostUnit() + + ";协办单位-"+itemLaw.getAssistUnit() + + ";有关需求-"+itemLaw.getDemand() + + ";事项类型-"+("0".equals(itemLaw.getLawType())?"计划事项":"临时事项") + + ";与部门是否沟通-"+("0".equals(itemLaw.getIsExchange())?"已经沟通":"尚未沟通") + + ";召集人姓名-"+itemLaw.getConvenerName() + + ";召集人职务-"+itemLaw.getConvenerJob() + + ";召集人电话-"+itemLaw.getConvenerMobile() + + ";联系人姓名-"+itemLaw.getContactName() + + ";联系人职务-"+itemLaw.getContactJob() + + ";联系人电话-"+itemLaw.getContactMobile() + + ";报到时间-"+DateUtils.format(itemLaw.getReportTime(),DateUtils.DATE_TIME_PATTERN) + + ";报到地点-"+itemLaw.getReportAddress() + + ";会议名称-"+itemLaw.getMeetingName()+"。"; + return result; + } + private List getHandleList(String itemId, List handleImagesList) { //未组装的事件处理流程 List handleList = baseDao.selectListOfItemHandleProgressByMobile(itemId); @@ -1554,16 +1612,59 @@ public class ItemServiceImpl extends BaseServiceImpl implem } handleProcess.setItemDeptDTOS(itemDepts); - if (ipr.getState() == 0 && ipr.getItemDeptDTOS().size() > 0) { - handleProcess.setState("吹哨"); - } else if (ipr.getState() == 0 && ipr.getItemDeptDTOS().size() == 0) { - handleProcess.setState("办理"); - } else if (ipr.getState() == 5) { - handleProcess.setState("关闭"); +// if (ipr.getState() == 0 && ipr.getItemDeptDTOS().size() > 0) { +// handleProcess.setState("吹哨"); +// } else if (ipr.getState() == 0 && ipr.getItemDeptDTOS().size() == 0) { +// handleProcess.setState("办理"); +// } else if (ipr.getState() == 5) { +// handleProcess.setState("关闭"); +// } else if (ipr.getState() == 10) { +// handleProcess.setState("结案"); +// } else if ( ipr.getState() == 11 || ipr.getState() == 12 || ipr.getState() == 13) { +// handleProcess.setState("满意度评价"); +// } else if (ipr.getState() == 15) { +// handleProcess.setState("上报网格化平台"); +// } else if (ipr.getState() == 20) { +// handleProcess.setState("网格化平台-受理"); +// } else if (ipr.getState() == 25) { +// handleProcess.setState("网格化平台-立案"); +// } else if (ipr.getState() == 30) { +// handleProcess.setState("网格化平台-派遣"); +// } else if (ipr.getState() == 35) { +// handleProcess.setState("网格化平台-再派遣"); +// } else if (ipr.getState() == 40) { +// handleProcess.setState("网格化平台-接单"); +// } else if (ipr.getState() == 45) { +// handleProcess.setState("网格化平台-处置完成"); +// } else if (ipr.getState() == 50) { +// handleProcess.setState("网格化平台-中间督办"); +// } else if (ipr.getState() == 55) { +// handleProcess.setState("网格化平台-催办"); +// } else if (ipr.getState() == 60) { +// handleProcess.setState("网格化平台-结案"); +// } else if (ipr.getState() == 65) { +// handleProcess.setState("网格化平台-办理"); +// } else if (ipr.getState() == 70) { +// handleProcess.setState("网格化平台-批转"); +// } else if (ipr.getState() == 75) { +// handleProcess.setState("网格化平台-退单"); +// } else if (ipr.getState() == 80) { +// handleProcess.setState("网格化平台-办结"); +// } else { +// handleProcess.setState(ipr.getState().toString()); +// } + if (ipr.getState() == 0) { + handleProcess.setState("处理中"); + }else if (ipr.getState() == 5) { + handleProcess.setState("不予受理"); } else if (ipr.getState() == 10) { - handleProcess.setState("结案"); - } else if ( ipr.getState() == 11 || ipr.getState() == 12 || ipr.getState() == 13) { - handleProcess.setState("满意度评价"); + handleProcess.setState("已结案"); + } else if ( ipr.getState() == 11) { + handleProcess.setState("结案申请"); + } else if ( ipr.getState() == 12) { + handleProcess.setState("响应拟办"); + } else if ( ipr.getState() == 13) { + handleProcess.setState("直接办理"); } else if (ipr.getState() == 15) { handleProcess.setState("上报网格化平台"); } else if (ipr.getState() == 20) { @@ -1583,7 +1684,7 @@ public class ItemServiceImpl extends BaseServiceImpl implem } else if (ipr.getState() == 55) { handleProcess.setState("网格化平台-催办"); } else if (ipr.getState() == 60) { - handleProcess.setState("网格化平台-结案"); + handleProcess.setState("网格化平台-结案"); } else if (ipr.getState() == 65) { handleProcess.setState("网格化平台-办理"); } else if (ipr.getState() == 70) { @@ -1735,12 +1836,12 @@ public class ItemServiceImpl extends BaseServiceImpl implem itemGridPlatformEntity.setReferenceId(handleProcessEntity.getItemId()); itemGridPlatformEntity.setTaskid(sendResult.getP_recId()); itemGridPlatformEntity.setReportPersonDeptId(handleProcessEntity.getHandlerDeptId()); - itemGridPlatformEntity.setStatus(ItemGridPlatformHandleStatusEnum.HANDLE_SB.getValue()); + itemGridPlatformEntity.setStatus(handleProcessEntity.getState()); itemGridPlatformService.insert(itemGridPlatformEntity); GridPlatformHandleLogEntity logEntity = new GridPlatformHandleLogEntity(); logEntity.setItemGridPlatformId(itemGridPlatformEntity.getId()); - logEntity.setStatus(ItemGridPlatformHandleStatusEnum.HANDLE_SB.getValue()); + logEntity.setStatus(handleProcessEntity.getState()); logEntity.setItemHandleProcessId(handleProcessEntity.getItemId()); logEntity.setHandler(user.getRealName()); logEntity.setHandlingOpinions(handleProcessEntity.getHandleAdvice()); @@ -2271,4 +2372,66 @@ public class ItemServiceImpl extends BaseServiceImpl implem return new PageData<>(list, page.getTotal()); } + @Override + @Transactional(rollbackFor = Exception.class) + public Result examineCase(ExamineCaseFormDTO formDto) { + UserDetail user = SecurityUser.getUser(); + if (null == user) { + throw new RuntimeException("获取用户信息失败"); + } + + ItemHandleProcessEntity process = new ItemHandleProcessEntity(); + process.setItemId(formDto.getItemId()); + process.setOutHandleAdvice(formDto.getOutHandleAdvice()); + process.setHandlerDept(user.getDeptName()); + process.setHandlerDeptId(user.getDeptId()); + if("0".equals(formDto.getCheckFlag())){ + //同意 + process.setState(11);//结案申请 + }else if("1".equals(formDto.getCheckFlag())){ + //不同意,返回网格待处理列表 + process.setState(0);//待处理 + }else{ + throw new RenException("审批标识有误"); + } + itemHandleProcessDao.insert(process); + + if("0".equals(formDto.getCheckFlag())){ + //发送结案申请至街道网格化平台 + ItemHandleSubmitFormDTO dto = new ItemHandleSubmitFormDTO(); + dto.setId(formDto.getItemId()); + dto.setOutHandleAdvice(process.getOutHandleAdvice()); + dto.setHandleCategory(ItemHandleCategoryEnum.HANDLE_CLOSING_CASE_APPLY.getValue()); + sendItemToDsf(dto,process); + } + return new Result(); + } + + /** + * @describe: 上报项目至网格化平台并保存记录 + * @author wangtong + * @date 2022/9/5 14:37 + * @params [dto] + * @return void + */ + @Transactional(rollbackFor = Exception.class) + public void sendItemToDsf(ItemHandleSubmitFormDTO dto,ItemHandleProcessEntity process){ + boolean reportFlag = this.checkReport(dto.getId()); + if (reportFlag) { + throw new RenException("当前项目已上报网格化平台"); + } + SendEventResultDto sendResult = null; + try { + sendResult = this.reportCaseNew(dto); + } catch (Exception e) { + throw new RenException("上报网格化平台接口失败" + sendResult.getMessage()); + } + if (null == sendResult || !("0").equals(sendResult.getCode())) { + // 接口没有返回信息,也没有异常信息 + throw new RenException("上报网格化平台接口失败" + sendResult.getMessage()); + } + // 记录平台上报信息 + this.saveItemGridPlatformInfo(sendResult, process); + } + }