feat(wms): 出库报关流程增加通宇组织限制,仅通宇(2830)启用报关判断

This commit is contained in:
rcx
2026-08-14 16:38:48 +08:00
parent a400a34b0c
commit e7e64252e7
2 changed files with 23 additions and 7 deletions
@@ -270,10 +270,13 @@ public class HandoverTaskOrderApplicationService {
.eq(HandoverTaskOrder::getOrderNumber, orderNumber)
.set(HandoverTaskOrder::getBillingJson, handoverTaskOrderDO.getBillingJson())
.set(HandoverTaskOrder::getPictureApp, handoverTaskOrderDO.getPictureApp()));
// 2. 状态按是否报关:需报关→已交接(13),否则→已出库(9)
// 2. 状态按是否报关:仅通宇(2830)+需报关→已交接(13),否则→已出库(9)
StockOutOrder soo = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
.eq(StockOutOrder::getOutOrderNumber, orderNumber));
int targetStatus = (soo != null && "1".equals(soo.getNeedDeclareFlag())) ? 13 : 9;
boolean needCustoms = soo != null
&& Long.valueOf(2830L).equals(soo.getOrganizationId())
&& "1".equals(soo.getNeedDeclareFlag());
int targetStatus = needCustoms ? 13 : 9;
stockOutOrderService.update(new LambdaUpdateWrapper<StockOutOrder>()
.eq(StockOutOrder::getOutOrderNumber, orderNumber)
.set(StockOutOrder::getStatus, targetStatus)
@@ -105,12 +105,24 @@ public class HandoverTaskOrderDomainService {
// 报关回写相关常量
private static final String CUSTOMS_PUSH_API_URL = "http://10.102.192.15/nagu-erp-api/transfer/pushData";
private static final String CUSTOMS_VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD";
// 通宇组织ID(只有通宇才启用报关出库流程)
private static final Long TONGYU_ORGANIZATION_ID = 2830L;
// 视为「海关已放行/结关」的状态码(建议做成 @Value("${gw.customs.pass-status:P,I,R,F,K,B}")
// 视为「海关已放行」的状态码(ERP 确认:只有 P=海关已放行 才表示货物可出库)
private static final String[] CUSTOMS_PASS_STATUS = {"P"};
// 退单/失败状态码(记告警用)
private static final String[] CUSTOMS_FAIL_STATUS = {"E", "A", "D", "Z", "c", "H"};
/**
* 判断是否需要走报关出库流程(仅通宇 + needDeclareFlag=1
* 其它组织一律走老流程(交接直接出库)
*/
private boolean isCustomsDeclareOrder(StockOutOrder stockOutOrder) {
return stockOutOrder != null
&& TONGYU_ORGANIZATION_ID.equals(stockOutOrder.getOrganizationId())
&& "1".equals(stockOutOrder.getNeedDeclareFlag());
}
/**
* 分页查询交接作业单列表
@@ -325,8 +337,8 @@ public class HandoverTaskOrderDomainService {
}
StockOutOrder soo = stockOutOrderMapper.selectOne(new QueryWrapper<StockOutOrder>().lambda()
.eq(StockOutOrder::getOutOrderNumber, hto.getOrderNumber()));
if (soo != null && "1".equals(soo.getNeedDeclareFlag())) {
continue; // 需报关,跳过
if (isCustomsDeclareOrder(soo)) {
continue; // 需报关(仅通宇),跳过
}
if (soo != null && !"yang_pin_chu_ku".equals(soo.getBusinessType())) {
pushOms(handoverTaskOrderId);
@@ -374,8 +386,8 @@ public class HandoverTaskOrderDomainService {
if (stockOutOrder == null) {
continue;
}
// 需要报关:交接时只改状态为「已交接(13)」,不扣库存/不推OMS,等海关确认放行后再处理
if ("1".equals(stockOutOrder.getNeedDeclareFlag())) {
// 需要报关(仅通宇+needDeclareFlag=1:交接时只改状态为「已交接(13)」,不扣库存/不推OMS,等海关确认放行后再处理
if (isCustomsDeclareOrder(stockOutOrder)) {
stockOutOrder.setStatus(13);
stockOutOrderMapper.updateById(stockOutOrder);
continue; // 跳过下方扣库存逻辑(B/C/D/E 全部延后到海关确认)
@@ -484,8 +496,9 @@ public class HandoverTaskOrderDomainService {
*/
@Transactional(rollbackFor = Exception.class)
public AjaxResult customsConfirmOut(List<String> outOrderNumbers) {
// 1. 确定处理范围(只处理 status=13 且需要报关的出库单)
// 1. 确定处理范围(只处理通宇、status=13 且需要报关的出库单)
LambdaQueryWrapper<StockOutOrder> qw = new LambdaQueryWrapper<StockOutOrder>()
.eq(StockOutOrder::getOrganizationId, TONGYU_ORGANIZATION_ID)
.eq(StockOutOrder::getStatus, 13)
.eq(StockOutOrder::getNeedDeclareFlag, "1");
if (outOrderNumbers != null && !outOrderNumbers.isEmpty()) {