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