diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchController.java index 462686cd0..b83aa5f4e 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsSiteBatchController.java @@ -169,6 +169,16 @@ public class EmisTmsSiteBatchController extends EmisBaseController return AjaxResult.success(emisTmsSiteBatchService.selectEmisTmsSiteBatchById(id)); } + /** + * 获取一级网点TMS组批次详细信息(一个接口实现) + */ + @PreAuthorize("@ss.hasPermi('emis:emisTmsSiteBatch:detail')") + @GetMapping(value = "/detail/{id}") + public AjaxResult geDetail(@PathVariable("id") Long id) + { + return AjaxResult.success(emisTmsSiteBatchService.geDetail(id)); + } + /** * 新增一级网点TMS组批次 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchLoadingMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchLoadingMapper.java index 239252442..bee952547 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchLoadingMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchLoadingMapper.java @@ -34,7 +34,16 @@ public interface EmisTmsSiteBatchLoadingMapper extends BaseMapper selectEmisTmsSiteBatchLoadingList(EmisTmsSiteBatchLoading emisTmsSiteBatchLoading); + public List selectEmisTmsSiteBatchLoadingList( + EmisTmsSiteBatchLoading emisTmsSiteBatchLoading); + + /** + * 根据批次号查询装载信息列表 + * + * @param batchNo 批次号 + * @return 集合 + */ + public List selectEmisTmsSiteBatchLoadingByBatchNo(String batchNo); /** * 新增 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java index fd9687418..104f8cbfd 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java @@ -31,6 +31,13 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper */ public EmisTmsSiteBatch selectEmisTmsSiteBatchById(Long id); + /** + * 主键查询(包含明细和装载信息) + * + * @param id + * @return + */ + public EmisTmsSiteBatch selectEmisTmsSiteBatchWithDetailsById(Long id); public EmisTmsSiteBatch selectTmsSiteBatchByBatchNo(String batchNo); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 9752c1d6d..d99439c56 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -2844,7 +2844,7 @@ public class EmisBaseService { } } - if ("002".equals(waybill.getTransLineType()) && StringUtil.isNotBlank(waybill.getVirtualRemark())) { + if (("078".equals(waybill.getTransLineType()) || "002".equals(waybill.getTransLineType())) && StringUtil.isNotBlank(waybill.getVirtualRemark())) { Date sendDate = waybill.getSendDate(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date limitDate = null; @@ -4026,9 +4026,47 @@ public class EmisBaseService { continue; } - // 按productType分组 - Map> groupByProductType = lineRules.stream() - .collect(Collectors.groupingBy(EmisTransPlanRule::getProductType)); + // 按productType分组(支持productType和productTypeName为逗号分隔的多个类型,且一一对应,且每个rule只保留一个type和typeName) + Map> groupByProductType = new HashMap<>(); + for (EmisTransPlanRule rule : lineRules) { + if (rule.getProductType() != null) { + String[] types = rule.getProductType().split(","); + String[] typeNames = rule.getProductTypeName() != null ? rule.getProductTypeName().split(",") : new String[0]; + for (int i = 0; i < types.length; i++) { + String type = types[i].trim(); + if (!type.isEmpty()) { + EmisTransPlanRule newRule = new EmisTransPlanRule(); + BeanUtils.copyProperties(rule, newRule); + newRule.setProductType(type); + if (i < typeNames.length) { + newRule.setProductTypeName(typeNames[i].trim()); + } else { + newRule.setProductTypeName(null); + } + groupByProductType.computeIfAbsent(type, k -> new ArrayList<>()).add(newRule); + } + } + } + } + // 分组内去重(lineCode、productType、startSiteCode、nextSiteCode、supplierCode、startDate、endDate都相同只保留一条) + for (Map.Entry> entry : groupByProductType.entrySet()) { + List rules = entry.getValue(); + Set uniqueKeys = new HashSet<>(); + List deduped = new ArrayList<>(); + for (EmisTransPlanRule rule : rules) { + String key = (rule.getLineCode() == null ? "" : rule.getLineCode()) + "|" + + (rule.getProductType() == null ? "" : rule.getProductType()) + "|" + + (rule.getStartSiteCode() == null ? "" : rule.getStartSiteCode()) + "|" + + (rule.getNextSiteCode() == null ? "" : rule.getNextSiteCode()) + "|" + + (rule.getSupplierCode() == null ? "" : rule.getSupplierCode()) + "|" + + (rule.getStartDate() == null ? "" : rule.getStartDate().toString()) + "|" + + (rule.getEndDate() == null ? "" : rule.getEndDate().toString()); + if (uniqueKeys.add(key)) { + deduped.add(rule); + } + } + entry.setValue(deduped); + } // 处理每个productType分组 for (Map.Entry> productEntry : groupByProductType.entrySet()) { @@ -4840,7 +4878,7 @@ public class EmisBaseService { Map scanDatePromItem = new HashMap<>(); scanDatePromItem.put("billCode", emisWaybillSave.getBillCode()); - if ("002".equals(emisWaybillSave.getTransLineType())) { + if ("078".equals(emisWaybillSave.getTransLineType()) || "002".equals(emisWaybillSave.getTransLineType())) { scanDatePromItem.put("problemType", "173"); scanDatePromItem.put("remark", "出口虚拟面单"); } else { @@ -4891,9 +4929,13 @@ public class EmisBaseService { if (emisWaybillSave.getMasterBillCode().equals(emisWaybillSave.getBillCode())) { throw new EmisBizError(EmisBizErrorType.FAIL, "运单号主单号不能相同"); } - if (!"002".equals(emisWaybillSave.getTransLineType()) && !"012".equals(emisWaybillSave.getTransLineType()) - && !"014".equals(emisWaybillSave.getTransLineType())) { - throw new EmisBizError(EmisBizErrorType.FAIL, "虚拟单只支持线路为缅甸快递/缅甸快递进口/柬埔寨快递进口"); + Set allowedTypes = new HashSet<>(); + allowedTypes.add("078"); + allowedTypes.add("002"); + allowedTypes.add("012"); + allowedTypes.add("014"); + if (!allowedTypes.contains(emisWaybillSave.getTransLineType())) { + throw new EmisBizError(EmisBizErrorType.FAIL, "虚拟单只支持线路为香港-缅甸快递/缅甸快递/缅甸快递进口/柬埔寨快递进口"); } EmisWaybill masterWaybill = emisWaybillMapper .selectMasterWaybillByBillCode(emisWaybillSave.getMasterBillCode()); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java index 946b29d4e..0a564974e 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java @@ -105,4 +105,11 @@ public interface IEmisTmsSiteBatchService * @return */ int addAll(EmisTmsSiteBatch emisTmsSiteBatch) throws EmisBizError; + + /** + * + * @param id + * @return + */ + public EmisTmsSiteBatch geDetail(Long id); } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java index 042bfeab9..1a3132002 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java @@ -150,7 +150,7 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi emisTransPlanRule.setProductType(emisWaybill.getProductType()); List list = emisTransPlanRuleMapper.checkTransPlanRule(emisTransPlanRule); if (CollectionUtil.isEmpty(list)) { - throw new EmisBizError(EmisBizErrorType.FAIL, "组批次起始网点、下一网点、供应商与规则不匹配"); + throw new EmisBizError(EmisBizErrorType.FAIL, emisWaybill.getBillCode()+"组批次起始网点、下一网点、供应商与规则不匹配"); } } @@ -243,4 +243,9 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi return 1; } + @Override + public EmisTmsSiteBatch geDetail(Long id) { + return emisTmsSiteBatchMapper.selectEmisTmsSiteBatchWithDetailsById(id); + } + } diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchLoadingMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchLoadingMapper.xml index 34f9d16d5..63710b54b 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchLoadingMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchLoadingMapper.xml @@ -42,6 +42,12 @@ order by create_time desc + + + +