diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java index 16864fb9..1b87dc5b 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java @@ -31,6 +31,7 @@ import com.bms.ar.domain.ArBillGenerateTask; import com.bms.ar.domain.ArBillLog; import com.bms.ar.domain.vo.ArBillActionRequest; import com.bms.ar.domain.vo.ArBillGenerateQuery; +import com.bms.ar.domain.vo.ArBillGeneratePreviewExportRow; import com.bms.ar.domain.vo.ArBillGenerateRequest; import com.bms.ar.domain.vo.ArBillListExportRow; import com.bms.ar.domain.vo.ArBillQuery; @@ -173,6 +174,22 @@ public class ArBillController extends BaseController { return result; } + /** 按生成预览使用的相同筛选条件导出全部匹配订单,不受分页参数影响。 */ + @Log(title = "应收账单生成订单", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('ar:bill:generate')") + @PostMapping("/generate/preview/export") + public void exportGeneratePreview(HttpServletResponse response, ArBillGenerateQuery query, + HttpServletRequest request) { + rejectMultiValueParameter(request, "customerId"); + List bills = billService.previewBill(query == null ? new ArBillGenerateQuery() : query); + List rows = new ArrayList<>(bills.size()); + for (PrcOrderBill bill : bills) { + rows.add(ArBillGeneratePreviewExportRow.from(bill)); + } + ExcelUtil util = new ExcelUtil<>(ArBillGeneratePreviewExportRow.class); + util.exportExcel(response, rows, "应收账单待生成订单"); + } + /** 查询需要从全选结果中排除的订单;空条件不执行查询,避免返回全部订单。 */ @PreAuthorize("@ss.hasPermi('ar:bill:generate')") @PostMapping("/generate/exclusion-preview") diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/report/PrcProfitReportController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/report/PrcProfitReportController.java index cccb3df8..3183d9db 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/report/PrcProfitReportController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/report/PrcProfitReportController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.bms.common.annotation.Log; import com.bms.common.config.BmsConfig; @@ -48,6 +49,15 @@ public class PrcProfitReportController extends BaseController @Autowired private OssStorage ossStorage; + /** 客户筛选选项,沿用毛利报表的访问权限和查询范围。 */ + @PreAuthorize("@ss.hasPermi('report:profit:list')") + @GetMapping("/customer-options") + public TableDataInfo customerOptions(@RequestParam(required = false) String keywords) + { + startPage(); + return getDataTable(profitReportService.selectCustomerOptions(keywords)); + } + @PreAuthorize("@ss.hasPermi('report:profit:list')") @GetMapping("/summary") public AjaxResult summary(PrcProfitReportQuery query) diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/domain/vo/ArBillGeneratePreviewExportRow.java b/bms-back/bms-system/src/main/java/com/bms/ar/domain/vo/ArBillGeneratePreviewExportRow.java new file mode 100644 index 00000000..e91bb7f1 --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/ar/domain/vo/ArBillGeneratePreviewExportRow.java @@ -0,0 +1,64 @@ +package com.bms.ar.domain.vo; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.bms.common.annotation.Excel; +import com.bms.price.domain.PrcOrderBill; +import lombok.Data; + +/** 应收账单生成预览结果 Excel 导出行。 */ +@Data +public class ArBillGeneratePreviewExportRow implements Serializable { + private static final long serialVersionUID = 1L; + + @Excel(name = "订单号", sort = 0, width = 24) + private String orderNo; + + @Excel(name = "运单号", sort = 1, width = 22) + private String trackingNo; + + @Excel(name = "转单号", sort = 2, width = 24) + private String transferNo; + + @Excel(name = "客户", sort = 3, width = 24) + private String customerName; + + @Excel(name = "业务日期", sort = 4, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 22) + private Date bizDate; + + @Excel(name = "产品", sort = 5, width = 22) + private String productName; + + @Excel(name = "国家/地区", sort = 6, width = 18) + private String countryName; + + @Excel(name = "实际重(kg)", sort = 7, scale = 2, width = 16) + private BigDecimal actualWeight; + + @Excel(name = "计费重(kg)", sort = 8, scale = 2, width = 16) + private BigDecimal chargeWeight; + + @Excel(name = "应收金额", sort = 9, scale = 2, width = 16) + private BigDecimal incomeTotal; + + @Excel(name = "币种", sort = 10, width = 12) + private String currency; + + public static ArBillGeneratePreviewExportRow from(PrcOrderBill bill) { + ArBillGeneratePreviewExportRow row = new ArBillGeneratePreviewExportRow(); + row.setOrderNo(bill.getOrderNo()); + row.setTrackingNo(bill.getTrackingNo()); + row.setTransferNo(bill.getTransferNo()); + row.setCustomerName(bill.getCustomerName()); + row.setBizDate(bill.getBizDate()); + row.setProductName(bill.getProductName()); + row.setCountryName(bill.getCountryName()); + row.setActualWeight(bill.getActualWeight()); + row.setChargeWeight(bill.getChargeWeight()); + row.setIncomeTotal(bill.getIncomeTotal()); + row.setCurrency(bill.getCurrency()); + return row; + } +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcProfitReportService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcProfitReportService.java index 069a2d3f..ad214559 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcProfitReportService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcProfitReportService.java @@ -1,6 +1,7 @@ package com.bms.price.service; import java.util.List; +import com.bms.customer.customerinfo.domain.BmsCustomerOption; // 提成功能暂停使用:import com.bms.price.domain.PrcProfitCommissionRate; import com.bms.price.domain.PrcProfitReportExport; import com.bms.price.domain.vo.PrcProfitReportOrderRow; @@ -11,6 +12,8 @@ import com.bms.price.domain.vo.PrcProfitReportSummary; /** 毛利报表服务。 */ public interface IPrcProfitReportService { + List selectCustomerOptions(String keywords); + List selectOrderRows(PrcProfitReportQuery query); List selectProductRows(PrcProfitReportQuery query); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcProfitReportServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcProfitReportServiceImpl.java index 6e1b5cad..8ab3023c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcProfitReportServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcProfitReportServiceImpl.java @@ -9,6 +9,9 @@ import org.springframework.stereotype.Service; // 提成功能暂停使用:import org.springframework.transaction.annotation.Transactional; import com.bms.common.exception.ServiceException; import com.bms.common.utils.SecurityUtils; +import com.bms.customer.customerinfo.domain.BmsCustomer; +import com.bms.customer.customerinfo.domain.BmsCustomerOption; +import com.bms.customer.customerinfo.mapper.BmsCustomerMapper; // 提成功能暂停使用:import com.bms.price.domain.PrcProfitCommissionRate; // 提成功能暂停使用:import com.bms.price.mapper.PrcProfitCommissionRateMapper; import com.bms.price.domain.PrcProfitReportExport; @@ -28,11 +31,23 @@ public class PrcProfitReportServiceImpl implements IPrcProfitReportService @Autowired private PrcProfitReportMapper profitReportMapper; + @Autowired + private BmsCustomerMapper customerMapper; + /* 提成配置依赖暂停使用。 @Autowired private PrcProfitCommissionRateMapper commissionRateMapper; */ + @Override + public List selectCustomerOptions(String keywords) + { + // 报表不应用客户模块的 DataScope,只接收关键字并构造内部查询条件。 + BmsCustomer query = new BmsCustomer(); + query.setKeywords(keywords); + return customerMapper.selectCustomerOptions(query); + } + @Override public List selectOrderRows(PrcProfitReportQuery query) { diff --git a/bms-front/src/api/report/profit.js b/bms-front/src/api/report/profit.js index 76dcecbe..c7377abd 100644 --- a/bms-front/src/api/report/profit.js +++ b/bms-front/src/api/report/profit.js @@ -11,6 +11,14 @@ function createProfitExport(url, params) { }) } +export function listProfitCustomerOptions(params) { + return request({ + url: '/report/profit/customer-options', + method: 'get', + params + }) +} + export function listProfitSummary(params) { return request({ url: '/report/profit/summary', diff --git a/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue b/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue index cff109e9..9607db17 100644 --- a/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue +++ b/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue @@ -28,6 +28,7 @@
可选 {{ previewTotal }} 条订单,已选 {{ displaySelectedCount }} 条,应收合计 {{ money(displaySelectedAmount) }} 请选择客户、币种和账单截止日后查询可生成的计费订单 + 导出查询结果 查询
@@ -147,7 +148,7 @@