From 80662b34fe93b4ede00c7fc03fbd9f01355c94e2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 07 四月 2025 13:52:17 +0800
Subject: [PATCH] 修改任务接口

---
 business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java |  126 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 123 insertions(+), 3 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
index 6c533f0..78f132c 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
@@ -1,20 +1,31 @@
 package com.ycl.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.common.base.Result;
+import com.ycl.domain.entity.ProjectPlanExamineRecord;
 import com.ycl.domain.entity.ProjectPlanInfo;
+import com.ycl.domain.entity.ProjectPlanRecord;
 import com.ycl.domain.form.ProjectPlanInfoForm;
+import com.ycl.domain.form.ProjectPlanInfoRequestForm;
 import com.ycl.domain.query.ProjectPlanInfoQuery;
+import com.ycl.domain.vo.ProjectPlanInfoResponseVO;
 import com.ycl.domain.vo.ProjectPlanInfoVO;
 import com.ycl.framework.utils.PageUtil;
+import com.ycl.mapper.ProjectPlanExamineRecordMapper;
 import com.ycl.mapper.ProjectPlanInfoMapper;
+import com.ycl.mapper.ProjectPlanRecordMapper;
 import com.ycl.service.ProjectPlanInfoService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -29,6 +40,8 @@
 public class ProjectPlanInfoServiceImpl extends ServiceImpl<ProjectPlanInfoMapper, ProjectPlanInfo> implements ProjectPlanInfoService {
 
     private final ProjectPlanInfoMapper projectPlanInfoMapper;
+    private final ProjectPlanRecordMapper projectPlanRecordMapper;
+    private final ProjectPlanExamineRecordMapper projectPlanExamineRecordMapper;
 
     /**
      * 娣诲姞
@@ -98,9 +111,10 @@
      * @return
      */
     @Override
-    public Result detail(Integer id) {
-        ProjectPlanInfoVO vo = baseMapper.getById(id);
-        Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+    public Result detail(Long id) {
+        ProjectPlanInfoResponseVO vo = new ProjectPlanInfoResponseVO();
+        vo.setList(new LambdaQueryChainWrapper<>(baseMapper).eq(ProjectPlanInfo::getProjectPlanRecordId, id).list());
+        vo.setActualInvest(new LambdaQueryChainWrapper<>(projectPlanRecordMapper).eq(ProjectPlanRecord::getId, id).one().getActualInvest());
         return Result.ok().data(vo);
     }
 
@@ -116,4 +130,110 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Result addPlanInfo(ProjectPlanInfoRequestForm form) {
+        // 鍒犻櫎鍘熸湁璁板綍
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(ProjectPlanInfo::getProjectPlanRecordId, form.getProjectPlanRecordId())
+                .remove();
+        // 鎵归噺鎻掑叆鏂拌褰�
+        List<ProjectPlanInfo> list = new ArrayList<>();
+        form.getAddList().forEach(item -> {
+            ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+            projectPlanInfo.setProjectPlanRecordId(form.getProjectPlanRecordId());
+            projectPlanInfo.setTitle(item.getTitle()); // 璁″垝椤规爣棰�
+            projectPlanInfo.setPlanStatus(0); // 璁″垝椤圭姸鎬佷负鏈紑濮�
+            projectPlanInfo.setProgressStatus(0); // 璁″垝椤硅繘搴︿负鏈紑濮�
+            projectPlanInfo.setStartTime(item.getStartTime()); // 璁″垝椤瑰紑濮嬫椂闂�
+            projectPlanInfo.setEndTime(item.getEndTime()); // 璁″垝椤圭粨鏉熸椂闂�
+            list.add(projectPlanInfo);
+        });
+        this.saveBatch(list);
+        // 鏇存柊璁″垝璁板綍鐨勬姇璧�,浠ュ強涓婃姤鐘舵��
+        new LambdaUpdateChainWrapper<>(projectPlanRecordMapper)
+                .eq(ProjectPlanRecord::getId, form.getProjectPlanRecordId())
+                .set(ProjectPlanRecord::getActualInvest, form.getActualInvest())
+                .set(ProjectPlanRecord::getReportStatus, 0)
+                .update();
+
+        // 鏂板涓�鏉″鏍歌褰�
+        for (ProjectPlanInfo i : list){
+            ProjectPlanExamineRecord item = new ProjectPlanExamineRecord();
+            item.setProjectPlanRecordId(form.getProjectPlanRecordId());
+            item.setEventType(0); // 璁″垝涓婃姤
+            item.setProjectPlanInfoId(i.getId());
+            projectPlanExamineRecordMapper.insert(item);
+        }
+        return Result.ok("娣诲姞鎴愬姛");
+    }
+
+    @Override
+    public Result savePlanInfo(ProjectPlanInfoForm form, Long planRecordId) {
+        ProjectPlanInfo entity = new ProjectPlanInfo();
+        BeanUtils.copyProperties(form, entity);
+        entity.setProjectPlanRecordId(planRecordId); // 椤圭洰璁″垝璁板綍id
+        entity.setProgressStatus(0); // 鏈紑濮�
+        entity.setPlanStatus(0); // 鏈鏍�
+        // 鍒ゆ柇id鏄惁瀛樺湪锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
+        if (entity.getId() == null) {
+            baseMapper.insert(entity);
+        } else {
+            new LambdaUpdateChainWrapper<>(baseMapper).eq(ProjectPlanInfo::getId, entity.getId())
+                    .set(ProjectPlanInfo::getTitle, entity.getTitle())
+                    .set(ProjectPlanInfo::getStartTime, entity.getStartTime())
+                    .set(ProjectPlanInfo::getEndTime, entity.getEndTime())
+                    .update();
+        }
+        return Result.ok("淇濆瓨鎴愬姛");
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Result delayPlanInfo(ProjectPlanInfoForm request) {
+        // 鏇存敼璁″垝椤规椂闂�
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(ProjectPlanInfo::getId, request.getId())
+                .set(ProjectPlanInfo::getStartTime, request.getStartTime())
+                .set(ProjectPlanInfo::getEndTime, request.getEndTime())
+                .update();
+        // 鏌ヨ鍑哄師鏉ョ殑瀹℃牳璁板綍
+        ProjectPlanExamineRecord item = new LambdaQueryChainWrapper<>(projectPlanExamineRecordMapper)
+                .eq(ProjectPlanExamineRecord::getProjectPlanInfoId, request.getId())
+                .eq(ProjectPlanExamineRecord::getProjectPlanRecordId, request.getProjectPlanRecordId())
+                .ne(ProjectPlanExamineRecord::getEventType, 2)
+                .eq(ProjectPlanExamineRecord::getDeleted, 0) // 鏈垹闄�
+                .orderByDesc(ProjectPlanExamineRecord::getGmtCreate)
+                .last("LIMIT 1")
+                .one();
+        // 鏇存柊鍘熸潵鐨勫鏍歌褰�
+        item.setEventType(1);
+        item.setDelayStartTime(request.getStartTime());
+        item.setDelayEndTime(request.getEndTime());
+        projectPlanExamineRecordMapper.updateById(item);
+        return Result.ok("寤舵湡鎴愬姛");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result resubmitPlanInfo(ProjectPlanInfoForm form) {
+        // 鏇存柊閲嶆柊涓婃姤鍚庣殑鍐呭
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(ProjectPlanInfo::getId, form.getId())
+                .set(ProjectPlanInfo::getTitle, form.getTitle())
+                .set(ProjectPlanInfo::getStartTime, form.getStartTime())
+                .set(ProjectPlanInfo::getEndTime, form.getEndTime())
+                .set(ProjectPlanInfo::getPlanStatus, 0) // 灏嗚璁″垝椤硅缃负鏈鏍哥殑鐘舵��
+                .update();
+
+        // 鏂板涓�鏉¤鍒掍笂鎶ョ殑瀹℃牳璁板綍
+        ProjectPlanExamineRecord item = new ProjectPlanExamineRecord();
+        item.setProjectPlanRecordId(form.getProjectPlanRecordId());
+        item.setProjectPlanInfoId(form.getId());
+        item.setEventType(0); // 璁″垝涓婃姤
+        item.setGmtCreate(new Date());
+        projectPlanExamineRecordMapper.insert(item);
+        return Result.ok("閲嶆柊涓婃姤鎴愬姛");
+    }
 }

--
Gitblit v1.8.0