Browse Source

关务问题8.21

java8
han\hanst 5 months ago
parent
commit
0db526a3b3
  1. 1
      src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java
  2. 1
      src/main/java/com/xujie/sys/modules/ecss/entity/EcssDeclarationHeaderData.java
  3. 37
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java
  4. 23
      src/main/resources/mapper/ecss/CoDelMapper.xml
  5. BIN
      src/main/resources/templates/declaration-all-seal-template.xlsx
  6. BIN
      src/main/resources/templates/declaration-all-template.xlsx
  7. BIN
      src/main/resources/templates/declaration-packingList-template.xlsx

1
src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java

@ -17,4 +17,5 @@ public class EcssCoDelNotifyDetailData extends EcssCoDelNotifyDetail {
private String nocartons; private String nocartons;
private Integer addFlag; private Integer addFlag;
private Boolean modifyFlag; private Boolean modifyFlag;
private String hsCodeDesc;
} }

1
src/main/java/com/xujie/sys/modules/ecss/entity/EcssDeclarationHeaderData.java

@ -59,4 +59,5 @@ public class EcssDeclarationHeaderData extends EcssDeclarationHeader{
private String packageUnit; private String packageUnit;
private String fpremark; private String fpremark;
private String xdremark; private String xdremark;
private String declarationWeight;
} }

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

@ -144,6 +144,7 @@ public class CoDelServiceImpl implements CoDelService {
headerList.setOverseasShipper(inData.getOverseasShipper()); headerList.setOverseasShipper(inData.getOverseasShipper());
headerList.setOverseasAddress(inData.getOverseasAddress()); headerList.setOverseasAddress(inData.getOverseasAddress());
headerList.setCnative(inData.getCnative()); headerList.setCnative(inData.getCnative());
headerList.setSalesArea(inData.getSalesArea());
headerList.setCmcInvoice(cmcInvoice); headerList.setCmcInvoice(cmcInvoice);
headerList.setCreateBy(inData.getUsername()); headerList.setCreateBy(inData.getUsername());
coDelMapper.saveEcssCoDelNotifyHeader(headerList); coDelMapper.saveEcssCoDelNotifyHeader(headerList);
@ -974,15 +975,18 @@ public class CoDelServiceImpl implements CoDelService {
throw new RuntimeException("栈板记录数据格式错误: " + e.getMessage()); throw new RuntimeException("栈板记录数据格式错误: " + e.getMessage());
} }
} }
EcssCoDelPalletHeaderData data = new EcssCoDelPalletHeaderData();
/* EcssCoDelPalletHeaderData data = new EcssCoDelPalletHeaderData();
data.setDelNo(delNo); data.setDelNo(delNo);
data.setSite(site); data.setSite(site);
data.setBuNo(buNo); data.setBuNo(buNo);
// 先删除已存在的栈板记录 // 先删除已存在的栈板记录
coDelMapper.deletePalletHeader(data);
coDelMapper.deletePalletHeader(data);*/
EcssCoDelNotifyHeaderData notifyHeader = coDelMapper.getEcssCoDelNotifyHeader(site, delNo);
List<EcssCoDelPalletHeaderData> palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeader);
// 保存栈板头数据 // 保存栈板头数据
if (!palletRecordList.isEmpty()) { if (!palletRecordList.isEmpty()) {
int palletSeqNo = 0;
int palletSeqNo = palletHeaderDataList.stream().map(EcssCoDelPalletHeaderData::getSeqNo)
.max(Integer::compareTo).orElse(0); // 获取当前最大的seqNo
for (Map<String, Object> palletRecord : palletRecordList) { for (Map<String, Object> palletRecord : palletRecordList) {
palletSeqNo++; palletSeqNo++;
String palletNo = (String) palletRecord.get("pallet"); String palletNo = (String) palletRecord.get("pallet");
@ -1230,7 +1234,7 @@ public class CoDelServiceImpl implements CoDelService {
EcssDeclarationHeaderData defaultData = new EcssDeclarationHeaderData(); EcssDeclarationHeaderData defaultData = new EcssDeclarationHeaderData();
defaultData.setSite(inData.getSite()); defaultData.setSite(inData.getSite());
defaultData.setCustomsOfficeCode("3122240A4S"); defaultData.setCustomsOfficeCode("3122240A4S");
defaultData.setLocalShipper("91310115717861625K");
defaultData.setLocalShipper("保点贸易(上海)有限公司");
defaultData.setLocalShipAddress(notifyHeaderData.getLocalShipAddress()); defaultData.setLocalShipAddress(notifyHeaderData.getLocalShipAddress());
defaultData.setOverseasShipper(notifyHeaderData.getOverseasShipper()); defaultData.setOverseasShipper(notifyHeaderData.getOverseasShipper());
defaultData.setOverseasAddress(notifyHeaderData.getOverseasAddress()); defaultData.setOverseasAddress(notifyHeaderData.getOverseasAddress());
@ -1248,6 +1252,7 @@ public class CoDelServiceImpl implements CoDelService {
defaultData.setCreateBy(currentUser.getUsername()); defaultData.setCreateBy(currentUser.getUsername());
defaultData.setReceiveArea(notifyHeaderData.getCnative()); defaultData.setReceiveArea(notifyHeaderData.getCnative());
defaultData.setSalesArea(notifyHeaderData.getSalesArea()); defaultData.setSalesArea(notifyHeaderData.getSalesArea());
defaultData.setPackageType("再生木托/纸箱");
List<EcssDeclarationDetailData> rows = coDelMapper.getDefaultEcssDeclarationDetailData(inData.getSite(), inData.getDelNo(), List<EcssDeclarationDetailData> rows = coDelMapper.getDefaultEcssDeclarationDetailData(inData.getSite(), inData.getDelNo(),
notifyHeaderData.getCnative()); notifyHeaderData.getCnative());
if (rows.isEmpty()) { if (rows.isEmpty()) {
@ -1261,7 +1266,7 @@ public class CoDelServiceImpl implements CoDelService {
// 装箱数据 // 装箱数据
List<EcssCoDelPalletHeaderData> palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeaderData); List<EcssCoDelPalletHeaderData> palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeaderData);
List<Map> palletDetailList = coDelMapper.exportCoDelPalletDetail(notifyHeaderData); List<Map> palletDetailList = coDelMapper.exportCoDelPalletDetail(notifyHeaderData);
defaultData.setPackageQty(palletHeaderDataList.get(0).getPalletQty());
defaultData.setPackageQty(palletHeaderDataList.isEmpty()?0:palletHeaderDataList.get(0).getPalletQty());
defaultData.setBoxQty(palletDetailList.stream().mapToInt(o->Integer.parseInt(o.get("box_qty").toString())).sum()); defaultData.setBoxQty(palletDetailList.stream().mapToInt(o->Integer.parseInt(o.get("box_qty").toString())).sum());
map.put("row", defaultData); map.put("row", defaultData);
Map<String, EcssDeclarationDetailData> dataMap = rows.stream() Map<String, EcssDeclarationDetailData> dataMap = rows.stream()
@ -1652,6 +1657,13 @@ public class CoDelServiceImpl implements CoDelService {
for (int i = 0; i < detailList.size(); i++) { for (int i = 0; i < detailList.size(); i++) {
Map eorder = detailList.get(i); Map eorder = detailList.get(i);
eorder.put("row_num", i + 1); eorder.put("row_num", i + 1);
if (data.getDeclarationWeight()!=null && data.getDeclarationWeight().equals("显示")) {
eorder.put("net_weight", eorder.get("net_weight") != null ? eorder.get("net_weight").toString() : "");
eorder.put("weight_unit", eorder.get("weight_unit") != null ? eorder.get("weight_unit").toString() : "");
} else {
eorder.put("net_weight", "");
eorder.put("weight_unit", "");
}
eorder.put("hs_code_desc", data.getHsCodeDescType()!=null&& data.getHsCodeDescType().equals("N")?eorder.get("hsCodeDescEn"):eorder.get("hs_code_desc")); eorder.put("hs_code_desc", data.getHsCodeDescType()!=null&& data.getHsCodeDescType().equals("N")?eorder.get("hsCodeDescEn"):eorder.get("hs_code_desc"));
} }
template.addListVarAll(detailList); template.addListVarAll(detailList);
@ -1844,13 +1856,11 @@ public class CoDelServiceImpl implements CoDelService {
Map poNoMap = new HashMap<>(); Map poNoMap = new HashMap<>();
// 装箱数据 // 装箱数据
List<EcssCoDelPalletHeaderData> palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeader); List<EcssCoDelPalletHeaderData> palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeader);
if (palletHeaderDataList.isEmpty()) {
throw new RuntimeException("没有装箱数据");
}
// 最高的栈板 // 最高的栈板
Optional<EcssCoDelPalletHeaderData> palletHeaderData = palletHeaderDataList.stream().max(Comparator.comparing(EcssCoDelPalletHeaderData::getHeight));
Optional<EcssCoDelPalletHeaderData> palletHeaderData = palletHeaderDataList.isEmpty()? Optional.empty()
:palletHeaderDataList.stream().max(Comparator.comparing(EcssCoDelPalletHeaderData::getHeight));
// 总托数 // 总托数
Integer totalPlt = palletHeaderDataList.get(0).getPalletQty();
Integer totalPlt = palletHeaderDataList.isEmpty()?0:palletHeaderDataList.get(0).getPalletQty();
// 发货通知单明细 // 发货通知单明细
List<Map> detailList = coDelMapper.exportEcssCoDelNotifyDetail(data); List<Map> detailList = coDelMapper.exportEcssCoDelNotifyDetail(data);
// 获取poNo // 获取poNo
@ -1865,6 +1875,7 @@ public class CoDelServiceImpl implements CoDelService {
BigDecimal totalCartons = BigDecimal.valueOf(0.0); BigDecimal totalCartons = BigDecimal.valueOf(0.0);
BigDecimal grossWeight = BigDecimal.valueOf(0.0); BigDecimal grossWeight = BigDecimal.valueOf(0.0);
BigDecimal netWeight = BigDecimal.valueOf(0.0); BigDecimal netWeight = BigDecimal.valueOf(0.0);
BigDecimal rolls = BigDecimal.valueOf(0.0);
int totalQty = 0; int totalQty = 0;
List<Map> exportList = new ArrayList<>();//全部需要导出的明细 List<Map> exportList = new ArrayList<>();//全部需要导出的明细
EcssCoDelPalletHeaderData boxData = new EcssCoDelPalletHeaderData(); EcssCoDelPalletHeaderData boxData = new EcssCoDelPalletHeaderData();
@ -1894,6 +1905,7 @@ public class CoDelServiceImpl implements CoDelService {
eorder.put("gross_weight", isMiddleRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : ""); eorder.put("gross_weight", isMiddleRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : "");
eorder.put("net_weight", isMiddleRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : ""); eorder.put("net_weight", isMiddleRow ? ((BigDecimal) list.get(m).get("gross_weight")).setScale(2, RoundingMode.HALF_UP) : "");
eorder.put("rolls", ((BigDecimal)eorder.get("rolls")).setScale(0, RoundingMode.HALF_UP)); eorder.put("rolls", ((BigDecimal)eorder.get("rolls")).setScale(0, RoundingMode.HALF_UP));
rolls = rolls.add(eorder.get("rolls") !=null?new BigDecimal(eorder.get("rolls").toString()):BigDecimal.valueOf(0.0));
EcssCoDelNotifyDetailData nodifyData = notifyDetailMap.get(partNo); EcssCoDelNotifyDetailData nodifyData = notifyDetailMap.get(partNo);
// 只有RFID需要 // 只有RFID需要
String lossratio=""; String lossratio="";
@ -1932,6 +1944,7 @@ public class CoDelServiceImpl implements CoDelService {
template.addVar("total_netweight", (netWeight.add(palletWeight)).setScale(2, RoundingMode.HALF_UP)); template.addVar("total_netweight", (netWeight.add(palletWeight)).setScale(2, RoundingMode.HALF_UP));
template.addVar("total_box", totalCartons.setScale(0, RoundingMode.HALF_UP)); template.addVar("total_box", totalCartons.setScale(0, RoundingMode.HALF_UP));
template.addVar("total_qty", totalQty); template.addVar("total_qty", totalQty);
template.addVar("total_rolls", rolls.setScale(0, RoundingMode.HALF_UP));
// 下面是可选的或者手动维护的 // 下面是可选的或者手动维护的
// RFID需要的 // RFID需要的
if (notifyHeader.getBuNo().equals("01-Label") || notifyHeader.getBuNo().equals("03-RFID")) { if (notifyHeader.getBuNo().equals("01-Label") || notifyHeader.getBuNo().equals("03-RFID")) {
@ -1947,7 +1960,7 @@ public class CoDelServiceImpl implements CoDelService {
if (data.getMaterial()!=null && data.getMaterial()) { if (data.getMaterial()!=null && data.getMaterial()) {
template.addVar("RFIDBase", "RFID Base Material"); template.addVar("RFIDBase", "RFID Base Material");
template.addVar("HSCode", "& H.S.Code:"+stringInput(data.getHsCode())); template.addVar("HSCode", "& H.S.Code:"+stringInput(data.getHsCode()));
template.addVar("volume", palletHeaderData.map(ecssCoDelPalletHeaderData ->
template.addVar("volume", !palletHeaderData.isPresent()?"":palletHeaderData.map(ecssCoDelPalletHeaderData ->
ecssCoDelPalletHeaderData.getLength().setScale(2, RoundingMode.HALF_UP) ecssCoDelPalletHeaderData.getLength().setScale(2, RoundingMode.HALF_UP)
+ "*" + ecssCoDelPalletHeaderData.getWidth().setScale(2, RoundingMode.HALF_UP) + "*" + "*" + ecssCoDelPalletHeaderData.getWidth().setScale(2, RoundingMode.HALF_UP) + "*"
+ ecssCoDelPalletHeaderData.getHeight().setScale(2, RoundingMode.HALF_UP) + "m").orElse("")); + ecssCoDelPalletHeaderData.getHeight().setScale(2, RoundingMode.HALF_UP) + "m").orElse(""));
@ -1966,7 +1979,7 @@ public class CoDelServiceImpl implements CoDelService {
template.addVar("sellerLabel", "Name of seller Checkpoint Commercial (Shanghai) Co.. Ltd."); template.addVar("sellerLabel", "Name of seller Checkpoint Commercial (Shanghai) Co.. Ltd.");
} }
template.addVar("Shipping_Mark", stringInput(data.getShippingMark())); template.addVar("Shipping_Mark", stringInput(data.getShippingMark()));
template.addVar("Measurement", palletHeaderData.get().getLength().
template.addVar("Measurement", !palletHeaderData.isPresent()?"":palletHeaderData.get().getLength().
multiply(palletHeaderData.get().getWidth()).multiply(palletHeaderData.get().getHeight()). multiply(palletHeaderData.get().getWidth()).multiply(palletHeaderData.get().getHeight()).
multiply(BigDecimal.valueOf(totalPlt)).setScale(2, RoundingMode.HALF_UP)); multiply(BigDecimal.valueOf(totalPlt)).setScale(2, RoundingMode.HALF_UP));
template.addListVarAll(exportList); template.addListVarAll(exportList);

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

@ -118,8 +118,9 @@
select a.site,a.bu_no,a.delNo,a.item_no,a.salesOrder,a.salesOrder_item_no,a.customerPO,a.line,a.version,a.status,a.family, select a.site,a.bu_no,a.delNo,a.item_no,a.salesOrder,a.salesOrder_item_no,a.customerPO,a.line,a.version,a.status,a.family,
a.part_no,a.part_description,a.qty,a.lt,a.cmc_comment,a.saleType,a.awb_bl,a.shipping_number,a.forwarder_info, a.part_no,a.part_description,a.qty,a.lt,a.cmc_comment,a.saleType,a.awb_bl,a.shipping_number,a.forwarder_info,
a.currency,a.tp,a.ttl_amount,a.sum_price,a.so,a.upc,a.remark,a.erp_delItemNo,a.pn,CONVERT(DECIMAL(20, 0),a.nocartons) as nocartons, a.currency,a.tp,a.ttl_amount,a.sum_price,a.so,a.upc,a.remark,a.erp_delItemNo,a.pn,CONVERT(DECIMAL(20, 0),a.nocartons) as nocartons,
c.num_value as boxrolls,d.num_value as rollqty,w.num_value as boxweight,#{cmcInvoice} as cmcInvoice,a.modifyFlag
c.num_value as boxrolls,d.num_value as rollqty,w.num_value as boxweight,#{cmcInvoice} as cmcInvoice,a.modifyFlag,b.hsCodeDesc
from ecss_CoDelNotifydetail a from ecss_CoDelNotifydetail a
left join part b on a.site=b.site and a.part_no=b.part_no
left join part_sub_properties_value c on a.part_no=c.part_no and c.site=a.site and c.bu_no=a.bu_no left join part_sub_properties_value c on a.part_no=c.part_no and c.site=a.site and c.bu_no=a.bu_no
and c.record_type='ECSSPART' and c.code_no='BG001' and c.properties_item_no='BOXROLLS' and c.record_type='ECSSPART' and c.code_no='BG001' and c.properties_item_no='BOXROLLS'
left join part_sub_properties_value d on a.part_no=d.part_no and d.site=a.site and d.bu_no=a.bu_no left join part_sub_properties_value d on a.part_no=d.part_no and d.site=a.site and d.bu_no=a.bu_no
@ -166,9 +167,9 @@
</select> </select>
<insert id="saveEcssCoDelNotifyHeader" > <insert id="saveEcssCoDelNotifyHeader" >
insert into ecss_CoDelNotifyHeader(site,bu_no,delNo,ready_date,customer_name,Destination,shipping_mode,erp_flag,notify_status, insert into ecss_CoDelNotifyHeader(site,bu_no,delNo,ready_date,customer_name,Destination,shipping_mode,erp_flag,notify_status,
remark,createDate,createBy,cmc_invoice,overseasShipper,overseasAddress,cnative,localShipAddress)
remark,createDate,createBy,cmc_invoice,overseasShipper,overseasAddress,cnative,localShipAddress,salesArea)
values(#{site},#{buNo},#{delNo},#{readyDate},#{customerName},#{destination},#{shippingMode},'N',#{notifyStatus},#{remark},GetDate(), values(#{site},#{buNo},#{delNo},#{readyDate},#{customerName},#{destination},#{shippingMode},'N',#{notifyStatus},#{remark},GetDate(),
#{createBy},#{cmcInvoice},#{overseasShipper},#{overseasAddress},#{cnative},#{localShipAddress})
#{createBy},#{cmcInvoice},#{overseasShipper},#{overseasAddress},#{cnative},#{localShipAddress}, #{salesArea})
</insert> </insert>
<insert id="batchSaveEcssCoDelNotifyDetail"> <insert id="batchSaveEcssCoDelNotifyDetail">
insert into ecss_CoDelNotifyDetail (site,bu_no,delNo,item_no,salesOrder,salesOrder_item_no,customerPO,line,version, insert into ecss_CoDelNotifyDetail (site,bu_no,delNo,item_no,salesOrder,salesOrder_item_no,customerPO,line,version,
@ -534,10 +535,10 @@ create_by,create_date,update_by,update_date
<select id="getDefaultEcssDeclarationDetailData2" resultType="EcssDeclarationDetailData"> <select id="getDefaultEcssDeclarationDetailData2" resultType="EcssDeclarationDetailData">
select #{site} as site, b.hsCode,b.hsCodeDesc as hsCodeDesc,sum( a.qty) as qty ,sum(a.ttl_amount) as totalPrice, select #{site} as site, b.hsCode,b.hsCodeDesc as hsCodeDesc,sum( a.qty) as qty ,sum(a.ttl_amount) as totalPrice,
CONVERT(DECIMAL(20, 6),sum(a.ttl_amount)/sum( a.qty)) as unitPrice, CONVERT(DECIMAL(20, 6),sum(a.ttl_amount)/sum( a.qty)) as unitPrice,
'CNY' as currency,'中国' as madeArea,#{destination} as destination,'南通其他' as sourceArea ,'照章征免' as levy from
a.currency 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 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 where a.site =#{site} and a.delNo=#{delNo} and a.qty>0
GROUP BY b.hsCodeDesc,b.hsCode
GROUP BY b.hsCodeDesc,b.hsCode,a.currency
</select> </select>
@ -914,6 +915,12 @@ left join ecss_CoDelNotifyHeader noHeader on a.site=noHeader.site and a.delNo=no
<if test="query.name != null and query.name != ''"> <if test="query.name != null and query.name != ''">
AND a.name like '%'+#{query.name}+'%' AND a.name like '%'+#{query.name}+'%'
</if> </if>
<if test="query.customName != null and query.customName != ''">
AND a.customName like '%'+#{query.customName}+'%'
</if>
<if test="query.shippingMode != null and query.shippingMode != ''">
AND a.shippingMode like '%'+#{query.shippingMode}+'%'
</if>
<if test="query.type != null and query.type != ''"> <if test="query.type != null and query.type != ''">
AND a.type = #{query.type} AND a.type = #{query.type}
</if> </if>
@ -1042,12 +1049,12 @@ left join ecss_CoDelNotifyHeader noHeader on a.site=noHeader.site and a.delNo=no
<select id="selectPalletDetailList" resultType="java.util.Map"> <select id="selectPalletDetailList" resultType="java.util.Map">
select a.*,b.part_description,b.hsCode,b.upc,b.so select a.*,b.part_description,b.hsCode,b.upc,b.so
from ecss_CoDelPalletDetail a left join ( from ecss_CoDelPalletDetail a left join (
select a.site,a.bu_no,a.delNo,a.part_no,a.part_description,b.hsCode,a.upc,a.so
select a.site,a.bu_no,a.delNo,a.part_no,a.part_description,b.hsCode,a.upc,a.so,a.customerPO
from ecss_CoDelNotifydetail a from ecss_CoDelNotifydetail a
left join part b on a.site=b.site and a.part_no=b.part_no left join part b on a.site=b.site and a.part_no=b.part_no
where a.site=#{site} and a.bu_no=#{buNo} and a.delNo=#{delNo} where a.site=#{site} and a.bu_no=#{buNo} and a.delNo=#{delNo}
GROUP BY a.site,a.bu_no,a.delNo,a.part_no,a.part_description,b.hsCode,a.upc,a.so
) b on a.site=b.site and a.bu_no=b.bu_no and a.delNo=b.delNo and a.part_no=b.part_no
GROUP BY a.site,a.bu_no,a.delNo,a.part_no,a.part_description,b.hsCode,a.upc,a.so,a.customerPO
) b on a.site=b.site and a.bu_no=b.bu_no and a.delNo=b.delNo and a.part_no=b.part_no and b.customerPO=a.po_no
where a.site =#{site} and a.bu_no=#{buNo} and a.delNo=#{delNo} where a.site =#{site} and a.bu_no=#{buNo} and a.delNo=#{delNo}
<if test="seqNo != null and seqNo != ''"> <if test="seqNo != null and seqNo != ''">
and a.seq_no=#{seqNo} and a.seq_no=#{seqNo}

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

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

BIN
src/main/resources/templates/declaration-packingList-template.xlsx

Loading…
Cancel
Save