Browse Source

TX修改

master
han\hanst 18 hours ago
parent
commit
5a099a80db
  1. 4
      src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java
  2. 4
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java
  3. 27
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java
  4. 55
      src/main/resources/mapper/ecss/CoDelMapper.xml
  5. BIN
      src/main/resources/templates/ALPHA/declaration-all-template.xlsx
  6. BIN
      src/main/resources/templates/ALPHA/export-goods-template.xlsx
  7. BIN
      src/main/resources/templates/YB/declaration-all-template.xlsx
  8. BIN
      src/main/resources/templates/YB/export-goods-template.xlsx

4
src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java

@ -149,6 +149,10 @@ public interface CoDelMapper {
List<EcssDeclarationDetailData> getDefaultEcssDeclarationDetailData( @Param("site") String site,@Param("delNo") String delNo,@Param("destination") String destination,@Param("buNo") String buNo);
List<EcssDeclarationDetailData> getDefaultEcssDeclarationDetailData2( @Param("site") String site,@Param("delNo") String delNo,@Param("destination") String destination,@Param("buNo") String buNo);
List<EcssDeclarationDetailData> getDefaultEcssDeclarationDetailDataTX( @Param("site") String site,@Param("delNo") String delNo,@Param("destination") String destination,@Param("buNo") String buNo);
List<EcssDeclarationDetailData> getDefaultEcssDeclarationDetailData2TX( @Param("site") String site,@Param("delNo") String delNo,@Param("destination") String destination,@Param("buNo") String buNo);
void saveEcssDeclarationHeader(EcssDeclarationHeaderData inData);
void saveEcssDeclarationDetail(EcssDeclarationDetailData inData);

4
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java

@ -561,7 +561,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
palletHeader.setSeqNo(palletSeqNo);
palletHeader.setPalletNo(palletNo);
palletHeader.setPalletQty(palletCount);
palletHeader.setVolume(volume);
palletHeader.setVolume(volume!= null ? volume : BigDecimal.ZERO);
if (outerSizeStr != null && !outerSizeStr.isEmpty()) {
String[] sizes = outerSizeStr.split("\\*");
@ -2243,7 +2243,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
Integer palletQty = palletQtyMap.get(palletSeqNo);
eorder.put("total_pallets", showPalletQty ? (palletQty != null ? palletQty : 1) : "");
eorder.put("volume", isFirstRow ? volume : "");
eorder.put("gross_weight", isFirstRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : "");
//eorder.put("gross_weight", isFirstRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : "");
eorder.put("net_weight",isFirstRow ? ((BigDecimal) list.get(m).get("net_weight")).setScale(2, RoundingMode.HALF_UP) : "");
// 构建artNo内容

27
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

@ -976,6 +976,33 @@ public class CoDelServiceImpl implements CoDelService {
List<Map> hsCodeList = coDelMapper.searchHsCodeList(paramData);
data.setUnit(!hsCodeList.isEmpty() ? (String) hsCodeList.get(0).get("unit") : "");
}
} else if (notifyHeaderData.getBuNo().equals("04-MHM")) {
List<EcssDeclarationDetailData> rows1 = coDelMapper.getDefaultEcssDeclarationDetailDataTX(inData.getSite(), inData.getDelNo(),
notifyHeaderData.getCnative(),inData.getBuNo());
Map<String, EcssDeclarationDetailData> dataMap = rows1.stream()
.collect(Collectors.toMap(o -> StringUtils.defaultString(o.getHsCodeDesc())
+ "$" + StringUtils.defaultString(o.getHsCode()) + "$"
+ StringUtils.defaultString(o.getBrand())+
"$"+ StringUtils.defaultString(o.getUnit()), o -> o, (oldValue, newValue) -> oldValue));
EcssDeclarationHeaderData declarationHeaderData = new EcssDeclarationHeaderData();
declarationHeaderData.setSite(notifyHeaderData.getSite());
declarationHeaderData.setDelNo(notifyHeaderData.getDelNo());
List<Map> detailList = coDelMapper.exportEcssCoDelNotifyDetail(declarationHeaderData);
rows2 = coDelMapper.getDefaultEcssDeclarationDetailData2TX(inData.getSite(), inData.getDelNo(),
notifyHeaderData.getCnative(),inData.getBuNo());
for (EcssDeclarationDetailData data : rows2){
String dataKey = StringUtils.defaultString(data.getHsCodeDesc())
+ "$" + StringUtils.defaultString(data.getHsCode()) + "$"
+ StringUtils.defaultString(data.getBrand())+
"$"+ StringUtils.defaultString(data.getUnit());
EcssDeclarationDetailData matchedData = dataMap.get(dataKey);
if (matchedData != null) {
data.setNetWeight(matchedData.getNetWeight());
} else {
data.setNetWeight(BigDecimal.ZERO);
log.warn("未匹配到净重数据: hsCodeDesc={}, hsCode={}, brand={}", data.getHsCodeDesc(), data.getHsCode(), data.getBrand());
}
}
} else {
Map<String, EcssDeclarationDetailData> dataMap = rows.stream()
.collect(Collectors.toMap(o -> StringUtils.defaultString(o.getHsCodeDesc()) + "$" + StringUtils.defaultString(o.getHsCode()) + "$"

55
src/main/resources/mapper/ecss/CoDelMapper.xml

@ -701,6 +701,61 @@ create_by,create_date,update_by,update_date
GROUP BY b.hsCodeDesc,b.hsCode,b.brand,LEFT(a.currency,3)
</select>
<select id="getDefaultEcssDeclarationDetailDataTX" resultType="EcssDeclarationDetailData">
-- 修复净重计算问题:按数量比例分配箱子净重,避免重复计算
-- 一个箱子(BoxList)可能包含多个零件(PalletDetail),这些零件可能有相同的hsCode
-- 需要按每个零件的数量占该箱子总数量的比例来分配净重
WITH BoxDetail AS (
-- 计算每个箱子中每个零件的数量及其占比
SELECT
d.site,
d.bu_no,
d.delNo,
d.seq_no,
p.hsCode,
p.hsCodeDesc,
p.brand,
p.ecss_umid as unit,
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
#{site} as site,
hsCode,
hsCodeDesc,
brand,
unit,
SUM(qty) as qty,
-- 按数量比例分配净重后汇总
CONVERT(DECIMAL(20,2), SUM(ISNULL(net_weight, 0) * qtyRatio)) as NetWeight,
'CNY' as currency,
'中国' as madeArea,
#{destination} as destination,
'南通其他' as sourceArea,
'照章征免' as levy
FROM BoxDetail
GROUP BY hsCode, hsCodeDesc, brand,unit
</select>
<select id="getDefaultEcssDeclarationDetailData2TX" resultType="EcssDeclarationDetailData">
select #{site} as site, b.hsCode,b.hsCodeDesc as hsCodeDesc,b.brand as brand,sum( a.qty) as qty ,sum(a.ttl_amount) as totalPrice,
CONVERT(DECIMAL(20, 6),sum(a.ttl_amount)/sum( a.qty)) as unitPrice,b.ecss_umid as unit,
LEFT(a.currency, 3) AS currency,'中国' as madeArea,#{destination} as destination,'南通其他' as sourceArea ,'照章征免' as levy from
ecss_CoDelNotifyDetail 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.qty>0 and a.bu_no=#{buNo}
GROUP BY b.hsCodeDesc,b.hsCode,b.brand,b.ecss_umid,LEFT(a.currency,3)
</select>
<insert id="saveEcssDeclarationHeader">
insert into ecss_declaration_header (site,declaration_no,customs_office_code,input_code,local_shipper,local_ship_address,ship_type,ship_date,submit_date,

BIN
src/main/resources/templates/ALPHA/declaration-all-template.xlsx

BIN
src/main/resources/templates/ALPHA/export-goods-template.xlsx

BIN
src/main/resources/templates/YB/declaration-all-template.xlsx

BIN
src/main/resources/templates/YB/export-goods-template.xlsx

Loading…
Cancel
Save