feat(project): 更新产品列表页面折扣文案及计算逻辑- 将"利润折扣"统一修改为"商务折扣"
- 修改"终端产品"为"硬件产品"- 优化总价计算逻辑,区分软件、硬件、服务分类小计 - 添加各分类折后小计金额显示-修复金额格式化方法调用问题 - 完善审批流程中商务角色处理逻辑- 增加CSS邮件列表参数支持 -优化库存状态设置逻辑,避免重复赋值 -修复发货数量校验逻辑问题master
parent
6185245482
commit
1f578c5b8f
|
|
@ -483,12 +483,13 @@
|
||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
} else {
|
} else {
|
||||||
|
// arrays= productSnData.map(item => item.productSn)
|
||||||
// if (productSnData.length != quantity) {
|
// if (productSnData.length != quantity) {
|
||||||
// $.modal.msgError(`产品选中数量应与发货数量一致,应发货数量为[${quantity}]`)
|
// $.modal.msgError(`产品选中数量应与发货数量一致,应发货数量为[${quantity}]`)
|
||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
if (arrays.length<=0){
|
if (productSnData.length <= 0 && arrays.length <= 0) {
|
||||||
$.modal.msgError(`应发货数量应该大于0`)
|
$.modal.msgError(`应发货数量应该大于0`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -498,7 +499,7 @@
|
||||||
productSnList: arrays,
|
productSnList: arrays,
|
||||||
logisticsCode: $('#logisticsCode').val(),
|
logisticsCode: $('#logisticsCode').val(),
|
||||||
productCode: productCode,
|
productCode: productCode,
|
||||||
quantity: arrays.length,
|
quantity: productSnData.length <= 0 ? arrays.length : productSnData.length,
|
||||||
warehouseId: warehouseId,
|
warehouseId: warehouseId,
|
||||||
logisticsCompany: $('#logisticsCompany').val(),
|
logisticsCompany: $('#logisticsCompany').val(),
|
||||||
deliveryType: $('#deliveryType').val(),
|
deliveryType: $('#deliveryType').val(),
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<th style="min-width: 90px;width: 90px;max-width: 90px;" class="guidance-discount-column">指导折扣</th>
|
<th style="min-width: 90px;width: 90px;max-width: 90px;" class="guidance-discount-column">指导折扣</th>
|
||||||
<th style="min-width: 94px;width: 94px;max-width: 94px;" class="discount-column">折扣</th>
|
<th style="min-width: 94px;width: 94px;max-width: 94px;" class="discount-column">折扣</th>
|
||||||
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="price-column">单价(¥)</th>
|
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="price-column">单价(¥)</th>
|
||||||
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="discount-column-zd hide-column discount-text" >利润折扣</th>
|
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="discount-column-zd hide-column discount-text" >商务折扣</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-column">总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-column">总价(¥)</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-discount-column hide-column">折后总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-discount-column hide-column">折后总价(¥)</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="catalogue-all-price-column">目录总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="catalogue-all-price-column">目录总价(¥)</th>
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="add-btn-div">
|
<div class="add-btn-div">
|
||||||
<h2>终端产品</h2>
|
<h2>硬件产品</h2>
|
||||||
<button type="button" class="add-btn" onclick="addProduct2({})">添加</button>
|
<button type="button" class="add-btn" onclick="addProduct2({})">添加</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
<th style="min-width: 90px;width: 90px;max-width: 90px;" class="guidance-discount-column">指导折扣</th>
|
<th style="min-width: 90px;width: 90px;max-width: 90px;" class="guidance-discount-column">指导折扣</th>
|
||||||
<th style="min-width: 94px;width: 94px;max-width: 94px;" class="discount-column">折扣</th>
|
<th style="min-width: 94px;width: 94px;max-width: 94px;" class="discount-column">折扣</th>
|
||||||
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="price-column">单价(¥)</th>
|
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="price-column">单价(¥)</th>
|
||||||
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="discount-column-zd hide-column discount-text" >利润折扣</th>
|
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="discount-column-zd hide-column discount-text" >商务折扣</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-column">总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-column">总价(¥)</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-discount-column hide-column">折后总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-discount-column hide-column">折后总价(¥)</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="catalogue-all-price-column">目录总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="catalogue-all-price-column">目录总价(¥)</th>
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
<th style="min-width: 90px;width: 90px;max-width: 90px;" class="guidance-discount-column">指导折扣</th>
|
<th style="min-width: 90px;width: 90px;max-width: 90px;" class="guidance-discount-column">指导折扣</th>
|
||||||
<th style="min-width: 94px;width: 94px;max-width: 94px;" class="discount-column">折扣</th>
|
<th style="min-width: 94px;width: 94px;max-width: 94px;" class="discount-column">折扣</th>
|
||||||
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="price-column">单价(¥)</th>
|
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="price-column">单价(¥)</th>
|
||||||
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="discount-column-zd hide-column discount-text" >利润折扣</th>
|
<th style="min-width: 100px;width: 100px;max-width: 100px;" class="discount-column-zd hide-column discount-text" >商务折扣</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class=" all-price-column">总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class=" all-price-column">总价(¥)</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-discount-column hide-column">折后总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="all-price-discount-column hide-column">折后总价(¥)</th>
|
||||||
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="catalogue-all-price-column">目录总价(¥)</th>
|
<th style="min-width: 120px;width: 120px;max-width: 120px;" class="catalogue-all-price-column">目录总价(¥)</th>
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
</style>
|
</style>
|
||||||
<!-- JS 函数引用或内联 -->
|
<!-- JS 函数引用或内联 -->
|
||||||
<script th:inline="javascript"> /*<![CDATA[*/
|
<script th:inline="javascript"> /*<![CDATA[*/
|
||||||
let canUpdateFlag=[[${canUpdate}]]
|
let canUpdateFlag=[[${canUpdate}]];
|
||||||
let calcFlag = false;
|
let calcFlag = false;
|
||||||
const updatePriceProductList=['8813A3YA','8813A3YB','8813A7U4','8813A7U2']
|
const updatePriceProductList=['8813A3YA','8813A3YB','8813A7U4','8813A7U2']
|
||||||
const quantityStep = ['3130A4TE']
|
const quantityStep = ['3130A4TE']
|
||||||
|
|
@ -120,7 +120,7 @@
|
||||||
},{
|
},{
|
||||||
name:'hardwareProjectProductInfoList',
|
name:'hardwareProjectProductInfoList',
|
||||||
type:'2',
|
type:'2',
|
||||||
title:'终端产品'
|
title:'硬件产品'
|
||||||
},{
|
},{
|
||||||
name:'maintenanceProjectProductInfoList',
|
name:'maintenanceProjectProductInfoList',
|
||||||
type:'11,22,99',
|
type:'11,22,99',
|
||||||
|
|
@ -192,7 +192,7 @@
|
||||||
if (actualPurchaseAmount.length>0 && !actualPurchaseAmount.val()){
|
if (actualPurchaseAmount.length>0 && !actualPurchaseAmount.val()){
|
||||||
let allPriceDiscount = preciseCurrencyRound(Number(discountFoldValue)*Number(allPrice));
|
let allPriceDiscount = preciseCurrencyRound(Number(discountFoldValue)*Number(allPrice));
|
||||||
actualPurchaseAmount.val(allPriceDiscount)
|
actualPurchaseAmount.val(allPriceDiscount)
|
||||||
$('#displayactualPurchaseAmount').val(formatAmountNumber(allPriceDiscount))
|
$('#displayactualPurchaseAmount')?.val(formatAmountNumber(allPriceDiscount))
|
||||||
}
|
}
|
||||||
calculateAndDistributeCataloguePrice()
|
calculateAndDistributeCataloguePrice()
|
||||||
}
|
}
|
||||||
|
|
@ -203,24 +203,29 @@
|
||||||
}
|
}
|
||||||
let allPrice=0.00;
|
let allPrice=0.00;
|
||||||
let allPriceDiscount=0.00;
|
let allPriceDiscount=0.00;
|
||||||
$('.all-price-discount-column').find('.allPrice-discount').each(function (index) {
|
// $('.all-price-discount-column').find('.allPrice-discount').each(function (index) {
|
||||||
allPriceDiscount+=parseFloat($(this).val())
|
// allPriceDiscount+=parseFloat($(this).val())
|
||||||
})
|
// })
|
||||||
$('#productTable tbody').find('tr').find('.allPrice').each(function (index) {
|
$('.all-price-column').find('.allPrice').each(function (index) {
|
||||||
allPrice+=parseFloat($(this).val())
|
allPrice+=parseFloat($(this).val())
|
||||||
})
|
})
|
||||||
let softwarePrice=formatAmountNumber(allPrice);
|
let softwarePrice=0.00;
|
||||||
|
$('#productTable tbody').find('tr').find('.allPrice-discount').each(function (index) {
|
||||||
|
allPriceDiscount+=parseFloat($(this).val())
|
||||||
|
softwarePrice+=parseFloat($(this).val())
|
||||||
|
})
|
||||||
|
softwarePrice=formatAmountNumber(softwarePrice);
|
||||||
let softwareHtml=$( `<span class="total-price" style="
|
let softwareHtml=$( `<span class="total-price" style="
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
"><span style="padding-right: 10px">配置组小计</span> ${softwarePrice}</span>`)
|
"><span style="padding-right: 10px">软件折后小计</span> <span id="software-total-price">${softwarePrice}</span> </span>`)
|
||||||
$('#productTable').after(softwareHtml);
|
$('#productTable').after(softwareHtml);
|
||||||
let hardwarePrice=0.00;
|
let hardwarePrice=0.00;
|
||||||
$('#productTable2 tbody').find('tr').find('.allPrice').each(function (index) {
|
$('#productTable2 tbody').find('tr').find('.allPrice-discount').each(function (index) {
|
||||||
allPrice+=parseFloat($(this).val())
|
allPriceDiscount+=parseFloat($(this).val())
|
||||||
hardwarePrice+=parseFloat($(this).val())
|
hardwarePrice+=parseFloat($(this).val())
|
||||||
})
|
})
|
||||||
hardwarePrice=formatAmountNumber(hardwarePrice);
|
hardwarePrice=formatAmountNumber(hardwarePrice);
|
||||||
|
|
@ -230,12 +235,12 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
"><span style="padding-right: 10px">配置组小计</span> ${hardwarePrice}</span>`)
|
"><span style="padding-right: 10px">硬件折后小计</span> <span id="hardware-total-price">${hardwarePrice}</span> </span>`)
|
||||||
$('#productTable2').after(hardwareHtml);
|
$('#productTable2').after(hardwareHtml);
|
||||||
|
|
||||||
let maintenancePrice=0.00;
|
let maintenancePrice=0.00;
|
||||||
$('#productTable3 tbody').find('tr').find('.allPrice').each(function (index) {
|
$('#productTable3 tbody').find('tr').find('.allPrice-discount').each(function (index) {
|
||||||
allPrice+=parseFloat($(this).val())
|
allPriceDiscount+=parseFloat($(this).val())
|
||||||
maintenancePrice+=parseFloat($(this).val())
|
maintenancePrice+=parseFloat($(this).val())
|
||||||
})
|
})
|
||||||
maintenancePrice=formatAmountNumber(maintenancePrice);
|
maintenancePrice=formatAmountNumber(maintenancePrice);
|
||||||
|
|
@ -245,7 +250,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
"><span style="padding-right: 10px">配置组小计</span> ${maintenancePrice}</span>`)
|
"><span style="padding-right: 10px">服务折后小计</span> <span id="maintenance-total-price"> ${maintenancePrice}</span></span>`)
|
||||||
$('#productTable3').after(maintenanceHtml);
|
$('#productTable3').after(maintenanceHtml);
|
||||||
allPrice = formatAmountNumber(allPrice);
|
allPrice = formatAmountNumber(allPrice);
|
||||||
allPriceDiscount=formatAmountNumber(allPriceDiscount);
|
allPriceDiscount=formatAmountNumber(allPriceDiscount);
|
||||||
|
|
@ -259,7 +264,7 @@
|
||||||
background: #d7d7d7;
|
background: #d7d7d7;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
"><span style="padding-right: 10px">配置组总计</span> <span id="allPriceTotal"> ${allPrice}</span> </span>
|
"><span style="padding-right: 10px">总价合计</span> <span id="allPriceTotal"> ${allPrice}</span> </span>
|
||||||
<div class="total-price discount-all" style="
|
<div class="total-price discount-all" style="
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
@ -268,28 +273,48 @@
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
"><div style="width: 65svw;display: flex;justify-content: center;"><span ><span class="discount-text">利润折扣</span>,折扣<span id="allPriceCountValueSpan"></span>
|
"><div style="width: 65svw;display: flex;justify-content: center;"><span ><span class="discount-text">商务折扣</span>,折扣<span id="allPriceCountValueSpan"></span>
|
||||||
<select id="allPriceCountValue" onchange="changeAllPriceCount(${id})" >
|
<select id="allPriceCountValue" onchange="changeAllPriceCount(${id})" >
|
||||||
<option value="1" ${(!discountFold || discountFold===1)?'selected':''} >100%</option>
|
<option value="1" ${(!discountFold || discountFold===1)?'selected':''} >100%</option>
|
||||||
<option value="0.988" ${discountFold===0.988?'selected':''} >98.8%</option>
|
<option value="0.988" ${discountFold===0.988?'selected':''} >98.8%</option>
|
||||||
<option value="0.985" ${discountFold===0.985?'selected':''} >98.5%</option>
|
<option value="0.985" ${discountFold===0.985?'selected':''} >98.5%</option>
|
||||||
</select>
|
</select>
|
||||||
</span> </div> <span style="border-left: 1px solid;padding-left: 100px;">折后总价<span id="allPriceCount" style="padding-left: 10px"> ${allPriceDiscount}</span></span></div>`)
|
</span> </div> <span style="border-left: 1px solid;padding-left: 100px;">折后总价合计<span id="allPriceCount" style="padding-left: 10px"> ${allPriceDiscount}</span></span></div>`)
|
||||||
$('.layui-tab').after(allPriceHtml);
|
$('.layui-tab').after(allPriceHtml);
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeAllPriceCount(id) {
|
function changeAllPriceCount(id) {
|
||||||
let discountFold = $('#allPriceCountValue').val();
|
let discountFold = $('#allPriceCountValue').val();
|
||||||
let allPriceDiscount=0.00;
|
let allPriceDiscount=0.00;
|
||||||
|
let softwarePrice=0.00;
|
||||||
|
let hardwarePrice=0.00;
|
||||||
|
let maintenancePrice=0.00;
|
||||||
$('.price-column').find('.price').each(function (index) {
|
$('.price-column').find('.price').each(function (index) {
|
||||||
let price = $(this).val();
|
let price = $(this).val();
|
||||||
let quantity = $(this)?.parent()?.parent()?.find('.quantity')?.val();
|
let quantity = $(this)?.parent()?.parent()?.find('.quantity')?.val();
|
||||||
let discountPrice =preciseCurrencyRound( preciseCurrencyRound(price*discountFold)*quantity);
|
let discountPrice =preciseCurrencyRound( preciseCurrencyRound(price*discountFold)*quantity);
|
||||||
|
debugger
|
||||||
|
let parentTable = $(this)?.parents('table').first();
|
||||||
|
let attr = $(parentTable).attr("id");
|
||||||
|
if (attr==='productTable'){
|
||||||
|
softwarePrice+=discountPrice
|
||||||
|
}else if (attr==='productTable2'){
|
||||||
|
hardwarePrice+=discountPrice
|
||||||
|
}else if (attr==='productTable3'){
|
||||||
|
maintenancePrice+=discountPrice
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(this)?.parent()?.parent()?.find('.allPrice-discount').val(discountPrice)
|
$(this)?.parent()?.parent()?.find('.allPrice-discount').val(discountPrice)
|
||||||
$(this)?.parent()?.parent()?.find('.allPrice-discount-format').val(formatAmountNumber(discountPrice))
|
$(this)?.parent()?.parent()?.find('.allPrice-discount-format').val(formatAmountNumber(discountPrice))
|
||||||
allPriceDiscount+=parseFloat(discountPrice)
|
allPriceDiscount+=parseFloat(discountPrice)
|
||||||
// allPriceDiscount+=parseFloat($(this).val())
|
// allPriceDiscount+=parseFloat($(this).val())
|
||||||
})
|
})
|
||||||
|
$('#software-total-price').text(formatAmountNumber(softwarePrice))
|
||||||
|
$('#hardware-total-price').text(formatAmountNumber(hardwarePrice))
|
||||||
|
$('#maintenance-total-price').text(formatAmountNumber(maintenancePrice))
|
||||||
|
|
||||||
$('#allPriceCount').text(formatAmountNumber(allPriceDiscount))
|
$('#allPriceCount').text(formatAmountNumber(allPriceDiscount))
|
||||||
$('#displayactualPurchaseAmount')?.val(formatAmountNumber(allPriceDiscount))
|
$('#displayactualPurchaseAmount')?.val(formatAmountNumber(allPriceDiscount))
|
||||||
$('#actualPurchaseAmount')?.val(allPriceDiscount)
|
$('#actualPurchaseAmount')?.val(allPriceDiscount)
|
||||||
|
|
|
||||||
|
|
@ -825,7 +825,8 @@
|
||||||
}
|
}
|
||||||
let actualPurchaseAmount = [[${projectOrderInfo.actualPurchaseAmount}]] || ''
|
let actualPurchaseAmount = [[${projectOrderInfo.actualPurchaseAmount}]] || ''
|
||||||
if (actualPurchaseAmount) {
|
if (actualPurchaseAmount) {
|
||||||
document.getElementById('displayactualPurchaseAmount').value=actualPurchaseAmount.toLocaleString('en-US');
|
$('#displayactualPurchaseAmount')?.val(formatAmountNumber(actualPurchaseAmount))
|
||||||
|
// document.getElementById('displayactualPurchaseAmount')?.value=actualPurchaseAmount.toLocaleString('en-US');
|
||||||
}
|
}
|
||||||
// initProductList()
|
// initProductList()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.ruoyi.framework.web.exception;
|
package com.ruoyi.framework.web.exception;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.html.HTMLFilter;
|
||||||
import org.apache.shiro.authz.AuthorizationException;
|
import org.apache.shiro.authz.AuthorizationException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,9 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
|
||||||
item.setInnerCode(omsInventoryInner.getInnerCode());
|
item.setInnerCode(omsInventoryInner.getInnerCode());
|
||||||
item.setCreateBy(currentUserId);
|
item.setCreateBy(currentUserId);
|
||||||
item.setCreateTime(nowDate);
|
item.setCreateTime(nowDate);
|
||||||
item.setInventoryStatus(InventoryInfo.InventoryStatusEnum.INNER.getCode());
|
if (StringUtils.isEmpty(item.getInventoryStatus())) {
|
||||||
|
item.setInventoryStatus(InventoryInfo.InventoryStatusEnum.INNER.getCode());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
//校验sn是否重复
|
//校验sn是否重复
|
||||||
List<String> repeatSnList = inventoryInfoService.checkUnq(inventoryInfoList.stream().map(InventoryInfo::getProductSn).collect(Collectors.toList()));
|
List<String> repeatSnList = inventoryInfoService.checkUnq(inventoryInfoList.stream().map(InventoryInfo::getProductSn).collect(Collectors.toList()));
|
||||||
|
|
|
||||||
|
|
@ -1099,7 +1099,9 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
|
||||||
} else if (approveBtn.equals(1)) {
|
} else if (approveBtn.equals(1)) {
|
||||||
// 审批通过处理
|
// 审批通过处理
|
||||||
if ("产品经理".equals(taskName)) {
|
if ("产品经理".equals(taskName)) {
|
||||||
handleProductManagerApproval(businessKey);
|
// handleProductManagerApproval(businessKey);
|
||||||
|
} else if (taskName.startsWith("商务")) {
|
||||||
|
handleBusinessApproval(businessKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1141,7 +1143,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
|
||||||
private void handleProductManagerApproval(String businessKey) {
|
private void handleProductManagerApproval(String businessKey) {
|
||||||
ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(businessKey);
|
ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(businessKey);
|
||||||
|
|
||||||
// 查询商务和代理商邮箱
|
// 查询商务邮箱
|
||||||
List<String> emailList = new ArrayList<>();
|
List<String> emailList = new ArrayList<>();
|
||||||
|
|
||||||
// 查询商务邮箱
|
// 查询商务邮箱
|
||||||
|
|
@ -1151,17 +1153,36 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
|
||||||
.filter(StringUtils::isNotEmpty)
|
.filter(StringUtils::isNotEmpty)
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
|
|
||||||
|
// 发送邮件
|
||||||
|
this.sendPartnerMail(emailList.stream().distinct().collect(Collectors.toList()), dbProjectOrderInfo,Collections.emptyList());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleBusinessApproval(String businessKey) {
|
||||||
|
ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(businessKey);
|
||||||
|
|
||||||
// 查询代理商邮箱
|
// 查询代理商邮箱
|
||||||
if (StringUtils.isNotEmpty(dbProjectOrderInfo.getPartnerEmail())) {
|
List<String> emailList = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
if (ProjectOrderInfo.OrderChannelEnum.DIRECT_SIGNING.getCode().equals(dbProjectOrderInfo.getOrderChannel()) && StringUtils.isNotEmpty(dbProjectOrderInfo.getPartnerEmail())) {
|
||||||
|
//直签并且填写了代理商邮箱
|
||||||
emailList.add(dbProjectOrderInfo.getPartnerEmail());
|
emailList.add(dbProjectOrderInfo.getPartnerEmail());
|
||||||
} else {
|
} else {
|
||||||
|
//根据代理商编码查询 总代查总代 直签查直签
|
||||||
List<String> orderCodeList = getPartnerCodeByProcessTemplate(dbProjectOrderInfo);
|
List<String> orderCodeList = getPartnerCodeByProcessTemplate(dbProjectOrderInfo);
|
||||||
List<PartnerInfo> partnerInfos = partnerInfoService.selectPartnerInfoByCode(orderCodeList);
|
List<PartnerInfo> partnerInfos = partnerInfoService.selectPartnerInfoByCode(orderCodeList);
|
||||||
emailList.addAll(partnerInfos.stream().map(PartnerInfo::getContactEmail).filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
|
emailList.addAll(partnerInfos.stream().map(PartnerInfo::getContactEmail).filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送邮件
|
// 发送邮件
|
||||||
this.sendPartnerMail(emailList.stream().distinct().collect(Collectors.toList()), dbProjectOrderInfo);
|
List<String> cssMailList = new ArrayList<>(CSS_EMAIL_LIST);
|
||||||
|
//查询商务邮件
|
||||||
|
List<SysUser> sysUsers = userService.listByRoleId(businessRoleId);
|
||||||
|
cssMailList.addAll(sysUsers.stream()
|
||||||
|
.map(SysUser::getEmail)
|
||||||
|
.filter(StringUtils::isNotEmpty)
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
|
||||||
|
this.sendPartnerMail(emailList.stream().distinct().collect(Collectors.toList()), dbProjectOrderInfo,cssMailList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1202,7 +1223,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendPartnerMail(List<String> toEmail, ProjectOrderInfo projectOrderInfo){
|
public void sendPartnerMail(List<String> toEmail, ProjectOrderInfo projectOrderInfo,List<String> toCssEmail){
|
||||||
if (CollUtil.isEmpty(toEmail)){
|
if (CollUtil.isEmpty(toEmail)){
|
||||||
log.info("发货邮件发送失败,收件人为空");
|
log.info("发货邮件发送失败,收件人为空");
|
||||||
return;
|
return;
|
||||||
|
|
@ -1217,7 +1238,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
|
||||||
TemplateMailUtil.MailTemplate.ORDER_PARTNER,Dict.create());
|
TemplateMailUtil.MailTemplate.ORDER_PARTNER,Dict.create());
|
||||||
}else{
|
}else{
|
||||||
TemplateMailUtil.sendTemplateMail(toEmail,title,
|
TemplateMailUtil.sendTemplateMail(toEmail,title,
|
||||||
TemplateMailUtil.MailTemplate.ORDER_PARTNER,Dict.create(),CSS_EMAIL_LIST);
|
TemplateMailUtil.MailTemplate.ORDER_PARTNER,Dict.create(),toCssEmail);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue