Forráskód Böngészése

费用报销单据列表修改

yusm 1 éve
szülő
commit
a7f1e7570b

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java

@@ -142,6 +142,9 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField(exist = false)
     private String secondCheckerName;
 
+    @TableField(exist = false)
+    private Integer projectId;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 58 - 15
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -482,22 +482,65 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         if (!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
             queryWrapper.between("create_date", startDate, endDate);
         }
-        IPage<ExpenseSheet> listIPager = expenseSheetMapper.selectPage(new Page<>(pageIndex, pageSize),
-                queryWrapper);
-        List<ExpenseSheet> records = listIPager.getRecords();
-        List<ExpenseMainType> expenseMainTypes = expenseMainTypeService.list(new QueryWrapper<ExpenseMainType>().eq("company_id", sheet.getCompanyId()).or().eq("is_system",1));
-        records.forEach(re->{
-            Optional<ExpenseMainType> first = expenseMainTypes.stream().filter(et -> et.getId().equals(re.getType())).findFirst();
-            if(first.isPresent()){
-                re.setExpenseMainTypeName(first.get().getName());
+        if (sheet.getProjectId()!=null){
+            QueryWrapper<ExpenseItem> q = new QueryWrapper<ExpenseItem>();
+            Integer projectId = sheet.getProjectId();
+            q.eq("project_id",projectId);
+            List<ExpenseItem> expenseItems = expenseItemMapper.selectList(q);
+            if (expenseItems.size()==0){
+                Map<String, Object> map = new HashMap<>();
+                map.put("records", new ArrayList<ExpenseSheet>());
+                map.put("total", 0);
+                httpRespMsg.data = map;
+                return httpRespMsg;
+            }else {
+                List<Integer> expenseIds = expenseItems.stream().map(ExpenseItem::getExpenseId).collect(Collectors.toList());
+                queryWrapper.in("id",expenseIds);
+                IPage<ExpenseSheet> listIPager = expenseSheetMapper.selectPage(new Page<>(pageIndex, pageSize),
+                        queryWrapper);
+                List<ExpenseSheet> records = listIPager.getRecords();
+
+                List<ExpenseMainType> expenseMainTypes = expenseMainTypeService.list(new QueryWrapper<ExpenseMainType>().eq("company_id", sheet.getCompanyId()).or().eq("is_system",1));
+                records.forEach(re->{
+                    Optional<ExpenseMainType> first = expenseMainTypes.stream().filter(et -> et.getId().equals(re.getType())).findFirst();
+                    if(first.isPresent()){
+                        re.setExpenseMainTypeName(first.get().getName());
+                    }
+                });
+                if (records.size()>0){
+                    records.forEach(r->{
+                        List<ExpenseItem> items = expenseItems.stream()
+                                .filter(e -> e.getExpenseId().equals(r.getId())&&e.getProjectId().equals(projectId)).collect(Collectors.toList());
+                        double amount = items.stream().mapToDouble(ExpenseItem::getAmount).sum();
+                        r.setTotalAmount(amount);
+                    });
+                }
+                Long total = listIPager.getTotal();
+                Map<String, Object> map = new HashMap<>();
+                map.put("records", records);
+                map.put("total", total);
+                httpRespMsg.data = map;
+                return httpRespMsg;
             }
-        });
-        Long total = listIPager.getTotal();
-        Map<String, Object> map = new HashMap<>();
-        map.put("records", records);
-        map.put("total", total);
-        httpRespMsg.data = map;
-        return httpRespMsg;
+        }else {
+            IPage<ExpenseSheet> listIPager = expenseSheetMapper.selectPage(new Page<>(pageIndex, pageSize),
+                    queryWrapper);
+            List<ExpenseSheet> records = listIPager.getRecords();
+
+            List<ExpenseMainType> expenseMainTypes = expenseMainTypeService.list(new QueryWrapper<ExpenseMainType>().eq("company_id", sheet.getCompanyId()).or().eq("is_system",1));
+            records.forEach(re->{
+                Optional<ExpenseMainType> first = expenseMainTypes.stream().filter(et -> et.getId().equals(re.getType())).findFirst();
+                if(first.isPresent()){
+                    re.setExpenseMainTypeName(first.get().getName());
+                }
+            });
+            Long total = listIPager.getTotal();
+            Map<String, Object> map = new HashMap<>();
+            map.put("records", records);
+            map.put("total", total);
+            httpRespMsg.data = map;
+            return httpRespMsg;
+        }
     }
 
     @Override