From 9a1eb07f890b6a69812c6c1d62a305b06b18fb73 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 26 十一月 2024 18:01:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java    |   17 ++
 business/src/main/java/com/ycl/service/ProjectPlanInfoService.java          |   15 ++
 business/src/main/java/com/ycl/service/FlowableTypeService.java             |    3 
 business/src/main/java/com/ycl/mapper/ProjectPlanInfoMapper.java            |    3 
 business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoRequest.java        |   17 ++
 business/src/main/resources/mapper/FlowableTypeMapper.xml                   |   12 ++
 business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java           |   15 ++
 business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoResponseVO.java     |   17 ++
 business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java |   57 +++++++++
 business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoItem.java           |   16 ++
 business/src/main/resources/mapper/ProjectPlanInfoMapper.xml                |   17 ++
 business/src/main/java/com/ycl/domain/entity/FlowableType.java              |   49 ++++++-
 business/src/main/java/com/ycl/mapper/FlowableTypeMapper.java               |    4 
 business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java    |   73 +++++++++++
 business/src/main/java/com/ycl/controller/FlowableTypeController.java       |   27 +++-
 15 files changed, 308 insertions(+), 34 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/FlowableTypeController.java b/business/src/main/java/com/ycl/controller/FlowableTypeController.java
index 3541bf4..e7f1588 100644
--- a/business/src/main/java/com/ycl/controller/FlowableTypeController.java
+++ b/business/src/main/java/com/ycl/controller/FlowableTypeController.java
@@ -3,6 +3,10 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.common.base.Result;
+import com.ycl.common.constant.UserConstants;
+import com.ycl.common.core.controller.BaseController;
+import com.ycl.common.core.domain.AjaxResult;
+import com.ycl.common.core.domain.entity.SysMenu;
 import com.ycl.common.group.Add;
 import com.ycl.common.group.Update;
 import com.ycl.domain.entity.FlowableType;
@@ -21,6 +25,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotEmpty;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -31,7 +36,7 @@
 @Api(value = "宸ヤ綔娴佸垎绫�", tags = "宸ヤ綔娴佸垎绫荤鐞�")
 @RestController
 @RequestMapping("/flowable_type")
-public class FlowableTypeController {
+public class FlowableTypeController extends BaseController {
 
     private final FlowableTypeService flowableTypeService;
 
@@ -39,6 +44,10 @@
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
 //    @PreAuthorize("hasAuthority('flowableType:add')")
     public Result add(@RequestBody @Validated(Add.class) FlowableType form) {
+        form.setCreateBy(getUsername());
+        form.setCreateTime(new Date());
+        form.setUpdateBy(getUsername());
+        form.setUpdateTime(new Date());
         flowableTypeService.save(form);
         return Result.ok();
     }
@@ -60,13 +69,15 @@
     }
 
 
-    @GetMapping("/page")
-    @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+    @GetMapping("/list")
 //    @PreAuthorize("hasAuthority('flowableType:page')")
-    public Result page(AbsQuery query) {
-        IPage<FlowableType> page = PageUtil.getPage(query, FlowableType.class);
-        flowableTypeService.page(page);
-        return Result.ok().data(page.getRecords()).total(page.getTotal());
+    public Result list(FlowableType flowableType) {
+        List<FlowableType> list = flowableTypeService.selectTypeList(flowableType);
+        return Result.ok().data(list);
     }
-
+    @GetMapping("/tree_select")
+    public AjaxResult treeSelect(FlowableType flowableType) {
+        List<FlowableType> list = flowableTypeService.selectTypeList(flowableType);
+        return success(flowableTypeService.buildTreeSelect(list));
+    }
 }
diff --git a/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java b/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
index e92a71f..84e7722 100644
--- a/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
@@ -4,8 +4,10 @@
 import com.ycl.common.base.Result;
 import com.ycl.common.group.Add;
 import com.ycl.common.group.Update;
+import com.ycl.domain.entity.ProjectPlanInfo;
 import com.ycl.domain.form.ProjectPlanInfoForm;
 import com.ycl.domain.query.ProjectPlanInfoQuery;
+import com.ycl.domain.vo.ProjectPlanInfoRequest;
 import com.ycl.service.ProjectPlanInfoService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,7 +36,7 @@
 
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
-    @PreAuthorize("hasAuthority('projectPlanInfo:add')")
+//    @PreAuthorize("hasAuthority('projectPlanInfo:add')")
     public Result add(@RequestBody @Validated(Add.class) ProjectPlanInfoForm form) {
         return projectPlanInfoService.add(form);
     }
@@ -69,7 +71,7 @@
 
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
-    @PreAuthorize("hasAuthority('projectPlanInfo:detail')")
+//    @PreAuthorize("hasAuthority('projectPlanInfo:detail')")
     public Result detail(@PathVariable("id") Integer id) {
         return projectPlanInfoService.detail(id);
     }
@@ -80,4 +82,15 @@
     public Result list() {
         return projectPlanInfoService.all();
     }
+
+
+    @PostMapping("/addPlanInfo")
+    public Result addPlanInfo(@RequestBody ProjectPlanInfoRequest request) {
+        return projectPlanInfoService.addPlanInfo(request);
+    }
+
+    @PostMapping("/savePlanInfo")
+    public Result savePlanInfo(@RequestBody ProjectPlanInfo item) {
+        return projectPlanInfoService.savePlanInfo(item);
+    }
 }
diff --git a/business/src/main/java/com/ycl/domain/entity/FlowableType.java b/business/src/main/java/com/ycl/domain/entity/FlowableType.java
index fa18704..553b018 100644
--- a/business/src/main/java/com/ycl/domain/entity/FlowableType.java
+++ b/business/src/main/java/com/ycl/domain/entity/FlowableType.java
@@ -1,21 +1,28 @@
 package com.ycl.domain.entity;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.common.core.domain.BaseEntity;
+import com.ycl.common.core.domain.entity.SysMenu;
 import com.ycl.system.domain.base.AbsEntity;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 娴佺▼鍒嗙被
  */
 @Data
 @TableName("t_flowable_type")
-public class FlowableType extends AbsEntity {
+public class FlowableType implements Serializable {
 
     private static final long serialVersionUID = 1L;
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Integer id;
 
     @TableField(value = "name")
     private String name;
@@ -23,17 +30,43 @@
     @TableField(value = "parent_id")
     private Integer parentId;
 
-    @TableField(value = "level")
-    private Integer level;
+    @TableField(value = "order_num")
+    private Integer orderNum;
 
-    @TableField(value = "leaf")
-    private Boolean leaf;
+//    @TableField(value = "level")
+//    private Integer level;
+//
+//    @TableField(value = "leaf")
+//    private Boolean leaf;
 
+    /**
+     * 鑿滃崟鐘舵�侊紙0姝e父 1鍋滅敤锛�
+     */
+    @TableField(value = "status")
+    private String status;
+
+    /** 鍒涘缓鑰� */
     @TableField(value = "create_by")
     private String createBy;
 
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /** 鏇存柊鑰� */
     @TableField(value = "update_by")
     private String updateBy;
 
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time")
+    private Date updateTime;
 
+    /** 澶囨敞 */
+    @TableField(value = "remark")
+    private String remark;
+
+    @TableField(exist = false)
+    private List<FlowableType> children = new ArrayList<FlowableType>();
 }
diff --git a/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java b/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
index 421f60b..a1933c7 100644
--- a/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
+++ b/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
@@ -1,11 +1,13 @@
 package com.ycl.domain.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ycl.system.domain.base.AbsEntity;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 椤圭洰璁″垝椤�
@@ -33,11 +35,20 @@
 
     @TableField("start_time")
     /** 璁″垝寮�濮嬫椂闂� */
-    private LocalDateTime startTime;
+    private Date startTime;
 
     @TableField("end_time")
     /** 璁″垝瀹屾垚鏃堕棿 */
-    private LocalDateTime endTime;
+    private Date endTime;
 
+    /** 鍒涘缓鏃堕棿 */
+    @TableField(exist = false)
+    private Date gmtCreate;
 
+    /** 淇敼鏃堕棿 */
+    @TableField(exist = false)
+    private Date gmtUpdate;
+
+    @TableField(exist = false)
+    private Integer deleted;
 }
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoItem.java b/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoItem.java
new file mode 100644
index 0000000..9be4fa1
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoItem.java
@@ -0,0 +1,16 @@
+package com.ycl.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPlanInfoItem {
+    private String title;
+    private Date startTime;
+    private Date endTime;
+}
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoRequest.java b/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoRequest.java
new file mode 100644
index 0000000..38745a9
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoRequest.java
@@ -0,0 +1,17 @@
+package com.ycl.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPlanInfoRequest {
+    private Integer projectPlanRecordId;
+    private BigDecimal actualInvest;
+    private List<ProjectPlanInfoItem> addList;
+}
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoResponseVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoResponseVO.java
new file mode 100644
index 0000000..1156970
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectPlanInfoResponseVO.java
@@ -0,0 +1,17 @@
+package com.ycl.domain.vo;
+
+import com.ycl.domain.entity.ProjectPlanInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPlanInfoResponseVO {
+    private List<ProjectPlanInfo> list;
+    private BigDecimal actualInvest;
+}
diff --git a/business/src/main/java/com/ycl/mapper/FlowableTypeMapper.java b/business/src/main/java/com/ycl/mapper/FlowableTypeMapper.java
index 428a7ee..d867543 100644
--- a/business/src/main/java/com/ycl/mapper/FlowableTypeMapper.java
+++ b/business/src/main/java/com/ycl/mapper/FlowableTypeMapper.java
@@ -4,8 +4,10 @@
 import com.ycl.domain.entity.FlowableType;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 @Mapper
 public interface FlowableTypeMapper extends BaseMapper<FlowableType> {
 
-
+    List<FlowableType> selectTypeList(FlowableType flowableType);
 }
diff --git a/business/src/main/java/com/ycl/mapper/ProjectPlanInfoMapper.java b/business/src/main/java/com/ycl/mapper/ProjectPlanInfoMapper.java
index 36005d1..d0d21cd 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectPlanInfoMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectPlanInfoMapper.java
@@ -31,4 +31,7 @@
     */
     IPage getPage(IPage page, @Param("query") ProjectPlanInfoQuery query);
 
+    void batchInsert(@Param("list") List<ProjectPlanInfo> list);
+
+    void insertOne(ProjectPlanInfo item);
 }
diff --git a/business/src/main/java/com/ycl/service/FlowableTypeService.java b/business/src/main/java/com/ycl/service/FlowableTypeService.java
index 924b6e9..0a8e314 100644
--- a/business/src/main/java/com/ycl/service/FlowableTypeService.java
+++ b/business/src/main/java/com/ycl/service/FlowableTypeService.java
@@ -9,4 +9,7 @@
 public interface FlowableTypeService extends IService<FlowableType> {
 
 
+    List<FlowableType> selectTypeList(FlowableType flowableType);
+
+    List<FlowableType> buildTreeSelect(List<FlowableType> list);
 }
diff --git a/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java b/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java
index ef8c612..e8c4e77 100644
--- a/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java
+++ b/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java
@@ -5,6 +5,7 @@
 import com.ycl.domain.entity.ProjectPlanInfo;
 import com.ycl.domain.form.ProjectPlanInfoForm;
 import com.ycl.domain.query.ProjectPlanInfoQuery;
+import com.ycl.domain.vo.ProjectPlanInfoRequest;
 
 import java.util.List;
 
@@ -59,8 +60,20 @@
     Result detail(Integer id);
 
     /**
-     * 鍒楄〃
+     * 鏂板璁″垝椤�
      * @return
      */
     Result all();
+
+    /**
+     * 鏂板璁″垝椤�
+     * @return
+     */
+    Result addPlanInfo(ProjectPlanInfoRequest request);
+
+    /**
+     * 淇濆瓨璁″垝椤�
+     * @return
+     */
+    Result savePlanInfo(ProjectPlanInfo item);
 }
diff --git a/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java
index c871d79..63aaca0 100644
--- a/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java
@@ -1,17 +1,14 @@
 package com.ycl.service.impl;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.common.base.Result;
 import com.ycl.domain.entity.FlowableType;
-import com.ycl.framework.utils.PageUtil;
 import com.ycl.mapper.FlowableTypeMapper;
 import com.ycl.service.FlowableTypeService;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
-import org.springframework.util.Assert;
 
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -20,4 +17,70 @@
 @RequiredArgsConstructor
 public class FlowableTypeServiceImpl extends ServiceImpl<FlowableTypeMapper, FlowableType> implements FlowableTypeService {
 
+    @Override
+    public List<FlowableType> selectTypeList(FlowableType flowableType) {
+        return baseMapper.selectTypeList(flowableType);
+    }
+
+    @Override
+    public List<FlowableType> buildTreeSelect(List<FlowableType> list) {
+        List<FlowableType> returnList = new ArrayList<FlowableType>();
+        List<Integer> tempList = list.stream().map(FlowableType::getId).collect(Collectors.toList());
+        for (Iterator<FlowableType> iterator = list.iterator(); iterator.hasNext();)
+        {
+            FlowableType type = (FlowableType) iterator.next();
+            // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
+            if (!tempList.contains(type.getParentId()))
+            {
+                recursionFn(list, type);
+                returnList.add(type);
+            }
+        }
+        if (returnList.isEmpty())
+        {
+            returnList = list;
+        }
+        return returnList;
+    }
+
+    private void recursionFn(List<FlowableType> list, FlowableType t)
+    {
+        // 寰楀埌瀛愯妭鐐瑰垪琛�
+        List<FlowableType> childList = getChildList(list, t);
+        t.setChildren(childList);
+        for (FlowableType tChild : childList)
+        {
+            if (hasChild(list, tChild))
+            {
+                recursionFn(list, tChild);
+            }
+        }
+    }
+
+    /**
+     * 寰楀埌瀛愯妭鐐瑰垪琛�
+     */
+    private List<FlowableType> getChildList(List<FlowableType> list, FlowableType t)
+    {
+        List<FlowableType> tlist = new ArrayList<FlowableType>();
+        Iterator<FlowableType> it = list.iterator();
+        while (it.hasNext())
+        {
+            FlowableType n = (FlowableType) it.next();
+            if (n.getParentId().longValue() == t.getId().longValue())
+            {
+                tlist.add(n);
+            }
+        }
+        return tlist;
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
+     */
+    private boolean hasChild(List<FlowableType> list, FlowableType t)
+    {
+        return getChildList(list, t).size() > 0;
+    }
+
 }
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..9f58f2e 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,27 @@
 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.ProjectPlanInfo;
+import com.ycl.domain.entity.ProjectPlanRecord;
 import com.ycl.domain.form.ProjectPlanInfoForm;
 import com.ycl.domain.query.ProjectPlanInfoQuery;
+import com.ycl.domain.vo.ProjectPlanInfoRequest;
+import com.ycl.domain.vo.ProjectPlanInfoResponseVO;
 import com.ycl.domain.vo.ProjectPlanInfoVO;
 import com.ycl.framework.utils.PageUtil;
 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.util.Assert;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -29,6 +36,7 @@
 public class ProjectPlanInfoServiceImpl extends ServiceImpl<ProjectPlanInfoMapper, ProjectPlanInfo> implements ProjectPlanInfoService {
 
     private final ProjectPlanInfoMapper projectPlanInfoMapper;
+    private final ProjectPlanRecordMapper projectPlanRecordMapper;
 
     /**
      * 娣诲姞
@@ -99,8 +107,9 @@
      */
     @Override
     public Result detail(Integer id) {
-        ProjectPlanInfoVO vo = baseMapper.getById(id);
-        Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+        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 +125,48 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+    @Override
+    public Result addPlanInfo(ProjectPlanInfoRequest request) {
+        if (request.getAddList() == null || request.getAddList().isEmpty()) {{
+            return Result.error("璇烽�夋嫨瑕佹坊鍔犵殑璁″垝椤�");
+        }}
+        // 鍒犻櫎鍘熸湁璁板綍
+        new LambdaUpdateChainWrapper<>(baseMapper).eq(ProjectPlanInfo::getProjectPlanRecordId, request.getProjectPlanRecordId()).remove();
+        // 鎵归噺鎻掑叆鏂拌褰�
+        List<ProjectPlanInfo> list = new ArrayList<>();
+        request.getAddList().forEach(item -> {
+            ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+            projectPlanInfo.setProjectPlanRecordId(request.getProjectPlanRecordId().longValue());
+            projectPlanInfo.setTitle(item.getTitle());
+            projectPlanInfo.setProgressStatus(0);
+            projectPlanInfo.setStartTime(item.getStartTime());
+            projectPlanInfo.setEndTime(item.getEndTime());
+            list.add(projectPlanInfo);
+        });
+        baseMapper.batchInsert(list);
+        // 鏇存柊璁″垝璁板綍鐨勬姇璧�,浠ュ強涓婃姤鐘舵��
+        new LambdaUpdateChainWrapper<>(projectPlanRecordMapper)
+                .eq(ProjectPlanRecord::getId, request.getProjectPlanRecordId())
+                .set(ProjectPlanRecord::getActualInvest, request.getActualInvest())
+                .set(ProjectPlanRecord::getReportStatus, 0)
+                .update();
+        return Result.ok("娣诲姞鎴愬姛");
+    }
+
+    @Override
+    public Result savePlanInfo(ProjectPlanInfo item) {
+        item.setProgressStatus(0);
+        // 鍒ゆ柇id鏄惁瀛樺湪锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
+        if (item.getId() == null) {
+            baseMapper.insertOne(item);
+        } else {
+            new LambdaUpdateChainWrapper<>(baseMapper).eq(ProjectPlanInfo::getId, item.getId())
+                    .set(ProjectPlanInfo::getTitle, item.getTitle())
+                    .set(ProjectPlanInfo::getStartTime, item.getStartTime())
+                    .set(ProjectPlanInfo::getEndTime, item.getEndTime())
+                    .update();
+        }
+        return Result.ok("淇濆瓨鎴愬姛");
+    }
 }
diff --git a/business/src/main/resources/mapper/FlowableTypeMapper.xml b/business/src/main/resources/mapper/FlowableTypeMapper.xml
index 456f26d..5fc2af2 100644
--- a/business/src/main/resources/mapper/FlowableTypeMapper.xml
+++ b/business/src/main/resources/mapper/FlowableTypeMapper.xml
@@ -53,5 +53,17 @@
         WHERE
             TP.deleted = 0
     </select>
+    <select id="selectTypeList" parameterType="com.ycl.domain.entity.FlowableType" resultType="com.ycl.domain.entity.FlowableType">
+        select * from t_flowable_type
+        <where>
+            <if test="name != null and name != ''">
+                AND name like concat('%', #{name}, '%')
+            </if>
+            <if test="status != null and status != ''">
+                AND status = #{status}
+            </if>
+        </where>
+        order by parent_id, order_num
+    </select>
 
 </mapper>
diff --git a/business/src/main/resources/mapper/ProjectPlanInfoMapper.xml b/business/src/main/resources/mapper/ProjectPlanInfoMapper.xml
index 2ea53cc..002a186 100644
--- a/business/src/main/resources/mapper/ProjectPlanInfoMapper.xml
+++ b/business/src/main/resources/mapper/ProjectPlanInfoMapper.xml
@@ -10,11 +10,18 @@
         <result column="start_time" property="startTime" />
         <result column="end_time" property="endTime" />
     </resultMap>
-
-
-
-
-
+    <insert id="batchInsert">
+        insert into t_project_plan_info(project_plan_record_id, title, progress_status, start_time, end_time)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.projectPlanRecordId}, #{item.title}, #{item.progressStatus}, #{item.startTime}, #{item.endTime})
+        </foreach>
+    </insert>
+    <insert id="insertOne">
+        insert into t_project_plan_info(project_plan_record_id, title, progress_status, start_time, end_time)
+        values
+        (#{projectPlanRecordId}, #{title}, #{progressStatus}, #{startTime}, #{endTime})
+    </insert>
 
 
     <select id="getById" resultMap="BaseResultMap">

--
Gitblit v1.8.0