diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml index dd3b161f..76e80757 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml @@ -147,6 +147,13 @@ false 47.104.224.45:8848 + + 47.104.224.45 + fa5bf520-09c1-410c-a876-28e98c0534d3 + + 47.104.85.99:9876;114.215.125.123:9876 + jinshui-pointsGroup + jinshui-pointsGroup diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/constant/EventIssueItemState.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/constant/EventIssueItemState.java index 623a396e..88be6d29 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/constant/EventIssueItemState.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/constant/EventIssueItemState.java @@ -69,4 +69,9 @@ public interface EventIssueItemState { * 项目状态字段 */ String ITEM_STATE = "ITEM_STATE"; + + /** + * 议题-转为项目并吹哨 + */ + int ISSUE_CHANGE_TO_ITEM_AND_CIRCULATION_ASSISTANCE = 6; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java index 742af480..3abfd858 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java @@ -1,6 +1,7 @@ package com.elink.esua.epdc.dto.issue; import com.elink.esua.epdc.dto.issue.result.IssueProgressResultDTO; +import com.elink.esua.epdc.dto.item.result.ItemCirculationDeptResultDTO; import lombok.Data; import java.io.Serializable; @@ -74,4 +75,9 @@ public class IssueWaitHandleDetailDTO implements Serializable { * 友邻社群 */ private String groupName; + + /** + * 可流转部门 + */ + private List deptResultDTOLIST; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssueWaitHandleSubmitFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssueWaitHandleSubmitFormDTO.java index 2ae127de..8e556804 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssueWaitHandleSubmitFormDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssueWaitHandleSubmitFormDTO.java @@ -1,5 +1,6 @@ package com.elink.esua.epdc.dto.issue.form; +import com.elink.esua.epdc.dto.item.result.ItemCirculationDeptResultDTO; import lombok.Data; import javax.validation.constraints.NotNull; @@ -26,7 +27,7 @@ public class IssueWaitHandleSubmitFormDTO implements Serializable { @Size(min = 1, max = 500, message = "处理意见在500字以内") private String advice; /** - * 状态 1 添加处理意见,2 关闭,4 转项目 + * 状态 1 添加处理意见,2 关闭,4 转项目,6 转项目并吹哨 */ @NotNull(message = "处理操作不能为空") private Integer state; @@ -41,4 +42,8 @@ public class IssueWaitHandleSubmitFormDTO implements Serializable { */ private String userId; + /** + * 流转协助部门 + */ + private List deptResultDTOS; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java index b084f122..5b2101c6 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; @@ -34,6 +35,7 @@ import com.elink.esua.epdc.constant.EventsNoticeConstant; import com.elink.esua.epdc.constant.ImageConstant; import com.elink.esua.epdc.constant.SysSmsTemplateConstant; import com.elink.esua.epdc.constants.MenuCodeConstant; +import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.MenuNoticeDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO; @@ -43,12 +45,17 @@ import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO; import com.elink.esua.epdc.dto.issue.*; import com.elink.esua.epdc.dto.issue.form.*; import com.elink.esua.epdc.dto.issue.result.*; +import com.elink.esua.epdc.dto.item.ItemDeptDTO; +import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO; +import com.elink.esua.epdc.dto.item.result.ItemCirculationDeptResultDTO; import com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO; +import com.elink.esua.epdc.enums.ItemHandleCategoryEnum; import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask; import com.elink.esua.epdc.modules.async.NewsTask; import com.elink.esua.epdc.modules.comment.service.EventCommentService; import com.elink.esua.epdc.modules.events.service.EpdcEventsService; import com.elink.esua.epdc.modules.events.service.ImgService; +import com.elink.esua.epdc.modules.feign.AdminFeignClient; import com.elink.esua.epdc.modules.feign.GroupFeignClient; import com.elink.esua.epdc.modules.issue.dao.IssueDao; import com.elink.esua.epdc.modules.issue.entity.IssueEntity; @@ -109,6 +116,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp @Autowired private IssueOverseeResultsTask issueOverseeResultsTask; + @Autowired + private AdminFeignClient adminFeignClient; + @Override public PageData listOfIssues(Map params) { IPage page = getPage(params); @@ -170,6 +180,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp List issueProgressResultDTOS = this.listIssueProgress(id); detailDto.setIssueProgressResultDTOS(issueProgressResultDTOS); + // 获取可流转部门 + List deptList = itemService.listWhistlingDept(); + detailDto.setDeptResultDTOLIST(deptList); return detailDto; } @@ -187,6 +200,15 @@ public class IssueServiceImpl extends BaseServiceImpl imp IssueEntity issueEntity = new IssueEntity(); issueEntity.setId(dto.getId()); issueEntity.setIssueState(dto.getState()); + //锦水前端传的 转项目并吹哨状态=6,数据库实际存储为 转项目=4 + if(EventIssueItemState.ISSUE_CHANGE_TO_ITEM_AND_CIRCULATION_ASSISTANCE == dto.getState()){ + // 项目流转校验 + Result checkResult = this.checkItemCirculation(dto); + if (!checkResult.success()) { + return checkResult; + } + issueEntity.setIssueState(EventIssueItemState.ISSUE_CHANGE_TO_ITEM); + } IssueEntity entity = this.selectById(dto.getId()); // 组装发送消息内容 @@ -210,10 +232,14 @@ public class IssueServiceImpl extends BaseServiceImpl imp } } // 关闭、转项目 - if (EventIssueItemState.ISSUE_CLOSED == dto.getState() || EventIssueItemState.ISSUE_CHANGE_TO_ITEM == dto.getState()) { + // 锦水 + 转项目并吹哨 + String itemId = ""; + if (EventIssueItemState.ISSUE_CLOSED == dto.getState() || EventIssueItemState.ISSUE_CHANGE_TO_ITEM == dto.getState() + || EventIssueItemState.ISSUE_CHANGE_TO_ITEM_AND_CIRCULATION_ASSISTANCE == dto.getState()) { updateById(issueEntity); // 转项目 - if (EventIssueItemState.ISSUE_CHANGE_TO_ITEM == dto.getState()) { + if (EventIssueItemState.ISSUE_CHANGE_TO_ITEM == dto.getState() + || EventIssueItemState.ISSUE_CHANGE_TO_ITEM_AND_CIRCULATION_ASSISTANCE == dto.getState()) { informationFormDTO.setTitle(EventsNoticeConstant.NOTICE_ISSUE_CHANGE_TO_ITEM); informationFormDTO.setBusinessType(EventsNoticeConstant.NOTICE_BUSINESS_TYPE_ITEM); // 插入项目表 @@ -221,7 +247,8 @@ public class IssueServiceImpl extends BaseServiceImpl imp itemService.insert(itemEntity); // 插入项目处理流程表 ItemHandleProcessEntity itemHandleProcessEntity = new ItemHandleProcessEntity(); - itemHandleProcessEntity.setItemId(itemEntity.getId()); + itemId = itemEntity.getId(); + itemHandleProcessEntity.setItemId(itemId); itemHandleProcessEntity.setState(EventIssueItemState.ITEM_HANDLING); itemHandleProcessEntity.setHandleAdvice(dto.getAdvice()); itemHandleProcessEntity.setOutHandleAdvice(dto.getAdvice()); @@ -267,6 +294,15 @@ public class IssueServiceImpl extends BaseServiceImpl imp // 发送菜单消息-议题待处理 this.sendIssueHandleMenuNotice(entity.getGridId(), null); + // 孔村+ 转为项目并吹哨 + if (EventIssueItemState.ISSUE_CHANGE_TO_ITEM_AND_CIRCULATION_ASSISTANCE == dto.getState()) { + // 组装数据 + if (itemId != ""){ + this.issueChangeToItemAndCirculationAssistance(itemId,dto.getAdvice(),dto.getDeptResultDTOS()); + }else { + return new Result().error("转项目并吹哨失败,项目id不能为空"); + } + } return new Result(); } @@ -482,13 +518,13 @@ public class IssueServiceImpl extends BaseServiceImpl imp return baseDao.selectListIssueProgress(issueId); } - /** + /** * @Description: 议题:待处理事件 议题转项目结果短信通知 议题发起人 * @Param: [userId] - * @return: void - * @Author: zy - * @Date: 2020-01-08 - */ + * @return: void + * @Author: zy + * @Date: 2020-01-08 + */ private void issueSmsNotification(String userMobiles){ List list = new ArrayList<>(); list.add(userMobiles); @@ -603,4 +639,61 @@ public class IssueServiceImpl extends BaseServiceImpl imp // 更新议题表党员群名称 baseDao.updateBatchPartyGroupName(groups); } + + /** + * @Description: 孔村 转项目并吹哨,数据统计,调用原项目吹哨方法 + * @Param: [itemId, advice,List deptResultDTOS){ + ItemHandleSubmitFormDTO dto = new ItemHandleSubmitFormDTO(); + dto.setId(itemId); + dto.setHandleCategory(ItemHandleCategoryEnum.HANDLE_CIRCULATION_ASSISTANCE.getValue()); + dto.setHandleAdvice(advice); + dto.setOutHandleAdvice(advice); + dto.setDeptResultDTOS(deptResultDTOS); //流转协助部门 + itemService.modifyHandleResult(dto); + } + + /** + * 项目流转校验 + * + * @Params: [dto] + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: zy + * @Date: 2020/06/01 19:42 + */ + private Result checkItemCirculation(IssueWaitHandleSubmitFormDTO dto) { + // 判断流转部门不能为空 + if (null == dto.getDeptResultDTOS() || dto.getDeptResultDTOS().size() <= 0) { + return new Result().error("请选择流转协助部门"); + } + // 校验是否跨级流转 + String typeKey = ""; + for (ItemCirculationDeptResultDTO circulationDeptResultDTO : + dto.getDeptResultDTOS()) { + if (!"".equals(typeKey) && !typeKey.equals(circulationDeptResultDTO.getTypeKey())) { + return new Result().error("不可跨级流转协助,请重新选择流转协助部门"); + } + typeKey = circulationDeptResultDTO.getTypeKey(); + } + + // 如果当前流转协助是网格发起,判断其街道党工委是否已将该项目流转协助 + UserDetail user = SecurityUser.getUser(); + if (OrganizationTypeConstant.ORG_TYPE_GRID_PARTY.equals(user.getTypeKey())) { + Result completeDept = adminFeignClient.getCompleteDept(SecurityUser.getDeptId()); + if (!completeDept.success()) { + return new Result().error("获取机构信息失败,请稍后重试"); + } + // 获取街道党工委已流转协助部门 + List itemDeptDTOS = itemDeptService.listOfItemDept(dto.getId(), completeDept.getData().getStreetId()); + if (null != itemDeptDTOS && itemDeptDTOS.size() > 0) { + return new Result().error(completeDept.getData().getStreet() + "已将该项目流转协助到其他部门,不能重新流转协助"); + } + } + + return new Result(); + } }