Procházet zdrojové kódy

回写可队长数量调整

fenghaifu před 1 týdnem
rodič
revize
17351bb120

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/entity/VO/ReqShippingOrderItemVO.java

@@ -2,12 +2,14 @@ package org.jeecg.modules.documents.syShippingOrder.entity.VO;
 
 import lombok.Data;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.documents.letterDeposit.entity.SyLetterDeposit;
 import org.jeecg.modules.documents.letterDeposit.entity.SyLetterDepositItem;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrder;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 推送托书子表实体
@@ -30,6 +32,10 @@ public class ReqShippingOrderItemVO {
     private BigDecimal declarationUnitPrice;
     // 装柜日期(表头)
     private String loadingDate;
+    // 船期
+    private String theFinalShippingDate;
+    // 是否TC
+    private String isTc;
 
 
     public void fromShippingOrder(SyShippingOrderItem shippingOrderItem,
@@ -40,9 +46,15 @@ public class ReqShippingOrderItemVO {
         number = shippingOrderItem.getNumber();
         declarationUnitPrice = shippingOrderItem.getDeclarationUnitPrice();
         exportInvoiceNo = shippingOrder.getExportInvoiceNo();
+        isTc = shippingOrderItem.getIsTc();
         if("成衣".equals(shippingOrder.getReadyFabric())){
             exportInvoiceNo = vbillcode;
             loadingDate = shippingOrder.getLatestDateOfShipment();
+            if (oConvertUtils.isEmpty(shippingOrder.getTheFinalShippingDate())){
+                theFinalShippingDate = "";
+            }else {
+                theFinalShippingDate = DateUtils.date2Str(shippingOrder.getTheFinalShippingDate(), DateUtils.date_sdf.get());
+            }
         }
 
     }

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

@@ -0,0 +1,18 @@
+package org.jeecg.modules.documents.syShippingOrder.entity.VO;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 托书生成后,采购类的出运,推可对账数量
+ */
+@Data
+public class ReqSyShippingDetailsItemVO {
+    // 托书子表id
+    String shippingOrderItemId;
+    // 出运明细子表id
+    String shippingDetailItemId;
+    // 总出运数量
+    BigDecimal totalQuantity;
+}

+ 16 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/entity/VO/ReqSyShippingDetailsVO.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.documents.syShippingOrder.entity.VO;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 托书生成后,采购类的出运,推可对账数量
+ */
+@Data
+public class ReqSyShippingDetailsVO {
+    // 推送token
+    String verifyToken;
+    // 行明细
+    List<ReqSyShippingDetailsItemVO> itemList;
+}

+ 11 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/mapper/SyShippingOrderItemMapper.java

@@ -1,7 +1,12 @@
 package org.jeecg.modules.documents.syShippingOrder.mapper;
 
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.documents.letterDeposit.entity.SyRmb;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.documents.syShippingOrder.entity.VO.ReqSyShippingDetailsItemVO;
+
+import java.util.List;
 
 /**
  * @Description: 托书子表实体类
@@ -10,5 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Version: V1.0
  */
 public interface SyShippingOrderItemMapper extends BaseMapper<SyShippingOrderItem> {
+    /**
+     * 根据托书子表id,查询出运明细子表id对应的实际报关数量
+     * @param id
+     * @return
+     */
+    ReqSyShippingDetailsItemVO queryPackingQuantity(@Param("id") String id);
 
 }

+ 13 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/syShippingOrder/mapper/xml/SyShippingOrderItemMapper.xml

@@ -1,5 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.documents.syShippingOrder.mapper.SyShippingOrderItemMapper">
+    <select id="query" resultType="org.jeecg.modules.documents.syShippingOrder.entity.VO.ReqSyShippingDetailsItemVO">
 
+        select a.id as shipping_order_item_id,c.id as shipping_detail_item_id,
+               (select sum(x.actual_declared_quantity) from sy_packing_list_fabric_item x
+                    join sy_shipping_details_item y on x.sy_shipping_details_item_id =y.id
+                    join sy_shipping_order_item z on z.tailoring_fabric_item_id=x.id
+                    join sy_shipping_order u on z.sy_shipping_order_item_id=u.id
+                    join sy_packing_list_fabric v on x.sy_packing_list_fabric_id=v.id
+                where u.del_flag=0 and y.id=c.id and v.del_flag=0 ) as total_quantity
+        from sy_shipping_order_item a
+                 join sy_packing_list_fabric_item b on a.tailoring_fabric_item_id=b.id
+                 join sy_shipping_details_item c on b.sy_shipping_details_item_id=c.id
+        where a.id=#{id}
+    </select>
 </mapper>

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/service/ISenYuDataSourceThree.java

@@ -22,4 +22,12 @@ public interface ISenYuDataSourceThree {
 
     //修改材料出库单是否同步成功!
     public boolean updateRdrecord(String sql,float cDefine16,String id);
+
+    /**
+     * 根据账套号,采购/委外订单id,采购/委外订单号,获取采购/委外类型
+     * @param account
+     * @param orderId
+     * @return
+     */
+    String getOrderType(String account, String orderId, String orderCode);
 }

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/openApi/service/impl/SenYuDataSourceThreeServiceImpl.java

@@ -103,5 +103,17 @@ public class SenYuDataSourceThreeServiceImpl implements ISenYuDataSourceThree {
         return flag;
     }
 
+    /**
+     * 根据账套号,采购/委外订单id,采购/委外订单号,获取采购/委外类型
+     * @param account
+     * @param orderId
+     * @return
+     */
+    @Override
+    public String getOrderType(String account, String orderId, String orderCode){
+        String sql = "select order_type from view_ompo_order_type where source_system= '"+account+
+                "' and id = "+orderId+" and code = '"+orderCode+"'";
+        return jdbcTemplate.queryForObject(sql, String.class);
+    }
 
 }

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

@@ -25,11 +25,17 @@ import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrder;
 import org.jeecg.modules.documents.syShippingOrder.entity.SyShippingOrderItem;
 import org.jeecg.modules.documents.syShippingOrder.entity.VO.ReqShippingOrderItemVO;
 import org.jeecg.modules.documents.syShippingOrder.entity.VO.ReqShippingOrderVO;
+import org.jeecg.modules.documents.syShippingOrder.entity.VO.ReqSyShippingDetailsItemVO;
+import org.jeecg.modules.documents.syShippingOrder.entity.VO.ReqSyShippingDetailsVO;
+import org.jeecg.modules.documents.syShippingOrder.mapper.SyShippingOrderItemMapper;
 import org.jeecg.modules.documents.syShippingOrder.service.ISyShippingOrderItemService;
 import org.jeecg.modules.documents.syShippingOrder.service.ISyShippingOrderService;
 import org.jeecg.modules.openApi.entity.DxpDataPlan;
 import org.jeecg.modules.openApi.service.IDxpDataPlanService;
+import org.jeecg.modules.openApi.service.ISenYuDataSourceThree;
 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.system.util.HttpHelper;
 import org.jeecg.modules.system.util.InterfaceConnUtils;
@@ -41,6 +47,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -69,6 +76,12 @@ public class PushShippingDetailsJob implements Job {
     private ISyShippingOrderService syShippingOrderService;
     @Autowired
     private ISyPackingListFabricService syPackingListFabricService;
+    @Autowired
+    private ISenYuDataSourceThree senYuDataSourceThree;
+    @Autowired
+    private ISyPackingListFabricItemService syPackingListFabricItemService;
+    @Resource
+    private SyShippingOrderItemMapper syShippingOrderItemMapper;
 
     // srm调用校验码
     @Value("${srm.access-token}")
@@ -176,7 +189,9 @@ public class PushShippingDetailsJob implements Job {
                     LambdaQueryWrapper<SyShippingOrder> mQueryWrapper = new LambdaQueryWrapper<>();
                     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<ReqShippingOrderItemVO> reqVoList = new ArrayList<>(); // 回写托书信息
+                    List<ReqSyShippingDetailsItemVO> reqQuantityList = new ArrayList<>(); // 回写可以对账数量
+                    List<RespUpdateVO> errList = new ArrayList<>();
                     List<SyPackingListFabric> packingListFabricList = new ArrayList<>();
                     for (SyShippingOrderItem item : itemList){
                         SyShippingOrder findOrder = orderList.stream().filter(x -> x.getId().equals(item.getSyShippingOrderItemId())).findFirst().orElse(null);
@@ -187,17 +202,37 @@ public class PushShippingDetailsJob implements Job {
                             ReqShippingOrderItemVO reqVo = new ReqShippingOrderItemVO();
                             reqVo.fromShippingOrder(item, findOrder);
                             if (!"成衣".equals(findOrder.getReadyFabric())){
-                                // 拉取装箱单表头外销发票号
-                                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);
+                                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);
+                                    }
+                                    reqVo.setExportInvoiceNo(syPackingListFabric.getExportInvoiceNo());
+                                    reqVoList.add(reqVo);
                                 }
-                                reqVo.setExportInvoiceNo(syPackingListFabric.getExportInvoiceNo());
+                            }else {
+                                reqVoList.add(reqVo);
                             }
-                            reqVoList.add(reqVo);
                         }
                     }
+                    if (errList.size()>0){
+                        syShippingOrderItemService.updateSrmPushState(errList);
+                    }
                     if (reqVoList.size()>0){
                         ReqShippingOrderVO reqVo = new ReqShippingOrderVO();
                         reqVo.setVerifyToken(srmAccessToken);
@@ -206,6 +241,14 @@ public class PushShippingDetailsJob implements Job {
                                 RespUpdateVO.class);
                         syShippingOrderItemService.updateSrmPushState(respUpdateVOList);
                     }
+                    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);
+                    }
                 }
 
             }
@@ -270,4 +313,15 @@ public class PushShippingDetailsJob implements Job {
             e.printStackTrace();
         }*/
     }
+
+    private String getOrderType(SyShippingOrderItem syShippingOrderItem){
+        QueryWrapper<SyPackingListFabricItem> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SyPackingListFabricItem::getId,syShippingOrderItem.getTailoringFabricItemId());
+        List<SyPackingListFabricItem> syPackingListFabricItems = syPackingListFabricItemService.list(queryWrapper);
+        if (syPackingListFabricItems.size() == 0){
+            return "";
+        }
+        SyPackingListFabricItem item = syPackingListFabricItems.get(0);
+        return senYuDataSourceThree.getOrderType(item.getAccount(), item.getOmpoId(), item.getPurOrSubOrder());
+    }
 }