|
|
@ -263,7 +263,7 @@ |
|
|
lt=#{lt,jdbcType=DECIMAL},cmc_comment=#{cmcComment},saleType=#{saleType},pn=#{pn}, |
|
|
lt=#{lt,jdbcType=DECIMAL},cmc_comment=#{cmcComment},saleType=#{saleType},pn=#{pn}, |
|
|
awb_bl=#{awbBl},shipping_number=#{shippingNumber},forwarder_info=#{forwarderInfo},currency=#{currency}, |
|
|
awb_bl=#{awbBl},shipping_number=#{shippingNumber},forwarder_info=#{forwarderInfo},currency=#{currency}, |
|
|
tp=#{tp,jdbcType=DECIMAL},ttl_amount=#{ttlAmount,jdbcType=DECIMAL},sum_price=#{sumPrice,jdbcType=DECIMAL}, |
|
|
tp=#{tp,jdbcType=DECIMAL},ttl_amount=#{ttlAmount,jdbcType=DECIMAL},sum_price=#{sumPrice,jdbcType=DECIMAL}, |
|
|
so=#{so},upc=#{upc},remark=#{remark},modifyFlag=#{modifyFlag},modifyQtyFlag=#{modifyQtyFlag},surplus_qty=#{qty},vat=#{vat},roll=#{roll},carton=#{carton} |
|
|
|
|
|
|
|
|
so=#{so},upc=#{upc},remark=#{remark},modifyFlag=#{modifyFlag},modifyQtyFlag=#{modifyQtyFlag},surplus_qty=#{qty,jdbcType=DECIMAL},vat=#{vat},roll=#{roll},carton=#{carton} |
|
|
where |
|
|
where |
|
|
site=#{site} and delNo=#{delNo} and item_no=#{itemNo} |
|
|
site=#{site} and delNo=#{delNo} and item_no=#{itemNo} |
|
|
</update> |
|
|
</update> |
|
|
@ -547,45 +547,45 @@ create_by,create_date,update_by,update_date |
|
|
</select> |
|
|
</select> |
|
|
|
|
|
|
|
|
<select id="getDefaultEcssDeclarationDetailData" resultType="EcssDeclarationDetailData"> |
|
|
<select id="getDefaultEcssDeclarationDetailData" resultType="EcssDeclarationDetailData"> |
|
|
-- 修复重复计算净重的问题:使用子查询先计算每个hsCode的数量和总净重,然后按比例分配 |
|
|
|
|
|
WITH HsCodeQty AS ( |
|
|
|
|
|
-- 先计算每个hsCode的总数量 |
|
|
|
|
|
SELECT b.hsCode, b.hsCodeDesc, SUM(a.qty) as totalQty |
|
|
|
|
|
FROM ecss_CoDelPalletDetail a |
|
|
|
|
|
LEFT JOIN part b ON a.site=b.site AND a.part_no=b.part_no |
|
|
|
|
|
WHERE a.site=#{site} AND a.delNo=#{delNo} AND a.bu_no=#{buNo} |
|
|
|
|
|
GROUP BY b.hsCode, b.hsCodeDesc |
|
|
|
|
|
), |
|
|
|
|
|
TotalWeight AS ( |
|
|
|
|
|
-- 计算总净重(不重复) |
|
|
|
|
|
SELECT SUM(net_weight) as totalNetWeight |
|
|
|
|
|
FROM ecss_CoDelBoxList |
|
|
|
|
|
WHERE site=#{site} AND delNo=#{delNo} AND bu_no=#{buNo} |
|
|
|
|
|
), |
|
|
|
|
|
TotalQty AS ( |
|
|
|
|
|
-- 计算总数量 |
|
|
|
|
|
SELECT SUM(qty) as allQty |
|
|
|
|
|
FROM ecss_CoDelPalletDetail |
|
|
|
|
|
WHERE site=#{site} AND delNo=#{delNo} AND bu_no=#{buNo} |
|
|
|
|
|
|
|
|
-- 修复净重计算问题:按数量比例分配箱子净重,避免重复计算 |
|
|
|
|
|
-- 一个箱子(BoxList)可能包含多个零件(PalletDetail),这些零件可能有相同的hsCode |
|
|
|
|
|
-- 需要按每个零件的数量占该箱子总数量的比例来分配净重 |
|
|
|
|
|
WITH BoxDetail AS ( |
|
|
|
|
|
-- 计算每个箱子中每个零件的数量及其占比 |
|
|
|
|
|
SELECT |
|
|
|
|
|
d.site, |
|
|
|
|
|
d.bu_no, |
|
|
|
|
|
d.delNo, |
|
|
|
|
|
d.seq_no, |
|
|
|
|
|
p.hsCode, |
|
|
|
|
|
p.hsCodeDesc, |
|
|
|
|
|
d.qty, |
|
|
|
|
|
b.net_weight, |
|
|
|
|
|
-- 计算该零件数量占该箱子总数量的比例 |
|
|
|
|
|
CASE |
|
|
|
|
|
WHEN SUM(d.qty) OVER (PARTITION BY d.site, d.bu_no, d.delNo, d.seq_no) > 0 |
|
|
|
|
|
THEN d.qty * 1.0 / SUM(d.qty) OVER (PARTITION BY d.site, d.bu_no, d.delNo, d.seq_no) |
|
|
|
|
|
ELSE 0 |
|
|
|
|
|
END as qtyRatio |
|
|
|
|
|
FROM ecss_CoDelPalletDetail d |
|
|
|
|
|
LEFT JOIN part p ON d.site=p.site AND d.part_no=p.part_no |
|
|
|
|
|
LEFT JOIN ecss_CoDelBoxList b ON d.site=b.site AND d.bu_no=b.bu_no AND d.delNo=b.delNo AND d.seq_no=b.item_no |
|
|
|
|
|
WHERE d.site=#{site} AND d.delNo=#{delNo} AND d.bu_no=#{buNo} |
|
|
) |
|
|
) |
|
|
SELECT |
|
|
SELECT |
|
|
#{site} as site, |
|
|
#{site} as site, |
|
|
h.hsCode, |
|
|
|
|
|
h.hsCodeDesc, |
|
|
|
|
|
h.totalQty as qty, |
|
|
|
|
|
-- 按数量比例分配净重:(该hsCode的数量 / 总数量) * 总净重 |
|
|
|
|
|
CASE |
|
|
|
|
|
WHEN tq.allQty > 0 THEN CONVERT(DECIMAL(20,2), (h.totalQty * tw.totalNetWeight) / tq.allQty) |
|
|
|
|
|
ELSE 0 |
|
|
|
|
|
END as NetWeight, |
|
|
|
|
|
|
|
|
hsCode, |
|
|
|
|
|
hsCodeDesc, |
|
|
|
|
|
SUM(qty) as qty, |
|
|
|
|
|
-- 按数量比例分配净重后汇总 |
|
|
|
|
|
CONVERT(DECIMAL(20,2), SUM(ISNULL(net_weight, 0) * qtyRatio)) as NetWeight, |
|
|
'CNY' as currency, |
|
|
'CNY' as currency, |
|
|
'中国' as madeArea, |
|
|
'中国' as madeArea, |
|
|
#{destination} as destination, |
|
|
#{destination} as destination, |
|
|
'南通其他' as sourceArea, |
|
|
'南通其他' as sourceArea, |
|
|
'照章征免' as levy |
|
|
'照章征免' as levy |
|
|
FROM HsCodeQty h |
|
|
|
|
|
CROSS JOIN TotalWeight tw |
|
|
|
|
|
CROSS JOIN TotalQty tq |
|
|
|
|
|
|
|
|
FROM BoxDetail |
|
|
|
|
|
GROUP BY hsCode, hsCodeDesc |
|
|
</select> |
|
|
</select> |
|
|
|
|
|
|
|
|
<select id="getDefaultEcssDeclarationDetailData2" resultType="EcssDeclarationDetailData"> |
|
|
<select id="getDefaultEcssDeclarationDetailData2" resultType="EcssDeclarationDetailData"> |
|
|
|