feat: 复审计划定时任务

This commit is contained in:
2023-11-08 10:27:36 +08:00
parent 4403d2a767
commit 05c0381a59
7 changed files with 95 additions and 22 deletions
@@ -3,6 +3,7 @@ package com.jero.modules.laws.enterprise.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.common.constant.ResultCommon;
@@ -49,7 +50,6 @@ public class EnterpriseStandardRecheckPlanController extends JeroController<Ente
public Result<?> queryPageList(ESQueryCommonDTO esDeclare,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<EnterpriseStandardRecheckPlanVo> pageList= recheckPlanService.queryPageList(esDeclare, pageNo, pageSize);
return Result.OK(pageList);
return Result.OK(recheckPlanService.queryPageList(esDeclare, pageNo, pageSize));
}
}
@@ -58,6 +58,10 @@ public class EnterpriseStandardRecheckPlan implements Serializable {
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**企标Id*/
@ApiModelProperty(value = "企标Id")
private String standardId;
/**企标编号*/
@ApiModelProperty(value = "企标编号")
private String standardNo;
@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@@ -18,6 +19,7 @@ import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class EnterpriseStandardRecheckPlanVo {
/**主键ID*/
@@ -51,9 +53,11 @@ public class EnterpriseStandardRecheckPlanVo {
/**主起草人*/
@ApiModelProperty(value = "主起草人")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String mainDraftingUser;
/**主起草单位*/
@ApiModelProperty(value = "主起草单位")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
private String mainDraftingUnit;
}
@@ -0,0 +1,73 @@
package com.jero.modules.laws.enterprise.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: Mzaxd
* @Date: 2023/11/8 9:11
*/
@Slf4j
public class ESRecheckPlanJob implements Job {
@Resource
private EnterpriseStandardRecheckPlanService esRecheckPlanService;
@Resource
private ILawsEnterpriseStandardService esService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
List<LawsEnterpriseStandard> allEs = esService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>().eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()));
List<EnterpriseStandardRecheckPlan> recheckPlanList = esRecheckPlanService.list();
Map<String, List<EnterpriseStandardRecheckPlan>> recheckPlanMap = recheckPlanList.stream().collect(Collectors.groupingBy(EnterpriseStandardRecheckPlan::getId));
for (LawsEnterpriseStandard es : allEs) {
// 根据企标发布日期判断是否当前已经达到35个月
// 请确保es.getReleaseDate()返回的是Date类型的实例
ZonedDateTime releaseZonedDateTime = es.getReleaseDate().toInstant()
.atZone(ZoneId.of("Asia/Shanghai"));
LocalDate releaseLocalDate = releaseZonedDateTime.toLocalDate();
LocalDate now = LocalDate.now();
// 36个月的复审日期
LocalDate recheckDate36Months = releaseLocalDate.plusMonths(36);
LocalDate plusMonths = releaseLocalDate.plusMonths(35);
if (plusMonths.isBefore(now)) {
// 判断是否已经存在复审计划
List<EnterpriseStandardRecheckPlan> recheckPlans = recheckPlanMap.get(es.getId());
if (recheckPlans == null || recheckPlans.size() == 0) {
// 企标已经达到35个月,需要重新复审
EnterpriseStandardRecheckPlan recheckPlan = new EnterpriseStandardRecheckPlan();
recheckPlan.setStandardId(es.getId());
recheckPlan.setStandardNo(es.getStandardNumber());
// 正确处理时区,转换回Date类型
ZonedDateTime zdtRecheck = recheckDate36Months.atStartOfDay(ZoneId.of("Asia/Shanghai"));
Date recheckDate = Date.from(zdtRecheck.toInstant());
recheckPlan.setRecheckDate(recheckDate);
esRecheckPlanService.save(recheckPlan);
}
}
}
log.info("企标复审计划定时任务执行完成");
}
}
@@ -4,21 +4,21 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import javax.annotation.Resource;
@Slf4j
@Component
public class QualityStandardResetTask {
public class QualityStandardResetJob implements Job {
@Resource
private EnterpriseStandardPlanService enterpriseStandardPlanService;
@Scheduled(cron = "0 0 0 1 * ?")
public void qualityStandardResetTask() {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
LambdaUpdateWrapper<EnterpriseStandardPlan> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(EnterpriseStandardPlan::getQualityFlag, 0);
enterpriseStandardPlanService.update(updateWrapper);
@@ -12,6 +12,7 @@
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="standardNo" column="standard_no" jdbcType="VARCHAR"/>
<result property="standardId" column="standard_id" jdbcType="VARCHAR"/>
<result property="recheckDate" column="recheck_date" jdbcType="TIMESTAMP"/>
<result property="recheckResult" column="recheck_result" jdbcType="VARCHAR"/>
</resultMap>
@@ -30,17 +31,12 @@
s.release_date AS releaseDate,
p.recheck_date AS recheckDate,
p.recheck_result AS recheckResult,
u.username AS mainDraftingUser,
d.depart_name AS mainDraftingUnit
s.main_drafting_user AS mainDraftingUser,
s.main_drafting_unit AS mainDraftingUnit
FROM
laws_enterprise_standard_recheck_plan AS p
LEFT JOIN laws_enterprise_standard AS s ON s.standard_number = p.standard_no
LEFT JOIN sys_user AS u ON u.id = s.main_drafting_user
LEFT JOIN sys_depart AS d ON d.id = s.main_drafting_unit
WHERE
(p.recheck_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 MONTH))
OR
(p.recheck_result IS NOT NULL)
LEFT JOIN laws_enterprise_standard AS s ON s.id = p.standard_id
WHERE 1 = 1
<!--企标编号判断-->
<if test="param.standardNo != null and param.standardNo != ''">
AND s.standard_number LIKE CONCAT('%',#{param.standardNo},'%')
@@ -32,17 +32,13 @@ import java.util.stream.Collectors;
public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<EnterpriseStandardRecheckPlanMapper, EnterpriseStandardRecheckPlan>
implements EnterpriseStandardRecheckPlanService{
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private EnterpriseStandardRecheckPlanMapper esRecheckPlanMapper;
@Override
public IPage<EnterpriseStandardRecheckPlanVo> queryPageList(ESQueryCommonDTO esRecheckPlan, Integer pageNo, Integer pageSize) {
IPage<EnterpriseStandardRecheckPlanVo> page = new Page<>(pageNo, pageSize);
esRecheckPlanMapper.page(page, esRecheckPlan);
return page;
return esRecheckPlanMapper.page(page, esRecheckPlan);
}
}