From 436bfabf91cdfbbab6e1535bf7e3b80b61697b42 Mon Sep 17 00:00:00 2001 From: linfso Date: Thu, 11 Jul 2024 05:01:19 +0800 Subject: [PATCH] md --- .../impl/EmisTmsScanRecordServiceImpl.java | 231 ++++++++++++++++++ 1 file changed, 231 insertions(+) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java index 55f426fa6..6bb15e57f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java @@ -415,6 +415,48 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm continue; } + // 到件扫描/报关扫描/清关扫描/发件扫描 - 需要支持扫描 合包条码 + if( + scanType.equals(ScanType.ARRIVAL.opCode) + || scanType.equals(ScanType.DEPARTURE.opCode) + || scanType.equals(ScanType.CLEARANCE.opCode) + || scanType.equals(ScanType.DECLEARE.opCode) ){ + if(scanBillCode.startsWith("H")){ + // 判断是否是合包号 + EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(scanBillCode); + if(emisTmsPack!=null) { + try { + // 合包发件扫描 + if( scanType.equals(ScanType.DEPARTURE.opCode) + || scanType.equals(ScanType.CLEARANCE.opCode) + || scanType.equals(ScanType.DECLEARE.opCode) + ) + { + return doPackScanSendDoing(scanType, itemList, emisTmsPack, scanDataItem, scanDate); + } + // 合包到件扫描 + else if(scanType.equals(ScanType.ARRIVAL.opCode)) + { + return doPackScanArrivalDoing(scanType, itemList, emisTmsPack, scanDataItem, scanDate); + } + } catch (EmisBizError emisBizError) { + emisBizError.printStackTrace(); + // 返回原始数据返回 + ScanResultItem scanResultItem = new ScanResultItem(); + scanResultItem.setBillCode(billCodeInStr); + scanResultItem.getData().putAll(scanDataItem); + scanResultItem.setMessage(emisBizError.getMessage()); + scanResultItem.setErrorCode(emisBizError.getErrorCode()); + itemList.add(scanResultItem); + return itemList; + } + + } + } + } + + + // 返回原始数据返回 ScanResultItem scanResultItem = new ScanResultItem(); scanResultItem.setBillCode(scanBillCode); @@ -970,6 +1012,195 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } + + /** + * 合包中途发件扫描 + * @param itemList + * @param emisTmsPack + * @param scanDataItem + * @param scanDate + * @return + * @throws EmisBizError + */ + public List doPackScanSendDoing(String scanType,List itemList, EmisTmsPack emisTmsPack,Map scanDataItem,Date scanDate) throws EmisBizError { + + // 检查数据 合包号,重量 + String packNo=emisTmsPack.getPackNo(); + String scanWeightStr = MapUtils.getString(scanDataItem,"scanWeight",null); + + String preOrNextStationCode = MapUtils.getString(scanDataItem,"preOrNextStationCode",null); + if(StringUtils.isEmpty(preOrNextStationCode)) { + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"下一站必填"); + } + + // 获取合包内件 + List listPackDtl=emisTmsPackDtlMapper.selectPackDtlListByPackNo(packNo); + // 内件处理 + for (EmisTmsPackDtl emisTmsPackDtl : listPackDtl) { + // 返回原始数据返回 + ScanResultItem scanResultItem = new ScanResultItem(); + scanResultItem.setBillCode(emisTmsPackDtl.getBillCode()); + scanResultItem.getData().putAll(scanDataItem); + + // 获取主单号 + String mainBillCode = emisTmsPackDtl.getMainBillCode(); + + // 已签收不允许扫描 + boolean isSign = checkWaybillIsSign(mainBillCode); + if (isSign) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage("已签收"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_HAS_SIGN.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 获取订单数据 + EmisWaybill emisWaybill = getWaybillByBillCode(mainBillCode); + + // 货物不在当前网点不允许扫描 + if(!getCurrentUser().getOwnerSiteCode().equals(emisWaybill.getCurrentSiteCode())){ + scanResultItem.setResult("fail"); + scanResultItem.setMessage("运单不在当前网点"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_HAS_PACK.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 生成扫描记录 + EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); + emisTmsScanRecord.setBillCode(emisTmsPackDtl.getBillCode()); + emisTmsScanRecord.setMainBillCode(emisWaybill.getBillCode()); + emisTmsScanRecord.setOrderSn(emisWaybill.getOrderSn()); + emisTmsScanRecord.setWeight(emisWaybill.getBillWeight()); + + // 获取下一网点 + EmisSite site=getSiteByCode(preOrNextStationCode); + emisTmsScanRecord.setPreOrNextStationCode(preOrNextStationCode); + emisTmsScanRecord.setPreOrNextStation(site.getSiteName()); + emisTmsScanRecord.setPreOrNextStationPhone(site.getPhone()); + + emisTmsScanRecord.setScanType(scanType); + emisTmsScanRecord.setScanDate(scanDate); + emisTmsScanRecord.setBagNo(packNo); + + // 填充公共数据 + this.fillBillBaseData(emisTmsScanRecord); + + emisTmsScanRecordMapper.insertEmisTmsScanRecord(emisTmsScanRecord); + + // 下一站点 + changeWaybillNextSite(emisTmsScanRecord.getMainBillCode(),preOrNextStationCode); + + // 修改主运单状态,子单做合包扫描,主单不变化 +// this.changeWaybillStatus(mainBillCode, ScanType.CO_PACKING.opCode); + scanResultItem.getData().put("billWeight", emisWaybill.getBillWeight()); + scanResultItem.getData().put("totalVolume", emisWaybill.getTotalVolume()); + scanResultItem.getData().put("parcelQty", emisWaybill.getParcelQty()); + scanResultItem.setResult("success"); + scanResultItem.setErrorCode(EmisBizErrorType.SUCCESS.errorCode); + scanResultItem.setMessage("操作成功"); + itemList.add(scanResultItem); + + } + + // 更新合包信息 + emisTmsPack.setPackNo(packNo); + emisTmsPack.setNextSiteCode(preOrNextStationCode); + emisTmsPackMapper.updateEmisTmsPackByPackNo(emisTmsPack); + + return itemList; + } + + + /** + * 合包中途到件扫描 + * @param itemList + * @param emisTmsPack + * @param scanDataItem + * @param scanDate + * @return + * @throws EmisBizError + */ + public List doPackScanArrivalDoing(String scanType,List itemList, EmisTmsPack emisTmsPack,Map scanDataItem,Date scanDate) throws EmisBizError { + + // 检查数据 合包号,重量 + String packNo=emisTmsPack.getPackNo(); + String scanWeightStr = MapUtils.getString(scanDataItem,"scanWeight",null); + + // 获取合包内件 + List listPackDtl=emisTmsPackDtlMapper.selectPackDtlListByPackNo(packNo); + // 内件处理 + for (EmisTmsPackDtl emisTmsPackDtl : listPackDtl) { + // 返回原始数据返回 + ScanResultItem scanResultItem = new ScanResultItem(); + scanResultItem.setBillCode(emisTmsPackDtl.getBillCode()); + scanResultItem.getData().putAll(scanDataItem); + + // 获取主单号 + String mainBillCode = emisTmsPackDtl.getMainBillCode(); + + // 已签收不允许扫描 + boolean isSign = checkWaybillIsSign(mainBillCode); + if (isSign) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage("已签收"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_HAS_SIGN.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 获取订单数据 + EmisWaybill emisWaybill = getWaybillByBillCode(mainBillCode); + + // 生成扫描记录 + EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); + + if(!StringUtils.isEmpty(emisWaybill.getCurrentSiteCode())) { + EmisSite site = getSiteByCode(emisWaybill.getCurrentSiteCode()); + // 获取上一站 + emisTmsScanRecord.setPreOrNextStationCode(site.getSiteCode()); + emisTmsScanRecord.setPreOrNextStation(site.getSiteName()); + emisTmsScanRecord.setPreOrNextStationPhone(site.getPhone()); + } + + emisTmsScanRecord.setBillCode(emisTmsPackDtl.getBillCode()); + emisTmsScanRecord.setMainBillCode(emisWaybill.getBillCode()); + emisTmsScanRecord.setOrderSn(emisWaybill.getOrderSn()); + emisTmsScanRecord.setWeight(emisWaybill.getBillWeight()); + + emisTmsScanRecord.setScanType(scanType); + emisTmsScanRecord.setScanDate(scanDate); + emisTmsScanRecord.setBagNo(packNo); + + // 填充公共数据 + this.fillBillBaseData(emisTmsScanRecord); + + emisTmsScanRecordMapper.insertEmisTmsScanRecord(emisTmsScanRecord); + + // 改变当前站点 + changeWaybillCurrentSite(emisWaybill.getBillCode(),emisTmsScanRecord.getScanSiteCode()); + + // 修改主运单状态,子单做合包扫描,主单不变化 +// this.changeWaybillStatus(mainBillCode, ScanType.CO_PACKING.opCode); + scanResultItem.getData().put("billWeight", emisWaybill.getBillWeight()); + scanResultItem.getData().put("totalVolume", emisWaybill.getTotalVolume()); + scanResultItem.getData().put("parcelQty", emisWaybill.getParcelQty()); + scanResultItem.setResult("success"); + scanResultItem.setErrorCode(EmisBizErrorType.SUCCESS.errorCode); + scanResultItem.setMessage("操作成功"); + itemList.add(scanResultItem); + + } + + // 到件不用更新合包信息 +// emisTmsPack.setPackNo(packNo); +// emisTmsPackMapper.updateEmisTmsPackByPackNo(emisTmsPack); + + return itemList; + } + + /** * 拆包扫描 * @param itemList