From 39e8f9e0f8243d86c2972477bc5b4105330a5530 Mon Sep 17 00:00:00 2001 From: luohairen <3399054449@qq.com> Date: 星期四, 26 十二月 2024 16:21:53 +0800 Subject: [PATCH] 计划超期更新 --- business/src/main/resources/mapper/PlanMapper.xml | 2 business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java | 3 + business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java | 1 business/src/main/java/com/ycl/domain/entity/Plan.java | 4 + business/src/main/java/com/ycl/domain/entity/ProjectInfo.java | 4 + business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java | 140 ++++++++++++++++++++++++++++++++++++++++++++++ business/src/main/java/com/ycl/domain/form/PlanForm.java | 4 + business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java | 3 + 8 files changed, 160 insertions(+), 1 deletions(-) diff --git a/business/src/main/java/com/ycl/domain/entity/Plan.java b/business/src/main/java/com/ycl/domain/entity/Plan.java index f0f7feb..849afdd 100644 --- a/business/src/main/java/com/ycl/domain/entity/Plan.java +++ b/business/src/main/java/com/ycl/domain/entity/Plan.java @@ -38,4 +38,8 @@ @TableField("year_status") /** 骞村害锛�0锛氬凡涓婃姤锛�1锛氭湭涓婃姤锛� */ private Integer yearStatus; + + @TableField("exception") + /** 寮傚父锛�0锛氳鍒掕秴鏈燂紝1锛氳繘搴﹁秴鏈燂級 */ + private Integer exception; } diff --git a/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java b/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java index ce65b79..2b74065 100644 --- a/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java +++ b/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java @@ -144,4 +144,8 @@ @TableField("used_status") /** 浣跨敤鐘舵�侊紙0锛氳崏绋匡紝1锛氭彁浜�,2:瀹℃牳閫氳繃锛�-1锛氶┏鍥烇級 */ private Integer usedStatus; + + @TableField("coding") + /** 缂栫爜 */ + private String coding; } diff --git a/business/src/main/java/com/ycl/domain/form/PlanForm.java b/business/src/main/java/com/ycl/domain/form/PlanForm.java index 1c79ee4..caf47aa 100644 --- a/business/src/main/java/com/ycl/domain/form/PlanForm.java +++ b/business/src/main/java/com/ycl/domain/form/PlanForm.java @@ -44,6 +44,10 @@ @ApiModelProperty("骞村害锛�0锛氬凡涓婃姤锛�1锛氭湭涓婃姤锛�") private Integer yearStatus; + @NotNull(message = "寮傚父闂锛�0锛氳鍒掕秴鏈燂紝1锛氳繘搴﹁秴鏈燂級涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("寮傚父闂锛�0锛氳鍒掕秴鏈燂紝1锛氳繘搴﹁秴鏈燂級") + private Integer exception; + @NotNull(message = "鍒涘缓鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) @ApiModelProperty("鍒涘缓鏃堕棿") private Date gmtCreateTime; diff --git a/business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java b/business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java index ac5a053..c540050 100644 --- a/business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java +++ b/business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java @@ -124,6 +124,9 @@ @ApiModelProperty("浣跨敤鐘舵��") private Integer usedStatus; + @ApiModelProperty("璧嬬爜") + private String coding; + public static ProjectInfo getEntityByForm(@NonNull ProjectInfoForm form, ProjectInfo entity) { if(entity == null) { entity = new ProjectInfo(); diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java index 1f73b75..f1da1e0 100644 --- a/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java +++ b/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java @@ -157,6 +157,9 @@ @ApiModelProperty("鐘舵�佺爜") private String projectColorCode; + @ApiModelProperty("璧嬬爜") + private String coding; + @ApiModelProperty("鏂囦欢") private List<File> fileList; private Long processId; diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java index 038caec..21a51d1 100644 --- a/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java +++ b/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java @@ -20,4 +20,5 @@ private String projectStatus; private String investType; private String projectColorCode; + private Integer exception; } diff --git a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java index 5b307f2..b091217 100644 --- a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java @@ -1,13 +1,19 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.common.base.Result; +import com.ycl.common.enums.business.ProjectCategoryEnum; import com.ycl.common.enums.business.ProjectStatusEnum; import com.ycl.common.enums.business.ProjectTypeEnum; +import com.ycl.common.utils.DateUtils; import com.ycl.domain.entity.Plan; +import com.ycl.domain.entity.ProjectPlanRecord; import com.ycl.domain.vo.ProjectPlanResponseVO; +import com.ycl.domain.vo.ProjetPlanRecordItem; import com.ycl.framework.utils.PageUtil; import com.ycl.mapper.PlanMapper; +import com.ycl.mapper.ProjectPlanRecordMapper; import com.ycl.service.PlanService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.form.PlanForm; @@ -18,7 +24,10 @@ import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; +import java.util.Calendar; +import java.util.Date; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -32,6 +41,12 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements PlanService { private final PlanMapper planMapper; + private final ProjectPlanRecordServiceImpl projectPlanRecordServiceImpl; + private final ProjectPlanRecordMapper projectPlanRecordMapper; + + private static final Integer MONTH_FLAG = 0; + private static final Integer SEASON_FLAG = 1; + private static final Integer YEAR_FLAG = 2; /** * 娣诲姞 @@ -99,10 +114,133 @@ record.setProjectStatus(ProjectStatusEnum.getDescByType(record.getProjectStatus())); record.setProjectColorCode("green"); } - + updateException(records); return Result.ok().data(page.getRecords()).total(page.getTotal()); } + // 瀵规煡璇㈠悗鐨勭粨鏋滆繘琛屽紓甯搁棶棰樻洿鏂� + public void updateException(List<ProjectPlanResponseVO> records) { + records.forEach(record -> { + if (null != record.getProjectPhase() && record.getProjectPhase().equals(ProjectCategoryEnum.IMPLEMENT.getDesc())){ // 瀹炴柦闃舵 + List<ProjetPlanRecordItem> month = projectPlanRecordMapper.selectPlanList(record.getId(), MONTH_FLAG); + List<ProjetPlanRecordItem> season = projectPlanRecordMapper.selectPlanList(record.getId(), SEASON_FLAG); + List<ProjetPlanRecordItem> year = projectPlanRecordMapper.selectPlanList(record.getId(), YEAR_FLAG); + + Date now = DateUtils.getNowDate(); + Calendar calendar = Calendar.getInstance(); + // 鏈堝害鍒ゆ柇 + if (month.size() > 0) { + Integer planMonth = month.get(month.size() - 1).getPlanTime(); + calendar.setTime(now); + calendar.add(Calendar.DAY_OF_MONTH, 3); + int monthAfterThreeDays = calendar.get(Calendar.MONTH) + 1; + + if ((planMonth < 12 && planMonth < monthAfterThreeDays)) { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + }else if((planMonth == 12 && monthAfterThreeDays == 1)){ + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } else { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, null) + .update(); + } + }else { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } + + if (season.size() > 0) { + // 瀛e害鍒ゆ柇 + int seasonNum =season.get(season.size() - 1).getPlanTime(); + Date createTime = season.get(0).getCreateTime(); + calendar.setTime(createTime); + calendar.add(Calendar.MONTH, seasonNum * 3); + Date createTimeAfterMonths = calendar.getTime(); + // 璁$畻涓や釜鏃ユ湡涔嬮棿鐨勫樊鍊硷紝鍗曚綅涓烘绉� + long diffInMillies = createTimeAfterMonths.getTime() - now.getTime(); + // 灏嗗樊鍊艰浆鎹负澶╂暟 + long diffInDays = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); + if (diffInDays < 3) { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + }else { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, null) + .update(); + } + }else { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } + + if (year.size() > 0) { + // 骞村害鍒ゆ柇 + Integer planYear = year.get(year.size() - 1).getPlanTime(); + calendar.setTime(now); + calendar.add(Calendar.DAY_OF_YEAR, 3); // 娣诲姞3澶� + int planYearAfter3Days = calendar.get(Calendar.YEAR); + if (planYearAfter3Days > planYear) { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + }else { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, null) + .update(); + } + }else { + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } + + month.forEach(item -> { + if (item.getReportStatus() == 1) { // 鏈笂鎶� + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } + }); + season.forEach(item -> { + if (item.getReportStatus() == 1) { // 鏈笂鎶� + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } + }); + year.forEach(item -> { + if (item.getReportStatus() == 1) { // 鏈笂鎶� + new LambdaUpdateChainWrapper<>(planMapper) + .eq(Plan::getProjectInfoId, record.getId()) + .set(Plan::getException, 0) + .update(); + } + }); + + + } + }); + } + /** * 鏍规嵁id鏌ユ壘 * @param id diff --git a/business/src/main/resources/mapper/PlanMapper.xml b/business/src/main/resources/mapper/PlanMapper.xml index 85d57c7..0b433f7 100644 --- a/business/src/main/resources/mapper/PlanMapper.xml +++ b/business/src/main/resources/mapper/PlanMapper.xml @@ -26,6 +26,7 @@ <result property="yearStatus" column="year_status" /> <result property="projectStatus" column="project_status" /> <result property="investType" column="invest_type" /> + <result property="exception" column="exception" /> </resultMap> @@ -57,6 +58,7 @@ p.month_status, p.season_status, p.year_status, + p.exception, pi.project_status, pi.invest_type FROM t_project_info AS pi -- Gitblit v1.8.0