Procházet zdrojové kódy

更新费用报销单

jihs před 4 roky
rodič
revize
5236f5ea65
20 změnil soubory, kde provedl 297 přidání a 23 odebrání
  1. 3 0
      src/main/java/org/jeecg/common/dto/expense/ExpenseSlipProjectAddReqDTO.java
  2. 3 0
      src/main/java/org/jeecg/common/dto/expense/ExpenseSlipProjectListRespDTO.java
  3. 15 0
      src/main/java/org/jeecg/common/dto/expense/SlipUpdateFile.java
  4. 35 0
      src/main/java/org/jeecg/common/dto/expense/SlipUpdateFileRespDTO.java
  5. 5 2
      src/main/java/org/jeecg/common/dto/report/CostAccountingReqDTO.java
  6. 2 1
      src/main/java/org/jeecg/modules/basedata/controller/BaseArchivesCostController.java
  7. 56 0
      src/main/java/org/jeecg/modules/expense/entity/ReExpenseSlipUpdateFile.java
  8. 17 0
      src/main/java/org/jeecg/modules/expense/mapper/ReExpenseSlipUpdateFileMapper.java
  9. 5 0
      src/main/java/org/jeecg/modules/expense/mapper/xml/ReExpenseSlipUpdateFileMapper.xml
  10. 14 0
      src/main/java/org/jeecg/modules/expense/service/IReExpenseSlipUpdateFileService.java
  11. 77 4
      src/main/java/org/jeecg/modules/expense/service/impl/ReExpenseSlipServiceImpl.java
  12. 19 0
      src/main/java/org/jeecg/modules/expense/service/impl/ReExpenseSlipUpdateFileServiceImpl.java
  13. 11 1
      src/main/java/org/jeecg/modules/payment/controller/ManagerPaymentAndReceiptSlipController.java
  14. 1 1
      src/main/java/org/jeecg/modules/payment/mapper/xml/ManagerPaymentAndReceiptSlipMapper.xml
  15. 0 1
      src/main/java/org/jeecg/modules/payment/service/impl/ManagerPaymentAndReceiptSlipServiceImpl.java
  16. 2 1
      src/main/java/org/jeecg/modules/prowork/service/impl/ProWorkLogicServiceImpl.java
  17. 4 0
      src/main/java/org/jeecg/modules/report/controller/ProReportController.java
  18. 1 1
      src/main/java/org/jeecg/modules/report/entity/ChoosePlanTypeEnum.java
  19. 6 0
      src/main/java/org/jeecg/modules/report/mapper/xml/ProReportMapper.xml
  20. 21 11
      src/main/java/org/jeecg/modules/report/service/impl/ProReportServiceImpl.java

+ 3 - 0
src/main/java/org/jeecg/common/dto/expense/ExpenseSlipProjectAddReqDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.math.BigDecimal;
+import java.util.List;
 
 @ApiModel("费用报销单--项目金额新增参数请求")
 @Data
@@ -18,6 +19,8 @@ public class ExpenseSlipProjectAddReqDTO {
     private String costName;
     @ApiModelProperty("金额")
     private BigDecimal price;
+    @ApiModelProperty("附件")
+    private List<SlipUpdateFile> files;
 
     public ExpenseSlipProjectAddReqDTO() {
     }

+ 3 - 0
src/main/java/org/jeecg/common/dto/expense/ExpenseSlipProjectListRespDTO.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.jeecg.modules.expense.entity.ReExpenseSlipProject;
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
    * @Author jihaosen
@@ -26,6 +27,8 @@ public class ExpenseSlipProjectListRespDTO {
     @ApiModelProperty("排序")
     private Integer sort;
 
+    private List<SlipUpdateFileRespDTO> files;
+
     public ExpenseSlipProjectListRespDTO() {
     }
 

+ 15 - 0
src/main/java/org/jeecg/common/dto/expense/SlipUpdateFile.java

@@ -0,0 +1,15 @@
+package org.jeecg.common.dto.expense;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("费用报销单附件新增请求")
+@Data
+public class SlipUpdateFile {
+    @ApiModelProperty("文件名路径")
+    private java.lang.String fileUrl;
+
+    public SlipUpdateFile() {
+    }
+}

+ 35 - 0
src/main/java/org/jeecg/common/dto/expense/SlipUpdateFileRespDTO.java

@@ -0,0 +1,35 @@
+package org.jeecg.common.dto.expense;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.expense.entity.ReExpenseSlipUpdateFile;
+
+@Data
+@ApiModel("费用报销单附件响应")
+public class SlipUpdateFileRespDTO {
+    @ApiModelProperty("id")
+    @TableId(type = IdType.UUID)
+    private String id;
+    @ApiModelProperty("费用报销单id")
+    private String expenseId;
+    @ApiModelProperty("费用报销单--项目金额id")
+    private String expenseProjectId;
+    @ApiModelProperty("文件名")
+    private String fileName;
+    @ApiModelProperty("文件路径")
+    private String fileUrl;
+
+    public SlipUpdateFileRespDTO() {
+    }
+
+    public SlipUpdateFileRespDTO(ReExpenseSlipUpdateFile updateFile) {
+        this.id = updateFile.getId();
+        this.expenseId = updateFile.getExpenseId();
+        this.expenseProjectId = updateFile.getExpenseProjectId();
+        this.fileName = updateFile.getFileName();
+        this.fileUrl = updateFile.getFileUrl();
+    }
+}

+ 5 - 2
src/main/java/org/jeecg/common/dto/report/CostAccountingReqDTO.java

@@ -7,11 +7,14 @@ import lombok.Data;
 @ApiModel("成本核算请求参数")
 @Data
 public class CostAccountingReqDTO {
-    @ApiModelProperty("id")
+    @ApiModelProperty("项目档案id")
     private String id;
     @ApiModelProperty("组织")
     private String pkOrg;
-
+    @ApiModelProperty("项目档案名称")
+    private String proArchivesName;
+    @ApiModelProperty("项目档案编码")
+    private String proArchivesCode;
     public CostAccountingReqDTO() {
     }
 }

+ 2 - 1
src/main/java/org/jeecg/modules/basedata/controller/BaseArchivesCostController.java

@@ -87,7 +87,8 @@ public class BaseArchivesCostController {
 			 if(!nextSerial.isSucceed()){
 				 throw new RuntimeException("获取编号失败");
 			 }
-			 baseArchivesCost.setCode(nextSerial.getContent());
+			 String content = nextSerial.getContent().substring(0, nextSerial.getContent().length() - 1);
+			 baseArchivesCost.setCode(content);
 			 baseArchivesCost.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
 			 baseArchivesCostService.save(baseArchivesCost);
 			 result.success("添加成功!");

+ 56 - 0
src/main/java/org/jeecg/modules/expense/entity/ReExpenseSlipUpdateFile.java

@@ -0,0 +1,56 @@
+package org.jeecg.modules.expense.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+@Data
+@ApiModel("项目工作--费用报销单附件表")
+@TableName("re_expense_slip_update_file")
+public class ReExpenseSlipUpdateFile implements Serializable {
+    private static final long serialVersionUID = 1L;
+    
+	@ApiModelProperty("id")
+	@TableId(type = IdType.UUID)
+	private String id;
+	@ApiModelProperty("费用报销单id")
+	private String expenseId;
+	@ApiModelProperty("费用报销单--项目金额id")
+	private String expenseProjectId;
+	@ApiModelProperty("文件名")
+	private String fileName;
+	@ApiModelProperty("文件路径")
+	private String fileUrl;
+	@ApiModelProperty("创建时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+	@ApiModelProperty("创建人")
+	private String createBy;
+	@ApiModelProperty("修改时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date updateTime;
+	@ApiModelProperty("修改人")
+	private String updateBy;
+	@ApiModelProperty("删除状态(0,正常,1已删除)")
+	private String delFlag;
+	@ApiModelProperty("组织")
+	private String pkOrg;
+	@ApiModelProperty("排序")
+	private Integer sort;
+
+	public ReExpenseSlipUpdateFile() {
+	}
+
+	public ReExpenseSlipUpdateFile(String delFlag) {
+		this.delFlag = delFlag;
+	}
+}

+ 17 - 0
src/main/java/org/jeecg/modules/expense/mapper/ReExpenseSlipUpdateFileMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.expense.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.expense.entity.ReExpenseSlipUpdateFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: re_expense_slip_update_file
+ * @author: jeecg-boot
+ * @date:   2021-04-08
+ * @version: V1.0
+ */
+public interface ReExpenseSlipUpdateFileMapper extends BaseMapper<ReExpenseSlipUpdateFile> {
+
+}

+ 5 - 0
src/main/java/org/jeecg/modules/expense/mapper/xml/ReExpenseSlipUpdateFileMapper.xml

@@ -0,0 +1,5 @@
+<?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">
+<mapper namespace="org.jeecg.modules.expense.mapper.ReExpenseSlipUpdateFileMapper">
+
+</mapper>

+ 14 - 0
src/main/java/org/jeecg/modules/expense/service/IReExpenseSlipUpdateFileService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.expense.service;
+
+import org.jeecg.modules.expense.entity.ReExpenseSlipUpdateFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: re_expense_slip_update_file
+ * @author: jeecg-boot
+ * @date:   2021-04-08
+ * @version: V1.0
+ */
+public interface IReExpenseSlipUpdateFileService extends IService<ReExpenseSlipUpdateFile> {
+
+}

+ 77 - 4
src/main/java/org/jeecg/modules/expense/service/impl/ReExpenseSlipServiceImpl.java

@@ -2,19 +2,29 @@ package org.jeecg.modules.expense.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.dto.expense.ExpenseSlipAddReqDTO;
 import org.jeecg.common.dto.expense.ExpenseSlipProjectAddReqDTO;
 import org.jeecg.common.dto.expense.ExpenseSlipProjectListRespDTO;
 import org.jeecg.common.dto.expense.ExpenseSlipRespDTO;
+import org.jeecg.common.dto.expense.SlipUpdateFile;
+import org.jeecg.common.dto.expense.SlipUpdateFileRespDTO;
 import org.jeecg.modules.expense.entity.ReExpenseSlip;
 import org.jeecg.modules.expense.entity.ReExpenseSlipProject;
+import org.jeecg.modules.expense.entity.ReExpenseSlipUpdateFile;
 import org.jeecg.modules.expense.mapper.ReExpenseSlipMapper;
+import org.jeecg.modules.expense.service.IReExpenseSlipUpdateFileService;
 import org.jeecg.modules.expense.service.ReExpenseSlipProjectService;
 import org.jeecg.modules.expense.service.ReExpenseSlipService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
+
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 费用报销单
@@ -26,6 +36,8 @@ import java.util.List;
 public class ReExpenseSlipServiceImpl extends ServiceImpl<ReExpenseSlipMapper, ReExpenseSlip> implements ReExpenseSlipService {
     @Autowired
     private ReExpenseSlipProjectService reExpenseSlipProjectService;
+    @Autowired
+    private IReExpenseSlipUpdateFileService reExpenseSlipUpdateFileService;
 
     /**
      * @desc 新增
@@ -88,21 +100,54 @@ public class ReExpenseSlipServiceImpl extends ServiceImpl<ReExpenseSlipMapper, R
         queryWrapper.eq("expense_id", id);
         queryWrapper.orderByAsc("sort");
         List<ReExpenseSlipProject> list = reExpenseSlipProjectService.list(queryWrapper);
+
+        //查询附件
+        QueryWrapper<ReExpenseSlipUpdateFile> fileQueryWrapper = new QueryWrapper<>();
+        fileQueryWrapper.eq("expense_id", id);
+        fileQueryWrapper.eq("del_flag","0");
+        List<ReExpenseSlipUpdateFile> updateFiles = reExpenseSlipUpdateFileService.list(fileQueryWrapper);
+        Map<String, List<ReExpenseSlipUpdateFile>> updateFileMap = updateFiles.stream().collect(Collectors.groupingBy(t -> t.getExpenseProjectId()));
         List<ExpenseSlipProjectListRespDTO> respDTOS = Lists.newArrayList();
         for(ReExpenseSlipProject project : list){
-            respDTOS.add(new ExpenseSlipProjectListRespDTO(project));
+            ExpenseSlipProjectListRespDTO respDTO = new ExpenseSlipProjectListRespDTO(project);
+
+            respDTO.setFiles(getUpdateFiles(project.getId(), updateFileMap));
+
+            respDTOS.add(respDTO);
+        }
+        return respDTOS;
+    }
+
+    /**
+     * @desc 获取附件
+     */
+    private List<SlipUpdateFileRespDTO> getUpdateFiles(String id, Map<String, List<ReExpenseSlipUpdateFile>> updateFileMap) {
+        List<ReExpenseSlipUpdateFile> updateFiles = updateFileMap.get(id);
+        List<SlipUpdateFileRespDTO> respDTOS = Lists.newArrayList();
+        if(!CollectionUtils.isEmpty(updateFiles)){
+            for(ReExpenseSlipUpdateFile updateFile : updateFiles){
+                respDTOS.add(new SlipUpdateFileRespDTO(updateFile));
+            }
         }
+
         return respDTOS;
     }
 
     /**
      * @desc 删除子表
      */
-    private void deleteChildren(String id) {
+    private void   deleteChildren(String id) {
         QueryWrapper<ReExpenseSlipProject> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("expense_id", id);
         queryWrapper.eq("del_flag","0");
         reExpenseSlipProjectService.update(new ReExpenseSlipProject("1"), queryWrapper);
+
+        //删除附件
+        QueryWrapper<ReExpenseSlipUpdateFile> fileQueryWrapper = new QueryWrapper<>();
+        fileQueryWrapper.eq("expense_id", id);
+        fileQueryWrapper.eq("del_flag","0");
+        reExpenseSlipUpdateFileService.update(new ReExpenseSlipUpdateFile("1"), fileQueryWrapper);
+
     }
 
     /**
@@ -116,8 +161,36 @@ public class ReExpenseSlipServiceImpl extends ServiceImpl<ReExpenseSlipMapper, R
             ReExpenseSlipProject project = new ReExpenseSlipProject(detail);
             project.setExpenseId(id);
             project.setSort(sort++);
-            list.add(project);
+
+            reExpenseSlipProjectService.save(project);
+            //保存附件
+            saveUpdateFile(detail.getFiles(), project.getId(), id);
+        }
+    }
+
+    /**
+     * @desc 保存附件
+     */
+    private void saveUpdateFile(List<SlipUpdateFile> files, String projectId, String id) {
+        if(!CollectionUtils.isEmpty(files)) {
+            List<ReExpenseSlipUpdateFile> list = Lists.newArrayList();
+            int sort = 1;
+            for(SlipUpdateFile file : files) {
+                //截取文件名称
+                String[] filePath = file.getFileUrl().split("/");
+                int index = filePath.length;
+                String fileNameAfter = StringUtils.substringAfter(filePath[index - 1], ".");
+                String fileNameBefore = StringUtils.substringBefore(filePath[index - 1], "_");
+                String fileName = fileNameBefore + "." + fileNameAfter;
+                ReExpenseSlipUpdateFile reExpenseSlipUpdateFile = new ReExpenseSlipUpdateFile();
+                reExpenseSlipUpdateFile.setFileName(fileName);
+                reExpenseSlipUpdateFile.setFileUrl(file.getFileUrl());
+                reExpenseSlipUpdateFile.setExpenseId(id);
+                reExpenseSlipUpdateFile.setExpenseProjectId(projectId);
+                reExpenseSlipUpdateFile.setSort(++sort);
+                list.add(reExpenseSlipUpdateFile);
+            }
+            reExpenseSlipUpdateFileService.saveBatch(list);
         }
-        reExpenseSlipProjectService.saveBatch(list);
     }
 }

+ 19 - 0
src/main/java/org/jeecg/modules/expense/service/impl/ReExpenseSlipUpdateFileServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.expense.service.impl;
+
+import org.jeecg.modules.expense.entity.ReExpenseSlipUpdateFile;
+import org.jeecg.modules.expense.mapper.ReExpenseSlipUpdateFileMapper;
+import org.jeecg.modules.expense.service.IReExpenseSlipUpdateFileService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: re_expense_slip_update_file
+ * @author: jeecg-boot
+ * @date:   2021-04-08
+ * @version: V1.0
+ */
+@Service
+public class ReExpenseSlipUpdateFileServiceImpl extends ServiceImpl<ReExpenseSlipUpdateFileMapper, ReExpenseSlipUpdateFile> implements IReExpenseSlipUpdateFileService {
+
+}

+ 11 - 1
src/main/java/org/jeecg/modules/payment/controller/ManagerPaymentAndReceiptSlipController.java

@@ -5,6 +5,7 @@ import javax.validation.Valid;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.dto.payment.ProjectArchiveReqDTO;
@@ -184,6 +185,9 @@ public class ManagerPaymentAndReceiptSlipController {
 	}
 
 	@ApiOperation(value = "获取项目档案的名称与编码", notes = "过滤已经使用过得项目编码与名称")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pkOrg", value = "pkOrg", required = true, dataType = "String"),
+    })
 	@GetMapping(value = "/getProNameAndCode")
 	public Result<List<ProjectArchiveRespDTO>> get(ProjectArchiveReqDTO reqDTO) {
 		Result<List<ProjectArchiveRespDTO>> result = new Result<List<ProjectArchiveRespDTO>>();
@@ -194,7 +198,13 @@ public class ManagerPaymentAndReceiptSlipController {
 	}
 
 
-	@ApiOperation(value = "收付款单金额", notes = "收付款单金额")
+	@ApiOperation(value = "查询收付款单金额", notes = "收付款单金额")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "proId", value = "项目档案id", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "mileId", value = "项目档案--里程碑id", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "businessId", value = "项目档案--里程碑信息表子表id", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "type", value = "1.收款单 2.付款单", required = true, dataType = "String")
+            })
 	@GetMapping(value = "/getSlipPrice")
 	public Result<List<SlipPriceRespDTO>> getSlipPrice(SlipPriceReqDTO reqDTO){
 		Result<List<SlipPriceRespDTO>> result = new Result<List<SlipPriceRespDTO>>();

+ 1 - 1
src/main/java/org/jeecg/modules/payment/mapper/xml/ManagerPaymentAndReceiptSlipMapper.xml

@@ -32,7 +32,7 @@
     <select id="getSlipPrice" resultType="org.jeecg.common.dto.payment.SlipPriceRespDTO">
            SELECT a.id,
                   a.billcode,
-                  'type',
+                  a.type,
                   a.pro_id,
                   a.pro_code,
                   a.pro_name ,

+ 0 - 1
src/main/java/org/jeecg/modules/payment/service/impl/ManagerPaymentAndReceiptSlipServiceImpl.java

@@ -3,7 +3,6 @@ package org.jeecg.modules.payment.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiModel;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.dto.archives.ExpensePriceReqDTO;
 import org.jeecg.common.dto.archives.ExpensePriceRespDTO;

+ 2 - 1
src/main/java/org/jeecg/modules/prowork/service/impl/ProWorkLogicServiceImpl.java

@@ -52,7 +52,8 @@ public class ProWorkLogicServiceImpl extends ServiceImpl<ProWorkLogicMapper, Pro
         if(!nextSerial.isSucceed()) {
             throw new RuntimeException("获取编号失败");
         }
-        proWorkLogic.setBillcode(nextSerial.getContent());
+        String content = nextSerial.getContent().substring(0, nextSerial.getContent().length() - 1);
+        proWorkLogic.setBillcode(content);
         save(proWorkLogic);
         //添加子表
         int sort = 1;

+ 4 - 0
src/main/java/org/jeecg/modules/report/controller/ProReportController.java

@@ -72,6 +72,10 @@ public class ProReportController {
     }
 
     @ApiModelProperty("项目情况统计表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="id", value="id",required=true, dataType="String"),
+            @ApiImplicitParam(name="pkOrg", value="组织",required=true, dataType="String")
+    })
     @GetMapping("/getProStatistics")
     public Result<List<ProStatisticsRespDTO> > getProStatistics(CostAccountingReqDTO reqDTO) {
         Result<List<ProStatisticsRespDTO>> result = new Result<>();

+ 1 - 1
src/main/java/org/jeecg/modules/report/entity/ChoosePlanTypeEnum.java

@@ -3,7 +3,7 @@ package org.jeecg.modules.report.entity;
 import lombok.Getter;
 
 /**
- * @desc 生产计划类型
+ * @desc 生产计划类型 转换成 项目档案other子表的计划类型
  */
 public enum  ChoosePlanTypeEnum {
     //1.开发 2.实施 3.服务

+ 6 - 0
src/main/java/org/jeecg/modules/report/mapper/xml/ProReportMapper.xml

@@ -39,6 +39,12 @@
         <if test="id != null and id != ''">
             AND pro_archives_id = #{id}
         </if>
+        <if test="proArchivesName != null and proArchivesName != ''">
+            AND a.pro_name = #{proArchivesName}
+        </if>
+        <if test="proArchivesCode != null and proArchivesCode != ''">
+            AND pro_code like  CONCAT('%', #{proArchivesCode, '%'}
+        </if>
         GROUP By pro_archives_id
     </select>
 </mapper>

+ 21 - 11
src/main/java/org/jeecg/modules/report/service/impl/ProReportServiceImpl.java

@@ -94,6 +94,14 @@ public class ProReportServiceImpl implements ProReportService {
          if(StringUtils.isNotBlank(reqDTO.getPkOrg())){
              queryWrapper.eq("pk_org", reqDTO.getPkOrg());
          }
+
+
+         if(StringUtils.isNotBlank(reqDTO.getProArchivesName())){
+             queryWrapper.lambda().like(ProjectManageArchives::getProName, reqDTO.getProArchivesName());
+         }
+         if(StringUtils.isNotBlank(reqDTO.getProArchivesCode())){
+             queryWrapper.lambda().eq(ProjectManageArchives::getProCode, reqDTO.getProArchivesCode());
+         }
          List<ProjectManageArchives> archives = projectManageArchivesService.list(queryWrapper);
 
 
@@ -138,7 +146,7 @@ public class ProReportServiceImpl implements ProReportService {
              ProStatisticsRespDTO respDTO =  new ProStatisticsRespDTO(archives.getId(), archives.getProName(),
                      archives.getProCode(), archives.getProName(), "0", member);
              //配置收付款条线数据
-             setSecondChildren(businesses, respDTO, CoLineMap, otherList, businessMap, logicMap, milestoneMap, purchaseDataMap, slipMap);
+             setSecondChildren(businesses, respDTO, CoLineMap, otherList, businessMap, logicMap, milestoneMap, purchaseDataMap, slipMap, respDTO.getId());
 
          return respDTO;
      }
@@ -175,7 +183,8 @@ public class ProReportServiceImpl implements ProReportService {
      */
     private void setSecondChildren(List<ProjectManageArchivesAndBusiness> businesses, ProStatisticsRespDTO respDTO, Map<String, BaseArchivesCollectionLine> CoLineMap,
         List<ProjectManageBusinessOther> otherList, Map<String, List<ProjectManageArchivesAndBusiness>> businessMap, Map<String, List<ProWorkLogic>> logicMap,
-        Map<String, List<ProWorkMilestone>> milestoneMap,  Map<String, List<PurchaseDataDTO>> purchaseDataMap, Map<String, List<SlipAllListDTO>> slipMap) {
+        Map<String, List<ProWorkMilestone>> milestoneMap,  Map<String, List<PurchaseDataDTO>> purchaseDataMap, Map<String, List<SlipAllListDTO>> slipMap,
+                                   String archivesId) {
         List<ProStatisticsTwoRespDTO> list = Lists.newArrayList();
 
         //i: 1代表实施, 2代表开发, 3代表服务, 4,代表其他
@@ -203,7 +212,7 @@ public class ProReportServiceImpl implements ProReportService {
                             }
 
                             twoRespDTO.setMilePrice(business.getPrice1());
-                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap);
+                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap, archivesId);
 
                         }
                         //里程碑2
@@ -215,7 +224,7 @@ public class ProReportServiceImpl implements ProReportService {
                             if(!CollectionUtils.isEmpty(others)){
                                 twoRespDTO.setMileCoPrice(others.get(0).getPrice2());
                             }
-                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap);
+                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap, archivesId);
                         }
                         //里程碑3
                         if(StringUtils.isNotBlank(business.getMileId3())){
@@ -227,7 +236,7 @@ public class ProReportServiceImpl implements ProReportService {
                             if(!CollectionUtils.isEmpty(others)){
                                 twoRespDTO.setMileCoPrice(others.get(0).getPrice3());
                             }
-                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap);
+                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap, archivesId);
                         }
                         //里程碑4
                         if(StringUtils.isNotBlank(business.getMileId4())){
@@ -238,7 +247,7 @@ public class ProReportServiceImpl implements ProReportService {
                             if(!CollectionUtils.isEmpty(others)) {
                                 twoRespDTO.setMileCoPrice(others.get(0).getPrice4());
                             }
-                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap);
+                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap, archivesId);
                         }
                         //里程碑5
                         if(StringUtils.isNotBlank(business.getMileId5())){
@@ -250,7 +259,7 @@ public class ProReportServiceImpl implements ProReportService {
                             if(!CollectionUtils.isEmpty(others)) {
                                 twoRespDTO.setMileCoPrice(others.get(0).getPrice5());
                             }
-                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap);
+                            setThreeChildren(twoRespDTO, otherList, i, logicMap, milestoneMap, purchaseDataMap, slipMap, archivesId);
                         }
 
                         if(CollectionUtils.isEmpty(twoRespDTO.getChildren())){
@@ -275,13 +284,14 @@ public class ProReportServiceImpl implements ProReportService {
     //配置计划信息表的数据
     private void setThreeChildren(ProStatisticsTwoRespDTO twoRespDTO, List<ProjectManageBusinessOther> otherList, int i,
          Map<String, List<ProWorkLogic>> logicMap, Map<String, List<ProWorkMilestone>> milestoneMap, Map<String, List<PurchaseDataDTO>> purchaseDataMap,
-          Map<String, List<SlipAllListDTO>> slipMap) {
+          Map<String, List<SlipAllListDTO>> slipMap, String archivesId) {
 
         List<ProStatisticsThreeRespDTO> respDTOS = Lists.newArrayList();
-        //计划类型 1.商务 2.实施 3.开发 4.服务 5.其他
-         i++;
+
+         i++;  //计划类型 1.商务 2.实施 3.开发 4.服务 5.其他
          for(ProjectManageBusinessOther other : otherList){
-             if(other.getPlanType() == i && other.getMuilesId().equals(twoRespDTO.getMileId())){
+             //重点项目档案id一定要与other表的项目档案id 对应,且计划类型与里程碑id匹配的进入该方法
+             if(other.getPlanType() == i && other.getMuilesId().equals(twoRespDTO.getMileId())&& other.getProArchivesId().equals(archivesId)){
                  ProStatisticsThreeRespDTO threeRespDTO = new ProStatisticsThreeRespDTO(other, twoRespDTO);
                  //获取实际开始时间
                  String planType = ChoosePlanTypeEnum.match(i) != null ? ChoosePlanTypeEnum.match(i).getPlanType() : null;