diff --git a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index bb88734d..45541947 100644 --- a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -20,7 +20,7 @@ public class RuoYiApplication { // System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(RuoYiApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" + + System.out.println("(♥◠‿◠)ノ゙ 启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + diff --git a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java index c5cb7aa8..6940a388 100644 --- a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java +++ b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -78,6 +79,16 @@ public class BillingController extends BaseController return getDataTable(list); } + /** + * Order no options for remote-search dropdown (bill list multi search). + */ + @PreAuthorize("@ss.hasPermi('price:billing:bill')") + @GetMapping("/bill/orderNos") + public AjaxResult orderNoOptions(@RequestParam(value = "keyword", required = false) String keyword) + { + return success(prcOrderBillService.listOrderNoOptions(keyword)); + } + @PreAuthorize("@ss.hasPermi('price:billing:bill')") @GetMapping("/bill/{billId}") public AjaxResult getBill(@PathVariable String billId) diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java index 11b2ab08..354875aa 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java @@ -18,10 +18,14 @@ public class PrcOrderBill extends BaseEntity private String billId; private String billKey; private String orderNo; + /** 批量查询:多个订单号精确匹配(仅查询用,非表字段) */ + private List orderNos; private String trackingNo; private Long customerId; private String customerCode; private String customerName; + /** 批量查询:多个客户代码精确匹配(仅查询用,非表字段) */ + private List customerCodes; private Integer pieces; private BigDecimal actualWeight; private BigDecimal volume; @@ -38,6 +42,8 @@ public class PrcOrderBill extends BaseEntity private String orderRemark; private String productCode; private String productName; + /** 批量查询:多个产品代码精确匹配(仅查询用,非表字段) */ + private List productCodes; private String countryCode; private String countryName; private BigDecimal weight; diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java index 79f70f79..2dbf8e13 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java @@ -15,6 +15,9 @@ public interface PrcOrderBillMapper public List selectPrcOrderBillList(PrcOrderBill bill); + /** 订单号下拉搜索:按关键词模糊匹配,返回去重后的订单号(按最近创建排序,限量返回) */ + public List selectOrderNoOptions(@Param("keyword") String keyword, @Param("limit") int limit); + /** 应收账单生成读取指定客户截止日期前的未出账订单计费快照。 */ public List selectPrcOrderBillByCustomerPeriod(@Param("customerId") Long customerId, @Param("customerCode") String customerCode, @Param("cutoffDate") Date cutoffDate, diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java index f9b0162d..951c0cdf 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java @@ -12,6 +12,9 @@ public interface IPrcOrderBillService List selectBillList(PrcOrderBill query); + /** 订单号下拉搜索选项(模糊匹配,去重限量) */ + List listOrderNoOptions(String keyword); + TmsPriceQuoteResult getBill(String billId); TmsPriceQuoteResult getBillByOrderNo(String orderNo); diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java index 52120ef5..dfb66106 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java @@ -4,9 +4,12 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; +import java.util.LinkedHashSet; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -88,9 +91,41 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override public List selectBillList(PrcOrderBill query) { + query.setOrderNos(normalizeCodeList(query.getOrderNos())); + query.setCustomerCodes(normalizeCodeList(query.getCustomerCodes())); + query.setProductCodes(normalizeCodeList(query.getProductCodes())); return orderBillMapper.selectPrcOrderBillList(query); } + @Override + public List listOrderNoOptions(String keyword) + { + if (StringUtils.isBlank(keyword)) + { + return new ArrayList<>(); + } + return orderBillMapper.selectOrderNoOptions(keyword.trim(), 20); + } + + /** + * 批量编码归一化:逐个 trim、拆开误传的逗号/分号/空白分隔串、去空去重 + */ + private List normalizeCodeList(List codes) + { + if (codes == null || codes.isEmpty()) + { + return null; + } + List cleaned = codes.stream() + .filter(StringUtils::isNotBlank) + .map(s -> s.split("[,,;;\\s]+")) + .flatMap(Arrays::stream) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .collect(Collectors.collectingAndThen(Collectors.toList(), list -> new ArrayList<>(new LinkedHashSet<>(list)))); + return cleaned.isEmpty() ? null : cleaned; + } + @Override public TmsPriceQuoteResult getBill(String billId) { diff --git a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml index 6747106f..060e401d 100644 --- a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml +++ b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml @@ -87,24 +87,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where bill_id = #{billId} + +