feat(wms): 出库报关流程增加通宇组织限制,仅通宇(2830)启用报关判断
This commit is contained in:
+5
-2
@@ -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)
|
||||
|
||||
+18
-5
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user