This commit is contained in:
linfso 2024-06-24 21:46:20 +08:00
parent ebc7bcfdf1
commit bd95ed8408
3 changed files with 132 additions and 42 deletions

View File

@ -40,6 +40,8 @@ public interface EmisTmsPackDtlMapper extends BaseMapper<EmisTmsPackDtl>
public List<EmisTmsPackDtl> selectEmisTmsPackDtlList(EmisTmsPackDtl emisTmsPackDtl);
public List<EmisTmsPackDtl> selectPackDtlListByPackNo(String packNo);
/**
* 检查是否重复
*

View File

@ -501,6 +501,24 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
}
public List<ScanResultItem> doPackScanCheck(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> scanDataItem) throws EmisBizError {
// 检查数据 合包号,重量
String packNo = MapUtils.getString(scanDataItem,"bagNo",null);
Map<String,Integer> 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<ScanResultItem> doUnPackScanCheck(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> 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<EmisTmsPackDtl> 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);
}
// 更新合包为拆包状态,整包拆包

View File

@ -79,6 +79,14 @@
order by create_time desc
</select>
<select id="selectPackDtlListByPackNo" parameterType="String" resultMap="EmisTmsPackDtlResult">
<include refid="selectEmisTmsPackDtlVo"/>
<where>
del_flag='0' and pack_no=#{packNo}
</where>
</select>
<select id="checkUnique" parameterType="EmisTmsPackDtl" resultType="int">
select count(1) from emis_tms_pack_dtl
where del_flag='0'