Browse Source

报关相关导出新版

java8
han\hanst 1 year ago
parent
commit
c94302592c
  1. 19
      src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java
  2. 1
      src/main/java/com/xujie/sys/modules/ecss/entity/EcssDeclarationDetailData.java
  3. 2
      src/main/java/com/xujie/sys/modules/ecss/entity/EcssDeclarationHeaderData.java
  4. 6
      src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java
  5. 324
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java
  6. BIN
      src/main/resources/templates/declaration-invoice2-template.xlsx

19
src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java

@ -371,6 +371,12 @@ public class CoDelController {
return R.ok();
}
@PostMapping("/downloadContract")
public R downloadContract(HttpServletResponse response, @RequestBody EcssDeclarationHeaderData data) {
coDelService.downloadContract(response, data);
return R.ok();
}
@PostMapping("/saveOneClickPacking")
public R saveOneClickPacking(@RequestBody EcssCoDelPalletHeaderData inData){
coDelService.saveOneClickPacking(inData);
@ -410,8 +416,8 @@ public class CoDelController {
@PostMapping("/saveWalMartOrderByExcel")
public R saveWalMartOrderByExcel(@RequestParam(value = "file") MultipartFile file, @ModelAttribute EcssWalMartOrder data){
coDelService.saveWalMartOrderByExcel(file, data);
return R.ok();
String msg = coDelService.saveWalMartOrderByExcel(file, data);
return R.ok().put("errorMsg", msg);
}
@PostMapping("/saveWalMartOrderData")
@ -426,4 +432,13 @@ public class CoDelController {
coDelService.deleteWalMartOrder(inData);
return R.ok();
}
/**
* 获取申报单的属性值
*/
@PostMapping("/getPropertiesListByDeclaration")
public R getPropertiesListByDeclaration(@RequestBody EcssDeclarationHeaderData inData) {
List<Map> rows = coDelService.getPropertiesListByDeclaration(inData);
return R.ok().put("rows", rows);
}
}

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

@ -6,4 +6,5 @@ import org.apache.ibatis.type.Alias;
@Data
@Alias("EcssDeclarationDetailData")
public class EcssDeclarationDetailData extends EcssDeclarationDetail{
private String brand;
}

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

@ -24,6 +24,7 @@ public class EcssDeclarationHeaderData extends EcssDeclarationHeader{
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date endDate;
private List<EcssDeclarationDetailData> detailList;
private List<EcssDeclarationDetailData> propertiesList;
private String brandType;
private String itemNo;
private Boolean upc;
@ -52,4 +53,5 @@ public class EcssDeclarationHeaderData extends EcssDeclarationHeader{
private String hsCodeDescType;// 选择品名中文还是英文
private Boolean goodsLabel;// 货物明细 RFID LABEL等
private Boolean boxChange;// 显示箱数零头
private String brand;
}

6
src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java

@ -105,6 +105,8 @@ public interface CoDelService {
void downloadExportGoods(HttpServletResponse response, EcssDeclarationHeaderData data);
void downloadContract(HttpServletResponse response, EcssDeclarationHeaderData data);
List<Map> getNotifyPartDetail(EcssDeclarationHeaderData inData);
void saveOneClickPacking(EcssCoDelPalletHeaderData inData);
@ -119,9 +121,11 @@ public interface CoDelService {
PageUtils searchWalMartOrderData(EcssWalMartOrder data);
void saveWalMartOrderByExcel(MultipartFile file, EcssWalMartOrder data);
String saveWalMartOrderByExcel(MultipartFile file, EcssWalMartOrder data);
void saveWalMartOrderData(EcssWalMartOrder data);
void deleteWalMartOrder(EcssWalMartOrder data);
List<Map> getPropertiesListByDeclaration(EcssDeclarationHeaderData inData);
}

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

@ -574,7 +574,7 @@ public class CoDelServiceImpl implements CoDelService {
if (row.getCell(5) == null) {
throw new RuntimeException("第" + j + "行的数量不能为空!");
}
excelData.setSeqNo(getIntegerCellValue(row, 0));
// 为对象赋值
excelData.setSite(inData.getSite()); // site
excelData.setBuNo(inData.getBuNo()); // bu
@ -603,66 +603,139 @@ public class CoDelServiceImpl implements CoDelService {
}
excelList.add(excelData);
}
if (excelList.get(0).getPalletQty() == 0 || excelList.get(0).getPalletQty() == null) {
throw new RuntimeException("导入失败:第一行的托数不能为0!");
// 如果是沃尔玛订单按照pn分组同一个pn是一个EcssCoDelPalletHeaderData
// 如果是非沃尔玛订单按照序号分组同一个序号是一个EcssCoDelPalletHeaderData
Map<String, List<EcssCoDelPalletData>> palletListMap = new HashMap<>();
Map<Integer, List<EcssCoDelPalletData>> palletListMap2 = new HashMap<>();
if (inData.getWalMartOrderFlag()!=null && inData.getWalMartOrderFlag().equals("Y")) {
for (EcssCoDelPalletData itemData : excelList){
if (palletListMap.containsKey(itemData.getPn())) {
palletListMap.get(itemData.getPn()).add(itemData);
} else {
List<EcssCoDelPalletData> palletDataList = new ArrayList<>();
palletDataList.add(itemData);
palletListMap.put(itemData.getPn(),palletDataList);
}
}
} else {
if (excelList.get(0).getPalletQty() == 0 || excelList.get(0).getPalletQty() == null) {
throw new RuntimeException("导入失败:第一行的托数不能为0!");
}
for (EcssCoDelPalletData itemData : excelList){
if (palletListMap2.containsKey(itemData.getSeqNo())) {
palletListMap2.get(itemData.getSeqNo()).add(itemData);
} else {
List<EcssCoDelPalletData> palletDataList = new ArrayList<>();
palletDataList.add(itemData);
palletListMap2.put(itemData.getSeqNo(),palletDataList);
}
}
}
// 关务物料属性
List<PartSubPropertiesValueData> propertiesValues = coDelMapper.getPropertiesListByTypeAndCodeNo(
inData.getSite(), "ECSSPART","BG001",inData.getBuNo());
EcssWalMartOrder task = new EcssWalMartOrder();
List<EcssCoDelPalletHeaderData> headerList = new ArrayList<>();
List<EcssCoDelPalletDetailData> detailList = new ArrayList<>();
int firstSeqNo = 0;
for (int i = 0; i < excelList.size(); i++) {
EcssCoDelPalletData thisData = excelList.get(i);
EcssCoDelPalletDetailData detailData = new EcssCoDelPalletDetailData();
//excel里面托数有值 那么建新抬头
if (thisData.getPalletQty() != null && thisData.getPalletQty() != 0) {
if (thisData.getLength() == null) {
throw new RuntimeException(thisData.getPalletQty() + "托那行缺少长");
}
if (thisData.getWidth() == null) {
throw new RuntimeException(thisData.getPalletQty() + "托那行缺少宽");
}
if (thisData.getHeight() == null) {
throw new RuntimeException(thisData.getPalletQty() + "托那行缺少高");
}
if (thisData.getVolume() == null) {
throw new RuntimeException(thisData.getPalletQty() + "托那行缺少体积");
}
if (thisData.getNetWeight() == null) {
throw new RuntimeException(thisData.getPalletQty() + "托那行缺少净重");
}
if (thisData.getGrossWeight() == null) {
throw new RuntimeException(thisData.getPalletQty() + "托那行缺少毛重");
int seqNo = 0;
// palletListMap里每一个key生成一个EcssCoDelPalletHeaderData每一个value生成一组EcssCoDelPalletDetailData
for (Map.Entry<String, List<EcssCoDelPalletData>> entry : palletListMap.entrySet()) {
seqNo++;
EcssCoDelPalletHeaderData headerData = new EcssCoDelPalletHeaderData();
headerData.setSite(inData.getSite());
headerData.setBuNo(inData.getBuNo());
headerData.setDelNo(inData.getDelNo());
headerData.setSeqNo(seqNo);
headerData.setPalletNo(inData.getDelNo() + "-" + String.format("%03d", seqNo));
headerData.setPalletQty(entry.getValue().get(0).getPalletQty());
headerData.setPalletRemark(entry.getValue().get(0).getPalletRemark());
headerData.setLength(entry.getValue().get(0).getLength());
headerData.setWidth(entry.getValue().get(0).getWidth());
headerData.setHeight(entry.getValue().get(0).getHeight());
headerData.setVolume(entry.getValue().get(0).getVolume());
headerData.setCreateBy(currentUser.getUsername());
int i=0;
BigDecimal totalGrossWeight = new BigDecimal(0);
BigDecimal boxQty = new BigDecimal(0);
for (EcssCoDelPalletData thisData : entry.getValue()) {
EcssCoDelPalletDetailData detailData = new EcssCoDelPalletDetailData();
detailData.setSite(thisData.getSite());
detailData.setBuNo(thisData.getBuNo());
detailData.setDelNo(thisData.getDelNo());
detailData.setSeqNo(seqNo);
detailData.setItemNo(i + 1);
i++;
detailData.setPartNo(thisData.getPartNo());
detailData.setPn(thisData.getPn());
detailData.setQty(thisData.getQty());
task.setSku(detailData.getPn());
task.setQty(detailData.getQty());
List<EcssWalMartOrder> orderDataList = sqlSession.selectList("ecssMapper" + "." + "searchWalMartOrderList", task);
totalGrossWeight = totalGrossWeight.add(orderDataList.isEmpty()? new BigDecimal(0):orderDataList.get(0).getGrossWeight());
detailData.setPoNo(thisData.getPoNo());
if (thisData.getBoxQty()!=null && thisData.getBoxQty().intValue()>0) {
detailData.setBoxQty(thisData.getBoxQty());
} else {
String partNo = thisData.getPartNo();
// 每一个物料加属性对应一个属性用来下面遍历发货通知单明细时获取具体属性值
Map<String, PartSubPropertiesValueData> partNoAndItemNoMap = propertiesValues.stream()
.collect(Collectors.toMap(o -> o.getPartNo() + "$" + o.getPropertiesItemNo(), o -> o));
PartSubPropertiesValueData propertiesWeight = partNoAndItemNoMap.get(partNo + "$ROLLWEIGHT");//每卷重量
PartSubPropertiesValueData propertiesRollQty = partNoAndItemNoMap.get(partNo + "$ROLLQTY");//每卷数量
PartSubPropertiesValueData propertiesBoxRolls = partNoAndItemNoMap.get(partNo + "$BOXROLLS");//每箱卷数
PartSubPropertiesValueData propertiesBoxWeight = partNoAndItemNoMap.get(partNo + "$BOXWEIGHT");//箱重量
if (propertiesWeight==null||propertiesRollQty==null||propertiesBoxRolls==null||propertiesBoxWeight==null) {
throw new RuntimeException("请先维护物料["+partNo+"]基本信息!");
}
detailData.setBoxQty(detailData.getQty().divide(
BigDecimal.valueOf(((double) propertiesRollQty.getNumValue().intValue() * propertiesBoxRolls.getNumValue().intValue())),2, BigDecimal.ROUND_HALF_UP));
}
firstSeqNo++;
EcssCoDelPalletHeaderData headerData = new EcssCoDelPalletHeaderData();
headerData.setSite(thisData.getSite());
headerData.setBuNo(thisData.getBuNo());
headerData.setDelNo(thisData.getDelNo());
headerData.setSeqNo(firstSeqNo);
headerData.setPalletNo(thisData.getDelNo() + "-" + String.format("%03d", firstSeqNo));
headerData.setPalletQty(thisData.getPalletQty());
headerData.setLength(thisData.getLength());
headerData.setWidth(thisData.getWidth());
headerData.setHeight(thisData.getHeight());
headerData.setVolume(thisData.getVolume());
headerData.setNetWeight(thisData.getNetWeight());
headerData.setGrossWeight(thisData.getGrossWeight());
headerData.setPalletRemark(thisData.getPalletRemark());
headerData.setCreateBy(currentUser.getUsername());
headerList.add(headerData);
detailData.setRolls(thisData.getRolls());
detailData.setCreateBy(currentUser.getUsername());
detailList.add(detailData);
boxQty = boxQty.add(detailData.getBoxQty()!=null?detailData.getBoxQty():new BigDecimal(0));
}
BigDecimal netWeight = totalGrossWeight.intValue()>0?totalGrossWeight.subtract(boxQty.divide(BigDecimal.valueOf(2),2,RoundingMode.HALF_UP)):new BigDecimal(0);
headerData.setGrossWeight(totalGrossWeight);
headerData.setNetWeight(netWeight);
headerList.add(headerData);
}
for (Map.Entry<Integer, List<EcssCoDelPalletData>> entry : palletListMap2.entrySet()) {
seqNo++;
EcssCoDelPalletHeaderData headerData = new EcssCoDelPalletHeaderData();
headerData.setSite(inData.getSite());
headerData.setBuNo(inData.getBuNo());
headerData.setDelNo(inData.getDelNo());
headerData.setSeqNo(seqNo);
headerData.setPalletNo(inData.getDelNo() + "-" + String.format("%03d", seqNo));
headerData.setPalletQty(entry.getValue().get(0).getPalletQty());
headerData.setPalletRemark(entry.getValue().get(0).getPalletRemark());
headerData.setLength(entry.getValue().get(0).getLength());
headerData.setWidth(entry.getValue().get(0).getWidth());
headerData.setHeight(entry.getValue().get(0).getHeight());
headerData.setVolume(entry.getValue().get(0).getVolume());
headerData.setGrossWeight(entry.getValue().get(0).getGrossWeight());
headerData.setNetWeight(entry.getValue().get(0).getNetWeight());
headerData.setCreateBy(currentUser.getUsername());
headerList.add(headerData);
int i=0;
for (EcssCoDelPalletData thisData : entry.getValue()) {
EcssCoDelPalletDetailData detailData = new EcssCoDelPalletDetailData();
detailData.setSite(thisData.getSite());
detailData.setBuNo(thisData.getBuNo());
detailData.setDelNo(thisData.getDelNo());
detailData.setSeqNo(seqNo);
detailData.setItemNo(i + 1);
i++;
detailData.setPartNo(thisData.getPartNo());
detailData.setPn(thisData.getPn());
detailData.setQty(thisData.getQty());
detailData.setPoNo(thisData.getPoNo());
detailData.setBoxQty(thisData.getBoxQty());
detailData.setRolls(thisData.getRolls());
detailData.setCreateBy(currentUser.getUsername());
detailList.add(detailData);
}
detailData.setSite(thisData.getSite());
detailData.setBuNo(thisData.getBuNo());
detailData.setDelNo(thisData.getDelNo());
detailData.setSeqNo(firstSeqNo);
detailData.setItemNo(i + 1);
detailData.setPartNo(thisData.getPartNo());
detailData.setPn(thisData.getPn());
detailData.setQty(thisData.getQty());
detailData.setPoNo(thisData.getPoNo());
detailData.setBoxQty(thisData.getBoxQty());
detailData.setRolls(thisData.getRolls());
detailData.setCreateBy(currentUser.getUsername());
detailList.add(detailData);
}
for (int i = 0; i < headerList.size(); i++) {
coDelMapper.saveCodelPalletHeader(headerList.get(i));
@ -779,10 +852,7 @@ public class CoDelServiceImpl implements CoDelService {
palletDetailData.setCreateBy(currentUser.getUsername());
palletDetailData.setPn(detailData.getPn());
if(inData.getWalMartOrderFlag()!=null && inData.getWalMartOrderFlag().equals("Y")) {
task.setSku(detailData.getPn());
task.setQty(detailData.getQty());
List<EcssWalMartOrder> orderDataList = sqlSession.selectList("ecssMapper" + "." + "searchWalMartOrderList", task);
palletDetailData.setQty(orderDataList.isEmpty()?detailData.getQty():orderDataList.get(0).getQty());
palletDetailData.setQty(detailData.getQty());
// 数量/每箱EA
palletDetailData.setBoxQty(BigDecimal.valueOf(Long.parseLong(detailData.getNocartons())));
} else {
@ -1027,6 +1097,15 @@ public class CoDelServiceImpl implements CoDelService {
try {
ExcelTemplate template = ExcelTemplate.load(new ClassPathResource("templates/declaration-elements-template.xlsx").getInputStream());
template.addVar("brandType", data.getBrandType());
Map<String, String> propertiesMap = new HashMap<>();
if (data.getPropertiesList()!=null && !data.getPropertiesList().isEmpty()) {
for (int i = 0; i < data.getPropertiesList().size(); i++) {
String key =data.getPropertiesList().get(i).getHsCode()+"&"+data.getPropertiesList().get(i).getHsCodeDesc();
if (!propertiesMap.containsKey(key)) {
propertiesMap.put(key, data.getPropertiesList().get(i).getBrand());
}
}
}
// 获取partNo列表
List<Map> partNos = coDelMapper.getDeclarationElements(data);
List<String> partNoList = partNos.stream().map(map -> map.get("partNo").toString()).collect(Collectors.toList());
@ -1049,6 +1128,10 @@ public class CoDelServiceImpl implements CoDelService {
List<PartSubPropertiesValueData> propertiesList = coDelMapper.getPropertiesListByPartAndCodeNo(inData);
StringBuilder properties = new StringBuilder();
for (int j = 0; j < propertiesList.size(); j++) {
if (propertiesList.get(j).getItemDesc().equals(data.getBrand()) && propertiesMap.containsKey(key)
&& !StringUtils.isBlank(propertiesMap.get(key))) {
propertiesList.get(j).setTextValue(propertiesMap.get(key));
}
if (j == propertiesList.size() - 1) {
properties.append(propertiesList.get(j).getItemDesc()).append(": ").append(propertiesList.get(j).getTextValue());
} else {
@ -1160,13 +1243,16 @@ public class CoDelServiceImpl implements CoDelService {
coDelMapper.updateEcssCoDelNotifyDetail(nData);
}
try {
ExcelTemplate template = ExcelTemplate.load(new ClassPathResource("templates/declaration-invoice-template.xlsx").getInputStream());
EcssCoDelNotifyHeaderData notifyHeader = coDelMapper.getEcssCoDelNotifyHeader(data.getSite(), data.getDelNo());
ExcelTemplate template = ExcelTemplate.load(new ClassPathResource(
notifyHeader.getBuNo().equals("04-MHM") || notifyHeader.getBuNo().equals("02-Hardtag")?
"templates/declaration-invoice2-template.xlsx":
"templates/declaration-invoice-template.xlsx").getInputStream());
template.setMoveShape(true);
template.setCellStyle(true);
template.setRangeStyle(true);
template.setPriceRight(true);
EcssCoDelNotifyHeaderData notifyHeader = coDelMapper.getEcssCoDelNotifyHeader(data.getSite(), data.getDelNo());
List<Map> addrs = coDelMapper.getCustomerAdd(notifyHeader.getCustomerName());
template.addVar("localShipper", notifyHeader.getCustomerName());
template.addVar("localShipAddress", addrs.get(0).get("cDeliverAdd"));
@ -1594,6 +1680,64 @@ public class CoDelServiceImpl implements CoDelService {
}
}
/**
* 导出合同
*/
@Override
public void downloadContract(HttpServletResponse response, EcssDeclarationHeaderData data) {
try {
ExcelTemplate template = ExcelTemplate.load(new ClassPathResource("templates/declaration-elements-template.xlsx").getInputStream());
template.addVar("brandType", data.getBrandType());
// 获取partNo列表
List<Map> partNos = coDelMapper.getDeclarationElements(data);
List<String> partNoList = partNos.stream().map(map -> map.get("partNo").toString()).collect(Collectors.toList());
// 根据partNo获取hsCode
List<Map> hsCodes = coDelMapper.getHsCodeByPartNo(data.getSite(), partNoList);
Map<String, Map> hsCodeMap = new HashMap<>();
for (int i = 0; i < hsCodes.size(); i++) {
Map eorder = hsCodes.get(i);
String key = eorder.get("hsCode")+"&"+eorder.get("hsCodeDesc");
if (hsCodeMap.containsKey(key)) {
hsCodeMap.get(key).put("sku", hsCodeMap.get(key).get("sku")+"\n "+eorder.get("sku"));
} else {
// hscode所有属性
PartSubPropertiesValueData inData = new PartSubPropertiesValueData();
inData.setSite(data.getSite());
inData.setBuNo(eorder.get("BuNo").toString());
inData.setCodeNo(eorder.get("codeNo").toString());
inData.setPartNo(eorder.get("hsCodeDesc").toString());
inData.setRecordType("ECSS");
List<PartSubPropertiesValueData> propertiesList = coDelMapper.getPropertiesListByPartAndCodeNo(inData);
StringBuilder properties = new StringBuilder();
for (int j = 0; j < propertiesList.size(); j++) {
if (j == propertiesList.size() - 1) {
properties.append(propertiesList.get(j).getItemDesc()).append(": ").append(propertiesList.get(j).getTextValue());
} else {
properties.append(propertiesList.get(j).getItemDesc()).append(": ").append(propertiesList.get(j).getTextValue()).append("\n");
}
}
eorder.put("properties",properties);
hsCodeMap.put(key, eorder);
}
}
List<Map> list = new ArrayList<>(hsCodeMap.values());
for (int i = 0; i < list.size(); i++) {
Map fMap = list.get(i);
fMap.put("content", "HS Code: "+fMap.get("hsCode")+
"\n品名: "+(data.getHsCodeDescType()!=null&&data.getHsCodeDescType().equals("N")?fMap.get("hsCodeDescEn"):fMap.get("hsCodeDesc"))+
"\n"+fMap.get("properties")+
"\n型号: "+fMap.get("sku"));
}
template.addListVarAll(list);
template.render(response.getOutputStream());
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=\"合同.xlsx\"");
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 一键装箱
*/
@ -1769,7 +1913,7 @@ public class CoDelServiceImpl implements CoDelService {
@Override
@Transactional
public void saveWalMartOrderByExcel(MultipartFile file, EcssWalMartOrder inData) {
public String saveWalMartOrderByExcel(MultipartFile file, EcssWalMartOrder inData) {
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
String site = coDelMapper.getSiteByBu(inData.getBuNo());
List<EcssWalMartOrder> excelList = new ArrayList<>();
@ -1799,6 +1943,7 @@ public class CoDelServiceImpl implements CoDelService {
// 获取行数
int rows = sheet.getPhysicalNumberOfRows();
// 遍历每一行从第二行开始
StringBuilder sb = new StringBuilder("第");
for (int j = 1; j < rows; j++) {
// 创建对象
EcssWalMartOrder task = new EcssWalMartOrder();
@ -1815,7 +1960,13 @@ public class CoDelServiceImpl implements CoDelService {
task.setQty(getNumericCellValueOrDefault(row, 2));
List<EcssWalMartOrder> orderDataList = sqlSession.selectList("ecssMapper" + "." + "searchWalMartOrderList", task);
if (!orderDataList.isEmpty()) {
throw new RuntimeException("第" + j + "行的SKU和数量已存在!");
if (sb.toString().length()>1) {
sb.append(",").append(j);
} else {
sb.append(j);
}
//throw new RuntimeException("第" + j + "行的SKU和数量已存在!");
continue;
}
task.setRolls(getNumericCellValueOrDefault(row, 3));
task.setGrossWeight(getNumericCellValueOrDefault(row, 4));
@ -1823,9 +1974,52 @@ public class CoDelServiceImpl implements CoDelService {
task.setCreateBy(currentUser.getUserDisplay());
excelList.add(task);
}
coDelMapper.batchSaveWalMartOrder(excelList);
if (!excelList.isEmpty()) {
coDelMapper.batchSaveWalMartOrder(excelList);
}
if (sb.toString().equals("第")) {
sb= new StringBuilder();
} else {
sb.append("行的SKU和数量已存在!");
}
return sb.toString();
} catch (Exception e) {
throw new RuntimeException("导入失败:" + e.getMessage());
}
}
@Override
public List<Map> getPropertiesListByDeclaration(EcssDeclarationHeaderData data) {
// 获取partNo列表
List<Map> partNos = coDelMapper.getDeclarationElements(data);
List<String> partNoList = partNos.stream().map(map -> map.get("partNo").toString()).collect(Collectors.toList());
// 根据partNo获取hsCode
List<Map> hsCodes = coDelMapper.getHsCodeByPartNo(data.getSite(), partNoList);
Map<String, Map> hsCodeMap = new HashMap<>();
for (int i = 0; i < hsCodes.size(); i++) {
Map eorder = hsCodes.get(i);
String key = eorder.get("hsCode")+"&"+eorder.get("hsCodeDesc");
if (hsCodeMap.containsKey(key)) {
hsCodeMap.get(key).put("sku", hsCodeMap.get(key).get("sku")+"\n "+eorder.get("sku"));
} else {
hsCodeMap.put(key, eorder);
}
}
List<Map> list = new ArrayList<>(hsCodeMap.values());
PartSubPropertiesValueData inData = new PartSubPropertiesValueData();
list.forEach(eorder -> {
inData.setSite(data.getSite());
inData.setBuNo(eorder.get("BuNo").toString());
inData.setCodeNo(eorder.get("codeNo").toString());
inData.setPartNo(eorder.get("hsCodeDesc").toString());
inData.setRecordType("ECSS");
List<PartSubPropertiesValueData> result = coDelMapper.getPropertiesListByPartAndCodeNo(inData);
result = result.stream().filter(item -> item.getItemDesc().equals(data.getBrand())).collect(Collectors.toList());
if (!result.isEmpty() && "Y".equals(result.get(0).getValueChooseFlag())) {
List<PlmPropertiesItemAvailableData> availableList = partInformationMapper.getAvailableValueList(result.get(0));
eorder.put("availableList", availableList);
}
});
return list;
}
}

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

Loading…
Cancel
Save