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();
+ }
}