From 57148c2264abe80bd3b472f2980104d90dad5c61 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 13 九月 2025 08:35:32 +0800
Subject: [PATCH] 合并,接口优化等

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs                            |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs                           |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderRepository.cs             |   18 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/proCollectOutOrder.js                           |  110 +++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/ProCollectOutOrderController.cs |   23 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs                      |   10 
 代码管理/WMS/WIDESEA_WMSClient/src/views/outbound/proCollectOutOrder.vue                              |  314 ++++++++++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrder.cs                 |   53 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderService.cs                   |  105 +++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs                             |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderDetailRepository.cs     |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs                           |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs  |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderService.cs                 |   26 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs                  |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs                |   22 
 代码管理/WMS/WIDESEA_WMSClient/src/router/viewGird.js                                                 |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs                          |    5 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs                              |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderDetailService.cs           |   18 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                          |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs                          |  134 +++++-
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderRepository.cs           |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                                |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                 |   23 -
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs                     |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrderDetail.cs           |  117 +++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderDetailService.cs             |   52 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs                    |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderDetailRepository.cs       |   18 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs                          |   19 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs                           |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs                        |   37 +
 33 files changed, 1,135 insertions(+), 87 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/proCollectOutOrder.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/proCollectOutOrder.js"
new file mode 100644
index 0000000..f918ec2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/proCollectOutOrder.js"
@@ -0,0 +1,110 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import { el } from 'element-plus/es/locales.mjs';
+import gridBody from './extend/proOutboundOrderDetail.vue'
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: gridBody,
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+        let outSysc = this.buttons.find(x => x.value == 'ExecuteOutboundSync');
+        if (outSysc) {
+          outSysc.onClick = function () {
+            let rows = this.$refs.table.getSelected();
+            if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+            if (rows.length > 1) return this.$error("璇烽�夋嫨鍗曟潯鏁版嵁!");
+            // this.$confirm("纭鍒涘缓鏀惰揣鍗�" + rows[0].receiveOrderNo + "鐨勫叆搴撳悧?", "璀﹀憡", {
+            //   confirmButtonText: "纭畾",
+            //   cancelButtonText: "鍙栨秷",
+            //   type: "warning",
+            //   center: true,
+            // }).then(() => {
+
+              var keys = rows.map(x => { return x.proOutOrderNo });
+              this.http
+                .post("api/ProOutOrder/OutProErpSync?outProOrderNo=" + keys[0], null, "鏁版嵁澶勭悊涓�")
+                .then((x) => {
+                  if (!x.status) return this.$message.error(x.message);
+                  this.$message.success("鎿嶄綔鎴愬姛");
+                  this.refresh();
+                });
+            // });
+          }
+
+        }
+        //鎵╁睍椤甸潰鍒濆鍖栨搷浣�
+        this.columns.push({
+            field: '鎿嶄綔',
+            title: '鎿嶄綔',
+            width: 90,
+            fixed: 'right',
+            align: 'center',
+            formatter: (row) => {
+                return (
+                    '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">鏌ョ湅鏄庣粏</i>'
+                );
+            },
+            click: (row) => {
+                this.$refs.gridBody.open(row);
+            }
+        });
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+        let outSysc = this.buttons.find(x => x.value == 'ExecuteOutboundSync'); 
+        console.log(outSysc);
+        if (row.proOrderStatus==2) {
+          if (!outSysc.hidden){
+            this.$message.warning(row.proOutOrderNo+"璁㈠崟宸插畬鎴愶紝鏃犻渶鍚屾");
+            outSysc.hidden=true;
+          }
+        }else{
+          outSysc.hidden=false;
+        }
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/router/viewGird.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/router/viewGird.js"
index fddf1a5..7007117 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/router/viewGird.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/router/viewGird.js"
@@ -302,6 +302,10 @@
     path: '/inspectOrder',
     name: 'inspectOrder',
     component: () => import('@/views/check/inspectOrder.vue')
+  }, {
+    path: '/proCollectOutOrder',
+    name: 'proCollectOutOrder',
+    component: () => import('@/views/outbound/proCollectOutOrder.vue')
   }
 ]
 export default viewgird
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/proCollectOutOrder.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/proCollectOutOrder.vue"
new file mode 100644
index 0000000..8ee5188
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/proCollectOutOrder.vue"
@@ -0,0 +1,314 @@
+
+<template>
+    <view-grid
+      ref="grid"
+      :columns="columns"
+      :detail="detail"
+      :editFormFields="editFormFields"
+      :editFormOptions="editFormOptions"
+      :searchFormFields="searchFormFields"
+      :searchFormOptions="searchFormOptions"
+      :table="table"
+      :extend="extend"
+    >
+    </view-grid>
+  </template>
+      <script>
+  import extend from "@/extension/outbound/proCollectOutOrder.js";
+  import { ref, defineComponent } from "vue";
+  export default defineComponent({
+    setup() {
+      const table = ref({
+        key: "id",
+        footer: "Foots",
+        cnName: "鎴愬搧棰嗘枡鍑哄簱鍗�",
+        name: "proCollectOutOrder",
+        url: "/proCollectOutOrder/",
+        sortName: "id",
+      });
+      const editFormFields = ref({
+        proOrderType: "",
+        proCollectOutOrderNo: "",
+        proOrderStatus: "",
+        warehouseId: "",
+      });
+      const editFormOptions = ref([
+        [
+          {
+            title: "鍗曟嵁绫诲瀷",
+            required: true,
+            field: "proOrderType",
+            type: "select",
+            dataKey: "ProOrderType",
+            data: [{key:2,value:"鎴愬搧棰嗘枡鍑哄簱鍗�"}]
+          },
+          {
+            field: "proCollectOutOrderNo",
+            title: "鍗曟嵁缂栧彿",
+            type: "string",
+            readonly: true,
+          },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "proOrderStatus",
+            type: "select",
+            dataKey: "outboundStatusEnum",
+            data: [],
+            readonly: true,
+          },
+          {
+            title: "浠撳簱",
+            field: "warehouseId",
+            type: "select",
+            dataKey: "warehouses",
+            data: [],
+            required: true,
+          },
+        ],
+      ]);
+      const searchFormFields = ref({
+        proOutOrderNo: "",
+        proOrderStatus: "",
+      });
+      const searchFormOptions = ref([
+        [
+          { title: "鍑哄簱鍗曞彿", field: "proOutOrderNo", type: "like" },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "proOrderStatus",
+            type: "select",
+            dataKey: "outboundStatusEnum",
+            data: [],
+          },
+        ]
+      ]);
+      const columns = ref([
+        {
+          field: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+          readonly: true,
+          require: true,
+          align: "left",
+        },
+        {
+          field: "warehouseId",
+          title: "浠撳簱",
+          type: "string",
+          width: 90,
+          align: "left",
+          bind: { key: "warehouses", data: [] },
+        },
+        {
+          field: "proCollectOutOrderNo",
+          title: "鍑哄簱鍗曞彿",
+          type: "string",
+          width: 160,
+          align: "left",
+          link: true,
+        },
+        {
+          field: "proOrderType",
+          title: "鍗曟嵁绫诲瀷",
+          type: "string",
+          width: 150,
+          align: "left",
+          bind: { key: "ProOrderType", data: [{key:2,value:"鎴愬搧棰嗘枡鍑哄簱鍗�"}] },
+        },
+        {
+          field: "proOrderStatus",
+          title: "鍗曟嵁鐘舵��",
+          type: "decimal",
+          width: 90,
+          align: "left",
+          bind: { key: "outboundStatusEnum", data: [] },
+        },
+        // {
+        //   field: "createType",
+        //   title: "鍒涘缓鏂瑰紡",
+        //   type: "string",
+        //   width: 120,
+        //   align: "left",
+        //   bind: { key: "createType", data: [] },
+        // },
+        // {
+        //   field: "departmentCode",
+        //   title: "淇敼鏃堕棿",
+        //   type: "string",
+        //   width: 120,
+        //   align: "left",
+        //   hidden: true,
+        // },
+        {
+          field: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+          align: "left",
+        },
+        // {
+        //   field: "modifier",
+        //   title: "淇敼浜�",
+        //   type: "string",
+        //   width: 100,
+        //   align: "left",
+        // },
+        // {
+        //   field: "modifyDate",
+        //   title: "淇敼鏃堕棿",
+        //   type: "datetime",
+        //   width: 160,
+        //   align: "left",
+        // },
+        {
+          field: "remark",
+          title: "澶囨敞",
+          type: "string",
+          width: 100,
+          align: "left",
+        },
+      ]);
+      const detail = ref({
+        cnName: "鍑哄簱鏄庣粏鍗�",
+        table: "proCollectOutOrderDetail",
+        columns: [
+          {
+            field: "id",
+            title: "Id",
+            type: "int",
+            width: 90,
+            hidden: true,
+            readonly: true,
+            require: true,
+            align: "left",
+          },
+          {
+            field: "proCollectOrderId",
+            title: "鍑哄簱鍗曚富閿�",
+            type: "string",
+            width: 90,
+            align: "left",
+            hidden: true,
+          },
+          {
+            field: "rowId",
+            title: "琛屽彿",
+            type: "string",
+            width: 90,
+            align: "left",
+            required: true,
+          },
+          {
+            field: "pCode",
+            title: "浜у搧缂栫爜",
+            type: "string",
+            width: 150,
+            align: "left",
+            required: true,
+          },
+          {
+            field: "pVer",
+            title: "浜у搧鐗堟湰",
+            type: "string",
+            width: 150,
+            align: "left",
+          },
+          {
+            field: "lLot",
+            title: "浜у搧鎵规",
+            type: "string",
+            width: 90,
+            align: "left",
+          },
+          {
+            field: "dateCode",
+            title: "浜у搧鍛ㄦ湡",
+            type: "string",
+            width: 100,
+            align: "left",
+          },
+          {
+            field: "qtyPcs",
+            title: "鍑哄簱鍚堟牸PCS鏁�",
+            type: "string",
+            width: 130,
+            align: "left",
+            required: true,
+          },
+          
+          {
+            field: "overQtyPcs",
+            title: "宸插嚭鏁伴噺",
+            type: "string",
+            width: 100,
+            align: "left",
+          },
+          {
+            field: "lockQtyPcs",
+            title: "閿佸畾鏁伴噺",
+            type: "string",
+            width: 100,
+            align: "left",
+          },
+          {
+            field: "setQty",
+            title: "Set鏁�",
+            type: "string",
+            width: 100,
+            align: "left",
+          },
+          {
+            field: "proOrderDetailStatus",
+            title: "璁㈠崟鏄庣粏鐘舵��",
+            type: "string",
+            width: 180,
+            align: "left",
+            bind: { key: "orderDetailStatusEnum", data: [] },
+          },
+          {
+            field: "unit",
+            title: "鍗曚綅",
+            type: "string",
+            width: 100,
+            align: "left",
+          },
+          {
+            field: "orderDate",
+            title: "瀹℃牳鏃ユ湡",
+            type: "datetime",
+            width: 160,
+            align: "left",
+          },
+          {
+            field: "remark",
+            title: "澶囨敞",
+            type: "string",
+            width: 100,
+            align: "left",
+          },
+        ],
+        sortName: "id",
+        key: "id",
+      });
+      return {
+        table,
+        extend,
+        editFormFields,
+        editFormOptions,
+        searchFormFields,
+        searchFormOptions,
+        columns,
+        detail,
+      };
+    },
+  });
+  </script>  
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs"
index 5841275..17c9e38 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_BC.cs"
@@ -75,15 +75,15 @@
 
                 if(heightType == 1)
                 {
-                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x=>x.Layer <= 3).ToList();
-                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 3).ToList();
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x=>x.Layer <= 4).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
                 }
-                else if(heightType == 2)
-                {
-                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer == 4).ToList();
-                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer == 4).ToList();
-                }
-                else if (heightType == 3)
+                //else if(heightType == 2)
+                //{
+                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer == 4).ToList();
+                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer == 4).ToList();
+                //}
+                else if (heightType == 2)
                 {
                     undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer == 5).ToList();
                     definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer == 5).ToList();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
index 6a77d8a..afc0bc2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
@@ -3,8 +3,10 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -12,6 +14,7 @@
 using WIDESEA_Core.Helper;
 using WIDESEA_External.Model;
 using WIDESEA_IApprovalRepository;
+using WIDESEA_IBasicRepository;
 using WIDESEA_ICheckRepository;
 using WIDESEA_ICheckService;
 using WIDESEA_IInboundRepository;
@@ -31,7 +34,10 @@
         private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository;
         private readonly IOutboundRepository _outboundRepository;
         private readonly IStockRepository _stockRepository;
-        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository) : base(BaseDal)
+        private readonly IWarehouseRepository _warehouseRepository;
+        private readonly IReceiveOrderDetailRepository _receiveOrderDetailRepository;
+
+        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository,IWarehouseRepository warehouseRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository) : base(BaseDal)
         {
             _checkOrderRepository = checkOrderRepository;
             _unitOfWorkManage = unitOfWorkManage;
@@ -41,6 +47,8 @@
             _purchaseOrderDetailRepository = purchaseOrderDetailRepository;
             _outboundRepository = outboundRepository;
             _stockRepository = stockRepository;
+            _warehouseRepository=warehouseRepository;
+            _receiveOrderDetailRepository = receiveOrderDetailRepository;
         }
 
         /// <summary>
@@ -61,6 +69,7 @@
                 {
                     return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
                 }
+                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
                 Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                 if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt())
                 {
@@ -178,6 +187,8 @@
                 {
                     return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
                 }
+                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
+                //鑾峰彇鏀惰揣鍗�
                 Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                 if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt())
                 {
@@ -203,6 +214,7 @@
                     {
                         return content.Error($"鏈壘鍒扮己闄风被鍨�");
                     }
+                    //妫�楠岀粨鏋�
                     checkOrderResult = new Dt_CheckOrderResult()
                     {
                         Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity),
@@ -212,7 +224,7 @@
                         Note = eRPCheckResult.Note,
                         SampleCount = 0,
                     };
-                    //鑾峰彇瀵瑰簲閲囪喘鍗�
+                    //鑾峰彇瀵瑰簲閲囪喘鍗曟墸闄ゆ敹璐ф暟閲�
                     Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo);
                     purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First();
                     if (purchaseOrder == null)
@@ -226,6 +238,7 @@
                     }
                     purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity);
                 }
+                //鍒ゆ柇妫�楠屽悎鏍肩粨鏋�
                 if (checkModel.Result == CheckAcceptEnum.Accept.ToString())
                 {
                     checkOrder.Result = CheckAcceptEnum.Accept.ToString();
@@ -239,17 +252,33 @@
                     return content.Error("鏈壘鍒版楠岀被鍨�");
                 }
                 checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
+                List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>();
+                //鏍规嵁妫�楠屾暟閲忔墸闄ゅ悎鏍兼暟閲�
                 if (checkOrderResult != null)
                 {
                     checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity;
+                    //鏇存柊鏀惰揣妫�楠屽悎鏍兼爣璇�
+                    if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString())
+                    {
+                        receiveOrderDetails = receiveOrder.Details.Where(x=>x.RowNo==checkOrder.ReceiveDetailRowNo).OrderByDescending(x => x.RowNo).Take((int)checkOrderResult.Quantity).ToList();
+                        receiveOrderDetails.ForEach(x =>
+                        {
+                            x.IsCheckOk = WhetherEnum.True.ObjToInt();
+                        });
+                    }
                 }
                 else
                 {
                     checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
                 }
                 checkOrder.CheckUserName = App.User.UserName;
+                
                 _unitOfWorkManage.BeginTran();
-
+                if (receiveOrderDetails.Count > 0)
+                {
+                    _receiveOrderDetailRepository.UpdateData(receiveOrderDetails);
+                }
+                //鏇存柊閲囪喘鍗�
                 if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null)
                 {
                     BaseDal.AddData(checkOrderResult);
@@ -298,7 +327,7 @@
             try
             {
                 Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId);
-                //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗�
+                //鑾峰彇璐ㄦ鍗�
                 if (checkOrder == null)
                 {
                     return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
index 20c0435..6089636 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
@@ -85,20 +85,28 @@
         EmptyDisk = 125,
 
         /// <summary>
-        /// 鍏朵粬鍏ュ簱鍗�
+        /// 缁翠慨閫�鏂欏崟
         /// </summary>
-        [Description("鍏朵粬鍏ュ簱鍗�")]
-        Other = 130,
+        [Description("缁翠慨閫�鏂欏崟")]
+        RMStock = 130,
+
         /// <summary>
         /// 瀹緵鍥炴敹
         /// </summary>
         [Description("瀹緵鍥炴敹")]
         CustomerRecovery=135,
+
         /// <summary>
         /// 閫佹鍏ュ簱鍗�
         /// </summary>
         [Description("閫佹鍏ュ簱鍗�")]
         Inspect = 140,
+
+        /// <summary>
+        /// Bom閫�鏂欏崟
+        /// </summary>
+        [Description("Bom閫�鏂欏崟")]
+        BomReturn = 145,
     }
     /// <summary>
     /// 鎴愬搧鍏ュ簱鍗曟嵁绫诲瀷
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
index 79a1f01..52b4714 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
@@ -125,5 +125,10 @@
         /// </summary>
         [Description("鎴愬搧璋冩嫧鍑哄簱鍗�")]
         ProOutAllocat = 1,
+        /// <summary>
+        /// 鎴愬搧棰嗘枡鍑哄簱鍗�
+        /// </summary>
+        [Description("鎴愬搧棰嗘枡鍑哄簱鍗�")]
+        ProCollect = 2,
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
index 3d17fc0..337c883 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
@@ -43,6 +43,12 @@
         OutAllocate = 150,
 
         /// <summary>
+        /// 缁翠慨鍙戞枡鍑哄簱
+        /// </summary>
+        [Description("缁翠慨鍙戞枡鍑哄簱")]
+        OutMaintenance = 160,
+
+        /// <summary>
         /// MES鍑哄簱
         /// </summary>
         [Description("MES鍑哄簱")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderDetailRepository.cs"
new file mode 100644
index 0000000..8b97359
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderDetailRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundRepository
+{
+    public interface IProCollectOutOrderDetailRepository : IRepository<Dt_ProCollectOutOrderDetail>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderRepository.cs"
new file mode 100644
index 0000000..155c284
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IProCollectOutOrderRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundRepository
+{
+    public interface IProCollectOutOrderRepository : IRepository<Dt_ProCollectOutOrder>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
index 3f408b2..4537a79 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
@@ -31,5 +31,6 @@
         IErpProTransferOrderService ErpProTransferOrderService { get; }
         IErpProScrapSheetService ErpProScrapSheetService { get; }
         IErpProScrapSheetDetailService ErpProScrapSheetDetailService { get;}
+        IProCollectOutOrderService ProCollectOutOrderService { get; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderDetailService.cs"
new file mode 100644
index 0000000..1ea8f0b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderDetailService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IProCollectOutOrderDetailService : IService<Dt_ProCollectOutOrderDetail>
+    {
+        IProCollectOutOrderDetailRepository Repository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderService.cs"
new file mode 100644
index 0000000..be42546
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProCollectOutOrderService.cs"
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IProCollectOutOrderService : IService<Dt_ProCollectOutOrder>
+    {
+        IProCollectOutOrderRepository Repository { get; }
+
+        /// <summary>
+        /// 鎺ユ敹鎴愬搧棰嗘枡鍑哄簱鍗曟嵁
+        /// </summary>
+        /// <param name="erpProOutLingOrder"></param>
+        /// <returns></returns>
+
+        WebResponseContent ProductOutOrder(ErpProOutLingOrder erpProOutLingOrder);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index ceab17f..19140ee 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -627,7 +627,7 @@
                 #region 鍏ュ簱瀹屾垚涓婃姤ERP
                 if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType != InOrderTypeEnum.Allocat.ObjToInt())
                 {
-                    if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                    if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt() || inboundOrder.OrderType == InOrderTypeEnum.BomReturn.ObjToInt())
                     {
                         FeedbackReturnOrder(inboundOrder, returnOrder);
                     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
index a5ebece..bf5bd87 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
@@ -9,6 +9,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -62,6 +63,7 @@
         {
             try
             {
+                //鑾峰彇鏀惰揣鍗�
                 Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == orderNo).Includes(x => x.Details).First();
                 if (receiveOrder == null)
                 {
@@ -97,6 +99,7 @@
                 {
                     return WebResponseContent.Instance.Error($"搴撳瓨{stockInfo.PalletCode}涓壒娆model.LotNo}宸插瓨鍦�");
                 }
+                //鏃ユ湡鏍煎紡楠岃瘉
                 if (model!=null)
                 {
                     string format = "yyyy-MM-dd"; // 鐩爣鏍煎紡
@@ -274,8 +277,8 @@
                             ReceivedQuantity = model.Quantity,
                             MaterielCode = model.MaterielCode,
                             LotNo = model.LotNo,
-                            MaterielName=materielInfo.MaterielName,
-                            MaterielSpec=materielInfo.MaterielSpec,
+                            MaterielName = materielInfo.MaterielName,
+                            MaterielSpec = materielInfo.MaterielSpec,
                             ReceiveOrderId = receiveOrder.ReceiveOrderId,
                             PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo,
                             IfInspection = materielInfo.IsCheck.ObjToInt(),
@@ -283,7 +286,8 @@
                             PriceInTax = 0,
                             TaxRate = "",
                             RowNo = rowNo + 1,
-                            Unit = purchaseOrderDetail.Unit
+                            Unit = purchaseOrderDetail.Unit,
+                            IsCheckOk = WhetherEnum.False.ObjToInt()
                         };
                         if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt())
                         {
@@ -329,8 +333,10 @@
                         }
                         _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder);
                         _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
-                        if (materielInfo.IsCheck == WhetherEnum.True)
+                        //鐗╂枡妫�楠屼笂浼�
+                        if (materielInfo.IsCheck == WhetherEnum.True && (warehouse.WarehouseCode != WarehouseEnum.HA152.ToString() && warehouse.WarehouseCode != WarehouseEnum.HA58.ToString()))
                         {
+                            //鏀惰揣缁撴灉涓婃姤
                             Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
                             checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt();
                             checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
@@ -367,11 +373,13 @@
                             {
                                 throw new Exception(mesResponseContent.StrMsg);
                             }
+                            //QMS鍥炰紶缁撴灉
                             ReceiveResultDTO? receiveResult = JsonConvert.DeserializeObject<ReceiveResultDTO>(mesResponseContent.Content.ToString());
                             if (receiveResult == null)
                             {
                                 throw new Exception("鎺ユ敹QMS缁撴灉澶辫触");
                             }
+                            //鏇存柊妫�楠屽崟鍙�
                             Dt_CheckOrder _CheckOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == id);
                             _CheckOrder.CheckOrderNo = receiveResult.InspectionNumber;
                             _checkOrderRepository.UpdateData(_CheckOrder);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
index 27f3b20..22685c9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
@@ -1,5 +1,6 @@
 锘縰sing AutoMapper;
 using MailKit.Search;
+using Newtonsoft.Json;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -7,8 +8,10 @@
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_BasicRepository;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -17,9 +20,11 @@
 using WIDESEA_DTO;
 using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.ERP;
+using WIDESEA_DTO.QMS;
 using WIDESEA_DTO.Stock;
 using WIDESEA_External.ERPService;
 using WIDESEA_External.Model;
+using WIDESEA_External.QMSService;
 using WIDESEA_IBasicRepository;
 using WIDESEA_ICheckRepository;
 using WIDESEA_IInboundRepository;
@@ -36,8 +41,10 @@
         private readonly IInboundRepository _inboundRepository;
         private readonly IBasicRepository _basicRepository;
         private readonly IInvokeERPService _invokeERPService;
+        private readonly ISupplierInfoRepository _supplierInfoRepository;
+        private readonly IInvokeQMSService _invokeQMSService;
 
-        public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : base(BaseDal)
+        public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService, ISupplierInfoRepository supplierInfoRepository, IInvokeQMSService invokeQMSService) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
@@ -45,6 +52,8 @@
             _inboundRepository = inboundRepository;
             _basicRepository = basicRepository;
             _invokeERPService = invokeERPService;
+            _supplierInfoRepository = supplierInfoRepository;
+            _invokeQMSService = invokeQMSService;
         }
         public override PageGridData<Dt_ReceiveOrder> GetPageData(PageDataOptions options)
         {
@@ -190,10 +199,13 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
                 }
-
+                Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == receiveOrder.SuppliersId);
+                List<Dt_CheckOrder> checkOrders = new List<Dt_CheckOrder>();
+                //鐢熸垚ERP鎺ㄩ�佷俊鎭�
                 List<RecevieOrderDetailModel> recevieOrderDetails = new List<RecevieOrderDetailModel>();
                 foreach (var item in receiveOrder.Details)
                 {
+                    //娣诲姞鏀惰揣鏄庣粏
                     RecevieOrderDetailModel recevieOrderDetail = new RecevieOrderDetailModel()
                     {
                         Currcode = "",
@@ -206,8 +218,7 @@
                         QtyRecieved = item.ReceivedQuantity,
                         Serno = item.RowNo,
                         Supplotno = item.LotNo,
-                        Taxrate = "",
-
+                        Taxrate = ""
                     };
                     if (receiveOrder.ReceiveOrderType!=ReceiveOrderTypeEnum.PO.ObjToInt())
                     {
@@ -215,6 +226,78 @@
                         recevieOrderDetail.Currcode = "RMB";
                     }
                     recevieOrderDetails.Add(recevieOrderDetail);
+                    if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString())
+                    {
+                        string lotNo = item.LotNo.Substring(0, item.LotNo.IndexOf("-"));
+                        Dt_CheckOrder? ExistcheckOrder = checkOrders.FirstOrDefault(x => x.LotNo == lotNo && x.MaterielCode == item.MaterielCode && x.PurchaseOrderNo == item.PurchaseOrderNo);
+                        if (ExistcheckOrder == null)
+                        {
+                            //妫�楠岀粨鏋滅粨鏋滀笂鎶�
+                            Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(item);
+                            checkOrder.LotNo = lotNo;
+                            checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt();
+                            checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
+                            checkOrder.Result = CheckAcceptEnum.NotCheckAccept.ToString();
+                            checkOrder.QualifiedQuantity = 0;
+                            checkOrder.ReceiveDetailRowNo = item.RowNo;
+                            checkOrder.WarehouseId = receiveOrder.WarehouseId;
+                            checkOrder.ScrappedQuantity = 0;
+                            checkOrder.MaterielSpec = item.MaterielSpec;
+                            checkOrder.ReturnQuantity = 0;
+                            checkOrder.DefectedQuantity = 0;
+                            checkOrder.MaterielName = item.MaterielName;
+                            checkOrders.Add(checkOrder);
+                        }
+                        else
+                        {
+                            //娣诲姞妫�楠屾敹璐ф暟閲�
+                            ExistcheckOrder.ReceivedQuantity += item.ReceivedQuantity;
+                        }
+
+                    }
+                }
+                _unitOfWorkManage.BeginTran();
+                //骞茶啘/PP涓婃姤QMS缁撴灉
+                if (checkOrders.Count > 0)
+                {
+                    foreach (var checkOrder in checkOrders)
+                    {
+                        int id = _checkOrderRepository.AddData(checkOrder);
+                        QMSReceiveCheckModel qMSReceiveCheck = new QMSReceiveCheckModel()
+                        {
+                            UniqueTag = id.ToString(),
+                            EntryNumber = receiveOrder.ReceiveOrderNo,
+                            MaterialCode = checkOrder.MaterielCode,
+                            MaterialName = checkOrder.MaterielName,
+                            Quantity = (decimal)checkOrder.ReceivedQuantity,
+                            SupplierCode = receiveOrder.SuppliersId,
+                            SupplierName = supplierInfo.SupplierName,
+                            BatchNumber = checkOrder.LotNo,
+                            DeliveryNumber = receiveOrder.DeliveryCode,
+                            PurchaseNumber = checkOrder.PurchaseOrderNo,
+                            RowNumber = checkOrder.ReceiveDetailRowNo,
+                            WarehouseCode = warehouse.WarehouseCode,
+                            ReceiptDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                            Remark = " "
+                        };
+                        //璋冪敤QMS鏉ユ枡妫�楠屾帴鍙�
+                        string response = _invokeQMSService.InvokeReceiveCheckApi(qMSReceiveCheck);
+                        MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
+                        if (!mesResponseContent.BSucc)
+                        {
+                            throw new Exception(mesResponseContent.StrMsg);
+                        }
+                        //QMS鍥炰紶缁撴灉
+                        ReceiveResultDTO? receiveResult = JsonConvert.DeserializeObject<ReceiveResultDTO>(mesResponseContent.Content.ToString());
+                        if (receiveResult == null)
+                        {
+                            throw new Exception("鎺ユ敹QMS缁撴灉澶辫触");
+                        }
+                        //鏇存柊妫�楠屽崟鍙�
+                        Dt_CheckOrder _CheckOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == id);
+                        _CheckOrder.CheckOrderNo = receiveResult.InspectionNumber;
+                        _checkOrderRepository.UpdateData(_CheckOrder);
+                    }
                 }
 
                 ERPReceiveModel receiveModel = new ERPReceiveModel()
@@ -232,18 +315,18 @@
                     Way = 1,
                     Details = recevieOrderDetails
                 };
-
                 //鏇存柊鏀惰揣鍗曚俊鎭�
                 receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt();
-                //鏀惰揣鎺ㄩ�佽嚦ER
-                string response = _invokeERPService.InvokeMatReceiveApi(receiveModel);
-                ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>();
+                //鏀惰揣鎺ㄩ�佽嚦ERP
+                string responseReceive = _invokeERPService.InvokeMatReceiveApi(receiveModel);
+                ErpRequestContent requestContent = responseReceive.DeserializeObject<ErpRequestContent>();
                 if (requestContent.res != 1)
                 {
-                    return WebResponseContent.Instance.Error($"{requestContent.Data}");
+                    throw new Exception($"{requestContent.Data}");
                 }
                 receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt();
                 BaseDal.UpdateData(receiveOrder);
+                _unitOfWorkManage.CommitTran();
                 if (receiveOrder.Details.FirstOrDefault(x=>x.IfInspection==WhetherEnum.True.ObjToInt())==null)
                 {
                     //鍒涘缓鍏ュ簱鍗� todo:鏄庣粏閮芥槸涓嶆楠岃嚜鍔ㄥ垱寤哄叆搴撳崟
@@ -253,6 +336,7 @@
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
@@ -294,13 +378,14 @@
             try
             {
                 Dt_ReceiveOrder receiveOrder = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderId == receiveOrderId).Includes(x => x.Details).First();
-                if (receiveOrder.UploadStatus!= WhetherEnum.True.ObjToInt())
-                {
-                    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏉ユ枡涓婁紶ERP澶辫触鏃犳硶鍒涘缓鍏ュ簱鍗曟嵁");
-                }
                 if (receiveOrder == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌鏀惰揣鍗曚俊鎭�");
+                }
+                //ERP鍒ゆ柇鏄惁涓婁紶
+                if (receiveOrder.UploadStatus!= WhetherEnum.True.ObjToInt())
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏉ユ枡涓婁紶ERP澶辫触鏃犳硶鍒涘缓鍏ュ簱鍗曟嵁");
                 }
                 if (receiveOrder.Details == null || receiveOrder.Details.Count() <= 0)
                 {
@@ -310,22 +395,21 @@
                 {
                     return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏈畬鎴�");
                 }
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId==receiveOrder.WarehouseId);
+                //楠岃瘉鍏ュ簱鍗曟槸鍚﹂噸澶嶇敓鎴�
                 Dt_InboundOrder OldCreateOrder = _inboundRepository.InboundOrderRepository.QueryFirst(x => x.UpperOrderNo == receiveOrder.ReceiveOrderNo);
                 if (receiveOrder.CreateInOrderStatus==WhetherEnum.True.ObjToInt() || OldCreateOrder!=null)
                 {
                     return WebResponseContent.Instance.Error($"璇ユ敹璐у崟瀵瑰簲鐨勫叆搴撳崟宸插瓨鍦�");
                 }
-                #region 娉ㄩ噴
+
+                #region 鍒ゆ柇鏀惰揣鍗曟楠屾槸鍚﹀畬鎴�
                 List<Dt_CheckOrder> checkOrders = _checkOrderRepository.QueryData(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo);
                 if (checkOrders.FirstOrDefault(x => x.CheckOrderStatus == CheckOrderStatusEnum.NotCheck.ObjToInt()) != null)
                 {
                     return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏈川妫�瀹屾垚");
                 }
 
-                //if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.ObjToInt()) != null)
-                //{
-                //    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟璐ㄦ缁撴灉瀹℃壒鏈畬鎴�");
-                //}
                 if (checkOrders.FirstOrDefault(x => x.Result != CheckAcceptEnum.Accept.ToString()) != null)
                 {
                     return WebResponseContent.Instance.Error($"鏀惰揣鏄庣粏涓瓨鏈夎川妫�鏈�氳繃");
@@ -343,18 +427,22 @@
                     Details = new List<Dt_InboundOrderDetail>()
                 };
                 List<Dt_MaterielInfo> materielCodeInfos = _basicRepository.MaterielInfoRepository.QueryData(x => receiveOrder.Details.Select(x => x.MaterielCode).ToList().Contains(x.MaterielCode));
-                foreach (var item in receiveOrder.Details)
+                foreach (var item in receiveOrder.Details.Where(x=> x.IsCheckOk!=WhetherEnum.True.ObjToInt()))
                 {
                     float quantity = item.ReceivedQuantity;
                     #region 娉ㄩ噴
                     if (item.IfInspection == WhetherEnum.True.ObjToInt())
                     {
-                        Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo);
-                        if (checkOrder == null)
+                        if (warehouse.WarehouseCode != WarehouseEnum.HA152.ToString() && warehouse.WarehouseCode != WarehouseEnum.HA58.ToString())
                         {
-                            return WebResponseContent.Instance.Error($"璐ㄦ鍗曟暟鎹敊璇�");
+                            Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo);
+                            if (checkOrder == null)
+                            {
+                                return WebResponseContent.Instance.Error($"璐ㄦ鍗曟暟鎹敊璇�");
+                            }
+                            quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault();
                         }
-                        quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault();
+
                     }
                     #endregion
                     Dt_InboundOrderDetail detail = new Dt_InboundOrderDetail()
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs"
index 1943086..28713d7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs"
@@ -226,6 +226,10 @@
                     Remark=returnOrder.Remark,
                     Details= inboundOrderDetails
                 };
+                if (returnOrder.ReturnOrderType==ReturnOrderTypeEnum.BomReturn.ObjToInt())
+                {
+                    inboundOrder.OrderType = InOrderTypeEnum.BomReturn.ObjToInt();
+                }
                 returnOrder.ReturnOrderStatus=ReturnOrderStatusEnum.Returning.ObjToInt();
                 _unitOfWorkManage.BeginTran();
                 BaseDal.UpdateData(returnOrder);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
index fa07b9a..216466a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
@@ -76,6 +76,18 @@
         public string MaterielSpec { get; set; }
 
         /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "閲囪喘鍗曞彿")]
+        public string PurchaseOrderNo { get; set; }
+
+        /// <summary>
         /// 鍚堟牸鏁伴噺
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDescription = "鍚堟牸鏁伴噺")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
index 428bb28..386919b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
@@ -109,5 +109,11 @@
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡瑙勬牸")]
         public string MaterielSpec { get; set; }
+
+        /// <summary>
+        /// 妫�楠屼笉鍚堟牸鏍囪瘑
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "妫�楠屼笉鍚堟牸鏍囪瘑")]
+        public int IsCheckOk { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrder.cs"
new file mode 100644
index 0000000..2c112eb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrder.cs"
@@ -0,0 +1,53 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎴愬搧棰嗘枡鍑哄簱鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_ProCollectOutOrder), "鎴愬搧棰嗘枡鍑哄簱鍗�")]
+    public class Dt_ProCollectOutOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鎴愬搧棰嗘枡鍑哄簱鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎴愬搧棰嗘枡鍑哄簱鍗曞彿")]
+        public string ProCollectOutOrderNo { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟绫诲瀷")]
+        public int ProOrderType { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鐘舵��")]
+        public int ProOrderStatus { get; set; }
+
+        /// <summary>
+        /// 鎴愬搧棰嗘枡鍑哄簱鍗曡鎯�
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_ProCollectOutOrderDetail.ProCollectOrderId), nameof(Id))]
+        public List<Dt_ProCollectOutOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrderDetail.cs"
new file mode 100644
index 0000000..e42e184
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_ProCollectOutOrderDetail.cs"
@@ -0,0 +1,117 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎴愬搧棰嗘枡鍑哄簱鏄庣粏鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_ProCollectOutOrderDetail), "鎴愬搧棰嗘枡鍑哄簱鏄庣粏鍗�")]
+    public class Dt_ProCollectOutOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎴愬搧鍑哄簱鍗曚富閿�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "棰嗘枡鍑哄簱涓婚敭")]
+        public int ProCollectOrderId { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍗曡鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍗曡鍙�")]
+        public int RowId { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍗曟槑缁嗙姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍗曟槑缁嗙姸鎬�")]
+        public int ProOrderDetailStatus { get; set; }
+
+        /// <summary>
+        /// 浜у搧缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "浜у搧缂栫爜")]
+        public string PCode { get; set; }
+        /// <summary>
+        /// 浜у搧鐗堟湰
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "浜у搧鐗堟湰")]
+        public string PVer { get; set; }
+
+        /// <summary>
+        /// 浜у搧鎵规
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "浜у搧鎵规")]
+        public string PLot { get; set; }
+
+        /// <summary>
+        /// 浜у搧鍛ㄦ湡
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "浜у搧鍛ㄦ湡")]
+        public string DateCode { get; set; }
+
+
+        /// <summary>
+        /// 鍑哄簱鍚堟牸PCS鏁�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍚堟牸PCS鏁�")]
+        public float QtyPcs { get; set; }
+
+        /// <summary>
+        /// 宸插嚭鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "宸插嚭鏁伴噺")]
+        public float OverQtyPcs { get; set; }
+
+        /// <summary>
+        /// 閿佸畾鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閿佸畾鏁伴噺")]
+        public float LockQtyPcs { get; set; }
+
+        /// <summary>
+        /// Set鏁�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "Set鏁�")]
+        public float SetQty { get; set; }
+
+        /// <summary>
+        /// X鏉挎暟
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "X鏉挎暟")]
+        public float XQty { get; set; }
+        /// <summary>
+        /// X鏉夸綅
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "X鏉夸綅")]
+        public string XSite { get; set; }
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳鏃ユ湡
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹℃牳鏃ユ湡")]
+        public DateTime OrderDate { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "澶囨敞")]
+        public string Note { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderDetailRepository.cs"
new file mode 100644
index 0000000..dcb92d3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderDetailRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundRepository
+{
+    public class ProCollectOutOrderDetailRepository : RepositoryBase<Dt_ProCollectOutOrderDetail>, IProCollectOutOrderDetailRepository
+    {
+        public ProCollectOutOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderRepository.cs"
new file mode 100644
index 0000000..3eb40ac
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/ProCollectOutOrderRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundRepository
+{
+    public class ProCollectOutOrderRepository : RepositoryBase<Dt_ProCollectOutOrder>, IProCollectOutOrderRepository
+    {
+        public ProCollectOutOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
index 8e775e6..c3817df 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
@@ -32,8 +32,9 @@
 
         public IErpProScrapSheetService ErpProScrapSheetService { get; }
         public IErpProScrapSheetDetailService ErpProScrapSheetDetailService { get; }
+        public IProCollectOutOrderService ProCollectOutOrderService { get; }
         public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IMesRworkOutboundOrderService rworkOutboundOrderService,IMesPPOutboundOrderDetailService mesPPOutboundOrderDetailService, IMesPPCutOutboundOrderDetailService mesPPCutOutboundOrderDetailService, IMesPPCutOutboundOrderService mesPPCutOutboundOrderService, IMesPPOutboundOrderService mesPPOutboundOrderService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IMesOutboundOrderService mesOutboundOrderService,IProOutOrderService proOutOrderService, IProOutOrderDetailService proOutOrderDetailService,IErpProTransferOrderService erpProTransferOrderService,
-            IErpProScrapSheetService erpProScrapSheetService, IErpProScrapSheetDetailService erpProScrapSheetDetailService)
+            IErpProScrapSheetService erpProScrapSheetService, IErpProScrapSheetDetailService erpProScrapSheetDetailService,IProCollectOutOrderService proCollectOutOrderService)
         {
             OutboundOrderDetailService = outboundOrderDetailService;
             OutboundOrderService = outboundOrderService;
@@ -49,6 +50,7 @@
             ErpProTransferOrderService = erpProTransferOrderService;
             ErpProScrapSheetService = erpProScrapSheetService;
             ErpProScrapSheetDetailService = erpProScrapSheetDetailService;
+            ProCollectOutOrderService= proCollectOutOrderService;
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderDetailService.cs"
new file mode 100644
index 0000000..623f36d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderDetailService.cs"
@@ -0,0 +1,52 @@
+锘縰sing AutoMapper;
+using Castle.Core.Resource;
+using Org.BouncyCastle.Asn1.Cmp;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.ERP;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_External.ERPService;
+using WIDESEA_External.Model;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class ProCollectOutOrderDetailService : ServiceBase<Dt_ProCollectOutOrderDetail, IProCollectOutOrderDetailRepository>, IProCollectOutOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IBasicRepository _basicRepository;
+        private readonly IMapper _mapper;
+        private readonly IInvokeERPService _invokeERPService;
+
+        public IProCollectOutOrderDetailRepository Repository => BaseDal;
+
+        public ProCollectOutOrderDetailService(IProCollectOutOrderDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper, IInvokeERPService invokeERPService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _basicRepository = basicRepository;
+            _mapper = mapper;
+            _invokeERPService = invokeERPService;
+        }
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderService.cs"
new file mode 100644
index 0000000..6fd1c16
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProCollectOutOrderService.cs"
@@ -0,0 +1,105 @@
+锘縰sing AutoMapper;
+using Castle.Core.Resource;
+using Org.BouncyCastle.Asn1.Cmp;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.ERP;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_External.ERPService;
+using WIDESEA_External.Model;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class ProCollectOutOrderService : ServiceBase<Dt_ProCollectOutOrder, IProCollectOutOrderRepository>, IProCollectOutOrderService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IBasicRepository _basicRepository;
+        private readonly IMapper _mapper;
+        private readonly IInvokeERPService _invokeERPService;
+        private readonly IProCollectOutOrderDetailRepository _proCollectOutOrderDetailRepository;
+
+        public IProCollectOutOrderRepository Repository => BaseDal;
+
+        public ProCollectOutOrderService(IProCollectOutOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper, IInvokeERPService invokeERPService,IProCollectOutOrderDetailRepository proCollectOutOrderDetailRepository) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _basicRepository = basicRepository;
+            _mapper = mapper;
+            _invokeERPService = invokeERPService;
+            _proCollectOutOrderDetailRepository = proCollectOutOrderDetailRepository;
+        }
+        
+        public WebResponseContent ProductOutOrder(ErpProOutLingOrder erpProOutLingOrder)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == erpProOutLingOrder.WaType);
+                if (warehouse == null)
+                {
+                    return content.Error($"鏈壘鍒拌浠撳簱淇℃伅");
+                }
+                Dt_ProCollectOutOrder proCollectOutOrder = BaseDal.Db.Queryable<Dt_ProCollectOutOrder>().Where(x=>x.ProCollectOutOrderNo==erpProOutLingOrder.OrderNo).Includes(x=>x.Details).First();
+                if (_proCollectOutOrderDetailRepository.QueryFirst(x=>x.RowId==erpProOutLingOrder.RowId)!=null)
+                {
+                    return content.Error($"鎴愬搧棰嗘枡鍗�,琛屽彿{erpProOutLingOrder.RowId}宸插瓨鍦�");
+                }
+                if (proCollectOutOrder!=null)
+                {
+                    if (proCollectOutOrder.ProOrderStatus!= OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                    {
+                        return content.Error($"褰撳墠鍗曟嵁宸插紑濮嬫墽琛�");
+                    }
+                    else
+                    {
+                        Dt_ProCollectOutOrderDetail proCollectOutOrderDetail = _mapper.Map<Dt_ProCollectOutOrderDetail>(erpProOutLingOrder);
+                        proCollectOutOrderDetail.ProCollectOrderId = proCollectOutOrder.Id;
+                        _proCollectOutOrderDetailRepository.AddData(proCollectOutOrderDetail);
+                        return content.OK("鎺ユ敹鎴愬姛");
+                    }
+                }
+                else
+                {
+                    Dt_ProCollectOutOrderDetail proCollectOutOrderDetail = _mapper.Map<Dt_ProCollectOutOrderDetail>(erpProOutLingOrder);
+
+                    Dt_ProCollectOutOrder collectOutOrder = new Dt_ProCollectOutOrder()
+                    {
+                        WarehouseId = warehouse.WarehouseId,
+                        ProCollectOutOrderNo = erpProOutLingOrder.OrderNo,
+                        ProOrderType = ErpProOutTypeEnum.ProCollect.ObjToInt(),
+                        ProOrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(),
+                        Details=new List<Dt_ProCollectOutOrderDetail> { proCollectOutOrderDetail }
+                    };
+                    BaseDal.Db.InsertNav(collectOutOrder).Include(x=>x.Details).ExecuteCommand();
+                    return content.OK("鎺ユ敹鎴愬姛");
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs"
index 833e973..696e8d3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs"
@@ -107,18 +107,31 @@
                     {
                         return content.Error($"瀹㈡埛{item.Customer}涓嶅瓨鍦�!");
                     }
+                    //瀵勫敭鍗曟嵁
+                    if (outOrderDTO.OType == 2)
+                    {
+                        Dt_ProOutOrderDetail? ExistProDetail = proOutOrderDetails.FirstOrDefault(x => x.PCode == item.PCode && x.SaleOrder == item.SaleOrder && x.PVer == item.PVer && x.DateCode == item.DateCode);
+                        if (ExistProDetail!=null)
+                        {
+                            Dt_ProOutOrderDetail OutOrderDetail = _mapper.Map<Dt_ProOutOrderDetail>(item);
+                            ExistProDetail.QtyPcs += (OutOrderDetail.QtyPcs + OutOrderDetail.SpareQty);
+                            ExistProDetail.SpareQty += OutOrderDetail.SpareQty;
+                            continue;
+                        }
+                    }
+                    
                     Dt_ProOutOrderDetail proOutOrderDetail = _mapper.Map<Dt_ProOutOrderDetail>(item);
                     if (!string.IsNullOrEmpty(item.SaleOrder))
                     {
-                        if (keyValuePairs!=null && keyValuePairs.ContainsKey(item.SaleOrder))
+                        if (keyValuePairs != null && keyValuePairs.ContainsKey(item.SaleOrder))
                         {
                             proOutOrderDetail.EndCustomer = keyValuePairs[item.SaleOrder];
                         }
                         else
                         {
                             string request = _invokeERPService.InvokeProSaleCustomer(item.SaleOrder);
-                            ErpSaleCustomResponseContent responseContent=request.DeserializeObject<ErpSaleCustomResponseContent>();
-                            if (responseContent.Code!=200)
+                            ErpSaleCustomResponseContent responseContent = request.DeserializeObject<ErpSaleCustomResponseContent>();
+                            if (responseContent.Code != 200)
                             {
                                 return content.Error($"璁㈠崟{item.SaleOrder}缁堢瀹㈡埛鑾峰彇澶辫触!");
                             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs"
index a04ed7f..3d2bf8f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs"
@@ -164,15 +164,15 @@
                 string roadwayNo = "";
                 if (heightType == 1)
                 {
-                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer <= 3).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer <= 4).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
                     roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
                 }
+                //else if (heightType == 2)
+                //{
+                //    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer == 4).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                //    roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
+                //}
                 else if (heightType == 2)
-                {
-                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer == 4).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                    roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
-                }
-                else if (heightType == 3)
                 {
                     List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == palletType || x.LocationType == LocationTypeEnum.Undefined.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && roadwayNos.Contains(x.RoadwayNo) && x.Layer == 5).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
                     roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
@@ -212,13 +212,13 @@
                 List<LocationCount> locationCounts = new List<LocationCount>();
                 if (heightType == 1)
                 {
-                    locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer <= 3 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                    locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer <= 4 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
                 }
+                //else if(heightType == 2)
+                //{
+                //    locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer == 4 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                //}
                 else if(heightType == 2)
-                {
-                    locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer == 4 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                }
-                else if(heightType == 3)
                 {
                     locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => (x.LocationType == task.PalletType || (IsBCS ? false : x.LocationType == LocationTypeEnum.Undefined.ObjToInt())) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && (IsBCS ? !IsBCS : ("SC01_BC".Contains(x.RoadwayNo) ? x.Column % 2 == 0 : x.Column % 2 == 1)) && x.Layer == 5 && roadwayNos.Contains(x.RoadwayNo)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
                 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 7ba7bb8..96a7506 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -139,29 +139,6 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-        /// <summary>
-        /// 鏀捐揣瀹屾垚
-        /// </summary>
-        /// <param name="code"></param>
-        /// <returns></returns>
-        public WebResponseContent PutFinish(string code, string barCode = "", string taskNum = "")
-        {
-            try
-            {
-                string url = AppSettings.Get("WCS");
-                if (string.IsNullOrEmpty(url))
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒癢CSAApi鍦板潃,璇锋鏌ラ厤缃枃浠�");
-                }
-                string response = HttpHelper.Post($"{url}/api/CTU_AGV/PutFinish?code={code}&barCode={barCode}&taskNum={taskNum}" );
-
-                return JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("杩斿洖閿欒");
-            }
-            catch (Exception ex)
-            {
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
 
         public WebResponseContent AGVTasks(SaveModel saveModel)
         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
index fb08180..4cbe66d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
@@ -64,13 +64,13 @@
                     int heightType = 0;
                     if(needRelocationItem.Layer == 5)
                     {
-                        heightType = 3;
-                    }
-                    else if(needRelocationItem.Layer == 4)
-                    {
                         heightType = 2;
                     }
-                    else if(needRelocationItem.Layer <= 3 && needRelocationItem.Layer >= 1)
+                    //else if(needRelocationItem.Layer == 4)
+                    //{
+                    //    heightType = 2;
+                    //}
+                    else if(needRelocationItem.Layer <= 4 && needRelocationItem.Layer >= 1)
                     {
                         heightType = 1;
                     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
index 4431333..b80e8b7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
@@ -177,7 +177,9 @@
         [HttpPost, Route("ProductOutOrder"), AllowAnonymous, MethodParamsValidate]
         public ErpResponseContent ProductOutOrder([FromBody] Root<ErpProOutLingOrder> root)
         {
-            return Instance.OK();
+            WebResponseContent content = _outboundService.ProCollectOutOrderService.ProductOutOrder(root.Content);
+            if (content.Status) return Instance.OK();
+            else return Instance.Error(content.Message);
         }
         /// <summary>
         /// 閿�鍞寚娲惧崟鎺ユ敹
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/ProCollectOutOrderController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/ProCollectOutOrderController.cs"
new file mode 100644
index 0000000..c4cefee
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/ProCollectOutOrderController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+using WIDESEA_OutboundService;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+    /// <summary>
+    /// 鎴愬搧棰嗘枡鍑哄簱鍗�
+    /// </summary>
+    [Route("api/ProCollectOutOrder")]
+    [ApiController]
+    public class ProCollectOutOrderController : ApiBaseController<IProCollectOutOrderService, Dt_ProCollectOutOrder>
+    {
+        public ProCollectOutOrderController(IProCollectOutOrderService service) : base(service)
+        {
+
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
index bc8e246..fa699e3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
@@ -41,6 +41,7 @@
             CreateMap<Dt_MesProInOrderDetail, Dt_ProStockInfoDetail>().ForMember(x => x.ProOutDetailStatus, b => b.MapFrom(b => StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt())).ForMember(x => x.OutboundQuantity, b => b.MapFrom(b => 0)).ForMember(x => x.StockPcsQty, b => b.MapFrom(b => b.OKPCSQTY));
             CreateMap<ErpProductWarehousingOrderDTO, Dt_ErpProInOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.鎴愬搧.ObjToInt())).ForMember(x => x.ProInStatus, b => b.MapFrom(b => InOrderStatusEnum.鏈紑濮�.ObjToInt()));
             CreateMap<ErpProductTransferOrderDTO, Dt_ErpProTransferOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.OrderType, b => b.MapFrom(b => ErpProOutTypeEnum.ProOutAllocat.ObjToInt())).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.鐮斿彂.ObjToInt()));
+            CreateMap<ErpProOutLingOrder, Dt_ProCollectOutOrderDetail>().ForMember(x => x.ProOrderDetailStatus, b => b.MapFrom(b => 0)).ForMember(x => x.OverQtyPcs, b => b.MapFrom(b => 0)).ForMember(x => x.LockQtyPcs, b => b.MapFrom(b => 0));
         }
     }
 }

--
Gitblit v1.9.3