diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java index 3d054d820..7a8095892 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java @@ -9,12 +9,16 @@ public enum EmisBizErrorType { 0000:业务成功 9999:业务失败 - 扫描错误错误对照: + 扫描错误对照: ------------------ E601:参数错误 E602:运单不存在 - E603:已签收 - E604:重复扫描 + E603:重复扫描 + E604:已签收 + E605:已组包 + E606:不允许操作 + + */ @@ -34,9 +38,10 @@ public enum EmisBizErrorType { SCAN_PARAM_ERROR("E601","参数错误"), SCAN_NO_EXISTS("E602","运单不存在"), SCAN_REPEAT("E603","重复扫描"), - SCAN_NO_ALLOW("E604","不允许操作"), - SCAN_HAS_SIGN("E605","已签收"), - SCAN_HAS_PACK("E606","已组包"), + SCAN_HAS_SIGN("E604","已签收"), + SCAN_HAS_PACK("E605","已组包"), + SCAN_NO_ALLOW("E606","不允许操作"), + BILL_LOCK("E901", "已锁定"), NOT_EXISTS("E902","不存在"), 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 25d429e66..60a6e4256 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 @@ -162,7 +162,6 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm scanResultItem.setMessage("扫描单号必填"); itemList.add(scanResultItem); return itemList; -// throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,"扫描单号必填"); } billCodeInStr=WaybillHelper.formatQueryValue(billCodeInStr); @@ -202,6 +201,23 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } } + // 问题件要单独处理 + else if(ScanType.ISSUE.opCode.equals(scanType)) { + try { + return doProblemCheck(itemList,billCodeArr,scanDataItem); + } 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; + } + } + // 其他通用扫描方式 else { for (String scanBillCode : billCodeArr) { @@ -352,8 +368,25 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } } + // 问题件要单独处理 + else if(ScanType.ISSUE.opCode.equals(scanType)) { + try { + return doProblemScan(itemList,billCodeArr,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; + } + } + // 其他通用扫描方式 else { - // 其他扫描方式 + for (String scanBillCode : billCodeArr) { if(StringUtils.isEmpty(scanBillCode)){ @@ -398,7 +431,6 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } - // 生成扫描记录并填充公共数据 EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); // 填充扫描单号 @@ -469,7 +501,6 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode); itemList.add(scanResultItem); return itemList; -// throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "运单不存在"); } // 已签收不允许扫描 @@ -554,6 +585,76 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } + public List doProblemCheck(List itemList,String[] billCodeArr,Map scanDataItem) throws EmisBizError { + + String problemType = MapUtils.getString(scanDataItem,"problemType",null); + String notifySite = MapUtils.getString(scanDataItem,"notifySite",null); + String picUrl = MapUtils.getString(scanDataItem,"picUrl",null); + String remark = MapUtils.getString(scanDataItem,"remark",null); + + if(StringUtils.isAnyEmpty(problemType,notifySite,remark)) { + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"问题类型,通知网点,问题原因必填"); + } + + // 需要记录大类及原因 + String problemTypeName=""; + EmisProblemType emisProblemType =getEmisProblemTypebyTypeId(Integer.valueOf(problemType)); + if(emisProblemType!=null){ + problemTypeName=emisProblemType.getTypeName(); + } + + // 子单号处理 + for (String scanBillCode : billCodeArr) { + // 返回原始数据返回 + ScanResultItem scanResultItem = new ScanResultItem(); + scanResultItem.setBillCode(scanBillCode); + scanResultItem.getData().putAll(scanDataItem); + + // 判断单是否存在 + boolean isExists = checkWaybillIsExists(scanBillCode); + // 检查运单号是否存在 + if (!isExists) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage("运单不存在"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 获取主单号 + String mainBillCode = getMainBillCode(scanBillCode); + // 已签收不允许扫描 + boolean isSign = checkWaybillIsSign(mainBillCode); + if (isSign) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage("已签收"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_HAS_SIGN.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 同站点,同问题原因不允许重复登记,不同站点允许重复登记 + + scanResultItem.getData().put("billWeight", 0f); + scanResultItem.getData().put("totalVolume", 0f); + scanResultItem.getData().put("parcelQty", 0f); + scanResultItem.setResult("success"); + scanResultItem.setMessage("允许操作"); + itemList.add(scanResultItem); + } + return itemList; + } + + + /** + * 合包扫描 + * @param itemList + * @param billCodeArr + * @param scanDataItem + * @param scanDate + * @return + * @throws EmisBizError + */ public List doPackScan(List itemList,String[] billCodeArr,Map scanDataItem,Date scanDate) throws EmisBizError { // 检查数据 合包号,重量 @@ -723,6 +824,15 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } + /** + * 拆包扫描 + * @param itemList + * @param billCodeArr + * @param scanDataItem + * @param scanDate + * @return + * @throws EmisBizError + */ public List doUnPackScan(List itemList,String[] billCodeArr,Map scanDataItem,Date scanDate) throws EmisBizError { String packNo=null; @@ -789,6 +899,122 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm return itemList; } + + /** + * 问题件扫描 + * @param itemList + * @param billCodeArr + * @param scanDataItem + * @param scanDate + * @return + * @throws EmisBizError + */ + public List doProblemScan(List itemList,String[] billCodeArr,Map scanDataItem,Date scanDate) throws EmisBizError { + +// "billCode": "T001,T002,T002", +// "problemType": "问题件类型", +// "notifySite": "寄件或收件网点编码", +// "picUrl": "问题件图片", +// "remark": "问题备注", +// "scanDate": "2024-05-02 12:03:05", +// "scanWeight": "0.2" + + String problemType = MapUtils.getString(scanDataItem,"problemType",null); + String notifySite = MapUtils.getString(scanDataItem,"notifySite",null); + String picUrl = MapUtils.getString(scanDataItem,"picUrl",null); + String remark = MapUtils.getString(scanDataItem,"remark",null); + + if(StringUtils.isAnyEmpty(problemType,notifySite,remark)) { + throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"问题类型,通知网点,问题原因必填"); + } + + // 需要记录大类及原因 + String problemTypeName=""; + EmisProblemType emisProblemType =getEmisProblemTypebyTypeId(Integer.valueOf(problemType)); + if(emisProblemType!=null){ + problemTypeName=emisProblemType.getTypeName(); + } + + // 子单号处理 + for (String scanBillCode : billCodeArr) { + // 返回原始数据返回 + ScanResultItem scanResultItem = new ScanResultItem(); + scanResultItem.setBillCode(scanBillCode); + scanResultItem.getData().putAll(scanDataItem); + + // 判断单是否存在 + boolean isExists = checkWaybillIsExists(scanBillCode); + // 检查运单号是否存在 + if (!isExists) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage("运单不存在"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 获取主单号 + String mainBillCode = getMainBillCode(scanBillCode); + // 已签收不允许扫描 + boolean isSign = checkWaybillIsSign(mainBillCode); + if (isSign) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage("已签收"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_HAS_SIGN.errorCode); + itemList.add(scanResultItem); + return itemList; + } + + // 生成扫描记录 + EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); + emisTmsScanRecord.setBillCode(scanBillCode); + emisTmsScanRecord.setMainBillCode(mainBillCode); + + emisTmsScanRecord.setScanType(ScanType.ISSUE.opCode); + emisTmsScanRecord.setScanDate(scanDate); + emisTmsScanRecord.setRemark(problemTypeName); + + // 填充公共数据 + this.fillBillBaseData(emisTmsScanRecord); + + emisTmsScanRecordMapper.insertEmisTmsScanRecord(emisTmsScanRecord); + + // 登记问题件 + EmisWaybillProblemInfo waybillProblemInfo = new EmisWaybillProblemInfo(); + waybillProblemInfo.setBillCode(emisTmsScanRecord.getMainBillCode()); + waybillProblemInfo.setProblemType(Integer.valueOf(problemType)); + waybillProblemInfo.setProblemCause(remark); + + waybillProblemInfo.setSendSiteCode(notifySite); + + waybillProblemInfo.setRegisterDate(emisTmsScanRecord.getScanDate()); + waybillProblemInfo.setRegisterManCode(emisTmsScanRecord.getScanManCode()); + waybillProblemInfo.setRegisterSiteCode(emisTmsScanRecord.getScanSiteCode()); + waybillProblemInfo.setRegisterSaveDate(new Date()); + waybillProblemInfo.setProblemTitle(remark); + waybillProblemInfo.setFilePath(picUrl); + + waybillProblemInfo.setRegisterSiteName(emisTmsScanRecord.getScanSite()); + waybillProblemInfo.setRegisterManName(emisTmsScanRecord.getScanMan()); + + if (emisTmsScanRecord.getScanSiteCode().equals(notifySite)) { + waybillProblemInfo.setIsSendSiteRegister("1"); + } + registerWaybillProblemInfo(waybillProblemInfo); + + scanResultItem.getData().put("billWeight", 0); + scanResultItem.getData().put("totalVolume", 0); + scanResultItem.getData().put("parcelQty", 0); + scanResultItem.setResult("success"); + scanResultItem.setErrorCode(EmisBizErrorType.SUCCESS.errorCode); + scanResultItem.setMessage("操作成功"); + itemList.add(scanResultItem); + } + + + return itemList; + } + /** * 填充公共数据 * @param emisTmsScanRecord @@ -1138,58 +1364,6 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm changeWaybillCurrentSite(emisTmsScanRecord.getMainBillCode(),emisTmsScanRecord.getScanSiteCode()); } - // 问题件 - else if(ScanType.ISSUE.opCode.equals(scanType)){ - -// "billCode": "T001,T002,T002", -// "problemType": "问题件类型", -// "notifySite": "寄件或收件网点编码", -// "picUrl": "问题件图片", -// "remark": "问题备注", -// "scanDate": "2024-05-02 12:03:05", -// "scanWeight": "0.2" - - String problemType = MapUtils.getString(scanDataItem,"problemType",null); - String notifySite = MapUtils.getString(scanDataItem,"notifySite",null); - String picUrl = MapUtils.getString(scanDataItem,"picUrl",null); - String remark = MapUtils.getString(scanDataItem,"remark",null); - - if(StringUtils.isAnyEmpty(problemType,notifySite,remark)) { - throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"问题类型,通知网点,问题原因必填"); - } - - // 需要记录大类及原因 - String problemTypeName=""; - EmisProblemType emisProblemType =getEmisProblemTypebyTypeId(Integer.valueOf(problemType)); - if(emisProblemType!=null){ - problemTypeName=emisProblemType.getTypeName(); - } - emisTmsScanRecord.setRemark(problemTypeName); - - // 登记问题件 - EmisWaybillProblemInfo waybillProblemInfo = new EmisWaybillProblemInfo(); - waybillProblemInfo.setBillCode(emisTmsScanRecord.getMainBillCode()); - waybillProblemInfo.setProblemType(Integer.valueOf(problemType)); - waybillProblemInfo.setProblemCause(remark); - - waybillProblemInfo.setSendSiteCode(notifySite); - - waybillProblemInfo.setRegisterDate(emisTmsScanRecord.getScanDate()); - waybillProblemInfo.setRegisterManCode(emisTmsScanRecord.getScanManCode()); - waybillProblemInfo.setRegisterSiteCode(emisTmsScanRecord.getScanSiteCode()); - waybillProblemInfo.setRegisterSaveDate(new Date()); - waybillProblemInfo.setProblemTitle(remark); - waybillProblemInfo.setFilePath(picUrl); - - waybillProblemInfo.setRegisterSiteName(emisTmsScanRecord.getScanSite()); - waybillProblemInfo.setRegisterManName(emisTmsScanRecord.getScanMan()); - - if(emisTmsScanRecord.getScanSiteCode().equals(notifySite)){ - waybillProblemInfo.setIsSendSiteRegister("1"); - } - registerWaybillProblemInfo(waybillProblemInfo); - } - // 装车 else if(ScanType.LOADING.opCode.equals(scanType)){ // "billCode": "T001", diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index efe95a818..a5a1cff4a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -923,15 +923,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb try { emisTmsScanRecordService.scan(scanInfo); - } catch (EmisBizError emisBizError) { - emisBizError.printStackTrace(); -// return AjaxResult.error(emisBizError.getMessage()); - }catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); -// return AjaxResult.error("上传异常!"); } - - }