Pārlūkot izejas kodu

开工累计投资

chenr 4 mēneši atpakaļ
vecāks
revīzija
6194dd1e52

+ 1 - 1
src/main/java/org/springblade/modules/project/mapper/ProjectInfoMapper.java

@@ -75,5 +75,5 @@ public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
 
     BigDecimal getAllYearlyInvestByProjectId(@Param("projectId")Long projectId);
 
-    void updateAllYearlyInvest(@Param("allYearlyInvest")BigDecimal allYearlyInvest, @Param("projectId")Long projectId);
+    void updateInvestYearAll(@Param("investYearAll")BigDecimal investYearAll, @Param("projectId")Long projectId);
 }

+ 3 - 3
src/main/java/org/springblade/modules/project/mapper/ProjectInfoMapper.xml

@@ -1,8 +1,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">
 <mapper namespace="org.springblade.modules.project.mapper.ProjectInfoMapper">
-    <update id="updateAllYearlyInvest">
-        update d_project_invest_plan set start_finish_invest=#{allYearlyInvest} where project_id=#{projectId} and is_deleted=0;
+    <update id="updateInvestYearAll">
+        update d_project_invest_plan set invest_year_all=#{investYearAll} where project_id=#{projectId} and is_deleted=0;
     </update>
     <delete id="deleteWarning">
         delete from d_project_warning
@@ -129,7 +129,7 @@
         FROM d_project_info;
     </select>
     <select id="getAllYearlyInvestByProjectId" resultType="java.math.BigDecimal">
-        select ifnull(sum(yearly_invest),0)
+        select ifnull(sum(invest_year),0)
         from d_project_invest_plan
         where is_deleted = 0 and project_id = #{projectId}
     </select>

+ 5 - 0
src/main/java/org/springblade/modules/project/mapper/ProjectInvestPlanMapper.java

@@ -32,6 +32,7 @@ import org.springblade.modules.project.pojo.entity.ProjectInfo;
 import org.springblade.modules.project.pojo.entity.ProjectInvestPlan;
 import org.springblade.modules.project.pojo.vo.ProjectInvestPlanVO2;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -42,4 +43,8 @@ import java.util.List;
 public interface ProjectInvestPlanMapper extends BaseMapper<ProjectInvestPlan> {
 
     List<ProjectInvestPlanVO2> getYearAllProject(@Param("year") Integer year);
+
+    BigDecimal getYearAllByProjectId(@Param("id")Long id);
+
+    void updateAllInvestYearAllByProjectId(@Param("id")Long id, @Param("finalInvestYearAllToTal")BigDecimal finalInvestYearAllToTal);
 }

+ 6 - 0
src/main/java/org/springblade/modules/project/mapper/ProjectInvestPlanMapper.xml

@@ -1,6 +1,9 @@
 <?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.springblade.modules.project.mapper.ProjectInvestPlanMapper">
+    <update id="updateAllInvestYearAllByProjectId">
+        update d_project_invest_plan set invest_year_all = #{finalInvestYearAllToTal} where is_deleted = 0 and project_id = #{id}
+    </update>
 
     <select id="getYearAllProject" resultType="org.springblade.modules.project.pojo.vo.ProjectInvestPlanVO2">
         select *,
@@ -10,4 +13,7 @@
         from d_project_invest_plan dpip
         where is_deleted = 0 and plan_year = #{year}
     </select>
+    <select id="getYearAllByProjectId" resultType="java.math.BigDecimal">
+        select invest_year_all from d_project_invest_plan where is_deleted = 0 and project_id = #{id}  limit 1
+    </select>
 </mapper>

+ 12 - 0
src/main/java/org/springblade/modules/project/pojo/entity/ProjectInvestPlan.java

@@ -160,5 +160,17 @@ public class ProjectInvestPlan extends BaseEntity {
     @Schema(description = "联系电话")
     private String phone;
 
+    @Schema(description = "当年累计投资")
+    //2024-4-30 新加的
+    private BigDecimal InvestYear;
+
+    @Schema(description = "统计当年累计投资")
+    //2024-4-30 新加的
+    private BigDecimal InvestYearAll;
+
+    //2024-5-06 新加的
+    @Schema(description = "导入时是否填写每年累计投资 1是 0否")
+    private Integer isInvestYear;
+
 
 }

+ 3 - 0
src/main/java/org/springblade/modules/project/pojo/vo/ProjectInfoVO.java

@@ -50,4 +50,7 @@ public class ProjectInfoVO extends ProjectInfo {
     @Schema(description = "项目已经设置计划的年个数")
     private Integer hasPlanYearTotal;
 
+    @Schema(description = "统计每年累计投资")
+    private BigDecimal investYearAll;
+
 }

+ 9 - 0
src/main/java/org/springblade/modules/project/pojo/vo/ProjectInvestPlanVO.java

@@ -104,4 +104,13 @@ public class ProjectInvestPlanVO{
     @Schema(description = "每月详情")
     private List<ProjectPlanProgressVO> list;
 
+    @Schema(description = "每年累计投资")
+    private BigDecimal investYear;
+
+    @Schema(description = "统计每年累计投资")
+    private BigDecimal investYearAll;
+
+    @Schema(description = "导入时是否填写每年累计投资 1是 0否")
+    private Integer isInvestYear;
+
 }

+ 5 - 0
src/main/java/org/springblade/modules/project/service/IProjectInvestPlanService.java

@@ -6,6 +6,7 @@ import org.springblade.modules.project.pojo.entity.ProjectInfo;
 import org.springblade.modules.project.pojo.entity.ProjectInvestPlan;
 import org.springblade.modules.project.pojo.vo.ProjectInvestPlanVO2;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -16,4 +17,8 @@ import java.util.List;
 public interface IProjectInvestPlanService extends BaseService<ProjectInvestPlan> {
 
     List<ProjectInvestPlanVO2> getYearAllProject(Integer year);
+
+    BigDecimal getYearAllByProjectId(Long id);
+
+    void updateAllInvestYearAllByProjectId(Long id, BigDecimal finalInvestYearAllToTal);
 }

+ 50 - 11
src/main/java/org/springblade/modules/project/service/impl/ProjectInfoServiceImpl.java

@@ -163,6 +163,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                 if (vo.getFinishedFill() != null && !vo.getFinishedFill().equals(BigDecimal.ZERO)){
                     vo.setFinishedFillRatio(vo.getFinishedFill().divide(totalField,2, RoundingMode.UP));
                 }
+                vo.setInvestYearAll(investPlanService.getYearAllByProjectId(vo.getId()));
             }
         }
         return iPage;
@@ -407,6 +408,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         List<ProjectInvestPlan> updateYearPlan = new ArrayList<>();
         //开工累计完成投资
         BigDecimal projectInvestFinished = BigDecimal.ZERO;
+        BigDecimal InvestYearAllToTal=years.get(0).getInvestYearAll();
         for (ProjectInvestPlanVO year : years) {
             //如果此年不能填写,则直接跳过
             if (year.getIsCanFill() == 0){
@@ -653,6 +655,17 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                     yearPlan.setIsFillPlan(1);
                 }
             }
+            if(year.getIsInvestYear()!=null&&year.getIsInvestYear()==0){
+                BigDecimal totalInvestMoney=monthList.stream()
+                    .map(ProjectPlanProgress::getInvestMoney)
+                    .filter(investMoney -> investMoney != null)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+                if(totalInvestMoney.compareTo(BigDecimal.ZERO)!=0){
+                    yearPlan.setInvestYear(totalInvestMoney);
+                    InvestYearAllToTal=totalInvestMoney.add(InvestYearAllToTal==null?BigDecimal.ZERO:InvestYearAllToTal);
+                }
+            }
+
             //直接保存月计划集合
             List<ProjectPlanProgress> progresses = new ArrayList<>();
             for (ProjectPlanProgressVO vo : monthList) {
@@ -670,8 +683,11 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
             }
             updateYearPlan.add(yearPlan);
         }
+        BigDecimal finalInvestYearAllToTal = InvestYearAllToTal;
         //修改年计划
         investPlanService.updateBatchById(updateYearPlan);
+        //updateYearPlan有可能会遗漏 在最后统一更新
+        investPlanService.updateAllInvestYearAllByProjectId(dto.getId(),finalInvestYearAllToTal);
     }
 
     @Override
@@ -1197,6 +1213,10 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
             throw new ServiceException("excel中未发现数据,请检查后再导入");
         }
         for (ProjectImportExcel project : list) {
+            List<ProjectPlanProgressVO> list1 = baseMapper.getAllProgressByProjectId(project.getProjectId());
+            BigDecimal total = list1.stream()
+                .map(vo -> Optional.ofNullable(vo.getInvestMoney()).orElse(BigDecimal.ZERO))
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
             //判断是新增项目还是修改项目
             if (project.getIsExist()){
                 /*修改项目*/
@@ -1216,11 +1236,14 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                     if (plan.getPlanYear().equals(project.getPlanYear())){
                         isExist = true;
                         plan.setProjectId(project.getProjectId());
-                        if(project.getInvestYear()!=null){
-                            plan.setYearlyInvest(project.getInvestYear());
+                        if(project.getInvestYear()==null||project.getInvestYear().compareTo(BigDecimal.ZERO)==0){
+                            plan.setInvestYear(total);
+                            plan.setIsInvestYear(0);
                         }else {
-                            plan.setYearlyInvest(project.getYearlyInvest());
+                            plan.setInvestYear(project.getInvestYear());
+                            plan.setIsInvestYear(1);
                         }
+                        plan.setYearlyInvest(project.getYearlyInvest());
                         plan.setOneInvest(project.getOneInvest());
                         plan.setTwoInvest(project.getTwoInvest());
                         plan.setThreeInvest(project.getThreeInvest());
@@ -1241,11 +1264,14 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                     ProjectInvestPlan plan = new ProjectInvestPlan();
                     plan.setProjectId(project.getProjectId());
                     plan.setPlanYear(project.getPlanYear());
-                    if(project.getInvestYear()!=null){
-                        plan.setYearlyInvest(project.getInvestYear());
+                    if(project.getInvestYear()==null||project.getInvestYear().compareTo(BigDecimal.ZERO)==0){
+                        plan.setInvestYear(total);
+                        plan.setIsInvestYear(0);
                     }else {
-                        plan.setYearlyInvest(project.getYearlyInvest());
+                        plan.setInvestYear(project.getInvestYear());
+                        plan.setIsInvestYear(1);
                     }
+                    plan.setYearlyInvest(project.getYearlyInvest());
                     plan.setOneInvest(project.getOneInvest());
                     plan.setTwoInvest(project.getTwoInvest());
                     plan.setThreeInvest(project.getThreeInvest());
@@ -1275,7 +1301,14 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                     ProjectInvestPlan plan = new ProjectInvestPlan();
                     if (i == project.getPlanYear()) {
                         plan.setPlanYear(project.getPlanYear());
-                        plan.setYearlyInvest(project.getInvestYear());
+                        if(project.getInvestYear()==null||project.getInvestYear().compareTo(BigDecimal.ZERO)==0){
+                            plan.setInvestYear(total);
+                            plan.setIsInvestYear(0);
+                        }else {
+                            plan.setInvestYear(project.getInvestYear());
+                            plan.setIsInvestYear(1);
+                        }
+                        plan.setYearlyInvest(project.getYearlyInvest());
                         plan.setOneInvest(project.getOneInvest());
                         plan.setTwoInvest(project.getTwoInvest());
                         plan.setThreeInvest(project.getThreeInvest());
@@ -1298,7 +1331,14 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                 if (project.getPlanYear() < project.getStartYear() || project.getPlanYear() > project.getEndYear()){
                     ProjectInvestPlan plan = new ProjectInvestPlan();
                     plan.setPlanYear(project.getPlanYear());
-                    plan.setYearlyInvest(project.getInvestYear());
+                    if(project.getInvestYear()==null||project.getInvestYear().compareTo(BigDecimal.ZERO)==0){
+                        plan.setInvestYear(total);
+                        plan.setIsInvestYear(0);
+                    }else {
+                        plan.setInvestYear(project.getInvestYear());
+                        plan.setIsInvestYear(1);
+                    }
+                    plan.setYearlyInvest(project.getYearlyInvest());
                     plan.setOneInvest(project.getOneInvest());
                     plan.setTwoInvest(project.getTwoInvest());
                     plan.setThreeInvest(project.getThreeInvest());
@@ -1332,9 +1372,8 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
                 this.updateFinished(vo);
             }
             //统计每个项目开工累计完成投资
-            BigDecimal allYearlyInvest=baseMapper.getAllYearlyInvestByProjectId(project.getProjectId());
-            baseMapper.updateAllYearlyInvest(allYearlyInvest,project.getProjectId());
-
+            BigDecimal investYearAll=baseMapper.getAllYearlyInvestByProjectId(project.getProjectId());
+            baseMapper.updateInvestYearAll(investYearAll,project.getProjectId());
         }
         long add = list.stream().filter(l -> !l.getIsExist()).count();
         long update = list.stream().filter(l -> l.getIsExist()).count();

+ 11 - 0
src/main/java/org/springblade/modules/project/service/impl/ProjectInvestPlanServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -30,4 +31,14 @@ public class ProjectInvestPlanServiceImpl extends BaseServiceImpl<ProjectInvestP
     public List<ProjectInvestPlanVO2> getYearAllProject(Integer year) {
         return baseMapper.getYearAllProject(year);
     }
+
+    @Override
+    public BigDecimal getYearAllByProjectId(Long id) {
+        return baseMapper.getYearAllByProjectId(id);
+    }
+
+    @Override
+    public void updateAllInvestYearAllByProjectId(Long id, BigDecimal finalInvestYearAllToTal) {
+        baseMapper.updateAllInvestYearAllByProjectId(id,finalInvestYearAllToTal);
+    }
 }