Browse Source

部门月度计划开启暂停

qianxb 2 years ago
parent
commit
7765d2eadb
17 changed files with 301 additions and 41 deletions
  1. 3 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ProjectCostBudgetDTO.java
  2. 27 4
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/DepartmentPlanLog.java
  3. 3 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ProjectCostBudgetVO.java
  4. 12 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentMonthPlanController.java
  5. 63 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentPlanLogController.java
  6. 13 13
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetController.java
  7. 1 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/DepartmentPlanLogMapper.java
  8. 6 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/DepartmentPlanLogMapper.xml
  9. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.java
  10. 11 2
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml
  11. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IDepartmentMonthPlanService.java
  12. 10 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IDepartmentPlanLogService.java
  13. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java
  14. 35 3
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DepartmentMonthPlanServiceImpl.java
  15. 99 18
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DepartmentPlanLogImpl.java
  16. 10 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java
  17. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

+ 3 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ProjectCostBudgetDTO.java

@@ -24,4 +24,7 @@ public class ProjectCostBudgetDTO {
 
 
     @ApiModelProperty(value = "建设单位预算集合")
     @ApiModelProperty(value = "建设单位预算集合")
     private List<ProjectCostBudget> constructUnit;
     private List<ProjectCostBudget> constructUnit;
+
+    @ApiModelProperty(value = "部门计划集合")
+    private List<ProjectCostBudget> departmentPlanList;
 }
 }

+ 27 - 4
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/DepartmentPlanLog.java

@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
 import org.springblade.core.mp.base.BaseEntity;
 import org.springblade.core.mp.base.BaseEntity;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.Date;
 
 
@@ -59,7 +60,7 @@ public class DepartmentPlanLog extends BaseEntity {
             pattern = "yyyy-MM-dd"
             pattern = "yyyy-MM-dd"
     )
     )
     @ApiModelProperty(value = "中途暂停时间")
     @ApiModelProperty(value = "中途暂停时间")
-    private LocalDate timeOut;
+    private LocalDate pauseTime;
 
 
     @DateTimeFormat(
     @DateTimeFormat(
             pattern = "yyyy-MM-dd"
             pattern = "yyyy-MM-dd"
@@ -79,15 +80,37 @@ public class DepartmentPlanLog extends BaseEntity {
     @ApiModelProperty(value = "中途开启计划-结束时间")
     @ApiModelProperty(value = "中途开启计划-结束时间")
     private LocalDate openPlanEndTime;
     private LocalDate openPlanEndTime;
 
 
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "中途暂停计划-开始时间")
+    private LocalDate pausePlanStartTime;
+
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "中途暂停计划-结束时间")
+    private LocalDate pausePlanEndTime;
+
+
+    @ApiModelProperty(value = "计划天数")
+    private BigDecimal planDays;
+
     @ApiModelProperty(value = "实际工作时间")
     @ApiModelProperty(value = "实际工作时间")
-    private Integer realWorkDays;
+    private BigDecimal realWorkDays;
 
 
     @ApiModelProperty(value = "计划执行顺序")
     @ApiModelProperty(value = "计划执行顺序")
     private Integer sort;
     private Integer sort;
 
 
     @ApiModelProperty(value = "中途开启计划起止天数")
     @ApiModelProperty(value = "中途开启计划起止天数")
-    private Integer openPlanStartEndDays;
+    private BigDecimal openPlanStartEndDays;
 
 
     @ApiModelProperty(value = "上一次中途开启计划起止天数")
     @ApiModelProperty(value = "上一次中途开启计划起止天数")
-    private Integer lastOpenPlanStartEndDays;
+    private BigDecimal lastOpenPlanStartEndDays;
 }
 }

+ 3 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ProjectCostBudgetVO.java

@@ -35,6 +35,9 @@ public class ProjectCostBudgetVO extends ProjectCostBudget {
     @ApiModelProperty(value = "岗位类型值")
     @ApiModelProperty(value = "岗位类型值")
     private String postTypeValue;
     private String postTypeValue;
 
 
+    @ApiModelProperty(value = "状态值")
+    private String statusValue;
+
     @ApiModelProperty(value = "计划施工单位")
     @ApiModelProperty(value = "计划施工单位")
     private Map<Integer,List<ProjectCostBudgetVO2>> buildUnit;
     private Map<Integer,List<ProjectCostBudgetVO2>> buildUnit;
 
 

+ 12 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentMonthPlanController.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.springblade.control.dto.ProjectCostBudgetDTO;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.entity.ProjectReimbursement;
 import org.springblade.control.entity.ProjectReimbursement;
 import org.springblade.control.service.IDepartmentMonthPlanService;
 import org.springblade.control.service.IDepartmentMonthPlanService;
@@ -48,6 +49,17 @@ public class DepartmentMonthPlanController {
         return R.data(planService.getDepartmentPlan(plan));
         return R.data(planService.getDepartmentPlan(plan));
     }
     }
 
 
+    /**
+     * 修改部门月计划
+     */
+    @PostMapping("/updateDepartmentPlan")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "新增部门月计划")
+    public R updateDepartmentPlan(@RequestBody ProjectCostBudgetDTO dto) {
+        planService.updateDepartmentPlan(dto);
+        return R.success("保存成功");
+    }
+
     /**
     /**
      * 获取前5个部门列表
      * 获取前5个部门列表
      */
      */

+ 63 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentPlanLogController.java

@@ -8,11 +8,15 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springblade.control.dto.AnnualBudgetDTO;
 import org.springblade.control.dto.AnnualBudgetDTO;
+import org.springblade.control.entity.DepartmentPlanLog;
 import org.springblade.control.service.IAnnualBudgetService;
 import org.springblade.control.service.IAnnualBudgetService;
+import org.springblade.control.service.IDepartmentPlanLogService;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import java.time.LocalDate;
+
 /**
 /**
  * @Param
  * @Param
  * @Author wangwl
  * @Author wangwl
@@ -24,5 +28,64 @@ import org.springframework.web.bind.annotation.*;
 @Api(value = "部门计划日志接口", tags = "部门计划日志接口")
 @Api(value = "部门计划日志接口", tags = "部门计划日志接口")
 public class DepartmentPlanLogController {
 public class DepartmentPlanLogController {
 
 
+    private final IDepartmentPlanLogService logService;
+
+//    /**
+//     * 根据暂停时间获取实际工时
+//     */
+//    @GetMapping("/getRealWorkDays")
+//    @ApiOperationSupport(order = 2)
+//    @ApiOperation(value = "获取实际工时")
+//    public R getRealWorkDays(LocalDate date) {
+//        return R.data(logService.getRealWorkDays(date));
+//    }
+
+    /**
+     * 暂停时获取计划
+     */
+    @GetMapping("/getPlanInPause")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "暂停时获取计划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "计划的id", required = true),
+    })
+    public R getPlanInPause(Long id) {
+        return R.data(logService.getPlanInPause(id));
+    }
+
+    /**
+     * 暂停保存
+     */
+    @PostMapping("/savePlanInPause")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "暂停保存")
+    public R savePlanInPause(@RequestBody DepartmentPlanLog log) {
+        logService.savePlanInPause(log);
+        return R.success("暂停成功");
+    }
+
+    /**
+     * 开启时获取计划
+     */
+    @GetMapping("/getPlanInOpen")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "开启时获取计划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "计划的id", required = true),
+    })
+    public R getPlanInOpen(Long id) {
+        return R.data(logService.getPlanInOpen(id));
+    }
+
+    /**
+     * 开启保存
+     */
+    @PostMapping("/savePlanInOpen")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "开启保存")
+    public R savePlanInOpen(@RequestBody DepartmentPlanLog log) {
+        logService.savePlanInOpen(log);
+        return R.success("开启成功");
+    }
 
 
 }
 }

+ 13 - 13
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetController.java

@@ -68,19 +68,19 @@ public class ProjectCostBudgetController {
         return R.success("保存成功");
         return R.success("保存成功");
     }
     }
 
 
-    /**
-     * 获取部门月计划
-     */
-    @GetMapping("/getDepartmentPlan")
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "获取部门月计划")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "departmentType", value = "部门类型", required = true),
-            @ApiImplicitParam(name = "planDate", value = "查询月份", required = true),
-    })
-    public R getDepartmentPlan(Integer departmentType,String planDate){
-        return R.data(budgetService.getDepartmentPlan(departmentType,planDate));
-    }
+//    /**
+//     * 获取部门月计划
+//     */
+//    @GetMapping("/getDepartmentPlan")
+//    @ApiOperationSupport(order = 1)
+//    @ApiOperation(value = "获取部门月计划")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(name = "departmentType", value = "部门类型", required = true),
+//            @ApiImplicitParam(name = "planDate", value = "查询月份", required = true),
+//    })
+//    public R getDepartmentPlan(Integer departmentType,String planDate){
+//        return R.data(budgetService.getDepartmentPlan(departmentType,planDate));
+//    }
 
 
 
 
 }
 }

+ 1 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/DepartmentPlanLogMapper.java

@@ -12,4 +12,5 @@ import org.springblade.control.entity.DepartmentPlanLog;
  **/
  **/
 public interface DepartmentPlanLogMapper extends BaseMapper<DepartmentPlanLog> {
 public interface DepartmentPlanLogMapper extends BaseMapper<DepartmentPlanLog> {
 
 
+    DepartmentPlanLog getNewestPlanLog(@Param("id") Long id);
 }
 }

+ 6 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/DepartmentPlanLogMapper.xml

@@ -3,4 +3,10 @@
 <mapper namespace="org.springblade.control.mapper.DepartmentPlanLogMapper">
 <mapper namespace="org.springblade.control.mapper.DepartmentPlanLogMapper">
 
 
 
 
+    <select id="getNewestPlanLog" resultType="org.springblade.control.entity.DepartmentPlanLog">
+        select * from c_department_plan_log
+        where plan_id = #{id}
+        order by sort desc
+        limit 1
+    </select>
 </mapper>
 </mapper>

+ 2 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.java

@@ -40,4 +40,6 @@ public interface ProjectCostBudgetMapper extends BaseMapper<ProjectCostBudget> {
     void removeChildrenPlan(@Param("projectId") Long projectId);
     void removeChildrenPlan(@Param("projectId") Long projectId);
 
 
     List<ProjectCostBudgetVO> getDepartmentPlan(@Param("type") Integer type,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
     List<ProjectCostBudgetVO> getDepartmentPlan(@Param("type") Integer type,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
+
+    void updateStatus(@Param("id") Long id,@Param("status") int status);
 }
 }

+ 11 - 2
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml

@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.springblade.control.mapper.ProjectCostBudgetMapper">
 <mapper namespace="org.springblade.control.mapper.ProjectCostBudgetMapper">
+    <update id="updateStatus">
+        update c_project_cost_budget set status = #{status} where id = #{id}
+    </update>
 
 
 
 
     <delete id="removeOldBudget">
     <delete id="removeOldBudget">
@@ -67,12 +70,18 @@
     </select>
     </select>
     <select id="getDepartmentPlan" resultType="org.springblade.control.vo.ProjectCostBudgetVO">
     <select id="getDepartmentPlan" resultType="org.springblade.control.vo.ProjectCostBudgetVO">
         select pcb.*,
         select pcb.*,
+               case pcb.status
+                   when 1 then '未开始'
+                   when 2 then '进行中'
+                   when 3 then '暂停'
+                   when 4 then '已完成'
+                   end  as statusValue,
                (select cpi.name from c_control_project_info cpi WHERE cpi.id = pcb.project_id) as projectName,
                (select cpi.name from c_control_project_info cpi WHERE cpi.id = pcb.project_id) as projectName,
                (select cpp.name from c_project_process cpp WHERE cpp.id = pcb.project_process) as projectProcessValue
                (select cpp.name from c_project_process cpp WHERE cpp.id = pcb.project_process) as projectProcessValue
         from c_project_cost_budget pcb
         from c_project_cost_budget pcb
         WHERE pcb.cost_type = #{type}
         WHERE pcb.cost_type = #{type}
-          and (pcb.plan_start_date BETWEEN #{startDate} AND #{endDate}
-            or pcb.plan_end_date BETWEEN #{startDate} AND #{endDate})
+          and (pcb.plan_start_time BETWEEN #{startDate} AND #{endDate}
+            or pcb.plan_end_time BETWEEN #{startDate} AND #{endDate})
     </select>
     </select>
 
 
 
 

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IDepartmentMonthPlanService.java

@@ -1,6 +1,7 @@
 package org.springblade.control.service;
 package org.springblade.control.service;
 
 
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
+import org.springblade.control.dto.ProjectCostBudgetDTO;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.entity.DictInfo;
 import org.springblade.control.entity.DictInfo;
 import org.springblade.control.entity.ProjectProcess;
 import org.springblade.control.entity.ProjectProcess;
@@ -22,4 +23,6 @@ public interface IDepartmentMonthPlanService extends BaseService<DepartmentMonth
     List<DictInfo> getDepartmentDict();
     List<DictInfo> getDepartmentDict();
 
 
     List<ProjectCostBudgetVO> getDepartmentPlan(DepartmentMonthPlan plan);
     List<ProjectCostBudgetVO> getDepartmentPlan(DepartmentMonthPlan plan);
+
+    void updateDepartmentPlan(ProjectCostBudgetDTO dto);
 }
 }

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IDepartmentPlanLogService.java

@@ -6,6 +6,7 @@ import org.springblade.control.entity.DictInfo;
 import org.springblade.control.vo.ProjectCostBudgetVO;
 import org.springblade.control.vo.ProjectCostBudgetVO;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
 
 
+import java.time.LocalDate;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -15,4 +16,13 @@ import java.util.List;
  **/
  **/
 public interface IDepartmentPlanLogService extends BaseService<DepartmentPlanLog> {
 public interface IDepartmentPlanLogService extends BaseService<DepartmentPlanLog> {
 
 
+    Integer getRealWorkDays(LocalDate date);
+
+    DepartmentPlanLog getPlanInPause(Long id);
+
+    void savePlanInPause(DepartmentPlanLog log);
+
+    DepartmentPlanLog getPlanInOpen(Long id);
+
+    void savePlanInOpen(DepartmentPlanLog log);
 }
 }

+ 2 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java

@@ -38,4 +38,6 @@ public interface IProjectCostBudgetService extends BaseService<ProjectCostBudget
     void updatePlan(ProjectCostBudgetVO vo);
     void updatePlan(ProjectCostBudgetVO vo);
     //根据部门类型和日期查询计划
     //根据部门类型和日期查询计划
     List<ProjectCostBudgetVO> getDepartmentPlan(Integer type,String date);
     List<ProjectCostBudgetVO> getDepartmentPlan(Integer type,String date);
+    //根据id修改状态
+    void updateStatus(Long id, int status);
 }
 }

+ 35 - 3
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DepartmentMonthPlanServiceImpl.java

@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
-import org.springblade.control.entity.DepartmentMonthPlan;
-import org.springblade.control.entity.DictInfo;
-import org.springblade.control.entity.ProjectProcess;
+import org.springblade.control.dto.ProjectCostBudgetDTO;
+import org.springblade.control.entity.*;
 import org.springblade.control.mapper.DepartmentMonthPlanMapper;
 import org.springblade.control.mapper.DepartmentMonthPlanMapper;
 import org.springblade.control.mapper.ProjectProcessMapper;
 import org.springblade.control.mapper.ProjectProcessMapper;
 import org.springblade.control.service.IDepartmentMonthPlanService;
 import org.springblade.control.service.IDepartmentMonthPlanService;
+import org.springblade.control.service.IDepartmentPlanLogService;
 import org.springblade.control.service.IProjectCostBudgetService;
 import org.springblade.control.service.IProjectCostBudgetService;
 import org.springblade.control.service.IProjectProcessService;
 import org.springblade.control.service.IProjectProcessService;
 import org.springblade.control.vo.ProjectCostBudgetVO;
 import org.springblade.control.vo.ProjectCostBudgetVO;
@@ -17,6 +17,7 @@ import org.springblade.control.vo.ProjectProcessVO;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -33,6 +34,8 @@ public class DepartmentMonthPlanServiceImpl extends BaseServiceImpl<DepartmentMo
 
 
     private final IProjectCostBudgetService budgetService;
     private final IProjectCostBudgetService budgetService;
 
 
+    private final IDepartmentPlanLogService logService;
+
     /**
     /**
      * 新增部门月计划
      * 新增部门月计划
      */
      */
@@ -80,4 +83,33 @@ public class DepartmentMonthPlanServiceImpl extends BaseServiceImpl<DepartmentMo
         }
         }
         return voList;
         return voList;
     }
     }
+
+    /**
+     * 修改部门月计划
+     */
+    @Override
+    @Transactional
+    public void updateDepartmentPlan(ProjectCostBudgetDTO dto) {
+        List<ProjectCostBudget> list = dto.getDepartmentPlanList();
+        if (list != null && list.size() > 0){
+            for (ProjectCostBudget budget : list) {
+                if (budget.getTaskUser() != null && budget.getStatus() == 1){
+                    //分配任务人,开始执行计划
+                    DepartmentPlanLog planLog = new DepartmentPlanLog();
+                    planLog.setPlanId(budget.getId());
+                    planLog.setPlanStartTime(budget.getPlanStartTime());
+                    planLog.setPlanEndTime(budget.getPlanEndTime());
+                    planLog.setRealPlanStartTime(LocalDate.now());
+                    planLog.setPlanDays(budget.getPlanDays());
+                    planLog.setSort(1);
+                    logService.save(planLog);
+                    //修改计划状态为进行中
+                    budget.setStatus(2);
+                }
+            }
+            budgetService.updateBatchById(list);
+        }else {
+            throw new ServiceException("暂无数据,无需保存");
+        }
+    }
 }
 }

+ 99 - 18
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DepartmentPlanLogImpl.java

@@ -1,29 +1,16 @@
 package org.springblade.control.service.impl;
 package org.springblade.control.service.impl;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
-import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.control.dto.ControlProjectInfoDTO;
-import org.springblade.control.entity.ControlContractInfo;
-import org.springblade.control.entity.ControlProjectInfo;
 import org.springblade.control.entity.DepartmentPlanLog;
 import org.springblade.control.entity.DepartmentPlanLog;
-import org.springblade.control.entity.DictInfo;
 import org.springblade.control.mapper.DepartmentPlanLogMapper;
 import org.springblade.control.mapper.DepartmentPlanLogMapper;
-import org.springblade.control.mapper.ProjectInfoMapper;
-import org.springblade.control.service.IContractInfoService;
-import org.springblade.control.service.IDepartmentPlanLogService;
-import org.springblade.control.service.IProjectInfoService;
-import org.springblade.control.service.IProjectProcessService;
-import org.springblade.control.vo.ControlProjectInfoVO;
-import org.springblade.core.log.exception.ServiceException;
+import org.springblade.control.service.*;;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.mp.support.Query;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
-
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -35,4 +22,98 @@ import java.util.List;
 @AllArgsConstructor
 @AllArgsConstructor
 public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapper, DepartmentPlanLog> implements IDepartmentPlanLogService {
 public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapper, DepartmentPlanLog> implements IDepartmentPlanLogService {
 
 
+    private final IProjectCostBudgetService budgetService;
+
+    /**
+     * 根据暂停时间获取实际工时
+     */
+    @Override
+    public Integer getRealWorkDays(LocalDate date) {
+        return null;
+    }
+
+    /**
+     * 暂停时获取计划信息
+     */
+    @Override
+    public DepartmentPlanLog getPlanInPause(Long id) {
+        //获取计划最新的执行情况
+        DepartmentPlanLog log = baseMapper.getNewestPlanLog(id);
+        //设置中途暂停计划日期为今天
+        log.setPauseTime(LocalDate.now());
+        //计算暂停日期和,中途开启计划的开始日期,之前的工作天数,如果是第一次暂停,则中途开启为null,则计算计划实际开始日期
+        Long days;
+        if (log.getOpenPlanStartTime() != null){
+            days = log.getOpenPlanStartTime().until(log.getPauseTime(), ChronoUnit.DAYS);
+        }else {
+            days = log.getRealPlanStartTime().until(log.getPauseTime(), ChronoUnit.DAYS);
+        }
+        //更新计划实际工作日期,如果是第一次暂停则默认为0+
+        if (log.getRealWorkDays() == null){
+            log.setRealWorkDays(new BigDecimal("0"));
+        }
+        log.setRealWorkDays(log.getRealWorkDays().add(new BigDecimal(days)));
+        return log;
+    }
+
+    /**
+     * 暂停保存
+     */
+    @Override
+    @Transactional
+    public void savePlanInPause(DepartmentPlanLog log) {
+        log.setId(null);
+        log.setSort(log.getSort()+1);
+        log.setStatus(0);
+        this.save(log);
+        budgetService.updateStatus(log.getPlanId(),3);
+    }
+
+    /**
+     * 开始时获取计划信息
+     */
+    @Override
+    public DepartmentPlanLog getPlanInOpen(Long id) {
+        //获取计划最新的执行情况
+        DepartmentPlanLog log = baseMapper.getNewestPlanLog(id);
+        //先设置上一次开启计划工时,因为下面会修改
+        if (log.getOpenPlanStartEndDays() == null){
+            log.setLastOpenPlanStartEndDays(null);
+        }else{
+            log.setLastOpenPlanStartEndDays(log.getOpenPlanStartEndDays());
+        }
+        //设置中途暂停开始时间,则为上一次开始时间
+        if (log.getOpenPlanStartTime() != null){
+            log.setPausePlanStartTime(log.getOpenPlanStartTime());
+        }else {
+            log.setPausePlanStartTime(log.getRealPlanStartTime());
+        }
+        //设置中途暂停结束时间,则为暂停时间
+        log.setPausePlanEndTime(LocalDate.now());
+        //计算剩余工作量
+        BigDecimal days = log.getPlanDays().subtract(log.getRealWorkDays());
+        //如果剩余天数大于0,才设置默认值
+        if (days.intValue() > 0) {
+            //设置默认,开启计划开启时间为今天
+            log.setOpenPlanStartTime(LocalDate.now());
+            //设置默认,开启计划结束时间为剩下的工作量加上今天
+            log.setOpenPlanEndTime(LocalDate.now().plusDays(days.longValue()));
+            //设置中途开启的计划起止天数,默认值为剩余工作量
+            log.setOpenPlanStartEndDays(days);
+        }else {
+            log.setOpenPlanStartTime(null);
+            log.setOpenPlanEndTime(null);
+            log.setOpenPlanStartEndDays(null);
+        }
+        return log;
+    }
+
+    @Override
+    public void savePlanInOpen(DepartmentPlanLog log) {
+        log.setId(null);
+        log.setSort(log.getSort()+1);
+        log.setStatus(1);
+        this.save(log);
+        budgetService.updateStatus(log.getPlanId(),2);
+    }
 }
 }

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -243,6 +243,16 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         return departmentPlan;
         return departmentPlan;
     }
     }
 
 
+    /**
+     * 根据id修改状态
+     * @param id
+     * @param status
+     */
+    @Override
+    public void updateStatus(Long id, int status) {
+        baseMapper.updateStatus(id,status);
+    }
+
     /**
     /**
      * 统计一行的几个总金额
      * 统计一行的几个总金额
      */
      */

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -389,7 +389,7 @@
             as notExsitChild
             as notExsitChild
         FROM m_archive_tree_contract matc1
         FROM m_archive_tree_contract matc1
         WHERE  matc1.parent_id in (select id from m_archive_tree_contract
         WHERE  matc1.parent_id in (select id from m_archive_tree_contract
-                            WHERE parent_id = (select id from m_archive_tree_contract WHERE parent_id = 0 and project_id = #{projectId})
+                            WHERE parent_id = (select id from m_archive_tree_contract WHERE parent_id = 0 and project_id = #{projectId} and is_deleted = 0)
                               and tree_code is NULL)
                               and tree_code is NULL)
           and matc1.is_deleted = 0
           and matc1.is_deleted = 0
     </select>
     </select>