增加运单和转运单批量查询
This commit is contained in:
+14
@@ -89,6 +89,20 @@ public class BillingController extends BaseController
|
|||||||
return success(prcOrderBillService.listOrderNoOptions(keyword));
|
return success(prcOrderBillService.listOrderNoOptions(keyword));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('price:billing:bill')")
|
||||||
|
@GetMapping("/bill/trackingNos")
|
||||||
|
public AjaxResult trackingNoOptions(@RequestParam(value = "keyword", required = false) String keyword)
|
||||||
|
{
|
||||||
|
return success(prcOrderBillService.listTrackingNoOptions(keyword));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('price:billing:bill')")
|
||||||
|
@GetMapping("/bill/transferNos")
|
||||||
|
public AjaxResult transferNoOptions(@RequestParam(value = "keyword", required = false) String keyword)
|
||||||
|
{
|
||||||
|
return success(prcOrderBillService.listTransferNoOptions(keyword));
|
||||||
|
}
|
||||||
|
|
||||||
@PreAuthorize("@ss.hasPermi('price:billing:bill')")
|
@PreAuthorize("@ss.hasPermi('price:billing:bill')")
|
||||||
@GetMapping("/bill/{billId}")
|
@GetMapping("/bill/{billId}")
|
||||||
public AjaxResult getBill(@PathVariable String billId)
|
public AjaxResult getBill(@PathVariable String billId)
|
||||||
|
|||||||
@@ -21,8 +21,12 @@ public class PrcOrderBill extends BaseEntity
|
|||||||
/** 批量查询:多个订单号精确匹配(仅查询用,非表字段) */
|
/** 批量查询:多个订单号精确匹配(仅查询用,非表字段) */
|
||||||
private List<String> orderNos;
|
private List<String> orderNos;
|
||||||
private String trackingNo;
|
private String trackingNo;
|
||||||
|
/** 批量查询:多个运单号精确匹配(仅查询用,非表字段) */
|
||||||
|
private List<String> trackingNos;
|
||||||
/** transfer order no */
|
/** transfer order no */
|
||||||
private String transferNo;
|
private String transferNo;
|
||||||
|
/** 批量查询:多个转单号精确匹配(仅查询用,非表字段) */
|
||||||
|
private List<String> transferNos;
|
||||||
/** 所属销售员 */
|
/** 所属销售员 */
|
||||||
private String belongSaler;
|
private String belongSaler;
|
||||||
/** 结算员 */
|
/** 结算员 */
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ public interface PrcOrderBillMapper
|
|||||||
/** 订单号下拉搜索:按关键词模糊匹配,返回去重后的订单号(按最近创建排序,限量返回) */
|
/** 订单号下拉搜索:按关键词模糊匹配,返回去重后的订单号(按最近创建排序,限量返回) */
|
||||||
public List<String> selectOrderNoOptions(@Param("keyword") String keyword, @Param("limit") int limit);
|
public List<String> selectOrderNoOptions(@Param("keyword") String keyword, @Param("limit") int limit);
|
||||||
|
|
||||||
|
/** 运单号下拉搜索:按关键词模糊匹配,返回去重后的运单号(按最近创建排序,限量返回) */
|
||||||
|
public List<String> selectTrackingNoOptions(@Param("keyword") String keyword, @Param("limit") int limit);
|
||||||
|
|
||||||
|
/** 转单号下拉搜索:按关键词模糊匹配,返回去重后的转单号(按最近创建排序,限量返回) */
|
||||||
|
public List<String> selectTransferNoOptions(@Param("keyword") String keyword, @Param("limit") int limit);
|
||||||
|
|
||||||
/** 应收账单生成读取指定客户截止日期前的未出账订单计费快照。 */
|
/** 应收账单生成读取指定客户截止日期前的未出账订单计费快照。 */
|
||||||
public List<PrcOrderBill> selectPrcOrderBillByCustomerPeriod(@Param("customerId") Long customerId,
|
public List<PrcOrderBill> selectPrcOrderBillByCustomerPeriod(@Param("customerId") Long customerId,
|
||||||
@Param("customerCode") String customerCode, @Param("orderOrTrackingNo") String orderOrTrackingNo,
|
@Param("customerCode") String customerCode, @Param("orderOrTrackingNo") String orderOrTrackingNo,
|
||||||
|
|||||||
@@ -15,6 +15,12 @@ public interface IPrcOrderBillService
|
|||||||
/** 订单号下拉搜索选项(模糊匹配,去重限量) */
|
/** 订单号下拉搜索选项(模糊匹配,去重限量) */
|
||||||
List<String> listOrderNoOptions(String keyword);
|
List<String> listOrderNoOptions(String keyword);
|
||||||
|
|
||||||
|
/** 运单号下拉搜索选项(模糊匹配,去重限量) */
|
||||||
|
List<String> listTrackingNoOptions(String keyword);
|
||||||
|
|
||||||
|
/** 转单号下拉搜索选项(模糊匹配,去重限量) */
|
||||||
|
List<String> listTransferNoOptions(String keyword);
|
||||||
|
|
||||||
TmsPriceQuoteResult getBill(String billId);
|
TmsPriceQuoteResult getBill(String billId);
|
||||||
|
|
||||||
TmsPriceQuoteResult getBillByOrderNo(String orderNo);
|
TmsPriceQuoteResult getBillByOrderNo(String orderNo);
|
||||||
|
|||||||
+22
@@ -103,6 +103,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
query.setOrderNos(normalizeCodeList(query.getOrderNos()));
|
query.setOrderNos(normalizeCodeList(query.getOrderNos()));
|
||||||
query.setCustomerCodes(normalizeCodeList(query.getCustomerCodes()));
|
query.setCustomerCodes(normalizeCodeList(query.getCustomerCodes()));
|
||||||
query.setProductCodes(normalizeCodeList(query.getProductCodes()));
|
query.setProductCodes(normalizeCodeList(query.getProductCodes()));
|
||||||
|
query.setTrackingNos(normalizeCodeList(query.getTrackingNos()));
|
||||||
|
query.setTransferNos(normalizeCodeList(query.getTransferNos()));
|
||||||
return orderBillMapper.selectPrcOrderBillList(query);
|
return orderBillMapper.selectPrcOrderBillList(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,6 +118,26 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
return orderBillMapper.selectOrderNoOptions(keyword.trim(), 20);
|
return orderBillMapper.selectOrderNoOptions(keyword.trim(), 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> listTrackingNoOptions(String keyword)
|
||||||
|
{
|
||||||
|
if (StringUtils.isBlank(keyword))
|
||||||
|
{
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return orderBillMapper.selectTrackingNoOptions(keyword.trim(), 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> listTransferNoOptions(String keyword)
|
||||||
|
{
|
||||||
|
if (StringUtils.isBlank(keyword))
|
||||||
|
{
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return orderBillMapper.selectTransferNoOptions(keyword.trim(), 20);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量编码归一化:逐个 trim、拆开误传的逗号/分号/空白分隔串、去空去重
|
* 批量编码归一化:逐个 trim、拆开误传的逗号/分号/空白分隔串、去空去重
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -117,6 +117,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
limit #{limit}
|
limit #{limit}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectTrackingNoOptions" resultType="String">
|
||||||
|
select tracking_no
|
||||||
|
from prc_order_bill
|
||||||
|
<where>
|
||||||
|
<if test="keyword != null and keyword != ''">
|
||||||
|
tracking_no like concat('%', #{keyword}, '%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
group by tracking_no
|
||||||
|
order by max(create_time) desc
|
||||||
|
limit #{limit}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectTransferNoOptions" resultType="String">
|
||||||
|
select transfer_no
|
||||||
|
from prc_order_bill
|
||||||
|
<where>
|
||||||
|
<if test="keyword != null and keyword != ''">
|
||||||
|
transfer_no like concat('%', #{keyword}, '%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
group by transfer_no
|
||||||
|
order by max(create_time) desc
|
||||||
|
limit #{limit}
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectPrcOrderBillList" parameterType="PrcOrderBill" resultMap="PrcOrderBillResult">
|
<select id="selectPrcOrderBillList" parameterType="PrcOrderBill" resultMap="PrcOrderBillResult">
|
||||||
<include refid="selectPrcOrderBillVo"/>
|
<include refid="selectPrcOrderBillVo"/>
|
||||||
<where>
|
<where>
|
||||||
@@ -132,9 +158,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="trackingNo != null and trackingNo != ''">
|
<if test="trackingNo != null and trackingNo != ''">
|
||||||
AND tracking_no like concat('%', #{trackingNo}, '%')
|
AND tracking_no like concat('%', #{trackingNo}, '%')
|
||||||
</if>
|
</if>
|
||||||
|
<if test="trackingNos != null and trackingNos.size() > 0">
|
||||||
|
AND tracking_no IN
|
||||||
|
<foreach collection="trackingNos" item="tno" open="(" separator="," close=")">
|
||||||
|
#{tno}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
<if test="transferNo != null and transferNo != ''">
|
<if test="transferNo != null and transferNo != ''">
|
||||||
AND transfer_no like concat('%', #{transferNo}, '%')
|
AND transfer_no like concat('%', #{transferNo}, '%')
|
||||||
</if>
|
</if>
|
||||||
|
<if test="transferNos != null and transferNos.size() > 0">
|
||||||
|
AND transfer_no IN
|
||||||
|
<foreach collection="transferNos" item="rno" open="(" separator="," close=")">
|
||||||
|
#{rno}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
<if test="customerActiveStatus != null and customerActiveStatus != ''">
|
<if test="customerActiveStatus != null and customerActiveStatus != ''">
|
||||||
AND customer_active_status = #{customerActiveStatus}
|
AND customer_active_status = #{customerActiveStatus}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
-- =====================================================================
|
||||||
|
-- 应收主表 prc_income_bill
|
||||||
|
-- 位于 prc_order_bill(订单主表)与 prc_income_bill_fee(应收费用明细)之间
|
||||||
|
-- 与 prc_order_bill 一对一(bill_id UNIQUE)
|
||||||
|
-- 价格层:产品价 / 红线价 / 销售价(当前计费结果)
|
||||||
|
-- 人员:业务员、结算员
|
||||||
|
-- 说明:本脚本仅建表;确认后再改 Java/费用表关联
|
||||||
|
-- =====================================================================
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS prc_income_bill (
|
||||||
|
income_bill_id VARCHAR(36) NOT NULL COMMENT '应收主表ID',
|
||||||
|
bill_id VARCHAR(36) NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id,一对一',
|
||||||
|
currency VARCHAR(10) DEFAULT 'CNY' COMMENT '币种',
|
||||||
|
|
||||||
|
-- 价格层(后续统计;当前计费写入销售价/应收合计)
|
||||||
|
product_amount DECIMAL(18,4) DEFAULT NULL COMMENT '产品价合计',
|
||||||
|
redline_amount DECIMAL(18,4) DEFAULT NULL COMMENT '红线价合计',
|
||||||
|
sales_amount DECIMAL(18,4) DEFAULT NULL COMMENT '销售价合计(当前计费结果)',
|
||||||
|
income_total DECIMAL(18,4) DEFAULT NULL COMMENT '应收合计(当前等于销售价)',
|
||||||
|
|
||||||
|
-- 人员
|
||||||
|
belong_saler VARCHAR(64) DEFAULT NULL COMMENT '业务员/销售员',
|
||||||
|
settlement_man VARCHAR(64) DEFAULT NULL COMMENT '结算员',
|
||||||
|
|
||||||
|
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||||||
|
create_time DATETIME NOT NULL COMMENT '创建时间',
|
||||||
|
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||||||
|
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
|
||||||
|
|
||||||
|
PRIMARY KEY (income_bill_id),
|
||||||
|
UNIQUE KEY uk_income_bill_order_bill (bill_id),
|
||||||
|
KEY idx_income_bill_saler (belong_saler),
|
||||||
|
KEY idx_income_bill_settlement (settlement_man),
|
||||||
|
CONSTRAINT fk_income_bill_order_bill FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收主表(订单计费与应收费用中间层,与订单一对一)';
|
||||||
@@ -60,3 +60,21 @@ export function listOrderNoOptions(keyword) {
|
|||||||
params: { keyword }
|
params: { keyword }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 运单号下拉远程搜索选项 */
|
||||||
|
export function listTrackingNoOptions(keyword) {
|
||||||
|
return request({
|
||||||
|
url: '/price/billing/bill/trackingNos',
|
||||||
|
method: 'get',
|
||||||
|
params: { keyword }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 转单号下拉远程搜索选项 */
|
||||||
|
export function listTransferNoOptions(keyword) {
|
||||||
|
return request({
|
||||||
|
url: '/price/billing/bill/transferNos',
|
||||||
|
method: 'get',
|
||||||
|
params: { keyword }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,6 +11,12 @@
|
|||||||
<template #search-orderNos="{ model }">
|
<template #search-orderNos="{ model }">
|
||||||
<multi-value-input v-model="model.orderNos" placeholder="订单号" width="100%" :search-method="searchOrderNoOptions" />
|
<multi-value-input v-model="model.orderNos" placeholder="订单号" width="100%" :search-method="searchOrderNoOptions" />
|
||||||
</template>
|
</template>
|
||||||
|
<template #search-trackingNos="{ model }">
|
||||||
|
<multi-value-input v-model="model.trackingNos" placeholder="运单号" width="100%" :search-method="searchTrackingNoOptions" />
|
||||||
|
</template>
|
||||||
|
<template #search-transferNos="{ model }">
|
||||||
|
<multi-value-input v-model="model.transferNos" placeholder="转单号" width="100%" :search-method="searchTransferNoOptions" />
|
||||||
|
</template>
|
||||||
<template #search-customerCodes="{ model }">
|
<template #search-customerCodes="{ model }">
|
||||||
<customer-select
|
<customer-select
|
||||||
v-model="model.customerCodes"
|
v-model="model.customerCodes"
|
||||||
@@ -70,7 +76,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="BillingBill">
|
<script setup name="BillingBill">
|
||||||
import { listBill, getBill, listOrderNoOptions } from '@/api/price/billing'
|
import { listBill, getBill, listOrderNoOptions, listTrackingNoOptions, listTransferNoOptions } from '@/api/price/billing'
|
||||||
import { useProducts } from '@/components/ProductSelect/useProducts'
|
import { useProducts } from '@/components/ProductSelect/useProducts'
|
||||||
import BillDetail from './components/BillDetail.vue'
|
import BillDetail from './components/BillDetail.vue'
|
||||||
|
|
||||||
@@ -79,6 +85,16 @@ function searchOrderNoOptions(keyword) {
|
|||||||
return listOrderNoOptions(keyword).then(res => res.data || [])
|
return listOrderNoOptions(keyword).then(res => res.data || [])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 运单号下拉远程搜索
|
||||||
|
function searchTrackingNoOptions(keyword) {
|
||||||
|
return listTrackingNoOptions(keyword).then(res => res.data || [])
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转单号下拉远程搜索
|
||||||
|
function searchTransferNoOptions(keyword) {
|
||||||
|
return listTransferNoOptions(keyword).then(res => res.data || [])
|
||||||
|
}
|
||||||
|
|
||||||
// 产品下拉选项:复用 ProductSelect 的模块级产品缓存(全应用只拉一次)
|
// 产品下拉选项:复用 ProductSelect 的模块级产品缓存(全应用只拉一次)
|
||||||
const { productList, ensureProducts } = useProducts()
|
const { productList, ensureProducts } = useProducts()
|
||||||
ensureProducts()
|
ensureProducts()
|
||||||
@@ -118,8 +134,8 @@ const columns = [
|
|||||||
|
|
||||||
const searchColumns = [
|
const searchColumns = [
|
||||||
{ label: '订单号', prop: 'orderNos', placeholder: '订单号' },
|
{ label: '订单号', prop: 'orderNos', placeholder: '订单号' },
|
||||||
{ label: '运单号', prop: 'trackingNo', component: 'input', placeholder: '运单号' },
|
{ label: '运单号', prop: 'trackingNos', placeholder: '运单号' },
|
||||||
{ label: '转单号', prop: 'transferNo', component: 'input', placeholder: '转单号' },
|
{ label: '转单号', prop: 'transferNos', placeholder: '转单号' },
|
||||||
{ label: '客户', prop: 'customerCodes', placeholder: '客户代码' },
|
{ label: '客户', prop: 'customerCodes', placeholder: '客户代码' },
|
||||||
{ label: '产品代码', prop: 'productCodes', placeholder: '产品代码' }
|
{ label: '产品代码', prop: 'productCodes', placeholder: '产品代码' }
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user