From 821397b01a004f8560c987ef83146614a9356ecb Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期六, 03 一月 2026 17:18:36 +0800
Subject: [PATCH] 1

---
 WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_FL.cs             |  241 ++
 吉安PDA/pages/stash/FLraworderboxing.vue                                                                  |  609 ++++++
 WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin                            |    0 
 WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderController.cs              |   21 
 WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs                        |    6 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2                                           |    0 
 吉安PDA/pages/stash/FLinboundorder.vue                                                                    |  216 ++
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5b36fd38-46f6-4e8b-a9e4-f642a8363e78.vsidx |    0 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a3962f8b-f362-4486-8c2d-b964b5889a5a.vsidx |    0 
 WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrder.vue                                           |  374 +++
 WMS/WIDESEA_WMSServer/WIDESEA_Common/InventoryAllocate.cs                                               |    4 
 WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs                          |   10 
 WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrderDetail.vue                                     |  195 ++
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs                             |  161 +
 WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs                              |    2 
 WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                          |    6 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0ef058ae-c319-46a4-8f85-8d624cb5a8ab.vsidx |    0 
 WMS/WIDESEA_WMSClient/src/router/viewGird.js                                                            |    8 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                              |  472 ++++
 WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs                        |    5 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2                                |    0 
 吉安PDA/pages/stash/YSinboundorder.vue                                                                    |  216 ++
 WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs             |    8 
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs                            |  479 +++-
 WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrderDetail.js                                  |   89 
 WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrder.js                                        |   81 
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                            |  468 ++++
 WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs                                |    4 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5a2dba86-478b-4ce5-8597-3dae38896b09.vsidx |    0 
 WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs                              |    4 
 WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_YS.cs             |  241 ++
 /dev/null                                                                                               |    0 
 WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderDetailController.cs        |   20 
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                     |  498 ++++
 WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs                                         |    2 
 吉安PDA/pages/stash/YSraworderboxing.vue                                                                  |  609 ++++++
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs                         |    9 
 吉安PDA/pages.json                                                                                        |   28 
 WMS/WIDESEA_WMSClient/src/extension/outbound/extend/newoutOrderDetail.vue                               |  558 +++++
 WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo                                                    |    0 
 WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                                           |    6 
 41 files changed, 5,354 insertions(+), 296 deletions(-)

diff --git a/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/newoutOrderDetail.vue b/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/newoutOrderDetail.vue
new file mode 100644
index 0000000..5cf7588
--- /dev/null
+++ b/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/newoutOrderDetail.vue
@@ -0,0 +1,558 @@
+<template>
+  <div>
+    <vol-box
+      v-model="showDetialBox"
+      :lazy="true"
+      width="75%"
+      :padding="15"
+      title="鍗曟嵁鏄庣粏淇℃伅"
+    >
+      <div class="box-head">
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="16">
+              <span>宸查�変腑 {{ selection.length }} 椤�</span>
+            </el-col>
+            <el-col :span="8">
+              <el-link
+                type="primary"
+                size="small"
+                style="float: left; height: 20px;"
+                @click="cancelOutFeedbackERP"
+                >鍑哄簱鏄庣粏鍙栨秷鎺ㄩ�丒RP</el-link
+              >
+              <el-link
+                type="primary"
+                size="small"
+                style="float: right; height: 20px; margin-right: 10px"
+                @click="outbound"
+                >鐩存帴鍑哄簱</el-link
+              >
+              <el-link
+                type="primary"
+                size="small"
+                style="float: right; height: 20px; margin-right: 10px"
+                @click="getData"
+                >鍒锋柊</el-link
+              ></el-col
+            >
+          </el-row>
+        </el-alert>
+      </div>
+      <div class="box-table" style="margin-top: 1%">
+        <el-table
+          ref="singleTable"
+          :data="tableData"
+          :summary-method="getSummaries"
+          show-summary
+          style="width: 100%; height: 100%"
+          highlight-current-row
+          @current-change="handleCurrentChange"
+          height="500px"
+          @row-click="handleRowClick"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column
+            label="搴忓彿"
+            type="index"
+            fixed="left"
+            width="55"
+            align="center"
+          ></el-table-column>
+          <el-table-column
+            v-for="(item, index) in tableColumns.filter((x) => !x.hidden)"
+            :key="index"
+            :prop="item.prop"
+            :label="item.title"
+            :width="item.width"
+            align="center"
+          >
+            <template #default="scoped">
+              <!-- 鍥炬爣鍒� -->
+              <div v-if="item.type == 'icon'">
+                <el-tooltip
+                  class="item"
+                  effect="dark"
+                  :content="item.title"
+                  placement="bottom"
+                  ><el-link
+                    type="primary"
+                    :disabled="getButtonEnable(item.prop, scoped.row)"
+                    @click="tableButtonClick(scoped.row, item)"
+                    ><i :class="item.icon" style="font-size: 22px"></i></el-link
+                ></el-tooltip>
+              </div>
+
+              <!-- 鏍囩鍒� -->
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
+
+              <!-- 鏅�氭枃鏈垪 - 甯︽孩鍑洪殣钘忓拰Tooltip -->
+              <div v-else>
+                <el-tooltip
+                  class="item"
+                  effect="dark"
+                  :content="formatCellContent(scoped.row[item.prop])"
+                  placement="top"
+                  :disabled="!shouldShowTooltip(scoped.row[item.prop], item)"
+                >
+                  <span 
+                    class="ellipsis-cell" 
+                    :style="{ width: calculateCellWidth(item) }"
+                  >
+                    {{ formatCellContent(scoped.row[item.prop]) }}
+                  </span>
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </vol-box>
+    <stock-select ref="child" @parentCall="parentCall"></stock-select>
+    <selected-stock
+      ref="selectedStock"
+      @parentCall="parentCall"
+    ></selected-stock>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import VolForm from "@/components/basic/VolForm.vue";
+import StockSelect from "./StockSelect.vue";
+import SelectedStock from "./SelectedStock.vue";
+export default {
+  components: { VolBox, VolForm, StockSelect, SelectedStock },
+  data() {
+    return {
+      row: null,
+      showDetialBox: false,
+      flag: false,
+      currentRow: null,
+      selection: [],
+      tableData: [],
+      tableColumns: [
+        {
+          prop: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "viewDetail",
+          title: "鍑哄簱璇︾粏",
+          type: "icon",
+          width: 90,
+          icon: "el-icon-s-operation",
+        },
+        {
+          prop: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "batchNo",
+          title: "鎵规鍙�",
+          type: "string",
+          width: 180,
+        },
+        {
+          prop: "supplierBatch",
+          title: "渚涘簲鍟嗘壒娆″彿",
+          type: "string",
+          width: 180,
+        },
+        {
+          prop: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "remark",
+          title: "澶囨敞",
+          type: "string",
+          width: 180,
+        },
+        {
+          prop: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "tag",
+          width: 180,
+          bindKey: "orderDetailStatusEnum",
+        },
+        {
+          prop: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "locationName",
+          title: "鍑哄簱璐т綅",
+          type: "string",
+          width: 200,
+        },
+        {
+          prop: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 100,
+        },
+        {
+          prop: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 90,
+        },
+      ],
+      paginations: {
+        sort: "id",
+        order: "desc",
+        Foots: "",
+        total: 0,
+        sizes: [60, 100, 120],
+        size: 60,
+        Wheres: [],
+        page: 1,
+        rows: 60,
+      },
+      searchFormOptions: [
+        [
+          {
+            title: "鍗曟嵁缂栧彿",
+            field: "allocation_code",
+            type: "like",
+          },
+          {
+            title: "鍗曟嵁绫诲瀷",
+            field: "allocation_type",
+            type: "select",
+            dataKey: "OrderType",
+            data: [],
+          },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "allocation_state",
+            type: "select",
+            dataKey: "OrderState",
+            data: [],
+          },
+        ],
+      ],
+      searchFormFields: {
+        allocation_code: "",
+        allocation_type: "",
+        allocation_state: "",
+      },
+      dictionaryList: null,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.getDictionaryData();
+      this.getData();
+    },
+    getSummaries(param) {
+      const { columns, data } = param
+      const sums = []
+      
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '鍚堣'
+          return
+        }
+        
+        // 浠呭鎸囧畾鏁板�煎垪姹傚拰骞朵繚鐣欎袱浣嶅皬鏁�
+        if (['lockQuantity', 'overOutQuantity', 'orderQuantity'].includes(column.property)) {
+          const values = data.map(item => Number(item[column.property]))
+          
+          if (!values.every(value => isNaN(value))) {
+            // 璁$畻鎬诲拰
+            const total = values.reduce((prev, curr) => {
+              return prev + (isNaN(curr) ? 0 : curr)
+            }, 0)
+            
+            // 淇濈暀涓や綅灏忔暟
+            sums[index] = total.toFixed(2)
+          } else {
+            sums[index] = '-'
+          }
+        } else {
+          sums[index] = ''
+        }
+      })
+
+      return sums
+    },
+    getData() {
+      var wheres = [{ name: "orderId", value: this.row.id }];
+      var param = {
+        page: this.paginations.page,
+        rows: this.paginations.rows,
+        sort: this.paginations.sort,
+        order: this.paginations.order,
+        wheres: JSON.stringify(wheres),
+      };
+      this.http
+        .post("api/NewOutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
+        .then((x) => {
+          this.tableData = x.rows;
+        });
+    },
+    tableButtonClick(row, column) {
+      if (column.prop == "assignStock") {
+        this.$refs.child.open(row);
+      } else {
+        this.$refs.selectedStock.open(row);
+      }
+    },
+    lockstocks() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id);
+      this.http
+        .post("api/NewOutboundOrderDetail/LockOutboundStocks", keys, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    outbound() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id);
+      this.http
+        .post("api/Task/WMSGenerateNewOutboundTask", keys, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+
+    cancelOutFeedbackERP() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id);
+      this.$confirm("鏄惁鍙栨秷璇ュ嚭搴撳崟鏄庣粏","鍗曟嵁鍙栨秷璀﹀憡",{
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+        center: true,
+        }).then(() => {
+          this.http
+          .post("api/OutboundOrderDetail/CancelOutFeedbackERP", keys, "鏁版嵁澶勭悊涓�")
+          .then((x) => {
+            if (!x.status) return this.$message.error(x.message);
+            this.$message.success("鎿嶄綔鎴愬姛");
+            this.showDetialBox = false;
+            this.$emit("parentCall", ($vue) => {
+              $vue.getData();
+            });
+          });
+        });
+    },
+
+    setCurrent(row) {
+      this.$refs.singleTable.setCurrentRow(row);
+    },
+    handleCurrentChange(val) {
+      this.currentRow = val;
+    },
+    getButtonEnable(propName, row) {
+      if (propName == "assignStock") {
+        if (
+          row.orderDetailStatus !== 0 &&
+          row.orderDetailStatus !== 60 &&
+          row.orderDetailStatus !== 70 &&
+          row.orderDetailStatus !== 80
+        ) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+      return false;
+    },
+    parentCall(fun) {
+      if (typeof fun != "function") {
+        return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
+      }
+      fun(this);
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
+    },
+    // 鏍煎紡鍖栧崟鍏冩牸鍐呭锛屽鐞唍ull/undefined
+    formatCellContent(content) {
+      if (content === null || content === undefined) {
+        return "鏃犳暟鎹�";
+      }
+      // 瀵规棩鏈熺被鍨嬭繘琛岀壒娈婂鐞嗭紙濡傛灉闇�瑕侊級
+      return content.toString();
+    },
+    // 璁$畻鍗曞厓鏍煎搴︼紝棰勭暀杈硅窛
+    calculateCellWidth(column) {
+      // 濡傛灉鍒楀畾涔変簡瀹藉害锛屽噺鍘�20px浣滀负鍐呰竟璺�
+      if (column.width) {
+        return `${column.width - 20}px`;
+      }
+      // 鏈畾涔夊搴﹀垯浣跨敤100%
+      return "100%";
+    },
+    // 鍒ゆ柇鏄惁闇�瑕佹樉绀篢ooltip
+    shouldShowTooltip(content, column) {
+      // 鏍囪涓轰笉闇�瑕佹孩鍑哄鐞嗙殑鍒椾笉鏄剧ずTooltip
+      if (column.noEllipsis) {
+        return false;
+      }
+      
+      // 绌哄唴瀹逛笉鏄剧ずTooltip
+      const cellContent = this.formatCellContent(content);
+      if (cellContent === "鏃犳暟鎹�") {
+        return false;
+      }
+      
+      // 鍐呭杈冪煭鏃朵篃涓嶆樉绀篢ooltip锛堟牴鎹疄闄呴渶姹傝皟鏁撮暱搴﹂槇鍊硷級
+      return cellContent.length > 8;
+    }
+  },
+};
+</script>
+<style scoped>
+.text-button {
+  border: 0px;
+}
+
+/* 鏂囨湰婧㈠嚭闅愯棌鏍峰紡 */
+.ellipsis-cell {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  position: relative;
+  z-index: 1;
+  display: inline-block;
+  max-width: 100%;
+}
+</style>
+
+<style>
+.text-button:hover {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover > td {
+  background-color: #d8e0d4 !important;
+}
+
+.box-table .el-table tbody tr.current-row > td {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.box-table .el-table {
+  border: 1px solid #ebeef5;
+}
+
+/* 鍚堣琛屾枃鏈孩鍑哄鐞� */
+.el-table__footer-wrapper .el-table__cell {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  position: relative;
+  z-index: 1;
+}
+</style>
diff --git a/WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrder.js b/WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrder.js
new file mode 100644
index 0000000..58748eb
--- /dev/null
+++ b/WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrder.js
@@ -0,0 +1,81 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridBody from './extend/newoutOrderDetail.vue'
+import gridHeader from './extend/AddOutboundOrder.vue'
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: gridHeader,
+      gridBody: gridBody,
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {
+        let addBtn = this.buttons.find(x => x.value == 'Add');
+        if (addBtn) {
+          addBtn.onClick = function () {
+            this.$refs.gridHeader.open();
+          }
+        };  
+        //鎵╁睍椤甸潰鍒濆鍖栨搷浣�
+        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); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      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/WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrderDetail.js b/WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrderDetail.js
new file mode 100644
index 0000000..7319ffd
--- /dev/null
+++ b/WMS/WIDESEA_WMSClient/src/extension/outbound/newoutboundOrderDetail.js
@@ -0,0 +1,89 @@
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+      onInit() {  
+        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.$confirm("鏄惁纭鍑哄簱","鍑哄簱鎿嶄綔纭",{
+              confirmButtonText: "纭畾",
+              cancelButtonText: "鍙栨秷",
+              type: "warning",
+              center: true,
+              }).then(() => {
+                let rows = this.$refs.table.getSelected();
+                if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+                if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+                const keys = rows.map(row => row.id);
+                // 鍙戦�丳OST璇锋眰锛屽皢ID鏁扮粍浣滀负璇锋眰浣撳彂閫�
+                this.http
+                .post("api/Task/WMSGenerateNewOutboundTask", keys, "鏁版嵁澶勭悊涓�...")
+                .then((x) => {
+                    if (x.status) {
+                    this.$Message.success('鎿嶄綔鎴愬姛');
+                    this.refresh();
+                  } else {
+                    return this.$error(x.message);
+                  }
+                });
+              });
+          }
+      });
+      },
+      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); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
diff --git a/WMS/WIDESEA_WMSClient/src/router/viewGird.js b/WMS/WIDESEA_WMSClient/src/router/viewGird.js
index 0d66c41..050984f 100644
--- a/WMS/WIDESEA_WMSClient/src/router/viewGird.js
+++ b/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -80,6 +80,14 @@
     name: 'outboundOrderDetail',
     component: () => import('@/views/outbound/outboundOrderDetail.vue')
   }, {
+    path: '/newoutboundOrder',
+    name: 'newoutboundOrder',
+    component: () => import('@/views/outbound/newoutboundOrder.vue')
+  }, {
+    path: '/newoutboundOrderDetail',
+    name: 'newoutboundOrderDetail',
+    component: () => import('@/views/outbound/newoutboundOrderDetail.vue')
+  }, {
     path: '/stockInfo',
     name: 'stockInfo',
     component: () => import('@/views/stock/stockInfo.vue')
diff --git a/WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrder.vue b/WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrder.vue
new file mode 100644
index 0000000..278f385
--- /dev/null
+++ b/WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrder.vue
@@ -0,0 +1,374 @@
+
+<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/newoutboundOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "id",
+      footer: "Foots",
+      cnName: "鍑哄簱鍗�",
+      name: "newoutboundOrder",
+      url: "/newoutboundOrder/",
+      sortName: "id",
+    });
+    const editFormFields = ref({
+      orderType: "",
+      orderNo:"",
+      upperOrderNo: "",
+      orderStatus: "",
+      remark: "",
+    });
+    const editFormOptions = ref([
+      [
+        {
+          title: "鍗曟嵁绫诲瀷",
+          required: true,
+          field: "orderType",
+          type: "select",
+          dataKey: "inOrderType",
+          data: [],
+        },
+        {
+        field: "orderNo",
+        title: "鍗曟嵁缂栧彿",
+        type: "string",
+      },
+              {
+        field: "outWareHouse",
+        title: "浠撳簱缂栫爜",
+        type: "string",
+      },
+        {
+          title: "涓婃父鍗曟嵁缂栧彿",
+          field: "upperOrderNo",
+          type: "string",
+        },
+        {
+          title: "鍗曟嵁鐘舵��",
+          field: "orderStatus",
+          type: "select",
+          dataKey: "inboundState",
+          data: [],
+          readonly: true,
+        },
+        {
+          title: "澶囨敞",
+          field: "remark",
+          type: "textarea",
+        },
+      ],
+    ]);
+    const searchFormFields = ref({
+      orderNo: "",
+      upperOrderNo: "",
+      orderType: "",
+      orderStatus: "",
+      createType: "",
+      creater: "",
+      createDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "鍗曟嵁缂栧彿", field: "orderNo", type: "like" },
+        { title: "涓婃父鍗曟嵁缂栧彿", field: "upperOrderNo", type: "like" },
+        {
+          title: "鍗曟嵁澶х被",
+          field: "orderType",
+          type: "select",
+          dataKey: "inOrderType",
+          data: [],
+        },
+        {
+          title: "鍗曟嵁鐘舵��",
+          field: "orderStatus",
+          type: "select",
+          dataKey: "inboundState",
+          data: [],
+        },
+      ],
+      [
+        {
+        field: "outWareHouse",
+        title: "鍑哄簱浠撳簱",
+        type: "select",
+        width: 120,
+        align: "left",
+        datakey:"",data:[{key:"SC01_BC", value:"鏉挎潗浠�"},{key:"SC02_BC", value:"鏉挎潗浠�(2)"}]
+      },
+        {
+          title: "鍒涘缓鏂瑰紡",
+          field: "createType",
+          type: "select",
+          dataKey: "createType",
+          data: [],
+        },
+        { title: "鍒涘缓鑰�", field: "creater", type: "like" },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datatime" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "id",
+        title: "涓婚敭",
+        type: "int",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "outWareHouse",
+        title: "浠撳簱",
+        type: "string",
+        width: 120,
+        align: "left",
+        bind:{key:"",data:[{key:"SC01_BC", value:"鏉挎潗浠�"},{key:"SC02_BC", value:"鏉挎潗浠�(2)"}]}
+      },
+      {
+        field: "orderNo",
+        title: "鍗曟嵁缂栧彿",
+        type: "string",
+        width: 170,
+        align: "left",
+        link: true,
+      },
+      {
+        field: "upperOrderNo",
+        title: "涓婃父鍗曟嵁缂栧彿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "orderType",
+        title: "鍗曟嵁澶х被",
+        type: "string",
+        width: 150,
+        align: "left",
+        bind: { key: "inOrderType", data: [] },
+      },
+      {
+        field: "inoutType",
+        title: "鍑哄叆搴撶被鍨�",
+        type: "string",
+        width: 90,
+        align: "left",
+        bind: { key: "inoutTypeEnum", data: [] },
+      },
+      {
+        field: "orderStatus",
+        title: "鍗曟嵁鐘舵��",
+        type: "decimal",
+        width: 90,
+        align: "left",
+        bind: { key: "outboundStatusEnum", data: [] },
+      },
+      {
+        field: "createType",
+        title: "鍒涘缓鏂瑰紡",
+        type: "string",
+        width: 90,
+        align: "left",
+        bind: { key: "createType", data: [] },
+      },
+      {
+        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: "OnboundOrderDetail",
+      columns: [
+        {
+          field: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+          readonly: true,
+          require: true,
+          align: "left",
+        },
+        {
+          field: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          align: "left",
+          hidden: true,
+        },
+        {
+          field: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+          align: "left",
+          edit: { type: "string" },
+          required: true,
+        },
+        {
+          field: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+          align: "left",
+          edit: { type: "string" },
+          required: true,
+        },
+        {
+          field: "batchNo",
+          title: "鎵规鍙�",
+          type: "decimal",
+          width: 150,
+          align: "left",
+          edit: { type: "string" },
+          required: true,
+        },
+        {
+          field: "supplierBatch",
+          title: "渚涘簲鍟嗘壒娆″彿",
+          type: "decimal",
+          width: 180,
+          align: "left",
+          edit: { type: "string" },
+          required: true,
+        },
+        {
+          field: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+          align: "left",
+          edit: { type: "number" },
+          required: true,
+        },
+        {
+          field: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 120,
+          align: "left",
+        },
+        {
+          field: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 200,
+          align: "left",
+        },
+        {
+          field: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "string",
+          width: 180,
+          align: "left",
+          bind: { key: "orderDetailStatusEnum", data: [] },
+        },
+        {
+          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",
+        },
+      ],
+      sortName: "id",
+      key: "id",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrderDetail.vue b/WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrderDetail.vue
new file mode 100644
index 0000000..c4492fd
--- /dev/null
+++ b/WMS/WIDESEA_WMSClient/src/views/outbound/newoutboundOrderDetail.vue
@@ -0,0 +1,195 @@
+
+<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/newoutboundOrderDetail.js";
+  import { ref, defineComponent } from "vue";
+  export default defineComponent({
+    setup() {
+      const table = ref({
+        key: "id",
+        footer: "Foots",
+        cnName: "鍑哄簱鍗曟槑缁�",
+        name: "newoutboundOrderDetail",
+        url: "/newoutboundOrderDetail/",
+        sortName: "id",
+      });
+      const editFormFields = ref({
+        deviceCode: "",
+        deviceName: "",
+        deviceType: "",
+        deviceStatus: "",
+        deviceIp: "",
+        devicePort: "",
+        devicePlcType: "",
+        deviceRemark: "",
+      });
+      const editFormOptions = ref([
+        [
+          
+        ],
+      ]);
+      const searchFormFields = ref({
+        deviceCode: "",
+        deviceType: "",
+        deviceStatus: "",
+      });
+      const searchFormOptions = ref([
+        [
+        { title: "鐗╂枡缂栧彿", field: "materielCode", type: "like" },
+        { title: "鐗╂枡鍚嶇О", field: "materielName", type: "like" },
+        { title: "鍑哄簱鍗曚富閿�", field: "orderId", type: "int" },
+        { title: "鎵规鍙�", field: "batchNo", type: "like" },
+      ],
+      [
+        {
+          field: "orderDetailStatus",title: "璁㈠崟鏄庣粏鐘舵��",type: "select",dataKey:"orderDetailStatusEnum", data: []
+        },
+        { title: "鍒涘缓鑰�", field: "creater", type: "like" },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+      ],
+      ]);
+      const columns = ref([
+      {
+          field: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+          readonly: true,
+          align: "left",
+        },
+        {
+          field: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+          align: "left",
+        },
+
+        
+        {
+          field: "batchNo",
+          title: "鎵规鍙�",
+          type: "decimal",
+          width: 150,
+          align: "left",
+        },
+        {
+          field: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        
+        {
+          field: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 80,
+          align: "left",
+        },
+        {
+          field: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "string",
+          width: 90,
+          bind: { key: "orderDetailStatusEnum", data: [] },
+        },
+        {
+          field: "locationName",
+          title: "鎸囧畾鍑哄簱璐т綅",
+          type: "string",
+          width: 200,
+        },
+                {
+          field: "remark",
+          title: "澶囨敞",
+          type: "string",
+          width: 150,
+          align: "left",
+          color:"red"
+        },
+        {
+          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: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+          align: "left",
+        },
+        {
+          field: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 120,
+          align: "left",
+        },
+        
+      ]);
+      const detail = ref({
+        cnName: "#detailCnName",
+        table: "",
+        columns: [],
+        sortName: "",
+      });
+      return {
+        table,
+        extend,
+        editFormFields,
+        editFormOptions,
+        searchFormFields,
+        searchFormOptions,
+        columns,
+        detail,
+      };
+    },
+  });
+  </script>
diff --git a/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin b/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin
index baee015..2971258 100644
--- a/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin
+++ b/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.strings.v9.bin
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2 b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2
index 014144d..ffc6c52 100644
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0ef058ae-c319-46a4-8f85-8d624cb5a8ab.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0ef058ae-c319-46a4-8f85-8d624cb5a8ab.vsidx
new file mode 100644
index 0000000..c84d1c9
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0ef058ae-c319-46a4-8f85-8d624cb5a8ab.vsidx
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/13c6b113-1345-4876-866e-6cc96d92decf.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/13c6b113-1345-4876-866e-6cc96d92decf.vsidx
deleted file mode 100644
index 08b5e73..0000000
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/13c6b113-1345-4876-866e-6cc96d92decf.vsidx
+++ /dev/null
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/41d0345b-0011-4845-b5c5-ca0de3bd57c8.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/41d0345b-0011-4845-b5c5-ca0de3bd57c8.vsidx
deleted file mode 100644
index 8bfb47f..0000000
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/41d0345b-0011-4845-b5c5-ca0de3bd57c8.vsidx
+++ /dev/null
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/58855021-a9b7-463d-b84b-0e8d9f9e221a.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/58855021-a9b7-463d-b84b-0e8d9f9e221a.vsidx
deleted file mode 100644
index d153384..0000000
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/58855021-a9b7-463d-b84b-0e8d9f9e221a.vsidx
+++ /dev/null
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5a2dba86-478b-4ce5-8597-3dae38896b09.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5a2dba86-478b-4ce5-8597-3dae38896b09.vsidx
new file mode 100644
index 0000000..cc14523
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5a2dba86-478b-4ce5-8597-3dae38896b09.vsidx
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5b36fd38-46f6-4e8b-a9e4-f642a8363e78.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5b36fd38-46f6-4e8b-a9e4-f642a8363e78.vsidx
new file mode 100644
index 0000000..b5fca89
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5b36fd38-46f6-4e8b-a9e4-f642a8363e78.vsidx
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/69ffc742-0c8d-4790-90eb-1a1592090460.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/69ffc742-0c8d-4790-90eb-1a1592090460.vsidx
deleted file mode 100644
index b18b0df..0000000
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/69ffc742-0c8d-4790-90eb-1a1592090460.vsidx
+++ /dev/null
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a3962f8b-f362-4486-8c2d-b964b5889a5a.vsidx b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a3962f8b-f362-4486-8c2d-b964b5889a5a.vsidx
new file mode 100644
index 0000000..78c1b87
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a3962f8b-f362-4486-8c2d-b964b5889a5a.vsidx
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2 b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2
index f839148..11c30cb 100644
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo
index c9cd016..e81e5db 100644
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo
Binary files differ
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json
index 0cc4a5d..0820ae1 100644
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json
@@ -11,12 +11,116 @@
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_inbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_core\\enums\\taskenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\enums\\taskenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|solutionrelative:widesea_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\locationinfoservice_common.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\locationinfoservice_common.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}|WIDESEA_InboundService\\WIDESEA_InboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_inboundservice\\base\\inboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}|WIDESEA_InboundService\\WIDESEA_InboundService.csproj|solutionrelative:widesea_inboundservice\\base\\inboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_outboundservice\\service\\outboundorderdetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|solutionrelative:widesea_outboundservice\\service\\outboundorderdetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{B9E62A73-1270-4FFC-B23C-F75C075D8460}|WIDESEA_StockRepository\\WIDESEA_StockRepository.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_stockrepository\\stockinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{B9E62A73-1270-4FFC-B23C-F75C075D8460}|WIDESEA_StockRepository\\WIDESEA_StockRepository.csproj|solutionrelative:widesea_stockrepository\\stockinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9144117D-3D55-4250-9CF5-C6A8D8A07062}|WIDESEA_BasicRepository\\WIDESEA_BasicRepository.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicrepository\\locationinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9144117D-3D55-4250-9CF5-C6A8D8A07062}|WIDESEA_BasicRepository\\WIDESEA_BasicRepository.csproj|solutionrelative:widesea_basicrepository\\locationinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_core\\helper\\codeanalysishelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\codeanalysishelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\newpartialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\newpartialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|solutionrelative:widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\newoutboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\newoutboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\filter\\customprofile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\filter\\customprofile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_ioutboundservice\\ioutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|solutionrelative:widesea_ioutboundservice\\ioutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_outboundservice\\service\\outstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|solutionrelative:widesea_outboundservice\\service\\outstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_outboundservice\\base\\outboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|solutionrelative:widesea_outboundservice\\base\\outboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\outboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\outboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_ioutboundservice\\ioutstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|solutionrelative:widesea_ioutboundservice\\ioutstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\newoutboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\newoutboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_model\\models\\outbound\\dt_newoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\outbound\\dt_newoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\outboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\outboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_common\\inventoryallocate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|solutionrelative:widesea_common\\inventoryallocate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -26,7 +130,7 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 4,
+          "SelectedChildIndex": 14,
           "Children": [
             {
               "$type": "Bookmark",
@@ -34,41 +138,169 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "PartialTaskService_Inbound.cs",
-              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "ViewState": "AgIAAJsAAAAAAAAAAAAgwLMAAAAgAAAAAAAAAA==",
+              "DocumentIndex": 2,
+              "Title": "TaskEnum.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "ViewState": "AgIAAFYAAAAAAAAAAAAAAGgAAAAVAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-28T07:07:34.552Z",
+              "WhenOpened": "2026-01-03T07:04:27.255Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 10,
+              "Title": "LocationInfoRepository.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "RelativeToolTip": "WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "ViewState": "AgIAACUAAAAAAAAAAAA7wDoAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T03:01:58.451Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "StockInfoRepository.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "RelativeToolTip": "WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "ViewState": "AgIAAEEAAAAAAAAAAAAkwE8AAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T03:01:58.472Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "LocationInfoService_FL.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "ViewState": "AgIAAIMAAAAAAAAAAAAowJsAAAAYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T02:25:38.725Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "LocationInfoService_YS.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "ViewState": "AgIAAIoAAAAAAAAAAAAowJsAAAAYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T02:25:30.112Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "CodeAnalysisHelper.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "ViewState": "AgIAAA0AAAAAAAAAAAAAABwAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T01:44:24.181Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "CustomProfile.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAAB8AAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-31T03:08:49.347Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "LocationInfoService_CP.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "ViewState": "AgIAAMoAAAAAAAAAAAAkwPEAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T07:33:26.365Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "LocationInfoService_Common.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "ViewState": "AgIAABUAAAAAAAAAAAA2wBkAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T07:33:26.455Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 18,
+              "Title": "LocationInfoService_BC.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAkwBkAAACnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T07:33:26.479Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "NewPartialTaskService_Outbound.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAAAwBEAAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T12:50:49.961Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
               "Title": "TaskController.cs",
               "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAADEAAAAAwIGgiMXlv0kAAAAoAAAAAAAAAA==",
+              "ViewState": "AgIAADcAAAAAAAAAAADwv0gAAACOAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-28T06:56:56.873Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-28T06:56:56.873Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "InboundOrderService.cs",
-              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_InboundService\\Base\\InboundOrderService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_InboundService\\Base\\InboundOrderService.cs",
-              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_InboundService\\Base\\InboundOrderService.cs",
-              "RelativeToolTip": "WIDESEA_InboundService\\Base\\InboundOrderService.cs",
-              "ViewState": "AgIAADMBAAAAAAAAAAAmwEsBAAAIAAAAAAAAAA==",
+              "DocumentIndex": 7,
+              "Title": "PartialTaskService_Outbound.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
+              "ViewState": "AgIAADEDAAAAAAAAAAAowEEDAAAoAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-28T06:29:01.1Z",
+              "WhenOpened": "2025-12-28T07:43:45.41Z",
               "EditorCaption": ""
             },
             {
@@ -79,10 +311,206 @@
               "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
               "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAJoAAAAAAAAAAAAvwLYAAAANAAAAAAAAAA==",
+              "ViewState": "AgIAALEBAAAAAAAAAAAcwMUBAAAIAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-28T06:28:46.582Z",
               "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "InboundOrderService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_InboundService\\Base\\InboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_InboundService\\Base\\InboundOrderService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_InboundService\\Base\\InboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_InboundService\\Base\\InboundOrderService.cs",
+              "ViewState": "AgIAAEMAAAAAAAAAAAAmwFgAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-28T06:29:01.1Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "PartialTaskService_Inbound.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "ViewState": "AgIAAKgAAAAAAAAAAAAgwPIAAABMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-28T07:07:34.552Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "Dt_NewOutboundOrder.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAowBwAAAATAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T14:37:04.942Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "TaskTypeEnum.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeToolTip": "WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ViewState": "AgIAABEAAAAAAAAAAAAowCoAAAAVAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T02:03:06.718Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "Title": "IOutboundOrderService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "ViewState": "AgIAAAIAAAAAAAAAAAAqwBIAAAArAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T02:01:25.531Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "OutStockLockInfoService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "ViewState": "AgIAACEAAAAAAAAAAAAIwDgAAAAqAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:46:21.865Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "OutboundOrderService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "ViewState": "AgIAAEwAAAAAAAAAAAAEwGIAAAAyAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T09:12:17.093Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "ITaskService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "ViewState": "AgIAABYAAAAAAAAAAAD4vykAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T01:38:40.735Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 23,
+              "Title": "OutboundOrderDetailController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAACcAAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:07:44.429Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "OutboundOrderDetailService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "RelativeToolTip": "WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "ViewState": "AgIAACUBAAAAAAAAAAAmwDgBAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:47:44.557Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "Title": "IOutStockLockInfoService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "ViewState": "AgIAAA0AAAAAAAAAAAAMwCAAAAAcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:47:26.387Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 28,
+              "Title": "OutboundOrderController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "ViewState": "AgIAABoAAAAAAAAAAAAQwEQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:06:47.708Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "Title": "NewOutboundOrderDetailController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:06:43.184Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "NewOutboundOrderController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAwAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:06:26.437Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "Dt_StockInfo.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ViewState": "AgIAABwAAAAAAAAAAIAzwDAAAAATAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T07:51:35.44Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "Title": "InventoryAllocate.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\InventoryAllocate.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Common\\InventoryAllocate.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\InventoryAllocate.cs",
+              "RelativeToolTip": "WIDESEA_Common\\InventoryAllocate.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAADgvzwAAAAYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T07:27:22.539Z"
             }
           ]
         }
diff --git a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json
index abb4019..62fee74 100644
--- a/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json
+++ b/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json
@@ -3,28 +3,124 @@
   "WorkspaceRootPath": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}|WIDESEA_InboundService\\WIDESEA_InboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_inboundservice\\base\\inboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}|WIDESEA_InboundService\\WIDESEA_InboundService.csproj|solutionrelative:widesea_inboundservice\\base\\inboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_model\\models\\outbound\\dt_newoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\outbound\\dt_newoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_outboundservice\\base\\outboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|solutionrelative:widesea_outboundservice\\base\\outboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partialtaskservice_inbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_inbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_outboundservice\\service\\outboundorderdetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|solutionrelative:widesea_outboundservice\\service\\outboundorderdetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9144117D-3D55-4250-9CF5-C6A8D8A07062}|WIDESEA_BasicRepository\\WIDESEA_BasicRepository.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicrepository\\locationinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9144117D-3D55-4250-9CF5-C6A8D8A07062}|WIDESEA_BasicRepository\\WIDESEA_BasicRepository.csproj|solutionrelative:widesea_basicrepository\\locationinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_core\\enums\\taskenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\enums\\taskenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|solutionrelative:widesea_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_fl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\locationinfoservice_common.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\locationinfoservice_common.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}|WIDESEA_InboundService\\WIDESEA_InboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_inboundservice\\base\\inboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}|WIDESEA_InboundService\\WIDESEA_InboundService.csproj|solutionrelative:widesea_inboundservice\\base\\inboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{B9E62A73-1270-4FFC-B23C-F75C075D8460}|WIDESEA_StockRepository\\WIDESEA_StockRepository.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_stockrepository\\stockinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{B9E62A73-1270-4FFC-B23C-F75C075D8460}|WIDESEA_StockRepository\\WIDESEA_StockRepository.csproj|solutionrelative:widesea_stockrepository\\stockinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_ys.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_cp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_core\\helper\\codeanalysishelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\codeanalysishelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\newpartialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\newpartialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|solutionrelative:widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\newoutboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\newoutboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_basicservice\\service\\assignlocation\\locationinfoservice_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\service\\assignlocation\\locationinfoservice_bc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\filter\\customprofile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\filter\\customprofile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_ioutboundservice\\ioutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|solutionrelative:widesea_ioutboundservice\\ioutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_outboundservice\\service\\outstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1B884AD3-7E67-44CD-B182-DEECDD671DD2}|WIDESEA_OutboundService\\WIDESEA_OutboundService.csproj|solutionrelative:widesea_outboundservice\\service\\outstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\outboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\outboundorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_ioutboundservice\\ioutstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{69C05DDB-1AA6-4090-9916-029CD0E95B10}|WIDESEA_IOutboundService\\WIDESEA_IOutboundService.csproj|solutionrelative:widesea_ioutboundservice\\ioutstocklockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\newoutboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\newoutboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\outbound\\outboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\outbound\\outboundordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|e:\\khgithub\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\jianliku\\wms\\widesea_wmsserver\\widesea_common\\inventoryallocate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|solutionrelative:widesea_common\\inventoryallocate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -34,7 +130,7 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 5,
+          "SelectedChildIndex": 14,
           "Children": [
             {
               "$type": "Bookmark",
@@ -42,16 +138,157 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "ITaskService.cs",
-              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
-              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
-              "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs",
-              "ViewState": "AgIAABoAAAAAAAAAAAAQwDMAAAAbAAAAAAAAAA==",
+              "DocumentIndex": 7,
+              "Title": "TaskEnum.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Enums\\TaskEnum.cs",
+              "ViewState": "AgIAAFYAAAAAAAAAAAAAAGgAAAAVAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-29T01:38:40.735Z",
+              "WhenOpened": "2026-01-03T07:04:27.255Z",
               "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "LocationInfoRepository.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "RelativeToolTip": "WIDESEA_BasicRepository\\LocationInfoRepository.cs",
+              "ViewState": "AgIAACcAAAAAAAAAAAAYwDoAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T03:01:58.451Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "StockInfoRepository.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "RelativeToolTip": "WIDESEA_StockRepository\\StockInfoRepository.cs",
+              "ViewState": "AgIAAEEAAAAAAAAAAAAkwE8AAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T03:01:58.472Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "LocationInfoService_FL.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_FL.cs",
+              "ViewState": "AgIAAIMAAAAAAAAAAAAowJsAAAAYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T02:25:38.725Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "LocationInfoService_YS.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_YS.cs",
+              "ViewState": "AgIAAIoAAAAAAAAAAAAowJsAAAAYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T02:25:30.112Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "CodeAnalysisHelper.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\CodeAnalysisHelper.cs",
+              "ViewState": "AgIAAA0AAAAAAAAAAAAAABwAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-03T01:44:24.181Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "CustomProfile.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Filter\\CustomProfile.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAAB8AAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-31T03:08:49.347Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "LocationInfoService_CP.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_CP.cs",
+              "ViewState": "AgIAAMoAAAAAAAAAAAAkwPEAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T07:33:26.365Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "LocationInfoService_Common.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\LocationInfoService_Common.cs",
+              "ViewState": "AgIAABUAAAAAAAAAAAA2wBkAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T07:33:26.455Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "Title": "LocationInfoService_BC.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\Service\\AssignLocation\\LocationInfoService_BC.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAkwBkAAACnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T07:33:26.479Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "NewPartialTaskService_Outbound.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\NewPartialTaskService_Outbound.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAAAwBEAAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T12:50:49.961Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "ViewState": "AgIAADcAAAAAAAAAAADwv0gAAACOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-28T06:56:56.873Z"
             },
             {
               "$type": "Document",
@@ -61,62 +298,221 @@
               "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
               "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
               "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
-              "ViewState": "AgIAAKwAAAAAAAAAAAAmwM8AAAAwAAAAAAAAAA==",
+              "ViewState": "AgIAAM8DAAAAAAAAAAAcwO8DAAAxAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-28T07:43:45.41Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "PartialTaskService_Inbound.cs",
-              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
-              "ViewState": "AgIAAJsAAAAAAAAAAAAgwLMAAAAgAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-28T07:07:34.552Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAABAAAAAAAAAAAAA4wCkAAAAyAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-28T06:56:56.873Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
               "DocumentIndex": 0,
+              "Title": "TaskService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
+              "ViewState": "AgIAAAUGAAAAAAAAAAAmwBwGAAAhAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-28T06:28:46.582Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
               "Title": "InboundOrderService.cs",
               "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_InboundService\\Base\\InboundOrderService.cs",
               "RelativeDocumentMoniker": "WIDESEA_InboundService\\Base\\InboundOrderService.cs",
               "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_InboundService\\Base\\InboundOrderService.cs",
               "RelativeToolTip": "WIDESEA_InboundService\\Base\\InboundOrderService.cs",
-              "ViewState": "AgIAACIFAAAAAAAAAAAAAFQFAABPAAAAAAAAAA==",
+              "ViewState": "AgIAAEMAAAAAAAAAAAAmwFgAAAAIAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-28T06:29:01.1Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "TaskService.cs",
-              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAADADAAAAAAAAAAAmwEUDAAAaAAAAAAAAAA==",
+              "DocumentIndex": 4,
+              "Title": "PartialTaskService_Inbound.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Inbound.cs",
+              "ViewState": "AgIAACYBAAAAAAAAAAAgwDoBAAAXAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-28T06:28:46.582Z",
+              "WhenOpened": "2025-12-28T07:07:34.552Z",
               "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "Dt_NewOutboundOrder.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Outbound\\Dt_NewOutboundOrder.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAowBwAAAATAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T14:37:04.942Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "TaskTypeEnum.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeToolTip": "WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ViewState": "AgIAABEAAAAAAAAAAAAowCoAAAAVAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T02:03:06.718Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "IOutboundOrderService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_IOutboundService\\IOutboundOrderService.cs",
+              "ViewState": "AgIAAAIAAAAAAAAAAAAqwBIAAAArAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T02:01:25.531Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 23,
+              "Title": "OutStockLockInfoService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_OutboundService\\Service\\OutStockLockInfoService.cs",
+              "ViewState": "AgIAACEAAAAAAAAAAAAIwDgAAAAqAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:46:21.865Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "OutboundOrderService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_OutboundService\\Base\\OutboundOrderService.cs",
+              "ViewState": "AgIAAJoBAAAAAAAAAAAlwGIAAAAyAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T09:12:17.093Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 18,
+              "Title": "ITaskService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "ViewState": "AgIAABYAAAAAAAAAAAD4vykAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T01:38:40.735Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "Title": "OutboundOrderDetailController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderDetailController.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAACcAAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:07:44.429Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "OutboundOrderDetailService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "RelativeToolTip": "WIDESEA_OutboundService\\Service\\OutboundOrderDetailService.cs",
+              "ViewState": "AgIAACYBAAAAAAAAAAAcwDgBAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:47:44.557Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "IOutStockLockInfoService.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IOutboundService\\IOutStockLockInfoService.cs",
+              "ViewState": "AgIAAA0AAAAAAAAAAAAMwCAAAAAcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:47:26.387Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 28,
+              "Title": "OutboundOrderController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\OutboundOrderController.cs",
+              "ViewState": "AgIAABoAAAAAAAAAAAAQwEQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:06:47.708Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "NewOutboundOrderDetailController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:06:43.184Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "NewOutboundOrderController.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Outbound\\NewOutboundOrderController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAwAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T13:06:26.437Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "Dt_StockInfo.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ViewState": "AgIAABwAAAAAAAAAAIAzwDAAAAATAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T07:51:35.44Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "Title": "InventoryAllocate.cs",
+              "DocumentMoniker": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\InventoryAllocate.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Common\\InventoryAllocate.cs",
+              "ToolTip": "E:\\KHGITHUB\\\u5409\u5B89\u7ACB\u5E93\u73B0\u7528\u7248\u672C\\JiAnLiKu\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\InventoryAllocate.cs",
+              "RelativeToolTip": "WIDESEA_Common\\InventoryAllocate.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAADgvzwAAAAYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-29T07:27:22.539Z"
             }
           ]
         }
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs
index c6b1de1..4b27262 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CP.cs
@@ -90,7 +90,7 @@
 
                 if (palletTypeInfo.LocaitonCount == 2)
                 {
-                    if (roadwayNo != "TestJCLK")
+                    if (roadwayNo != "SC01_CP")
                         definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
                     else
                         definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Column % 2 == 0).ToList();
@@ -122,7 +122,7 @@
                 {
                     if (palletTypeInfo.LocaitonCount == 2)
                     {
-                        if (roadwayNo != "TestJCLK")
+                        if (roadwayNo != "SC01_CP")
                             undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
                         else
                             undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 0).ToList();
@@ -176,9 +176,9 @@
             if (palletTypeInfo.LocaitonCount == 2)
             {
                 Dt_LocationInfo? nearLocation = null;
-                if (emptyLocation.RoadwayNo != "TestJCLK" && emptyLocation.Column % 2 == 1)
+                if (emptyLocation.RoadwayNo != "SC01_CP" && emptyLocation.Column % 2 == 1)
                     nearLocation = locationInfos.FirstOrDefault(x => x.Row == emptyLocation.Row && x.Layer == emptyLocation.Layer && x.Depth == emptyLocation.Depth && x.Column == emptyLocation.Column - 1);
-                else if (emptyLocation.RoadwayNo == "TestJCLK" && emptyLocation.Column % 2 == 0)
+                else if (emptyLocation.RoadwayNo == "SC01_CP" && emptyLocation.Column % 2 == 0)
                     nearLocation = locationInfos.FirstOrDefault(x => x.Row == emptyLocation.Row && x.Layer == emptyLocation.Layer && x.Depth == emptyLocation.Depth && x.Column == emptyLocation.Column + 1);
                 if (nearLocation != null && DepthLocationIsEmpty_CP(locationInfos, nearLocation) != null)
                 {
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_FL.cs b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_FL.cs
new file mode 100644
index 0000000..6f3578c
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_FL.cs
@@ -0,0 +1,241 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar.Extensions;
+using WIDESEA_Core.Enums;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class LocationInfoService
+    {
+
+
+        private readonly static object _locker_FL = new object();
+        static List<LocationCache> locationCaches_FL= new List<LocationCache>();
+        /// <summary>
+        /// 鏉挎潗浠撹揣浣嶅垎閰�
+        /// </summary>
+        /// <param name="roadwayNo">宸烽亾鍙�</param>
+        /// <param name="palletType">
+        /// 鎵樼洏绫诲瀷
+        /// </param>
+        /// <returns></returns>
+        public Dt_LocationInfo? AssignLocation_FL(string roadwayNo, int palletType, Dt_PalletTypeInfo palletTypeInfo, string beRelocationCode = "", int heightType = 0)
+        {
+            lock (_locker_FL)
+            {
+                List<LocationCache> removeItems = locationCaches_FL.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();
+                int count = removeItems.Count;
+                for (int i = 0; i < count; i++)
+                {
+                    locationCaches_FL.Remove(removeItems[i]);
+                }
+
+                List<string> lockLocationCodes = locationCaches_FL.Select(x => x.LocationCode).ToList();
+
+                List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == roadwayNo);
+                if (locationInfos == null || locationInfos.Count == 0)
+                {
+                    throw new Exception($"鏈壘鍒拌宸烽亾鐨勮揣浣嶄俊鎭�,宸烽亾鍙�:{roadwayNo}");
+                }
+
+                if (!string.IsNullOrEmpty(beRelocationCode))
+                {
+                    Dt_LocationInfo? beRelocation = locationInfos.FirstOrDefault(x => x.LocationCode == beRelocationCode);
+                    if (beRelocation == null)
+                    {
+                        throw new Exception($"鏈壘鍒拌揣浣嶄俊鎭�");
+                    }
+                    int maxDepth = locationInfos.Max(x => x.Depth);
+                    int mathCurrentRow = beRelocation.Row - Convert.ToInt32(Math.Ceiling(beRelocation.Row / maxDepth / 2.0)) * maxDepth * 2;
+                    if (mathCurrentRow <= maxDepth)
+                    {
+                        locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 <= maxDepth).ToList();
+                    }
+                    else
+                    {
+                        locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 > maxDepth).ToList();
+                    }
+                }
+
+
+                //鏈畾涔夌被鍨嬬殑绌鸿揣浣� 
+                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
+
+                List<Dt_LocationInfo> definedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == palletType.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
+
+                if (heightType == 1)
+                {
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
+                }
+                else if (heightType == 2)
+                {
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
+                }
+                else if (heightType == 3)
+                {
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
+                }
+                //else
+                //{
+                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => false).ToList();
+                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => false).ToList();
+                //}
+
+                if (palletTypeInfo.LocaitonCount == 2)
+                {
+                    if (roadwayNo != "SC01_FL")
+                        definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
+                    else
+                        definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Column % 2 == 0).ToList();
+                }
+
+                if (definedTypeEmptyLocations.Any())
+                {
+                    for (int i = 0; i < definedTypeEmptyLocations.Count; i++)
+                    {
+                        Dt_LocationInfo definedTypeEmptyLocation = definedTypeEmptyLocations[i];
+                        Dt_LocationInfo? locationInfo = GetUsableLocation_FL(locationInfos, definedTypeEmptyLocation, palletType, palletTypeInfo);
+                        //鍒ゆ柇璐т綅涓ゆ繁鍙婁互涓婃槸鍚﹀瓨鍦ㄥ嚭搴撻攣瀹氳揣浣�
+                        //if (locationInfo?.Depth == 1)
+                        //{
+                        //    Dt_LocationInfo? IsBebusyLocation = locationInfos.Where(x => x.Row == (locationInfo?.Row == 2 ? locationInfo?.Row - 1 : locationInfo?.Row + 1) && x.Column == locationInfo?.Column && x.Layer == locationInfo?.Layer).FirstOrDefault();
+                        //    if (IsBebusyLocation != null && (IsBebusyLocation.LocationStatus < LocationStatusEnum.InStock.ObjToInt()))
+                        //    {
+                        //        continue;
+                        //    }
+                        //}
+                        if (locationInfo != null)
+                        {
+                            locationCaches_FL.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
+                            return locationInfo;
+                        }
+                    }
+                }
+                if ((/*locationInfos.Count * weightValue_BC >= definedTypeLocations.Count &&*/ undefinedTypeEmptyLocations.Any()))//濡傛灉宸插畾涔夌被鍨嬭揣浣嶆湭瓒呰繃姣斾緥锛屼笖鏈夋湭瀹氫箟绫诲瀷鐨勮揣浣�
+                {
+                    if (palletTypeInfo.LocaitonCount == 2)
+                    {
+                        if (roadwayNo != "SC01_FL")
+                            undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
+                        else
+                            undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 0).ToList();
+
+                        for (int i = 0; i < undefinedTypeEmptyLocations.Count; i++)
+                        {
+                            Dt_LocationInfo undefinedTypeEmptyLocation = undefinedTypeEmptyLocations[i];
+                            Dt_LocationInfo? locationInfo = GetUsableLocation_FL(locationInfos, undefinedTypeEmptyLocation, palletType, palletTypeInfo);
+                            //鍒ゆ柇璐т綅涓ゆ繁鍙婁互涓婃槸鍚﹀瓨鍦ㄥ嚭搴撻攣瀹氳揣浣�
+                            //if (locationInfo?.Depth == 1)
+                            //{
+                            //    Dt_LocationInfo? IsBebusyLocation = locationInfos.Where(x => x.Row == (locationInfo?.Row == 2 ? locationInfo?.Row - 1 : locationInfo?.Row + 1) && x.Column == locationInfo?.Column && x.Layer == locationInfo?.Layer).FirstOrDefault();
+                            //    if (IsBebusyLocation != null && (IsBebusyLocation.LocationStatus < LocationStatusEnum.InStock.ObjToInt()))
+                            //    {
+                            //        continue;
+                            //    }
+                            //}
+                            if (locationInfo != null)
+                            {
+                                //UpdateLocationStatus(locationInfo, palletType, LocationStatusEnum.Lock, locationInfo.WarehouseId);
+                                locationCaches_FL.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
+                                return locationInfo;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        Dt_LocationInfo undefinedTypeEmptyLocation = undefinedTypeEmptyLocations.FirstOrDefault();
+                        Dt_LocationInfo? locationInfo = GetUsableLocation_FL(locationInfos, undefinedTypeEmptyLocation, palletType, palletTypeInfo);
+                        locationCaches_FL.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
+                        return locationInfo;
+                    }
+
+                }
+                return null;
+            }
+        }
+
+
+
+        /// <summary>
+        /// 鑾峰彇鍙敤璐т綅(娴嬭瘯鏋朵粨)
+        /// </summary>
+        /// <param name="locationInfos"></param>
+        /// <param name="emptyLocation"></param>
+        /// <param name="palletType"></param>
+        /// <returns></returns>
+        private Dt_LocationInfo? GetUsableLocation_FL(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo emptyLocation, int palletType, Dt_PalletTypeInfo palletTypeInfo)
+        {
+
+            if (palletTypeInfo.LocaitonCount == 2)
+            {
+                Dt_LocationInfo? nearLocation = null;
+                if (emptyLocation.RoadwayNo != "SC01_FL" && emptyLocation.Column % 2 == 1)
+                    nearLocation = locationInfos.FirstOrDefault(x => x.Row == emptyLocation.Row && x.Layer == emptyLocation.Layer && x.Depth == emptyLocation.Depth && x.Column == emptyLocation.Column - 1);
+                else if (emptyLocation.RoadwayNo == "SC01_FL" && emptyLocation.Column % 2 == 0)
+                    nearLocation = locationInfos.FirstOrDefault(x => x.Row == emptyLocation.Row && x.Layer == emptyLocation.Layer && x.Depth == emptyLocation.Depth && x.Column == emptyLocation.Column + 1);
+                if (nearLocation != null && DepthLocationIsEmpty_FL(locationInfos, nearLocation) != null)
+                {
+                    Dt_LocationInfo? locationInfo = DepthLocationIsEmpty_FL(locationInfos, emptyLocation);
+                    if (locationInfo != null)
+                    {
+                        return locationInfo;
+                    }
+                }
+            }
+            else
+            {
+                Dt_LocationInfo? locationInfo = DepthLocationIsEmpty_FL(locationInfos, emptyLocation);
+                if (locationInfo != null)
+                {
+                    return locationInfo;
+                }
+            }
+            return null;
+        }
+
+
+        /// <summary>
+        /// 鍒ゆ柇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶇姸鎬佹槸鍚︿负绌洪棽绌轰綅(娴嬭瘯鏋朵粨)
+        /// </summary>
+        /// <param name="locationInfos"></param>
+        /// <param name="emptyLocation"></param>
+        /// <returns></returns>
+        private Dt_LocationInfo? DepthLocationIsEmpty_FL(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo emptyLocation)
+        {
+            List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, emptyLocation);
+
+            bool moreDepthFlag = false;
+            bool littleDepthFlag = false;
+
+            if (emptyLocation.LocationType == 0)
+            {
+                List<Dt_LocationInfo> moreDepth = locations.Where(x => x.Depth > emptyLocation.Depth).ToList();
+                moreDepthFlag = moreDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != 0) == null;//鏌ヨ澶т簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓烘湁璐х殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娣辫揣浣嶆湁鏈浣跨敤鐨勬儏鍐�
+
+                List<Dt_LocationInfo> littleDepth = locations.Where(x => x.Depth <= emptyLocation.Depth).ToList();
+                littleDepthFlag = littleDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != 0) == null; //鏌ヨ灏忎簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓虹┖锛屼笖绂佺敤鐘舵�佷笉涓虹鐢ㄤ互鍙婂彧鍏ョ殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娴呰揣浣嶈浣跨敤鎴栬�呰绂佺敤鐨勬儏鍐�
+            }
+            else
+            {
+                List<Dt_LocationInfo> moreDepth = locations.Where(x => x.Depth > emptyLocation.Depth).ToList();
+                moreDepthFlag = moreDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != emptyLocation.LocationType) == null;//鏌ヨ澶т簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓烘湁璐х殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娣辫揣浣嶆湁鏈浣跨敤鐨勬儏鍐�
+
+                List<Dt_LocationInfo> littleDepth = locations.Where(x => x.Depth <= emptyLocation.Depth).ToList();
+                littleDepthFlag = littleDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != emptyLocation.LocationType) == null; //鏌ヨ灏忎簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓虹┖锛屼笖绂佺敤鐘舵�佷笉涓虹鐢ㄤ互鍙婂彧鍏ョ殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娴呰揣浣嶈浣跨敤鎴栬�呰绂佺敤鐨勬儏鍐�
+            }
+            if (moreDepthFlag && littleDepthFlag)
+            {
+                return emptyLocation;
+            }
+
+            return null;
+        }
+    }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_YS.cs b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_YS.cs
new file mode 100644
index 0000000..87532fd
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_YS.cs
@@ -0,0 +1,241 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar.Extensions;
+using WIDESEA_Core.Enums;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class LocationInfoService
+    {
+
+
+        private readonly static object _locker_YS = new object();
+        static List<LocationCache> locationCaches_YS = new List<LocationCache>();
+        /// <summary>
+        /// 鏉挎潗浠撹揣浣嶅垎閰�
+        /// </summary>
+        /// <param name="roadwayNo">宸烽亾鍙�</param>
+        /// <param name="palletType">
+        /// 鎵樼洏绫诲瀷
+        /// </param>
+        /// <returns></returns>
+        public Dt_LocationInfo? AssignLocation_YS(string roadwayNo, int palletType, Dt_PalletTypeInfo palletTypeInfo, string beRelocationCode = "", int heightType = 0)
+        {
+            lock (_locker_YS)
+            {
+                List<LocationCache> removeItems = locationCaches_YS.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();
+                int count = removeItems.Count;
+                for (int i = 0; i < count; i++)
+                {
+                    locationCaches_YS.Remove(removeItems[i]);
+                }
+
+                List<string> lockLocationCodes = locationCaches_YS.Select(x => x.LocationCode).ToList();
+
+                List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == roadwayNo);
+                if (locationInfos == null || locationInfos.Count == 0)
+                {
+                    throw new Exception($"鏈壘鍒拌宸烽亾鐨勮揣浣嶄俊鎭�,宸烽亾鍙�:{roadwayNo}");
+                }
+
+                if (!string.IsNullOrEmpty(beRelocationCode))
+                {
+                    Dt_LocationInfo? beRelocation = locationInfos.FirstOrDefault(x => x.LocationCode == beRelocationCode);
+                    if (beRelocation == null)
+                    {
+                        throw new Exception($"鏈壘鍒拌揣浣嶄俊鎭�");
+                    }
+                    int maxDepth = locationInfos.Max(x => x.Depth);
+                    int mathCurrentRow = beRelocation.Row - Convert.ToInt32(Math.Ceiling(beRelocation.Row / maxDepth / 2.0)) * maxDepth * 2;
+                    if (mathCurrentRow <= maxDepth)
+                    {
+                        locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 <= maxDepth).ToList();
+                    }
+                    else
+                    {
+                        locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 > maxDepth).ToList();
+                    }
+                }
+
+
+                //鏈畾涔夌被鍨嬬殑绌鸿揣浣� 
+                List<Dt_LocationInfo> undefinedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
+
+                List<Dt_LocationInfo> definedTypeEmptyLocations = locationInfos.Where(x => (x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt()) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == palletType.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode)).OrderByDescending(x => x.Depth).ThenBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).ToList();
+
+                if (heightType == 1)
+                {
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer >= 14).ToList();
+                }
+                else if (heightType == 2)
+                {
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 13).ToList();
+                }
+                else if (heightType == 3)
+                {
+                    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
+                    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Layer <= 4).ToList();
+                }
+                //else
+                //{
+                //    undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => false).ToList();
+                //    definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => false).ToList();
+                //}
+
+                if (palletTypeInfo.LocaitonCount == 2)
+                {
+                    if (roadwayNo != "SC01_YS")
+                        definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
+                    else
+                        definedTypeEmptyLocations = definedTypeEmptyLocations.Where(x => x.Column % 2 == 0).ToList();
+                }
+
+                if (definedTypeEmptyLocations.Any())
+                {
+                    for (int i = 0; i < definedTypeEmptyLocations.Count; i++)
+                    {
+                        Dt_LocationInfo definedTypeEmptyLocation = definedTypeEmptyLocations[i];
+                        Dt_LocationInfo? locationInfo = GetUsableLocation_CP(locationInfos, definedTypeEmptyLocation, palletType, palletTypeInfo);
+                        //鍒ゆ柇璐т綅涓ゆ繁鍙婁互涓婃槸鍚﹀瓨鍦ㄥ嚭搴撻攣瀹氳揣浣�
+                        //if (locationInfo?.Depth == 1)
+                        //{
+                        //    Dt_LocationInfo? IsBebusyLocation = locationInfos.Where(x => x.Row == (locationInfo?.Row == 2 ? locationInfo?.Row - 1 : locationInfo?.Row + 1) && x.Column == locationInfo?.Column && x.Layer == locationInfo?.Layer).FirstOrDefault();
+                        //    if (IsBebusyLocation != null && (IsBebusyLocation.LocationStatus < LocationStatusEnum.InStock.ObjToInt()))
+                        //    {
+                        //        continue;
+                        //    }
+                        //}
+                        if (locationInfo != null)
+                        {
+                            locationCaches_YS.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
+                            return locationInfo;
+                        }
+                    }
+                }
+                if ((/*locationInfos.Count * weightValue_BC >= definedTypeLocations.Count &&*/ undefinedTypeEmptyLocations.Any()))//濡傛灉宸插畾涔夌被鍨嬭揣浣嶆湭瓒呰繃姣斾緥锛屼笖鏈夋湭瀹氫箟绫诲瀷鐨勮揣浣�
+                {
+                    if (palletTypeInfo.LocaitonCount == 2)
+                    {
+                        if (roadwayNo != "SC01_YS")
+                            undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 1).ToList();
+                        else
+                            undefinedTypeEmptyLocations = undefinedTypeEmptyLocations.Where(x => x.Column % 2 == 0).ToList();
+
+                        for (int i = 0; i < undefinedTypeEmptyLocations.Count; i++)
+                        {
+                            Dt_LocationInfo undefinedTypeEmptyLocation = undefinedTypeEmptyLocations[i];
+                            Dt_LocationInfo? locationInfo = GetUsableLocation_CP(locationInfos, undefinedTypeEmptyLocation, palletType, palletTypeInfo);
+                            //鍒ゆ柇璐т綅涓ゆ繁鍙婁互涓婃槸鍚﹀瓨鍦ㄥ嚭搴撻攣瀹氳揣浣�
+                            //if (locationInfo?.Depth == 1)
+                            //{
+                            //    Dt_LocationInfo? IsBebusyLocation = locationInfos.Where(x => x.Row == (locationInfo?.Row == 2 ? locationInfo?.Row - 1 : locationInfo?.Row + 1) && x.Column == locationInfo?.Column && x.Layer == locationInfo?.Layer).FirstOrDefault();
+                            //    if (IsBebusyLocation != null && (IsBebusyLocation.LocationStatus < LocationStatusEnum.InStock.ObjToInt()))
+                            //    {
+                            //        continue;
+                            //    }
+                            //}
+                            if (locationInfo != null)
+                            {
+                                //UpdateLocationStatus(locationInfo, palletType, LocationStatusEnum.Lock, locationInfo.WarehouseId);
+                                locationCaches_YS.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
+                                return locationInfo;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        Dt_LocationInfo undefinedTypeEmptyLocation = undefinedTypeEmptyLocations.FirstOrDefault();
+                        Dt_LocationInfo? locationInfo = GetUsableLocation_YS(locationInfos, undefinedTypeEmptyLocation, palletType, palletTypeInfo);
+                        locationCaches_YS.Add(new LocationCache { LocationCode = locationInfo.LocationCode, DateTime = DateTime.Now });
+                        return locationInfo;
+                    }
+
+                }
+                return null;
+            }
+        }
+
+
+
+        /// <summary>
+        /// 鑾峰彇鍙敤璐т綅(娴嬭瘯鏋朵粨)
+        /// </summary>
+        /// <param name="locationInfos"></param>
+        /// <param name="emptyLocation"></param>
+        /// <param name="palletType"></param>
+        /// <returns></returns>
+        private Dt_LocationInfo? GetUsableLocation_YS(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo emptyLocation, int palletType, Dt_PalletTypeInfo palletTypeInfo)
+        {
+
+            if (palletTypeInfo.LocaitonCount == 2)
+            {
+                Dt_LocationInfo? nearLocation = null;
+                if (emptyLocation.RoadwayNo != "SC01_YS" && emptyLocation.Column % 2 == 1)
+                    nearLocation = locationInfos.FirstOrDefault(x => x.Row == emptyLocation.Row && x.Layer == emptyLocation.Layer && x.Depth == emptyLocation.Depth && x.Column == emptyLocation.Column - 1);
+                else if (emptyLocation.RoadwayNo == "SC01_YS" && emptyLocation.Column % 2 == 0)
+                    nearLocation = locationInfos.FirstOrDefault(x => x.Row == emptyLocation.Row && x.Layer == emptyLocation.Layer && x.Depth == emptyLocation.Depth && x.Column == emptyLocation.Column + 1);
+                if (nearLocation != null && DepthLocationIsEmpty_YS(locationInfos, nearLocation) != null)
+                {
+                    Dt_LocationInfo? locationInfo = DepthLocationIsEmpty_YS(locationInfos, emptyLocation);
+                    if (locationInfo != null)
+                    {
+                        return locationInfo;
+                    }
+                }
+            }
+            else
+            {
+                Dt_LocationInfo? locationInfo = DepthLocationIsEmpty_YS(locationInfos, emptyLocation);
+                if (locationInfo != null)
+                {
+                    return locationInfo;
+                }
+            }
+            return null;
+        }
+
+
+        /// <summary>
+        /// 鍒ゆ柇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶇姸鎬佹槸鍚︿负绌洪棽绌轰綅(娴嬭瘯鏋朵粨)
+        /// </summary>
+        /// <param name="locationInfos"></param>
+        /// <param name="emptyLocation"></param>
+        /// <returns></returns>
+        private Dt_LocationInfo? DepthLocationIsEmpty_YS(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo emptyLocation)
+        {
+            List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, emptyLocation);
+
+            bool moreDepthFlag = false;
+            bool littleDepthFlag = false;
+
+            if (emptyLocation.LocationType == 0)
+            {
+                List<Dt_LocationInfo> moreDepth = locations.Where(x => x.Depth > emptyLocation.Depth).ToList();
+                moreDepthFlag = moreDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != 0) == null;//鏌ヨ澶т簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓烘湁璐х殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娣辫揣浣嶆湁鏈浣跨敤鐨勬儏鍐�
+
+                List<Dt_LocationInfo> littleDepth = locations.Where(x => x.Depth <= emptyLocation.Depth).ToList();
+                littleDepthFlag = littleDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != 0) == null; //鏌ヨ灏忎簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓虹┖锛屼笖绂佺敤鐘舵�佷笉涓虹鐢ㄤ互鍙婂彧鍏ョ殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娴呰揣浣嶈浣跨敤鎴栬�呰绂佺敤鐨勬儏鍐�
+            }
+            else
+            {
+                List<Dt_LocationInfo> moreDepth = locations.Where(x => x.Depth > emptyLocation.Depth).ToList();
+                moreDepthFlag = moreDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != emptyLocation.LocationType) == null;//鏌ヨ澶т簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓烘湁璐х殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娣辫揣浣嶆湁鏈浣跨敤鐨勬儏鍐�
+
+                List<Dt_LocationInfo> littleDepth = locations.Where(x => x.Depth <= emptyLocation.Depth).ToList();
+                littleDepthFlag = littleDepth.FirstOrDefault(x => x.LocationStatus != LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationType != emptyLocation.LocationType) == null; //鏌ヨ灏忎簬褰撳墠璐т綅娣卞害鐨勯泦鍚堥噷鏄惁鏈夌姸鎬佷笉涓虹┖锛屼笖绂佺敤鐘舵�佷笉涓虹鐢ㄤ互鍙婂彧鍏ョ殑璐т綅锛屽鏋滄槸true锛屽垯琛ㄧず娴呰揣浣嶈浣跨敤鎴栬�呰绂佺敤鐨勬儏鍐�
+            }
+            if (moreDepthFlag && littleDepthFlag)
+            {
+                return emptyLocation;
+            }
+
+            return null;
+        }
+    }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
index 5e15212..6379ac6 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -49,7 +49,10 @@
             {
                 "SC01_BC" => AssignLocation_BC(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
                 "SC02_BC" => AssignLocation_BC(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
-                "TestJCLK" => AssignLocation_CP(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
+                "SC01_CP" => AssignLocation_CP(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
+                "SC02_CP" => AssignLocation_CP(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
+                "SC01_YS" => AssignLocation_YS(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
+                "SC01_FL" => AssignLocation_FL(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
                 //"HA58" => AssignLocation_PP(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
                 //"HA152" => AssignLocation_GM(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
                 //"HA64" => AssignLocation_CSJ(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_Common/InventoryAllocate.cs b/WMS/WIDESEA_WMSServer/WIDESEA_Common/InventoryAllocate.cs
index 3adfd49..12265fc 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_Common/InventoryAllocate.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_Common/InventoryAllocate.cs
@@ -62,7 +62,7 @@
                     /// <summary>
                     /// LPN鍙�
                     /// </summary>
-                    public string LPN_No { get; set; }
+                    public string LPNNo { get; set; }
                     /// <summary>
                     /// 鐗╂枡缂栫爜
                     /// </summary>
@@ -83,6 +83,8 @@
                     /// 搴撲綅
                     /// </summary>
                     public string LocationName { get; set; }
+
+                    public List<string> LabelList=new List<string>();
                 }
 
             }
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs b/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
index ad3e3be..ac2c384 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
@@ -71,6 +71,12 @@
         /// </summary>
         [Description("鍑虹┖鎵�")]
         PalletOutbound = 104,
+
+        /// <summary>
+        /// 鎴愬搧鍑哄簱
+        /// </summary>
+        [Description("鎴愬搧鍑哄簱")]
+        OutProduct = 230,
     }
 
     public enum TaskRelocationTypeEnum
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
index b52dac0..58bfb42 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
@@ -30,6 +30,6 @@
         /// <param name="taskNum"></param>
         /// <returns></returns>
         Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null);
-        Dt_OutStockLockInfo GetOutStockLockInfo(Dt_NewOutboundOrder outboundOrder, Dt_NewOutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null);
+        Dt_OutStockLockInfo GetOutStockLockInfo(Dt_NewOutboundOrder outboundOrder, Dt_NewOutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, Dt_StockInfoDetail stockInfoDetail ,decimal assignQuantity, int? taskNum = null);
     }
 }
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
index 3314a18..5c42a95 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -42,12 +42,14 @@
 
         WebResponseContent DeviceRequestInboundTaskSimple(string stationCode, string palletCode, int heightType);
 
+        WebResponseContent CPDeviceRequestInboundTaskSimple(string stationCode, string palletCode, int heightType, string courceAddress);
+
         WebResponseContent ApplyLocation(string palletCode);
 
         Task<WebResponseContent> TaskCompleted(int taskNum);
 
         WebResponseContent UpdateTaskStatus(int tasknum, int tasktype);
-        
+
 
         WebResponseContent GenerateOutboundTask(int orderDetailId, List<StockSelectViewDTO> stockSelectViews);
 
@@ -60,7 +62,7 @@
         WebResponseContent IsRelocations(int TaskNum, string SourceAddress);
         WebResponseContent Cancelinventory(int taskNum);
         WebResponseContent InboundTaskCompleted(int taskNum);
-        WebResponseContent  OutboundTaskCompleted(int taskNum);
+        WebResponseContent OutboundTaskCompleted(int taskNum);
         WebResponseContent AddOutboundOrders(Houseounbound orderAddDTO);
         WebResponseContent InventoryOut(HouseCancelOut houseInventoryOut);
         WebResponseContent InventoryIn(string name, int qty);
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
index 11d4d63..10471c1 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -551,8 +551,6 @@
                     x.OrderDetailStatus == OrderDetailStatusEnum.GroupAndInbound.ObjToInt());
 
 
-                inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
-
 
                 // 浜嬪姟澶勭悊
                 _unitOfWorkManage.BeginTran();
@@ -714,7 +712,7 @@
                     {
                         return content.Error($"鏈壘鍒颁粨搴撲俊鎭�");
                     }
-                    if (warehouse.WarehouseCode.Contains("TestJCLK"))
+                    if (warehouse.WarehouseCode.Contains("CP"))
                     {
                         if (item.SupplierBatch == null)
                         {
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs b/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs
index ff92b6e..dc4a690 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs
@@ -54,7 +54,7 @@
         [SugarColumn(IsNullable = true, ColumnDescription = "鍑哄叆搴撶被鍨�",Length = 50)]
         public string InoutType { get; set; }
 
-        [Navigate(NavigateType.OneToMany, nameof(Dt_OutboundOrderDetail.OrderId), nameof(Id))]
-        public List<Dt_OutboundOrderDetail> Details { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(Dt_NewOutboundOrderDetail.OrderId), nameof(Id))]
+        public List<Dt_NewOutboundOrderDetail> Details { get; set; }
     }
 }
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
index cea3190..d40a127 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
@@ -41,7 +41,7 @@
             return outStockLockInfo;
         }
 
-        public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_NewOutboundOrder outboundOrder, Dt_NewOutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null)
+        public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_NewOutboundOrder outboundOrder, Dt_NewOutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, Dt_StockInfoDetail stockInfoDetail, decimal assignQuantity, int? taskNum = null)
         {
 
             Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
@@ -49,13 +49,13 @@
                 PalletCode = outStock.PalletCode,
                 AssignQuantity = assignQuantity,
                 MaterielCode = outboundOrderDetail.MaterielCode,
-                BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo,
+                BatchNo = outboundOrderDetail.BatchNo ?? stockInfoDetail.BatchNo,
                 LocationCode = outStock.LocationCode,
                 MaterielName = outboundOrderDetail.MaterielName,
                 OrderDetailId = outboundOrderDetail.Id,
                 OrderNo = outboundOrder.OrderNo,
                 OrderType = outboundOrder.OrderType,
-                OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+                OriginalQuantity = stockInfoDetail.StockQuantity,
                 //Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
                 StockId = outStock.Id,
                 TaskNum = taskNum,
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
index 0f9506a..2abac11 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
@@ -20,7 +20,7 @@
                 List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
                 List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
 
-                List<Dt_NewOutboundOrderDetail> outboundOrderDetails = _outboundService.NewOutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.OrderId));
+                List<Dt_NewOutboundOrderDetail> outboundOrderDetails = _outboundService.NewOutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.Id));
                 if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
                 {
                     throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
@@ -29,7 +29,7 @@
                 {
                     throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
                 }
-                List<Dt_NewOutboundOrder> outboundOrders = _outboundService.NewOutboundOrderService.Repository.QueryData(x => keys.Contains(x.Id));
+                List<Dt_NewOutboundOrder> outboundOrders = _outboundService.NewOutboundOrderService.Repository.QueryData(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId);
                 List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.Repository.QueryData(x => outboundOrderDetails.Select(s => s.LPNNo).Contains(x.PalletCode));
                 if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
                 {
@@ -46,10 +46,11 @@
                     stockInfoDetail.OutboundQuantity += item.OrderQuantity;
                     item.LockQuantity += item.OrderQuantity;
                     var outboundOrder = outboundOrders.FirstOrDefault(x => x.Id == item.OrderId);
-                    Dt_OutStockLockInfo outStockLockInfo = _outboundService.OutboundStockLockInfoService.GetOutStockLockInfo(outboundOrder, item, stockInfo, item.OrderQuantity);
+                    Dt_OutStockLockInfo outStockLockInfo = _outboundService.OutboundStockLockInfoService.GetOutStockLockInfo(outboundOrder, item, stockInfo, stockInfoDetail, item.OrderQuantity);
                     outStockLockInfo.Status = OutStockStatus.鍑哄簱涓�.ObjToInt();
                     item.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                     outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
+                    stockInfo.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
                     var task = Newtasks.FirstOrDefault(x => x.PalletCode == item.LPNNo);
                     task.OrderNo = outboundOrder.OrderNo;
                     tasks.Add(task);
@@ -71,7 +72,7 @@
 
                 _unitOfWorkManage.CommitTran();
                 //灏嗕换鍔℃帹閫佸埌WCS
-                return PushTasksToWCS(tasks);
+                return PushTasksWCS(tasks);
             }
             catch (Exception ex)
             {
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
index 4357b09..ba47fd4 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -175,7 +175,7 @@
 
                 _unitOfWorkManage.CommitTran();
                 WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
-                if (warehouse.WarehouseCode.Contains("TestJCLK"))
+                if (warehouse.WarehouseCode.Contains("CP"))
                 {
                     PushTasksWCS(new List<Dt_Task> { newTask });
                 }
@@ -183,6 +183,163 @@
                 {
                     PushTasksToWCS(new List<Dt_Task> { newTask });
                 }
+                return WebResponseContent.Instance.OK(data: wMSTaskDTO);
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent CPDeviceRequestInboundTaskSimple(string stationCode, string palletCode, int heightType, string courceAddress)
+        {
+            try
+            {
+                Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode);
+                if (task != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ墭鐩榹palletCode}宸茬敓鎴愪换鍔�");
+                }
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+
+                if (stockInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
+                }
+                ///鍒ゆ柇鏄惁瀛樺湪鍥炲簱鍗�,杩涜鍥炲師搴撲綅閫昏緫
+                string returnOrderNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.OrderNo;
+                Dt_ReturnOrder returnOrder = _returnOrderRepository.QueryFirst(x => x.OrderNo == returnOrderNo && x.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt());
+                Dt_RoadwayInfo returnRoadwayInfo = new Dt_RoadwayInfo();
+                if (returnOrder != null && !string.IsNullOrEmpty(returnOrder.LocationCode))
+                {
+                    Dt_LocationInfo locationInfo1 = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == returnOrder.LocationCode);
+                    if (locationInfo1 == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鍥炲簱鍗曚腑璇ュ簱浣峽returnOrder.LocationCode}鏈壘鍒�");
+                    }
+                    returnRoadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.RoadwayNo == locationInfo1.RoadwayNo);
+                }
+
+                if (Repository.QueryFirst(x => x.SourceAddress == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode) && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
+                }
+
+                var details = stockInfo.Details.FirstOrDefault();
+                if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+                }
+                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.InStationCode == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode));
+                if (roadwayInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒拌鍏ュ簱绔欏彴鍦板潃");
+                }
+
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == roadwayInfo.RoadwayNo);
+                if (warehouse == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈壘鍒拌浠撳簱");
+                }
+
+                Dt_LocationInfo? locationInfo = new Dt_LocationInfo();
+                if (returnOrder != null && !string.IsNullOrEmpty(returnOrder.LocationCode))
+                {
+                    locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == returnOrder.LocationCode);
+                    if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Disable.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt())
+                    {
+                        return WebResponseContent.Instance.Error($"璇ュ洖搴撳崟璐т綅{locationInfo.LocationCode}闈為攣瀹氱姸鎬佹垨璐т綅鍚敤鐘舵�佷笉姝g‘锛岃妫�鏌�");
+                    }
+                }
+                else
+                {
+                    locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayInfo.RoadwayNo, stockInfo.PalletType, warehouse.WarehouseId, "", heightType);//, stockInfo.WarehouseId
+                    if (locationInfo == null)
+                    {
+                        return WebResponseContent.Instance.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
+                    }
+                }
+
+                Dt_Task newTask = new Dt_Task()
+                {
+                    CurrentAddress = courceAddress,
+                    Grade = 0,
+                    NextAddress = "",
+                    PalletCode = palletCode,
+                    OrderNo = details.OrderNo,
+                    Roadway = roadwayInfo.RoadwayNo,
+                    SourceAddress = courceAddress,
+                    TargetAddress = locationInfo.LocationCode,
+                    TaskType = TaskTypeEnum.Inbound.ObjToInt(),
+                    TaskStatus = TaskStatusEnum.New.ObjToInt(),
+                    WarehouseId = stockInfo.WarehouseId,
+                    PalletType = GetPalletType(warehouse, palletCode),//GetPalletType(warehouse, palletCode)
+                    Creater = "WCS",
+                    CreateDate = DateTime.Now
+                };
+                string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                if (MaterielCode != null && Quantity != null)
+                {
+                    newTask.MaterielCode = MaterielCode;
+                    newTask.Quantity = (float)Quantity;
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.浣欐枡閫�搴�.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.SurplusReturn.ObjToInt();
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.鍙嶆嫞鍏ュ簱.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.ReverseIn.ObjToInt();
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.InInventory.ObjToInt();
+                }
+                //if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
+                //{
+                //    stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+                //}
+                //else if (stockInfo.StockStatus == StockStatusEmun.MES閫�搴�.ObjToInt())
+                //{
+                //    newTask.TaskType = TaskTypeEnum.MesMatReturn.ObjToInt();
+                //}
+                //else if (stockInfo.StockStatus == StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt())
+                //{
+                //    Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId && x.PalletType == stockInfo.PalletType);
+                //    //todo 灏忔墭鐩樻殏鏃舵湭鍚敤
+                //    if (palletTypeInfo.LocaitonCount == 2)
+                //    {
+                //        newTask.TaskType = TaskTypeEnum.MesPalletLargeReturn.ObjToInt();
+                //    }
+                //    else
+                //    {
+                //        newTask.TaskType = TaskTypeEnum.MesPalletSmallReturn.ObjToInt();
+                //    }
+                //}
+                //else
+                //{
+                stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
+                locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
+                //}
+
+                _unitOfWorkManage.BeginTran();
+                int taskId = BaseDal.AddData(newTask);
+                newTask.TaskId = taskId;
+                if (returnOrder != null)
+                {
+                    returnOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
+                    _returnOrderRepository.UpdateData(returnOrder);
+                }
+                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                _locationInfoService.UpdateData(locationInfo);
+
+                _unitOfWorkManage.CommitTran();
+                WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
+
+                PushTasksWCS(new List<Dt_Task> { newTask });
+
                 return WebResponseContent.Instance.OK(data: wMSTaskDTO);
             }
             catch (Exception ex)
@@ -206,7 +363,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
                 }
-                return WebResponseContent.Instance.OK(data:stockInfo.WarehouseId);
+                return WebResponseContent.Instance.OK(data: stockInfo.WarehouseId);
             }
             catch (Exception ex)
             {
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
index 2448941..4c08d5d 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -47,6 +47,10 @@
                 if (stockInfo != null)
                 {
                     Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
+                    if (locationInfo==null)
+                    {
+                        throw new Exception("鏈壘鍒板嚭搴撳簱浣�");
+                    }
                     Dt_Task dt_Task = BaseDal.QueryFirst(x => x.SourceAddress == locationInfo.LocationCode || x.TargetAddress == locationInfo.LocationCode);
                     if (dt_Task != null)
                     {
@@ -61,30 +65,58 @@
                     Dt_StockInfoDetail stockInfoDetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockInfo.Id);
                     if (roadwayInfo != null)
                     {
-                        Dt_Task task = new()
+                        if (roadwayInfo.RoadwayNo.Contains("CP"))
                         {
-                            PalletType = stockInfo.PalletType,
-                            OrderNo = stockInfoDetail.OrderNo,
-                            CurrentAddress = locationInfo.LocationCode,
-                            Grade = 0,
-                            Creater = "WMS",
-                            PalletCode = stockInfo.PalletCode,
-                            NextAddress = roadwayInfo.OutSCStationCode,
-                            Roadway = locationInfo.RoadwayNo,
-                            SourceAddress = locationInfo.LocationCode,
-                            TargetAddress = "",
-                            TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
-                            TaskType = taskType.ObjToInt(),
-                            Depth = locationInfo.Depth,
-                            WarehouseId = stockInfo.WarehouseId,
-                            TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
-                        };
-                        if (taskType != TaskTypeEnum.OutEmpty)
-                        {
-                            task.MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
-                            task.Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                            Dt_Task task = new()
+                            {
+                                PalletType = stockInfo.PalletType,
+                                OrderNo = stockInfoDetail.OrderNo,
+                                CurrentAddress = locationInfo.LocationCode,
+                                Grade = 0,
+                                Creater = "WMS",
+                                PalletCode = stockInfo.PalletCode,
+                                NextAddress = roadwayInfo.OutSCStationCode,
+                                Roadway = locationInfo.RoadwayNo,
+                                SourceAddress = locationInfo.LocationCode,
+                                TargetAddress = "",
+                                TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
+                                TaskType = taskType.ObjToInt(),
+                                Depth = locationInfo.Depth,
+                                WarehouseId = stockInfo.WarehouseId,
+                                TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                                MaterielCode = stockInfoDetail.MaterielCode,
+                                Quantity = (float)stockInfoDetail.StockQuantity
+                            };
+                            tasks.Add(task);
                         }
-                        tasks.Add(task);
+                        else
+                        {
+                            Dt_Task task = new()
+                            {
+                                PalletType = stockInfo.PalletType,
+                                OrderNo = stockInfoDetail.OrderNo,
+                                CurrentAddress = locationInfo.LocationCode,
+                                Grade = 0,
+                                Creater = "WMS",
+                                PalletCode = stockInfo.PalletCode,
+                                NextAddress = roadwayInfo.OutSCStationCode,
+                                Roadway = locationInfo.RoadwayNo,
+                                SourceAddress = locationInfo.LocationCode,
+                                TargetAddress = "",
+                                TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
+                                TaskType = taskType.ObjToInt(),
+                                Depth = locationInfo.Depth,
+                                WarehouseId = stockInfo.WarehouseId,
+                                TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
+                            };
+                            if (taskType != TaskTypeEnum.OutEmpty)
+                            {
+                                task.MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                                task.Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                            }
+                            tasks.Add(task);
+                        }
+                        
                     }
                 }
 
@@ -254,36 +286,299 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌浠撳簱淇℃伅");
                 }
-                Dt_OutboundOrder oldOuboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO.No).Includes(x => x.Details).First();
-                Dt_Production production = new Dt_Production();
-                if (oldOuboundOrder != null)
+                if (warehouse.WarehouseCode.Contains("CP"))
                 {
-                    if (oldOuboundOrder.OutWareHouse != warehouse.WarehouseCode)
+                    Dt_NewOutboundOrder newOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO.No).Includes(x => x.Details).First();
+                    Dt_Production production1 = new Dt_Production();
+                    if (newOutboundOrder != null)
                     {
-                        return WebResponseContent.Instance.Error($"浠撳簱涓嶄竴鑷�");
+                        if (newOutboundOrder.OutWareHouse != warehouse.WarehouseCode)
+                        {
+                            return WebResponseContent.Instance.Error($"浠撳簱涓嶄竴鑷�");
+                        }
+                        else
+                        {
+                            OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
+                            orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
+                            var details = orderAddDTO1.Details.FirstOrDefault();
+                            Dt_NewOutboundOrderDetail outboundOrderDetail = new Dt_NewOutboundOrderDetail()
+                            {
+                                LPNNo = details.LPNNo,
+                                BatchNo = details.BatchNo,
+                                MaterielCode = details.MaterielCode,
+                                MaterielName = details.MaterielName,
+                                MaterieSpec = details.MaterieSpec,
+                                OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
+                                OrderQuantity = details.OrderQuantity,
+                                LinId = details.LinId,
+                                OrderId = newOutboundOrder.Id,
+                                Creater = "WMS",
+                                CreateDate = DateTime.Now,
+                                Remark = details.Remark,
+                                SupplierBatch = details.SupplierBatch
+                            };
+                            _newOutboundOrderDetailRepository.AddData(outboundOrderDetail);
+                            foreach (var item in orderAddDTO1.Details)
+                            {
+                                if (string.IsNullOrWhiteSpace(item.Remark))
+                                {
+                                    continue;
+                                }
+                                string[] remarkEntries = item.Remark.Split(
+                                    new[] { ';' },
+                                    StringSplitOptions.RemoveEmptyEntries
+                                );
+
+                                foreach (var entry in remarkEntries)
+                                {
+                                    string[] keyValuePairs = entry.Split(
+                                        new[] { ',' },
+                                        StringSplitOptions.RemoveEmptyEntries
+                                    );
+
+                                    foreach (var kvp in keyValuePairs)
+                                    {
+                                        int colonIndex = kvp.IndexOf(':');
+                                        if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
+                                        {
+                                            continue;
+                                        }
+
+                                        string key = kvp.Substring(0, colonIndex).Trim();
+                                        string value = kvp.Substring(colonIndex + 1).Trim();
+
+                                        switch (key)
+                                        {
+                                            case "鍒堕�犲崟鍙�":
+                                                production1.ProductionNo = value;
+                                                break;
+                                            case "鍒堕�犻儴浠�":
+                                                production1.ManufacturingCo = value;
+                                                break;
+                                            case "鍑哄簱鏁伴噺":
+                                                if (decimal.TryParse(value, out decimal outQuantity))
+                                                {
+                                                    production1.OutQuantity = outQuantity;
+                                                }
+                                                else
+                                                {
+                                                    Console.WriteLine($"鍑哄簱鏁伴噺鏍煎紡閿欒锛歿value}锛堝簲涓烘暟鍊硷紝濡�14.0000锛�");
+                                                }
+                                                break;
+                                            default:
+                                                Console.WriteLine($"鏈煡閿悕锛歿key}锛堝搴斿�硷細{value}锛岃烦杩囪閿�煎锛�");
+                                                break;
+                                        }
+
+                                    }
+                                    production1.Creater = "WMS";
+                                    production1.OrderId = outboundOrderDetail.Id;
+                                    _productionRepository.AddData(production1);
+                                }
+                            }
+                        }
                     }
                     else
                     {
                         OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
+                        orderAddDTO1.OrderNo = orderAddDTO.No;
+                        orderAddDTO1.UpperOrderNo = orderAddDTO.No;
+                        orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
+                        orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode ?? "宸ュ崟鍙戞枡";
+                        orderAddDTO1.InoutType = orderAddDTO.OrderType ?? InoutTypeEnum.WorkFeed.ToString();
+                        orderAddDTO1.OrderType = orderAddDTO.InoutType;
+                        orderAddDTO1.System = orderAddDTO.System;
+                        IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
                         orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
-                        var details = orderAddDTO1.Details.FirstOrDefault();
-                        Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail()
+                        #region 楠岃瘉鏁版嵁
+                        (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
+                        if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
+                        #endregion
+                        Dt_NewOutboundOrder inboundOrder = _mapper.Map<Dt_NewOutboundOrder>(orderAddDTO1);
+                        inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt();
+                        inboundOrder.Creater = "WMS";
+                        inboundOrder.CreateDate = DateTime.Now;
+                        inboundOrder.CreateType = CreateType.UpperSystemPush.ObjToInt();
+                        _unitOfWorkManage.BeginTran();
+                        bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
+
+                        foreach (var item in orderAddDTO1.Details)
                         {
-                            LPNNo = details.LPNNo,
-                            BatchNo = details.BatchNo,
-                            MaterielCode = details.MaterielCode,
-                            MaterielName = details.MaterielName,
-                            MaterieSpec = details.MaterieSpec,
-                            OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
-                            OrderQuantity = details.OrderQuantity,
-                            LinId = details.LinId,
-                            OrderId = oldOuboundOrder.Id,
-                            Creater = "WMS",
-                            CreateDate = DateTime.Now,
-                            Remark = details.Remark,
-                            SupplierBatch = details.SupplierBatch
-                        };
-                        _outboundOrderDetailRepository.AddData(outboundOrderDetail);
+                            if (string.IsNullOrWhiteSpace(item.Remark))
+                            {
+                                continue;
+                            }
+                            string[] remarkEntries = item.Remark.Split(
+                                new[] { ';' },
+                                StringSplitOptions.RemoveEmptyEntries
+                            );
+
+                            foreach (var entry in remarkEntries)
+                            {
+                                string[] keyValuePairs = entry.Split(
+                                    new[] { ',' },
+                                    StringSplitOptions.RemoveEmptyEntries
+                                );
+
+                                foreach (var kvp in keyValuePairs)
+                                {
+                                    int colonIndex = kvp.IndexOf(':');
+                                    if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
+                                    {
+                                        continue;
+                                    }
+
+                                    string key = kvp.Substring(0, colonIndex).Trim();
+                                    string value = kvp.Substring(colonIndex + 1).Trim();
+
+                                    switch (key)
+                                    {
+                                        case "鍒堕�犲崟鍙�":
+                                            production1.ProductionNo = value;
+                                            break;
+                                        case "鍒堕�犻儴浠�":
+                                            production1.ManufacturingCo = value;
+                                            break;
+                                        case "鍑哄簱鏁伴噺":
+                                            if (decimal.TryParse(value, out decimal outQuantity))
+                                            {
+                                                production1.OutQuantity = outQuantity;
+                                            }
+                                            else
+                                            {
+                                                Console.WriteLine($"鍑哄簱鏁伴噺鏍煎紡閿欒锛歿value}锛堝簲涓烘暟鍊硷紝濡�14.0000锛�");
+                                            }
+                                            break;
+                                        default:
+                                            Console.WriteLine($"鏈煡閿悕锛歿key}锛堝搴斿�硷細{value}锛岃烦杩囪閿�煎锛�");
+                                            break;
+                                    }
+
+                                }
+                                production1.Creater = "WMS";
+                                production1.OrderId = inboundOrder.Details.FirstOrDefault().Id;
+                                _productionRepository.AddData(production1);
+                            }
+                        }
+                        _unitOfWorkManage.CommitTran();
+                    }
+                }
+                else
+                {
+                    Dt_OutboundOrder oldOuboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO.No).Includes(x => x.Details).First();
+                    Dt_Production production = new Dt_Production();
+                    if (oldOuboundOrder != null)
+                    {
+                        if (oldOuboundOrder.OutWareHouse != warehouse.WarehouseCode)
+                        {
+                            return WebResponseContent.Instance.Error($"浠撳簱涓嶄竴鑷�");
+                        }
+                        else
+                        {
+                            OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
+                            orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
+                            var details = orderAddDTO1.Details.FirstOrDefault();
+                            Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail()
+                            {
+                                LPNNo = details.LPNNo,
+                                BatchNo = details.BatchNo,
+                                MaterielCode = details.MaterielCode,
+                                MaterielName = details.MaterielName,
+                                MaterieSpec = details.MaterieSpec,
+                                OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
+                                OrderQuantity = details.OrderQuantity,
+                                LinId = details.LinId,
+                                OrderId = oldOuboundOrder.Id,
+                                Creater = "WMS",
+                                CreateDate = DateTime.Now,
+                                Remark = details.Remark,
+                                SupplierBatch = details.SupplierBatch
+                            };
+                            _outboundOrderDetailRepository.AddData(outboundOrderDetail);
+                            foreach (var item in orderAddDTO1.Details)
+                            {
+                                if (string.IsNullOrWhiteSpace(item.Remark))
+                                {
+                                    continue;
+                                }
+                                string[] remarkEntries = item.Remark.Split(
+                                    new[] { ';' },
+                                    StringSplitOptions.RemoveEmptyEntries
+                                );
+
+                                foreach (var entry in remarkEntries)
+                                {
+                                    string[] keyValuePairs = entry.Split(
+                                        new[] { ',' },
+                                        StringSplitOptions.RemoveEmptyEntries
+                                    );
+
+                                    foreach (var kvp in keyValuePairs)
+                                    {
+                                        int colonIndex = kvp.IndexOf(':');
+                                        if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
+                                        {
+                                            continue;
+                                        }
+
+                                        string key = kvp.Substring(0, colonIndex).Trim();
+                                        string value = kvp.Substring(colonIndex + 1).Trim();
+
+                                        switch (key)
+                                        {
+                                            case "鍒堕�犲崟鍙�":
+                                                production.ProductionNo = value;
+                                                break;
+                                            case "鍒堕�犻儴浠�":
+                                                production.ManufacturingCo = value;
+                                                break;
+                                            case "鍑哄簱鏁伴噺":
+                                                if (decimal.TryParse(value, out decimal outQuantity))
+                                                {
+                                                    production.OutQuantity = outQuantity;
+                                                }
+                                                else
+                                                {
+                                                    Console.WriteLine($"鍑哄簱鏁伴噺鏍煎紡閿欒锛歿value}锛堝簲涓烘暟鍊硷紝濡�14.0000锛�");
+                                                }
+                                                break;
+                                            default:
+                                                Console.WriteLine($"鏈煡閿悕锛歿key}锛堝搴斿�硷細{value}锛岃烦杩囪閿�煎锛�");
+                                                break;
+                                        }
+
+                                    }
+                                    production.Creater = "WMS";
+                                    production.OrderId = outboundOrderDetail.Id;
+                                    _productionRepository.AddData(production);
+                                }
+                            }
+                        }
+                    }
+                    else
+                    {
+                        OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
+                        orderAddDTO1.OrderNo = orderAddDTO.No;
+                        orderAddDTO1.UpperOrderNo = orderAddDTO.No;
+                        orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
+                        orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode ?? "宸ュ崟鍙戞枡";
+                        orderAddDTO1.InoutType = orderAddDTO.OrderType ?? InoutTypeEnum.WorkFeed.ToString();
+                        orderAddDTO1.OrderType = orderAddDTO.InoutType;
+                        orderAddDTO1.System = orderAddDTO.System;
+                        IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
+                        orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
+                        #region 楠岃瘉鏁版嵁
+                        (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
+                        if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
+                        #endregion
+                        Dt_OutboundOrder inboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO1);
+                        inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt();
+                        inboundOrder.Creater = "WMS";
+                        inboundOrder.CreateDate = DateTime.Now;
+                        inboundOrder.CreateType = CreateType.UpperSystemPush.ObjToInt();
+                        _unitOfWorkManage.BeginTran();
+                        bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
+
                         foreach (var item in orderAddDTO1.Details)
                         {
                             if (string.IsNullOrWhiteSpace(item.Remark))
@@ -338,96 +633,14 @@
 
                                 }
                                 production.Creater = "WMS";
-                                production.OrderId = outboundOrderDetail.Id;
+                                production.OrderId = inboundOrder.Details.FirstOrDefault().Id;
                                 _productionRepository.AddData(production);
                             }
                         }
+                        _unitOfWorkManage.CommitTran();
                     }
                 }
-                else
-                {
-                    OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
-                    orderAddDTO1.OrderNo = orderAddDTO.No;
-                    orderAddDTO1.UpperOrderNo = orderAddDTO.No;
-                    orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
-                    orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode?? "宸ュ崟鍙戞枡";
-                    orderAddDTO1.InoutType = orderAddDTO.OrderType ?? InoutTypeEnum.WorkFeed.ToString();
-                    orderAddDTO1.OrderType = orderAddDTO.InoutType;
-                    orderAddDTO1.System = orderAddDTO.System;
-                    IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
-                    orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
-                    #region 楠岃瘉鏁版嵁
-                    (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
-                    if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
-                    #endregion
-                    Dt_OutboundOrder inboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO1);
-                    inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt();
-                    inboundOrder.Creater = "WMS";
-                    inboundOrder.CreateDate = DateTime.Now;
-                    inboundOrder.CreateType = CreateType.UpperSystemPush.ObjToInt();
-                    _unitOfWorkManage.BeginTran();
-                    bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
-                    
-                    foreach (var item in orderAddDTO1.Details)
-                    {
-                        if (string.IsNullOrWhiteSpace(item.Remark))
-                        {
-                            continue;
-                        }
-                        string[] remarkEntries = item.Remark.Split(
-                            new[] { ';' },
-                            StringSplitOptions.RemoveEmptyEntries
-                        );
 
-                        foreach (var entry in remarkEntries)
-                        {
-                            string[] keyValuePairs = entry.Split(
-                                new[] { ',' },
-                                StringSplitOptions.RemoveEmptyEntries
-                            );
-
-                            foreach (var kvp in keyValuePairs)
-                            {
-                                int colonIndex = kvp.IndexOf(':');
-                                if (colonIndex <= 0 || colonIndex >= kvp.Length - 1)
-                                {
-                                    continue;
-                                }
-
-                                string key = kvp.Substring(0, colonIndex).Trim();
-                                string value = kvp.Substring(colonIndex + 1).Trim();
-
-                                switch (key)
-                                {
-                                    case "鍒堕�犲崟鍙�":
-                                        production.ProductionNo = value;
-                                        break;
-                                    case "鍒堕�犻儴浠�":
-                                        production.ManufacturingCo = value;
-                                        break;
-                                    case "鍑哄簱鏁伴噺":
-                                        if (decimal.TryParse(value, out decimal outQuantity))
-                                        {
-                                            production.OutQuantity = outQuantity;
-                                        }
-                                        else
-                                        {
-                                            Console.WriteLine($"鍑哄簱鏁伴噺鏍煎紡閿欒锛歿value}锛堝簲涓烘暟鍊硷紝濡�14.0000锛�");
-                                        }
-                                        break;
-                                    default:
-                                        Console.WriteLine($"鏈煡閿悕锛歿key}锛堝搴斿�硷細{value}锛岃烦杩囪閿�煎锛�");
-                                        break;
-                                }
-                                
-                            }
-                            production.Creater = "WMS";
-                            production.OrderId = inboundOrder.Details.FirstOrDefault().Id;
-                            _productionRepository.AddData(production);
-                        }
-                    }
-                    _unitOfWorkManage.CommitTran();
-                }
 
 
                 content = WebResponseContent.Instance.OK();
@@ -611,7 +824,15 @@
                 }
                 _unitOfWorkManage.CommitTran();
                 //灏嗕换鍔℃帹閫佸埌WCS
-                PushTasksToWCS(tasks);
+               
+                if (tasks.FirstOrDefault().Roadway.Contains("SC01_BC"))
+                {
+                    PushTasksToWCS(tasks);
+                }
+                else
+                {
+                    PushTasksWCS(tasks);
+                }
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
index 22b8de2..49f4eec 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -106,6 +106,7 @@
         private readonly IOutboundOrderDetail_HtyService _outboundOrderDetail_HtyService;
         private readonly IPalletTypeInfoRepository _palletTypeInfoRepository;
         private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
+        private readonly INewOutboundOrderDetailRepository _newOutboundOrderDetailRepository;
         private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
         private readonly IReturnOrderRepository _returnOrderRepository;
         private readonly IProductionRepository _productionRepository;
@@ -113,7 +114,7 @@
 
         public ITaskRepository Repository => BaseDal;
 
-        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository,INewOutboundOrderDetailRepository newOutboundOrderDetailRepository) : base(BaseDal)
         {
             _mapper = mapper;
             _stockRepository = stockRepository;
@@ -138,6 +139,7 @@
             _returnOrderRepository = returnOrderRepository;
             _productionRepository = productionRepository;
             _inboundRepository = inboundRepository;
+            _newOutboundOrderDetailRepository = newOutboundOrderDetailRepository;
         }
 
         public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
@@ -492,7 +494,7 @@
 
                 dt_StockInfo.LocationCode = dt_LocationInfo.LocationCode;
 
-                if (warehouse.WarehouseCode.Contains("TestJCLK"))
+                if (warehouse.WarehouseCode.Contains("CP"))
                 {
                     // 1. 鑾峰彇鍏ュ簱鍗曚俊鎭�
                     Dt_InboundOrder? inboundOrder = null;
@@ -691,49 +693,49 @@
                                     ApiType = "AsnController",
                                     Method = "AsrsGroudingAsn",
                                     Parameters = new List<HouseInboundPassBack.data>
-                {
-                    new HouseInboundPassBack.data
-                    {
-                        Value = new List<data.data1>
-                        {
-                            new data.data1
-                            {
-                                AsnNo = inboundOrder.OrderNo,
-                                //InWarehouse = task.Roadway,
-                                TransactionCode = inboundOrder.TransactionCode,
-                                InoutType = inboundOrder.OrderType,
-                                OrderType = inboundOrder.InoutType,
-                                // 閬嶅巻鎵�鏈夊簱瀛樻槑缁嗭紝娣诲姞鍒� DetailList
-                                DetailList = StockInfos.Select(d => new data.data1.Inbound
-                                {
-                                    LinId = d.Details.FirstOrDefault()?.LinId?? "",
-                                    MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "",
-                                    OrderQuantity = d.Details.FirstOrDefault().StockQuantity,
-                                    BatchNo = d.Details.FirstOrDefault()?.BatchNo,
-                                    LPNNo = d.PalletCode,
-                                    FinishQty = d.Details.FirstOrDefault().StockQuantity,
-                                    LocationName = d.LocationCode,
-                                    LabelList= d.Details
-        .Where(detail => detail.StockDetails != null)
-        .SelectMany(detail => detail.StockDetails)
-        .Where(stockDetail => !string.IsNullOrEmpty(stockDetail.BoxCode))
-        .Select(stockDetail => stockDetail.BoxCode )
-        .ToList()
-                                }).ToList()
-                            }
-                        }
-                    }
-                }
+                                            {
+                                                new HouseInboundPassBack.data
+                                                {
+                                                    Value = new List<data.data1>
+                                                    {
+                                                        new data.data1
+                                                        {
+                                                            AsnNo = inboundOrder.OrderNo,
+                                                            //InWarehouse = task.Roadway,
+                                                            TransactionCode = inboundOrder.TransactionCode,
+                                                            InoutType = inboundOrder.OrderType,
+                                                            OrderType = inboundOrder.InoutType,
+                                                            // 閬嶅巻鎵�鏈夊簱瀛樻槑缁嗭紝娣诲姞鍒� DetailList
+                                                            DetailList = StockInfos.Select(d => new data.data1.Inbound
+                                                            {
+                                                                LinId = d.Details.FirstOrDefault()?.LinId?? "",
+                                                                MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "",
+                                                                OrderQuantity = d.Details.FirstOrDefault().StockQuantity,
+                                                                BatchNo = d.Details.FirstOrDefault()?.BatchNo,
+                                                                LPNNo = d.PalletCode,
+                                                                FinishQty = d.Details.FirstOrDefault().StockQuantity,
+                                                                LocationName = d.LocationCode,
+                                                                LabelList= d.Details
+                                                                .Where(detail => detail.StockDetails != null)
+                                                                .SelectMany(detail => detail.StockDetails)
+                                                                .Where(stockDetail => !string.IsNullOrEmpty(stockDetail.BoxCode))
+                                                                .Select(stockDetail => stockDetail.BoxCode )
+                                                                .ToList()
+                                                            }).ToList()
+                                                        }
+                                                    }
+                                                }
+                                            }
                                 };
 
                                 var authResult = AuthenticateWithWMS();
                                 if (authResult.IsSuccess)
                                 {
                                     houseInboundPassBack.Context = new Dictionary<string, string>
-            {
-                { "Ticket", authResult.Ticket },
-                { "InvOrgId", authResult.InvOrgId }
-            };
+                                            {
+                                                { "Ticket", authResult.Ticket },
+                                                { "InvOrgId", authResult.InvOrgId }
+                                            };
 
                                     var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskin, houseInboundPassBack, "绔嬪簱鍏ュ簱鏁伴噺鍥炰紶WMS");
                                     // 鍒ゆ柇Success鐨勫��
@@ -747,7 +749,68 @@
                             }
                             else if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
                             {
-                                SendAllocateInfoToWMS(task, inboundOrder, dt_StockInfo);
+                                List<Dt_StockInfo> StockInfos = _stockRepository.StockInfoRepository.Db
+                                    .Queryable<Dt_StockInfo>()
+                                    .Includes(x => x.Details, d => d.StockDetails)
+                                    .Where(x => x.WarehouseId == task.WarehouseId &&
+                                                x.Details.Any(v => v.OrderNo == inboundOrder.OrderNo))
+                                    .ToList();
+
+                                if (StockInfos.Count == 0) throw new Exception("鏈壘鍒板簱瀛樹俊鎭�");
+                                var inventoryAllocate = new InventoryAllocate
+                                {
+                                    ApiType = "InventoryAllocateController",
+                                    Method = "AsrsFinishedStockCount",
+                                    Parameters = new List<InventoryAllocate.Allocate>
+                                        {
+                                             new InventoryAllocate.Allocate
+                                            {
+                                                Value = new List<Allocate.data1>
+                                                {
+                                                new Allocate.data1
+                                                {
+                                                    No = inboundOrder.OrderNo,
+                                                    //InWarehouse = task.Roadway,
+                                                    TransactionCode = inboundOrder.TransactionCode,
+                                                    InoutType = inboundOrder.OrderType,
+                                                    OrderType = inboundOrder.InoutType,
+                                                    DetailList = StockInfos.Select(d => new Allocate.data1.Inventory
+                                                     {
+                                                        LinId = d.Details.FirstOrDefault()?.LinId?? "",
+                                                        MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "",
+                                                        OrderQuantity = d.Details.FirstOrDefault().StockQuantity,
+                                                        BatchNo = d.Details.FirstOrDefault()?.BatchNo,
+                                                        LPNNo = d.PalletCode,
+                                                        FinishQty = d.Details.FirstOrDefault().StockQuantity,
+                                                        LocationName = d.LocationCode,
+                                                         LabelList= d.Details
+                                                                    .Where(detail => detail.StockDetails != null)
+                                                                    .SelectMany(detail => detail.StockDetails)
+                                                                    .Where(stockDetail => !string.IsNullOrEmpty(stockDetail.BoxCode))
+                                                                    .Select(stockDetail => stockDetail.BoxCode )
+                                                                    .ToList()
+                                                        }).ToList()
+                                                }
+                                                }
+                                            }
+                                        }
+                                };
+
+                                var authResult = AuthenticateWithWMS();
+                                if (authResult.IsSuccess)
+                                {
+                                    inventoryAllocate.Context = new Dictionary<string, string>
+                                        {
+                                            { "Ticket", authResult.Ticket },
+                                            { "InvOrgId", authResult.InvOrgId }
+                                        };
+
+                                    var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskAllocatein, inventoryAllocate, "璋冩嫧鍏ュ簱鏁伴噺鍥炰紶WMS");
+                                    if (!response.Success)
+                                    {
+                                        throw new Exception($"鎿嶄綔澶辫触锛歿response.Message ?? "鏈彁渚涢敊璇俊鎭�"}");
+                                    }
+                                }
                             }
 
                             _unitOfWorkManage.CommitTran();
@@ -760,8 +823,6 @@
                         }
                     }
                 }
-
-
                 else
                 {
                     Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderNo == dt_StockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
@@ -890,7 +951,7 @@
                 }
                 if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
                 {
-                    SendInboundInfoToWMS(task, inboundOrder, stockInfo);
+                    //SendInboundInfoToWMS(task, inboundOrder, stockInfo);
                 }
                 else if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
                 {
@@ -1288,7 +1349,7 @@
                         MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "",
                         OrderQuantity = d.Details.FirstOrDefault().StockQuantity,
                         BatchNo = d.BatchNo,
-                        LPN_No = d.PalletCode,
+                        LPNNo = d.PalletCode,
                         FinishQty = d.Details.FirstOrDefault().StockQuantity,
                         LocationName = d.LocationCode
                     }).ToList()
@@ -1370,41 +1431,242 @@
                 if (!validationResult.Status) return validationResult;
 
                 int lastStatus = locationInfo.LocationStatus;
-                Dt_Task task1 = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
-                if (task1 == null)
-                {
-                    return WebResponseContent.Instance.Error("鏈壘鍒拌浠诲姟淇℃伅");
-                }
+
                 ///鐩樼偣鍑哄簱浠诲姟瀹屾垚閫昏緫
                 if ((task.TaskType == TaskTypeEnum.OutInventory.ObjToInt()))
                 {
                     return OutInventoryCompleted(task, stockInfo, locationInfo);
                 }
-                Dt_OutboundOrder inboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>()
-                .Where(x => x.OrderNo == task1.OrderNo)
-                .Includes(x => x.Details)
-                .First();
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
 
-                if (inboundOrder == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
-
-                Dt_OutboundOrderDetail outboundOrderDetails = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
-                .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == stockInfo.Details.FirstOrDefault().BatchNo)
-                .First();
-                if (outboundOrderDetails.LocationName != null && outboundOrderDetails.LocationName != "")
+                if (warehouse.WarehouseCode.Contains("CP"))
                 {
-                    outboundOrderDetails = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
-                .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == stockInfo.Details.FirstOrDefault().BatchNo && x.LocationName == stockInfo.LocationCode)
-                .First();
+                    try
+                    {
+                        Dt_NewOutboundOrder outboundOrder = _outboundService.NewOutboundOrderService.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == task.OrderNo).Includes(x => x.Details)
+                        .First();
+
+                        Dt_NewOutboundOrderDetail outboundOrderDetails = _outboundService.NewOutboundOrderDetailService.Db.Queryable<Dt_NewOutboundOrderDetail>()
+                        .Where(x => x.OrderId == outboundOrder.Id && x.LocationName == stockInfo.LocationCode)
+                        .First();
+                        //List<Dt_StockInfoDetail> stockInfoDetail = _stockInfoDetailRepository.QueryData(x => x.StockId == stockInfo.Id).ToList();
+                        //foreach (var item in stockInfoDetail)
+                        //{
+                        //    outboundOrderDetails = _outboundService.NewOutboundOrderDetailService.Db.Queryable<Dt_NewOutboundOrderDetail>()
+                        //       .Where(x => x.OrderId == outboundOrder.Id && x.BatchNo == item.BatchNo && x.LocationName == stockInfo.LocationCode)
+                        //       .First();
+
+                        //    item.OutboundQuantity += outboundOrderDetails.OverOutQuantity;
+                        //}
+
+                        int overCount = outboundOrder.Details.Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
+
+                        foreach (var item in stockInfo.Details)
+                        {
+                            if (outboundOrderDetails == null) continue;
+
+                            outboundOrderDetails.OverOutQuantity += item.OutboundQuantity;
+
+                            if (outboundOrderDetails.OverOutQuantity == outboundOrderDetails.OrderQuantity)
+                            {
+                                outboundOrderDetails.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
+                                overCount++;
+                            }
+                        }
+                        if (outboundOrder.Details.Count == overCount)
+                        {
+                            outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+                        }
+
+                        _unitOfWorkManage.BeginTran();
+                        ///鏇存柊鍑哄簱鍗�
+                        _outboundService.NewOutboundOrderService.Repository.UpdateData(outboundOrder);
+                        // 鏇存柊鍑哄簱璁㈠崟璇︽儏
+                        _outboundService.NewOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
+
+                        // 鏇存柊搴撳瓨鐘舵��
+                        AddCPRetrueOrder(stockInfo, outboundOrder);
+
+                        // 鍖哄垎鍗曟嵁鏁版嵁鏉ユ簮鏇存柊璐т綅鐘舵��
+                        if (outboundOrder.System == null)
+                        {
+                            return WebResponseContent.Instance.Error("鍑哄簱鍗曟暟鎹簮涓虹┖");
+                        }
+                        if (!outboundOrder.System.Equals("SMOM"))
+                        {
+                            UpdateLocationStatus(locationInfo);
+                        }
+                        // 澶勭悊浠诲姟瀹屾垚
+                        CompleteTask(task);
+
+                        // 娣诲姞鐘舵�佸彉鏇磋褰�
+                        AddStatusChangeRecord(task, stockInfo, locationInfo);
+
+                        string path = "http://fr.mankun.com:8080/webroot/decision/view/report?viewlet=fr-report\\SMOM/Product/Produce/OutBoundDetileReport.cpt&op=write&format=pdf";
+                        string fullPath = AppDomain.CurrentDomain.BaseDirectory;
+                        var url = Path.Combine(fullPath, "wwwroot", "Reports");
+                        string savePath = Path.Combine(url, "鏈鍑哄簱.pdf");
+
+
+                        if (outboundOrderDetails.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt() && outboundOrder.System.Equals("ERP"))
+                        {
+                            FeedBackOutERP(outboundOrder.OrderNo, outboundOrderDetails.LinId);
+                            DownloadReport(path, savePath, outboundOrderDetails.Id);
+                        }
+                        ///鍗曟嵁瀹屾垚鎺ㄩ�丼MOM绯荤粺
+                        if (outboundOrder.OrderStatus == OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.System.Equals("SMOM"))
+                        {
+                            var stockInfoDetail1 = stockInfo.Details.FirstOrDefault();
+                            List<Dt_OutStockLockInfo> outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryData(x => x.OrderNo == outboundOrder.OrderNo);
+
+                            if (outStockLockInfo.Count == 0) throw new Exception("鏈壘鍒板簱瀛樹俊鎭�");
+                            //閲囪喘鍑哄簱
+                            if (outboundOrder.OrderType == 1)
+                            {
+                                var passBack = new HouseoutboundPassBack
+                                {
+                                    ApiType = "ShippingOrderController",
+                                    Method = "AsrsOutboundSO",
+                                    Parameters = new List<HouseoutboundPassBack.datas>
+                                        {
+                                        new HouseoutboundPassBack.datas
+                                        {
+                                            Value = new List<HouseoutboundPassBack.datas.data1>
+                                            {
+                                                new HouseoutboundPassBack.datas.data1
+                                                {
+                                                    No = outboundOrder.OrderNo,
+                                                    OutWareHouse = task.Roadway,
+                                                    TransactionCode = outboundOrder.TransactionCode,
+                                                    InoutType = outboundOrder.OrderType,
+                                                    OrderType = outboundOrder.InoutType,
+                                                    DetailList = outStockLockInfo.Select(d => new HouseoutboundPassBack.datas.data1.Inbound
+                                                        {
+                                                            LinId = d.LinId?? "",
+                                                            LPN_No = d.PalletCode,
+                                                            MaterielCode = d.MaterielCode?? "",
+                                                            OrderQuantity = d.OrderQuantity,
+                                                            BatchNo = d.BatchNo,
+                                                            FinishQty = d.OrderQuantity,
+                                                            LocationName = d.LocationCode
+                                                        })
+                                                        .ToList()
+
+                                                }
+                                            }
+                                        }
+                                }
+                                };
+
+                                var authResult = AuthenticateWithWMS();
+                                if (authResult.IsSuccess)
+                                {
+                                    passBack.Context = new Dictionary<string, string>
+                                {
+                                    { "Ticket", authResult.Ticket },
+                                    { "InvOrgId", authResult.InvOrgId }
+                                };
+                                    var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskout, passBack, "绔嬪簱鍑哄簱鏁伴噺鍥炰紶WMS");
+                                    if (!response.Success)
+                                    {
+                                        throw new Exception($"鎿嶄綔澶辫触: {response.Message ?? "鏈彁渚涢敊璇俊鎭�"}");
+                                    }
+                                }
+                            }
+                            //璋冩嫧鍑哄簱
+                            if (outboundOrder.OrderType == 2)
+                            {
+                                var allocate = new InventoryAllocate
+                                {
+                                    ApiType = "InventoryAllocateController",
+                                    Method = "AsrsFinishedStockCount",
+                                    Parameters = new List<Allocate>
+                                        {
+                                            new Allocate
+                                            {
+                                                Value = new List<Allocate.data1>
+                                                {
+                                                    new Allocate.data1
+                                                    {
+                                                        No = outboundOrder.OrderNo,
+                                                        InWarehouse = task.Roadway,
+                                                        TransactionCode = outboundOrder.TransactionCode,
+                                                        InoutType = outboundOrder.OrderType,
+                                                        OrderType = outboundOrder.InoutType,
+                                                        DetailList = outStockLockInfos.Select(item =>
+                                                        {
+                                                            return new Allocate.data1.Inventory
+                                                            {
+                                                                LinId = outboundOrderDetails.LinId,
+                                                                LPNNo = item.PalletCode,
+                                                                MaterielCode = outboundOrderDetails.MaterielCode,
+                                                                OrderQuantity = outboundOrderDetails.OrderQuantity,
+                                                                BatchNo = outboundOrderDetails.BatchNo,
+                                                                FinishQty = outboundOrderDetails.OrderQuantity,
+                                                                LocationName = task.SourceAddress
+                                                            };
+                                                        }).ToList()
+                                                    }
+                                                }
+                                            }
+                                        }
+                                };
+
+                                var authResult = AuthenticateWithWMS();
+                                if (authResult.IsSuccess)
+                                {
+                                    allocate.Context = new Dictionary<string, string>
+                                    {
+                                        { "Ticket", authResult.Ticket },
+                                        { "InvOrgId", authResult.InvOrgId }
+                                    };
+                                    var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskin, allocate, "绔嬪簱鍏ュ簱鏁伴噺鍥炰紶WMS");
+                                    if (!response.Success)
+                                    {
+                                        throw new Exception($"鎿嶄綔澶辫触: {response.Message ?? "鏈彁渚涢敊璇俊鎭�"}");
+                                    }
+                                }
+                            }
+                        }
+
+                        if (outboundOrder.OrderType == 240) // 鐩樼偣鍑哄簱
+                        {
+                            // 鐩樼偣鍑哄簱鐗规畩澶勭悊閫昏緫
+                        }
+
+                        _unitOfWorkManage.CommitTran();
+                        return WebResponseContent.Instance.OK();
+                    }
+                    catch
+                    {
+                        _unitOfWorkManage.RollbackTran();
+                        throw;
+                    }
                 }
-                if (outboundOrderDetails == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
+                else
+                {
+                    Dt_OutboundOrder inboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>()
+                        .Where(x => x.OrderNo == task.OrderNo)
+                        .Includes(x => x.Details)
+                        .First();
 
-                // 2. 澶勭悊鍑哄簱璁㈠崟璇︽儏
-                //var outboundOrderDetails = ProcessOutboundOrderDetails(outStockLockInfos);
+                    if (inboundOrder == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
 
-                UpdateOutboundOrderDetails(stockInfo, inboundOrder, ref outboundOrderDetails);
+                    Dt_OutboundOrderDetail outboundOrderDetails = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
+                        .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == stockInfo.Details.FirstOrDefault().BatchNo)
+                        .First();
+                    if (outboundOrderDetails.LocationName != null && outboundOrderDetails.LocationName != "")
+                    {
+                        outboundOrderDetails = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
+                    .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == stockInfo.Details.FirstOrDefault().BatchNo && x.LocationName == stockInfo.LocationCode)
+                    .First();
+                    }
+                    if (outboundOrderDetails == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
+                    UpdateOutboundOrderDetails(stockInfo, inboundOrder, ref outboundOrderDetails);
+                    // 3. 鎵ц鏍稿績鍑哄簱閫昏緫
+                    return ExecuteOutboundLogic(task, stockInfo, locationInfo, outboundOrderDetails, inboundOrder);
+                }
 
-                // 3. 鎵ц鏍稿績鍑哄簱閫昏緫
-                return ExecuteOutboundLogic(task, stockInfo, locationInfo, outboundOrderDetails, inboundOrder);
             }
             catch (Exception ex)
             {
@@ -1784,7 +2046,7 @@
                             return new Allocate.data1.Inventory
                             {
                                 LinId = outDetail.LinId,
-                                LPN_No = item.PalletCode,
+                                LPNNo = item.PalletCode,
                                 MaterielCode = outDetail.MaterielCode,
                                 OrderQuantity = outDetail.OrderQuantity,
                                 BatchNo = outDetail.BatchNo,
@@ -1885,6 +2147,74 @@
             }
 
         }
+
+        //鎴愬搧鍥炲簱鍗�
+        private void AddCPRetrueOrder(Dt_StockInfo stockInfo, Dt_NewOutboundOrder outboundOrder)
+        {
+            Dt_StockInfoDetail stockInfoDetail = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
+           .Where(x => x.StockId == stockInfo.Id)
+           .First();
+            if (stockInfoDetail == null)
+            {
+                throw new Exception("寤虹珛鍥炲簱鍗曟椂锛屾湭鎵惧埌璇ュ簱瀛樹俊鎭�");
+            }
+            if (outboundOrder.OrderType == OrderTypeEnum.鍙嶆嫞鍑哄簱鍗�.ObjToInt())
+            {
+                Dt_ReturnOrder returnOrder = _returnOrderRepository.QueryFirst(x => x.LPNNo == stockInfo.PalletCode && x.LocationCode == stockInfo.LocationCode && x.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt());
+                if (returnOrder == null)
+                {
+                    throw new Exception("鍙嶆嫞鍑哄簱鍚庯紝鏈壘鍒板搴斿弽鎷e洖搴撳崟淇℃伅");
+                }
+                stockInfo.LocationCode = "";
+                stockInfo.StockStatus = StockStatusEmun.鍙嶆嫞鍏ュ簱.ObjToInt();
+                stockInfo.Remark = "鍙嶆嫞鍏ュ簱";
+                stockInfoDetail.OutboundQuantity = 0;
+                stockInfoDetail.StockQuantity += returnOrder.OrderQuantity;
+                stockInfoDetail.OrderNo = returnOrder.OrderNo;
+            }
+            else
+            {
+                decimal returnQuantity = stockInfoDetail.StockQuantity - stockInfoDetail.OutboundQuantity;
+                if (returnQuantity > 0)
+                {
+                    Dt_ReturnOrder returnOrder = new Dt_ReturnOrder
+                    {
+                        MaterielCode = stockInfoDetail.MaterielCode,
+                        MaterielName = stockInfoDetail.MaterielName,
+                        BatchNo = stockInfoDetail.BatchNo,
+                        OrderQuantity = returnQuantity,
+                        ReceiptQuantity = returnQuantity,
+                        OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
+                        LinId = stockInfoDetail.LinId,
+                        LPNNo = stockInfo.PalletCode,
+                        Creater = "LK",
+                        CreateDate = DateTime.Now,
+                        OrderType = OrderTypeEnum.浣欐枡鍥炲簱鍗�.ObjToInt(),
+                        System = "WMS"
+                    };
+                    if (outboundOrder.System == "SMOM" && stockInfo.LocationCode != null)
+                    {
+                        returnOrder.LocationCode = stockInfo.LocationCode;
+                    }
+                    _unitOfWorkManage.BeginTran();
+                    _returnOrderRepository.AddData(returnOrder);
+                    stockInfo.LocationCode = "";
+                    stockInfo.StockStatus = StockStatusEmun.浣欐枡閫�搴�.ObjToInt();
+                    stockInfo.Remark = "浣欐枡閫�搴�";
+                    stockInfoDetail.OutboundQuantity = 0;
+                    stockInfoDetail.StockQuantity = returnQuantity;
+                    stockInfoDetail.OrderNo = returnOrder.OrderNo;
+                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
+                    _unitOfWorkManage.CommitTran();
+                }
+                else
+                {
+                    DeleteAndMoveIntoHtStockStatus(stockInfo);
+                }
+            }
+
+        }
         /// <summary>
         /// 鍗曟嵁鏄庣粏鍑哄簱瀹屾垚鍥炶皟ERP(琛ㄥ崟鎻愪氦)
         /// </summary>
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderController.cs b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderController.cs
new file mode 100644
index 0000000..e7d4d38
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderController.cs
@@ -0,0 +1,21 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+    [Route("api/NewOutboundOrder")]
+    [ApiController]
+    public class NewOutboundOrderController : ApiBaseController<INewOutboundOrderService, Dt_NewOutboundOrder>
+    {
+        public NewOutboundOrderController(INewOutboundOrderService service) : base(service)
+        {
+        }
+    }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderDetailController.cs b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderDetailController.cs
new file mode 100644
index 0000000..184f109
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/NewOutboundOrderDetailController.cs
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+    [Route("api/NewOutboundOrderDetail")]
+    [ApiController]
+    public class NewOutboundOrderDetailController : ApiBaseController<INewOutboundOrderDetailService, Dt_NewOutboundOrderDetail>
+    {
+        public NewOutboundOrderDetailController(INewOutboundOrderDetailService service) : base(service)
+        {
+        }
+    }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
index 026bc56..d1331b1 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -69,6 +69,12 @@
             return Service.DeviceRequestInboundTaskSimple(stationCode, palletCode, heightType);
         }
 
+        [HttpPost, HttpGet, Route("CPDeviceRequestInboundTaskSimple"), AllowAnonymous]
+        public WebResponseContent CPDeviceRequestInboundTaskSimple(string stationCode, string palletCode, int heightType, string courceAddress)
+        {
+            return Service.CPDeviceRequestInboundTaskSimple(stationCode, palletCode, heightType, courceAddress);
+        }
+
         /// <summary>
         /// 鐢宠宸烽亾
         /// </summary>
@@ -195,9 +201,9 @@
         }
 
         [HttpPost, Route("FeedBackInboundERP"), AllowAnonymous]
-        public WebResponseContent FeedBackInboundERP(string upperOrderNo,string linId)
+        public WebResponseContent FeedBackInboundERP(string upperOrderNo, string linId)
         {
-            return Service.FeedBackInboundERP(upperOrderNo , linId);
+            return Service.FeedBackInboundERP(upperOrderNo, linId);
         }
 
         /// <summary>
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs
index 11c1694..897d16a 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs
@@ -29,6 +29,8 @@
             CreateMap<Dt_StockInfoDetail, Dt_StockQuantityChangeRecord>().ForMember(x => x.SerilNumber, b => b.MapFrom(b => b.SerialNumber)).ForMember(x => x.StockDetailId, b => b.MapFrom(b => b.Id));
             CreateMap<OutboundOrderDetailAddDTO, Dt_OutboundOrderDetail>().ForMember(x => x.OrderDetailStatus, b => b.MapFrom(b => 0));
             CreateMap<OutboundOrderAddDTO, Dt_OutboundOrder>();
+            CreateMap<OutboundOrderDetailAddDTO, Dt_NewOutboundOrderDetail>().ForMember(x => x.OrderDetailStatus, b => b.MapFrom(b => 0));
+            CreateMap<OutboundOrderAddDTO, Dt_NewOutboundOrder>();
         }
     }
 }
diff --git "a/\345\220\211\345\256\211PDA/pages.json" "b/\345\220\211\345\256\211PDA/pages.json"
index fd2133c..4d84fa8 100644
--- "a/\345\220\211\345\256\211PDA/pages.json"
+++ "b/\345\220\211\345\256\211PDA/pages.json"
@@ -44,6 +44,20 @@
 			}
 		},
 		{
+			"path": "pages/stash/YSinboundorder",
+			"style": {
+				"navigationBarTitleText": "鑽按缁勭洏",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/stash/FLinboundorder",
+			"style": {
+				"navigationBarTitleText": "杈呮枡缁勭洏",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
 			"path": "pages/stash/raworderboxing",
 			"style": {
 				"navigationBarTitleText": "缁勭洏鍏ュ簱",
@@ -58,6 +72,20 @@
 			}
 		},
 		{
+			"path": "pages/stash/YSraworderboxing",
+			"style": {
+				"navigationBarTitleText": "鑽按缁勭洏鍏ュ簱",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/stash/FLraworderboxing",
+			"style": {
+				"navigationBarTitleText": "杈呮枡缁勭洏鍏ュ簱",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
 			"path": "pages/stash/outboundorder",
 			"style": {
 				"navigationBarTitleText": "鍑哄簱鍗�",
diff --git "a/\345\220\211\345\256\211PDA/pages/stash/FLinboundorder.vue" "b/\345\220\211\345\256\211PDA/pages/stash/FLinboundorder.vue"
new file mode 100644
index 0000000..c23c7c7
--- /dev/null
+++ "b/\345\220\211\345\256\211PDA/pages/stash/FLinboundorder.vue"
@@ -0,0 +1,216 @@
+<template>
+	<view>
+		<u-sticky>
+			<view style="background-color: #ffffff;">
+				<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+			</view>
+		</u-sticky>
+		<uni-list :border="true">
+			<uni-list-item direction="column" clickable @click="groupClick(item.orderNo)" link
+				:to="page+item.orderNo" v-for="item in allReceivingOrders" :key="item.orderNo">
+				<template v-slot:body>
+					<uni-group margin-top="20">
+						<view style="line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
+							鍏ュ簱鍗曞彿&nbsp;&nbsp;{{item.orderNo}} 
+						</view>
+						<view style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
+							鍒涘缓浜哄憳&nbsp;&nbsp;{{item.creater}} 
+						</view>
+						<view style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
+							鍒涘缓鏃ユ湡&nbsp;&nbsp;{{item.createDate}} 
+						</view>
+						<view
+							style="margin-top: 10rpx;display: flex;align-items: center; ">
+							<view style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 238rpx;height: 40rpx;font-size: 22rpx;background-color:rgba(22,127,247,0.18);color: #1F63FF;">
+								璁㈠崟鐘舵��&nbsp;&nbsp;{{item.InboundOrderStatus}}
+							</view>
+							<view style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
+								鎬婚噺&nbsp;&nbsp;{{item.SumQty}}
+							</view>
+							<view style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
+								宸插叆&nbsp;&nbsp;{{item.OverQty}}
+							</view>
+						</view>
+					</uni-group>
+				</template>
+			</uni-list-item>
+
+		</uni-list>
+		<uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
+
+		<u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
+	</view>
+</template>
+
+<script>
+	import { InboundOrderStatus } from '../../common/config.js'
+	export default {
+		data() {
+			return {
+				page: "/pages/stash/FLraworderboxing?",
+				loadVisible: false,
+				searchValue: "",
+				status: "more",
+				allReceivingOrders: [],
+				pageNo: 1,
+				scrollTop: 0,
+				warehouseId: "",
+				isLoaded:false
+			}
+		},
+		onLoad(res) {
+			this.warehouseId = res.warehouseId;
+			this.page = this.page + "warehouseId=" + this.warehouseId + "&orderNo=";
+			this.getData();
+		},
+		onReachBottom() {
+			this.pageNo += 1;
+			this.getData();
+			this.isLoaded=true;
+		},
+		onShow() {
+			if (this.isLoaded) {
+				// 浠庡叾浠栭〉闈㈣繑鍥炴椂鍒锋柊
+				this.getData();
+			}
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+		},
+		methods: {
+			search(res) {
+				this.getData();
+			},
+			groupClick() {
+
+			},
+			getData() {
+				var postData = {
+					MainData: {
+						warehouseId: this.warehouseId,
+						orderNo: this.searchValue,
+						pageNo: this.pageNo
+					},
+				}
+				this.$u.post('/api/InboundOrder/GetInboundOrders', postData).then((res) => {
+					if (res.status) {
+						if (res.data.length > 0) {
+							if (this.searchValue == '') {
+								this.allReceivingOrders = res.data.map(i => ({
+									...i,
+									InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
+										.orderStatus).label,
+									SumQty: i.details.map(item => item.orderQuantity).reduce((prev, next) => prev + next, 0),
+									OverQty: i.details.map(item => item.overInQuantity).reduce((prev, next) => prev + next, 0)
+								}));
+								// this.allReceivingOrders = res.data;
+								if (this.allReceivingOrders.length > 3) {
+									this.loadVisible = true;
+								} else {
+									this.loadVisible = false;
+								}
+							} else {
+								this.allReceivingOrders = res.data.map(i => ({
+									...i,
+									InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
+										.orderStatus).label,
+									SumQty: i.details.map(item => item.orderQuantity).reduce((prev, next) => prev + next, 0),
+									OverQty: i.details.map(item => item.overInQuantity).reduce((prev, next) => prev + next, 0)
+								}));
+								if (this.allReceivingOrders.length > 3) {
+									this.loadVisible = true;
+								} else {
+									this.loadVisible = false;
+								}
+							}
+						} else {
+							this.status = 'noMore';
+							//this.allReceivingOrders = [];
+							this.loadVisible = true;
+						}
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	page {
+		display: flex;
+		flex-direction: column;
+		box-sizing: border-box;
+		background-color: #efeff4;
+		min-height: 100%;
+		height: auto;
+	}
+
+	.tips {
+		color: #67c23a;
+		font-size: 14px;
+		line-height: 40px;
+		text-align: center;
+		background-color: #f0f9eb;
+		height: 0;
+		opacity: 0;
+		transform: translateY(-100%);
+		transition: all 0.3s;
+	}
+
+	.tips-ani {
+		transform: translateY(0);
+		height: 40px;
+		opacity: 1;
+	}
+
+	.content {
+		width: 100%;
+		display: flex;
+	}
+
+	.list-picture {
+		width: 100%;
+		height: 145px;
+	}
+
+	.thumb-image {
+		width: 100%;
+		height: 100%;
+	}
+
+	.ellipsis {
+		display: flex;
+		overflow: hidden;
+	}
+
+	.uni-ellipsis-1 {
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+
+	.uni-ellipsis-2 {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.customcss {
+		display: flex;
+		position: fixed;
+		width: 100%;
+		top: 10px;
+		text-align: center;
+		z-index: 999;
+		left: 30px;
+		height: 20%;
+	}
+
+	.footer {
+		padding-top: 50%;
+	}
+</style>
\ No newline at end of file
diff --git "a/\345\220\211\345\256\211PDA/pages/stash/FLraworderboxing.vue" "b/\345\220\211\345\256\211PDA/pages/stash/FLraworderboxing.vue"
new file mode 100644
index 0000000..e008bbe
--- /dev/null
+++ "b/\345\220\211\345\256\211PDA/pages/stash/FLraworderboxing.vue"
@@ -0,0 +1,609 @@
+<template>
+	<view>
+		<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control>
+		<view class="content">
+			<view v-if="current === 0" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="180">
+						<uni-forms-item :label="label">
+						</uni-forms-item>
+						<uni-forms-item label="鎵樼洏鏉$爜:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' :focus="!focus"
+								v-model="barcode" @confirm="barcodeInput" />
+						</uni-forms-item>
+						<uni-forms-item label="鍐呯鏍囩:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="focus"
+								v-model="materSn" @confirm="snInput" />
+						</uni-forms-item>
+
+						<uni-forms-item :label="Testlabel" v-if="Test">
+							<uni-easyinput type="text" :placeholder="Testplaceholder" ref='midInput'
+								v-model="Initiallife" />
+						</uni-forms-item>
+
+						<uni-forms-item>
+							<view style="display: flex;justify-content: space-around;margin-top: 2%;">
+								<button @click="reset" type="default" size="default"
+									style="width: 160rpx;border: 1rpx solid #007aff;color: #007aff;">閲嶇疆</button>
+								<button @click="submit" type="primary" size="default" style="width: 160rpx;">缁勭洏</button>
+							</view>
+						</uni-forms-item>
+					</uni-forms>
+					<uni-list>
+						<uni-list-item direction="column" v-for="(item,index) in matInfos" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
+										@click="deleteList(index)">
+									</uni-icons>
+									<view class="uni-content">
+										<view class="uni-title-sub uni-ellipsis-2">閲囪喘鍗曞彿锛歿{item.purchaseOrderNo}}</view>
+										<view class="uni-note">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view class="uni-note">鎵规鍙凤細{{item.lotNo}}</view>
+										<!-- 鐩存帴缂栬緫Q鍊煎搴旂殑quantity瀛楁 -->
+										<view class="uni-note" style="display: flex; align-items: center; gap: 10rpx;">
+											鏁伴噺锛�
+											<uni-easyinput 
+												type="number" 
+												min="1" 
+												style="width: 150rpx; display: inline-block;"
+												v-model="item.quantity" 
+												@input="handleQuantityChange(item)"
+											/>
+										</view>
+										<view class="uni-note">鐢熶骇鏃ユ湡锛歿{item.productionDate}}</view>
+										<view class="uni-note">鏈夋晥鏈燂細{{item.effectiveDate}}</view>
+										<view class="uni-note">浜よ揣鍗曞彿锛歿{item.deliveryNote}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+			<view v-if="current === 1" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="120">
+						<uni-forms-item label="鎵樼洏鏉$爜">
+							<uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
+								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @confirm="inputChangebarcode" />
+						</uni-forms-item>
+						<uni-forms-item label="鍦板潃鏉$爜">
+							<uni-easyinput type="text" v-model="address" :disabled="addressdisabled"
+								placeholder="璇锋壂鎻忓湴鍧�鏉$爜" ref='midInput' :focus="addressFocus" />
+						</uni-forms-item>
+						<uni-forms-item>
+							<button @click="inbound" type="primary" size="default" style="margin-top: 2%;">鍏ュ簱纭</button>
+						</uni-forms-item>
+					</uni-forms>
+				</view>
+			</view>
+			<view v-if="current === 2" class="headerstyle">
+				<view class="itemstyle">
+					<uni-list :border="true">
+						<uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<view class="uni-content">
+										<view style="font-size: 18px;">鍗曟嵁鍙凤細{{orderNo}}</view>
+										<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view>鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
+										<view style="font-size: 18px;">鏁伴噺锛歿{item.orderQuantity}}</view>
+										<view style="font-size: 18px;">缁勭洏鏁伴噺锛歿{item.receiptQuantity}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+			<view v-if="current === 3" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="180">
+						<uni-forms-item label="鍐呯鏍囩:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="!pkfocus"
+								v-model="pkmaterSn" @confirm="pksnInput" />
+						</uni-forms-item>
+
+						<uni-forms-item>
+							<view style="display: flex;justify-content: space-around;margin-top: 2%;">
+								<button @click="resetInPk" type="default" size="default"
+									style="width: 160rpx;border: 1rpx solid #007aff;color: #007aff;">閲嶇疆</button>
+								<button @click="pksubmit" type="primary" size="default"
+									style="margin-top: 2%;">鍏ュ钩搴�</button>
+							</view>
+						</uni-forms-item>
+
+					</uni-forms>
+					<uni-list>
+						<uni-list-item direction="column" v-for="(item,index) in pkmatInfos" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
+										@click="pkdeleteList(index)">
+									</uni-icons>
+									<view class="uni-content">
+										<view class="uni-title-sub uni-ellipsis-2">閲囪喘鍗曞彿锛歿{item.purchaseOrderNo}}</view>
+										<view class="uni-note">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view class="uni-note">鎵规鍙凤細{{item.lotNo}}</view>
+										<!-- 鐩存帴缂栬緫Q鍊煎搴旂殑quantity瀛楁 -->
+										<view class="uni-note" style="display: flex; align-items: center; gap: 10rpx;">
+											鏁伴噺锛�
+											<uni-easyinput 
+												type="number" 
+												min="1" 
+												style="width: 150rpx; display: inline-block;"
+												v-model="item.quantity" 
+												@input="handlePkQuantityChange(item)"
+											/>
+										</view>
+										<view class="uni-note">鐢熶骇鏃ユ湡锛歿{item.productionDate}}</view>
+										<view class="uni-note">鏈夋晥鏈燂細{{item.effectiveDate}}</view>
+										<view class="uni-note">浜よ揣鍗曞彿锛歿{item.deliveryNote}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['缁勭洏', '鍏ュ簱', '鍗曟嵁淇℃伅'],
+				current: 0,
+				matTotal: [],
+				matInfos: [],
+				orderNo: "",
+				label: "",
+				orderInfo: [],
+				focus: false,
+				pkfocus: false,
+				barcode: "",
+				materSn: "",
+				Initiallife: 1000,
+				sns: [],
+				pksns: [],
+				addressFocus: false,
+				inboundBarcode: "",
+				address: "",
+				check: true,
+				value: "",
+				matInfo: [],
+				value2: "",
+				matTotals: [],
+				warehouseId: "",
+				Test: false,
+				Testlabel: "",
+				Testplaceholder: "",
+				Testcheck: false,
+				pkmaterSn: "",
+				pkmatInfos: [],
+				addressdisabled: false
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.orderNo = res.orderNo;
+			this.warehouseId = res.warehouseId;
+			// if (this.warehouseId == 6) { //娴嬭瘯鏋朵粨搴撳尯ID
+			// 	this.Test = true;
+			// 	this.Testlabel = "鍒濆瀵垮懡:";
+			// 	this.Testplaceholder = "璇疯緭鍏ュ垵濮嬪鍛�";
+			// } else if (this.warehouseId == 2) { //娌瑰ⅷ浠撳簱鍖篒D
+			// 	this.Test = true;
+			// 	this.Testlabel = "鏁伴噺:";
+			// 	this.Testplaceholder = "璇疯緭鍏ユ暟閲�";
+			// 	this.Initiallife = 16;
+			// } else if (this.warehouseId == 5) { //杈呮枡
+			// 	this.items.push("鍏ュ钩搴�");
+			// 	this.items[1] = "鍏ョ珛搴�";
+			// 	this.address = "8005";
+			// } else if (this.warehouseId == 3) { //杈呮枡
+			// 	this.address = "1011";
+			// 	this.addressdisabled = true;
+			// }
+			this.label = "鍗曟嵁缂栧彿锛�" + this.orderNo;
+			this.getData();
+		},
+		methods: {
+			// 缁勭洏椤垫暟閲忕紪杈戞牎楠岋紙鐩存帴淇敼鍘熺敓quantity瀛楁锛�
+			handleQuantityChange(item) {
+				item.quantity = item.quantity ? Math.max(1, parseInt(item.quantity)) : 1;
+			},
+
+			// 鍏ュ钩搴撻〉鏁伴噺缂栬緫鏍¢獙锛堢洿鎺ヤ慨鏀瑰師鐢焣uantity瀛楁锛�
+			handlePkQuantityChange(item) {
+				item.quantity = item.quantity ? Math.max(1, parseInt(item.quantity)) : 1;
+			},
+
+			updateFocus() {
+				this.$nextTick(() => {
+					this.materSn = '';
+					if (!this.focus) {
+						this.focus = true;
+					}
+				});
+			},
+			
+			barcodeFocus() {
+				this.barcode = '';
+				if (this.focus) {
+					this.focus = false;
+				}
+			},
+			
+			getData() {
+				var postData = {
+					MainData: {
+						orderNo: this.orderNo
+					},
+				}
+				this.$u.post('/api/InboundOrderDetail/GetInboundOrderDetails', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						if (this.orderInfo.length > 3) {
+							this.loadVisible = true;
+						}
+					}
+				})
+			},
+			
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			
+			barcodeInput() {
+				this.$nextTick(function(x) {
+					if (this.barcode.length > 0) {
+						this.focus = true;
+					}
+				})
+			},
+			
+			// 缁勭洏椤靛唴绠辩爜瑙f瀽锛堢洿鎺ユ搷浣滃師鐢焣uantity瀛楁锛�
+			snInput() {
+				this.$nextTick(() => {
+					if (!this.materSn) return;
+
+					// 寤惰繜100ms纭繚鎵爜瀹屾垚
+					setTimeout(() => {
+						this.focus = false;
+						let matSn = this.materSn.trim();
+
+						// 浠撳簱11鐨勭壒娈婂鐞�
+						if (this.warehouseId == 11) {
+							matSn = matSn.replace(/,SC.*/, '');
+						}
+
+						// 鏍¢獙鍐呯鐮佸畬鏁存��
+						const requiredFields = ['M:', 'BS:', 'DM:', 'DE:', 'Q:', 'PO:', 'DN:'];
+						const hasAllFields = requiredFields.every(field => matSn.includes(field));
+						if (!hasAllFields) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佷笉瀹屾暣锛岃閲嶆柊鎵弿",
+								type: "error"
+							});
+							this.materSn = "";
+							return;
+						}
+
+						// 鏍¢獙PO瀛楁瀛樺湪鎬�
+						if (matSn.indexOf("PO") <= 0) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佹牸寮忛敊璇紙鏃燩O鏍囪瘑锛�",
+								type: "error"
+							});
+							this.materSn = "";
+							return;
+						}
+
+						// 瑙f瀽鍐呯鐮侊紙鐩存帴浣跨敤杩斿洖鐨剄uantity浣滀负Q鍊硷級
+						this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
+							this.Testcheck = false;
+							if (res.status) {
+								this.sns.push(res.data.serialNumber);
+								this.matInfos.push(res.data);
+
+								if (res.message) {
+									this.$refs.uToast.show({
+										title: res.message,
+										type: "warning"
+									});
+								}
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								});
+							}
+						});
+
+						this.materSn = "";
+					}, 1000);
+				})
+			},
+			
+			// 鍏ュ钩搴撻〉鍐呯鐮佽В鏋愶紙鐩存帴鎿嶄綔鍘熺敓quantity瀛楁锛�
+			pksnInput() {
+				this.$nextTick(() => {
+					if (!this.pkmaterSn) return;
+
+					// 寤惰繜100ms纭繚鎵爜瀹屾垚
+					setTimeout(() => {
+						let matSn = this.pkmaterSn.trim();
+
+						// 鏍¢獙鍐呯鐮佸畬鏁存��
+						const requiredFields = ['M:', 'BS:', 'DM:', 'DE:', 'Q:', 'PO:', 'DN:'];
+						const hasAllFields = requiredFields.every(field => matSn.includes(field));
+						if (!hasAllFields) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佷笉瀹屾暣锛岃閲嶆柊鎵弿",
+								type: "error"
+							});
+							this.pkmaterSn = "";
+							return;
+						}
+
+						// 鏍¢獙PO瀛楁瀛樺湪鎬�
+						if (matSn.indexOf("PO") <= 0) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佹牸寮忛敊璇紙鏃燩O鏍囪瘑锛�",
+								type: "error"
+							});
+							this.pkmaterSn = "";
+							return;
+						}
+
+						// 瑙f瀽鍐呯鐮侊紙鐩存帴浣跨敤杩斿洖鐨剄uantity浣滀负Q鍊硷級
+						this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
+							if (res.status) {
+								this.pksns.push(res.data.serialNumber);
+								this.pkmatInfos.push(res.data);
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								});
+							}
+						});
+
+						this.pkmaterSn = "";
+					}, 100);
+				})
+			},
+			
+			inbound() {
+				if (this.inboundBarcode == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忔墭鐩樻潯鐮�",
+						type: "error"
+					})
+					return;
+				}
+				if (this.address == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓湴鍧�鏉$爜",
+						type: "error"
+					})
+					return;
+				}
+				var postData = {
+					MainData: {
+						"barcode": this.inboundBarcode,
+						"startPoint": this.address,
+						"warehouseId": this.warehouseId
+					}
+				}
+				this.$u.post('/api/Task/RequestInboundTask', postData).then(res => {
+					if (res.status) {
+						this.inboundBarcode = "";
+						if (this.warehouseId != 5) this.address = "";
+						setTimeout(() => {
+							this.addressFocus = false;
+							this.$refs.uToast.show({
+								title: "鎴愬姛",
+								type: "success"
+							})
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			
+			inputChangebarcode() {
+				this.addressFocus = false;
+				this.$nextTick(function(x) {
+					if (this.inboundBarcode != '') {
+						this.addressFocus = true;
+					}
+				})
+			},
+			
+			deleteList(res) {
+				this.matInfos.splice(res, 1);
+				this.sns.splice(res, 1);
+			},
+			
+			pkdeleteList(res) {
+				this.pkmatInfos.splice(res, 1);
+				this.pksns.splice(res, 1);
+			},
+			
+			reset() {
+				this.barcode = "";
+				this.matInfos = [];
+				this.sns = [];
+				this.materSn = "";
+				if (this.warehouseId != 6) {
+					this.Initiallife = 0;
+				}
+			},
+			
+			resetInPk() {
+				this.pkmaterSn = "";
+				this.pkfocus = false;
+				this.pkmatInfos = [];
+				this.pksns = [];
+			},
+			
+			pksubmit() {
+				if (this.pkmatInfos.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓唴绠辨爣绛�",
+						type: 'error'
+					})
+					return;
+				}
+				
+				// 鐩存帴浣跨敤淇敼鍚庣殑quantity锛堝搴擰鍊硷級鎻愪氦
+				const submitData = this.pkmatInfos.map(item => ({
+					serialNumber: item.serialNumber,
+					quantity: item.quantity
+				}));
+				
+				this.$u.post('/api/InboundOrder/InPinKu?warehouseId=' + this.warehouseId + "&orderNo=" + this.orderNo, submitData)
+					.then(res => {
+						if (res.status) {
+							this.$refs.uToast.show({
+								title: "鍏ュ簱鎴愬姛",
+								type: "success"
+							})
+							this.pkfocus = false;
+							this.pkmatInfos = [];
+							this.pksns = [];
+						} else {
+							this.$refs.uToast.show({
+								title: res.message,
+								type: "error"
+							})
+						}
+					})
+			},
+			
+			submit() {
+				if (this.barcode == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忔墭鐩樻潯鐮�",
+						type: 'error'
+					})
+					return;
+				}
+				if (this.matInfos.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓唴绠辨爣绛�",
+						type: 'error'
+					})
+					return;
+				}
+				if (this.Test) {
+					if (!this.Testcheck) {
+						this.Testcheck = true;
+						if (this.warehouseId == 2) {
+							this.$refs.uToast.show({
+								title: "璇风‘璁ゆ暟閲�",
+								type: 'error'
+							})
+						} 
+						return;
+					}
+				}
+				
+				// 鐩存帴浣跨敤淇敼鍚庣殑quantity锛堝搴擰鍊硷級鎻愪氦
+				let submitSns = this.matInfos.map(item => ({
+					serialNumber: item.serialNumber,
+					quantity: item.quantity
+				}));
+				
+				// 娌瑰ⅷ浠撳簱鐗规畩澶勭悊
+				if (this.warehouseId == 2) {
+					const firstItem = submitSns[0];
+					for (var i = 0; i < this.Initiallife - 1; i++) {
+						submitSns.push({...firstItem});
+					}
+				}
+				
+				this.$u.post('/api/InboundOrder/MaterielGroup', {
+					MainData: {
+						"palletCode": this.barcode,
+						"orderNo": this.orderNo,
+						"initiallife": this.Initiallife,
+						"warehouseId": this.warehouseId
+					},
+					DelKeys: submitSns
+				}).then(res => {
+					this.Testcheck = false;
+					if (res.status) {
+						this.$refs.uToast.show({
+							title: "缁勭洏鎴愬姛",
+							type: "success"
+						})
+						this.focus = false;
+						this.barcode = "";
+						this.matInfos = [];
+						this.sns = [];
+						this.matTotal = [];
+						if (this.warehouseId != 6) {
+							this.Initiallife = "";
+						}
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.content {
+		display: flex;
+		height: 150px;
+	}
+
+	.content-text {
+		font-size: 14px;
+		color: #666;
+	}
+
+	.itemstyle {
+		margin-top: 30px;
+		margin-left: 5%;
+	}
+
+	.headerstyle {
+		width: 90%;
+	}
+</style>
+    
\ No newline at end of file
diff --git "a/\345\220\211\345\256\211PDA/pages/stash/YSinboundorder.vue" "b/\345\220\211\345\256\211PDA/pages/stash/YSinboundorder.vue"
new file mode 100644
index 0000000..e954e64
--- /dev/null
+++ "b/\345\220\211\345\256\211PDA/pages/stash/YSinboundorder.vue"
@@ -0,0 +1,216 @@
+<template>
+	<view>
+		<u-sticky>
+			<view style="background-color: #ffffff;">
+				<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+			</view>
+		</u-sticky>
+		<uni-list :border="true">
+			<uni-list-item direction="column" clickable @click="groupClick(item.orderNo)" link
+				:to="page+item.orderNo" v-for="item in allReceivingOrders" :key="item.orderNo">
+				<template v-slot:body>
+					<uni-group margin-top="20">
+						<view style="line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
+							鍏ュ簱鍗曞彿&nbsp;&nbsp;{{item.orderNo}} 
+						</view>
+						<view style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
+							鍒涘缓浜哄憳&nbsp;&nbsp;{{item.creater}} 
+						</view>
+						<view style="margin-top: 10rpx;line-height: 17px;color: #596671;font-size: 14px;text-align: center;display: flex;justify-content: space-between;">
+							鍒涘缓鏃ユ湡&nbsp;&nbsp;{{item.createDate}} 
+						</view>
+						<view
+							style="margin-top: 10rpx;display: flex;align-items: center; ">
+							<view style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 238rpx;height: 40rpx;font-size: 22rpx;background-color:rgba(22,127,247,0.18);color: #1F63FF;">
+								璁㈠崟鐘舵��&nbsp;&nbsp;{{item.InboundOrderStatus}}
+							</view>
+							<view style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
+								鎬婚噺&nbsp;&nbsp;{{item.SumQty}}
+							</view>
+							<view style="text-align: center;line-height: 40rpx;border-radius: 8rpx; width: 158rpx;height: 40rpx;font-size: 22rpx;color: #F56C6C;">
+								宸插叆&nbsp;&nbsp;{{item.OverQty}}
+							</view>
+						</view>
+					</uni-group>
+				</template>
+			</uni-list-item>
+
+		</uni-list>
+		<uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
+
+		<u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
+	</view>
+</template>
+
+<script>
+	import { InboundOrderStatus } from '../../common/config.js'
+	export default {
+		data() {
+			return {
+				page: "/pages/stash/YSraworderboxing?",
+				loadVisible: false,
+				searchValue: "",
+				status: "more",
+				allReceivingOrders: [],
+				pageNo: 1,
+				scrollTop: 0,
+				warehouseId: "",
+				isLoaded:false
+			}
+		},
+		onLoad(res) {
+			this.warehouseId = res.warehouseId;
+			this.page = this.page + "warehouseId=" + this.warehouseId + "&orderNo=";
+			this.getData();
+		},
+		onReachBottom() {
+			this.pageNo += 1;
+			this.getData();
+			this.isLoaded=true;
+		},
+		onShow() {
+			if (this.isLoaded) {
+				// 浠庡叾浠栭〉闈㈣繑鍥炴椂鍒锋柊
+				this.getData();
+			}
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+		},
+		methods: {
+			search(res) {
+				this.getData();
+			},
+			groupClick() {
+
+			},
+			getData() {
+				var postData = {
+					MainData: {
+						warehouseId: this.warehouseId,
+						orderNo: this.searchValue,
+						pageNo: this.pageNo
+					},
+				}
+				this.$u.post('/api/InboundOrder/GetInboundOrders', postData).then((res) => {
+					if (res.status) {
+						if (res.data.length > 0) {
+							if (this.searchValue == '') {
+								this.allReceivingOrders = res.data.map(i => ({
+									...i,
+									InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
+										.orderStatus).label,
+									SumQty: i.details.map(item => item.orderQuantity).reduce((prev, next) => prev + next, 0),
+									OverQty: i.details.map(item => item.overInQuantity).reduce((prev, next) => prev + next, 0)
+								}));
+								// this.allReceivingOrders = res.data;
+								if (this.allReceivingOrders.length > 3) {
+									this.loadVisible = true;
+								} else {
+									this.loadVisible = false;
+								}
+							} else {
+								this.allReceivingOrders = res.data.map(i => ({
+									...i,
+									InboundOrderStatus: InboundOrderStatus.find(item => item.value == i
+										.orderStatus).label,
+									SumQty: i.details.map(item => item.orderQuantity).reduce((prev, next) => prev + next, 0),
+									OverQty: i.details.map(item => item.overInQuantity).reduce((prev, next) => prev + next, 0)
+								}));
+								if (this.allReceivingOrders.length > 3) {
+									this.loadVisible = true;
+								} else {
+									this.loadVisible = false;
+								}
+							}
+						} else {
+							this.status = 'noMore';
+							//this.allReceivingOrders = [];
+							this.loadVisible = true;
+						}
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	page {
+		display: flex;
+		flex-direction: column;
+		box-sizing: border-box;
+		background-color: #efeff4;
+		min-height: 100%;
+		height: auto;
+	}
+
+	.tips {
+		color: #67c23a;
+		font-size: 14px;
+		line-height: 40px;
+		text-align: center;
+		background-color: #f0f9eb;
+		height: 0;
+		opacity: 0;
+		transform: translateY(-100%);
+		transition: all 0.3s;
+	}
+
+	.tips-ani {
+		transform: translateY(0);
+		height: 40px;
+		opacity: 1;
+	}
+
+	.content {
+		width: 100%;
+		display: flex;
+	}
+
+	.list-picture {
+		width: 100%;
+		height: 145px;
+	}
+
+	.thumb-image {
+		width: 100%;
+		height: 100%;
+	}
+
+	.ellipsis {
+		display: flex;
+		overflow: hidden;
+	}
+
+	.uni-ellipsis-1 {
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+
+	.uni-ellipsis-2 {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.customcss {
+		display: flex;
+		position: fixed;
+		width: 100%;
+		top: 10px;
+		text-align: center;
+		z-index: 999;
+		left: 30px;
+		height: 20%;
+	}
+
+	.footer {
+		padding-top: 50%;
+	}
+</style>
\ No newline at end of file
diff --git "a/\345\220\211\345\256\211PDA/pages/stash/YSraworderboxing.vue" "b/\345\220\211\345\256\211PDA/pages/stash/YSraworderboxing.vue"
new file mode 100644
index 0000000..e008bbe
--- /dev/null
+++ "b/\345\220\211\345\256\211PDA/pages/stash/YSraworderboxing.vue"
@@ -0,0 +1,609 @@
+<template>
+	<view>
+		<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control>
+		<view class="content">
+			<view v-if="current === 0" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="180">
+						<uni-forms-item :label="label">
+						</uni-forms-item>
+						<uni-forms-item label="鎵樼洏鏉$爜:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' :focus="!focus"
+								v-model="barcode" @confirm="barcodeInput" />
+						</uni-forms-item>
+						<uni-forms-item label="鍐呯鏍囩:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="focus"
+								v-model="materSn" @confirm="snInput" />
+						</uni-forms-item>
+
+						<uni-forms-item :label="Testlabel" v-if="Test">
+							<uni-easyinput type="text" :placeholder="Testplaceholder" ref='midInput'
+								v-model="Initiallife" />
+						</uni-forms-item>
+
+						<uni-forms-item>
+							<view style="display: flex;justify-content: space-around;margin-top: 2%;">
+								<button @click="reset" type="default" size="default"
+									style="width: 160rpx;border: 1rpx solid #007aff;color: #007aff;">閲嶇疆</button>
+								<button @click="submit" type="primary" size="default" style="width: 160rpx;">缁勭洏</button>
+							</view>
+						</uni-forms-item>
+					</uni-forms>
+					<uni-list>
+						<uni-list-item direction="column" v-for="(item,index) in matInfos" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
+										@click="deleteList(index)">
+									</uni-icons>
+									<view class="uni-content">
+										<view class="uni-title-sub uni-ellipsis-2">閲囪喘鍗曞彿锛歿{item.purchaseOrderNo}}</view>
+										<view class="uni-note">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view class="uni-note">鎵规鍙凤細{{item.lotNo}}</view>
+										<!-- 鐩存帴缂栬緫Q鍊煎搴旂殑quantity瀛楁 -->
+										<view class="uni-note" style="display: flex; align-items: center; gap: 10rpx;">
+											鏁伴噺锛�
+											<uni-easyinput 
+												type="number" 
+												min="1" 
+												style="width: 150rpx; display: inline-block;"
+												v-model="item.quantity" 
+												@input="handleQuantityChange(item)"
+											/>
+										</view>
+										<view class="uni-note">鐢熶骇鏃ユ湡锛歿{item.productionDate}}</view>
+										<view class="uni-note">鏈夋晥鏈燂細{{item.effectiveDate}}</view>
+										<view class="uni-note">浜よ揣鍗曞彿锛歿{item.deliveryNote}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+			<view v-if="current === 1" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="120">
+						<uni-forms-item label="鎵樼洏鏉$爜">
+							<uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
+								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @confirm="inputChangebarcode" />
+						</uni-forms-item>
+						<uni-forms-item label="鍦板潃鏉$爜">
+							<uni-easyinput type="text" v-model="address" :disabled="addressdisabled"
+								placeholder="璇锋壂鎻忓湴鍧�鏉$爜" ref='midInput' :focus="addressFocus" />
+						</uni-forms-item>
+						<uni-forms-item>
+							<button @click="inbound" type="primary" size="default" style="margin-top: 2%;">鍏ュ簱纭</button>
+						</uni-forms-item>
+					</uni-forms>
+				</view>
+			</view>
+			<view v-if="current === 2" class="headerstyle">
+				<view class="itemstyle">
+					<uni-list :border="true">
+						<uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<view class="uni-content">
+										<view style="font-size: 18px;">鍗曟嵁鍙凤細{{orderNo}}</view>
+										<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view>鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
+										<view style="font-size: 18px;">鏁伴噺锛歿{item.orderQuantity}}</view>
+										<view style="font-size: 18px;">缁勭洏鏁伴噺锛歿{item.receiptQuantity}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+			<view v-if="current === 3" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="180">
+						<uni-forms-item label="鍐呯鏍囩:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="!pkfocus"
+								v-model="pkmaterSn" @confirm="pksnInput" />
+						</uni-forms-item>
+
+						<uni-forms-item>
+							<view style="display: flex;justify-content: space-around;margin-top: 2%;">
+								<button @click="resetInPk" type="default" size="default"
+									style="width: 160rpx;border: 1rpx solid #007aff;color: #007aff;">閲嶇疆</button>
+								<button @click="pksubmit" type="primary" size="default"
+									style="margin-top: 2%;">鍏ュ钩搴�</button>
+							</view>
+						</uni-forms-item>
+
+					</uni-forms>
+					<uni-list>
+						<uni-list-item direction="column" v-for="(item,index) in pkmatInfos" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
+										@click="pkdeleteList(index)">
+									</uni-icons>
+									<view class="uni-content">
+										<view class="uni-title-sub uni-ellipsis-2">閲囪喘鍗曞彿锛歿{item.purchaseOrderNo}}</view>
+										<view class="uni-note">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view class="uni-note">鎵规鍙凤細{{item.lotNo}}</view>
+										<!-- 鐩存帴缂栬緫Q鍊煎搴旂殑quantity瀛楁 -->
+										<view class="uni-note" style="display: flex; align-items: center; gap: 10rpx;">
+											鏁伴噺锛�
+											<uni-easyinput 
+												type="number" 
+												min="1" 
+												style="width: 150rpx; display: inline-block;"
+												v-model="item.quantity" 
+												@input="handlePkQuantityChange(item)"
+											/>
+										</view>
+										<view class="uni-note">鐢熶骇鏃ユ湡锛歿{item.productionDate}}</view>
+										<view class="uni-note">鏈夋晥鏈燂細{{item.effectiveDate}}</view>
+										<view class="uni-note">浜よ揣鍗曞彿锛歿{item.deliveryNote}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['缁勭洏', '鍏ュ簱', '鍗曟嵁淇℃伅'],
+				current: 0,
+				matTotal: [],
+				matInfos: [],
+				orderNo: "",
+				label: "",
+				orderInfo: [],
+				focus: false,
+				pkfocus: false,
+				barcode: "",
+				materSn: "",
+				Initiallife: 1000,
+				sns: [],
+				pksns: [],
+				addressFocus: false,
+				inboundBarcode: "",
+				address: "",
+				check: true,
+				value: "",
+				matInfo: [],
+				value2: "",
+				matTotals: [],
+				warehouseId: "",
+				Test: false,
+				Testlabel: "",
+				Testplaceholder: "",
+				Testcheck: false,
+				pkmaterSn: "",
+				pkmatInfos: [],
+				addressdisabled: false
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.orderNo = res.orderNo;
+			this.warehouseId = res.warehouseId;
+			// if (this.warehouseId == 6) { //娴嬭瘯鏋朵粨搴撳尯ID
+			// 	this.Test = true;
+			// 	this.Testlabel = "鍒濆瀵垮懡:";
+			// 	this.Testplaceholder = "璇疯緭鍏ュ垵濮嬪鍛�";
+			// } else if (this.warehouseId == 2) { //娌瑰ⅷ浠撳簱鍖篒D
+			// 	this.Test = true;
+			// 	this.Testlabel = "鏁伴噺:";
+			// 	this.Testplaceholder = "璇疯緭鍏ユ暟閲�";
+			// 	this.Initiallife = 16;
+			// } else if (this.warehouseId == 5) { //杈呮枡
+			// 	this.items.push("鍏ュ钩搴�");
+			// 	this.items[1] = "鍏ョ珛搴�";
+			// 	this.address = "8005";
+			// } else if (this.warehouseId == 3) { //杈呮枡
+			// 	this.address = "1011";
+			// 	this.addressdisabled = true;
+			// }
+			this.label = "鍗曟嵁缂栧彿锛�" + this.orderNo;
+			this.getData();
+		},
+		methods: {
+			// 缁勭洏椤垫暟閲忕紪杈戞牎楠岋紙鐩存帴淇敼鍘熺敓quantity瀛楁锛�
+			handleQuantityChange(item) {
+				item.quantity = item.quantity ? Math.max(1, parseInt(item.quantity)) : 1;
+			},
+
+			// 鍏ュ钩搴撻〉鏁伴噺缂栬緫鏍¢獙锛堢洿鎺ヤ慨鏀瑰師鐢焣uantity瀛楁锛�
+			handlePkQuantityChange(item) {
+				item.quantity = item.quantity ? Math.max(1, parseInt(item.quantity)) : 1;
+			},
+
+			updateFocus() {
+				this.$nextTick(() => {
+					this.materSn = '';
+					if (!this.focus) {
+						this.focus = true;
+					}
+				});
+			},
+			
+			barcodeFocus() {
+				this.barcode = '';
+				if (this.focus) {
+					this.focus = false;
+				}
+			},
+			
+			getData() {
+				var postData = {
+					MainData: {
+						orderNo: this.orderNo
+					},
+				}
+				this.$u.post('/api/InboundOrderDetail/GetInboundOrderDetails', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						if (this.orderInfo.length > 3) {
+							this.loadVisible = true;
+						}
+					}
+				})
+			},
+			
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			
+			barcodeInput() {
+				this.$nextTick(function(x) {
+					if (this.barcode.length > 0) {
+						this.focus = true;
+					}
+				})
+			},
+			
+			// 缁勭洏椤靛唴绠辩爜瑙f瀽锛堢洿鎺ユ搷浣滃師鐢焣uantity瀛楁锛�
+			snInput() {
+				this.$nextTick(() => {
+					if (!this.materSn) return;
+
+					// 寤惰繜100ms纭繚鎵爜瀹屾垚
+					setTimeout(() => {
+						this.focus = false;
+						let matSn = this.materSn.trim();
+
+						// 浠撳簱11鐨勭壒娈婂鐞�
+						if (this.warehouseId == 11) {
+							matSn = matSn.replace(/,SC.*/, '');
+						}
+
+						// 鏍¢獙鍐呯鐮佸畬鏁存��
+						const requiredFields = ['M:', 'BS:', 'DM:', 'DE:', 'Q:', 'PO:', 'DN:'];
+						const hasAllFields = requiredFields.every(field => matSn.includes(field));
+						if (!hasAllFields) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佷笉瀹屾暣锛岃閲嶆柊鎵弿",
+								type: "error"
+							});
+							this.materSn = "";
+							return;
+						}
+
+						// 鏍¢獙PO瀛楁瀛樺湪鎬�
+						if (matSn.indexOf("PO") <= 0) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佹牸寮忛敊璇紙鏃燩O鏍囪瘑锛�",
+								type: "error"
+							});
+							this.materSn = "";
+							return;
+						}
+
+						// 瑙f瀽鍐呯鐮侊紙鐩存帴浣跨敤杩斿洖鐨剄uantity浣滀负Q鍊硷級
+						this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
+							this.Testcheck = false;
+							if (res.status) {
+								this.sns.push(res.data.serialNumber);
+								this.matInfos.push(res.data);
+
+								if (res.message) {
+									this.$refs.uToast.show({
+										title: res.message,
+										type: "warning"
+									});
+								}
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								});
+							}
+						});
+
+						this.materSn = "";
+					}, 1000);
+				})
+			},
+			
+			// 鍏ュ钩搴撻〉鍐呯鐮佽В鏋愶紙鐩存帴鎿嶄綔鍘熺敓quantity瀛楁锛�
+			pksnInput() {
+				this.$nextTick(() => {
+					if (!this.pkmaterSn) return;
+
+					// 寤惰繜100ms纭繚鎵爜瀹屾垚
+					setTimeout(() => {
+						let matSn = this.pkmaterSn.trim();
+
+						// 鏍¢獙鍐呯鐮佸畬鏁存��
+						const requiredFields = ['M:', 'BS:', 'DM:', 'DE:', 'Q:', 'PO:', 'DN:'];
+						const hasAllFields = requiredFields.every(field => matSn.includes(field));
+						if (!hasAllFields) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佷笉瀹屾暣锛岃閲嶆柊鎵弿",
+								type: "error"
+							});
+							this.pkmaterSn = "";
+							return;
+						}
+
+						// 鏍¢獙PO瀛楁瀛樺湪鎬�
+						if (matSn.indexOf("PO") <= 0) {
+							this.$refs.uToast.show({
+								title: "鍐呯鐮佹牸寮忛敊璇紙鏃燩O鏍囪瘑锛�",
+								type: "error"
+							});
+							this.pkmaterSn = "";
+							return;
+						}
+
+						// 瑙f瀽鍐呯鐮侊紙鐩存帴浣跨敤杩斿洖鐨剄uantity浣滀负Q鍊硷級
+						this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
+							if (res.status) {
+								this.pksns.push(res.data.serialNumber);
+								this.pkmatInfos.push(res.data);
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								});
+							}
+						});
+
+						this.pkmaterSn = "";
+					}, 100);
+				})
+			},
+			
+			inbound() {
+				if (this.inboundBarcode == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忔墭鐩樻潯鐮�",
+						type: "error"
+					})
+					return;
+				}
+				if (this.address == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓湴鍧�鏉$爜",
+						type: "error"
+					})
+					return;
+				}
+				var postData = {
+					MainData: {
+						"barcode": this.inboundBarcode,
+						"startPoint": this.address,
+						"warehouseId": this.warehouseId
+					}
+				}
+				this.$u.post('/api/Task/RequestInboundTask', postData).then(res => {
+					if (res.status) {
+						this.inboundBarcode = "";
+						if (this.warehouseId != 5) this.address = "";
+						setTimeout(() => {
+							this.addressFocus = false;
+							this.$refs.uToast.show({
+								title: "鎴愬姛",
+								type: "success"
+							})
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			
+			inputChangebarcode() {
+				this.addressFocus = false;
+				this.$nextTick(function(x) {
+					if (this.inboundBarcode != '') {
+						this.addressFocus = true;
+					}
+				})
+			},
+			
+			deleteList(res) {
+				this.matInfos.splice(res, 1);
+				this.sns.splice(res, 1);
+			},
+			
+			pkdeleteList(res) {
+				this.pkmatInfos.splice(res, 1);
+				this.pksns.splice(res, 1);
+			},
+			
+			reset() {
+				this.barcode = "";
+				this.matInfos = [];
+				this.sns = [];
+				this.materSn = "";
+				if (this.warehouseId != 6) {
+					this.Initiallife = 0;
+				}
+			},
+			
+			resetInPk() {
+				this.pkmaterSn = "";
+				this.pkfocus = false;
+				this.pkmatInfos = [];
+				this.pksns = [];
+			},
+			
+			pksubmit() {
+				if (this.pkmatInfos.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓唴绠辨爣绛�",
+						type: 'error'
+					})
+					return;
+				}
+				
+				// 鐩存帴浣跨敤淇敼鍚庣殑quantity锛堝搴擰鍊硷級鎻愪氦
+				const submitData = this.pkmatInfos.map(item => ({
+					serialNumber: item.serialNumber,
+					quantity: item.quantity
+				}));
+				
+				this.$u.post('/api/InboundOrder/InPinKu?warehouseId=' + this.warehouseId + "&orderNo=" + this.orderNo, submitData)
+					.then(res => {
+						if (res.status) {
+							this.$refs.uToast.show({
+								title: "鍏ュ簱鎴愬姛",
+								type: "success"
+							})
+							this.pkfocus = false;
+							this.pkmatInfos = [];
+							this.pksns = [];
+						} else {
+							this.$refs.uToast.show({
+								title: res.message,
+								type: "error"
+							})
+						}
+					})
+			},
+			
+			submit() {
+				if (this.barcode == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忔墭鐩樻潯鐮�",
+						type: 'error'
+					})
+					return;
+				}
+				if (this.matInfos.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓唴绠辨爣绛�",
+						type: 'error'
+					})
+					return;
+				}
+				if (this.Test) {
+					if (!this.Testcheck) {
+						this.Testcheck = true;
+						if (this.warehouseId == 2) {
+							this.$refs.uToast.show({
+								title: "璇风‘璁ゆ暟閲�",
+								type: 'error'
+							})
+						} 
+						return;
+					}
+				}
+				
+				// 鐩存帴浣跨敤淇敼鍚庣殑quantity锛堝搴擰鍊硷級鎻愪氦
+				let submitSns = this.matInfos.map(item => ({
+					serialNumber: item.serialNumber,
+					quantity: item.quantity
+				}));
+				
+				// 娌瑰ⅷ浠撳簱鐗规畩澶勭悊
+				if (this.warehouseId == 2) {
+					const firstItem = submitSns[0];
+					for (var i = 0; i < this.Initiallife - 1; i++) {
+						submitSns.push({...firstItem});
+					}
+				}
+				
+				this.$u.post('/api/InboundOrder/MaterielGroup', {
+					MainData: {
+						"palletCode": this.barcode,
+						"orderNo": this.orderNo,
+						"initiallife": this.Initiallife,
+						"warehouseId": this.warehouseId
+					},
+					DelKeys: submitSns
+				}).then(res => {
+					this.Testcheck = false;
+					if (res.status) {
+						this.$refs.uToast.show({
+							title: "缁勭洏鎴愬姛",
+							type: "success"
+						})
+						this.focus = false;
+						this.barcode = "";
+						this.matInfos = [];
+						this.sns = [];
+						this.matTotal = [];
+						if (this.warehouseId != 6) {
+							this.Initiallife = "";
+						}
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.content {
+		display: flex;
+		height: 150px;
+	}
+
+	.content-text {
+		font-size: 14px;
+		color: #666;
+	}
+
+	.itemstyle {
+		margin-top: 30px;
+		margin-left: 5%;
+	}
+
+	.headerstyle {
+		width: 90%;
+	}
+</style>
+    
\ No newline at end of file

--
Gitblit v1.9.3