From 97720dd3eba3a66db6598b60364feec583abd0ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 10 Jun 2026 17:22:48 +0800 Subject: [PATCH] =?UTF-8?q?W=E8=BF=9B=E5=8F=A3=E4=BB=93=E5=8D=95=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=85=B3=E5=8A=A1=E5=BC=80=E5=8F=91;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/domain/GwLogW.java | 64 +++++++++++++ ...rvationStockInOrderApplicationService.java | 6 ++ .../StockInOrderApplicationService.java | 19 +++- .../StockShelfOrderApplicationService.java | 90 ++++++++++++++++--- .../mapper/StockShelfOrderMapper.java | 2 + .../service/StockShelfOrderDomainService.java | 2 +- .../stockShelfOrder/StockShelfOrderMapper.xml | 4 + 7 files changed, 168 insertions(+), 19 deletions(-) create mode 100644 mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/GwLogW.java diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/GwLogW.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/GwLogW.java new file mode 100644 index 000000000..2c24b4ce2 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/GwLogW.java @@ -0,0 +1,64 @@ +package com.mhd.system.api.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class GwLogW implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("日志id") + private Long logId; + + @ApiModelProperty("类型") + private String type; + + @ApiModelProperty("业务ID") + private Long businessId; + + @ApiModelProperty("请求报文") + private String requestBody; + + @ApiModelProperty("响应报文") + private String responseBody; + + @ApiModelProperty("状态(1-初始,2-成功,3-失败)") + private Integer status; + + @ApiModelProperty("错误信息") + private String errorMsg; + + @ApiModelProperty("推送时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date sendTime; + + @ApiModelProperty("组织ID") + private Long organizationId; + + @ApiModelProperty("一级组织ID") + private Long topOrganizationId; + + @ApiModelProperty("组织名称") + private String organizationName; + + @ApiModelProperty("创建人") + private Long createBy; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("删除标记:1-正常,0-删除") + private Integer delFlag; + +// @ApiModelProperty("推送人姓名") +// private String pushByName; +} \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java index b54e6444a..c7ac8c157 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java @@ -283,6 +283,12 @@ public class ReservationStockInOrderApplicationService { * @return Boolean */ public Boolean auditState(ReservationStockInOrderDO stockInOrderDO){ + Integer issueStatus = stockInOrderDO.getIssueStatus(); + if (issueStatus == 2) { + List idList = new ArrayList(); + idList.add(stockInOrderDO.getInOrderId()); + batchPush(idList); + } return stockInOrderDomainService.auditState(stockInOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 4acffe1ef..32fe01dff 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -19,6 +19,7 @@ import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.BmsServiceFeign; import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.GwLogW; import com.mhd.system.api.domain.SysDictData; import com.mhd.system.api.domain.WarehouseFeignPO; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; @@ -27,6 +28,7 @@ import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; @@ -50,6 +52,12 @@ import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrder import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderImportRowDTO; import lombok.extern.slf4j.Slf4j; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; import org.apache.poi.ss.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -57,14 +65,12 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -96,6 +102,11 @@ public class StockInOrderApplicationService { private IStockOutOrderService stockOutOrderService; @Autowired private IHandoverTaskOrderService handoverTaskOrderService; + @Autowired + private IInMaterialDetailService inMaterialDetailService; + private static final String PUSH_API_URL = "http://10.33.0.100/nagu-erp-api/transfer/pushData"; + private static final String API_NAME = "save_order_i"; + private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD"; /** diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 971cfe640..33fcdae10 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -3,6 +3,7 @@ package com.mhd.wms.application.service.stockShelfOrder; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mhd.common.core.constant.SnowFlakeConstants; import com.mhd.common.core.domain.po.UserConfigSwitchPo; import com.mhd.common.core.domain.po.UserPo; @@ -21,6 +22,7 @@ import com.mhd.system.api.domain.*; 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.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; import com.mhd.wms.domain.inventoryAdjustmentRecord.entity.InventoryAdjustmentRecord; import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; @@ -43,6 +45,8 @@ import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; import com.mhd.wms.domain.inMaterialDetail.service.InMaterialDetailDomainService; import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail; +import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService; +import com.mhd.wms.domain.shelfMaterialDetail.repository.persistence.ShelfMaterialDetailImpl; import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; import com.mhd.wms.domain.shelfMaterialDetail.service.ShelfMaterialDetailDomainService; @@ -50,6 +54,7 @@ import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetai import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper; import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder; +import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService; import com.mhd.wms.domain.stockShelfOrder.repository.mapper.StockShelfOrderMapper; import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; @@ -93,11 +98,11 @@ public class StockShelfOrderApplicationService { private InMaterialDetailDomainService inMaterialDetailDomainService; @Autowired private ReceiptMaterialDetailDomainService receiptMaterialDetailDomainService; - @Autowired + @Resource private UserServiceFeign userServiceFeign; - @Autowired + @Resource private SystemServiceFeign systemServiceFeign; - @Autowired + @Resource private OmsServiceFeign omsServiceFeign; @Autowired private ICustomsDeclarationDetailService customsDeclarationDetailService; @@ -115,13 +120,16 @@ public class StockShelfOrderApplicationService { private IMaterialBarCodeService materialBarCodeService; @Resource private StockShelfOrderMapper stockShelfOrderMapper; - - - private static final String PUSH_API_URL = "http://10.33.0.100/nagu-erp-api/transfer/pushData"; - private static final String API_NAME = "save_qnBill_i"; - private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD"; @Autowired - private StockInOrderMapper stockInOrderMapper; + private IInMaterialDetailService inMaterialDetailService; + @Autowired + private IShelfMaterialDetailService shelfMaterialDetailService; + @Autowired + private IStockShelfOrderService stockShelfOrderService; + private static final String PUSH_API_URL = "http://10.33.0.100/nagu-erp-api/transfer/pushData"; + private static final String API_NAME = "save_order_i"; + private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD"; + /** * 分页查询上架单列表 @@ -1067,7 +1075,7 @@ public class StockShelfOrderApplicationService { /** * PDA/PC 详情:未完成行将 total* 覆盖为「待上架重量/体积」= 计划 − 累计已上架。 - * 与收货 {@link com.mhd.wms.application.service.stockReceiptOrder.StockReceiptOrderApplicationService#fillPlanAndPendingMetricsRecursively} 一致: + * 与收货 {@code StockReceiptOrderApplicationService#fillPlanAndPendingMetricsRecursively} 一致: * level=2 子行计算时用计划主行(level=1)上已汇总的 alreadyShelves*,不能用子行本行累计, * 否则「计划」是整张卡的计划,「已减」却只有子行一批,待上架会偏大。 */ @@ -2666,7 +2674,7 @@ public class StockShelfOrderApplicationService { String mtpckEndprdTypecd = "E"; if (materialBaseInfoId != null) { MaterialBaseInfo materialBaseIn = materialBaseInfoMapper.selectById(materialBaseInfoId); - if (materialBaseIn.getGoodsType() != null) { + if (materialBaseIn != null && materialBaseIn.getGoodsType() != null) { Integer goodsType = materialBaseIn.getGoodsType(); if (goodsType == 0) { mtpckEndprdTypecd = "M"; @@ -2740,15 +2748,69 @@ public class StockShelfOrderApplicationService { Date inputTime = new Date(); Map item = new HashMap<>(); - item.put("etpsPreentNo", stockShelfOrder.getInOrderNumber()); + item.put("etpsPreentNo", stockShelfOrder.getShelfOrderNumber()); item.put("inputTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//或者是前段传时间 或者是加时间字段然后查询拿到这里 + item.put("stockTypecd", "I"); item.put("mtpckEndprdTypecd", mtpckEndprdTypecd); + List> detailItems = new ArrayList<>(); + for (ShelfMaterialDetailPO shelfMaterialDetail : shelfMaterialDetails) { + Map detailItem = new HashMap<>(); + + //入库单号 + detailItem.put("etpsPreentNo", stockShelfOrder.getShelfOrderNumber()); + //序号 + String lotNumber = shelfMaterialDetail.getLotNumber(); + if (lotNumber != null) { + String[] split = lotNumber.split("-"); + if (split.length == 2) { + detailItem.put("gNo", split[1]); + } + } + MaterialBaseInfo materialBaseIn = materialBaseInfoMapper.selectById(materialBaseInfoId); + if (materialBaseIn != null) { + //料号 + detailItem.put("gdsMtno", materialBaseIn.getMaterialCode()); + //申报单价 + detailItem.put("dclUprcAmt", materialBaseIn.getUnitPrice()); + BigDecimal shelvesQuantity = shelfMaterialDetail.getShelvesQuantity(); + if (shelvesQuantity != null) { + if (materialBaseIn.getUnitPrice() != null) { + BigDecimal totalAmount = shelvesQuantity.multiply(materialBaseIn.getUnitPrice()); + //申报总价 + detailItem.put("dclTotalAmt", totalAmount); + } + //申报数量 + detailItem.put("dclQty", shelvesQuantity); + //申报币制 + com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail inMaterialDetail = inMaterialDetailService.getOne(new LambdaQueryWrapper().eq(com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail::getMaterialBaseInfoId, materialBaseIn.getMaterialBaseInfoId()).eq(com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail::getInOrderNumber, stockShelfOrder.getInOrderNumber())); + detailItem.put("dclCurrcd", inMaterialDetail.getCurrency()); + } + + } + //入仓订单号 + detailItem.put("orderNo", stockShelfOrder.getInOrderNumber()); + //入仓订单行号 + if (lotNumber != null) { + String[] split = lotNumber.split("-"); + if (split.length == 2) { + detailItem.put("orderRow", split[1]); + } + } + //进口核注清单号 + detailItem.put("bondInvtNo", materialBaseInfoId); + //进口核注清行号 + detailItem.put("invtRow", materialBaseInfoId); + //仓库 + detailItem.put("whNo", shelfMaterialDetail.getWarehouseCode()); + //库位 + detailItem.put("seatNo", shelfMaterialDetail.getStorageLocationCode()); + detailItems.add(detailItem); + } + item.put("qnBillList", detailItems); List> bodyList = new ArrayList<>(); bodyList.add(item); //构建推送数据 - - GwLogDTO gwLogDTO = new GwLogDTO(); gwLogDTO.setType("保税仓-进口仓单"); gwLogDTO.setBusinessId(id); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java index 352ac75e5..ae5c6912a 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java @@ -35,4 +35,6 @@ public interface StockShelfOrderMapper extends BaseMapper void updateOmsInventoryQuantity(@Param("quantity") BigDecimal quantity, @Param("lotNumber")String lotNumber, @Param("inOrderNumber")String inOrderNumber); void updateOmsInventorySynchronization(@Param("checkQuantity") BigDecimal checkQuantity, @Param("lotNo") String lotNo, @Param("inOrderNumber") String inOrderNumber); + + public String getUserNcCode(@Param("id") Long id); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java index 9a7bcb9dd..0880b9c99 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java @@ -147,7 +147,7 @@ public class StockShelfOrderDomainService { private MaterialBaseInfoMapper materialBaseInfoMapper; @Autowired private ICopyCodeReferenceService copyCodeReferenceService; - @Autowired + @Resource private OmsServiceFeign omsServiceFeign; /** diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index 4c76fa732..ce1b112b5 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -174,4 +174,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ALLOCATION_QUANTITY= ALLOCATION_QUANTITY - #{checkQuantity} where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNo} + + \ No newline at end of file