feat(work): 实现订单指派时自动改价功能
在订单指派给设计师时,自动计算改价金额。使用jsPrice或price作为基准价,按10%比例计算改价,结果四舍五入到最接近的10的倍数。同时更新多个配置文件以适配新环境。
This commit is contained in:
@@ -774,6 +774,9 @@ public class TpOrderServiceImpl extends MPJBaseServiceImpl<TpOrderMapper,TpOrder
|
||||
|
||||
SysUser user = sysUserMapper.selectById(userId);
|
||||
|
||||
// 获取默认改价比例(10%)
|
||||
BigDecimal discountRate = new BigDecimal("0.10");
|
||||
|
||||
List<TpOrder> orderList = new ArrayList<>();
|
||||
for (Long orderId : orderIds){
|
||||
TpOrder order = baseMapper.selectById(orderId);
|
||||
@@ -784,6 +787,35 @@ public class TpOrderServiceImpl extends MPJBaseServiceImpl<TpOrderMapper,TpOrder
|
||||
order.setDeptIdJs(dept.getDeptId());
|
||||
order.setAncestorsJs(dept.getAncestors());
|
||||
|
||||
// ===== 自动改价逻辑开始 =====
|
||||
// 启用自动改价
|
||||
order.setIsC(2);
|
||||
|
||||
// 计算自动改价价格(优先使用jsPrice,如果为空则使用price)
|
||||
BigDecimal basePrice = order.getJsPrice();
|
||||
System.out.println("[自动改价调试] 订单ID=" + order.getId() + ", jsPrice=" + order.getJsPrice() + ", price=" + order.getPrice());
|
||||
|
||||
if (basePrice == null || basePrice.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
basePrice = order.getPrice();
|
||||
System.out.println("[自动改价调试] jsPrice为空或<=0,使用price=" + basePrice);
|
||||
}
|
||||
|
||||
if (basePrice != null && basePrice.compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal zGjPrice = basePrice.multiply(discountRate);
|
||||
System.out.println("[自动改价调试] 计算改价: " + basePrice + " * 10% = " + zGjPrice);
|
||||
|
||||
// 10取整处理(四舍五入到最接近的10的倍数)
|
||||
zGjPrice = roundToNearestTen(zGjPrice);
|
||||
System.out.println("[自动改价调试] 取整后改价: " + zGjPrice);
|
||||
|
||||
order.setZGjPrice(zGjPrice);
|
||||
order.setGjPrice(zGjPrice);
|
||||
System.out.println("[自动改价调试] 设置成功: zGjPrice=" + zGjPrice + ", gjPrice=" + zGjPrice);
|
||||
} else {
|
||||
System.out.println("[自动改价调试] 未设置改价: basePrice=" + basePrice);
|
||||
}
|
||||
// ===== 自动改价逻辑结束 =====
|
||||
|
||||
boolean res = saveOrderRecord(order.getId(),"订单分图","订单:"+order.getOrderId()+" 指派给"+user.getNickName()+" 成功",1,null);
|
||||
if(!res){
|
||||
throw new ServiceException("订单指派失败");
|
||||
@@ -793,6 +825,16 @@ public class TpOrderServiceImpl extends MPJBaseServiceImpl<TpOrderMapper,TpOrder
|
||||
return baseMapper.updateBatchById(orderList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将金额四舍五入到最接近的10的倍数
|
||||
* @param amount 原始金额
|
||||
* @return 取整后的金额
|
||||
*/
|
||||
private BigDecimal roundToNearestTen(BigDecimal amount) {
|
||||
return amount.divide(new BigDecimal("10"), 0, RoundingMode.HALF_UP)
|
||||
.multiply(new BigDecimal("10"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单取消指派
|
||||
* @param orderId
|
||||
|
||||
Reference in New Issue
Block a user