From bd95ed8408a9229b1541656a66bb7535ae1ee48f Mon Sep 17 00:00:00 2001 From: linfso Date: Mon, 24 Jun 2024 21:46:20 +0800 Subject: [PATCH] md --- .../erp/emis/mapper/EmisTmsPackDtlMapper.java | 2 + .../impl/EmisTmsScanRecordServiceImpl.java | 164 +++++++++++++----- .../resources/mapper/EmisTmsPackDtlMapper.xml | 8 + 3 files changed, 132 insertions(+), 42 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java index 06bbc8e52..ed271575a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java @@ -40,6 +40,8 @@ public interface EmisTmsPackDtlMapper extends BaseMapper public List selectEmisTmsPackDtlList(EmisTmsPackDtl emisTmsPackDtl); + public List selectPackDtlListByPackNo(String packNo); + /** * 检查是否重复 * 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 2302d81fe..67e10daa3 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 @@ -501,6 +501,24 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm } public List doPackScanCheck(List itemList,String[] billCodeArr,Map scanDataItem) throws EmisBizError { + + // 检查数据 合包号,重量 + String packNo = MapUtils.getString(scanDataItem,"bagNo",null); + Map mainBillMap = new HashMap<>(); + if(StringUtils.isAnyEmpty(packNo)) { + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"合包号不能为空"); + } + + // 判断合包号归属 + EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(packNo); + if(emisTmsPack==null){ + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"合包号不存在"); + } + + if(!emisTmsPack.getCreateSite().equals(getCurrentUser().getOwnerSiteCode())){ + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"合包号不属于该网点"); + } + // 子单号处理 for (String scanBillCode : billCodeArr) { // 返回原始数据返回 @@ -587,6 +605,7 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm } public List doUnPackScanCheck(List itemList,String[] billCodeArr,Map scanDataItem) throws EmisBizError { + // 子单号处理 for (String scanBillCode : billCodeArr) { // 返回原始数据返回 @@ -594,21 +613,32 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm scanResultItem.setBillCode(scanBillCode); scanResultItem.getData().putAll(scanDataItem); - // 检查组包信息是否存在 - int scanCnt=emisTmsPackDtlMapper.checkIsExists(scanBillCode); - if (scanCnt == 0) { + EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(scanBillCode); + if(emisTmsPack==null){ scanResultItem.setResult("fail"); - scanResultItem.setMessage("未组包"); - scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_ALLOW.errorCode); + scanResultItem.setMessage("合包不存在"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode); itemList.add(scanResultItem); return itemList; } - // 返回合包号 - EmisTmsPackDtl emisTmsPackDtl= emisTmsPackDtlMapper.selectEmisTmsPackDtlByBillCode(scanBillCode); - if(emisTmsPackDtl!=null) { - scanResultItem.getData().put("bagNo", emisTmsPackDtl.getPackNo()); - } + // 检查是否是合包,如果合包则做拆包处理 + +// // 检查组包信息是否存在 +// int scanCnt=emisTmsPackDtlMapper.checkIsExists(scanBillCode); +// if (scanCnt == 0) { +// scanResultItem.setResult("fail"); +// scanResultItem.setMessage("未组包"); +// scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_ALLOW.errorCode); +// itemList.add(scanResultItem); +// return itemList; +// } +// +// // 返回合包号 +// EmisTmsPackDtl emisTmsPackDtl= emisTmsPackDtlMapper.selectEmisTmsPackDtlByBillCode(scanBillCode); +// if(emisTmsPackDtl!=null) { +// scanResultItem.getData().put("bagNo", emisTmsPackDtl.getPackNo()); +// } scanResultItem.getData().put("billWeight", 0f); scanResultItem.getData().put("totalVolume", 0f); @@ -724,6 +754,17 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"下一站必填"); } + // 判断合包号归属 + EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(packNo); + if(emisTmsPack==null){ + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"合包号不存在"); + } + + if(!emisTmsPack.getCreateSite().equals(getCurrentUser().getOwnerSiteCode())){ + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"合包号不属于该网点"); + } + + // 判断是否必拆,不同国家必拆 boolean blUnPack=false; Map countryMap = new HashMap(); @@ -760,6 +801,8 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm // throw new EmisBizError(EmisBizErrorType.SCAN_HAS_SIGN, "已签收"); } + + // 已组包,不允许再组包 int scanCnt=emisTmsPackDtlMapper.checkIsExists(scanBillCode); if (scanCnt > 0) { @@ -773,6 +816,16 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm // 获取订单数据 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; + } + // 如果是缅甸允许主单扫描,其他都不允许 if("0095".equals(emisWaybill.getReceiveCountry()) ){ // 缅甸只允许主单 @@ -891,49 +944,76 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm scanResultItem.setBillCode(scanBillCode); scanResultItem.getData().putAll(scanDataItem); - // 检查是否存在 - EmisTmsPackDtl emisTmsPackDtl =emisTmsPackDtlMapper.selectEmisTmsPackDtlByBillCode(scanBillCode); - // 找不到组包信息 - if (emisTmsPackDtl == null) { + EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(scanBillCode); + if(emisTmsPack==null){ scanResultItem.setResult("fail"); - scanResultItem.setMessage("未组包"); - scanResultItem.setErrorCode(EmisBizErrorType.NOT_EXISTS.errorCode); + scanResultItem.setMessage("合包不存在"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode); itemList.add(scanResultItem); return itemList; } - packNo=emisTmsPackDtl.getPackNo(); - // 生成扫描记录 - EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); - emisTmsScanRecord.setBillCode(scanBillCode); - emisTmsScanRecord.setMainBillCode(emisTmsPackDtl.getMainBillCode()); + if( + !getCurrentUser().getOwnerSiteCode().equals(emisTmsPack.getCreateSite()) + && !getCurrentUser().getOwnerSiteCode().equals(emisTmsPack.getNextSiteCode()) + ){ + scanResultItem.setResult("fail"); + scanResultItem.setMessage("合包不在当前网点或下一网点,无权拆包"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_ALLOW.errorCode); + itemList.add(scanResultItem); + return itemList; + } - emisTmsScanRecord.setScanType(ScanType.UN_PACKING.opCode); - emisTmsScanRecord.setScanDate(scanDate); - emisTmsScanRecord.setBagNo(emisTmsPackDtl.getPackNo()); + // 检查是否存在 +// EmisTmsPackDtl emisTmsPackDtl =emisTmsPackDtlMapper.selectEmisTmsPackDtlByBillCode(scanBillCode); +// // 找不到组包信息 +// if (emisTmsPackDtl == null) { +// scanResultItem.setResult("fail"); +// scanResultItem.setMessage("未组包"); +// scanResultItem.setErrorCode(EmisBizErrorType.NOT_EXISTS.errorCode); +// itemList.add(scanResultItem); +// return itemList; +// } - // 填充公共数据 - this.fillBillBaseData(emisTmsScanRecord); +// packNo=emisTmsPackDtl.getPackNo(); - emisTmsScanRecordMapper.insertEmisTmsScanRecord(emisTmsScanRecord); + // 所有运单做拆包操作 + List packDtlList=emisTmsPackDtlMapper.selectPackDtlListByPackNo(packNo); + if(!CollectionUtil.isEmpty(packDtlList)){ - // 更新合包运单扫描状态 ,拆包 - emisTmsPackDtl.setBillCode(scanBillCode); - emisTmsPackDtl.setPackStatus("0"); - emisTmsPackDtl.setScanStatus("1"); - emisTmsPackDtl.setScanDate(emisTmsScanRecord.getScanDate()); - emisTmsPackDtl.setScanMan(emisTmsScanRecord.getScanManCode()); - emisTmsPackDtlMapper.updateScanStatus(emisTmsPackDtl); + for (EmisTmsPackDtl emisTmsPackDtl:packDtlList) { + // 生成扫描记录 + EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); + emisTmsScanRecord.setBillCode(emisTmsPackDtl.getBillCode()); + emisTmsScanRecord.setMainBillCode(emisTmsPackDtl.getMainBillCode()); + emisTmsScanRecord.setScanType(ScanType.UN_PACKING.opCode); + emisTmsScanRecord.setScanDate(scanDate); + emisTmsScanRecord.setBagNo(emisTmsPackDtl.getPackNo()); + + // 填充公共数据 + this.fillBillBaseData(emisTmsScanRecord); + + emisTmsScanRecordMapper.insertEmisTmsScanRecord(emisTmsScanRecord); + + // 更新合包运单扫描状态 ,拆包 + emisTmsPackDtl.setBillCode(scanBillCode); + emisTmsPackDtl.setPackStatus("0"); + emisTmsPackDtl.setScanStatus("1"); + emisTmsPackDtl.setScanDate(emisTmsScanRecord.getScanDate()); + emisTmsPackDtl.setScanMan(emisTmsScanRecord.getScanManCode()); + emisTmsPackDtlMapper.updateScanStatus(emisTmsPackDtl); + + // 修改主运单状态,子单做合包扫描,主单不变化 + scanResultItem.getData().put("billWeight", 0f); + scanResultItem.getData().put("totalVolume", 0f); + scanResultItem.getData().put("parcelQty", 0f); + scanResultItem.setResult("success"); + scanResultItem.setMessage("操作成功"); + itemList.add(scanResultItem); + } + } - // 修改主运单状态,子单做合包扫描,主单不变化 -// this.changeWaybillStatus(mainBillCode, ScanType.CO_PACKING.opCode); - scanResultItem.getData().put("billWeight", 0f); - scanResultItem.getData().put("totalVolume", 0f); - scanResultItem.getData().put("parcelQty", 0f); - scanResultItem.setResult("success"); - scanResultItem.setMessage("操作成功"); - itemList.add(scanResultItem); } // 更新合包为拆包状态,整包拆包 diff --git a/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml index 0705a0503..ab8f3d74f 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml @@ -79,6 +79,14 @@ order by create_time desc + + +