feat(quotation): 更新报价产品信息精度和列表排序功能

- 将QuotationProductInfo实体类中的数值字段从Double改为BigDecimal以提高精度
- 在多个页面组件中添加默认排序配置(isAsc和orderByColumn字段)
- 更新报价导出功能的表头和数据格式,添加折扣百分比显示
- 修复供应商和客户页面的时间戳字段名称(createAt改为createTime)
- 添加产品编码和型号查询条件到订单页面
- 优化数值计算逻辑,使用BigDecimal进行精确计算
dev_1.0.1^2
chenhao 2026-02-06 17:54:58 +08:00
parent e2f9e0e393
commit 7ff9552621
14 changed files with 50 additions and 18 deletions

View File

@ -295,6 +295,8 @@ export default {
quotationStatus: null,
createTimeStart: null,
createTimeEnd: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
//
form: {

View File

@ -76,7 +76,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
createBy: this.createBy,
// createBy: this.createBy,
quotationCode: null,
quotationName: null,
orderByColumn: 'createTime',
@ -87,7 +87,7 @@ export default {
watch: {
visible(val) {
if (val) {
this.queryParams.createBy = this.createBy||"-1";
// this.queryParams.createBy = this.createBy||"-1";
this.getList();
}
},

View File

@ -330,6 +330,8 @@ export default {
vendorAddress: null,
vendorUser: null,
vendorStatus: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
//
form: {

View File

@ -169,6 +169,8 @@ export default {
orderCode: null,
projectName: null,
deliveryType: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
//
form: {},

View File

@ -102,6 +102,8 @@ export default {
orderCode: undefined,
projectName: undefined,
deliveryStatus: undefined,
isAsc : 'desc',
orderByColumn : 'createTime',
},
};
},

View File

@ -344,6 +344,8 @@ export default {
estimatedOrderTimeEnd: null,
lastWorkUpdateTimeStart: null,
lastWorkUpdateTimeEnd: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
dateRange: [],
};

View File

@ -27,6 +27,12 @@
</el-form-item>
<el-form-item label="进货商" prop="partnerName">
<el-input v-model="queryParams.partnerName" placeholder="请输入进货商" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入产品编码" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="产品型号" prop="productModel">
<el-input v-model="queryParams.productModel" placeholder="请输入产品型号" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="时间选择">
<el-select v-model="queryParams.timeType" size="small" style="width: 140px">
@ -195,6 +201,8 @@ export default {
agentName: null,
dutyName: null,
partnerName: null,
productCode: null,
productModel: null,
timeType: 'deliveryTime',
params: {},
orderByColumn:'createTime',

View File

@ -221,7 +221,9 @@ export default {
agentCode: null,
agentName: null,
province: null,
city: null
city: null,
isAsc : 'desc',
orderByColumn : 'createAt',
},
//
provinceOptions: [],

View File

@ -287,7 +287,9 @@ export default {
province: null,
city: null,
bgProperty: null,
industryType: null
industryType: null,
isAsc : 'desc',
orderByColumn : 'createAt',
},
//
provinceOptions: [],

View File

@ -305,6 +305,8 @@ export default {
level: null,
province: null,
city: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
//
provinceOptions: [],

View File

@ -236,6 +236,8 @@ export default {
productName: null,
model: null,
vendorName: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
//
form: {},

View File

@ -237,6 +237,8 @@ export default {
managerName: null,
managerPhone: null,
managerEmail: null,
isAsc : 'desc',
orderByColumn : 'createTime',
},
//
form: {},

View File

@ -4,6 +4,8 @@ package com.ruoyi.sip.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/**
* (QuotationProductInfo)
@ -34,31 +36,31 @@ public class QuotationProductInfo extends BaseEntity {
/**
*
*/
private Double quantity;
private BigDecimal quantity;
/**
*
*/
private Double cataloguePrice;
private BigDecimal cataloguePrice;
/**
*
*/
private Double catalogueAllPrice;
private BigDecimal catalogueAllPrice;
/**
*
*/
private Double price;
private BigDecimal price;
/**
*
*/
private Double allPrice;
private BigDecimal allPrice;
/**
*
*/
private Double guidanceDiscount;
private BigDecimal guidanceDiscount;
/**
*
*/
private Double discount;
private BigDecimal discount;
/**
*
*/
@ -66,7 +68,7 @@ public class QuotationProductInfo extends BaseEntity {
/**
*
*/
private Double taxRate;
private BigDecimal taxRate;
/**
* id
*/

View File

@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.InputStream;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -238,7 +239,7 @@ public class QuotationServiceImpl implements IQuotationService {
// 2. 第二部分:列标题
List<String> headers = Arrays.asList(
"序号", "产品编码", "产品型号", "产品代码描述", "数量",
"目录单价(RMB)", "推荐折扣", "折扣单价(RMB)", "总价(RMB)",
"目录单价(RMB)", "推荐折扣(%)","折扣(%)", "单价(RMB)", "总价(RMB)",
"目录总价(RMB)", "CID信息", "备注"
);
// 记录列标题行索引
@ -452,8 +453,8 @@ public class QuotationServiceImpl implements IQuotationService {
double sumAllPrice = 0.0;
double sumCatalogueAllPrice = 0.0;
BigDecimal sumAllPrice = BigDecimal.ZERO;
BigDecimal sumCatalogueAllPrice = BigDecimal.ZERO;
// 添加数据行
int index = 1;
@ -465,7 +466,8 @@ public class QuotationServiceImpl implements IQuotationService {
row.add(item.getProductDesc());
row.add(item.getQuantity());
row.add(item.getCataloguePrice());
row.add(item.getGuidanceDiscount());
row.add(item.getGuidanceDiscount()==null?"":item.getGuidanceDiscount().multiply(new BigDecimal("100")));
row.add(item.getDiscount()==null?"":item.getDiscount().multiply(new BigDecimal("100")));
row.add(item.getPrice());
row.add(item.getAllPrice());
row.add(item.getCatalogueAllPrice());
@ -474,10 +476,10 @@ public class QuotationServiceImpl implements IQuotationService {
rows.add(row);
if (item.getAllPrice() != null) {
sumAllPrice += item.getAllPrice();
sumAllPrice = sumAllPrice.add(item.getAllPrice());
}
if (item.getCatalogueAllPrice() != null) {
sumCatalogueAllPrice += item.getCatalogueAllPrice();
sumCatalogueAllPrice =sumCatalogueAllPrice.add(item.getCatalogueAllPrice());
}
}