保税仓推送修改

This commit is contained in:
zhaoqing
2026-05-29 10:55:39 +08:00
parent b9a9ee8108
commit 6315615cac
3 changed files with 77 additions and 4 deletions
@@ -1210,7 +1210,7 @@ public class ReservationStockOutOrderApplicationService {
bodyList.add(order);
GwLog gwLog = new GwLog();
gwLog.setType("出口订单");
gwLog.setType("保税仓-出口订单");
gwLog.setBusinessId(id);
gwLog.setRequestBody(com.alibaba.fastjson.JSONObject.toJSONString(bodyList));
gwLog.setResponseBody("");
@@ -20,7 +20,10 @@ import com.mhd.system.api.domain.StorageLocationFeignPO;
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.application.service.materialBaseInfo.MaterialBaseInfoApplicationService;
import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService;
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO;
import com.mhd.wms.domain.pickingMaterialDetail.service.PickingMaterialDetailDomainService;
@@ -81,6 +84,10 @@ public class PickingOrderApplicationService {
private IOutMaterialDetailService outMaterialDetailService;
@Resource
private PickingOrderMapper pickingOrderMapper;
@Autowired
private MaterialBaseInfoApplicationService materialBaseInfoApplicationService;
@Autowired
private IPickingMaterialDetailService pickingMaterialDetailService;
private static final String PUSH_API_URL = "http://10.33.0.100/nagu-erp-api/transfer/pushData";
@@ -729,16 +736,82 @@ public class PickingOrderApplicationService {
StringBuilder failMsg = new StringBuilder();
for(Long id : idList){
// 1. 查询拣货单
PickingOrder pickingOrder = pickingOrderMapper.selectById(id);
if (pickingOrder == null) {
failCount++;
failMsg.append("id:").append(id).append("不存在;");
continue;
}
// 2. 查询拣货单物料明细
PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO();
pickingMaterialDetailDO.setPickingOrderNumber(pickingOrder.getPickingOrderNumber());
List<PickingMaterialDetailPO> materialDetailList = pickingMaterialDetailService.queryList(pickingMaterialDetailDO);
if (materialDetailList == null || materialDetailList.isEmpty()) {
failCount++;
failMsg.append("id:").append(id).append("无物料明细;");
continue;
}
// 3. 构建主单
Map<String, Object> order = new HashMap<>();
// etpsPreentNo: 入库单号 - 取拣货明细中的入库单号(第一个)
String inOrderNumber = materialDetailList.get(0).getInOrderNumber();
order.put("etpsPreentNo", inOrderNumber != null ? inOrderNumber : "");
order.put("inputTime", new Date());
order.put("mtpckEndprdTypecd", "E"); // 成品(出口)
// 4. 构建明细列表
List<Map<String, Object>> qnBillList = new ArrayList<>();
int gNo = 1;
for (PickingMaterialDetailPO detail : materialDetailList) {
Map<String, Object> item = new HashMap<>();
item.put("etpsPreentNo", detail.getInOrderNumber() != null ? detail.getInOrderNumber() : "");
item.put("gNo", gNo++);
item.put("gdsMtno", detail.getMaterialCode() != null ? detail.getMaterialCode() : "");
// 获取物料详情获取单价和币制
if (detail.getMaterialBaseInfoId() != null) {
MaterialBaseInfoPO materialInfo = materialBaseInfoApplicationService.getInfo(detail.getMaterialBaseInfoId());
if (materialInfo != null) {
item.put("dclUprcAmt", materialInfo.getUnitPrice()); // 申报单价
item.put("dclCurrcd", materialInfo.getCurrency() != null ? materialInfo.getCurrency() : ""); // 申报币制
// 计算申报总价
BigDecimal unitPrice = materialInfo.getUnitPrice();
BigDecimal pickingQty = detail.getPickingQuantity() != null ? detail.getPickingQuantity() : detail.getQuantity();
if (unitPrice != null && pickingQty != null && unitPrice.compareTo(BigDecimal.ZERO) != 0) {
BigDecimal totalAmt = unitPrice.multiply(pickingQty).setScale(2, BigDecimal.ROUND_HALF_UP);
item.put("dclTotalAmt", totalAmt);
}
}
}
item.put("dclQty", detail.getPickingQuantity() != null ? detail.getPickingQuantity() : detail.getQuantity()); // 申报数量
item.put("orderNo", pickingOrder.getPickingOrderNumber()); // 出仓订单号
item.put("orderRow", gNo - 1); // 出仓订单行号
item.put("bondInvtNo", ""); // 原进口核注清单号(暂无)
item.put("invtRow", null); // 原进口核注清单行号(暂无)
item.put("whNo", detail.getWarehouseCode() != null ? detail.getWarehouseCode() : ""); // 仓库
item.put("seatNo", detail.getStorageLocationCode() != null ? detail.getStorageLocationCode() : ""); // 库位
item.put("whNoIn", detail.getWarehouseCode() != null ? detail.getWarehouseCode() : "");
item.put("seatNoIn", detail.getStorageLocationCode() != null ? detail.getStorageLocationCode() : "");
qnBillList.add(item);
}
order.put("qnBillList", qnBillList);
List<Map<String, Object>> bodyList = new ArrayList<>();
// bodyList.add();
bodyList.add(order);
GwLogDTO gwLogDTO = new GwLogDTO();
gwLogDTO.setType("出口");
gwLogDTO.setType("保税仓-出口");
gwLogDTO.setBusinessId(id);
gwLogDTO.setRequestBody(com.alibaba.fastjson.JSONObject.toJSONString(bodyList));
gwLogDTO.setResponseBody("");
@@ -2670,7 +2670,7 @@ public class StockShelfOrderApplicationService {
GwLogDTO gwLogDTO = new GwLogDTO();
gwLogDTO.setType("出口订");
gwLogDTO.setType("保税仓-进口仓");
gwLogDTO.setBusinessId(id);
gwLogDTO.setRequestBody(com.alibaba.fastjson.JSONObject.toJSONString(bodyList));
gwLogDTO.setResponseBody("");