This commit is contained in:
linfso 2024-07-11 05:01:19 +08:00
parent 4a25d5e8d8
commit 436bfabf91

View File

@ -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<ScanResultItem> doPackScanSendDoing(String scanType,List<ScanResultItem> itemList, EmisTmsPack emisTmsPack,Map<String,Object> 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<EmisTmsPackDtl> 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<ScanResultItem> doPackScanArrivalDoing(String scanType,List<ScanResultItem> itemList, EmisTmsPack emisTmsPack,Map<String,Object> scanDataItem,Date scanDate) throws EmisBizError {
// 检查数据 合包号,重量
String packNo=emisTmsPack.getPackNo();
String scanWeightStr = MapUtils.getString(scanDataItem,"scanWeight",null);
// 获取合包内件
List<EmisTmsPackDtl> 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