diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/customer/customermoney/CustomerBillController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/customer/customermoney/CustomerBillController.java index 2ed695b2..fc2e6063 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/customer/customermoney/CustomerBillController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/customer/customermoney/CustomerBillController.java @@ -1,7 +1,9 @@ package com.bms.web.controller.customer.customermoney; +import java.util.ArrayList; import java.util.Collections; import java.util.List; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; @@ -13,7 +15,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.bms.ar.domain.ArBill; import com.bms.ar.domain.ArBalanceWriteoff; +import com.bms.ar.domain.vo.ArBillListExportRow; import com.bms.ar.domain.vo.ArBillQuery; +import com.bms.ar.domain.vo.ArBillSummary; import com.bms.ar.service.IArBalanceWriteoffService; import com.bms.ar.service.IArBillService; import com.bms.common.annotation.Log; @@ -21,6 +25,7 @@ import com.bms.common.core.controller.BaseController; import com.bms.common.core.domain.AjaxResult; import com.bms.common.core.page.TableDataInfo; import com.bms.common.enums.BusinessType; +import com.bms.common.utils.poi.ExcelUtil; /** * 客户余额账单查询与核销 Controller @@ -43,17 +48,50 @@ public class CustomerBillController extends BaseController */ @PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:list')") @GetMapping("/list/{customerId}") - public TableDataInfo billList(@PathVariable("customerId") Long customerId, ArBillQuery query) + public AjaxResult billList(@PathVariable("customerId") Long customerId, ArBillQuery query) { if (customerId == null || customerId <= 0L) { - return getDataTable(Collections.emptyList()); + AjaxResult result = success(); + result.put("rows", Collections.emptyList()); + result.put("total", 0L); + result.put("summary", new ArBillSummary()); + return result; } ArBillQuery billQuery = query == null ? new ArBillQuery() : query; billQuery.setCustomerId(customerId); startPage(); List list = billService.selectArBillList(billQuery); - return getDataTable(list); + TableDataInfo pageData = getDataTable(list); + AjaxResult result = success(); + result.put("rows", pageData.getRows()); + result.put("total", pageData.getTotal()); + result.put("summary", billService.selectArBillSummary(billQuery)); + return result; + } + + /** + * 按当前筛选条件导出指定客户的全部应收账单,不受列表分页参数影响。 + */ + @PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:export')") + @Log(title = "客户账单", businessType = BusinessType.EXPORT) + @PostMapping("/export/{customerId}") + public void export(HttpServletResponse response, @PathVariable("customerId") Long customerId, ArBillQuery query) + { + List rows = new ArrayList<>(); + if (customerId != null && customerId > 0L) + { + ArBillQuery billQuery = query == null ? new ArBillQuery() : query; + // 客户ID固定取自路径,忽略请求参数中可能出现的 customerId。 + billQuery.setCustomerId(customerId); + List bills = billService.selectArBillList(billQuery); + for (ArBill bill : bills) + { + rows.add(ArBillListExportRow.from(bill)); + } + } + ExcelUtil util = new ExcelUtil<>(ArBillListExportRow.class); + util.exportExcel(response, rows, "客户账单"); } /** diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/domain/vo/ArBillSummary.java b/bms-back/bms-system/src/main/java/com/bms/ar/domain/vo/ArBillSummary.java new file mode 100644 index 00000000..0c76a186 --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/ar/domain/vo/ArBillSummary.java @@ -0,0 +1,16 @@ +package com.bms.ar.domain.vo; + +import java.io.Serializable; +import java.math.BigDecimal; + +import lombok.Data; + +/** 应收账单列表按筛选条件汇总的金额。 */ +@Data +public class ArBillSummary implements Serializable { + private static final long serialVersionUID = 1L; + + private BigDecimal totalAmount = BigDecimal.ZERO; + private BigDecimal writtenOffAmount = BigDecimal.ZERO; + private BigDecimal unwrittenAmount = BigDecimal.ZERO; +} diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillMapper.java index be476768..2b0b16d3 100644 --- a/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillMapper.java @@ -7,10 +7,13 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.bms.ar.domain.ArBill; import com.bms.ar.domain.vo.ArBillQuery; +import com.bms.ar.domain.vo.ArBillSummary; public interface ArBillMapper { List selectArBillList(ArBillQuery query); + ArBillSummary selectArBillSummary(ArBillQuery query); + ArBill selectArBillById(Long arBillId); ArBill selectArBillByBillNo(String billNo); diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/service/IArBillService.java b/bms-back/bms-system/src/main/java/com/bms/ar/service/IArBillService.java index 46fca5b6..609cc1dd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/ar/service/IArBillService.java +++ b/bms-back/bms-system/src/main/java/com/bms/ar/service/IArBillService.java @@ -14,6 +14,7 @@ import com.bms.ar.domain.vo.ArBillGenerateRequest; import com.bms.ar.domain.vo.ArBillGenerateQuery; import com.bms.ar.domain.vo.ArBillActionRequest; import com.bms.ar.domain.vo.ArBillQuery; +import com.bms.ar.domain.vo.ArBillSummary; import com.bms.price.domain.PrcOrderBill; /** @@ -25,6 +26,8 @@ public interface IArBillService { List selectArBillList(ArBillQuery query); + ArBillSummary selectArBillSummary(ArBillQuery query); + ArBill selectArBillById(Long arBillId); List selectArBillDetails(Long arBillId); diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java index 9259d29c..16d18791 100644 --- a/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java @@ -79,6 +79,7 @@ import com.bms.ar.domain.vo.ArBillActionRequest; import com.bms.ar.domain.vo.ArBillGenerateQuery; import com.bms.ar.domain.vo.ArBillGenerateRequest; import com.bms.ar.domain.vo.ArBillQuery; +import com.bms.ar.domain.vo.ArBillSummary; import com.bms.common.config.BmsConfig; import com.bms.common.exception.ServiceException; import com.bms.common.utils.DateUtils; @@ -223,6 +224,14 @@ public class ArBillServiceImpl implements IArBillService { return bills; } + /** + * 汇总当前筛选条件下的全部账单金额,不受列表分页影响。 + */ + @Override + public ArBillSummary selectArBillSummary(ArBillQuery query) { + return billMapper.selectArBillSummary(query); + } + /** * 查询账单头信息;导出记录随账单头返回,明细由独立分页接口查询。 */ diff --git a/bms-back/bms-system/src/main/resources/mapper/ar/ArBillMapper.xml b/bms-back/bms-system/src/main/resources/mapper/ar/ArBillMapper.xml index aa835a73..e695f45e 100644 --- a/bms-back/bms-system/src/main/resources/mapper/ar/ArBillMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/ar/ArBillMapper.xml @@ -35,6 +35,12 @@ + + + + + + select ar_bill_id, bill_no, @@ -67,8 +73,7 @@ from ar_bill - + + order by create_time desc, ar_bill_id desc + +