diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ic/IcUpdateYlfnTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ic/IcUpdateYlfnTask.java new file mode 100644 index 0000000000..b7a1ffb6ea --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ic/IcUpdateYlfnTask.java @@ -0,0 +1,35 @@ +package com.epmet.task.ic; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.task.ITask; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * desc:定时弥补数据 保证数据的一致性 + */ +@Slf4j +@Component("icUpdateYlfnTask") +public class IcUpdateYlfnTask implements ITask { + + @Resource + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + + /** + * 执行定时任务接口 + * + * @param params 参数,多参数使用JSON数据 + */ + @Override + public void run(String params) { + Result result = epmetUserOpenFeignClient.updateYlfn(); + if (result.success()) { + log.info("icUpdateYlfnTask定时任务正在执行定时任务执行成功"); + } else { + log.warn("icUpdateYlfnTask定时任务正在执行定时任务执行失败:" + result.getMsg()); + } + } +} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/YlfnValueResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/YlfnValueResultDTO.java new file mode 100644 index 0000000000..9056944c83 --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/YlfnValueResultDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/9/8 15:43 + */ +@Data +public class YlfnValueResultDTO implements Serializable { + private static final long serialVersionUID = -1416102274320519092L; + private String customerId; + private Integer min; + private Integer max; +} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index e93d9badaa..ce2063c361 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -178,5 +178,6 @@ public interface OperCustomizeOpenFeignClient { */ @PostMapping("/oper/customize/icformitemoptions/getItemConditions") Result> getOptionsMap(@RequestBody IcFormOptionsQueryFormDTO input); - + @PostMapping("/oper/customize/icresicategorystatsconfig/getYlfnValue") + Result> getYlfnValue(); } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index e59af2b818..70debfecf3 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -142,4 +142,9 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getOptionsMap", input); } + @Override + public Result> getYlfnValue() { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getYlfnValue", null); + } + } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java index 775001770f..e8dbf8b1af 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java @@ -26,6 +26,7 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.result.YlfnValueResultDTO; import com.epmet.excel.IcResiCategoryStatsConfigExcel; import com.epmet.service.IcResiCategoryStatsConfigService; import org.springframework.beans.factory.annotation.Autowired; @@ -96,4 +97,9 @@ public class IcResiCategoryStatsConfigController { return new Result>().ok(icResiCategoryStatsConfigService.getCategoryList(dto)); } + @PostMapping("getYlfnValue") + public Result> getYlfnValue() { + return new Result>().ok(icResiCategoryStatsConfigService.getYlfnValue()); + } + } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java index f9092491aa..6f151130dd 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcResiCategoryStatsConfigDTO; import com.epmet.dto.result.CustomerCategoryShowAndWarnListResultDTO; +import com.epmet.dto.result.YlfnValueResultDTO; import com.epmet.entity.IcResiCategoryStatsConfigEntity; import java.util.List; @@ -111,4 +112,14 @@ public interface IcResiCategoryStatsConfigService extends BaseService getCustomerCategoryShowAndWarnList(String customerId); + /** + * 获取育龄妇女配置 + * + * @Param + * @Return {@link List< YlfnValueResultDTO>} + * @Author zhaoqifeng + * @Date 2022/9/8 15:50 + */ + List getYlfnValue(); + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java index d5bfdbd521..bc6758ec21 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java @@ -22,11 +22,14 @@ 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.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcResiCategoryStatsConfigDao; import com.epmet.dto.IcResiCategoryStatsConfigDTO; import com.epmet.dto.result.CustomerCategoryShowAndWarnListResultDTO; +import com.epmet.dto.result.YlfnValueResultDTO; import com.epmet.entity.IcResiCategoryStatsConfigEntity; import com.epmet.redis.IcResiCategoryStatsConfigRedis; import com.epmet.service.IcResiCategoryStatsConfigService; @@ -37,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * 居民类别配置表 @@ -137,4 +141,32 @@ public class IcResiCategoryStatsConfigServiceImpl extends BaseServiceImpl(); } + /** + * 获取育龄妇女配置 + * + * @Param + * @Return {@link List< YlfnValueResultDTO >} + * @Author zhaoqifeng + * @Date 2022/9/8 15:50 + */ + @Override + public List getYlfnValue() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiCategoryStatsConfigEntity::getAutoMatching, NumConstant.ONE_STR); + wrapper.eq(IcResiCategoryStatsConfigEntity::getColumnName, "IS_YLFN"); + wrapper.isNotNull(IcResiCategoryStatsConfigEntity::getYlfnValue); + List list = baseDao.selectList(wrapper); + if(CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(item -> { + YlfnValueResultDTO dto = new YlfnValueResultDTO(); + dto.setCustomerId(item.getCustomerId()); + String[] ages = item.getYlfnValue().split(StrConstant.COMMA); + dto.setMin(Integer.valueOf(ages[0])); + dto.setMax(Integer.valueOf(ages[1])); + return dto; + }).collect(Collectors.toList()); + } + } \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 47a67e5fbd..73d770a411 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -882,4 +882,7 @@ public interface EpmetUserOpenFeignClient { */ @PostMapping("/epmetuser/icresiuser/nonDynamic/listResi") Result> listResiNonDynamic(@RequestBody IcResiPageNonDynamicFormDTO input); + + @PostMapping("/epmetuser/icresiuser/updateYlfn") + Result updateYlfn(); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 7c9cc3b2a4..2de7371623 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -678,4 +678,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result> listResiNonDynamic(IcResiPageNonDynamicFormDTO input) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "listResiNonDynamic", input); } + + @Override + public Result updateYlfn() { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "updateYlfn", null); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index a62980703a..0d5652074c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -1411,4 +1411,17 @@ public class IcResiUserController implements ResultDataResolver { return new Result>().ok(page); } + /** + * 更新育龄妇女状态定时任务 + * @Param + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/9/8 17:19 + */ + @PostMapping("updateYlfn") + public Result updateYlfn() { + icResiUserService.updateYlfn(); + return new Result(); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index 8975e06443..145ea7fc9e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -507,4 +507,13 @@ public interface IcResiUserService extends BaseService { IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO); PageData listResiNonDynamic(Boolean fuzzy, String gridId, String name, String mobile, Integer pageNo, Integer pageSize); + + /** + * 更新育龄妇女状态定时任务 + * @Param + * @Return + * @Author zhaoqifeng + * @Date 2022/9/8 15:45 + */ + void updateYlfn(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 2f44c543d5..3c146c3f31 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -53,10 +53,7 @@ import com.epmet.commons.tools.utils.*; import com.epmet.constant.IcPlatformConstant; import com.epmet.constant.IcResiUserConstant; import com.epmet.constant.UserConstant; -import com.epmet.dao.IcPartyMemberDao; -import com.epmet.dao.IcResiUserDao; -import com.epmet.dao.IcVolunteerDao; -import com.epmet.dao.UserBaseInfoDao; +import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.form.demand.UserDemandNameQueryFormDTO; @@ -160,6 +157,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl list = baseDao.selectList(query).stream().map((e) -> ConvertUtils.sourceToTarget(e, IcResiNonDynamicResultDTO.class)).collect(Collectors.toList()); return new PageData(list, new PageInfo<>(list).getTotal(), pageSize); } + + /** + * 更新育龄妇女状态定时任务 + * + * @Param + * @Return + * @Author zhaoqifeng + * @Date 2022/9/8 15:45 + */ + @Override + public void updateYlfn() { + //获取育龄妇女配置 + Result> value = operCustomizeOpenFeignClient.getYlfnValue(); + if(!value.success()) { + throw new EpmetException(value.getCode(), value.getMsg()); + } + value.getData().forEach(item -> { + //查询客户下的非育龄妇女的女性居民 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiUserEntity::getCustomerId, item.getCustomerId()); + wrapper.eq(IcResiUserEntity::getGender, NumConstant.TWO_STR); + wrapper.eq(IcResiUserEntity::getStatus, NumConstant.ZERO_STR); + wrapper.eq(IcResiUserEntity::getIdCardType, NumConstant.ONE_STR); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isNotEmpty(list)) { + list.forEach(user -> { + IdCardRegexUtils pares = IdCardRegexUtils.parse(user.getIdCard()); + if (NumConstant.ONE_STR.equals(pares.getTypeEnum().getType())) { + if (!NumConstant.ONE_STR.equals(user.getIsYlfn())) { + //将不是育龄妇女的变为育龄妇女 + if (pares.getParsedResult().getAge() >= item.getMin() && pares.getParsedResult().getAge() <= item.getMax()) { + //更新育龄妇女状态 + IcResiUserEntity icResiUserEntity = new IcResiUserEntity(); + icResiUserEntity.setId(user.getId()); + icResiUserEntity.setIsYlfn(NumConstant.ONE_STR); + baseDao.updateById(icResiUserEntity); + + //添加居民变更记录 + IcUserChangeRecordEntity record = new IcUserChangeRecordEntity(); + record.setCustomerId(user.getCustomerId()); + record.setOperatorId("APP_USER"); + record.setOperatorName("系统"); + record.setIcUserId(user.getId()); + record.setIcUserName(user.getName()); + record.setType("category"); + record.setTypeName("类别"); + record.setBeforeChangeName("否"); + record.setAfterChangeName("是"); + record.setChangeTime(new Date()); + icUserChangeRecordDao.insert(record); + //添加变更明细 + IcUserChangeDetailedEntity detail = new IcUserChangeDetailedEntity(); + detail.setCustomerId(user.getCustomerId()); + detail.setIcUserChangeRecordId(record.getId()); + detail.setPids(user.getPids()); + detail.setAgencyId(user.getAgencyId()); + detail.setGridId(user.getGridId()); + detail.setNeighborHoodId(user.getVillageId()); + detail.setBuildingId(user.getBuildId()); + detail.setBuildingUnitId(user.getUnitId()); + detail.setHouseId(user.getHomeId()); + detail.setIcUserId(user.getId()); + detail.setType("category"); + detail.setTypeName("类别"); + detail.setFieldName("IS_YLFN"); + detail.setValue(NumConstant.ONE); + icUserChangeDetailedDao.insert(detail); + } + } else { + //将是育龄妇女的变为非育龄妇女 + if (pares.getParsedResult().getAge() < item.getMin() || pares.getParsedResult().getAge() > item.getMax()) { + //更新育龄妇女状态 + IcResiUserEntity icResiUserEntity = new IcResiUserEntity(); + icResiUserEntity.setId(user.getId()); + icResiUserEntity.setIsYlfn(NumConstant.ZERO_STR); + baseDao.updateById(icResiUserEntity); + //添加居民变更记录 + IcUserChangeRecordEntity record = new IcUserChangeRecordEntity(); + record.setCustomerId(user.getCustomerId()); + record.setOperatorId("APP_USER"); + record.setOperatorName("系统"); + record.setIcUserId(user.getId()); + record.setIcUserName(user.getName()); + record.setType("category"); + record.setTypeName("类别"); + record.setBeforeChangeName("是"); + record.setAfterChangeName("否"); + record.setChangeTime(new Date()); + icUserChangeRecordDao.insert(record); + //添加变更明细 + IcUserChangeDetailedEntity detail = new IcUserChangeDetailedEntity(); + detail.setCustomerId(user.getCustomerId()); + detail.setIcUserChangeRecordId(record.getId()); + detail.setPids(user.getPids()); + detail.setAgencyId(user.getAgencyId()); + detail.setGridId(user.getGridId()); + detail.setNeighborHoodId(user.getVillageId()); + detail.setBuildingId(user.getBuildId()); + detail.setBuildingUnitId(user.getUnitId()); + detail.setHouseId(user.getHomeId()); + detail.setIcUserId(user.getId()); + detail.setType("category"); + detail.setTypeName("类别"); + detail.setFieldName("IS_YLFN"); + detail.setValue(NumConstant.ONE_NEG); + icUserChangeDetailedDao.insert(detail); + } + } + } + }); + } + }); + } }