From 528d0370cb57f07e291fbf8fb0052718c3fe584c Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期六, 13 九月 2025 15:14:50 +0800
Subject: [PATCH] 合并接口

---
 MESApplication/Controllers/BasicData/DeliveryBarcodeController.cs |  379 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 379 insertions(+), 0 deletions(-)

diff --git a/MESApplication/Controllers/BasicData/DeliveryBarcodeController.cs b/MESApplication/Controllers/BasicData/DeliveryBarcodeController.cs
new file mode 100644
index 0000000..d6b35e3
--- /dev/null
+++ b/MESApplication/Controllers/BasicData/DeliveryBarcodeController.cs
@@ -0,0 +1,379 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.BasicData; // 鍋囪DeliveryBarcodeManager鍦ㄨ鍛藉悕绌洪棿涓嬶紝鍙牴鎹疄闄呰皟鏁�
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace MESApplication.Controllers.BasicData;
+
+/// <summary>
+/// 閫佽揣鍗曟潯鐮佹帶鍒跺櫒锛堝搴旀惡瀹簯鏉$爜淇℃伅琛ㄦ搷浣滐級
+/// </summary>
+[ApiController]
+[Route("api/[controller]")]
+public class DeliveryBarcodeController : ControllerBase
+{
+    // 娑堟伅涓績绠$悊鍣紙澶嶇敤鍘熼�昏緫锛�
+    private readonly MessageCenterManager _messageCenterManager = new();
+
+    // 閫佽揣鍗曟潯鐮佷笟鍔¢�昏緫绠$悊鍣紙瀵瑰簲涓氬姟灞傦紝闇�纭繚瀹為檯椤圭洰涓瓨鍦ㄨ绫伙級
+    private readonly DeliveryBarcodeManager _deliveryBarcodeManager = new();
+
+    // 鎺ュ彛璇锋眰鏂规硶锛堝浐瀹歅OST锛屼笌鍘熸帶鍒跺櫒涓�鑷达級
+    private readonly string REQUEST_METHOD = "POST";
+
+    // 瀵瑰簲鏁版嵁搴撹〃鍚嶏紙鎼哄浜戞潯鐮佷俊鎭〃锛屼笌涔嬪墠瀹氫箟鐨勫疄浣撶被琛ㄥ悕涓�鑷达級
+    private readonly string TARGET_TABLE = "TBL_BARCODE_INFORMATION";
+
+    // 鍩虹鎺ュ彛URL锛堟牴鎹帶鍒跺櫒鍚嶅畾涔夛紝淇濇寔REST椋庢牸锛�
+    private readonly string BASE_API_URL = "http://localhost:10054/api/DeliveryBarcode/";
+
+    /// <summary>
+    /// 鍗曚釜閫佽揣鍗曟潯鐮佷俊鎭繚瀛樻帴鍙�
+    /// </summary>
+    /// <param name="barcodeInfo">閫佽揣鍗曟潯鐮丏TO锛堝崟涓級</param>
+    /// <returns>缁熶竴鍝嶅簲缁撴灉</returns>
+    [HttpPost("Save")]
+    public ResponseResult Save(DeliveryBarcodeInfo barcodeInfo)
+    {
+        // 1. 鍒濆鍖栨秷鎭腑蹇冨疄浣擄紙鐢ㄤ簬鏃ュ織/娑堟伅璁板綍锛�
+        var messageEntity = new MessageCenter
+        {
+            TableName = TARGET_TABLE,
+            Url = BASE_API_URL + "Save", // 鎷兼帴瀹屾暣鎺ュ彛URL
+            Method = REQUEST_METHOD,
+            Data = JsonConvert.SerializeObject(barcodeInfo), // 搴忓垪鍖朌TO涓篔SON
+            Status = 1, // 鐘舵�佹爣璇嗭紙1=寰呭鐞�/澶勭悊涓紝涓庡師閫昏緫涓�鑷达級
+            CreateBy = "PL017", // 鍒涘缓浜猴紙澶嶇敤鍘熼厤缃紝鍙牴鎹疄闄呰皟鏁翠负鍔ㄦ�佽幏鍙栵級
+            Route = barcodeInfo.DeliveryNo ?? "鏈煡閫佽揣鍗曞彿", // 璺敱鏍囪瘑锛堢敤閫佽揣鍗曞彿鍖哄垎锛屾棤鍒欏~榛樿鍊硷級
+            DealWith = 0 // 鍒濆澶勭悊鐘舵�侊紙0=鏈鐞嗭級
+        };
+
+        try
+        {
+            // 2. 涓氬姟閫昏緫澶勭悊锛氳皟鐢ㄤ笟鍔″眰淇濆瓨鍗曚釜鏉$爜淇℃伅
+            dynamic resultData = new ExpandoObject();
+            bool saveSuccess = _deliveryBarcodeManager.Save(barcodeInfo);
+            resultData.tbBillList = saveSuccess; // 瀛樺偍淇濆瓨缁撴灉锛堜笌鍘熻繑鍥炴牸寮忎竴鑷达級
+
+            // 3. 鏇存柊娑堟伅涓績瀹炰綋鐘舵��
+            messageEntity.Result = saveSuccess ? 1 : 0; // 1=鎴愬姛锛�0=澶辫触
+            messageEntity.DealWith = 1; // 1=宸插鐞�
+            _messageCenterManager.save(messageEntity); // 淇濆瓨娑堟伅璁板綍
+
+            // 4. 杩斿洖鎴愬姛鍝嶅簲锛堢粺涓�鍝嶅簲鏍煎紡锛�
+            return new ResponseResult
+            {
+                status = 0, // 0=鎴愬姛鐘舵�佺爜锛堜笌鍘熼�昏緫涓�鑷达級
+                message = "鍗曚釜閫佽揣鍗曟潯鐮佷俊鎭繚瀛樻垚鍔�",
+                data = resultData
+            };
+        }
+        catch (Exception ex)
+        {
+            // 5. 寮傚父澶勭悊锛氭崟鑾峰紓甯稿苟鏇存柊娑堟伅涓績
+            messageEntity.Result = 0; // 澶辫触鏍囪瘑
+            messageEntity.DealWith = 0; // 鏈鐞嗘爣璇�
+            messageEntity.ResultData = ex.Message; // 寮傚父淇℃伅璁板綍
+            _messageCenterManager.save(messageEntity); // 淇濆瓨寮傚父娑堟伅
+
+            // 6. 杩斿洖寮傚父鍝嶅簲锛堝鐢ㄥ伐鍏风被鐨勭粺涓�寮傚父鍝嶅簲鏂规硶锛�
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鎵归噺閫佽揣鍗曟潯鐮佷俊鎭繚瀛樻帴鍙�
+    /// </summary>
+    /// <param name="barcodeInfoList">閫佽揣鍗曟潯鐮丏TO鍒楄〃锛堟壒閲忥級</param>
+    /// <returns>缁熶竴鍝嶅簲缁撴灉</returns>
+    [HttpPost("SaveList")]
+    public ResponseResult SaveList(List<DeliveryBarcodeInfo> barcodeInfoList)
+    {
+        // 1. 鍒濆鍖栨秷鎭腑蹇冨疄浣擄紙鎵归噺鍦烘櫙涓撶敤锛�
+        var messageEntity = new MessageCenter
+        {
+            TableName = TARGET_TABLE,
+            Url = BASE_API_URL + "SaveList", // 鎷兼帴鎵归噺鎺ュ彛URL
+            Method = REQUEST_METHOD,
+            Data = JsonConvert.SerializeObject(barcodeInfoList), // 搴忓垪鍖朌TO鍒楄〃涓篔SON
+            Status = 1,
+            CreateBy = "PL017",
+            Route = barcodeInfoList.Any() ? $"鎵归噺_{barcodeInfoList.First().DeliveryNo ?? "鏈煡"}" : "绌烘壒閲忚姹�",
+            DealWith = 0
+        };
+
+        try
+        {
+            // 2. 涓氬姟閫昏緫澶勭悊锛氳皟鐢ㄤ笟鍔″眰鎵归噺淇濆瓨
+            dynamic resultData = new ExpandoObject();
+            bool batchSaveSuccess = _deliveryBarcodeManager.SaveList(barcodeInfoList);
+            resultData.tbBillList = batchSaveSuccess; // 淇濇寔涓庡崟涓繚瀛樹竴鑷寸殑杩斿洖瀛楁
+
+            // 3. 鏇存柊娑堟伅涓績鐘舵��
+            messageEntity.Result = batchSaveSuccess ? 1 : 0;
+            messageEntity.DealWith = 1;
+            _messageCenterManager.save(messageEntity);
+
+            // 4. 杩斿洖鎴愬姛鍝嶅簲
+            return new ResponseResult
+            {
+                status = 0,
+                message = $"鎵归噺淇濆瓨鎴愬姛锛屽叡澶勭悊{barcodeInfoList.Count}鏉℃潯鐮佷俊鎭�",
+                data = resultData
+            };
+        }
+        catch (Exception ex)
+        {
+            // 5. 寮傚父澶勭悊锛氳褰曞紓甯稿苟杩斿洖閿欒
+            messageEntity.Result = 0;
+            messageEntity.DealWith = 0;
+            messageEntity.ResultData = $"鎵归噺淇濆瓨寮傚父锛歿ex.Message}";
+            _messageCenterManager.save(messageEntity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鏍规嵁閫佽揣鍗曞彿鍒犻櫎鏉$爜鏁版嵁
+    /// </summary>
+    /// <param name="request">鍖呭惈閫佽揣鍗曞彿鐨勮姹傛ā鍨�</param>
+    /// <returns>缁熶竴鍝嶅簲缁撴灉</returns>
+    [HttpPost("DeleteByNo")] // 鑻ラ」鐩敮鎸� RESTful锛屽彲鏀逛负 [HttpDelete("DeleteByNo")]
+    public ResponseResult DeleteByNo([FromBody] DeleteByDeliveryNoRequest request)
+    {
+        // 1. 鍒濆鍖栨秷鎭腑蹇冨疄浣擄紙璁板綍鍒犻櫎鎿嶄綔鏃ュ織锛�
+        var messageEntity = new MessageCenter
+        {
+            TableName = TARGET_TABLE,
+            Url = BASE_API_URL + "DeleteByNo", // 鎺ュ彛URL
+            Method = REQUEST_METHOD,
+            Data = JsonConvert.SerializeObject(request), // 搴忓垪鍖栬姹傚弬鏁�
+            Status = 1, // 1=澶勭悊涓�
+            CreateBy = "PL017", // 涓庡師鏈夋帴鍙d竴鑷寸殑鍒涘缓浜�
+            Route = request.DeliveryNo, // 璺敱鏍囪瘑=閫佽揣鍗曞彿锛屼究浜庡畾浣嶆棩蹇�
+            DealWith = 0 // 鍒濆=鏈鐞�
+        };
+
+        try
+        {
+            // 2. 璋冪敤涓氬姟灞傛柟娉曟墽琛屽垹闄�
+            dynamic resultData = new ExpandoObject();
+            bool deleteSuccess = _deliveryBarcodeManager.DeleteByDeliveryNo(request.DeliveryNo);
+            resultData.deletedDeliveryNo = request.DeliveryNo; // 杩斿洖鍒犻櫎鐨勯�佽揣鍗曞彿
+            resultData.isSuccess = deleteSuccess;
+
+            // 3. 鏇存柊娑堟伅涓績鐘舵�侊紙鎴愬姛锛�
+            messageEntity.Result = 1; // 1=鎴愬姛
+            messageEntity.DealWith = 1; // 1=宸插鐞�
+            _messageCenterManager.save(messageEntity);
+
+            // 4. 杩斿洖鎴愬姛鍝嶅簲
+            return new ResponseResult
+            {
+                status = 0,
+                message = $"鎴愬姛鍒犻櫎閫佽揣鍗曞彿銆寋request.DeliveryNo}銆嶅搴旂殑鏉$爜鏁版嵁",
+                data = resultData
+            };
+        }
+        catch (Exception ex)
+        {
+            // 5. 寮傚父澶勭悊锛氭洿鏂版秷鎭腑蹇冩棩蹇楋紙澶辫触锛�
+            messageEntity.Result = 0; // 0=澶辫触
+            messageEntity.DealWith = 0; // 0=鏈鐞�
+            messageEntity.ResultData = ex.Message; // 璁板綍寮傚父淇℃伅
+            _messageCenterManager.save(messageEntity);
+
+            // 6. 杩斿洖缁熶竴寮傚父鍝嶅簲
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+    
+    /// <summary>
+    /// 鎵归噺鏍规嵁閫佽揣鍗曞彿鍒犻櫎鏉$爜鏁版嵁
+    /// </summary>
+    /// <param name="request">鍖呭惈鎵归噺閫佽揣鍗曞彿鐨勮姹傛ā鍨嬶紙鏁扮粍鏍煎紡锛�</param>
+    /// <returns>缁熶竴鍝嶅簲缁撴灉</returns>
+    [HttpPost("DeleteListByNo")]
+    public ResponseResult DeleteListByNo([FromBody] BatchDeleteByDeliveryNoRequest request)
+    {
+        // 1. 鍒濆鍖栨秷鎭腑蹇冨疄浣�
+        var messageEntity = new MessageCenter
+        {
+            TableName = TARGET_TABLE,
+            Url = BASE_API_URL + "DeleteListByNo",
+            Method = REQUEST_METHOD,
+            Data = JsonConvert.SerializeObject(request),
+            Status = 1, // 澶勭悊涓�
+            CreateBy = "PL017",
+            // 璺敱鏍囪瘑锛氭樉绀哄墠3涓崟鍙�
+            Route =
+                $"Batch_{string.Join(",", request.Take(3).Select(item => item.DeliveryNo))}{(request.Count > 3 ? "..." : "")}",
+            DealWith = 0 // 鏈鐞�
+        };
+
+        try
+        {
+            // 2. 鐩存帴璋冪敤涓氬姟灞傦紙涓嶅啀鍦ㄦ帶鍒跺櫒澶勭悊鍒楄〃锛岄�昏緫绉昏嚦涓氬姟灞傦級
+            dynamic resultData = new ExpandoObject();
+            BatchDeleteResult deleteResult = _deliveryBarcodeManager.DeleteListByDeliveryNo(request);
+
+            // 3. 缁勮杩斿洖鏁版嵁
+            resultData.totalRequested = deleteResult.TotalRequested;
+            resultData.totalDeleted = deleteResult.TotalDeleted;
+            resultData.deletedNos = deleteResult.DeletedNos;
+            resultData.notFoundNos = deleteResult.NotFoundNos;
+            resultData.isSuccess = deleteResult.TotalDeleted > 0;
+
+            // 4. 鏇存柊娑堟伅涓績鐘舵�侊紙鎴愬姛锛�
+            messageEntity.Result = 1;
+            messageEntity.DealWith = 1;
+            messageEntity.ResultData = $"鎵归噺鍒犻櫎瀹屾垚锛屽叡澶勭悊{deleteResult.TotalRequested}涓崟鍙�";
+            _messageCenterManager.save(messageEntity);
+
+            // 5. 杩斿洖鎴愬姛鍝嶅簲
+            return new ResponseResult
+            {
+                status = 0,
+                message = $"鎴愬姛鍒犻櫎{deleteResult.DeletedNos.Count}涓�佽揣鍗曞彿瀵瑰簲鐨勬潯鐮佹暟鎹紝鍏眥deleteResult.TotalDeleted}鏉¤褰�",
+                data = resultData
+            };
+        }
+        catch (Exception ex)
+        {
+            // 6. 寮傚父澶勭悊
+            messageEntity.Result = 0;
+            messageEntity.DealWith = 0;
+            messageEntity.ResultData = ex.Message;
+            _messageCenterManager.save(messageEntity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鎸夐�佽揣鍗曞彿+琛屽唴鐮佽仈鍚堝垹闄ゆ潯鐮佹暟鎹�
+    /// </summary>
+    /// <param name="request">鍖呭惈閫佽揣鍗曞彿鍜岃鍐呯爜鐨勮姹傛ā鍨�</param>
+    /// <returns>缁熶竴鍝嶅簲缁撴灉</returns>
+    [HttpPost("DeleteByItem")] // 鑻ョ敤 RESTful 瑙勮寖锛屽彲鏀逛负 [HttpDelete("DeleteByItem")]
+    public ResponseResult DeleteByItem([FromBody] DeleteByDeliveryItemRequest request)
+    {
+        // 1. 鍒濆鍖栨秷鎭腑蹇冨疄浣擄細璁板綍鍒犻櫎鎿嶄綔鏃ュ織
+        var messageEntity = new MessageCenter
+        {
+            TableName = TARGET_TABLE,
+            Url = BASE_API_URL + "DeleteByItem", // 鎺ュ彛URL
+            Method = REQUEST_METHOD,
+            Data = JsonConvert.SerializeObject(request), // 搴忓垪鍖栬姹傚弬鏁帮紙鍚弻鏉′欢锛�
+            Status = 1, // 1=澶勭悊涓�
+            CreateBy = "PL017", // 涓庡師鏈夋帴鍙d竴鑷寸殑鍒涘缓浜�
+            Route = $"{request.DeliveryNo}_{request.LineNo}", // 璺敱鏍囪瘑=鈥滃崟鍙穇琛屽唴鐮佲�濓紝渚夸簬鏃ュ織瀹氫綅
+            DealWith = 0 // 鍒濆=鏈鐞�
+        };
+
+        try
+        {
+            // 2. 璋冪敤涓氬姟灞傝仈鍚堝垹闄ゆ柟娉�
+            dynamic resultData = new ExpandoObject();
+            bool deleteSuccess = _deliveryBarcodeManager.DeleteByDeliveryItem(
+                request.DeliveryNo,
+                request.LineNo
+            );
+            // 鍝嶅簲涓繑鍥炲叧閿潯浠讹紝渚夸簬鍓嶇纭鍒犻櫎鑼冨洿
+            resultData.deletedDeliveryNo = request.DeliveryNo;
+            resultData.deletedLineNo = request.LineNo;
+            resultData.isSuccess = deleteSuccess;
+
+            // 3. 鏇存柊娑堟伅涓績鐘舵�侊紙鎴愬姛锛�
+            messageEntity.Result = 1; // 1=鎴愬姛
+            messageEntity.DealWith = 1; // 1=宸插鐞�
+            _messageCenterManager.save(messageEntity);
+
+            // 4. 杩斿洖鎴愬姛鍝嶅簲
+            return new ResponseResult
+            {
+                status = 0,
+                message = $"鎴愬姛鍒犻櫎閫佽揣鍗曞彿銆寋request.DeliveryNo}銆�-琛屽唴鐮併�寋request.LineNo}銆嶅搴旂殑鏉$爜鏁版嵁",
+                data = resultData
+            };
+        }
+        catch (Exception ex)
+        {
+            // 5. 寮傚父澶勭悊锛氳褰曟秷鎭腑蹇冩棩蹇楋紙澶辫触锛�
+            messageEntity.Result = 0; // 0=澶辫触
+            messageEntity.DealWith = 0; // 0=鏈鐞�
+            messageEntity.ResultData = ex.Message; // 瀛樺偍寮傚父淇℃伅
+            _messageCenterManager.save(messageEntity);
+
+            // 6. 杩斿洖缁熶竴寮傚父鍝嶅簲
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鎵归噺鎸夐�佽揣鍗曞彿+琛屽唴鐮佸垹闄ゆ潯鐮佹暟鎹�
+    /// </summary>
+    /// <param name="request">鍖呭惈鎵归噺閫佽揣鍗曡鐨勮姹傛ā鍨嬶紙鏁扮粍鏍煎紡锛�</param>
+    /// <returns>缁熶竴鍝嶅簲缁撴灉</returns>
+    [HttpPost("DeleteListByItem")]
+    public ResponseResult DeleteListByItem([FromBody] BatchDeleteByDeliveryItemRequest request)
+    {
+        // 1. 鍒濆鍖栨秷鎭腑蹇冨疄浣�
+        var messageEntity = new MessageCenter
+        {
+            TableName = TARGET_TABLE,
+            Url = BASE_API_URL + "DeleteListByItem",
+            Method = REQUEST_METHOD,
+            Data = JsonConvert.SerializeObject(request),
+            Status = 1, // 澶勭悊涓�
+            CreateBy = "PL017",
+            // 璺敱鏍囪瘑锛氭樉绀哄墠3涓�"DeliveryNo_LineNo"缁勫悎
+            Route =
+                $"BatchItem_{string.Join(",", request.Take(3).Select(item => $"{item.DeliveryNo}_{item.LineNo}"))}{(request.Count > 3 ? "..." : "")}",
+            DealWith = 0 // 鏈鐞�
+        };
+
+        try
+        {
+            // 2. 璋冪敤涓氬姟灞傛墽琛屾壒閲忓垹闄�
+            dynamic resultData = new ExpandoObject();
+            BatchDeleteResult deleteResult = _deliveryBarcodeManager.DeleteListByDeliveryItem(request);
+
+            // 3. 缁勮杩斿洖鏁版嵁
+            resultData.totalRequested = deleteResult.TotalRequested;
+            resultData.totalDeleted = deleteResult.TotalDeleted;
+            resultData.deletedItems = deleteResult.DeletedNos; // 鏍煎紡锛歔"DN1_1", "DN1_2"]
+            resultData.notFoundItems = deleteResult.NotFoundNos;
+            resultData.isSuccess = deleteResult.TotalDeleted > 0;
+
+            // 4. 鏇存柊娑堟伅涓績鐘舵�侊紙鎴愬姛锛�
+            messageEntity.Result = 1;
+            messageEntity.DealWith = 1;
+            messageEntity.ResultData = $"鎵归噺鍒犻櫎瀹屾垚锛屽叡澶勭悊{deleteResult.TotalRequested}鏉¢�佽揣鍗曡";
+            _messageCenterManager.save(messageEntity);
+
+            // 5. 杩斿洖鎴愬姛鍝嶅簲
+            return new ResponseResult
+            {
+                status = 0,
+                message = $"鎴愬姛鍒犻櫎{deleteResult.DeletedNos.Count}鏉¢�佽揣鍗曡鏁版嵁锛屽叡{deleteResult.TotalDeleted}鏉¤褰�",
+                data = resultData
+            };
+        }
+        catch (Exception ex)
+        {
+            // 6. 寮傚父澶勭悊
+            messageEntity.Result = 0;
+            messageEntity.DealWith = 0;
+            messageEntity.ResultData = ex.Message;
+            _messageCenterManager.save(messageEntity);
+
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3