Prechádzať zdrojové kódy

仓库出运推送srm调整

fenghaifu 1 mesiac pred
rodič
commit
8c2b6661cb

+ 20 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/shippingDetails/entity/VO/PurchaseDeliverDetailSizeVo.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.documents.shippingDetails.entity.VO;
+/**
+ * 非SRM推送面辅料装箱单做完托书后,推送U8发货单
+ * @author : fhf
+ * @date : 2025-05-26
+ */
+public class PurchaseDeliverDetailSizeVo {
+    /**id*/
+    private String id;
+    /**发货单子表ID*/
+    private String deliverDetailId;
+    // 装箱单子表id(面料)
+    private String syPackingDetailId;
+    /**尺码*/
+    private String size;
+    /**发货数量*/
+    private java.math.BigDecimal quantity;
+
+    private String orderDetailId;
+}

+ 97 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/shippingDetails/entity/VO/PurchaseDeliverDetailVo.java

@@ -0,0 +1,97 @@
+package org.jeecg.modules.documents.shippingDetails.entity.VO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.documents.seclarationElements.entity.SyDeclarationElements;
+import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrder;
+import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
+import org.jeecg.modules.splfi.entity.SyPackingListFabricItem;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 非SRM推送面辅料装箱单做完托书后,推送U8发货单
+ * @author : fhf
+ * @date : 2025-05-26
+ */
+@Data
+public class PurchaseDeliverDetailVo {
+    /**主键*/
+    private String id;
+    /**订单编号*/
+    private String orderCode;
+    /**存货编码*/
+    private String invCode;
+    /**尺码*/
+    private String size;
+    /**数量*/
+    private java.math.BigDecimal quantity;
+
+    /**
+     * 单证面辅料:集装箱号
+     */
+    private String containerNumber;
+    // 报关品名
+    private String declarationName;
+    // 报关单位
+    private String declarationUnit;
+
+    // 存货分类编号
+    private String invccode;
+    // 委外订单主表id
+    private String purchaseOrderId;
+    /**采购订单子表id*/
+    private String purchaseOrderItemId;
+    // 采购委外账套
+    private String sysOrgCode;
+
+    // 是否TC
+    private String isTc;
+    // 经营单位
+    private String company;
+    // 报关单价-托书回写
+    private String declarationPrice;
+    // 报关金额-托书回写
+    private String declarationMoney;
+    // 推送单证的装箱单子表分组id(成衣/面料)
+    private String syPackingDetailGroupId;
+    // 装箱单子表id(面料)
+    private String syPackingDetailId;
+    // 报关数量
+    private BigDecimal actualDeclaredQuantity;
+
+    /**
+     * 从面辅料装箱单生成
+     * @param syPackingListFabricItem
+     */
+    public void fromFabricItem(SyPackingListFabricItem syPackingListFabricItem,
+                               SyShippingOrder syShippingOrder,
+                               SyShippingOrderItem syShippingOrderItem,
+                               SyDeclarationElements syDeclarationElements){
+        id = syPackingListFabricItem.getId();
+        size = syPackingListFabricItem.getSize();
+        invCode = syPackingListFabricItem.getInventoryCode();
+        actualDeclaredQuantity = syPackingListFabricItem.getActualDeclaredQuantity();
+        orderCode = syPackingListFabricItem.getPurOrSubOrder();
+        purchaseOrderItemId = syPackingListFabricItem.getOmpoIdItem();
+        purchaseOrderId = syPackingListFabricItem.getOmpoId();
+        sysOrgCode = syPackingListFabricItem.getOmpoAccount();
+        isTc = syPackingListFabricItem.getIsTc();
+        invccode = syPackingListFabricItem.getInventoryCcode();
+        syPackingDetailGroupId = syPackingListFabricItem.getGroupId();
+        company = syShippingOrder.getUnitInOperation();
+        containerNumber =syShippingOrderItem.getContainerNumber();
+        declarationPrice = syShippingOrderItem.getDeclarationUnitPrice().toPlainString();
+        declarationMoney = (syShippingOrderItem.getDeclarationUnitPrice().multiply(actualDeclaredQuantity).setScale(2)).toPlainString();
+        quantity = syShippingOrderItem.getNumber();
+        syPackingDetailId = syPackingListFabricItem.getId();
+        declarationUnit = syDeclarationElements.getDeclarationUnit();
+        declarationName = syDeclarationElements.getDeclarationName();
+    }
+
+}

+ 69 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/shippingDetails/entity/VO/PurchaseDeliverVo.java

@@ -0,0 +1,69 @@
+package org.jeecg.modules.documents.shippingDetails.entity.VO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrder;
+import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
+import org.jeecg.modules.splfi.entity.SyPackingListFabric;
+import org.jeecg.modules.splfi.entity.SyPackingListFabricItem;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 非SRM推送面辅料装箱单做完托书后,推送U8发货单
+ * @author : fhf
+ * @date : 2025-05-26
+ */
+@Data
+public class PurchaseDeliverVo {
+    /**主键*/
+    private String id;
+    /**组织*/
+    private String sysOrgCode;
+    /**单据日期*/
+    private String vbilldate;
+    /**发货日期*/
+    private String sendDate;
+    /**订单号*/
+    private String orderCode;
+    /**外销发票号*/
+    private String exportInvoiceCode;
+    // 推送单证的装箱单主表id(成衣/面料)
+    private String syPackingId;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "船期")
+    private Date shippingDate;
+    // 托书号-单证托书回写
+    private String tsBillcode;
+    /**装柜日期-面辅料手填,成衣回写*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "装柜日期")
+    private Date loadingDate;
+    /** 单证成衣/面辅料:集装箱号 */
+    private String containerNumber;
+
+    List<PurchaseDeliverDetailVo> purchaseDeliverDetailList;
+
+    public void fromFabric(SyPackingListFabric syPackingListFabric,
+                                SyPackingListFabricItem syPackingListFabricItem,
+                               SyShippingOrder syShippingOrder){
+        id = syPackingListFabric.getId();
+        sysOrgCode = syPackingListFabricItem.getOmpoAccount();
+        containerNumber = syPackingListFabric.getContainerNumber();
+        exportInvoiceCode = syPackingListFabric.getExportInvoiceNo();
+        vbilldate = DateUtils.date2Str(syPackingListFabric.getLatestDateOfShipment(),DateUtils.date_sdf.get());
+        sendDate= vbilldate;
+        orderCode = syPackingListFabricItem.getPurOrSubOrder();
+        syPackingId = syPackingListFabric.getId();
+        loadingDate =DateUtils.str2Date(syShippingOrder.getLatestDateOfShipment(),DateUtils.date_sdf.get());
+        shippingDate =syShippingOrder.getTheFinalShippingDate();
+        tsBillcode = syShippingOrder.getShippingOrderNumber();
+
+    }
+}

+ 18 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/shippingDetails/entity/VO/ReqPurchaseDeliverVo.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.documents.shippingDetails.entity.VO;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 发货单请求
+ * @author fhf
+ * @date 2025/3/20
+ */
+@Data
+public class ReqPurchaseDeliverVo {
+    // 验证码
+    String verifyToken;
+
+    List<PurchaseDeliverVo> billList;
+}

+ 136 - 35
jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/PushShippingDetailsJob.java

@@ -15,11 +15,11 @@ import org.jeecg.modules.documents.letterDeposit.entity.VO.ReqLetterDepositItemV
 import org.jeecg.modules.documents.letterDeposit.entity.VO.ReqLetterDepositVO;
 import org.jeecg.modules.documents.letterDeposit.service.ISyLetterDepositItemService;
 import org.jeecg.modules.documents.letterDeposit.service.ISyLetterDepositService;
+import org.jeecg.modules.documents.seclarationElements.entity.SyDeclarationElements;
+import org.jeecg.modules.documents.seclarationElements.service.ISyDeclarationElementsService;
 import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetails;
 import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem;
-import org.jeecg.modules.documents.shippingDetails.entity.VO.PurchasePreDeliverVo;
-import org.jeecg.modules.documents.shippingDetails.entity.VO.ReqPurchasePreDeliverVo;
-import org.jeecg.modules.documents.shippingDetails.entity.VO.RespUpdateVO;
+import org.jeecg.modules.documents.shippingDetails.entity.VO.*;
 import org.jeecg.modules.documents.shippingDetails.service.ISyShippingDetailsService;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrder;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
@@ -37,6 +37,8 @@ import org.jeecg.modules.splfi.entity.SyPackingListFabric;
 import org.jeecg.modules.splfi.entity.SyPackingListFabricItem;
 import org.jeecg.modules.splfi.service.ISyPackingListFabricItemService;
 import org.jeecg.modules.splfi.service.ISyPackingListFabricService;
+import org.jeecg.modules.splt.entity.SyPackingListTailoringItem;
+import org.jeecg.modules.splt.service.ISyPackingListTailoringItemService;
 import org.jeecg.modules.system.util.HttpHelper;
 import org.jeecg.modules.system.util.InterfaceConnUtils;
 import org.jeecg.modules.system.util.oConvertUtils;
@@ -80,8 +82,12 @@ public class PushShippingDetailsJob implements Job {
     private ISenYuDataSourceThree senYuDataSourceThree;
     @Autowired
     private ISyPackingListFabricItemService syPackingListFabricItemService;
+    @Autowired
+    private ISyPackingListTailoringItemService syPackingListTailoringItemService;
     @Resource
     private SyShippingOrderItemMapper syShippingOrderItemMapper;
+    @Autowired
+    private ISyDeclarationElementsService syDeclarationElementsService;
 
     // srm调用校验码
     @Value("${srm.access-token}")
@@ -113,15 +119,14 @@ public class PushShippingDetailsJob implements Job {
                             reqPurchasePreDeliverVo.setVerifyToken(srmAccessToken);
                             reqPurchasePreDeliverVo.setBillList(purchasePreDeliverVoList);
                             String reqString = JSONObject.toJSONString(reqPurchasePreDeliverVo);
-                            log.info("查看请求信息\t" + reqString);
+                            log.info("推送出运明细请求:{}" , reqString);
                             //获取url
                             String url = dxpDataPlan.getItemIp();
                             //处理返回信息
                             String respStr = HttpHelper.httpJsonPost(url, reqString, null);
-                            log.info("查看返回信息\t" + respStr);
+                            log.info("推送出运明细返回\t" + respStr);
                             JSONObject informationJson = JSONObject.parseObject(respStr);
                             JSONArray jsonArray = informationJson.getJSONArray("result");
-                            log.info("jsonArray\t" + jsonArray);
                             for (int i = 0; i < jsonArray.size(); i++) {
                                 JSONObject jsonObject = jsonArray.getJSONObject(i);
                                 String syShippingId = jsonObject.getString("extraInfo");
@@ -167,14 +172,19 @@ public class PushShippingDetailsJob implements Job {
                         ReqLetterDepositVO reqVo = new ReqLetterDepositVO();
                         reqVo.setVerifyToken(srmAccessToken);
                         reqVo.setItemList(reqVoList);
+                        log.info("推送预托书数据:{}", JSONObject.toJSONString(reqVo));
                         List<RespUpdateVO> respUpdateVOList = JSONArray.parseArray(HttpHelper.httpJsonPost(dxpDataPlan.getItemIp(), JSONObject.toJSONString(reqVo), null),
                                 RespUpdateVO.class);
+                        log.info("推送预托书数据返回:{}", JSONArray.toJSONString(respUpdateVOList));
                         syLetterDepositItemService.updateSrmPushState(respUpdateVOList);
                     }
                 }
 
             }
-            // 推送托书到srm发货单字段
+            //推送托书到srm发货单字段
+            //    成衣通过预装箱单子表id和srm预装箱单子表id关联
+            //    面辅料装箱单如果来源是“u8拉取”的,推送srm发货单,生成接收单
+            //              富国来源不是“u8拉取”的,推送其他信息
             dxpDataPlanQueryWrapper = new QueryWrapper<>();
             dxpDataPlanQueryWrapper.eq("code", "senYu_Srm_Ts");
             dxpDataPlan = iDxpDataPlanService.getOne(dxpDataPlanQueryWrapper);
@@ -190,41 +200,76 @@ public class PushShippingDetailsJob implements Job {
                     mQueryWrapper.in(SyShippingOrder::getId, itemList.stream().map(SyShippingOrderItem::getSyShippingOrderItemId).distinct().collect(Collectors.toList()));
                     List<SyShippingOrder> orderList = syShippingOrderService.list(mQueryWrapper);
                     List<ReqShippingOrderItemVO> reqVoList = new ArrayList<>(); // 回写托书信息
-                    List<ReqSyShippingDetailsItemVO> reqQuantityList = new ArrayList<>(); // 回写可以对账数量
                     List<RespUpdateVO> errList = new ArrayList<>();
-                    List<SyPackingListFabric> packingListFabricList = new ArrayList<>();
+                    //List<SyPackingListFabric> packingListFabricList = new ArrayList<>();
+                    // 成衣装箱单子表,用于成衣取预装箱
+                    List<SyPackingListTailoringItem> packingListTailoringItemList = new ArrayList<>();
+                    packingListTailoringItemList = syPackingListTailoringItemService.listByIds(itemList.stream().map(SyShippingOrderItem::getTailoringFabricItemId).distinct().collect(Collectors.toList()));
+                    // 面辅料装箱单主表,用于判断是否u8拉取
+                    List<SyPackingListFabric> packingListFabricList = syPackingListFabricService.listByIds(itemList.stream().map(SyShippingOrderItem::getTailoringFabricId).distinct().collect(Collectors.toList()));
+                    // u8拉取的面辅料装箱单对应的托书主表
+                    List<SyShippingOrderItem> u8ShippingOrderItemList= new ArrayList<>();
+                    // 以下处理非u8拉取的面辅料装箱单
                     for (SyShippingOrderItem item : itemList){
                         SyShippingOrder findOrder = orderList.stream().filter(x -> x.getId().equals(item.getSyShippingOrderItemId())).findFirst().orElse(null);
                         if ("0".equals(findOrder.getTheDocumentsState())){
                             continue;
                         }
                         if (findOrder != null){
+
+                            boolean isClothes = "成衣".equals(item.getReadyFabric());
+                            if (isClothes){
+                                SyPackingListTailoringItem findItem = packingListTailoringItemList.stream().filter(e->e.getId().equals(item.getTailoringFabricItemId())).findFirst().orElse(null);
+                                if (findItem == null){
+                                    RespUpdateVO respUpdateVO = new RespUpdateVO();
+                                    respUpdateVO.setExtraInfo(item.getId());
+                                    respUpdateVO.setSuccess(false);
+                                    respUpdateVO.setMessage("成衣获取装箱单明细失败");
+                                    errList.add(respUpdateVO);
+                                    continue;
+                                }
+                                item.setTailoringFabricItemId(findItem.getSyPreAssembledPackingListItemId());
+                            }
+                            // 成衣取预装箱单子表id
                             ReqShippingOrderItemVO reqVo = new ReqShippingOrderItemVO();
                             reqVo.fromShippingOrder(item, findOrder);
-                            if (!"成衣".equals(findOrder.getReadyFabric())){
-                                boolean isReqQuantity = "采购".equals(getOrderType(item));
-                                if (isReqQuantity){
-                                    ReqSyShippingDetailsItemVO itemVO = syShippingOrderItemMapper.queryPackingQuantity(item.getId());
-                                    if (itemVO == null){
-                                        RespUpdateVO respUpdateVO = new RespUpdateVO();
-                                        respUpdateVO.setExtraInfo(item.getId());
-                                        respUpdateVO.setSuccess(false);
-                                        respUpdateVO.setMessage("获取出运明细装箱记录失败");
-                                        errList.add(respUpdateVO);
-
-                                    }else {
-                                        reqQuantityList.add(itemVO);
-                                    }
-                                }else {
+                            if (!isClothes){
+//                                boolean isReqQuantity = "采购".equals(getOrderType(item));
+//                                if (isReqQuantity){
+//                                    ReqSyShippingDetailsItemVO itemVO = syShippingOrderItemMapper.queryPackingQuantity(item.getId());
+//                                    if (itemVO == null){
+//                                        RespUpdateVO respUpdateVO = new RespUpdateVO();
+//                                        respUpdateVO.setExtraInfo(item.getId());
+//                                        respUpdateVO.setSuccess(false);
+//                                        respUpdateVO.setMessage("获取出运明细装箱记录失败");
+//                                        errList.add(respUpdateVO);
+//
+//                                    }else {
+//                                        reqQuantityList.add(itemVO);
+//                                    }
+//                                }else {
                                     // 拉取装箱单表头外销发票号
                                     SyPackingListFabric syPackingListFabric = packingListFabricList.stream().filter(e -> e.getId().equals(item.getTailoringFabricId())).findFirst().orElse(null);
-                                    if (syPackingListFabric == null) {
-                                        syPackingListFabric = syPackingListFabricService.getById(item.getTailoringFabricId());
-                                        packingListFabricList.add(syPackingListFabric);
+                                    if (!"u8拉取".equals(syPackingListFabric.getDataSource())) {
+                                        if (syPackingListFabric == null) {
+                                            RespUpdateVO respUpdateVO = new RespUpdateVO();
+                                            respUpdateVO.setExtraInfo(item.getId());
+                                            respUpdateVO.setSuccess(false);
+                                            respUpdateVO.setMessage("获取装箱单主表失败");
+                                            errList.add(respUpdateVO);
+                                        } else {
+                                            reqVo.setExportInvoiceNo(syPackingListFabric.getExportInvoiceNo());
+                                            reqVoList.add(reqVo);
+                                        }
+                                    }else{
+                                        u8ShippingOrderItemList.add(item);
                                     }
-                                    reqVo.setExportInvoiceNo(syPackingListFabric.getExportInvoiceNo());
-                                    reqVoList.add(reqVo);
-                                }
+//                                    if (syPackingListFabric == null) {
+//                                        syPackingListFabric = syPackingListFabricService.getById(item.getTailoringFabricId());
+//                                        packingListFabricList.add(syPackingListFabric);
+//                                    }
+
+//                                }
                             }else {
                                 reqVoList.add(reqVo);
                             }
@@ -237,17 +282,73 @@ public class PushShippingDetailsJob implements Job {
                         ReqShippingOrderVO reqVo = new ReqShippingOrderVO();
                         reqVo.setVerifyToken(srmAccessToken);
                         reqVo.setItemList(reqVoList);
+                        log.info("推送托书数据:{}", JSONObject.toJSONString(reqVo));
                         List<RespUpdateVO> respUpdateVOList = JSONArray.parseArray(HttpHelper.httpJsonPost(dxpDataPlan.getItemIp(), JSONObject.toJSONString(reqVo), null),
                                 RespUpdateVO.class);
+                        log.info("推送托书数据返回:{}", JSONArray.toJSONString(respUpdateVOList));
                         syShippingOrderItemService.updateSrmPushState(respUpdateVOList);
                     }
-                    if (reqQuantityList.size()>0){
-                        ReqSyShippingDetailsVO reqVo = new ReqSyShippingDetailsVO();
+//                    if (reqQuantityList.size()>0){
+//                        ReqSyShippingDetailsVO reqVo = new ReqSyShippingDetailsVO();
+//                        reqVo.setVerifyToken(srmAccessToken);
+//                        reqVo.setItemList(reqQuantityList);
+//                        List<RespUpdateVO> respUpdateVOList = JSONArray.parseArray(HttpHelper.httpJsonPost(dxpDataPlan.getItemIp().replace("/purchaseDeliver/dzSaveTs","/purchaseReceive/dzSaveReceiveSum"), JSONObject.toJSONString(reqVo), null),
+//                                RespUpdateVO.class);
+//                        syShippingOrderItemService.updateSrmPushState(respUpdateVOList);
+//                    }
+
+                    // 以下处理u8拉取的面辅料装箱单
+                    if (u8ShippingOrderItemList.size()>0){
+                        ReqPurchaseDeliverVo reqVo = new ReqPurchaseDeliverVo();
                         reqVo.setVerifyToken(srmAccessToken);
-                        reqVo.setItemList(reqQuantityList);
-                        List<RespUpdateVO> respUpdateVOList = JSONArray.parseArray(HttpHelper.httpJsonPost(dxpDataPlan.getItemIp().replace("/purchaseDeliver/dzSaveTs","/purchaseReceive/dzSaveReceiveSum"), JSONObject.toJSONString(reqVo), null),
+                        List<PurchaseDeliverVo> deliverVoList = new ArrayList<>();
+                        reqVo.setBillList(deliverVoList);
+
+                        QueryWrapper<SyPackingListFabricItem> fabricItemQueryWrapper = new QueryWrapper<>();
+                        fabricItemQueryWrapper.lambda().in(SyPackingListFabricItem::getSyPackingListFabricId, packingListFabricList.stream().map(SyPackingListFabric::getId).distinct().collect(Collectors.toList()));
+                        List<SyPackingListFabricItem> packingListFabricItemList = syPackingListFabricItemService.list(fabricItemQueryWrapper);
+
+                        List<SyDeclarationElements> elementsList = syDeclarationElementsService.listByIds(packingListFabricItemList.stream().map(SyPackingListFabricItem::getElementsId).distinct().collect(Collectors.toList()));
+
+                        for (SyPackingListFabric f : packingListFabricList){
+                            List<SyShippingOrderItem> findShippingOrderItemList = u8ShippingOrderItemList.stream().filter(e -> e.getTailoringFabricId().equals(f.getId())).collect(Collectors.toList());
+                            List<SyPackingListFabricItem> findFabricItemList = packingListFabricItemList.stream().filter(e ->{
+                                return findShippingOrderItemList.stream().anyMatch(e1 -> e1.getTailoringFabricItemId().equals(e.getId()));
+                            }).collect(Collectors.toList());
+                            if (findFabricItemList.size() == 0 || findShippingOrderItemList.size() == 0){
+                                continue;
+                            }
+                            SyShippingOrder syShippingOrder = orderList.stream().filter(e->e.getId().equals(findShippingOrderItemList.get(0).getSyShippingOrderItemId())).findFirst().orElse(null);
+                            if (syShippingOrder == null){
+                                continue;
+                            }
+
+                            PurchaseDeliverVo deliverVo =new PurchaseDeliverVo();
+                            deliverVo.fromFabric(f, findFabricItemList.get(0), syShippingOrder);
+                            List<PurchaseDeliverDetailVo> deliverDetailVoList = new ArrayList<>();
+                            deliverVo.setPurchaseDeliverDetailList(deliverDetailVoList);
+
+                            findFabricItemList.forEach(i->{
+                                PurchaseDeliverDetailVo deliverDetailVo = new PurchaseDeliverDetailVo();
+                                SyShippingOrderItem findOrderItem = findShippingOrderItemList.stream().filter(e -> e.getTailoringFabricItemId().equals(i.getId())).findFirst().orElse(null);
+                                SyDeclarationElements findElements = elementsList.stream().filter(e -> e.getId().equals(i.getElementsId())).findFirst().orElse(null);
+                                deliverDetailVo.fromFabricItem(i, syShippingOrder, findOrderItem, findElements);
+                                deliverDetailVoList.add(deliverDetailVo);
+                            });
+                            if (deliverDetailVoList.size()>0){
+                                deliverVoList.add(deliverVo);
+                            }
+                        }
+                        if (deliverVoList.size()>0){
+                            log.info("推送仓库出运数据:{}", JSONObject.toJSONString(reqVo));
+                            List<RespUpdateVO> respUpdateVOList = JSONArray.parseArray(
+                                    HttpHelper.httpJsonPost(
+                                            dxpDataPlan.getItemIp().replace("/purchaseDeliver/dzSaveTs","/purchaseReceive/dzSaveTs"),
+                                            JSONObject.toJSONString(reqVo), null),
                                 RespUpdateVO.class);
-                        syShippingOrderItemService.updateSrmPushState(respUpdateVOList);
+                            log.info("推送仓库出运数据返回:{}", JSONArray.toJSONString(respUpdateVOList));
+                            syShippingOrderItemService.updateSrmPushState(respUpdateVOList);
+                        }
                     }
                 }