From 913f4af81e7ad477110bfe2ff430163b9225898c Mon Sep 17 00:00:00 2001
From: duyongjia <adu_555@163.com>
Date: 星期二, 10 十二月 2024 16:51:16 +0800
Subject: [PATCH] 增加人工入库、人工出库、人工移库功能

---
 代码管理/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskManual.vue              |  414 +++++++++++++++++++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |   71 +++-
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs               |    2 
 代码管理/WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js                            |   25 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs               |   24 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs      |   11 
 代码管理/WCS/WIDESEAWCS_Client/config/buttons.js                                         |   27 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                 |  364 +++++++++++++++++++++-
 9 files changed, 893 insertions(+), 47 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/config/buttons.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/config/buttons.js"
index 59da816..f9906cb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/config/buttons.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/config/buttons.js"
@@ -69,6 +69,33 @@
     }
 },
 {
+    name: "浜哄伐鍏ュ簱",
+    icon: '',
+    class: '',
+    value: 'ManualInbound',
+    type: 'warning',
+    onClick: function () {
+    }
+},
+{
+    name: "浜哄伐鍑哄簱",
+    icon: '',
+    class: '',
+    value: 'ManualOutbound',
+    type: 'warning',
+    onClick: function () {
+    }
+},
+{
+    name: "浜哄伐绉诲簱",
+    icon: '',
+    class: '',
+    value: 'ManualTransfer',
+    type: 'warning',
+    onClick: function () {
+    }
+},
+{
     name: "鏌ョ湅瀹屾暣璺敱",
     icon: '',
     class: '',
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskManual.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskManual.vue"
new file mode 100644
index 0000000..79a70b9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/taskManual.vue"
@@ -0,0 +1,414 @@
+<template>
+  <div>
+    <!-- 浜哄伐鍏ュ簱 -->
+    <vol-box
+      :lazy="true"
+      :width="400"
+      :height="300"
+      v-model="inbound.model"
+      title="浜哄伐鍏ュ簱"
+      :onModelClose="cancelIn"
+    >
+      <div style="padding: 10px 20px">
+        <vol-form
+          ref="sendInTask"
+          :formRules="inbound.data"
+          :formFields="inbound.fields"
+        ></vol-form>
+      </div>
+      <template #footer>
+        <div>
+          <el-button
+            type="danger"
+            size="big"
+            icon="md-checkmark-circle"
+            long
+            @click="SendInTask"
+            >纭鍏ュ簱</el-button
+          >
+          <el-button
+            type="primary"
+            size="big"
+            icon="md-checkmark-circle"
+            long
+            @click="cancelIn"
+            >鍙栨秷</el-button
+          >
+        </div>
+      </template>
+    </vol-box>
+    <!-- 浜哄伐鍑哄簱 -->
+    <vol-box
+      :lazy="true"
+      :width="400"
+      :height="300"
+      v-model="outbound.model"
+      title="浜哄伐鍑哄簱"
+      :onModelClose="cancelOut"
+    >
+      <div style="padding: 10px 20px">
+        <vol-form
+          ref="sendInTask"
+          :formRules="outbound.data"
+          :formFields="outbound.fields"
+        ></vol-form>
+      </div>
+      <template #footer>
+        <div>
+          <el-button
+            type="danger"
+            size="big"
+            icon="md-checkmark-circle"
+            long
+            @click="SendOutTask"
+            >纭鍏ュ簱</el-button
+          >
+          <el-button
+            type="primary"
+            size="big"
+            icon="md-checkmark-circle"
+            long
+            @click="cancelOut"
+            >鍙栨秷</el-button
+          >
+        </div>
+      </template>
+    </vol-box>
+    <!-- 浜哄伐绉诲簱 -->
+    <vol-box
+      :lazy="true"
+      :width="400"
+      :height="300"
+      v-model="transfer.model"
+      title="浜哄伐绉诲簱"
+      :onModelClose="cancelTransfer"
+    >
+      <div style="padding: 10px 20px">
+        <vol-form
+          ref="sendInTask"
+          :formRules="transfer.data"
+          :formFields="transfer.fields"
+        ></vol-form>
+      </div>
+      <template #footer>
+        <div>
+          <el-button
+            type="danger"
+            size="big"
+            icon="md-checkmark-circle"
+            long
+            @click="SendTransfer"
+            >纭鍏ュ簱</el-button
+          >
+          <el-button
+            type="primary"
+            size="big"
+            icon="md-checkmark-circle"
+            long
+            @click="cancelTransfer"
+            >鍙栨秷</el-button
+          >
+        </div>
+      </template>
+    </vol-box>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import VolForm from "@/components/basic/VolForm.vue";
+//杩欓噷浣跨敤鐨剉ue2璇硶锛屼篃鍙互鍐欐垚vue3璇硶
+export default {
+  components: { "vol-box": VolBox, "vol-form": VolForm },
+  methods: {},
+  data() {
+    return {
+      inbound: {
+        model: false,
+        fields: {
+          cmd: 3001,
+          src_station: 1001,
+          dest_station: null,
+          CarId: '',
+        },
+        data: [
+          [
+            {
+              type: "select",
+              required: true,
+              title: "鍏ュ簱绔欑偣",
+              field: "src_station",
+              data: [
+                { key: 1001, value: "鍏巶" },
+                { key: 1002, value: "涔濆巶" },
+              ],
+            },
+          ],
+          [
+            {
+              type: "number",
+              required: true,
+              title: "缁堢偣搴撲綅",
+              field: "dest_station"
+            },
+          ],
+          [
+            {
+              type: "text",
+              required: true,
+              title: "鏂欒溅缂栧彿",
+              field: "CarId",
+            },
+          ],
+        ],
+      },
+      outbound: {
+        model: false,
+        fields: {
+          cmd: 102,
+          src_station: null,
+          dest_station: 1001,
+          CarId: '',
+        },
+        data: [
+        [
+            {
+              type: "number",
+              required: true,
+              title: "鏉ユ簮搴撲綅",
+              field: "src_station"
+            },
+          ],
+          [
+            {
+              type: "select",
+              required: true,
+              title: "鍑哄簱绔欑偣",
+              field: "dest_station",
+              data: [
+                { key: 1001, value: "鍏巶" },
+                { key: 1002, value: "涔濆巶" },
+              ],
+            },
+          ],
+          [
+            {
+              type: "text",
+              required: true,
+              title: "鏂欒溅缂栧彿",
+              field: "CarId",
+            },
+          ],
+        ],
+      },
+      transfer: {
+        model: false,
+        fields: {
+          cmd: 103,
+          src_station: null,
+          dest_station: null,
+          CarId: '',
+        },
+        data: [
+        [
+            {
+              type: "number",
+              required: true,
+              title: "鏉ユ簮搴撲綅",
+              field: "src_station"
+            },
+          ],
+          [
+            {
+              type: "number",
+              required: true,
+              title: "缁堢偣搴撲綅",
+              field: "dest_station"
+            },
+          ],
+          [
+            {
+              type: "text",
+              required: true,
+              title: "鏂欒溅缂栧彿",
+              field: "CarId",
+            },
+          ],
+        ],
+      },
+    };
+  },
+  computed: {
+    isValidInDest() {
+      const regex = /^[0-9]{1,5}$/;
+      return regex.test(this.inbound.fields.dest_station);
+    },
+    isValidoutSrc() {
+      const regex = /^[0-9]{1,5}$/;
+      return regex.test(this.outbound.fields.src_station);
+    },
+    isValidTranSrc() {
+      const regex = /^[0-9]{1,5}$/;
+      return regex.test(this.transfer.fields.src_station);
+    },
+    isValidTranDest() {
+      const regex = /^[0-9]{1,5}$/;
+      return regex.test(this.transfer.fields.dest_station);
+    }
+  },
+  methods: {
+    //浜哄伐鍏ュ簱
+    open(type) {
+      switch (type) {
+        case "inbound":
+          this.inbound.model = true;
+          break;
+        case "outbound":
+          this.outbound.model = true;
+          break;
+        case "transfer":
+          this.transfer.model = true;
+          break;
+        default:
+          break;
+      }
+    },
+    cancelIn(){
+      this.$refs.sendInTask.reset()
+      this.inbound.model = false;
+      let param = {
+        cmd: this.inbound.fields.cmd,
+        src_station: this.inbound.fields.src_station,
+        dest_station: this.inbound.fields.dest_station,
+        carId: this.inbound.fields.CarId,
+      };
+      console.log(param);
+    },
+    cancelOut(){
+      this.$refs.sendInTask.reset()
+      this.outbound.model = false;
+      let param = {
+        cmd: this.outbound.fields.cmd,
+        src_station: this.outbound.fields.src_station,
+        dest_station: this.outbound.fields.dest_station,
+        carId: this.inbound.fields.CarId,
+      };
+      console.log(param);
+    },
+    cancelTransfer(){
+      this.$refs.sendInTask.reset()
+      this.transfer.model = false;
+      let param = {
+        cmd: this.transfer.fields.cmd,
+        src_station: this.transfer.fields.src_station,
+        dest_station: this.transfer.fields.dest_station,
+        carId: this.transfer.fields.CarId,
+      };
+      console.log(param);
+    },
+    //浜哄伐鍏ュ簱
+    SendInTask() {
+      if (this.inbound.fields.src_station==''||this.inbound.fields.dest_station==0||this.inbound.fields.CarId=='') {
+        return this.$Message.error(
+          "璇疯緭鍏ョ鍚堟潯浠剁殑鍙傛暟"
+        );
+      }
+      if (!this.isValidInDest) {
+        return this.$Message.error(
+          "缁堢偣搴撲綅鍙寘鍚暟瀛椾笖鏈�澶ч暱搴︿负5浣�"
+        );
+      }
+      let param = {
+        cmd: this.inbound.fields.cmd,
+        src_station: this.inbound.fields.src_station,
+        dest_station: this.inbound.fields.dest_station,
+        carId: this.inbound.fields.CarId,
+      };
+      this.http
+        .post("/api/Task/ReceiveWCSTask", param, "浠诲姟鍒涘缓涓�...")
+        .then((x) => {
+          if (x.status == true) {
+            this.$Message.success("鏂板缓鍏ュ簱浠诲姟鎴愬姛");
+            //鍏抽棴寮规
+            this.inbound.model = false;
+            //娓呯┖琛ㄥ崟
+            this.$refs.sendInTask.reset();
+            this.$parent.refresh();
+          } else {
+            this.$Message.error(x.message);
+          }
+        });
+    },
+    //浜哄伐鍑哄簱
+    SendOutTask() {
+      if (this.outbound.fields.src_station==0||this.outbound.fields.dest_station==''||this.outbound.fields.CarId=='') {
+        return this.$Message.error(
+          "璇疯緭鍏ョ鍚堟潯浠剁殑鍙傛暟"
+        );
+      }
+      if (!this.isValidoutSrc) {
+        return this.$Message.error(
+          "鏉ユ簮搴撲綅鍙寘鍚暟瀛椾笖鏈�澶ч暱搴︿负5浣�"
+        );
+      }
+      let param = {
+        cmd: this.outbound.fields.cmd,
+        src_station: this.outbound.fields.src_station,
+        dest_station: this.outbound.fields.dest_station,
+        carId: this.outbound.fields.CarId,
+      };
+      this.http
+        .post("/api/Task/ReceiveWCSTask", param, "浠诲姟鍒涘缓涓�...")
+        .then((x) => {
+          if (x.status == true) {
+            this.$Message.success("鏂板缓鍑哄簱浠诲姟鎴愬姛");
+            //鍏抽棴寮规
+            this.outbound.model = false;
+            //娓呯┖琛ㄥ崟
+            this.$refs.sendInTask.reset();
+            this.$parent.refresh();
+          } else {
+            this.$Message.error(x.message);
+          }
+        });
+    },
+    //浜哄伐绉诲簱搴�
+    SendTransfer() {
+      if (this.transfer.fields.src_station==0||this.transfer.fields.dest_station==0||this.transfer.fields.CarId=='') {
+        return this.$Message.error(
+          "璇疯緭鍏ョ鍚堟潯浠剁殑鍙傛暟"
+        );
+      }
+      if (!this.isValidTranSrc) {
+        return this.$Message.error(
+          "鏉ユ簮搴撲綅鍙寘鍚暟瀛椾笖鏈�澶ч暱搴︿负5浣�"
+        );
+      }
+      if (!this.isValidTranDest) {
+        return this.$Message.error(
+          "缁堢偣搴撲綅鍙寘鍚暟瀛椾笖鏈�澶ч暱搴︿负5浣�"
+        );
+      }
+      let param = {
+        cmd: this.transfer.fields.cmd,
+        src_station: this.transfer.fields.src_station,
+        dest_station: this.transfer.fields.dest_station,
+        carId: this.transfer.fields.CarId,
+      };
+      this.http
+        .post("/api/Task/ReceiveWCSTask", param, "浠诲姟鍒涘缓涓�...")
+        .then((x) => {
+          if (x.status == true) {
+            this.$Message.success("鏂板缓绉诲簱浠诲姟鎴愬姛");
+            //鍏抽棴寮规
+            this.transfer.model = false;
+            //娓呯┖琛ㄥ崟
+            this.$refs.sendInTask.reset();
+            this.$parent.refresh();
+          } else {
+            this.$Message.error(x.message);
+          }
+        });
+    },
+  },
+};
+</script>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js"
index e330c74..f884b50 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js"
@@ -1,10 +1,11 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 import gridBody from './extend/taskExecuteDetail.vue'
+import gridHeader from './extend/taskManual.vue'
 let extension = {
     components: {
         //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-        gridHeader: '',
+        gridHeader: gridHeader,
         gridBody: gridBody,
         gridFooter: '',
         //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
@@ -50,7 +51,27 @@
                         });
                 }
             }
-
+            //浜哄伐鍏ュ簱鎸夐挳
+            var ManualButton = this.buttons.find((x) => x.value == "ManualInbound");
+            if (ManualButton) {
+                ManualButton.onClick = () => {
+                    this.$refs.gridHeader.open("inbound");
+                }
+            }
+            //浜哄伐鍑哄簱鎸夐挳
+            var ManualOutButton = this.buttons.find((x) => x.value == "ManualOutbound");
+            if (ManualOutButton) {
+                ManualOutButton.onClick = () => {
+                    this.$refs.gridHeader.open("outbound");
+                }
+            }
+            //浜哄伐绉诲簱鎸夐挳
+            var ManualTransferButton = this.buttons.find((x) => x.value == "ManualTransfer");
+            if (ManualTransferButton) {
+                ManualTransferButton.onClick = () => {
+                    this.$refs.gridHeader.open("transfer");
+                }
+            }
             var previousButton = this.buttons.find((x) => x.value == "Previous");
             if (previousButton) previousButton.hidden = true;
             var nextButton = this.buttons.find((x) => x.value == "Next");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index 6dcdfd6..4153fc5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -63,6 +63,8 @@
         /// <returns>杩斿洖澶勭悊缁撴灉</returns>
         WebResponseContent ReceiveMESTask([NotNull] MESTaskDTO taskDTO);
 
+        WebResponseContent ReceiveWCSTask([NotNull] MESTaskDTO taskDTO);
+
         /// <summary>
         /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
         /// </summary>
@@ -138,6 +140,13 @@
         /// <returns></returns>
         Dt_Task QueryStackerCraneTaskByAGVRequest(string deviceNo);
 
+        /// <summary>
+        /// 鏌ヨAGV杩涘叆涓殑鍏ュ簱浠诲姟鏁伴噺
+        /// </summary>
+        /// <param name="deviceNo"></param>
+        /// <returns></returns>
+        Dt_Task QueryStackerCraneTaskByAGVIning(string deviceNo);
+
 
         /// <summary>
         /// 瀵瑰簲WMS璇锋眰 3001-AGV鏀捐揣瀹屾垚
@@ -176,6 +185,21 @@
         /// <param name="taskNum">浠诲姟鍙�</param>
         /// <param name="message">寮傚父淇℃伅</param>
         WebResponseContent UpdateTaskExceptionMessage(int taskNum, string message);
+        /// <summary>
+        /// 鏇存柊鏄惁杩涘叆鍗囬檷鏈烘爣蹇楋紙0锛屾湭杩涘叆 1锛屽凡杩涘叆锛�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="Inflag"></param>
+        /// <returns></returns>
+        WebResponseContent UpdateTaskAllowIn(int taskNum, int Inflag);
+
+        /// <summary>
+        /// 鏄惁宸插洖浼燤ES2001鏍囧織锛�0锛屾湭鍥炰紶 1锛屽凡鍥炰紶锛�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="Inflag"></param>
+        /// <returns></returns>
+        WebResponseContent UpdateTaskIsBack(int taskNum, int Inflag);
 
         /// <summary>
         /// 鏇存柊浠诲姟鐘舵�佷俊鎭紝骞跺悓姝ヨ嚦WMS
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index 7aaac2d..c4481b4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -144,7 +144,7 @@
         public DateTime? Dispatchertime { get; set; }
 
         /// <summary>
-        /// 澶囨敞 涓婃枡浠诲姟鏃� 鐢ㄤ簬瀛樹笂鏂欐枡杞︾殑鎬诲眰鏁板拰褰撳墠灞傛暟 鏍煎紡锛氭�诲眰鏁�-褰撳墠灞傛暟  鍑哄簱浠诲姟鏃讹紝鍐欐�诲眰鏁�
+        /// 澶囨敞 涓婃枡浠诲姟鏃� 鐢ㄤ簬瀛樹笂鏂欐枡杞︾殑鎬诲眰鏁板拰褰撳墠灞傛暟 鏍煎紡锛氭�诲眰鏁�-褰撳墠灞傛暟;  鍑哄簱浠诲姟鏃�:鍐欐�诲眰鏁�;  鑷姩鍏ュ簱鏃跺啓锛氭槸鍚﹀洖浼犲厑璁℃椂杩涘叆
         /// </summary>
         [ImporterHeader(Name = "澶囨敞")]
         [ExporterHeader(DisplayName = "澶囨敞")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index 05589ac..20f87ae 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -62,6 +62,17 @@
         }
 
         /// <summary>
+        /// 鎺ユ敹WCS浜哄伐浠诲姟淇℃伅
+        /// </summary>
+        /// <param name="taskDTO">WCS浠诲姟瀵硅薄</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        [HttpPost, Route("ReceiveWCSTask"), AllowAnonymous]
+        public WebResponseContent ReceiveWCSTask([FromBody] MESTaskDTO taskDTO)
+        {
+            return Service.ReceiveWCSTask(taskDTO);
+        }
+
+        /// <summary>
         /// 浠诲姟鍙栨秷(鍫嗗灈鏈哄洖瑙e喅涓嶄簡鐨勬晠闅滈渶娓呴櫎浠诲姟锛屾竻闄や换鍔″悗锛岄渶鍦╓CS涓婂彇娑堜换鍔�)
         /// </summary>
         /// <param name="key"></param>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 6984990..e634901 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -24,6 +24,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Data;
 using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Reflection;
@@ -483,6 +484,253 @@
 
         }
 
+
+        /// <summary>
+        /// wcs鎵嬪伐鐢熸垚浠诲姟
+        /// </summary>
+        /// <param name="taskDTO">WCS浠诲姟瀵硅薄</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent ReceiveWCSTask([NotNull] MESTaskDTO taskDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                taskDTO.task_id = GetTaskNo();
+                string inparam = JsonConvert.SerializeObject(taskDTO);
+
+                ServiceLogger.WriteDebug("ReceiveWCSTask", $"ReceiveWCSTask鏂规硶鍏ュ弬{inparam}");
+                Dt_Task task = new Dt_Task();
+                Dt_Task taskinfo = BaseDal.QueryFirst(x => x.TaskNum == taskDTO.task_id);
+                if (taskDTO.cmd == 101)//濡傛灉鏄�101鎸夋棫鐨勪换鍔″彿鍘绘煡
+                {
+                    taskinfo = BaseDal.QueryFirst(x => x.TaskNum == taskDTO.weight);
+                }
+
+                if (taskDTO.cmd != 3001 && taskDTO.cmd != 101 && taskinfo != null)
+                {
+                    ServiceLogger.WriteDebug("ReceiveWCSTask", $"浠诲姟鍙烽噸澶嶏紝浠诲姟鍙凤細{taskDTO.task_id}");
+                    return content = WebResponseContent.Instance.Error($"浠诲姟鍙烽噸澶嶏紝浠诲姟鍙凤細{taskDTO.task_id}");
+                }
+                Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.Remark == taskDTO.src_station.ToString());
+                Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.Remark == taskDTO.dest_station.ToString());
+                switch (taskDTO.cmd)
+                {
+                    case 3001://AGV鏀捐揣瀹屾垚 WMS鍙�3001鐨勫悓鏃禬CS闇�鍦╦ob涓啓鎻愬崌淇″彿
+                        if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.task_id) == null)//鎵嬪姩鍏ュ簱鐩存帴鍙�3001锛岄渶瑕佺敓鎴愪换鍔★紝鍥犱负娌℃湁1001鐜妭
+                        {
+                            taskDTO.dest_rack =int.Parse(taskDTO.dest_station.ToString().Substring(0, 1));
+                            taskDTO.dest_row = int.Parse(taskDTO.dest_station.ToString().Substring(1, 2).TrimStart('0'));
+                            taskDTO.dest_col = int.Parse(taskDTO.dest_station.ToString().Substring(3, 2).TrimStart('0'));
+                            task.TaskType = (int)TaskInboundTypeEnum.Inbound;
+                            task.TaskState = (int)TaskInStatusEnum.AGV_InExecuting;
+                            task.Roadway = "SC01";
+                            task.Grade = 2;
+                            
+                            if (locationsrc != null)
+                            {
+                                task.SourceAddress = locationsrc.LocationCode;
+                            }
+                            else
+                            {
+                                ServiceLogger.WriteDebug("ReceiveWCSTask", $"WCS鏈煡璇㈠埌婧愮珯鐐瑰搴旂殑搴撲綅锛屾簮绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                                return content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌婧愮珯鐐瑰搴旂殑搴撲綅锛屾簮绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                            }
+                        }
+                        break;
+                    case 101://鎻愬崌鏈烘彁鍗囧畬鎴� 
+                        if (taskinfo != null)
+                        {
+                            //鏇存柊浠诲姟琛ㄤ腑NextAddress瀛楁涓烘柊鐨勪换鍔″彿   taskDTO.weight-鏃х殑浠诲姟鍙�   taskDTO.task_id-鏂扮殑浠诲姟鍙�
+                            UpdateTaskStatus(taskinfo.TaskId, taskDTO.task_id, (int)TaskInStatusEnum.AGV_InFinish);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(taskinfo.TaskId, $"AGV鎼繍瀹屾垚");
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹垚鍔燂紝浠诲姟鍙凤細{taskinfo.TaskId}");
+                            return content = WebResponseContent.Instance.OK($"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹垚鍔燂紝浠诲姟鍙凤細{taskinfo.TaskId}");
+                        }
+                        else
+                        {
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹椂锛屾煡璇笉鍒颁换鍔″彿");
+                            return content = WebResponseContent.Instance.Error($"AGV鎼繍瀹屾垚锛�101锛夋洿鏂扮姸鎬佹椂锛屾煡璇笉鍒颁换鍔″彿");
+                        }
+                        break;
+
+                    case 103://浜у搧绉诲簱锛堢Щ搴擄紝鍑哄簱锛�
+                        taskDTO.src_rack = int.Parse(taskDTO.src_station.ToString().Substring(0, 1));
+                        taskDTO.src_row = int.Parse(taskDTO.src_station.ToString().Substring(1, 2).TrimStart('0'));
+                        taskDTO.src_col = int.Parse(taskDTO.src_station.ToString().Substring(3, 2).TrimStart('0'));
+
+                        taskDTO.dest_rack = int.Parse(taskDTO.dest_station.ToString().Substring(0, 1));
+                        taskDTO.dest_row = int.Parse(taskDTO.dest_station.ToString().Substring(1, 2).TrimStart('0'));
+                        taskDTO.dest_col = int.Parse(taskDTO.dest_station.ToString().Substring(3, 2).TrimStart('0'));
+
+                        taskDTO.total = 9;
+                        task.TaskType = (int)TaskRelocationTypeEnum.Relocation;
+                        task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                        task.Roadway = "SC01";
+                        
+                        if (taskDTO.total > 0)
+                        {
+                            task.Remark = taskDTO.total.ToString();//鍙栧嚭搴撶殑鎬诲眰鏁�
+                        }
+                        task.Grade = 1;
+                        break;
+                    case 102:
+                        if (taskDTO.dest_station == 1001 || taskDTO.dest_station == 1002)//寮傚父鍑哄簱
+                        {
+                            taskDTO.src_rack = int.Parse(taskDTO.src_station.ToString().Substring(0, 1));
+                            taskDTO.src_row = int.Parse(taskDTO.src_station.ToString().Substring(1, 2).TrimStart('0'));
+                            taskDTO.src_col = int.Parse(taskDTO.src_station.ToString().Substring(3, 2).TrimStart('0'));
+                            task.TaskType = (int)TaskOutboundTypeEnum.OutInventory;
+                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                            task.Roadway = "SC01";
+                            task.Grade = 1;
+                        }
+                        if (locationdsc != null)
+                        {
+                            task.TargetAddress = locationdsc.LocationCode;
+                        }
+                        else
+                        {
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"WCS鏈煡璇㈠埌鐩爣绔欑偣瀵瑰簲鐨勫簱浣嶏紝鐩爣绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                            return content = WebResponseContent.Instance.Error($"WCS鏈煡璇㈠埌鐩爣绔欑偣瀵瑰簲鐨勫簱浣嶏紝鐩爣绔欑偣锛歿taskDTO.dest_station.ToString()}");
+                        }
+                        break;
+                    default:
+                        break;
+                }
+
+                task.TaskNum = taskDTO.task_id;
+                task.PalletCode = taskDTO.CarId;
+
+                if (string.IsNullOrEmpty(task.SourceAddress))//濡傛灉涓嶆槸绔欑偣锛岀洿鎺ュ彇琛屽垪灞�
+                {
+                    task.SourceAddress = $"SC01-{taskDTO.src_rack.ToString().PadLeft(3, '0')}-{taskDTO.src_col.ToString().PadLeft(3, '0')}-{taskDTO.src_row.ToString().PadLeft(3, '0')}";
+                }
+                if (string.IsNullOrEmpty(task.TargetAddress))//濡傛灉涓嶆槸绔欑偣锛岀洿鎺ュ彇琛屽垪灞�
+                {
+                    task.TargetAddress = $"SC01-{taskDTO.dest_rack.ToString().PadLeft(3, '0')}-{taskDTO.dest_col.ToString().PadLeft(3, '0')}-{taskDTO.dest_row.ToString().PadLeft(3, '0')}";
+                }
+                task.Creater = "WCS";
+                task.WMSId = 3;//WCS浜哄伐寤轰换鍔�
+
+                //鍒ゆ柇璐т綅鐘舵��
+                Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                Dt_LocationInfo tarLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                if (srcLocation != null && tarLocation != null)
+                {
+                    if (srcLocation.EnableStatus == (int)EnableStatusEnum.Disable)
+                    {
+                        ServiceLogger.WriteDebug("ReceiveWCSTask", $"婧愬湴鍧�宸茬鐢細{srcLocation.LocationCode}");
+                        return content = WebResponseContent.Instance.Error($"婧愬湴鍧�宸茬鐢細{srcLocation.LocationCode}");
+                    }
+                    if (tarLocation.EnableStatus == (int)EnableStatusEnum.Disable)
+                    {
+                        ServiceLogger.WriteDebug("ReceiveWCSTask", $"鐩爣鍦板潃宸茬鐢細{tarLocation.LocationCode}");
+                        return content = WebResponseContent.Instance.Error($"鐩爣鍦板潃宸茬鐢細{tarLocation.LocationCode}");
+                    }
+                    if (taskDTO.cmd != 101)//鍏ュ簱鏃朵笉闇�瑕佸垽鏂槸鍚﹂攣瀹氾紝閿佸畾鐘舵�佹槸鍦ㄧ敓鎴愪换鍔℃椂閿佸畾
+                    {
+
+                        if (taskinfo != null && taskDTO.cmd == 3001 && taskinfo.WMSId == 3)//濡傛灉鏄墜鍔ㄥ叆搴擄紝鍙�3001锛屼細鐢熸垚浠诲姟锛岄渶瑕佸垽鏂簱浣嶆槸鍚﹂攣瀹�;鑷姩妯″紡鍙�1001鐨勬椂鍊欏氨鐢熸垚浜嗕换鍔★紝鍐嶅彂3001灏变笉闇�瑕佸垽鏂槸鍚﹂攣瀹氫簡
+                        {
+                            if (srcLocation.LocationStatus == (int)LocationStatusEnum.Lock)
+                            {
+
+                                ServiceLogger.WriteDebug("ReceiveWCSTask", $"婧愬湴鍧�宸查攣瀹氾細{srcLocation.LocationCode}");
+                                return content = WebResponseContent.Instance.Error($"婧愬湴鍧�宸查攣瀹氾細{srcLocation.LocationCode}");
+                            }
+                            if (tarLocation.LocationStatus == (int)LocationStatusEnum.Lock)
+                            {
+                                ServiceLogger.WriteDebug("ReceiveWCSTask", $"鐩爣鍦板潃宸查攣瀹氾細{tarLocation.LocationCode}");
+                                return content = WebResponseContent.Instance.Error($"鐩爣鍦板潃宸查攣瀹氾細{tarLocation.LocationCode}");
+                            }
+                        }
+                    }
+                    if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//鍏ュ簱  璺緞锛氭彁鍗囨満搴撲綅-->搴撲綅
+                    {
+                        //WCS鏌ヨ搴撲綅鐘舵�佹槸鍚︿负鈥滅┖闂测�濆苟涓旀湭绂佺敤锛岄攣瀹氬簱浣嶄慨鏀瑰簱浣嶇姸鎬佷负鈥滈攣瀹氣�濓紝鐢熸垚WCS浜у搧鍏ュ簱浠诲姟锛屽姞鍏CS浠诲姟闃熷垪涓��          
+                        if (tarLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"鍏ュ簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{tarLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"鍏ュ簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{tarLocation.LocationCode}");
+                        }
+                        tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                    }
+                    else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)  //浜у搧绉诲簱锛堢Щ搴擄紝鍑哄簱鍏辩敤锛�  璺緞锛氬簱浣�-->搴撲綅/鏆傚瓨搴撲綅
+                    {
+                        //WCS鏌ヨ搴撲綅鐘舵�佹槸鍚︿负鈥滄湁璐р�濓紝搴撲綅/鏆傚瓨搴撲綅鏄惁鈥滅┖闂测��
+                        if (srcLocation.LocationStatus != (int)LocationStatusEnum.InStock)
+                        {
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"绉诲簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"绉诲簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        if (tarLocation.LocationStatus != (int)LocationStatusEnum.Free)
+                        {
+
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"绉诲簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"绉诲簱-鐩爣鍦板潃涓嶆槸绌洪棽鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        tarLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                    }
+                    else if (task.TaskType == (int)TaskOutboundTypeEnum.OutInventory)  //寮傚父鍑哄簱锛堥��搴擄級 璺緞锛氬簱浣�-->鎻愬崌鏈哄簱浣�  
+                    {
+                        //WCS鏌ヨ搴撲綅鐘舵�佹槸鍚︿负鈥滄湁璐р��
+                        if (srcLocation.LocationStatus != (int)LocationStatusEnum.InStock)
+                        {
+                            ServiceLogger.WriteDebug("ReceiveWCSTask", $"寮傚父鍑哄簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                            return content = WebResponseContent.Instance.Error($"寮傚父鍑哄簱-婧愬湴鍧�涓嶆槸鏈夎揣鐘舵�侊細{srcLocation.LocationCode}");
+                        }
+                        srcLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                    }
+                }
+                else
+                {
+                    ServiceLogger.WriteDebug("ReceiveWCSTask", $"搴撲綅鍦板潃涓嶅瓨鍦紝浠诲姟鍙�:{task.TaskNum}");
+                    return content = WebResponseContent.Instance.Error($"搴撲綅鍦板潃涓嶅瓨鍦紝浠诲姟鍙�:{task.TaskNum}");
+                }
+
+                try
+                {
+                    //寮�鍚簨鐗�
+                    _unitOfWorkManage.BeginTran();
+                    _locationInfoRepository.UpdateData(tarLocation);
+                    _locationInfoRepository.UpdateData(srcLocation);
+                    BaseDal.AddData(task);
+                    Dt_Task tasktemp = BaseDal.QueryFirst(x => x.TaskNum == task.TaskNum);
+                    _taskExecuteDetailService.AddTaskExecuteDetail(tasktemp.TaskId, "鎺ユ敹WCS浠诲姟");
+                    //鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+
+                }
+                catch (Exception)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    throw;
+                }
+                ServiceLogger.WriteDebug("ReceiveWCSTask", $"鎺ユ敹浠诲姟鎴愬姛锛屼换鍔″彿:{task.TaskNum}");
+                content = WebResponseContent.Instance.OK($"鎺ユ敹浠诲姟鎴愬姛锛屼换鍔″彿:{task.TaskNum}", task);
+
+            }
+            catch (Exception ex)
+            {
+                ServiceLogger.WriteDebug("ReceiveWCSTask", $"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.StackTrace}");
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟鍙�
+        /// </summary>
+        /// <returns></returns>
+        public int GetTaskNo()
+        {
+            DataTable dt = BaseDal.QueryTable("SELECT FORMAT(NEXT VALUE FOR dbo.seqTaskNum, '0000000');");
+            return int.Parse("9"+ dt.Rows[0][0].ToString());
+        }
+
         /// <summary>
         /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
         /// </summary>
@@ -614,8 +862,19 @@
         /// <param name="deviceNo"></param>
         /// <returns></returns>
         public Dt_Task QueryStackerCraneTaskByAGVRequest(string deviceNo)
-        {
+        { 
             return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew), TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏌ヨAGV杩涘叆涓殑鍏ュ簱浠诲姟
+        /// </summary>
+        /// <param name="deviceNo"></param>
+        /// <returns></returns>
+        public Dt_Task QueryStackerCraneTaskByAGVIning(string deviceNo)
+        {
+
+            return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType)&&x.CurrentAddress=="1"), TaskOrderBy);
         }
         /// <summary>
         /// 瀵瑰簲WMS璇锋眰 3001-AGV鏀捐揣瀹屾垚
@@ -702,6 +961,56 @@
                 content = WebResponseContent.Instance.Error(ex.Message);
             }
             return content;
+        }
+
+        /// <summary>
+        /// 鑷姩鍏ュ簱鏃舵洿鏂版槸鍚﹁繘鍏ュ崌闄嶆満鏍囧織锛�0锛屾湭杩涘叆 1锛屽凡杩涘叆锛�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="Inflag"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateTaskAllowIn(int taskNum, int Inflag)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+                task.CurrentAddress = Inflag.ToString();
+                task.ModifyDate = DateTime.Now;
+                BaseDal.UpdateData(task);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+
+        }
+
+        /// <summary>
+        /// 鏄惁宸插洖浼燤ES2001鏍囧織锛�0锛屾湭鍥炰紶 1锛屽凡鍥炰紶锛�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="Inflag"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateTaskIsBack(int taskNum, int Inflag)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+                task.Remark = Inflag.ToString();
+                task.ModifyDate = DateTime.Now;
+                BaseDal.UpdateData(task);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+
         }
 
         /// <summary>
@@ -1141,12 +1450,15 @@
                         }
                         else
                         {
-                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
-                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
-                            if (res != null && res.code != 0)
+                            if (task.WMSId != 3)
                             {
-                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
-                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                                MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                                if (res != null && res.code != 0)
+                                {
+                                    ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                    content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                }
                             }
                         }
 
@@ -1154,7 +1466,7 @@
                     catch (Exception ex)
                     {
                         _unitOfWorkManage.RollbackTran();
-                        //浠诲姟鎵ц澶辫触锛岃揣浣嶇姸鎬佽繕鍘�
+                        
                         ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
                         content = WebResponseContent.Instance.Error($"澶у爢鍨涙満鎵ц鍑哄簱浠诲姟澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵ex.Message}銆�");
                     }
@@ -1187,16 +1499,19 @@
                         MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = int.Parse(task.NextAddress), status = 6 };
                         string inparam = JsonConvert.SerializeObject(sendcmd);
                         ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES鍏ュ弬:{inparam}");
-                        MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
-                        if (res != null && res.code != 0)
+                        if (task.WMSId != 3)
                         {
-                           
-                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
-                            content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
-                        }
-                        else
-                        {
-                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                            if (res != null && res.code != 0)
+                            {
+
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            }
+                            else
+                            {
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍏ュ簱浠诲姟鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                            }
                         }
 
                     }
@@ -1230,14 +1545,17 @@
                         _unitOfWorkManage.CommitTran();
                         //绉诲簱瀹屾垚锛屽洖浼燤ES
                         //鍥炰紶鍒癢MS
-                        MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
-                        string inparam = JsonConvert.SerializeObject(sendcmd);
-                        ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES鍏ュ弬:{inparam}");
-                        MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
-                        if (res != null && res.code != 0)
+                        if (task.WMSId != 3)
                         {
-                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
-                            content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                            string inparam = JsonConvert.SerializeObject(sendcmd);
+                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES鍏ュ弬:{inparam}");
+                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                            if (res != null && res.code != 0)
+                            {
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            }
                         }
                         //if(task.TaskType== (int)TaskRelocationTypeEnum.Relocation&&!string.IsNullOrEmpty(task.Remark.Trim()))//鍑哄簱浠诲姟鍐欐�诲眰鏁版爣璇�
                         //{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index da7be29..eb3ac10 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -54,11 +54,12 @@
         public Task Execute(IJobExecutionContext context)
         {
             
-             WriteDebug("绾跨▼缁熻鏃ュ織", "绾跨▼鏁�" + ThreadPool.ThreadCount);
+             //WriteDebug("绾跨▼缁熻鏃ュ織", "绾跨▼鏁�" + ThreadPool.ThreadCount);
+            
              //CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
              CommonStackerCrane commonStackerCrane = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC01") as CommonStackerCrane;
             try
-            {  
+            {
                 if (commonStackerCrane != null)
                 {
                    //WriteDebug("澶у爢鍨涙満杩愯鏃ュ織", $"澶у爢鍨涙満浠诲姟鎵ц涓�...");
@@ -75,8 +76,7 @@
                         {
                             Dt_Task? task = GetTask(commonStackerCrane);
                             if (task != null)
-                            {
-                                
+                            { 
                                 WriteDebug(nameof(CommonStackerCraneJob), $"澶у爢鍨涙満浠诲姟鍙穥task.TaskNum}");
                                 StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
                                 if (stackerCraneTaskCommand != null)
@@ -136,7 +136,7 @@
                     //璇诲彇澶у爢鍨涙満浠诲姟鍙峰拰浠诲姟瀹屾垚纭鐘舵�侊紙鍥犱负灏佽鐨勪簨浠剁粡甯镐笉瑙﹀彂锛屾墍浠ュ姞涓洿鎺ヨ鐨勯�昏緫锛屼互鍏嶅嚭鐜板爢鍨涙満涓�鐩存帴澶勪簬绛夊緟wcs纭锛�
                     byte IsOver = commonStackerCrane.Communicator.Read<byte>("DB106.22");
                     int tasknum = commonStackerCrane.Communicator.Read<int>("DB106.18");
-                    WriteDebug(nameof(CommonStackerCraneJob), $"澶у爢鍨涙満SC01浠诲姟鍙峰爢鍨涙満浠诲姟鍙凤細{tasknum}鐘舵�侊細{IsOver}");
+                    //WriteDebug(nameof(CommonStackerCraneJob), $"澶у爢鍨涙満SC01浠诲姟鍙峰爢鍨涙満浠诲姟鍙凤細{tasknum}鐘舵�侊細{IsOver}");
                     if (IsOver == 6)
                     {
                         if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
@@ -191,10 +191,24 @@
                         {
                             IsAllow = commonStackerCrane.Communicator.Read<short>("DB2.8.0");
                         }
-                        if (IsAllow == 1)//濡傛灉涓�1锛屽垯鍏佽AGV杩涘叆锛屽洖浼燱MS
+                        //鏌ヨ浠诲姟鏍囪涓�1鐨勪换鍔′负绌烘墠鍏佽鍥炰紶
+                        WriteDebug(nameof(CommonStackerCraneJob), $"浠诲姟鍙�:{task1001.TaskNum}-鏄惁鍏佽:{IsAllow}");
+                        Dt_Task? taskAgvIning = _taskService.QueryStackerCraneTaskByAGVIning("SC01");
+                        if (IsAllow == 1&&taskAgvIning==null)//濡傛灉涓�1锛屽垯鍏佽AGV杩涘叆锛屽洖浼燱MS
                         {
+                            _taskService.UpdateTaskAllowIn(task1001.TaskNum, 1);
+                            WriteDebug(nameof(CommonStackerCraneJob), $"鏇存柊鏄惁杩涘叆鍗囬檷鏈烘爣蹇楀��1锛屼换鍔″彿{task1001.TaskNum}");
+                            IsAllow = 0;//鏇存柊鎴愬姛锛岀疆0涓嶅厑璁�
                             MESSendCMD sendcmd = new MESSendCMD { cmd = 2001, task_id = task1001.TaskNum, status = 6 };
                             MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+
+                            //if (res != null && res.code == 0)//鍥炰紶2001鎴愬姛
+                            //{
+                                //WCS璇诲埌鍏佽淇″彿鍚庝换鍔℃爣璁�1,琛ㄧずAGV宸茶繘鍏ユ彁鍗囨満,Dt_Task 涓殑CurrentAddress鍋氫负鏍囪瀛楁
+                                //_taskService.UpdateTaskAllowIn(task1001.TaskNum, 1);
+                                //WriteDebug(nameof(CommonStackerCraneJob), $"鏇存柊鏄惁杩涘叆鍗囬檷鏈烘爣蹇楀��1锛屼换鍔″彿{task1001.TaskNum}");
+                            //}
+                           
                         }
                     }
                     Dt_Task? task3001 = _taskService.QueryStackerCraneTaskByAGVPutFinish("SC01");
@@ -206,26 +220,23 @@
                         if (task3001.SourceAddress == "SC01-002-000-001")//WMS 1001绔欑偣
                         {
                             //鎻愬崌鏈烘槸鍚﹀浜庡氨缁姸鎬�
-                          
                             int IsReady = commonStackerCrane.Communicator.Read<short>("DB2.0.0");
-                            WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈虹姸鎬侊細{IsReady}浠诲姟鍙凤細{task3001.TaskNum}");
+                            WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈烘槸鍚﹀氨缁姸鎬侊細{IsReady}浠诲姟鍙凤細{task3001.TaskNum}");
                             //鍐欏叆鎻愬崌淇℃伅
                             IsWriteOne = commonStackerCrane.Communicator.Read<short>("DB1.0.0");
                             if (IsWriteOne == 0 && IsReady == 1)
                             {
                                 commonStackerCrane.Communicator.Write<short>("DB1.0.0", 1);
-                            }
-                          
+                            }  
                             //璇诲彇鎻愬崌鏈轰俊鍙凤紝纭畾鏄惁鎻愬崌瀹屾垚
-
                             IsFinish = commonStackerCrane.Communicator.Read<short>("DB2.2.0");
+                          
                         }
                         else if (task3001.SourceAddress == "SC01-002-000-002")//WMS 1002绔欑偣
                         {
                             //鎻愬崌鏈烘槸鍚﹀浜庡氨缁姸鎬�
-                         
                             int IsReady = commonStackerCrane.Communicator.Read<short>("DB2.0.0");
-                            WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈虹姸鎬侊細{IsReady}浠诲姟鍙凤細{task3001.TaskNum}");
+                            WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈烘槸鍚﹀氨缁姸鎬侊細{IsReady}浠诲姟鍙凤細{task3001.TaskNum}");
                             //鍐欏叆鎻愬崌淇℃伅
                             IsWriteTwo = commonStackerCrane.Communicator.Read<short>("DB1.6.0");
                             if (IsWriteTwo == 0 && IsReady == 1)
@@ -235,17 +246,37 @@
                            
                             //璇诲彇鎻愬崌鏈轰俊鍙凤紝纭畾鏄惁鎻愬崌瀹屾垚
                             IsFinish = commonStackerCrane.Communicator.Read<short>("DB2.10.0");
+                          
                         }
+                        
                         if (IsFinish == 1)//濡傛灉涓�1锛屽垯琛ㄧず鎻愬崌瀹屾垚锛屽洖浼燱MS
                         {
-                            MESSendCMD sendcmd = new MESSendCMD { cmd = 2002, task_id = task3001.TaskNum, status = 6 };
-                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
-                            string inparam = JsonConvert.SerializeObject(sendcmd);
-                            WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈烘彁鍗囧畬鎴愶紝鍥炰紶WMS,鍏ュ弬锛歿inparam}");
-
-                            if (res != null && res.code != 0)
+                            if (task3001.WMSId == 3)// WCS浜哄伐鍏ュ簱
                             {
-                                WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈烘彁鍗囧畬鎴愶紝鍥炰紶WMS澶辫触锛佷换鍔″彿{task3001.TaskNum}");
+                                MESTaskDTO taskDTO = new MESTaskDTO();
+                                taskDTO.weight = task3001.TaskNum;//鏃т换鍔″彿
+                                taskDTO.cmd = 101;
+                                _taskService.ReceiveWCSTask(taskDTO);
+                            }
+                            else
+                            {
+                                MESSendCMD sendcmd = new MESSendCMD { cmd = 2002, task_id = task3001.TaskNum, status = 6 };
+                                MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                                string inparam = JsonConvert.SerializeObject(sendcmd);
+                                WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈烘彁鍗囧畬鎴愶紝鍥炰紶WMS,鍏ュ弬锛歿inparam}");
+
+
+                                if (res != null && res.code == 0)
+                                {
+
+                                    _taskService.UpdateTaskAllowIn(task3001.TaskNum, 0);
+                                    WriteDebug(nameof(CommonStackerCraneJob), $"鏇存柊鏄惁杩涘叆鍗囬檷鏈烘爣蹇楀��0锛屼换鍔″彿{task3001.TaskNum}");
+
+                                }
+                                else
+                                {
+                                    WriteDebug(nameof(CommonStackerCraneJob), $"鎻愬崌鏈烘彁鍗囧畬鎴愶紝鍥炰紶WMS澶辫触锛佷换鍔″彿{task3001.TaskNum}");
+                                }
                             }
                         }
                        
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs"
index fde7977..a9eb49d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs"
@@ -66,7 +66,7 @@
                     CommonStackerCrane? StackerCrane = GetStrackerCrane(task, stackerCraneOne, stackerCraneTwo);
                     if (StackerCrane != null)
                     {
-                        WriteDebug(nameof(DoubleStackerCraneJob), $"灏忓爢鍨涙満浠诲姟鍙穥task.TaskNum}");
+                        WriteDebug(nameof(DoubleStackerCraneJob), $"灏忓爢鍨涙満浠诲姟鍙穥task.TaskNum}--{StackerCrane.DeviceCode}");
                         StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
                         if (stackerCraneTaskCommand != null)
                         {

--
Gitblit v1.9.3