Browse Source

项目退回V2

dev_shibei_match
sunyuchao 5 years ago
parent
commit
5c0be7dfc1
  1. 10
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java
  2. 12
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java
  3. 6
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  4. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java
  5. 137
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  6. 12
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

10
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java

@ -5,6 +5,7 @@ import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @author zhaoqifeng
@ -46,4 +47,13 @@ public class ReturnFromDTO implements Serializable {
* 部门名
*/
private String departmentName;
/**
* 公开答复对应文件集合
*/
private List<FileDTO> publicFile;
/**
* 内部备注对应文件集合
*/
private List<FileDTO> internalFile;
}

12
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java

@ -294,5 +294,17 @@ public class ProjectTraceController {
return new Result();
}
/**
* @param tokenDto fromDTO
* @Description 项目退回V2.0接口
* @author sun
*/
@PostMapping("return-v2")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PROJECT_TRACE_RETURN)
public Result projectReturnV2(@LoginUser TokenDto tokenDto, @RequestBody ReturnFromDTO fromDTO) {
projectTraceService.projectReturnV2(tokenDto, fromDTO);
return new Result();
}
}

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

@ -255,4 +255,10 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @return void
*/
void saveFile(List<FileDTO> publicFile, List<FileDTO> internalFile, String customerId, String projectId, String processId);
/**
* @param fromDTO
* @Description 项目退回V2.0接口
*/
void projectReturnV2(ReturnFromDTO fromDTO);
}

7
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java

@ -135,4 +135,11 @@ public interface ProjectTraceService {
* @date 2020/12/21 下午3:55
*/
List<ProcessListV2ResultDTO> processListV2(ProcessListV2FormDTO formDTO);
/**
* @param tokenDto fromDTO
* @Description 项目退回V2.0接口
* @author sun
*/
void projectReturnV2(TokenDto tokenDto, ReturnFromDTO fromDTO);
}

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

@ -1623,4 +1623,141 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessAttachmentService.insertBatch(list);
}
}
/**
* @param fromDTO
* @Description 项目退回V2.0接口
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void projectReturnV2(ReturnFromDTO fromDTO) {
//公开回复内容审核
if (com.alibaba.nacos.client.utils.StringUtils.isNotBlank(fromDTO.getPublicReply())) {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
taskDTO.setContent(fromDTO.getPublicReply());
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode());
}
}
}
ProjectEntity projectEntity = baseDao.selectById(fromDTO.getProjectId());
if (ProjectConstant.CLOSED.equals(projectEntity.getStatus())) {
throw new RenException(EpmetErrorCode.PROJECT_IS_CLOSED.getCode());
}
Date current = new Date();
//更新项目关联表
ProjectStaffEntity projectStaffEntity = new ProjectStaffEntity();
projectStaffEntity.setId(fromDTO.getProjectStaffId());
projectStaffEntity.setIsHandle(ProjectConstant.HANDLE);
projectStaffService.updateById(projectStaffEntity);
//查找对应的project_staff的信息,为了取出机关的信息,给即将要生成的“退回”节点赋值
ProjectStaffEntity sourceProjectStaff = projectStaffService.selectById(fromDTO.getProjectStaffId());
if(null == sourceProjectStaff){
log.error("com.epmet.service.impl.ProjectServiceImpl.projectReturn,找不到发起退回的项目相关人员的记录,参数:{}",JSON.toJSONString(fromDTO));
throw new RenException("找不到发起退回的项目相关人员的记录");
}
//结案记录加入项目进展表
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(sourceProjectStaff.getCustomerId());
projectProcessEntity.setDepartmentName(fromDTO.getDepartmentName());
projectProcessEntity.setOrgIdPath(sourceProjectStaff.getOrgIdPath());
projectProcessEntity.setGridId(sourceProjectStaff.getGridId());
projectProcessEntity.setDepartmentId(sourceProjectStaff.getDepartmentId());
projectProcessEntity.setAgencyId(sourceProjectStaff.getOrgId());
projectProcessEntity.setOperation(ProjectConstant.OPERATION_RETURN);
projectProcessEntity.setOperationName(ProjectConstant.OPERATION_RETURN_NAME);
projectProcessEntity.setPublicReply(fromDTO.getPublicReply());
projectProcessEntity.setInternalRemark(fromDTO.getInternalRemark());
projectProcessEntity.setStaffId(fromDTO.getUserId());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
if (fromDTO.getPublicFile().size() > NumConstant.ZERO || fromDTO.getInternalFile().size() > NumConstant.ZERO) {
saveFile(fromDTO.getPublicFile(), fromDTO.getInternalFile(), sourceProjectStaff.getCustomerId(), fromDTO.getProjectId(), projectProcessEntity.getId());
}//end
//将人员关系添加到项目关联表
ProjectStaffDTO projectStaffDTO = projectStaffService.getProjectStaffInfo(fromDTO.getProjectProcessId());
ProjectStaffEntity projectStaff = ConvertUtils.sourceToTarget(projectStaffDTO, ProjectStaffEntity.class);
projectStaff.setId(null);
//防止将被退回的项目相关人员节点的创建时间赋值给新增的相关人员节点的创建时间,否则数据统计将出现误差
projectStaff.setCreatedTime(current);
projectStaff.setUpdatedTime(current);
projectStaff.setProcessId(projectProcessEntity.getId());
projectStaff.setIsHandle(ProjectConstant.UNHANDLED);
projectStaffService.insert(projectStaff);
//更新退回发起人的节点耗时记录
ProjectOrgRelationEntity orientRelation = relationDao.selectByProjectStaffId(fromDTO.getProjectStaffId());
if(null == orientRelation){
log.error("com.epmet.service.impl.ProjectServiceImpl.projectReturn,找不到发起退回的项目相关人员的节点耗时记录,参数:{}",JSON.toJSONString(fromDTO));
throw new RenException("找不到发起退回的项目相关人员的节点耗时记录");
}
ProjectOrgRelationEntity relationDto = new ProjectOrgRelationEntity();
relationDto.setProjectStaffId(orientRelation.getProjectStaffId());
relationDto.setHandledDate(current);
Integer costTime = calculateDelta_T(ProjectConstant.IMPRECISE_CALCULATION,
ProjectConstant.CALCULATION_TYPE_DEFAULT,
orientRelation.getProjectStaffId(),
orientRelation.getInformedDate(),
current);
relationDto.setTotalPeriod(costTime);
relationDto.setOperation(ProjectConstant.OPERATION_RETURN);
if(null == orientRelation.getFirstDealtDate()){
relationDto.setFirstDealtDate(current);
relationDto.setFirstReplyPeriod(costTime);
}
relationDao.maintainTimePropertyConsistency(relationDto);
//初始化被退回人的节点耗时记录
ProjectOrgRelationEntity newRelation = new ProjectOrgRelationEntity();
newRelation.setProjectStaffId(projectStaff.getId());
newRelation.setSourceOperation(ProjectConstant.OPERATION_RETURN);
newRelation.setInformedDate(current);
relationDao.insert(newRelation);
//通知
List<UserMessageFormDTO> msgList = new ArrayList<>();
UserMessageFormDTO messageFormDTO = new UserMessageFormDTO();
messageFormDTO.setCustomerId(projectEntity.getCustomerId());
messageFormDTO.setApp(ProjectConstant.GOV);
messageFormDTO.setGridId("*");
messageFormDTO.setUserId(projectStaffDTO.getStaffId());
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle()));
messageFormDTO.setReadFlag(Constant.UNREAD);
msgList.add(messageFormDTO);
messageFeignClient.saveUserMessageList(msgList);
//2020.10.26 添加项目退回给勾选人推送微信订阅消息 sun
List<WxSubscribeMessageFormDTO> wxmpMsgList = new ArrayList<>();
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
msg.setClientType(AppClientConstant.APP_GOV);
msg.setUserId(projectStaffDTO.getStaffId());
msg.setBehaviorType("项目消息");
msg.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle()));
msg.setMessageTime(new Date());
msg.setGridId("*");
wxmpMsgList.add(msg);
//发送微信订阅消息 sun
logger.info("项目退回,开始推送微信订阅消息");
Result result = epmetMessageOpenFeignClient.sendWxSubscribeMessage(wxmpMsgList);
if (!result.success()) {
logger.error("项目退回成功,发送微信订阅消息失败" + JSON.toJSONString(result));
}
}
}

12
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -159,4 +159,16 @@ public class ProjectTraceServiceImpl implements ProjectTraceService {
}
return processList;
}
/**
* @param tokenDto fromDTO
* @Description 项目退回V2.0接口
* @author sun
*/
@Override
public void projectReturnV2(TokenDto tokenDto, ReturnFromDTO fromDTO) {
fromDTO.setUserId(tokenDto.getUserId());
projectService.projectReturn(fromDTO);
}
}

Loading…
Cancel
Save