demand: TMS系统 - 客户管理 - 现金客户额度 - 超期已用额度 与运单明细单号运费不一致;

committer: heyu
This commit is contained in:
aike 2025-06-23 15:20:22 +08:00
parent 659179197a
commit 9a9aa336e6
3 changed files with 61 additions and 51 deletions

View File

@ -4839,58 +4839,67 @@ public class EmisBaseService {
emisWaybillMapper.updateEmisWaybill(emisWaybill); emisWaybillMapper.updateEmisWaybill(emisWaybill);
} }
public EmisWaybill checkVirtualParam(EmisWaybill emisWaybillSave, EmisWaybill emisWaybillOld) throws EmisBizError { public EmisWaybill checkVirtualParam(EmisWaybill emisWaybillSave, EmisWaybill emisWaybillOld) throws EmisBizError {
if (StringUtil.isBlank(emisWaybillSave.getMasterBillCode())) { if (StringUtil.isBlank(emisWaybillSave.getMasterBillCode())) {
throw new EmisBizError(EmisBizErrorType.FAIL, "主单号不能为空"); throw new EmisBizError(EmisBizErrorType.FAIL, "主单号不能为空");
} }
if (!"002".equals(emisWaybillSave.getTransLineType()) && !"012".equals(emisWaybillSave.getTransLineType()) && !"014".equals(emisWaybillSave.getTransLineType())) { if (!"002".equals(emisWaybillSave.getTransLineType()) && !"012".equals(emisWaybillSave.getTransLineType())
throw new EmisBizError(EmisBizErrorType.FAIL, "虚拟单只支持线路为缅甸快递/缅甸快递进口/柬埔寨快递进口"); && !"014".equals(emisWaybillSave.getTransLineType())) {
} throw new EmisBizError(EmisBizErrorType.FAIL, "虚拟单只支持线路为缅甸快递/缅甸快递进口/柬埔寨快递进口");
EmisWaybill masterWaybill = emisWaybillMapper }
.selectEmisWaybillByBillCode(emisWaybillSave.getMasterBillCode()); EmisWaybill masterWaybill = emisWaybillMapper
if (Objects.isNull(masterWaybill)) { .selectEmisWaybillByBillCode(emisWaybillSave.getMasterBillCode());
throw new EmisBizError(EmisBizErrorType.FAIL, "主单号不存在"); if (Objects.isNull(masterWaybill)) {
} throw new EmisBizError(EmisBizErrorType.FAIL, "主单号不存在");
if (!emisWaybillSave.getReceiveCountry().equals(masterWaybill.getReceiveCountry()) }
|| !emisWaybillSave.getTransLineType().equals(masterWaybill.getTransLineType()) || !emisWaybillSave.getProductType().equals(masterWaybill.getProductType())) { if (!emisWaybillSave.getReceiveCountry().equals(masterWaybill.getReceiveCountry())
throw new EmisBizError(EmisBizErrorType.FAIL, "主单和虚拟单线路不一致"); || !emisWaybillSave.getTransLineType().equals(masterWaybill.getTransLineType())
} || !emisWaybillSave.getProductType().equals(masterWaybill.getProductType())) {
if ("1".equals(masterWaybill.getBlVirtual())) { throw new EmisBizError(EmisBizErrorType.FAIL, "主单和虚拟单线路不一致");
throw new EmisBizError(EmisBizErrorType.FAIL, "虚拟单不能作为主单"); }
} if ("1".equals(masterWaybill.getBlVirtual())) {
if (emisWaybillOld == null || !"1".equals(emisWaybillOld.getBlVirtual())) { throw new EmisBizError(EmisBizErrorType.FAIL, "虚拟单不能作为主单");
if (masterWaybill.getVirtualRemark().split(",").length >= masterWaybill.getParcelQty()) { }
throw new EmisBizError(EmisBizErrorType.FAIL, emisWaybillSave.getMasterBillCode() + "最多只能绑定" + masterWaybill.getParcelQty() + "个虚拟单"); if (!emisWaybillSave.getMasterBillCode().equals(emisWaybillOld.getMasterBillCode())) {
} String virtualRemark = masterWaybill.getVirtualRemark() == null ? "" : masterWaybill.getVirtualRemark();
} long count = Arrays.stream(virtualRemark.split(","))
.filter(s -> s != null && !s.trim().isEmpty())
.count();
if (count >= masterWaybill.getParcelQty()) {
throw new EmisBizError(EmisBizErrorType.FAIL,
emisWaybillSave.getMasterBillCode() + "最多只能绑定" + masterWaybill.getParcelQty() + "个虚拟单");
}
}
List<EmisTmsSiteBatch> batchList = emisTmsSiteBatchMapper.selectEmisTmsSiteBatchListByBillCodes( List<EmisTmsSiteBatch> batchList = emisTmsSiteBatchMapper.selectEmisTmsSiteBatchListByBillCodes(
Lists.newArrayList(Collections.singleton(emisWaybillSave.getMasterBillCode()))); Lists.newArrayList(Collections.singleton(emisWaybillSave.getMasterBillCode())));
if (CollectionUtil.isNotEmpty(batchList)) { if (CollectionUtil.isNotEmpty(batchList)) {
throw new EmisBizError(EmisBizErrorType.FAIL, "该单号已经录入批次,请先在组批次中剔除该运单"); throw new EmisBizError(EmisBizErrorType.FAIL, "该单号已经录入批次,请先在组批次中剔除该运单");
} }
return masterWaybill; return masterWaybill;
} }
public void handleVirtualForUpdate(EmisWaybill emisWaybillSave, EmisWaybill emisWaybillOld) throws EmisBizError { public void handleVirtualForUpdate(EmisWaybill emisWaybillSave, EmisWaybill emisWaybillOld) throws EmisBizError {
if (!StringUtils.isEmpty(emisWaybillSave.getBlVirtual()) && "1".equals(emisWaybillSave.getBlVirtual())) { if (!StringUtils.isEmpty(emisWaybillSave.getBlVirtual()) && "1".equals(emisWaybillSave.getBlVirtual())) {
handleVirtual(emisWaybillSave,emisWaybillOld); handleVirtual(emisWaybillSave, emisWaybillOld);
} else { } else {
String masterBillCode = emisWaybillOld.getMasterBillCode(); String masterBillCode = emisWaybillOld.getMasterBillCode();
if (StringUtil.isNotBlank(masterBillCode)) { if (StringUtil.isNotBlank(masterBillCode)) {
String virtualBillCodeLastSix = emisWaybillSave.getBillCode().substring(emisWaybillSave.getBillCode().length() - 6); String virtualBillCodeLastSix = emisWaybillSave.getBillCode()
EmisWaybill masterWaybill = emisWaybillMapper .substring(emisWaybillSave.getBillCode().length() - 6);
.selectEmisWaybillByBillCode(masterBillCode); EmisWaybill masterWaybill = emisWaybillMapper
List<String> filterVirtualRemark = Arrays.stream(masterWaybill.getVirtualRemark().split(",")).filter(i -> !i.equals(virtualBillCodeLastSix)).collect(Collectors.toList()); .selectEmisWaybillByBillCode(masterBillCode);
String virtualRemark = String.join(",", filterVirtualRemark); List<String> filterVirtualRemark = Arrays.stream(masterWaybill.getVirtualRemark().split(","))
masterWaybill.setVirtualRemark(virtualRemark); .filter(i -> !i.equals(virtualBillCodeLastSix)).collect(Collectors.toList());
emisWaybillMapper.updateEmisWaybill(masterWaybill); String virtualRemark = String.join(",", filterVirtualRemark);
emisWaybillProblemInfoService.deleteEmisWaybillProblemInfoByBillCode(emisWaybillSave.getBillCode()); masterWaybill.setVirtualRemark(virtualRemark);
// 重新计算提成 emisWaybillMapper.updateEmisWaybill(masterWaybill);
emisCommissionProfitService.reCalcProfitByBillCode(emisWaybillSave.getBillCode()); emisWaybillProblemInfoService.deleteEmisWaybillProblemInfoByBillCode(emisWaybillSave.getBillCode());
} // 重新计算提成
} emisCommissionProfitService.reCalcProfitByBillCode(emisWaybillSave.getBillCode());
} }
}
}
public static void main(String[] args) throws ParseException { public static void main(String[] args) throws ParseException {
// Date startDate = new Date("202"); // Date startDate = new Date("202");

View File

@ -3128,7 +3128,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
// 虚拟件逻辑 // 虚拟件逻辑
if ("1".equals(emisWaybillSave.getBlVirtual())) { if ("1".equals(emisWaybillSave.getBlVirtual())) {
updateMasterWaybill(emisWaybillSave,null); updateMasterWaybill(emisWaybillSave,new EmisWaybill());
} }
//插入新单 //插入新单

View File

@ -590,6 +590,7 @@
<!-- or a.dispatch_underling_site_code=#{params.privSiteCode}--> <!-- or a.dispatch_underling_site_code=#{params.privSiteCode}-->
<!-- )--> <!-- )-->
<!-- </if>--> <!-- </if>-->
order by a.send_date desc
limit 10 limit 10
</select> </select>