luohairen
2024-12-26 39e8f9e0f8243d86c2972477bc5b4105330a5530
计划超期更新
8个文件已修改
161 ■■■■■ 已修改文件
business/src/main/java/com/ycl/domain/entity/Plan.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/entity/ProjectInfo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/form/PlanForm.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/resources/mapper/PlanMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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;
}
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;
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();
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;
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;
}
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) {
                    // 季度判断
                    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
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