Browse Source

项目成本报表 导出新增字段

yusm 2 weeks ago
parent
commit
3b55902c1e

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform-yzr/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -291,4 +291,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
                                                    @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds,
                                                    @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds
             ,@Param("categoryId") Integer categoryId,@Param("status") Integer status);
+
+    Integer getAllProjectCostCount(Integer companyId, int pageStart, Integer pageSize, Integer projectId, List<Integer> inchagerIds);
 }

+ 17 - 6
fhKeeper/formulahousekeeper/management-platform-yzr/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -4460,14 +4460,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<ExpenseMainType> mainTypeList = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
 
         //撤销的项目不算
-        QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
-        queryWrapper.and(wrapper->wrapper.isNull("status").or().ne("status", 3));
-        if(inchagerIds!=null){
-            queryWrapper.in("id",inchagerIds);
-        }
-        int total = projectMapper.selectCount(queryWrapper);
+//        QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
+//        queryWrapper.and(wrapper->wrapper.isNull("status").or().ne("status", 3));
+//        if(inchagerIds!=null){
+//            queryWrapper.in("id",inchagerIds);
+//        }
+//        int total = projectMapper.selectCount(queryWrapper);
         int pageStart = (pageIndex -1) * pageSize;
         List<Map<String, Object>> projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId, inchagerIds);
+        Integer total = projectMapper.getAllProjectCostCount(companyId, pageStart, pageSize, projectId, inchagerIds);
         List<Integer> projectIdCollect = projectTask.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
         projectIdCollect.add(-1);
         List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
@@ -4548,6 +4549,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
         List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
         List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
+        List<String> projectCodeList = projectList.stream().map(i -> String.valueOf(i.get("projectCode"))).distinct().collect(Collectors.toList());
+        List<PaymentApplication> paymentApplicationList = paymentApplicationMapper.selectList(new LambdaQueryWrapper<PaymentApplication>().in(PaymentApplication::getProjectCode, projectCodeList).eq(PaymentApplication::getStatus, 0));
         List<List<String>> exportList = new ArrayList<>();
         List<String> titles=new ArrayList<>();
         titles.add("项目编号");
@@ -4558,6 +4561,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             titles.add(expenseMainType.getName());
         }
         titles.add("总费用");
+        titles.add("付款申请金额");
         exportList.add(titles);
         DecimalFormat df = new DecimalFormat("#.00");
         for (Map<String,Object> item : projectList) {
@@ -4583,6 +4587,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             //totalFee保留小数点后两位
             totalFee = Double.parseDouble(df.format(totalFee));
             data.add(totalFee +"");
+            String curProjectCode = String.valueOf(item.get("projectCode"));
+            BigDecimal decimal = new BigDecimal(0);
+            List<PaymentApplication> curPaymentList = paymentApplicationList.stream().filter(i -> i.getProjectCode().equals(curProjectCode)).collect(Collectors.toList());
+            for (PaymentApplication paymentApplication : curPaymentList) {
+                decimal=decimal.add(paymentApplication.getPaymentAmount());
+            }
+            data.add(String.valueOf(decimal.doubleValue()));
             exportList.add(data);
         }
         //String fileName = "项目成本报表_"+System.currentTimeMillis();

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform-yzr/src/main/resources/mapper/ProjectMapper.xml

@@ -833,6 +833,22 @@
             LIMIT #{pageStart},#{pageSize}
         </if>
     </select>
+    <select id="getAllProjectCostCount"  resultType="java.lang.Integer">
+        select count(1) from (SELECT id, project_code as projectCode, project_name as projectName,budget,
+        (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS feeMan
+        FROM project WHERE project.`company_id` = #{companyId}
+        and (project.status &lt;&gt; 3 or project.status is null)
+        <if test="projectId != null">
+            and project.id = #{projectId}
+        </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and project.id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
+        order by project.is_public desc, project.id asc) as total
+    </select>
     <!--分页获取项目收支平衡 -->
     <select id="getProjectInAndOut" resultMap="BaseResultMap">
         SELECT project.id, project_code, project_name,contract_amount, IFNULL(contract.payment, 0) as payment,project_main.name  as project_main_name,