This commit is contained in:
linfso 2024-06-21 19:27:06 +08:00
parent 93c53e8f73
commit 689e3f39c6
3 changed files with 242 additions and 69 deletions

View File

@ -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","不存在"),

View File

@ -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<ScanResultItem> doProblemCheck(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> 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<ScanResultItem> doPackScan(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> 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<ScanResultItem> doUnPackScan(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> 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<ScanResultItem> doProblemScan(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> 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",

View File

@ -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("上传异常!");
}
}