From 4a4c9c93c3ae8c809368dde96fe822a27fd86d53 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期五, 19 十二月 2025 19:09:28 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/MESOperation/FeedbackMesService.cs                  |   90 +++++++++-----
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs        |    2 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/SemanticSymbols.db |    0 
 项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/DirectOutbound.vue                                 |    3 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/CodeChunks.db      |    0 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_DTO/Allocate/AllocateDto.cs                                      |    6 +
 项目代码/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue                                               |    7 +
 项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue                                 |    6 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs                    |   49 -------
 项目代码/WIDESEA_WMSClient/src/views/inbound/inboundOrderDetail.vue                                         |    7 +
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                            |   13 +
 项目代码/WIDESEA_WMSClient/src/extension/outbound/allocateoutboundOrder.js                                  |   43 +++++++
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs                           |   11 +
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs                               |    2 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs                               |   14 +-
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                   |   86 ++++++++++++++
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Config.cs                                              |    4 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_AllocateOrderDetail.cs                  |    6 +
 18 files changed, 251 insertions(+), 98 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/allocateoutboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/allocateoutboundOrder.js"
index 76d2980..836d54c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/allocateoutboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/allocateoutboundOrder.js"
@@ -324,6 +324,49 @@
               this.$refs.gridBody.open(row);
           }
       });
+
+      let BatchOrderFeedbackToMesBtn = this.buttons.find(x => x.value == 'BatchOrderFeedbackToMes');
+      if (BatchOrderFeedbackToMesBtn) {
+        const _this = this;
+        BatchOrderFeedbackToMesBtn.onClick = function () {
+          let selectedRows = _this.$refs.table.getSelected();
+
+          // 鏍¢獙鏄惁鏈夐�変腑鏁版嵁
+          if (!selectedRows || selectedRows.length === 0) {
+            return _this.$Message.warning('璇峰厛閫夋嫨闇�瑕佸鐞嗙殑鍗曟嵁');
+          }
+          if (selectedRows.length > 1) {
+            return _this.$Message.warning('璇烽�夋嫨涓�鏉℃暟鎹�');
+          }
+
+          _this.http
+            .post(`api/MesFeedback/OutboundFeedback?orderNo=${selectedRows[0].orderNo}`, {}, "鏁版嵁澶勭悊涓�...")
+            .then((x) => {
+              if (x.status) {
+                _this.$Message.success('鍒嗘壒鍑哄簱鍥炶皟瀹屾垚');
+                _this.refresh();
+              } else {
+                return _this.$Message.error('鍒嗘壒鍑哄簱鍥炶皟澶辫触');
+              }
+            })
+            .catch((error) => {
+              
+            });
+        };
+      }
+      let TaskHandCompletedBtn = this.buttons.find(x => x.value == 'NoStockOut');
+      if (TaskHandCompletedBtn) {
+        TaskHandCompletedBtn.onClick = function () {
+          this.$refs.gridHeader.open();
+        }
+      }
+
+      var EmptyTrayOutboundBtn = this.buttons.find(x => x.value == "EmptyTrayOutbound");
+      if (EmptyTrayOutboundBtn != null) {
+        EmptyTrayOutboundBtn.onClick = () => {
+          this.$refs.gridFooter.open();
+        }
+      }
       },
       onInited() {
         //妗嗘灦鍒濆鍖栭厤缃悗
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/DirectOutbound.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/DirectOutbound.vue"
index 7b30084..b7c2a9c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/DirectOutbound.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/DirectOutbound.vue"
@@ -9,7 +9,7 @@
                     </el-select>
                 </el-form-item>
             </el-form>
-            <el-form ref="form" :model="form" label-width="90px" v-if="isBatch === 1">
+            <el-form ref="form" :model="form" label-width="90px" v-if="isBatch === 1" v-show="this.outboundQuantity>1">
                 <el-form-item label="鍑哄簱鏁伴噺:">
                     <el-input-number v-model="outboundQuantity" :controls="true" placeholder="璇烽�夋嫨鍑哄簱鏁伴噺"
                         style="width: 100%;"></el-input-number>
@@ -70,7 +70,6 @@
                     operator: "",
                     orderNo: this.orderNo,
                 };
-                console.log(requestParams);
                 this.http.post("api/Outbound/ProcessPickingOutbound", requestParams, '鏁版嵁澶勭悊涓�...')
                     .then((x) => {
                         if (!x.status) {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
index 7b5ee4a..3037336 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
@@ -346,13 +346,11 @@
       if (this.selection.length === 0) {
         return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
       }
-      if (this.selection.length > 1) {
-        return this.$message.error("鍙兘閫夋嫨涓�鏉″崟鎹槑缁嗚繘琛屽垎鎵瑰嚭搴�");
-      }
+      
       const keys = this.selection.map((item) => item.id);
       const requestParams = {
         detailIds: keys,
-        outboundQuantity: this.selection[0].orderQuantity,
+        outboundQuantity: this.selection.length>1?1: this.selection[0].orderQuantity-this.selection[0].lockQuantity,
         operator: "",
         orderNo: this.row.orderNo,
         isBatch: this.isBatch
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
index 82e454f..4958422 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
@@ -305,6 +305,13 @@
           align: "left",
         },
         {
+          field: "unit",
+          title: "鍗曚綅",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
           field: "orderDetailStatus",
           title: "璁㈠崟鏄庣粏鐘舵��",
           type: "string",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrderDetail.vue"
index 5046820..50b708a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrderDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrderDetail.vue"
@@ -157,6 +157,13 @@
           align: "left",
         },
         {
+          field: "unit",
+          title: "鍗曚綅",
+          type: "string",
+          width: 200,
+          align: "left",
+        },
+        {
           field: "orderDetailStatus",
           title: "璁㈠崟鏄庣粏鐘舵��",
           type: "string",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/CodeChunks.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/CodeChunks.db"
index 7688f22..b5576cd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/CodeChunks.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/CodeChunks.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/SemanticSymbols.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/SemanticSymbols.db"
index 18b864a..f7a3397 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/SemanticSymbols.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1204.46620/SemanticSymbols.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs"
index 89a2938..56886d5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs"
@@ -329,7 +329,7 @@
                        SupplyCode=detail.SupplyCode,
                        WarehouseCode=detail.WarehouseCode,
                        Barcode=detail.Barcode,
-                       OutBoxbarcodes="",
+                       OutBoxbarcodes= detail.BoxSN,
                        BarcodeQty=(decimal)detail.BarcodeQty,
                        BarcodeUnit=detail.BarcodeUnit
                    }).ToList()
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/MESOperation/FeedbackMesService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/MESOperation/FeedbackMesService.cs"
index fdc1f9a..22a0846 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/MESOperation/FeedbackMesService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/MESOperation/FeedbackMesService.cs"
@@ -1,10 +1,12 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using Org.BouncyCastle.Asn1.Ocsp;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
-using Newtonsoft.Json;
-using SqlSugar;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -47,6 +49,21 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑鍑哄簱鍗曚俊鎭�");
                 }
+
+                List<Dt_MesReturnRecord> returnRecords = BaseDal.QueryData(x => x.OrderNo == orderNo && x.OrderId == outboundOrder.Id && x.ReturnStatus == 2);
+                foreach (var item in returnRecords)
+                {
+                    HttpResponseResult<MesResponseDTO> httpResponse = _httpClientHelper.Post<MesResponseDTO>(item.ApiUrl, item.RequestData);
+                    item.ReturnCount += 1;
+                    bool success = httpResponse.IsSuccess && httpResponse.Data.Code == "200";
+                    item.ReturnStatus = success ? 1 : 2;
+                    item.HttpStatusCode = httpResponse.StatusCode.ObjToInt();
+                    item.LastReturnTime = DateTime.Now;
+                    item.ResponseData = httpResponse.Content;
+                    item.SuccessTime = httpResponse.IsSuccess ? DateTime.Now : null;
+                }
+                BaseDal.UpdateData(returnRecords);
+
                 HttpResponseResult<MesResponseDTO> httpResponseResult = new HttpResponseResult<MesResponseDTO>();
                 string reqCode = Guid.NewGuid().ToString();
                 string reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -62,7 +79,11 @@
                     string apiUrl = AppSettings.GetValue("MaterialOutboundFeedbackUrl");
                     returnDTO.ReqCode = reqCode;
                     returnDTO.ReqTime = reqTime;
-                    requestData = returnDTO.Serialize();
+                    JsonSerializerSettings settings = new JsonSerializerSettings
+                    {
+                        ContractResolver = new CamelCasePropertyNamesContractResolver()
+                    };
+                    requestData = JsonConvert.SerializeObject(returnDTO, settings);
                     lineNos = returnDTO.Details.Select(x => x.LineNo).ToList();
                     httpResponseResult = _httpClientHelper.Post<MesResponseDTO>(apiUrl, requestData);
                     httpResponseResult.ApiUrl = apiUrl;
@@ -82,7 +103,11 @@
                     string apiUrl = AppSettings.GetValue("AllocationFeedbackUrl"); ;
                     returnDTO.ReqCode = reqCode;
                     returnDTO.ReqTime = reqTime;
-                    requestData = returnDTO.Serialize();
+                    JsonSerializerSettings settings = new JsonSerializerSettings
+                    {
+                        ContractResolver = new CamelCasePropertyNamesContractResolver()
+                    };
+                    requestData = JsonConvert.SerializeObject(returnDTO, settings);
                     lineNos = returnDTO.Details.Select(x => x.LineNo).ToList();
                     httpResponseResult = _httpClientHelper.Post<MesResponseDTO>(apiUrl, requestData);
                     httpResponseResult.ApiUrl = apiUrl;
@@ -123,37 +148,34 @@
                 _unitOfWorkManage.BeginTran();
                 _unitOfWorkManage.Db.Insertable(mesReturnRecord).ExecuteCommand();
 
-                if (isSuccess)
+                List<Dt_OutboundOrderDetail> outboundOrderDetails = outboundOrder.Details.Where(x => lineNos.Contains(x.lineNo)).ToList();
+                outboundOrderDetails.ForEach(x =>
                 {
-                    List<Dt_OutboundOrderDetail> outboundOrderDetails = outboundOrder.Details.Where(x => lineNos.Contains(x.lineNo)).ToList();
-                    outboundOrderDetails.ForEach(x =>
+                    if (x.OverOutQuantity == x.OrderQuantity - x.MoveQty)
                     {
-                        if (x.OverOutQuantity == x.OrderQuantity - x.MoveQty)
-                        {
-                            x.ReturnToMESStatus = isSuccess ? 1 : 2;
-                        }
-                        else
-                        {
-                            x.ReturnToMESStatus = isSuccess ? 3 : 4;
-                        }
-                        x.CurrentDeliveryQty = 0;
-                        x.ReturnJsonData = "";
-                    });
-
-                    mesReturnRecord.ReturnType = outboundOrder.Details.Count == outboundOrderDetails.Count ? 1 : 2;
-
-                    if (outboundOrder.Details.Count == outboundOrderDetails.Count && outboundOrderDetails.All(x => x.ReturnToMESStatus == 1 || x.ReturnToMESStatus == 2))
-                    {
-                        outboundOrder.ReturnToMESStatus = isSuccess ? 1 : 2;
+                        x.ReturnToMESStatus = isSuccess ? 1 : 2;
                     }
                     else
                     {
-                        outboundOrder.ReturnToMESStatus = isSuccess ? 3 : 4;
+                        x.ReturnToMESStatus = isSuccess ? 3 : 4;
                     }
+                    x.CurrentDeliveryQty = 0;
+                    x.ReturnJsonData = "";
+                });
 
-                    _outboundOrderRepository.Db.Updateable(outboundOrderDetails).ExecuteCommand();
-                    _outboundOrderRepository.UpdateData(outboundOrder);
+                mesReturnRecord.ReturnType = outboundOrder.Details.Count == outboundOrderDetails.Count ? 1 : 2;
+
+                if (outboundOrder.Details.Count == outboundOrderDetails.Count && outboundOrderDetails.All(x => x.ReturnToMESStatus == 1 || x.ReturnToMESStatus == 2))
+                {
+                    outboundOrder.ReturnToMESStatus = isSuccess ? 1 : 2;
                 }
+                else
+                {
+                    outboundOrder.ReturnToMESStatus = isSuccess ? 3 : 4;
+                }
+
+                _outboundOrderRepository.Db.Updateable(outboundOrderDetails).ExecuteCommand();
+                _outboundOrderRepository.UpdateData(outboundOrder);
 
                 _unitOfWorkManage.CommitTran();
 
@@ -203,7 +225,7 @@
                     Details = returnDetails,
                     FactoryArea = outboundOrder.FactoryArea,
                     OperationType = 1,
-                    OrderNo = outboundOrder.OrderNo,
+                    OrderNo = outboundOrder.UpperOrderNo,
                     FromWarehouse = fromWarehouse,
                     ToWarehouse = toWarehouse
                 };
@@ -326,11 +348,11 @@
                 {
                     Business_type = outboundOrder.BusinessType,
                     Details = returnDetails,
-                    DocumentsNO = "",
+                    DocumentsNO = _basicService.CreateCodeByRule("OutboundOrderRule"),
                     FactoryArea = outboundOrder.FactoryArea,
                     OperationType = 1,
                     Operator = App.User.UserName,
-                    OrderNo = outboundOrder.OrderNo,
+                    OrderNo = outboundOrder.UpperOrderNo,
                     Status = 1
                 };
 
@@ -373,8 +395,12 @@
 
                 string reqCode = Guid.NewGuid().ToString();
                 string reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                string requestData = returnDTO.Serialize();
+                JsonSerializerSettings settings = new JsonSerializerSettings
+                {
+                    ContractResolver = new CamelCasePropertyNamesContractResolver()
+                };
 
+                string requestData = JsonConvert.SerializeObject(returnDTO, settings);
                 HttpResponseResult<MesResponseDTO> httpResponseResult = _httpClientHelper.Post<MesResponseDTO>(apiUrl, requestData);
                 httpResponseResult.ApiUrl = apiUrl;
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Allocate/AllocateDto.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Allocate/AllocateDto.cs"
index 36740d6..86e1a04 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Allocate/AllocateDto.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Allocate/AllocateDto.cs"
@@ -130,6 +130,12 @@
         public string Barcode { get; set; }
 
         /// <summary>
+        /// 澶栫鏉$爜
+        /// </summary>
+        [JsonProperty("boxSN")]
+        public string BoxSN { get; set; }
+
+        /// <summary>
         /// 鎵规鍙�
         /// </summary>
         [JsonProperty("batchNo")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index 9d1cce9..fe908d7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -15,6 +15,7 @@
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.Seed;
 using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Base;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_IBasicService;
 using WIDESEA_IInboundService;
@@ -42,9 +43,10 @@
         private readonly IRepository<Dt_WarehouseArea> _warehouseAreaRepository;
         private readonly IRepository<Dt_LocationType> _locationTypeRepository;
         private readonly IRepository<Dt_StockInfo> _stockRepository;
+        private readonly IBasicService _basicService;
         public IRepository<Dt_InboundOrder> Repository => BaseDal;
 
-        public InboundOrderService(IRepository<Dt_InboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_Task> taskRepository, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService, IMaterialUnitService materialUnitService, IRepository<Dt_StockInfoDetail> stockDetailRepository, IRepository<Dt_InboundOrder> inboundOrderRepository, IRepository<Dt_WarehouseArea> warehouseAreaRepository, IRepository<Dt_StockInfo> stockRepository, IRepository<Dt_LocationType> locationTypeRepository, IMaterielInfoService materielInfoService) : base(BaseDal)
+        public InboundOrderService(IRepository<Dt_InboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_Task> taskRepository, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService, IMaterialUnitService materialUnitService, IRepository<Dt_StockInfoDetail> stockDetailRepository, IRepository<Dt_InboundOrder> inboundOrderRepository, IRepository<Dt_WarehouseArea> warehouseAreaRepository, IRepository<Dt_StockInfo> stockRepository, IRepository<Dt_LocationType> locationTypeRepository, IMaterielInfoService materielInfoService, IBasicService basicService) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
@@ -59,6 +61,7 @@
             _stockRepository = stockRepository;
             _locationTypeRepository = locationTypeRepository;
             _materielInfoService = materielInfoService;
+            _basicService = basicService;
         }
 
         public async Task<WebResponseContent> ReceiveInboundOrder(List<Dt_InboundOrder> models, int operateType)
@@ -99,9 +102,11 @@
 
                     foreach (var item in model.Details)
                     {
-                        var purchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync(item.MaterielCode, item.BarcodeQty);
-                        item.Unit = purchaseToStockResult.Unit;
-                        item.OrderQuantity = purchaseToStockResult.Quantity;
+                        //var purchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync(item.MaterielCode, item.BarcodeQty);
+
+                        UnitConvertResultDTO totalResult = _basicService.UnitQuantityConvert(item.MaterielCode, item.Unit, item.BarcodeUnit, item.OrderQuantity);
+                        item.Unit = totalResult.ToUnit;
+                        item.OrderQuantity = totalResult.ToQuantity;
                         if (materielInfos.Any())
                         {
                             item.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_AllocateOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_AllocateOrderDetail.cs"
index dec7580..df2ac31 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_AllocateOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_AllocateOrderDetail.cs"
@@ -90,6 +90,12 @@
         [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏉″舰鐮�")]
         public string Barcode { get; set; }
 
+        /// <summary>
+        /// 鏉″舰鐮�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏉″舰鐮�")]
+        public string BoxSN { get; set; }
+
 
         /// <summary>
         /// 渚涘簲鍟嗙紪鍙�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
index 250becf..abbe1cd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
@@ -594,56 +594,15 @@
                             Dt_OutboundOrder outboundOrder = _outboundOrderService.Repository.QueryFirst(x => x.Id == searchParameters.Value.ObjToInt());
                             if (outboundOrder != null)
                             {
-                                if (outboundOrder.IsBatch == 0)
-                                {
-                                    sugarQueryable1 = sugarQueryable1.Where(x => x.OrderId == searchParameters.Value.ObjToInt());
-                                    var dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount);
-                                    return new PageGridData<Dt_OutboundOrderDetail>(totalCount, dataList);
-                                }
-                                else
-                                {
-                                    sugarQueryable1 = sugarQueryable1.Where(x => x.OrderId == searchParameters.Value.ObjToInt());
-                                    sugarQueryable1.GroupBy(x => new { x.MaterielCode, x.MaterielName, x.BatchNo, x.SupplyCode, x.WarehouseCode }).Select(s => new Dt_OutboundOrderDetail
-                                    {
-                                        WarehouseCode = s.WarehouseCode,
-                                        SupplyCode = s.SupplyCode,
-                                        BatchNo = s.BatchNo,
-                                        MaterielName = s.MaterielName,
-                                        MaterielCode = s.MaterielCode,
-                                        AllocatedQuantity = SqlFunc.AggregateSum(s.AllocatedQuantity),
-                                        OrderQuantity = SqlFunc.AggregateSum(s.OrderQuantity),
-                                        PickedQty = SqlFunc.AggregateSum(s.PickedQty),
-                                        OverOutQuantity = SqlFunc.AggregateSum(s.OverOutQuantity),
-                                        MoveQty = SqlFunc.AggregateSum(s.MoveQty),
-                                        NoStockOutQty = SqlFunc.AggregateSum(s.NoStockOutQty),
-                                        LockQuantity = SqlFunc.AggregateSum(s.LockQuantity),
-                                        BarcodeMoveQty = SqlFunc.AggregateSum(s.BarcodeMoveQty),
-                                        BarcodeQty =SqlFunc.AggregateMin( s.BarcodeQty),
-                                        BarcodeUnit = SqlFunc.AggregateMin(s.BarcodeUnit),
-                                        BatchAllocateStatus = SqlFunc.AggregateMin(s.BatchAllocateStatus),
-                                        CreateDate = SqlFunc.AggregateMin(s.CreateDate),
-                                        Creater = SqlFunc.AggregateMin(s.Creater),
-                                        documentsNO = SqlFunc.AggregateMin(s.documentsNO),
-                                        Id = SqlFunc.AggregateMin(s.Id),
-                                        lineNo = SqlFunc.AggregateMin(s.lineNo),
-                                        Modifier = SqlFunc.AggregateMin(s.Modifier),
-                                        ModifyDate = SqlFunc.AggregateMin(s.ModifyDate),
-                                        OrderDetailStatus = SqlFunc.AggregateMin(s.OrderDetailStatus),
-                                        OrderId = SqlFunc.AggregateMin(s.OrderId),
-                                        Remark = SqlFunc.AggregateMin(s.Remark),
-                                        ReturnJsonData = SqlFunc.AggregateMin(s.ReturnJsonData),
-                                        ReturnToMESStatus = SqlFunc.AggregateMin(s.ReturnToMESStatus),
-                                        RowNo = SqlFunc.AggregateMin(s.RowNo),
-                                        Unit = SqlFunc.AggregateMin(s.Unit)
-                                    });
-                                    var dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount);
-                                    return new PageGridData<Dt_OutboundOrderDetail>(totalCount, dataList);
-                                }
+                                sugarQueryable1 = sugarQueryable1.Where(x => x.OrderId == searchParameters.Value.ObjToInt());
+                                var dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount);
+                                return new PageGridData<Dt_OutboundOrderDetail>(totalCount, dataList);
                             }
                         }
                     }
                 }
             }
+
             return new PageGridData<Dt_OutboundOrderDetail>();
         }
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
index b49a2ad..3855414 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
@@ -110,6 +110,7 @@
             PickingOutboundResponseDTO response = new PickingOutboundResponseDTO();
             try
             {
+                _unitOfWorkManage.BeginTran();
                 // 1. 璁$畻鍑哄簱鏁伴噺閫昏緫
                 OutboundCalculationDTO calculationResult = CalcOutboundQuantity(request);
 
@@ -252,7 +253,7 @@
                 // 鑾峰彇閫夋嫨鐨勫嚭搴撴槑缁�
                 List<Dt_OutboundOrderDetail> selectedDetails = _detailRepository.QueryData(x => x.OrderId == outboundOrder.Id && request.DetailIds.Contains(x.Id));
 
-                if (outboundOrder.IsBatch == 1)
+                if (outboundOrder.IsBatch == 1 && request.DetailIds.Count == 1)
                 {
                     selectedDetails = _detailRepository.QueryData(x => x.OrderId == selectedDetails.First().OrderId && x.WarehouseCode == selectedDetails.First().WarehouseCode && x.MaterielCode == selectedDetails.First().MaterielCode && x.BatchNo == selectedDetails.First().BatchNo && x.SupplyCode == selectedDetails.First().SupplyCode);
                 }
@@ -276,7 +277,7 @@
                 result.OutboundOrder = outboundOrder;
                 result.SelectedDetails = selectedDetails;
 
-                if (outboundOrder.IsBatch == 0)
+                if (outboundOrder.IsBatch == 0 || request.DetailIds.Count > 1)
                 {
                     // 澶氭槑缁嗗嚭搴擄細鎸夌墿鏂欏垎缁勫鐞�
                     result.MaterielCalculations = CalcMaterielOutboundQuantities(outboundOrder, selectedDetails.ToList());
@@ -427,6 +428,8 @@
             {
                 throw new Exception($"鐗╂枡 {materielCalc.MaterielCode} 鍙敤搴撳瓨 {totalAvailableStock} 涓嶈冻鍑哄簱鏁伴噺 {materielCalc.UnallocatedQuantity}");
             }
+
+            //decimal remainingQuantity = Math.Min(totalAvailableStock, materielCalc.UnallocatedQuantity);
 
             // 闇�鍒嗛厤鏁伴噺
             decimal remainingQuantity = materielCalc.UnallocatedQuantity;
@@ -959,7 +962,6 @@
 
                     if (outboundOrder.OrderType != 0)
                     {
-
                         Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                         if (allocateOrder != null)
                         {
@@ -1097,8 +1099,7 @@
                     {
                         UpdateOutboundOrderStatus(request.OrderNo, OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
 
-
-                        //todo: 鍥炰紶MES
+                        _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
                     }
                 }
                 catch (Exception ex)
@@ -1486,8 +1487,7 @@
                     {
                         UpdateOutboundOrderStatus(request.OrderNo, OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
 
-
-                        //todo: 鍥炰紶MES
+                        _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
                     }
                 }
                 catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 922cf88..36aee3d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -21,6 +21,7 @@
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
 using Org.BouncyCastle.Asn1.Ocsp;
 using Org.BouncyCastle.Asn1.Pkcs;
 using SqlSugar;
@@ -43,6 +44,7 @@
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.Util;
 using WIDESEA_DTO.Allocate;
+using WIDESEA_DTO.Base;
 using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.Outbound;
@@ -91,6 +93,7 @@
         private readonly IRepository<Dt_AllocateMaterialInfo> _allocateMaterialInfo;
         private readonly IRepository<Dt_AllocateMaterialInfo_Hty> _allocateMaterialInfo_Hty;
         private readonly HttpClientHelper _httpClientHelper;
+        private readonly IBasicService _basicService;
         public IRepository<Dt_Task> Repository => BaseDal;
 
         private Dictionary<string, SqlSugar.OrderByType> _taskOrderBy = new()
@@ -110,7 +113,7 @@
 
         public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
 
-        public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockRepository, ILocationInfoService locationInfoService, IInboundOrderService inboundOrderService, ILocationStatusChangeRecordService locationStatusChangeRecordService, IESSApiService eSSApiService, ILogger<TaskService> logger, IStockService stockService, IRecordService recordService, IInboundOrderDetailService inboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutboundOrderDetailService outboundOrderDetailService, IInvokeMESService invokeMESService, IOutStockLockInfoService outStockLockInfoService, IAllocateService allocateService, IRepository<Dt_OutboundBatch> outboundBatchRepository, IRepository<Dt_ReCheckOrder> reCheckOrderRepository, IRepository<Dt_AllocateOrderDetail> allocateOrderDetailRepository, IRepository<Dt_AllocateOrder> allocateOrderRepository, IMaterialUnitService materialUnitService, ITask_HtyService task_HtyService, IRepository<Dt_AllocateMaterialInfo> allocateMaterialInfo, IRepository<Dt_AllocateMaterialInfo_Hty> allocateMaterialInfo_Hty, HttpClientHelper httpClientHelper) : base(BaseDal)
+        public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockRepository, ILocationInfoService locationInfoService, IInboundOrderService inboundOrderService, ILocationStatusChangeRecordService locationStatusChangeRecordService, IESSApiService eSSApiService, ILogger<TaskService> logger, IStockService stockService, IRecordService recordService, IInboundOrderDetailService inboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutboundOrderDetailService outboundOrderDetailService, IInvokeMESService invokeMESService, IOutStockLockInfoService outStockLockInfoService, IAllocateService allocateService, IRepository<Dt_OutboundBatch> outboundBatchRepository, IRepository<Dt_ReCheckOrder> reCheckOrderRepository, IRepository<Dt_AllocateOrderDetail> allocateOrderDetailRepository, IRepository<Dt_AllocateOrder> allocateOrderRepository, IMaterialUnitService materialUnitService, ITask_HtyService task_HtyService, IRepository<Dt_AllocateMaterialInfo> allocateMaterialInfo, IRepository<Dt_AllocateMaterialInfo_Hty> allocateMaterialInfo_Hty, HttpClientHelper httpClientHelper, IBasicService basicService) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
@@ -137,6 +140,7 @@
             _allocateMaterialInfo = allocateMaterialInfo;
             _allocateMaterialInfo_Hty = allocateMaterialInfo_Hty;
             _httpClientHelper = httpClientHelper;
+            _basicService = basicService;
         }
 
         public async Task TaskStatusChange(string taskNum, TaskStatusEnum taskStatusEnum)
@@ -738,6 +742,37 @@
                 {
                     await Db.Deleteable(task).ExecuteCommandAsync();
                 }
+                Dt_OutboundOrder outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x=>x.Details).First();
+
+                if(outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+                {
+                    HttpResponseResult<MesResponseDTO> httpResponseResult = new HttpResponseResult<MesResponseDTO>();
+                    string reqCode = Guid.NewGuid().ToString();
+                    string reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                    string requestData = string.Empty;
+                    List<string> lineNos = new List<string>();
+                    Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
+                    if (allocateOrder == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璋冩嫧鍗�");
+                    }
+                    AllocationReturnDTO? returnDTO = BuildAllocationFeedbackData(outboundOrder, allocateOrder.FromWarehouse, allocateOrder.ToWarehouse);
+                    if (returnDTO == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏋勫缓鍥炶皟瀵硅薄澶辫触");
+                    }
+                    string apiUrl = AppSettings.GetValue("AllocationFeedbackUrl"); ;
+                    returnDTO.ReqCode = reqCode;
+                    returnDTO.ReqTime = reqTime;
+                    JsonSerializerSettings settings = new JsonSerializerSettings
+                    {
+                        ContractResolver = new CamelCasePropertyNamesContractResolver()
+                    };
+                    requestData = JsonConvert.SerializeObject(returnDTO, settings);
+                    lineNos = returnDTO.Details.Select(x => x.LineNo).ToList();
+                    httpResponseResult = _httpClientHelper.Post<MesResponseDTO>(apiUrl, requestData);
+                    httpResponseResult.ApiUrl = apiUrl;
+                }
                 try
                 {
                     _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforelocationStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
@@ -755,6 +790,55 @@
             }
         }
 
+        public AllocationReturnDTO? BuildAllocationFeedbackData(Dt_OutboundOrder outboundOrder, string fromWarehouse, string toWarehouse)
+        {
+            try
+            {
+                List<Dt_OutboundOrderDetail> details = outboundOrder.Details;
+
+                List<AllocationDetail> returnDetails = new List<AllocationDetail>();
+
+                foreach (var detail in details)
+                {
+                    List<Barcodes>? barcodes = JsonConvert.DeserializeObject<List<Barcodes>>(detail.ReturnJsonData);
+                    if (barcodes != null && barcodes.Any())
+                    {
+                        UnitConvertResultDTO currentResult = _basicService.UnitQuantityConvert(detail.MaterielCode, detail.Unit, detail.BarcodeUnit, detail.CurrentDeliveryQty);
+                        UnitConvertResultDTO totalResult = _basicService.UnitQuantityConvert(detail.MaterielCode, detail.Unit, detail.BarcodeUnit, detail.OrderQuantity);
+
+                        returnDetails.Add(new AllocationDetail
+                        {
+                            Barcodes = barcodes,
+                            BatchNo = detail.BatchNo,
+                            LineNo = detail.lineNo,
+                            MaterialCode = detail.MaterielCode,
+                            Qty = totalResult.ToQuantity,
+                            WarehouseCode = detail.WarehouseCode,
+                            Unit = detail.BarcodeUnit
+                        });
+                    }
+                }
+
+                AllocationReturnDTO outboundReturnDTO = new AllocationReturnDTO()
+                {
+                    Business_type = outboundOrder.BusinessType,
+                    Details = returnDetails,
+                    FactoryArea = outboundOrder.FactoryArea,
+                    OperationType = 1,
+                    OrderNo = outboundOrder.OrderNo,
+                    FromWarehouse = fromWarehouse,
+                    ToWarehouse = toWarehouse
+                };
+
+                return outboundReturnDTO;
+
+            }
+            catch (Exception ex)
+            {
+                return null;
+            }
+        }
+
 
         public async Task<WebResponseContent> InPickTaskCompleted(Dt_Task task)
         {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Config.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Config.cs"
new file mode 100644
index 0000000..504413e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Config.cs"
@@ -0,0 +1,4 @@
+锘�//"BarcodeFeedbackUrl": "http://127.0.0.1:450/api/AldBarcodeInformation/BarcodeInformation",
+//"MaterialOutboundFeedbackUrl": "http://127.0.0.1:450/api/AldMaterialOutbound/MaterialOutbound",
+//"AllocationFeedbackUrl": "http://127.0.0.1:450/api/AldAllocationOperation/AllocationOperation",
+//"ApiLogIgnore": "get,query,download,upload,template",
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs"
index 5ac31db..0920a53 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs"
@@ -85,7 +85,7 @@
                             BarcodeQty = barcodeDto.Qty,
                             BarcodeUnit = barcodeDto.Unit,
                             ValidDate = barcodeDto.validDate,
-
+                            BoxSN = barcodeDto.BoxSN
                         };
                         allocateOrder.Details.Add(orderDetail);
                     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
index 33d6641..96184ad 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
@@ -11,6 +11,7 @@
 using System.IO;
 using WIDESEA_Model.Models;
 using System;
+using WIDESEA_IBasicService;
 
 namespace WIDESEA_WMSServer.Controllers
 {
@@ -24,12 +25,14 @@
         private readonly IInboundService _inboundService;
         private readonly IOutboundService _outboundService;
         private readonly ITaskService _taskService;
+        private readonly IErpApiService _erpApiService;
 
-        public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService)
+        public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService,IErpApiService erpApiService)
         {
             _inboundService = inboundService;
             _outboundService = outboundService;
             _taskService = taskService;
+            _erpApiService = erpApiService;
         }
 
         /// <summary>
@@ -109,5 +112,11 @@
             }
 
         }
+
+        [HttpPost, HttpGet, Route("GetMaterialUnitAsync"), AllowAnonymous]
+        public Task GetMaterialUnitAsync()
+        {
+            return _erpApiService.GetMaterialUnitAsync();
+        }
     }
 }

--
Gitblit v1.9.3