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> 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 { 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) { 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 { public List<ScanResultItem> doUnPackScanCheck(List<ScanResultItem> itemList,String[] billCodeArr,Map<String,Object> scanDataItem) throws EmisBizError {
// 子单号处理 // 子单号处理
for (String scanBillCode : billCodeArr) { for (String scanBillCode : billCodeArr) {
// 返回原始数据返回 // 返回原始数据返回
@ -594,21 +613,32 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
scanResultItem.setBillCode(scanBillCode); scanResultItem.setBillCode(scanBillCode);
scanResultItem.getData().putAll(scanDataItem); scanResultItem.getData().putAll(scanDataItem);
// 检查组包信息是否存在 EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(scanBillCode);
int scanCnt=emisTmsPackDtlMapper.checkIsExists(scanBillCode); if(emisTmsPack==null){
if (scanCnt == 0) {
scanResultItem.setResult("fail"); scanResultItem.setResult("fail");
scanResultItem.setMessage("未组包"); scanResultItem.setMessage("合包不存在");
scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_ALLOW.errorCode); scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode);
itemList.add(scanResultItem); itemList.add(scanResultItem);
return itemList; 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("billWeight", 0f);
scanResultItem.getData().put("totalVolume", 0f); scanResultItem.getData().put("totalVolume", 0f);
@ -724,6 +754,17 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
throw new EmisBizError(EmisBizErrorType.SCAN_PARAM_ERROR,"下一站必填"); 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; boolean blUnPack=false;
Map countryMap = new HashMap(); Map countryMap = new HashMap();
@ -760,6 +801,8 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
// throw new EmisBizError(EmisBizErrorType.SCAN_HAS_SIGN, "已签收"); // throw new EmisBizError(EmisBizErrorType.SCAN_HAS_SIGN, "已签收");
} }
// 已组包,不允许再组包 // 已组包,不允许再组包
int scanCnt=emisTmsPackDtlMapper.checkIsExists(scanBillCode); int scanCnt=emisTmsPackDtlMapper.checkIsExists(scanBillCode);
if (scanCnt > 0) { if (scanCnt > 0) {
@ -773,6 +816,16 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
// 获取订单数据 // 获取订单数据
EmisWaybill emisWaybill = getWaybillByBillCode(mainBillCode); 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()) ){ if("0095".equals(emisWaybill.getReceiveCountry()) ){
// 缅甸只允许主单 // 缅甸只允许主单
@ -891,24 +944,49 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
scanResultItem.setBillCode(scanBillCode); scanResultItem.setBillCode(scanBillCode);
scanResultItem.getData().putAll(scanDataItem); scanResultItem.getData().putAll(scanDataItem);
// 检查是否存在 EmisTmsPack emisTmsPack=emisTmsPackMapper.selectEmisTmsPackByPackNo(scanBillCode);
EmisTmsPackDtl emisTmsPackDtl =emisTmsPackDtlMapper.selectEmisTmsPackDtlByBillCode(scanBillCode); if(emisTmsPack==null){
// 找不到组包信息
if (emisTmsPackDtl == null) {
scanResultItem.setResult("fail"); scanResultItem.setResult("fail");
scanResultItem.setMessage("未组包"); scanResultItem.setMessage("合包不存在");
scanResultItem.setErrorCode(EmisBizErrorType.NOT_EXISTS.errorCode); scanResultItem.setErrorCode(EmisBizErrorType.SCAN_NO_EXISTS.errorCode);
itemList.add(scanResultItem); itemList.add(scanResultItem);
return itemList; return itemList;
} }
packNo=emisTmsPackDtl.getPackNo();
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;
}
// 检查是否存在
// EmisTmsPackDtl emisTmsPackDtl =emisTmsPackDtlMapper.selectEmisTmsPackDtlByBillCode(scanBillCode);
// // 找不到组包信息
// if (emisTmsPackDtl == null) {
// scanResultItem.setResult("fail");
// scanResultItem.setMessage("未组包");
// scanResultItem.setErrorCode(EmisBizErrorType.NOT_EXISTS.errorCode);
// itemList.add(scanResultItem);
// return itemList;
// }
// packNo=emisTmsPackDtl.getPackNo();
// 所有运单做拆包操作
List<EmisTmsPackDtl> packDtlList=emisTmsPackDtlMapper.selectPackDtlListByPackNo(packNo);
if(!CollectionUtil.isEmpty(packDtlList)){
for (EmisTmsPackDtl emisTmsPackDtl:packDtlList) {
// 生成扫描记录 // 生成扫描记录
EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord(); EmisTmsScanRecord emisTmsScanRecord = new EmisTmsScanRecord();
emisTmsScanRecord.setBillCode(scanBillCode); emisTmsScanRecord.setBillCode(emisTmsPackDtl.getBillCode());
emisTmsScanRecord.setMainBillCode(emisTmsPackDtl.getMainBillCode()); emisTmsScanRecord.setMainBillCode(emisTmsPackDtl.getMainBillCode());
emisTmsScanRecord.setScanType(ScanType.UN_PACKING.opCode); emisTmsScanRecord.setScanType(ScanType.UN_PACKING.opCode);
emisTmsScanRecord.setScanDate(scanDate); emisTmsScanRecord.setScanDate(scanDate);
emisTmsScanRecord.setBagNo(emisTmsPackDtl.getPackNo()); emisTmsScanRecord.setBagNo(emisTmsPackDtl.getPackNo());
@ -927,7 +1005,6 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
emisTmsPackDtlMapper.updateScanStatus(emisTmsPackDtl); emisTmsPackDtlMapper.updateScanStatus(emisTmsPackDtl);
// 修改主运单状态,子单做合包扫描,主单不变化 // 修改主运单状态,子单做合包扫描,主单不变化
// this.changeWaybillStatus(mainBillCode, ScanType.CO_PACKING.opCode);
scanResultItem.getData().put("billWeight", 0f); scanResultItem.getData().put("billWeight", 0f);
scanResultItem.getData().put("totalVolume", 0f); scanResultItem.getData().put("totalVolume", 0f);
scanResultItem.getData().put("parcelQty", 0f); scanResultItem.getData().put("parcelQty", 0f);
@ -935,6 +1012,9 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
scanResultItem.setMessage("操作成功"); scanResultItem.setMessage("操作成功");
itemList.add(scanResultItem); itemList.add(scanResultItem);
} }
}
}
// 更新合包为拆包状态,整包拆包 // 更新合包为拆包状态,整包拆包
EmisTmsPack emisTmsPack = new EmisTmsPack(); EmisTmsPack emisTmsPack = new EmisTmsPack();

View File

@ -79,6 +79,14 @@
order by create_time desc order by create_time desc
</select> </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 id="checkUnique" parameterType="EmisTmsPackDtl" resultType="int">
select count(1) from emis_tms_pack_dtl select count(1) from emis_tms_pack_dtl
where del_flag='0' where del_flag='0'