Browse Source

议题管理-议题转项目

dev
sunyuchao 5 years ago
parent
commit
245f451676
  1. 43
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java
  2. 32
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java
  3. 31
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProjectResultDTO.java
  4. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java
  5. 5
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
  6. 16
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java
  7. 11
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/feign/GovProjectFeignClient.java
  8. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/feign/fallback/GovProjectFeignClientFallBack.java
  9. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  10. 124
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  11. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  12. 6
      epmet-module/gov-project/gov-project-server/pom.xml
  13. 13
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  14. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  15. 1
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  16. 104
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

43
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.dto.form;
import com.epmet.dto.IssueDTO;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 议题管理-议题转项目-接口入参
* @Author sun
*/
@Data
public class ShiftProjectFormDTO implements Serializable {
private static final long serialVersionUID = 4859779755214502427L;
@NotBlank(message = "项目Id不能为空")
private String issueId;
@Length(max=1000,message = "公开答复内容不能超过1000位")
private String publicReply;
@NotBlank(message = "内部备注不能为空")
@Length(max=1000,message = "内部备注不能超过1000位")
private String internalRemark;
@Valid
private List<TickStaffFormDTO> staffList;
/**
* 议题详细数据
*/
private IssueDTO issueDTO;
/**
* token中工作人员Id
*/
private String staffId;
}

32
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java

@ -0,0 +1,32 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 议题管理-议题转项目-勾选的人员信息-接口入参
* @Author sun
*/
@Data
public class TickStaffFormDTO implements Serializable {
private static final long serialVersionUID = 4859779755214502427L;
@NotBlank(message = "机关Id不能为空")
private String agencyId;
/**
* 部门Id(为空表示勾选的人不是部门下的可能是组织下的也可能是网格下的)
*/
private String departmentId;
/**
* 网格Id(为空表示勾选的人不是网格下的可能是组织下的也可能是部门下的)
*/
private String gridId;
@NotBlank(message = "内部备注不能为空")
private String staffId;
}

31
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProjectResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 议题转项目调用gov-project服务--接口返参
* @Author sun
*/
@Data
public class IssueProjectResultDTO implements Serializable {
private static final long serialVersionUID = -1L;
/**
* 项目Id
*/
private String projectId;
/**
* 议题转项目当前操作人对应的处理部门名称(组织-网格)
*/
private String orgName;
/**
* 议题转项目时间(项目表创建时间)
*/
private Date shiftedTime;
}

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java

@ -44,7 +44,7 @@ public interface IssueConstant {
String ISSUE_RESI_TOPIC = "resi_topic"; String ISSUE_RESI_TOPIC = "resi_topic";
String SELECT_TOPIC_EXCEPTION = "获取话题数据失败"; String SELECT_TOPIC_EXCEPTION = "获取话题数据失败";
String SAVE_MSG_EXCEPTION = "关闭议题时给用户发送消息失败"; String SAVE_MSG_EXCEPTION = "发送消息失败";
/** /**
* 议题管理-操作人所属机构类型机构agency | 部门dept | 网格grid * 议题管理-操作人所属机构类型机构agency | 部门dept | 网格grid

5
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java

@ -21,5 +21,10 @@ public interface UserMessageConstant {
*/ */
String ISSUE_UNRESLOVED_MSG = "您好,您发表的话题\"%s\"问题无需解决,原因:%s"; String ISSUE_UNRESLOVED_MSG = "您好,您发表的话题\"%s\"问题无需解决,原因:%s";
/**
* 议题转项目消息模板
*/
String ISSUE_SHIFT_PROJECT_MSG = "您好,您发表的话题\"%s\"的问题,已由%s部门处理,请查看。";
} }

16
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java

@ -148,5 +148,21 @@ public class IssueManageController {
ValidatorUtils.validateEntity(issueDetail); ValidatorUtils.validateEntity(issueDetail);
return new Result<GovIssueDetailResultDTO>().ok(issueService.issueDetailGov(issueDetail)); return new Result<GovIssueDetailResultDTO>().ok(issueService.issueDetailGov(issueDetail));
} }
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题管理-议题转项目
**/
@PostMapping("shiftproject")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_SHIFT_PROJECT)
public Result shiftProject(@LoginUser TokenDto tokenDTO, @RequestBody ShiftProjectFormDTO formDTO) {
formDTO.setStaffId(tokenDTO.getUserId());
ValidatorUtils.validateEntity(formDTO);
issueService.shiftProject(formDTO);
return new Result();
}
} }

11
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/feign/GovProjectFeignClient.java

@ -2,7 +2,9 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.ShiftProjectFormDTO;
import com.epmet.dto.form.ShiftProjectsFromDTO; import com.epmet.dto.form.ShiftProjectsFromDTO;
import com.epmet.dto.result.IssueProjectResultDTO;
import com.epmet.dto.result.ShiftProjectResultDTO; import com.epmet.dto.result.ShiftProjectResultDTO;
import com.epmet.feign.fallback.GovProjectFeignClientFallBack; import com.epmet.feign.fallback.GovProjectFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
@ -27,4 +29,13 @@ public interface GovProjectFeignClient {
*/ */
@PostMapping("/gov/project/project/shiftprojectlist") @PostMapping("/gov/project/project/shiftprojectlist")
Result<List<ShiftProjectResultDTO>> getProjectByIssue(@RequestBody ShiftProjectsFromDTO fromDTO); Result<List<ShiftProjectResultDTO>> getProjectByIssue(@RequestBody ShiftProjectsFromDTO fromDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题管理-议题转项目
**/
@PostMapping("/gov/project/project/issueshiftproject")
Result<IssueProjectResultDTO> issueShiftProject(@RequestBody ShiftProjectFormDTO formDTO);
} }

7
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/feign/fallback/GovProjectFeignClientFallBack.java

@ -3,7 +3,9 @@ package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.ShiftProjectFormDTO;
import com.epmet.dto.form.ShiftProjectsFromDTO; import com.epmet.dto.form.ShiftProjectsFromDTO;
import com.epmet.dto.result.IssueProjectResultDTO;
import com.epmet.dto.result.ShiftProjectResultDTO; import com.epmet.dto.result.ShiftProjectResultDTO;
import com.epmet.feign.GovProjectFeignClient; import com.epmet.feign.GovProjectFeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -21,4 +23,9 @@ public class GovProjectFeignClientFallBack implements GovProjectFeignClient {
public Result<List<ShiftProjectResultDTO>> getProjectByIssue(ShiftProjectsFromDTO fromDTO) { public Result<List<ShiftProjectResultDTO>> getProjectByIssue(ShiftProjectsFromDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getProjectByIssue", fromDTO); return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getProjectByIssue", fromDTO);
} }
@Override
public Result<IssueProjectResultDTO> issueShiftProject(ShiftProjectFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "issueShiftProject", formDTO);
}
} }

8
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java

@ -101,4 +101,12 @@ public interface IssueService extends BaseService<IssueEntity> {
* @Description 议题管理-议题人员选择 * @Description 议题管理-议题人员选择
**/ **/
ProcessorListResultDTO processorList(ProcessorListFormDTO formDTO); ProcessorListResultDTO processorList(ProcessorListFormDTO formDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题管理-议题转项目
**/
void shiftProject(ShiftProjectFormDTO formDTO);
} }

124
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -12,6 +12,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.IssueDao; import com.epmet.dao.IssueDao;
import com.epmet.dao.IssueProjectRelationDao;
import com.epmet.dto.IssueDTO; import com.epmet.dto.IssueDTO;
import com.epmet.dto.IssueProcessDTO; import com.epmet.dto.IssueProcessDTO;
import com.epmet.dto.IssueVoteStatisticalDTO; import com.epmet.dto.IssueVoteStatisticalDTO;
@ -28,6 +29,7 @@ import com.epmet.dto.result.*;
import com.epmet.dto.form.UserMessageFormDTO; import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.entity.IssueEntity; import com.epmet.entity.IssueEntity;
import com.epmet.entity.IssueProcessEntity; import com.epmet.entity.IssueProcessEntity;
import com.epmet.entity.IssueProjectRelationEntity;
import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgFeignClient;
import com.epmet.feign.GovProjectFeignClient; import com.epmet.feign.GovProjectFeignClient;
import com.epmet.feign.MessageFeignClient; import com.epmet.feign.MessageFeignClient;
@ -77,6 +79,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
private GovIssueRedis govIssueRedis; private GovIssueRedis govIssueRedis;
@Autowired @Autowired
private GovProjectFeignClient govProjectFeignClient; private GovProjectFeignClient govProjectFeignClient;
@Autowired
private IssueProjectRelationDao issueProjectRelationDao;
protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class); protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class);
@ -106,6 +110,7 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
* @Author sun * @Author sun
* @Description 议题管理-关闭议题 * @Description 议题管理-关闭议题
**/ **/
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void closeIssue(CloseIssueFormDTO formDTO) { public void closeIssue(CloseIssueFormDTO formDTO) {
@ -123,12 +128,14 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
if (baseDao.updateById(entity) < NumConstant.ONE) { if (baseDao.updateById(entity) < NumConstant.ONE) {
throw new RenException(IssueConstant.UPPDATE_EXCEPTION); throw new RenException(IssueConstant.UPPDATE_EXCEPTION);
} }
//2:调用gov-org服务,查询组织网格名称 //2:调用gov-org服务,查询组织网格名称
AgencyGridResultDTO agencyGridResultDTO = new AgencyGridResultDTO(); AgencyGridResultDTO agencyGridResultDTO = new AgencyGridResultDTO();
agencyGridResultDTO.setAgencyId(entity.getOrgId()); agencyGridResultDTO.setAgencyId(entity.getOrgId());
agencyGridResultDTO.setGridId(entity.getGridId()); agencyGridResultDTO.setGridId(entity.getGridId());
Result<AgencyGridResultDTO> resultDTO = govOrgFeignClient.getAgencyAndGrid(agencyGridResultDTO); Result<AgencyGridResultDTO> resultDTO = govOrgFeignClient.getAgencyAndGrid(agencyGridResultDTO);
agencyGridResultDTO = resultDTO.getData(); agencyGridResultDTO = resultDTO.getData();
//3:议题进展记录表新增数据 //3:议题进展记录表新增数据
IssueProcessEntity processEntity = new IssueProcessEntity(); IssueProcessEntity processEntity = new IssueProcessEntity();
processEntity.setIssueId(formDTO.getIssueId()); processEntity.setIssueId(formDTO.getIssueId());
@ -138,36 +145,35 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
processEntity.setOperationExplain(formDTO.getCloseReason()); processEntity.setOperationExplain(formDTO.getCloseReason());
processEntity.setOrgName(agencyGridResultDTO.getAgencyName() + "-" + agencyGridResultDTO.getGridName()); processEntity.setOrgName(agencyGridResultDTO.getAgencyName() + "-" + agencyGridResultDTO.getGridName());
issueProcessDao.insert(processEntity); issueProcessDao.insert(processEntity);
//4:调用epmet-message服务,给居民端话题创建人和议题发起人发送消息 //4:调用epmet-message服务,给居民端话题创建人和议题发起人发送消息
if (!saveUserMessageList(formDTO, entity).success()) { //4.1:调用resi-group查询话题创建人数据(目前议题来源只有来自话题)
throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION); Result<ResiTopicDTO> resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId());
if (!resultTopicDTO.success() || null == resultTopicDTO.getData()) {
throw new RenException(IssueConstant.SELECT_TOPIC_EXCEPTION);
} }
ResiTopicDTO topicDTO = resultTopicDTO.getData();
//4.2:创建消息模板
String messageContent = "";
if (IssueConstant.ISSUE_RESLOVED.equals(formDTO.getResolveType())) {
messageContent = String.format(UserMessageConstant.ISSUE_RESLOVED_MSG, topicDTO.getTopicContent(), formDTO.getCloseReason());
} else if (IssueConstant.ISSUE_UNRESLOVED.equals(formDTO.getResolveType())) {
messageContent = String.format(UserMessageConstant.ISSUE_UNRESLOVED_MSG, topicDTO.getTopicContent(), formDTO.getCloseReason());
} }
//4.3:调用服务,发送消息
@Override if (!saveUserMessageList(topicDTO, messageContent, entity).success()) {
public List<GridVotingIssueCountResultDTO> queryVotingIssueCount(List<String> gridIdList) { throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION);
List<GridVotingIssueCountResultDTO> list = new ArrayList<>();
for (String gridId : gridIdList) {
GridVotingIssueCountResultDTO gridVotingIssueCountResultDTO = new GridVotingIssueCountResultDTO();
gridVotingIssueCountResultDTO.setGridId(gridId);
Long auditingCount = govIssueRedis.queryVotingIssueCount(gridId);
gridVotingIssueCountResultDTO.setCount(auditingCount);
list.add(gridVotingIssueCountResultDTO);
} }
return list;
//5:缓存中网格下表决中的议题总数减1
govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId());
} }
/** /**
* @Description 关闭议题给话题创建人和议题发起人发送消息 * @Description 关闭议题议题转项目时给话题创建人和议题发起人发送消息
* @author sun * @author sun
*/ */
private Result saveUserMessageList(CloseIssueFormDTO formDTO, IssueEntity entity) { private Result saveUserMessageList(ResiTopicDTO topicDTO, String messageContent, IssueEntity entity) {
//1:调用resi-group查询话题创建人数据(目前议题来源只有来自话题)
Result<ResiTopicDTO> resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId());
if (!resultTopicDTO.success() || null == resultTopicDTO.getData()) {
throw new RenException(IssueConstant.SELECT_TOPIC_EXCEPTION);
}
ResiTopicDTO topicDTO = resultTopicDTO.getData();
//2:分别给话题创建人、议题发起人发送消息 //2:分别给话题创建人、议题发起人发送消息
List<UserMessageFormDTO> msgList = new ArrayList<>(); List<UserMessageFormDTO> msgList = new ArrayList<>();
UserMessageFormDTO msgDTO = new UserMessageFormDTO(); UserMessageFormDTO msgDTO = new UserMessageFormDTO();
@ -175,12 +181,6 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
msgDTO.setGridId(entity.getGridId()); msgDTO.setGridId(entity.getGridId());
msgDTO.setApp(AppClientConstant.APP_RESI); msgDTO.setApp(AppClientConstant.APP_RESI);
msgDTO.setTitle(UserMessageConstant.ISSUE_TITLE); msgDTO.setTitle(UserMessageConstant.ISSUE_TITLE);
String messageContent = "";
if (IssueConstant.ISSUE_RESLOVED.equals(formDTO.getResolveType())) {
messageContent = String.format(UserMessageConstant.ISSUE_RESLOVED_MSG, topicDTO.getTopicContent(), formDTO.getCloseReason());
} else if (IssueConstant.ISSUE_UNRESLOVED.equals(formDTO.getResolveType())) {
messageContent = String.format(UserMessageConstant.ISSUE_UNRESLOVED_MSG, topicDTO.getTopicContent(), formDTO.getCloseReason());
}
msgDTO.setMessageContent(messageContent); msgDTO.setMessageContent(messageContent);
msgDTO.setReadFlag(ReadFlagConstant.UN_READ); msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
msgDTO.setUserId(topicDTO.getCreatedBy()); msgDTO.setUserId(topicDTO.getCreatedBy());
@ -190,6 +190,19 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return messageFeignClient.saveUserMessageList(msgList); return messageFeignClient.saveUserMessageList(msgList);
} }
@Override
public List<GridVotingIssueCountResultDTO> queryVotingIssueCount(List<String> gridIdList) {
List<GridVotingIssueCountResultDTO> list = new ArrayList<>();
for (String gridId : gridIdList) {
GridVotingIssueCountResultDTO gridVotingIssueCountResultDTO = new GridVotingIssueCountResultDTO();
gridVotingIssueCountResultDTO.setGridId(gridId);
Long auditingCount = govIssueRedis.queryVotingIssueCount(gridId);
gridVotingIssueCountResultDTO.setCount(auditingCount);
list.add(gridVotingIssueCountResultDTO);
}
return list;
}
/** /**
* @param formDTO * @param formDTO
* @return * @return
@ -377,4 +390,61 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return null; return null;
} }
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题管理-议题转项目
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void shiftProject(ShiftProjectFormDTO formDTO) {
//因需要保证议题表中的转项目时间与创建项目时间一致 因此先新增项目数据再更新议题数据
//1:查询议题数据
IssueEntity entity = baseDao.selectById(formDTO.getIssueId());
formDTO.setIssueDTO(ConvertUtils.sourceToTarget(entity, IssueDTO.class));
//2:调用gov-project服务,新增项目各业务表初始数据
Result<IssueProjectResultDTO> resultDTO = govProjectFeignClient.issueShiftProject(formDTO);
IssueProjectResultDTO issueProjectResultDTO = resultDTO.getData();
//3:更新议题相关业务表数据
//3.1:更新议题表数据
entity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT);
entity.setShiftedTime(issueProjectResultDTO.getShiftedTime());
baseDao.updateById(entity);
//3.2:议题处理进展表新增数据
IssueProcessEntity processEntity = new IssueProcessEntity();
processEntity.setIssueId(entity.getId());
processEntity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT);
processEntity.setOrgType(IssueConstant.ISSUE_GRID);
processEntity.setOrgId(entity.getGridId());
processEntity.setOrgName(issueProjectResultDTO.getOrgName());
issueProcessDao.insert(processEntity);
//3.3:议题项目关系表新增数据
IssueProjectRelationEntity relationEntity = new IssueProjectRelationEntity();
relationEntity.setIssueId(entity.getId());
relationEntity.setProjectId(issueProjectResultDTO.getProjectId());
issueProjectRelationDao.insert(relationEntity);
//4:调用epmet-message服务,给居民端话题创建人和议题发起人发送消息
//4.1:调用resi-group查询话题创建人数据(目前议题来源只有来自话题)
Result<ResiTopicDTO> resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId());
if (!resultTopicDTO.success() || null == resultTopicDTO.getData()) {
throw new RenException(IssueConstant.SELECT_TOPIC_EXCEPTION);
}
ResiTopicDTO topicDTO = resultTopicDTO.getData();
//4.2:创建消息模板
String messageContent = String.format(UserMessageConstant.ISSUE_SHIFT_PROJECT_MSG, topicDTO.getTopicContent(), issueProjectResultDTO.getOrgName());
//4.3:调用服务,发送消息
if (!saveUserMessageList(topicDTO, messageContent, entity).success()) {
throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION);
}
//5:缓存中网格下表决中的议题总数减1
govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId());
}
} }

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -369,7 +369,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
/** /**
* @param subAgencyPids 当前组织的下一级组织的pids字段值(当前组织的pids+":"+当前组织Id) * @param subAgencyPids 当前组织的下一级组织的pids字段值(当前组织的pids+":"+当前组织Id)
* @return * @return
* @Author 迭代查询当前组织的所有下级组织树结构数据 * @Author
* @Description 迭代查询当前组织的所有下级组织树结构数据
*/ */
private List<AgencySubResultDTO> getDepartmentList(String subAgencyPids) { private List<AgencySubResultDTO> getDepartmentList(String subAgencyPids) {
List<AgencySubResultDTO> subAgencyList = baseDao.selectSubAgencyList(subAgencyPids); List<AgencySubResultDTO> subAgencyList = baseDao.selectSubAgencyList(subAgencyPids);

6
epmet-module/gov-project/gov-project-server/pom.xml

@ -78,6 +78,12 @@
<version>2.0.0</version> <version>2.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>gov-issue-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

13
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -26,7 +26,9 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.ProjectDTO; import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.ShiftProjectFormDTO;
import com.epmet.dto.form.ShiftProjectsFromDTO; import com.epmet.dto.form.ShiftProjectsFromDTO;
import com.epmet.dto.result.IssueProjectResultDTO;
import com.epmet.dto.result.ShiftProjectResultDTO; import com.epmet.dto.result.ShiftProjectResultDTO;
import com.epmet.excel.ProjectExcel; import com.epmet.excel.ProjectExcel;
import com.epmet.service.ProjectService; import com.epmet.service.ProjectService;
@ -106,4 +108,15 @@ public class ProjectController {
return new Result<List<ShiftProjectResultDTO>>().ok(list); return new Result<List<ShiftProjectResultDTO>>().ok(list);
} }
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题转项目-项目各业务表初始化数据
**/
@PostMapping("issueshiftproject")
public Result<IssueProjectResultDTO> issueShiftProject(@RequestBody ShiftProjectFormDTO formDTO) {
return new Result<IssueProjectResultDTO>().ok(projectService.issueShiftProject(formDTO));
}
} }

8
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -162,4 +162,12 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @return java.util.List<com.epmet.dto.ProjectDTO> * @return java.util.List<com.epmet.dto.ProjectDTO>
*/ */
List<ShiftProjectResultDTO> getProjectByIssue(ShiftProjectsFromDTO fromDTO); List<ShiftProjectResultDTO> getProjectByIssue(ShiftProjectsFromDTO fromDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题转项目-项目各业务表初始化数据
**/
IssueProjectResultDTO issueShiftProject(ShiftProjectFormDTO formDTO);
} }

1
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -181,7 +181,6 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
if (null == staffEntity) { if (null == staffEntity) {
throw new RenException(ProjectConstant.SELECT_PROJECTSTAFF_EXCEPTION); throw new RenException(ProjectConstant.SELECT_PROJECTSTAFF_EXCEPTION);
} }
staffEntity.setId(formDTO.getProjectStaffId());
staffEntity.setIsHandle(ProjectConstant.HANDLE); staffEntity.setIsHandle(ProjectConstant.HANDLE);
if (projectStaffDao.updateById(staffEntity) < NumConstant.ONE) { if (projectStaffDao.updateById(staffEntity) < NumConstant.ONE) {
throw new RenException(ProjectConstant.UPDATE_PROJECTSTAFF_EXCEPTION); throw new RenException(ProjectConstant.UPDATE_PROJECTSTAFF_EXCEPTION);

104
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -29,6 +29,7 @@ import com.epmet.constant.ParameterKeyConstant;
import com.epmet.constant.ProjectConstant; import com.epmet.constant.ProjectConstant;
import com.epmet.dao.ProjectDao; import com.epmet.dao.ProjectDao;
import com.epmet.dto.CustomerProjectParameterDTO; import com.epmet.dto.CustomerProjectParameterDTO;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.ProjectDTO; import com.epmet.dto.ProjectDTO;
import com.epmet.dto.ProjectStaffDTO; import com.epmet.dto.ProjectStaffDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
@ -37,6 +38,7 @@ import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity; import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity; import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.CommonFeignClient; import com.epmet.feign.CommonFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectRedis; import com.epmet.redis.ProjectRedis;
import com.epmet.service.CustomerProjectParameterService; import com.epmet.service.CustomerProjectParameterService;
import com.epmet.service.ProjectProcessService; import com.epmet.service.ProjectProcessService;
@ -49,6 +51,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 项目表 * 项目表
@ -69,6 +72,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectStaffService projectStaffService; private ProjectStaffService projectStaffService;
@Autowired @Autowired
private ProjectProcessService projectProcessService; private ProjectProcessService projectProcessService;
@Autowired
private GovOrgFeignClient govOrgFeignClient;
private final static String ONE_DAY = "<1"; private final static String ONE_DAY = "<1";
@ -379,4 +384,103 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return detentionDays.getData().get(0).getDetentionDays(); return detentionDays.getData().get(0).getDetentionDays();
} }
/**
* @param formDTO
* @return
* @Author sun
* @Description 议题转项目-项目各业务表初始化数据
**/
@Override
@Transactional(rollbackFor = Exception.class)
public IssueProjectResultDTO issueShiftProject(ShiftProjectFormDTO formDTO) {
IssueProjectResultDTO issueProjectResultDTO = new IssueProjectResultDTO();
List<TickStaffFormDTO> staffList = formDTO.getStaffList();
IssueDTO issueDTO = formDTO.getIssueDTO();
//1:调用gov-org服务,获取所有勾选人员以及议题数据对应的组织信息、部门信息、网格信息用于对处理部门和ORG_ID_PATH字段的赋值使用
List<String> agencyIdList = staffList.stream().map(TickStaffFormDTO::getAgencyId).collect(Collectors.toList());
agencyIdList.add(issueDTO.getOrgId());
agencyIdList = new ArrayList<String>(new LinkedHashSet<>(agencyIdList));
List<String> deptIdList = staffList.stream().map(TickStaffFormDTO::getDepartmentId).collect(Collectors.toList());
deptIdList = new ArrayList<String>(new LinkedHashSet<>(deptIdList));
List<String> gridIdList = staffList.stream().map(TickStaffFormDTO::getGridId).collect(Collectors.toList());
gridIdList.add(issueDTO.getGridId());
gridIdList = new ArrayList<String>(new LinkedHashSet<>(gridIdList));
AgencyDeptGridFormDTO agencyDeptGridFormDTO = new AgencyDeptGridFormDTO();
agencyDeptGridFormDTO.setAgencyIdList(agencyIdList);
agencyDeptGridFormDTO.setDeptIdList(deptIdList);
agencyDeptGridFormDTO.setGridIdList(gridIdList);
Result<AgencyDeptGridResultDTO> resultDTO = govOrgFeignClient.getAgencyDeptGridList(agencyDeptGridFormDTO);
AgencyDeptGridResultDTO agencyDeptGrid = resultDTO.getData();
//2:项目表新增数据
ProjectEntity projectEntity = new ProjectEntity();
projectEntity.setAgencyId(issueDTO.getOrgId());
projectEntity.setCustomerId(issueDTO.getCustomerId());
projectEntity.setOrigin(ProjectConstant.ISSUE);
projectEntity.setOriginId(issueDTO.getId());
projectEntity.setTitle(issueDTO.getIssueTitle());
projectEntity.setStatus(ProjectConstant.PENDING);
projectEntity.setOrgIdPath(issueDTO.getOrgIdPath());
baseDao.insert(projectEntity);
//3:项目处理进展表新增数据
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setStaffId(formDTO.getStaffId());
processEntity.setOperation(ProjectConstant.OPERATION_CREATED);
processEntity.setOperationName(ProjectConstant.OPERATION_CREATED_NAME);
processEntity.setPublicReply(formDTO.getPublicReply());
processEntity.setInternalRemark(formDTO.getInternalRemark());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (issueDTO.getOrgId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
}
});
agencyDeptGrid.getGridList().forEach(grid -> {
if (issueDTO.getGridId().equals(grid.getId())) {
processEntity.setDepartmentName(processEntity.getDepartmentName() + "-" + grid.getGridName());
}
});
projectProcessService.insert(processEntity);
//4:项目人员关联表批量新增数据
List<ProjectStaffEntity> entityList = new ArrayList<>();
staffList.forEach(ts -> {
ProjectStaffEntity entity = ConvertUtils.sourceToTarget(ts, ProjectStaffEntity.class);
entity.setOrgId(ts.getAgencyId());
entity.setProjectId(projectEntity.getId());
entity.setProcessId(processEntity.getId());
entity.setIsHandle(ProjectConstant.UNHANDLED);
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (ts.getAgencyId().equals(agency.getId())) {
entity.setCustomerId(agency.getCustomerId());
entity.setOrgIdPath(agency.getPids() + ":" + agency.getId());
entity.setDepartmentName(agency.getOrganizationName());
}
});
if (StringUtils.isNotBlank(ts.getDepartmentId())) {
agencyDeptGrid.getDeptList().forEach(dept -> {
if (ts.getDepartmentId().equals(dept.getId())) {
entity.setDepartmentName(entity.getDepartmentName() + "-" + dept.getDepartmentName());
}
});
}
if (StringUtils.isNotBlank(ts.getGridId())) {
agencyDeptGrid.getGridList().forEach(grid -> {
if (ts.getGridId().equals(grid.getId())) {
entity.setDepartmentName(entity.getDepartmentName() + "-" + grid.getGridName());
}
});
}
entityList.add(entity);
});
projectStaffService.insertBatch(entityList);
//5:返回接口参数
issueProjectResultDTO.setProjectId(projectEntity.getId());
issueProjectResultDTO.setOrgName(processEntity.getDepartmentName());
issueProjectResultDTO.setShiftedTime(projectEntity.getCreatedTime());
return issueProjectResultDTO;
}
} }
Loading…
Cancel
Save