From 78667db7845e68c59cea853db3fee67c1611d239 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 10 一月 2025 11:02:21 +0800
Subject: [PATCH] 赋码任务调整
---
business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java | 141 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 139 insertions(+), 2 deletions(-)
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..4a161da 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,18 @@
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.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 +23,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 +40,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,8 +113,131 @@
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();
+ }
+ });
+
+
+ }
+ });
}
/**
@@ -109,7 +246,7 @@
* @return
*/
@Override
- public Result detail(Integer id) {
+ public Result detail(Long id) {
PlanVO vo = baseMapper.getById(id);
Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
return Result.ok().data(vo);
--
Gitblit v1.8.0