diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/EpmetRequestHolder.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/EpmetRequestHolder.java index 2a70916069..4f14885e9d 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/EpmetRequestHolder.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/EpmetRequestHolder.java @@ -49,7 +49,7 @@ public class EpmetRequestHolder { public static String getHeader(String headerName) { Map stringStringMap = requestHeaderTtl.get(); if (stringStringMap == null){ - return StrConstant.EPMETY_STR; + return null; } return stringStringMap.get(headerName.toLowerCase()); } 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 9ddd2d710d..7dc71f336e 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 @@ -7,6 +7,7 @@ import com.epmet.dto.result.*; import com.epmet.feign.fallback.EpmetCommonServiceOpenFeignClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -140,4 +141,12 @@ public interface EpmetCommonServiceOpenFeignClient { */ @RequestMapping("/commonservice/import-task/finish") Result finishImportTask(@RequestBody ImportTaskCommonFormDTO input); + + /** + * desc:初始化工作日 + * @param dimDateId + * @return + */ + @PostMapping("/commonservice/holiday/initWorkDay/{day}") + Result workDayInit(@PathVariable("day") String dimDateId); } diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java index c3c62d64da..21f7fe531a 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java @@ -3,20 +3,9 @@ package com.epmet.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.form.CostDayFormDTO; -import com.epmet.dto.form.ExternalAppAuthFormDTO; -import com.epmet.dto.form.GetJwtAccessTokenFormDTO; -import com.epmet.dto.form.WorkDayFormDTO; -import com.epmet.dto.result.AppIdInfoResultDTO; -import com.epmet.dto.form.WorkMinuteFormDTO; -import com.epmet.dto.result.CostDayResultDTO; -import com.epmet.dto.result.AppIdInfoResultDTO; -import com.epmet.dto.result.ExternalAppAuthResultDTO; -import com.epmet.dto.result.WorkDayResultDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; -import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; @@ -121,4 +110,9 @@ public class EpmetCommonServiceOpenFeignClientFallback implements EpmetCommonSer public Result finishImportTask(ImportTaskCommonFormDTO input) { return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "finishImportTask", input); } + + @Override + public Result workDayInit(String dimDateId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "workDayInit", dimDateId); + } } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/task/WorkDayScheduleTask.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/task/WorkDayScheduleTask.java index b26ab24cb7..053128ef6e 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/task/WorkDayScheduleTask.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/task/WorkDayScheduleTask.java @@ -1,10 +1,10 @@ package com.epmet.task; import com.epmet.service.ShowApiService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -15,19 +15,21 @@ import java.util.Date; * @Author yinzuomei * @Date 2020/5/12 0:01 */ +@Slf4j @Configuration //1.主要用于标记配置类,兼备Component的效果。 -@EnableScheduling // 2.开启定时任务 +@EnableScheduling// 2.开启定时任务 +@Deprecated //由job统一调度 public class WorkDayScheduleTask { @Autowired private ShowApiService showApiService; //每天晚上00:00:01执行{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} - @Scheduled(cron = "1 0 0 * * ?") + //@Scheduled(cron = "1 0 0 * * ?") private void configureTasks() { Date nowDate = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); showApiService.initWorkDay(format.format(nowDate)); - System.err.println("执行静态定时任务时间: " + LocalDateTime.now()); + log.info("执行静态定时任务时间: " + LocalDateTime.now()); } } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/utils/ShowApiUtil.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/utils/ShowApiUtil.java index 8afe9cf590..f836b31ceb 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/utils/ShowApiUtil.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/utils/ShowApiUtil.java @@ -97,8 +97,9 @@ public class ShowApiUtil { } public static void main(String[] args) { try { -// queryHolidayV2020("20200503"); - holidayList("2020"); + DayDetailResultDTO dayDetailResultDTO = queryHolidayV2020("20220407"); + System.out.println(dayDetailResultDTO); + //holidayList("2020"); } catch (Exception e) { e.printStackTrace(); } diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index b0d9fe2d24..6982f84c1a 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -108,6 +108,12 @@ 2.0.0 compile + + com.epmet + common-service-client + 2.0.0 + compile + diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/WorkDayInitService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/WorkDayInitService.java new file mode 100644 index 0000000000..4e1f8c3ad7 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/WorkDayInitService.java @@ -0,0 +1,17 @@ +package com.epmet.service; + +import com.epmet.commons.tools.utils.Result; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/12/29 17:45 + */ +public interface WorkDayInitService { + /** + * desc:初始化工作日 日历 + * @param dimDateId + * @return + */ + Result workDayInit(String dimDateId); +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/WorkDayInitServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/WorkDayInitServiceImpl.java new file mode 100644 index 0000000000..dd5846d680 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/WorkDayInitServiceImpl.java @@ -0,0 +1,24 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.service.WorkDayInitService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/12/29 17:46 + */ +@Service +public class WorkDayInitServiceImpl implements WorkDayInitService { + + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; + + @Override + public Result workDayInit(String dimDateId) { + return epmetCommonServiceOpenFeignClient.workDayInit(dimDateId); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java new file mode 100644 index 0000000000..45f2a8de7f --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java @@ -0,0 +1,39 @@ +package com.epmet.task; + +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.WorkDayInitService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * desc:工作日日历定时任务 + * @author zhaoqifeng + * @dscription + * @date 2020/12/29 17:43 + */ +@Slf4j +@Component("workDayInitTask") +public class WorkDayInitTask implements ITask { + + @Autowired + private WorkDayInitService workDayInitService; + + @Override + public void run(String params) { + log.info("WorkDayInitTask定时任务正在执行,参数为:{}", params); + if (StringUtils.isBlank(params)){ + params = DateUtils.format(new Date(),DateUtils.DATE_PATTERN_YYYYMMDD); + } + Result result = workDayInitService.workDayInit(params); + if (result.success()) { + log.info("{}定时任务执行成功,{}", getClass().getSimpleName(),params); + } else { + log.error("{}定时任务执行失败:{},param:{}" ,getClass().getSimpleName(), result.getMsg(), params); + } + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/resources/db/migration/V0.0.2__add_workdayinit_job.sql b/epmet-module/epmet-job/epmet-job-server/src/main/resources/db/migration/V0.0.2__add_workdayinit_job.sql new file mode 100644 index 0000000000..e06095639b --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/resources/db/migration/V0.0.2__add_workdayinit_job.sql @@ -0,0 +1 @@ +INSERT INTO `epmet_job`.`schedule_job` (`id`, `bean_name`, `params`, `cron_expression`, `status`, `remark`, `creator`, `create_date`, `updater`, `update_date`) VALUES (1511526737639378945, 'workDayInitTask', '', '3 0 0 * * ?', 1, '调用第三方api初始化工作日(有调用限制)参数:20220406', NULL, '2022-04-06 10:10:32', 0, '2022-04-06 10:11:04'); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java index af23243c03..80ecb83186 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java @@ -1,7 +1,9 @@ package com.epmet.dto.form; import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; @@ -32,11 +34,13 @@ public class PageTripReportFormDTO extends PageFormDTO implements Serializable { * 来源地区名称 */ private String sourceAddress; + /** * 来到本地时间 */ - private Date startDate; - private Date endDate; + private String startDate; + + private String endDate; /** * token里设置 diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SendNoticeFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SendNoticeFormDTO.java index bd24801531..4454aba909 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SendNoticeFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SendNoticeFormDTO.java @@ -4,7 +4,8 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Size; import java.io.Serializable; import java.util.List; @@ -22,22 +23,23 @@ public class SendNoticeFormDTO implements Serializable { /** * 用户列表 */ - @NotNull(message = "用户列表不能为空", groups = DefaultGroup.class) + @NotEmpty(message = "用户列表不能为空", groups = DefaultGroup.class) private List userList; /** * 通知渠道通知渠道 0小程序通知,1短信通知 */ - @NotNull(message = "通知渠道不能为空", groups = DefaultGroup.class) + @NotEmpty(message = "请选择通知渠道", groups = DefaultGroup.class) private List channel; /** * 通知来源 0 行程上报,1 疫苗接种,2 核酸检测 */ - @NotNull(message = "通知来源不能为空", groups = DefaultGroup.class) + @NotEmpty(message = "通知来源不能为空", groups = DefaultGroup.class) private String origin; /** * 通知内容 */ - @NotNull(message = "通知内容不能为空", groups = DefaultGroup.class) + @NotEmpty(message = "通知内容不能为空", groups = DefaultGroup.class) + @Size(max = 500, message = "通知内容不超过500字") private String content; /** * 组织名 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java index abb8f6184c..1b359b5624 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java @@ -478,6 +478,8 @@ public class IcNatServiceImpl extends BaseServiceImpl imp @Transactional(rollbackFor = Exception.class) public void persisNat(IcNatEntity e, String customerId, String currentUserId, IcNatExcelImportListener listener) { List otherRows = listener.getOtherRows(); + String agencyPids = listener.getCurrentAgencyPids(); + String agencyId = listener.getCurrentAgencyId(); Date natTime = e.getNatTime(); String idCard = e.getIdCard(); @@ -545,43 +547,50 @@ public class IcNatServiceImpl extends BaseServiceImpl imp resiNat.setUpdatedBy(currentUserId); resiNat.setUpdatedTime(new Date()); - IcResiUserEntity resi = getResi(customerId, idCard); + IcResiUserEntity resi = getResi(customerId, idCard, null); resiNat.setIsResiUser(resi != null ? "1" : "0"); resiNat.setUserId(resi != null ? resi.getId() : ""); baseDao.updateById(resiNat); } - // 还要创建关系 - createNatRelation(resiNat.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids()); + // 还要创建关系。只有本辖区及下级居民,才建立关系 + if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) { + createNatRelation(resiNat.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids()); + } return; } // 执行新增操作 - IcResiUserEntity resi = getResi(customerId, idCard); + IcResiUserEntity resi = getResi(customerId, idCard, null); e.setIsResiUser(resi != null ? "1" : "0"); e.setUserId(resi != null ? resi.getId() : ""); e.setUserType("import"); baseDao.insert(e); - // 还要创建关系 - createNatRelation(e.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids()); + // 还要创建关系。只有本辖区及下级居民,才建立关系 + if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) { + createNatRelation(e.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids()); + } } /** - * 是否是客户下的居民; + * 是否是指定条件下的居民; * 0:否 * 1:是 * @param customerId * @param idCard * @return */ - public IcResiUserEntity getResi(String customerId, String idCard) { + public IcResiUserEntity getResi(String customerId, String idCard, String pids) { LambdaQueryWrapper query = new LambdaQueryWrapper(); query.eq(IcResiUserEntity::getCustomerId, customerId); query.eq(IcResiUserEntity::getIdCard, idCard); + if (StringUtils.isNotBlank(pids)) { + query.likeRight(IcResiUserEntity::getPids, pids); + } return icResiUserDao.selectOne(query); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNoticeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNoticeServiceImpl.java index c306bec8aa..28fd02753b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNoticeServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNoticeServiceImpl.java @@ -137,7 +137,10 @@ public class IcNoticeServiceImpl extends BaseServiceImpl entityList = formDTO.getUserList().stream().map(item -> { + List userBeanList = formDTO.getUserList().stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing( SendNoticeFormDTO.UserListBean::getIdCard))), ArrayList::new)); + List entityList = userBeanList.stream().map(item -> { IcNoticeEntity entity = new IcNoticeEntity(); entity.setCustomerId(formDTO.getCustomerId()); entity.setChannel(channel); diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.37__ic_epidemic_special_attention.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.37__ic_epidemic_special_attention.sql new file mode 100644 index 0000000000..c16c75f965 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.37__ic_epidemic_special_attention.sql @@ -0,0 +1,21 @@ +CREATE TABLE `ic_epidemic_special_attention` ( + `ID` varchar(64) NOT NULL COMMENT 'ID', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `ORG_ID` varchar(64) NOT NULL COMMENT '当前工作人员所属组织ID', + `PID` varchar(64) NOT NULL COMMENT '组织ID上级', + `PIDS` varchar(255) NOT NULL COMMENT '组织ID所有上级', + `IS_ATTENTION` tinyint(1) NOT NULL COMMENT '是否关注 1:关注,0:取消关注', + `ATTENTION_TYPE` tinyint(1) NOT NULL COMMENT '关注类型,核酸检测:2,疫苗接种:1,行程上报:0', + `NAME` varchar(64) NOT NULL COMMENT '姓名', + `MOBILE` varchar(11) NOT NULL COMMENT '手机号', + `ID_CARD` varchar(18) NOT NULL COMMENT '身份证号', + `REASON` varchar(1000) DEFAULT NULL COMMENT '原因', + `REMARK` varchar(1000) DEFAULT NULL COMMENT '备注', + `DEL_FLAG` int(11) NOT NULL, + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='疫情特别关注'; \ No newline at end of file