Prechádzať zdrojové kódy

wms同步到wcs
1.入库同步已完成
2.出库同步 --ing

LZH 2 rokov pred
rodič
commit
ec471e862d

+ 33 - 0
ruoyi-admin/src/main/java/com/ruoyi/xuankuang/controller/WmsToWcsApiController.java

@@ -0,0 +1,33 @@
+package com.ruoyi.xuankuang.controller;
+
+
+import com.ruoyi.ams.xuankuang.service.WmsDocAsnSubService;
+import com.ruoyi.ams.xuankuang.service.WmsDocOrderSubService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/Wms/Wcs")
+public class WmsToWcsApiController {
+    @Autowired
+    private WmsDocAsnSubService wmsDocAsnSubService;
+    @Autowired
+    private WmsDocOrderSubService wmsDocOrderSubService;
+
+    @PreAuthorize("@ss.hasPermi('docAsn:docAsn:push')")
+    @GetMapping(value = "/queryDocAsnDetails/{asnNo}")
+    public AjaxResult queryDocAsnDetails(@PathVariable("asnNo") String asnNo){
+        return wmsDocAsnSubService.queryDocAsnDetails(asnNo);
+    }
+
+    @PreAuthorize("@ss.hasPermi('docOrder:docOrder:push')")
+    @GetMapping(value = "/queryDocOrderDetails/{orderNo}")
+    public AjaxResult queryDocOrderDetails(@PathVariable("orderNo") String orderNo){
+        return wmsDocOrderSubService.initOrderDetails(orderNo);
+    }
+}

+ 8 - 0
ruoyi-ui/src/api/docAsn/docAsn.js

@@ -43,6 +43,14 @@ export function delDocAsn(asnNo) {
   })
 }
 
+// 推送入库单
+export function pushDocAsn(asnNo) {
+  return request({
+    url: '/Wms/Wcs/queryDocAsnDetails/' + asnNo,
+    method: 'get'
+  })
+}
+
 // 新增入库单
 export function addDocAsnDetails(data) {
   return request({

+ 7 - 0
ruoyi-ui/src/api/docOrder/docOrder.js

@@ -26,6 +26,13 @@ export function addDocOrder(data) {
   })
 }
 
+// 推送出库单
+export function pushDocOrder(orderNo) {
+  return request({
+    url: '/Wms/Wcs/queryDocOrderDetails/' + orderNo,
+    method: 'get'
+  })
+}
 // 修改出库单头
 export function updateDocOrder(data) {
   return request({

+ 24 - 2
ruoyi-ui/src/views/wms/docAsn/index.vue

@@ -97,6 +97,17 @@
           v-hasPermi="['docAsn:docAsn:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-message"
+          size="mini"
+          :disabled="multiple"
+          @click="handlePush"
+          v-hasPermi="['docAsn:docAsn:push']"
+        >发送</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -175,7 +186,7 @@
 </template>
 
 <script>
-import { listDocAsn, getDocAsn, delDocAsn, addDocAsn, updateDocAsn, closeDocAsn } from "@/api/docAsn/docAsn";
+import { listDocAsn, getDocAsn, delDocAsn, addDocAsn, updateDocAsn, closeDocAsn,pushDocAsn} from "@/api/docAsn/docAsn";
 import AddOrUpdate from './docAsnHeader-add-or-update'
 
 export default {
@@ -290,7 +301,8 @@ export default {
         hEdi12: null,
         hEdi13: null,
         hEdi14: null,
-        hEdi15: null
+        hEdi15: null,
+        desc2:null
       };
       this.wmsDocAsnDetailsList = [];
       this.resetForm("form");
@@ -357,6 +369,16 @@ export default {
         this.getList();
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
+    },
+    /** 发送按钮操作 */
+    handlePush(row) {
+      const asnNos = row.asnNo || this.ids;
+      this.$modal.confirm('是否确认发送入库单编号为"' + asnNos + '"的数据项?').then(function() {
+        return pushDocAsn(asnNos);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("发送成功");
+      }).catch(() => {});
     },
 	/** 入库单体序号 */
     rowWmsDocAsnDetailsIndex({ row, rowIndex }) {

+ 26 - 2
ruoyi-ui/src/views/wms/docOrder/index.vue

@@ -68,6 +68,17 @@
         >新增
         </el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-message"
+          size="mini"
+          :disabled="multiple"
+          @click="handlePush"
+          v-hasPermi="['docOrder:docOrder:push']"
+        >发送</el-button>
+      </el-col>
       <!--<el-col :span="1.5">
         <el-button
           type="success"
@@ -192,9 +203,11 @@ import {
   addDocOrder,
   updateDocOrder,
   doAllocation,
-  doCancel
+  doCancel,
+  pushDocOrder
 } from "@/api/docOrder/docOrder";
 import AddOrUpdate from './docOrderHeader-add-or-update'
+import {pushDocAsn} from "@/api/docAsn/docAsn";
 
 export default {
   name: "DocOrder",
@@ -315,7 +328,8 @@ export default {
         hEdi12: null,
         hEdi13: null,
         hEdi14: null,
-        hEdi15: null
+        hEdi15: null,
+        desc2:null
       };
       this.resetForm("form");
     },
@@ -343,6 +357,16 @@ export default {
         this.$refs.addOrUpdate.init('undefine')
       })
     },
+    /** 发送按钮操作 */
+    handlePush(row) {
+      const orderNos = row.orderNo || this.ids;
+      this.$modal.confirm('是否确认发送出库单编号为"' + orderNos + '"的数据项?').then(function() {
+        return pushDocOrder(orderNos);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("发送成功");
+      }).catch(() => {});
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();

+ 12 - 1
warewms-ams/src/main/java/com/ruoyi/ams/asn/domain/WmsDocAsnDetails.java

@@ -15,6 +15,17 @@ import com.ruoyi.common.core.domain.BaseEntity;
 public class WmsDocAsnDetails extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
+    /** 物料类型 */
+    private int desc2;
+
+    public int getDesc2() {
+        return desc2;
+    }
+
+    public void setDesc2(int desc2) {
+        this.desc2 = desc2;
+    }
+
 
     /** 行号 */
     private Long asnLineNo;
@@ -43,7 +54,7 @@ public class WmsDocAsnDetails extends BaseEntity
     private BigDecimal receivedQtyEach;
 
     /** 行状态(00新建,10上架) */
-    @Excel(name = "行状态(00新建,10上架)")
+    @Excel(name = "行状态(00新建,10同步成功)")
     private String lineStatus;
 
     /** 冻结原因 */

+ 13 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/domain/WmsDocOrderDetails.java

@@ -16,6 +16,19 @@ public class WmsDocOrderDetails extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
+
+    /** 物料类型 */
+    private int desc2;
+
+
+    public int getDesc2() {
+        return desc2;
+    }
+
+    public void setDesc2(int desc2) {
+        this.desc2 = desc2;
+    }
+
     /** 出库单号 */
     private String orderNo;
 

+ 57 - 0
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocAsnSubService.java

@@ -1,8 +1,24 @@
 package com.ruoyi.ams.xuankuang.service;
 
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
+import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm;
+import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.common.core.domain.AjaxResult;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * 入库业务
@@ -11,6 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
  * @version 1.0
  * @date 2023/3/30 10:51
  */
+@Slf4j
+@Service
 public class WmsDocAsnSubService {
 
     @Autowired
@@ -19,6 +37,45 @@ public class WmsDocAsnSubService {
     private IWmsDocAsnDetailsService iWmsDocAsnDetailsService;
 
 
+    @Transactional
+    public AjaxResult queryDocAsnDetails(@PathVariable("asnNo") String asnNo) {
+        //  根据单号,和创建状态为00
+        WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails();
+        wmsDocAsnDetails.setAsnNo(asnNo);
+        wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS00.getValue());
+        List<WmsDocAsnDetails> list = iWmsDocAsnDetailsService.selectWmsDocAsnDetailsList(wmsDocAsnDetails);
+
+        WmsDocAsnHeader wmsDocAsnHeader = iWmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo);
+        boolean con = true;
+        for (WmsDocAsnDetails details:list) {
+            BillTaskForm billTaskForm = new BillTaskForm();
+            billTaskForm.setDocNo(details.getAsnNo());
+            billTaskForm.setTaskNo(details.getAsnLineNo().toString());
+            if (details.getDesc2()!=5){
+                billTaskForm.setPackageType(1);
+            }
+            billTaskForm.setType(Constant.ASN_TYP.getByValue(wmsDocAsnHeader.getAsnType()).getValue1());
+            billTaskForm.setNum(details.getExpectedQty().intValue());
+//            billTaskForm.setDest(Constant.PRODUCTION_LINE_SITE.getByValue());
+            billTaskForm.setMaterial(details.getDesc2());
+            WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService();
+            WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsBillTask(billTaskForm);
+            if (!wcsResponseVo.isSuccess()) {
+                con = false;
+                continue;
+            }
+            // 修改 明细行状态为10
+            details.setLineStatus(Constant.ASN_STS.STS10.getValue());
+            iWmsDocAsnDetailsService.updateWmsDocAsnDetails(details);
+        }
+        if (con == true) {
+            // 修改 单头10
+            wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue());
+            iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader);
+        }
+        return AjaxResult.success("", list);
+    }
+
 
 
 

+ 35 - 2
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocOrderSubService.java

@@ -1,8 +1,21 @@
 package com.ruoyi.ams.xuankuang.service;
 
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
+import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
+import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
 import com.ruoyi.ams.order.service.IWmsDocOrderDetailsService;
 import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
+import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.common.core.domain.AjaxResult;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
 
 /**
  * 出库业务
@@ -11,14 +24,34 @@ import org.springframework.beans.factory.annotation.Autowired;
  * @version 1.0
  * @date 2023/3/30 10:51
  */
+@Slf4j
+@Service
 public class WmsDocOrderSubService {
 
     @Autowired
     private IWmsDocOrderHeaderService iWmsDocOrderHeaderService;
     @Autowired
     private IWmsDocOrderDetailsService iWmsDocOrderDetailsService;
-
-
+    @Transactional
+    public AjaxResult initOrderDetails(@PathVariable("orderNo") String orderNo) {
+        List<WmsDocOrderDetails> list = iWmsDocOrderHeaderService.initOrderDetails(orderNo);
+        WmsDocOrderHeader wmsDocOrderHeader = iWmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
+        for (WmsDocOrderDetails details:list) {
+            BillTaskForm billTaskForm = new BillTaskForm();
+            billTaskForm.setDocNo(details.getOrderNo());
+            billTaskForm.setTaskNo(details.getOrderLineNo().toString());
+            if (details.getDesc2()==5){
+                billTaskForm.setPackageType(2);
+            }
+            billTaskForm.setType(Constant.ASN_TYP.getByValue(wmsDocOrderHeader.getOrderType()).getValue1());
+            billTaskForm.setNum(details.getQtyOrdered().intValue());
+//            billTaskForm.setDest(Constant.PRODUCTION_LINE_SITE.getByValue());
+            billTaskForm.setMaterial(details.getDesc2());
+//            WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService();
+//            wmsToWcsApiService.wmsBillTask(billTaskForm);
+        }
+        return AjaxResult.success("", list);
+    }
 
 
 

+ 1 - 1
warewms-ams/src/main/resources/mapper/docAsn/WmsDocAsnHeaderMapper.xml

@@ -391,7 +391,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectWmsDocDetails" parameterType="string" resultMap="WmsDocAsnDetailsListResult">
-        select *,b.desc1 sku_name,ast.dict_label line_status_name
+        select *,b.desc1 sku_name,ast.dict_label line_status_name,b.desc2
         from wms_doc_asn_details de
         left join base_sku b on de.sku = b.sku
         left join (select * from sys_dict_data where dict_type = 'asn_status') ast on de.line_status = ast.dict_value

+ 3 - 1
warewms-ams/src/main/resources/mapper/docOrder/WmsDocOrderDetailsMapper.xml

@@ -102,7 +102,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectWmsDocOrderDetailsByOrderNo" parameterType="String" resultMap="WmsDocOrderDetailsResult">
-        <include refid="selectWmsDocOrderDetailsVo"/>
+        select a.*,b.desc2
+        from wms_doc_order_details a
+        left join base_sku b on a.sku = b.sku
         where order_no = #{orderNo}
     </select>
 

+ 2 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -219,6 +219,8 @@ public class Constant {
          * 订单创建
          */
         STS00("00"),
+        STS10("10"),
+        STS20("20"),
         /**
          * 部分收货
          */