diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml
index b8157a9836..8b46ae7845 100644
--- a/epmet-gateway/pom.xml
+++ b/epmet-gateway/pom.xml
@@ -288,10 +288,11 @@
lb://gov-issue-server
-
- lb://gov-project-server
+ http://localhost:8102
+
- lb://common-service-server
+
+ http://localhost:8103
lb://resi-home-server
diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/CostDayFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/CostDayFormDTO.java
index 5c1c27395a..487a596d09 100644
--- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/CostDayFormDTO.java
+++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/CostDayFormDTO.java
@@ -3,6 +3,7 @@ package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
+import java.util.Date;
/**
* @author zhaoqifeng
@@ -25,10 +26,10 @@ public class CostDayFormDTO implements Serializable {
/**
* 起始日期
*/
- private String startDate;
+ private Date startDate;
/**
* 终止日期
*/
- private String endDate;
+ private Date endDate;
}
diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CostDayResultDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CostDayResultDTO.java
index 27074d8c8f..7087768d4b 100644
--- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CostDayResultDTO.java
+++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CostDayResultDTO.java
@@ -3,6 +3,7 @@ package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
+import java.util.Date;
/**
* @author zhaoqifeng
@@ -27,5 +28,10 @@ public class CostDayResultDTO implements Serializable {
*/
private Integer detentionDays;
+ /**
+ * 起始日期
+ */
+ private Date startDate;
+
}
diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java
index 7b718fb2e3..eac60c806a 100644
--- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java
+++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java
@@ -21,8 +21,8 @@ import java.util.List;
* @author yinzuomei@elink-cn.com
* @date 2020/6/4 10:28
*/
-@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class)
-//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class, url = "http://localhost:8103")
+//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class)
+@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class, url = "http://localhost:8103")
public interface EpmetCommonServiceOpenFeignClient {
/**
* @param formDTO
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java
index 8a15b3b0f3..9830aeee1a 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java
@@ -1,6 +1,7 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.exception.RenException;
+import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dao.CalenderDao;
import com.epmet.dto.form.CostDayFormDTO;
import com.epmet.dto.form.WorkDayFormDTO;
@@ -65,6 +66,7 @@ public class WorkDayServiceImpl implements WorkDayService {
result.setId(form.getId());
result.setStaffId(form.getStaffId());
result.setDetentionDays(this.getWorkDays(form.getStartDate(), form.getEndDate()));
+ result.setStartDate(form.getStartDate());
list.add(result);
}
return list;
@@ -89,6 +91,7 @@ public class WorkDayServiceImpl implements WorkDayService {
result.setId(form.getId());
result.setStaffId(form.getStaffId());
result.setDetentionDays(this.getCalendarDays(form.getStartDate(), form.getEndDate()));
+ result.setStartDate(form.getStartDate());
list.add(result);
}
return list;
@@ -128,7 +131,9 @@ public class WorkDayServiceImpl implements WorkDayService {
}
- private Integer getWorkDays(String startDateStr, String endDateStr) {
+ private Integer getWorkDays(Date start, Date end) {
+ String startDateStr = DateUtils.format(start, DateUtils.DATE_PATTERN_YYYYMMDD);
+ String endDateStr = DateUtils.format(end, DateUtils.DATE_PATTERN_YYYYMMDD);
if (startDateStr.equals(endDateStr)) {
logger.info(String.format("%s-%s起止时间一致,返回<1,",startDateStr,endDateStr));
return 0;
@@ -158,7 +163,9 @@ public class WorkDayServiceImpl implements WorkDayService {
}
- private Integer getCalendarDays(String startDateStr, String endDateStr) {
+ private Integer getCalendarDays(Date start, Date end) {
+ String startDateStr = DateUtils.format(start, DateUtils.DATE_PATTERN_YYYYMMDD);
+ String endDateStr = DateUtils.format(end, DateUtils.DATE_PATTERN_YYYYMMDD);
if (startDateStr.equals(endDateStr)) {
logger.info(String.format("%s-%s起止时间一致,返回<1,",startDateStr,endDateStr));
return 0;
diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OverdueAndDelayDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OverdueAndDelayDTO.java
new file mode 100644
index 0000000000..93434edacc
--- /dev/null
+++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OverdueAndDelayDTO.java
@@ -0,0 +1,28 @@
+package com.epmet.dto.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author zhaoqifeng
+ * @dscription
+ * @date 2020/10/22 15:45
+ */
+@Data
+public class OverdueAndDelayDTO implements Serializable {
+ private static final long serialVersionUID = -3632539647818460833L;
+ /**
+ * 工作人员ID
+ */
+ private String staffId;
+ /**
+ * 即将超期
+ */
+ private List overdueList;
+ /**
+ * 滞留
+ */
+ private List delayList;
+}
diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/StaffUnHandledDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/StaffUnHandledDTO.java
index 1a2c4e0971..7f19ab6754 100644
--- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/StaffUnHandledDTO.java
+++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/StaffUnHandledDTO.java
@@ -14,9 +14,13 @@ import java.util.Date;
public class StaffUnHandledDTO implements Serializable {
private static final long serialVersionUID = 5257146338113364709L;
/**
- * 项目ID
+ * project_staff ID
*/
private String id;
+ /**
+ * 项目ID
+ */
+ private String projectId;
/**
* 项目标题
*/
diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml
index 1d80b96d6b..25c9ca4e29 100644
--- a/epmet-module/gov-project/gov-project-server/pom.xml
+++ b/epmet-module/gov-project/gov-project-server/pom.xml
@@ -54,6 +54,12 @@
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
+
+ org.apache.commons
+ commons-collections4
+ 4.3
+ compile
+
io.github.openfeign
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java
index 756a599ac3..9b0882e2cf 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java
@@ -21,4 +21,35 @@ public interface UserMessageConstant {
*/
String PROJECT_CLOSED_MSG = "您好,您参与的【%s】项目已结案,原因:%s";
+
+ /**
+ * 滞留超期消息标题
+ */
+ String STAY_REMINDER_TITLE_1 = "您有%d个项目即将超期,%d个项目已经滞留";
+
+ /**
+ * 滞留超期消息模板
+ */
+ String STAY_REMINDER_MSG_1 = "即将超期项目:%n%s 滞留项目:%n%s";
+
+ /**
+ * 滞留超期消息标题
+ */
+ String STAY_REMINDER_TITLE_2 = "您有%d个项目即将超期";
+
+ /**
+ * 滞留超期消息模板
+ */
+ String STAY_REMINDER_MSG_2 = "即将超期项目:%n%s";
+
+ /**
+ * 滞留超期消息标题
+ */
+ String STAY_REMINDER_TITLE_3 = "您有%d个项目已经滞留";
+
+ /**
+ * 滞留超期消息模板
+ */
+ String STAY_REMINDER_MSG_3 = "滞留项目:%n%s";
+
}
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
index 5ccc25b279..0d500784db 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
@@ -151,5 +151,10 @@ public class ProjectController {
List result = projectService.getPendProjectList(fromDTO);
return new Result>().ok(result);
}
+ @PostMapping("message")
+ public Result sendMessage(@RequestBody ProjectDTO formDTO) {
+ projectService.sendMessage(formDTO.getCustomerId());
+ return new Result();
+ }
}
\ No newline at end of file
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
index f6eeccd013..ed8bff2d21 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
@@ -20,10 +20,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
-import com.epmet.commons.tools.constant.AppClientConstant;
-import com.epmet.commons.tools.constant.Constant;
-import com.epmet.commons.tools.constant.FieldConstant;
-import com.epmet.commons.tools.constant.NumConstant;
+import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
@@ -48,6 +45,7 @@ import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.*;
import com.epmet.redis.ProjectRedis;
import com.epmet.service.*;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -732,7 +730,7 @@ public class ProjectServiceImpl extends BaseServiceImpl NumConstant.ZERO) {
+ if (CollectionUtils.isNotEmpty(paramList)) {
for (CustomerProjectParameterDTO dto : paramList) {
if (ParameterKeyConstant.DETENTION_DAYS.equals(dto.getParameterKey())) {
detentionDays = Integer.parseInt(dto.getParameterValue());
@@ -748,35 +746,133 @@ public class ProjectServiceImpl extends BaseServiceImpl unHandledList = projectStaffService.getStaffUnHandledList(customerId);
- List formDTOS = unHandledList.stream().map(item -> {
+ List form = unHandledList.stream().map(item -> {
CostDayFormDTO dto = new CostDayFormDTO();
dto.setId(item.getId());
dto.setStaffId(item.getStaffId());
if (null != item.getUpdatedTime()) {
- dto.setStartDate(DateUtils.format(item.getUpdatedTime(), DateUtils.DATE_PATTERN_YYYYMMDD));
+ dto.setStartDate(item.getUpdatedTime());
} else {
- dto.setStartDate(DateUtils.format(item.getCreatedTime(), DateUtils.DATE_PATTERN_YYYYMMDD));
+ dto.setStartDate(item.getCreatedTime());
}
- dto.setEndDate(DateUtils.format(new Date(), DateUtils.DATE_PATTERN_YYYYMMDD));
+ dto.setEndDate(new Date());
return dto;
}).collect(Collectors.toList());
- List costDayList = new ArrayList<>();
+ List costDayList;
if (ParameterKeyConstant.WORK.equals(calculation)) {
//工作日计算
- Result> result = epmetCommonServiceOpenFeignClient.costWorkDays(formDTOS);
+ Result> result = epmetCommonServiceOpenFeignClient.costWorkDays(form);
if (!result.success()) {
throw new RenException(result.getCode(), result.getMsg());
}
costDayList = result.getData();
} else {
//日历日计算
- Result> result = epmetCommonServiceOpenFeignClient.costCalendarDays(formDTOS);
+ Result> result = epmetCommonServiceOpenFeignClient.costCalendarDays(form);
if (!result.success()) {
throw new RenException(result.getCode(), result.getMsg());
}
costDayList = result.getData();
}
+ //即将超期项目
+ List overdueList = new ArrayList<>();
+ //滞留项目
+ List delayList = new ArrayList<>();
+ List finalCostDayList = costDayList;
+ List list = new ArrayList<>();
+ int finalDetentionDays = detentionDays;
+ int finalRemindTime = remindTime;
+ unHandledList.forEach(unHandle -> finalCostDayList.stream().filter(cost ->
+ unHandle.getId().equals(cost.getId())).forEach(item -> {
+ int diff = finalDetentionDays - item.getDetentionDays();
+ OverdueAndDelayDTO dto = new OverdueAndDelayDTO();
+ if (diff < 0) {
+ dto.setStaffId(unHandle.getStaffId());
+ list.add(dto);
+ delayList.add(unHandle);
+ } else if (diff <= finalRemindTime) {
+ dto.setStaffId(unHandle.getStaffId());
+ overdueList.add(unHandle);
+ list.add(dto);
+ }
+ }));
+ if (CollectionUtils.isNotEmpty(list)) {
+ setMessage(customerId, overdueList, delayList, list);
+ }
+ }
+ private void setMessage(String customerId, List overdueList, List delayList, List list) {
+ list = list.stream().distinct().collect(Collectors.toList());
+ Map> overdueMap = overdueList.stream().collect(Collectors.groupingBy(StaffUnHandledDTO::getStaffId));
+ Map> delayMap = delayList.stream().collect(Collectors.groupingBy(StaffUnHandledDTO::getStaffId));
+
+ List overdue = overdueMap.entrySet().stream().map(item -> {
+ OverdueAndDelayDTO dto = new OverdueAndDelayDTO();
+ dto.setStaffId(item.getKey());
+ dto.setOverdueList(item.getValue());
+ return dto;
+ }).collect(Collectors.toList());
+ List delay = delayMap.entrySet().stream().map(item -> {
+ OverdueAndDelayDTO dto = new OverdueAndDelayDTO();
+ dto.setStaffId(item.getKey());
+ dto.setDelayList(item.getValue());
+ return dto;
+ }).collect(Collectors.toList());
+
+ list.forEach(dto -> overdue.forEach(item -> {
+ if (dto.getStaffId().equals(item.getStaffId())) {
+ dto.setOverdueList(item.getOverdueList());
+ }
+ }));
+
+ list.forEach(dto -> delay.forEach(item -> {
+ if (dto.getStaffId().equals(item.getStaffId())) {
+ dto.setDelayList(item.getDelayList());
+ }
+ }));
+ //通知
+ List msgList = new ArrayList<>();
+ list.forEach(dto -> {
+ String title;
+ String msg;
+ if (CollectionUtils.isNotEmpty(dto.getOverdueList()) && CollectionUtils.isNotEmpty(dto.getDelayList())) {
+ title = String.format(UserMessageConstant.STAY_REMINDER_TITLE_1, dto.getOverdueList().size(), dto.getDelayList().size());
+ StringBuilder overdueMsg = new StringBuilder();
+ StringBuilder delayMsg = new StringBuilder();
+ for (int i = 0; i < dto.getOverdueList().size(); i++) {
+ overdueMsg.append(i + 1).append(StrConstant.COMMA_ZH).append(dto.getOverdueList().get(i).getTitle()).append("\n");
+ }
+ for (int i = 0; i < dto.getDelayList().size(); i++) {
+ delayMsg.append(i + 1).append(StrConstant.COMMA_ZH).append(dto.getDelayList().get(i).getTitle()).append("\n");
+ }
+ msg = String.format(UserMessageConstant.STAY_REMINDER_MSG_1, overdueMsg.toString(), delayMsg.toString());
+ } else if (CollectionUtils.isNotEmpty(dto.getOverdueList()) && CollectionUtils.isEmpty(dto.getDelayList())) {
+ title = String.format(UserMessageConstant.STAY_REMINDER_TITLE_2, dto.getOverdueList().size());
+ StringBuilder overdueMsg = new StringBuilder();
+ for (int i = 0; i < dto.getOverdueList().size(); i++) {
+ overdueMsg.append(i + 1).append(StrConstant.COMMA_ZH).append(dto.getOverdueList().get(i).getTitle()).append("\n");
+ }
+ msg = String.format(UserMessageConstant.STAY_REMINDER_MSG_2, overdueMsg.toString());
+ } else {
+ title = String.format(UserMessageConstant.STAY_REMINDER_TITLE_3, dto.getDelayList().size());
+ StringBuilder delayMsg = new StringBuilder();
+ for (int i = 0; i < dto.getDelayList().size(); i++) {
+ delayMsg.append(i + 1).append(StrConstant.COMMA_ZH).append(dto.getDelayList().get(i).getTitle()).append("\n");
+ }
+ msg = String.format(UserMessageConstant.STAY_REMINDER_MSG_3, delayMsg.toString());
+ }
+ UserMessageFormDTO messageFormDTO = new UserMessageFormDTO();
+ messageFormDTO.setCustomerId(customerId);
+ messageFormDTO.setApp(ProjectConstant.GOV);
+ messageFormDTO.setGridId(StrConstant.STAR);
+ messageFormDTO.setUserId(dto.getStaffId());
+ messageFormDTO.setTitle(title);
+ messageFormDTO.setMessageContent(msg);
+ messageFormDTO.setReadFlag(Constant.UNREAD);
+ msgList.add(messageFormDTO);
+ });
+ System.out.println(msgList);
+ messageFeignClient.saveUserMessageList(msgList);
}
}
\ No newline at end of file
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java
index 7285388e35..4411a870fa 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java
@@ -166,7 +166,7 @@ public class ProjectStaffServiceImpl extends BaseServiceImpl getStaffUnHandledList(String customerId) {
- return null;
+ return baseDao.getStaffUnHandledList(customerId);
}
}
\ No newline at end of file
diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml
index 163ad63238..6435a5df80 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml
+++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml
@@ -67,7 +67,8 @@