|
@@ -413,7 +413,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg queryList(ExpenseSheet sheet, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
|
|
|
+ public HttpRespMsg queryList(ExpenseSheet sheet,Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
|
|
|
QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
|
|
|
//当前用户
|
|
|
String token = request.getHeader("TOKEN");
|
|
@@ -492,22 +492,64 @@ 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 (projectId!=null){
|
|
|
+ QueryWrapper<ExpenseItem> q = new QueryWrapper<ExpenseItem>();
|
|
|
+ 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(item -> Optional.ofNullable(item.getAmount()).orElse(0.0)).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
|
|
@@ -532,7 +574,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg getDetail(Integer id) {
|
|
|
+ public HttpRespMsg getDetail(Integer id,Integer projectId) {
|
|
|
String token = request.getHeader("TOKEN");
|
|
|
ExpenseSheet expenseSheet = expenseSheetMapper.selectById(id);
|
|
|
if(!StringUtils.isEmpty(expenseSheet.getFirstCheckerId())){
|
|
@@ -543,7 +585,12 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
User user = userMapper.selectById(expenseSheet.getSecondCheckerId());
|
|
|
expenseSheet.setSecondCheckerName(user.getName());
|
|
|
}
|
|
|
- List<ExpenseItem> list = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().eq("expense_id", id));
|
|
|
+ QueryWrapper<ExpenseItem> q = new QueryWrapper<ExpenseItem>();
|
|
|
+ q.eq("expense_id", id);
|
|
|
+ if (projectId!=null){
|
|
|
+ q.eq("project_id",projectId);
|
|
|
+ }
|
|
|
+ List<ExpenseItem> list = expenseItemMapper.selectList(q);
|
|
|
List<Project> Project = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", expenseSheet.getCompanyId()));
|
|
|
ExpenseAuditSetting expenseAuditSetting = expenseAuditSettingMapper.selectById(expenseSheet.getCompanyId());
|
|
|
for (ExpenseItem expenseItem : list) {
|
|
@@ -570,6 +617,8 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
}
|
|
|
}
|
|
|
expenseSheet.setInvoiceList(list);
|
|
|
+ double amount = list.stream().mapToDouble(item -> Optional.ofNullable(item.getAmount()).orElse(0.0)).sum();
|
|
|
+ expenseSheet.setTotalAmount(amount);
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
msg.data = expenseSheet;
|
|
|
return msg;
|