Browse Source

项目超期滞留提醒定时任务

dev
zhaoqifeng 5 years ago
parent
commit
40bc5d0320
  1. 21
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ProjectSendMessageService.java
  2. 35
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ProjectSendMessageServiceImpl.java
  3. 43
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ProjectSendMessageTask.java
  4. 11
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java
  5. 14
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java
  6. 6
      epmet-module/gov-project/gov-project-server/pom.xml
  7. 21
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  8. 18
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/CustomerProjectParameterDao.java
  9. 27
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/CustomerProjectParameterService.java
  10. 9
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  11. 37
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/CustomerProjectParameterServiceImpl.java
  12. 42
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  13. 34
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/CustomerProjectParameterDao.xml

21
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ProjectSendMessageService.java

@ -0,0 +1,21 @@
package com.epmet.service;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/10/26 15:19
*/
public interface ProjectSendMessageService {
/**
* 滞留提醒
* @author zhaoqifeng
* @date 2020/10/26 15:21
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
Result projectSendMessage(ExtractOriginFormDTO formDTO);
}

35
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ProjectSendMessageServiceImpl.java

@ -0,0 +1,35 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.service.ProjectSendMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/10/26 15:22
*/
@Service
public class ProjectSendMessageServiceImpl implements ProjectSendMessageService {
@Autowired
private GovProjectOpenFeignClient govProjectOpenFeignClient;
/**
* 滞留提醒
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author zhaoqifeng
* @date 2020/10/26 15:21
*/
@Override
public Result projectSendMessage(ExtractOriginFormDTO formDTO) {
ProjectDTO projectDTO = new ProjectDTO();
projectDTO.setCustomerId(formDTO.getCustomerId());
return govProjectOpenFeignClient.sendMessageJob(projectDTO);
}
}

43
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ProjectSendMessageTask.java

@ -0,0 +1,43 @@
package com.epmet.task;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.service.ProjectSendMessageService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/10/26 15:26
*/
@Component("projectSendMessageTask")
public class ProjectSendMessageTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private ProjectSendMessageService projectSendMessageService;
/**
* 执行定时任务接口
*
* @param params 参数多参数使用JSON数据
*/
@Override
public void run(String params) {
logger.info("FactOriginExtractTask定时任务正在执行,参数为:{}", params);
ExtractOriginFormDTO formDTO = new ExtractOriginFormDTO();
if (StringUtils.isNotBlank(params)) {
formDTO = JSON.parseObject(params, ExtractOriginFormDTO.class);
}
Result result = projectSendMessageService.projectSendMessage(formDTO);
if (result.success()) {
logger.info("FactOriginExtractTask定时任务执行成功");
} else {
logger.error("FactOriginExtractTask定时任务执行失败:" + result.getMsg());
}
}
}

11
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java

@ -2,6 +2,7 @@ package com.epmet.feign;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.ProcessListFormDTO; import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.ProjectListFromDTO; import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.result.PendProjectListResultDTO; import com.epmet.dto.result.PendProjectListResultDTO;
import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO; import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO;
@ -33,6 +34,16 @@ public interface GovProjectOpenFeignClient {
@PostMapping("gov/project/project/pendprojectlist") @PostMapping("gov/project/project/pendprojectlist")
Result<List<PendProjectListResultDTO>> getPendProjectList(@RequestBody ProjectListFromDTO fromDTO); Result<List<PendProjectListResultDTO>> getPendProjectList(@RequestBody ProjectListFromDTO fromDTO);
/**
* 滞留消息提醒定时任务
* @author zhaoqifeng
* @date 2020/10/26 14:05
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("gov/project/project/sendmessagejob")
Result sendMessageJob(@RequestBody ProjectDTO formDTO);
@PostMapping("gov/project/trace/processlistnotrule") @PostMapping("gov/project/trace/processlistnotrule")
Result<ProcessAndCurrentDeptResultDTO> getProcessList(@RequestBody ProcessListFormDTO fromDTO); Result<ProcessAndCurrentDeptResultDTO> getProcessList(@RequestBody ProcessListFormDTO fromDTO);
} }

14
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java

@ -3,6 +3,7 @@ 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.ProjectDTO;
import com.epmet.dto.form.ProcessListFormDTO; import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.form.ProjectListFromDTO; import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.result.PendProjectListResultDTO; import com.epmet.dto.result.PendProjectListResultDTO;
@ -26,6 +27,19 @@ public class GovProjectOpenFeignClientFallback implements GovProjectOpenFeignCli
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getPendProjectList", fromDTO); return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getPendProjectList", fromDTO);
} }
/**
* 滞留消息提醒定时任务
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author zhaoqifeng
* @date 2020/10/26 14:05
*/
@Override
public Result sendMessageJob(ProjectDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "sendMessageJob", formDTO);
}
@Override @Override
public Result<ProcessAndCurrentDeptResultDTO> getProcessList(ProcessListFormDTO fromDTO) { public Result<ProcessAndCurrentDeptResultDTO> getProcessList(ProcessListFormDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getProcessList", fromDTO); return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getProcessList", fromDTO);

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

@ -96,6 +96,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>oper-crm-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

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

@ -151,12 +151,33 @@ public class ProjectController {
List<PendProjectListResultDTO> result = projectService.getPendProjectList(fromDTO); List<PendProjectListResultDTO> result = projectService.getPendProjectList(fromDTO);
return new Result<List<PendProjectListResultDTO>>().ok(result); return new Result<List<PendProjectListResultDTO>>().ok(result);
} }
/**
* 滞留消息提醒
* @author zhaoqifeng
* @date 2020/10/26 14:02
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("message") @PostMapping("message")
public Result sendMessage(@RequestBody ProjectDTO formDTO) { public Result sendMessage(@RequestBody ProjectDTO formDTO) {
projectService.sendMessage(formDTO.getCustomerId()); projectService.sendMessage(formDTO.getCustomerId());
return new Result(); return new Result();
} }
/**
* 滞留消息提醒定时任务
* @author zhaoqifeng
* @date 2020/10/26 14:03
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("sendmessagejob")
public Result sendMessageJob(@RequestBody ProjectDTO formDTO) {
projectService.sendMessageJob(formDTO);
return new Result();
}
@PostMapping("compensation") @PostMapping("compensation")
public Result compensation(){ public Result compensation(){
projectService.projectProcessCostTimeDataCompensation(); projectService.projectProcessCostTimeDataCompensation();

18
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/CustomerProjectParameterDao.java

@ -52,4 +52,22 @@ public interface CustomerProjectParameterDao extends BaseDao<CustomerProjectPara
*/ */
List<CustomerProjectParameterDTO> getParameterByCustomer(@Param("customerId") String customerId); List<CustomerProjectParameterDTO> getParameterByCustomer(@Param("customerId") String customerId);
/**
* 获取推送时间范围内的客户ID
* @author zhaoqifeng
* @date 2020/10/26 13:44
* @param
* @return java.util.List<com.epmet.dto.CustomerProjectParameterDTO>
*/
CustomerProjectParameterDTO getPushTime(@Param("customerId") String customerId);
/**
* 获取默认配置
* @author zhaoqifeng
* @date 2020/10/26 14:59
* @param
* @return com.epmet.dto.CustomerProjectParameterDTO
*/
CustomerProjectParameterDTO getDefaultPushTime();
CustomerProjectParameterDTO getPushTimeConfig(@Param("customerId") String customerId);
} }

27
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/CustomerProjectParameterService.java

@ -110,4 +110,31 @@ public interface CustomerProjectParameterService extends BaseService<CustomerPro
* @return java.util.List<com.epmet.dto.CustomerProjectParameterDTO> * @return java.util.List<com.epmet.dto.CustomerProjectParameterDTO>
*/ */
List<CustomerProjectParameterDTO> getParameterByCustomer(String customerId); List<CustomerProjectParameterDTO> getParameterByCustomer(String customerId);
/**
* 获取推送时间范围内的客户ID
* @author zhaoqifeng
* @date 2020/10/26 13:43
* @param customerId
* @return com.epmet.dto.CustomerProjectParameterDTO
*/
CustomerProjectParameterDTO getPushTime(String customerId);
/**
* 获取默认配置
* @author zhaoqifeng
* @date 2020/10/26 14:58
* @param
* @return com.epmet.dto.CustomerProjectParameterDTO
*/
CustomerProjectParameterDTO getDefaultPushTime();
/**
* 获取推送时间范围内的客户ID
* @author zhaoqifeng
* @date 2020/10/26 13:43
* @param customerId
* @return com.epmet.dto.CustomerProjectParameterDTO
*/
CustomerProjectParameterDTO getPushTimeConfig(String customerId);
} }

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

@ -198,6 +198,15 @@ public interface ProjectService extends BaseService<ProjectEntity> {
*/ */
void sendMessage(String customerId); void sendMessage(String customerId);
/**
* 项目滞留超期提醒定时任务
* @author zhaoqifeng
* @date 2020/10/26 10:53
* @param dto
* @return void
*/
void sendMessageJob(ProjectDTO dto);
/** /**
* @Description 项目节点耗时数据补齐 * @Description 项目节点耗时数据补齐

37
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/CustomerProjectParameterServiceImpl.java

@ -120,4 +120,41 @@ public class CustomerProjectParameterServiceImpl extends BaseServiceImpl<Custome
return baseDao.getParameterByCustomer(customerId); return baseDao.getParameterByCustomer(customerId);
} }
/**
* 获取推送时间范围内的客户ID
*@param customerId
* @return java.util.List<com.epmet.dto.CustomerProjectParameterDTO>
* @author zhaoqifeng
* @date 2020/10/26 13:43
*/
@Override
public CustomerProjectParameterDTO getPushTime(String customerId) {
return baseDao.getPushTime(customerId);
}
/**
* 获取默认配置
*
* @return com.epmet.dto.CustomerProjectParameterDTO
* @author zhaoqifeng
* @date 2020/10/26 14:58
*/
@Override
public CustomerProjectParameterDTO getDefaultPushTime() {
return baseDao.getDefaultPushTime();
}
/**
* 获取推送时间范围内的客户ID
*
* @param customerId
* @return com.epmet.dto.CustomerProjectParameterDTO
* @author zhaoqifeng
* @date 2020/10/26 13:43
*/
@Override
public CustomerProjectParameterDTO getPushTimeConfig(String customerId) {
return baseDao.getPushTimeConfig(customerId);
}
} }

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

@ -88,6 +88,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectRelatedPersonnelService projectRelatedPersonnelService; private ProjectRelatedPersonnelService projectRelatedPersonnelService;
@Autowired @Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient; private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private OperCrmOpenFeignClient operCrmOpenFeignClient;
@Value("${openapi.scan.server.url}") @Value("${openapi.scan.server.url}")
private String scanApiUrl; private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}") @Value("${openapi.scan.method.textSyncScan}")
@ -1067,6 +1069,45 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
} }
} }
/**
* 项目滞留超期提醒定时任务
*
* @param dto
* @return void
* @author zhaoqifeng
* @date 2020/10/26 10:53
*/
@Override
public void sendMessageJob(ProjectDTO dto) {
Result<List<CustomerDTO>> result = operCrmOpenFeignClient.getAllCustomerList();
if (!result.success()) {
throw new RenException(result.getCode(), result.getMsg());
}
if (CollectionUtils.isNotEmpty(result.getData())) {
if(null != dto && StringUtils.isNotBlank(dto.getCustomerId())) {
sendMessage(dto.getCustomerId());
} else {
for (CustomerDTO customerDTO : result.getData()) {
//获取客户配置,如果存在,则判断客户配置是否在该时间段内,如果不存在,则使用默认配置
CustomerProjectParameterDTO config = parameterService.getPushTimeConfig(customerDTO.getId());
if (null != config) {
//客户配置是否在该时间段内
CustomerProjectParameterDTO pushTime = parameterService.getPushTime(customerDTO.getId());
if(null != pushTime) {
sendMessage(customerDTO.getId());
}
} else {
//获取默认配置
CustomerProjectParameterDTO defaultPushTime = parameterService.getDefaultPushTime();
if(null != defaultPushTime) {
sendMessage(customerDTO.getId());
}
}
}
}
}
}
private void setMessage(String customerId, List<StaffUnHandledDTO> overdueList, List<StaffUnHandledDTO> delayList, List<OverdueAndDelayDTO> list) { private void setMessage(String customerId, List<StaffUnHandledDTO> overdueList, List<StaffUnHandledDTO> delayList, List<OverdueAndDelayDTO> list) {
list = list.stream().distinct().collect(Collectors.toList()); list = list.stream().distinct().collect(Collectors.toList());
Map<String, List<StaffUnHandledDTO>> overdueMap = overdueList.stream().collect(Collectors.groupingBy(StaffUnHandledDTO::getStaffId)); Map<String, List<StaffUnHandledDTO>> overdueMap = overdueList.stream().collect(Collectors.groupingBy(StaffUnHandledDTO::getStaffId));
@ -1137,7 +1178,6 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setReadFlag(Constant.UNREAD); messageFormDTO.setReadFlag(Constant.UNREAD);
msgList.add(messageFormDTO); msgList.add(messageFormDTO);
}); });
System.out.println(msgList);
messageFeignClient.saveUserMessageList(msgList); messageFeignClient.saveUserMessageList(msgList);
} }

34
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/CustomerProjectParameterDao.xml

@ -35,6 +35,40 @@
where DEL_FLAG = '0' where DEL_FLAG = '0'
and CUSTOMER_ID = #{customerId} and CUSTOMER_ID = #{customerId}
</select> </select>
<select id="getPushTime" resultType="com.epmet.dto.CustomerProjectParameterDTO">
SELECT
CUSTOMER_ID,
PARAMETER_VALUE
FROM
customer_project_parameter
WHERE
STR_TO_DATE( PARAMETER_VALUE, '%H:%i' ) &gt;= DATE_ADD( STR_TO_DATE( DATE_FORMAT( NOW(), '%H:%i' ), '%H:%i' ), INTERVAL - 10 MINUTE )
AND STR_TO_DATE( PARAMETER_VALUE, '%H:%i' ) &lt; STR_TO_DATE( DATE_FORMAT( NOW(), '%H:%i' ), '%H:%i')
AND PARAMETER_KEY = 'push_time'
AND CUSTOMER_ID = #{customerId}
</select>
<select id="getDefaultPushTime" resultType="com.epmet.dto.CustomerProjectParameterDTO">
SELECT
CUSTOMER_ID,
PARAMETER_VALUE
FROM
customer_project_parameter
WHERE
STR_TO_DATE( PARAMETER_VALUE, '%H:%i' ) &gt;= DATE_ADD( STR_TO_DATE( DATE_FORMAT( NOW(), '%H:%i' ), '%H:%i' ), INTERVAL - 10 MINUTE )
AND STR_TO_DATE( PARAMETER_VALUE, '%H:%i' ) &lt; STR_TO_DATE( DATE_FORMAT( NOW(), '%H:%i' ), '%H:%i')
AND PARAMETER_KEY = 'push_time'
AND CUSTOMER_ID = 'default'
</select>
<select id="getPushTimeConfig" resultType="com.epmet.dto.CustomerProjectParameterDTO">
SELECT
CUSTOMER_ID,
PARAMETER_VALUE
FROM
customer_project_parameter
WHERE
PARAMETER_KEY = 'push_time'
AND CUSTOMER_ID = #{customerId}
</select>
</mapper> </mapper>
Loading…
Cancel
Save