MES.Service/Dto/webApi/DeleteByDeliveryItemRequest.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Dto/webApi/DeleteByDeliveryNoRequest.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Dto/webApi/DeliveryBarcodeInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Modes/DeliveryBarcodeInformation.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/service/BasicData/DeliveryBarcodeManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MESApplication/Controllers/BasicData/DeliveryBarcodeController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
MES.Service/Dto/webApi/DeleteByDeliveryItemRequest.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ using System.ComponentModel.DataAnnotations; using MES.Service.Dto.webApi; namespace MES.Service.Dto.webApi; /// <summary> /// æéè´§åå·+è¡å ç å 餿¡ç çè¯·æ±æ¨¡å /// </summary> public class DeleteByDeliveryItemRequest { /// <summary> /// éè´§åå·ï¼å¿ å¡«ï¼ä¸è½ä¸ºç©º/空åç¬¦ä¸²ï¼ /// </summary> [Required(ErrorMessage = "éè´§åå· DeliveryNo ä¸è½ä¸ºç©º")] public string DeliveryNo { get; set; } /// <summary> /// éè´§åè¡å ç ï¼å¿ å¡«ï¼ä¸è½ä¸ºç©º/空åç¬¦ä¸²ï¼ /// </summary> [Required(ErrorMessage = "éè´§åè¡å ç LineNo ä¸è½ä¸ºç©º")] public string LineNo { get; set; } } MES.Service/Dto/webApi/DeleteByDeliveryNoRequest.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ using System.ComponentModel.DataAnnotations; namespace MES.Service.Dto.webApi; /// <summary> /// æ ¹æ®éè´§åå·å 餿¡ç çè¯·æ±æ¨¡å /// </summary> public class DeleteByDeliveryNoRequest { /// <summary> /// éè´§åå·ï¼å¿ å¡«ï¼ä¸è½ä¸ºç©º/空åç¬¦ä¸²ï¼ /// </summary> [Required(ErrorMessage = "éè´§åå· DeliveryNo ä¸è½ä¸ºç©º")] public string DeliveryNo { get; set; } } MES.Service/Dto/webApi/DeliveryBarcodeInfo.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ namespace MES.Service.Dto.webApi; public class DeliveryBarcodeInfo { /// <summary> /// éè´§åå· /// </summary> public string? DeliveryNo { get; set; } /// <summary> /// éè´§åè¡å ç /// </summary> public string? LineNo { get; set; } /// <summary> /// ç©ææ¡ç /// </summary> public string? SmallBarcode { get; set; } /// <summary> /// ç©æå ç /// </summary> public string? ProductCode { get; set; } /// <summary> /// æ¡ç æ°é /// </summary> public decimal? IncludeQty { get; set; } /// <summary> /// ç®±æ¡ç /// </summary> public string? OuterBarcode { get; set; } /// <summary> /// æ¡ç ç±»å /// </summary> public string? BarcodeType { get; set; } /// <summary> /// æ¯å¦åå¹¶ /// </summary> public bool? IsMerge { get; set; } /// <summary> /// æ¥å£ç±»å /// </summary> public string? Type { get; set; } /// <summary> /// æ¯å¦å°¾ç®± /// </summary> public bool? IsLast { get; set; } /// <summary> /// ç®±è£ æ° /// </summary> public int? PackingQty { get; set; } } MES.Service/Modes/DeliveryBarcodeInformation.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,196 @@ using SqlSugar; namespace MES.Service.Modes; /// <summary> /// æºå®¢äºæ¡ç ä¿¡æ¯è¡¨ /// </summary> [SugarTable("TBL_BARCODE_INFORMATION")] public class BarcodeInformation { /// <summary> /// SEQ_XKY /// </summary> [SugarColumn(ColumnName = "id", IsPrimaryKey = true)] public Guid Id { get; set; } /// <summary> /// 产åç¼ç /// </summary> [SugarColumn(ColumnName = "product_code")] public string? ProductCode { get; set; } /// <summary> /// å°å æ¡ç /// </summary> [SugarColumn(ColumnName = "small_barcode")] public string? SmallBarcode { get; set; } /// <summary> /// å¤§å æ¡ç /// </summary> [SugarColumn(ColumnName = "big_barcode")] public string? BigBarcode { get; set; } /// <summary> /// å¤ç®±æ¡ç /// </summary> [SugarColumn(ColumnName = "outer_barcode")] public string? OuterBarcode { get; set; } /// <summary> /// å½åå°å æ¡ç å å«çæ°é /// </summary> [SugarColumn(ColumnName = "include_qty")] public decimal? IncludeQty { get; set; } /// <summary> /// å°å æ¡ç -é¿ /// </summary> [SugarColumn(ColumnName = "small_package_length")] public string? SmallPackageLength { get; set; } /// <summary> /// å°å æ¡ç -宽 /// </summary> [SugarColumn(ColumnName = "small_package_width")] public string? SmallPackageWidth { get; set; } /// <summary> /// å°å æ¡ç -é« /// </summary> [SugarColumn(ColumnName = "small_package_height")] public string? SmallPackageHeight { get; set; } /// <summary> /// å¤§å æ¡ç -é¿ /// </summary> [SugarColumn(ColumnName = "big_package_length")] public string? BigPackageLength { get; set; } /// <summary> /// å¤§å æ¡ç -宽 /// </summary> [SugarColumn(ColumnName = "big_package_width")] public string? BigPackageWidth { get; set; } /// <summary> /// å¤§å æ¡ç -é« /// </summary> [SugarColumn(ColumnName = "big_package_height")] public string? BigPackageHeight { get; set; } /// <summary> /// å¤ç®±æ¡ç -é¿ /// </summary> [SugarColumn(ColumnName = "outer_package_length")] public string? OuterPackageLength { get; set; } /// <summary> /// å¤ç®±æ¡ç -宽 /// </summary> [SugarColumn(ColumnName = "outer_package_width")] public string? OuterPackageWidth { get; set; } /// <summary> /// å¤ç®±æ¡ç -é« /// </summary> [SugarColumn(ColumnName = "outer_package_height")] public string? OuterPackageHeight { get; set; } /// <summary> /// å½åå°å æ¡ç çæµæ°´ç /// </summary> [SugarColumn(ColumnName = "small_package_sn")] public string? SmallPackageSn { get; set; } /// <summary> /// å½åå¤§å æ¡ç çæµæ°´ç /// </summary> [SugarColumn(ColumnName = "big_package_sn")] public string? BigPackageSn { get; set; } /// <summary> /// å½åå¤ç®±æ¡ç çæµæ°´ç /// </summary> [SugarColumn(ColumnName = "out_package_sn")] public string? OutPackageSn { get; set; } /// <summary> /// æ¡ç è§åä¸å¯¹åºç卿忮µçå¼ /// </summary> [SugarColumn(ColumnName = "dynamic_data")] public string? DynamicData { get; set; } /// <summary> /// å è£ å±çº§ /// </summary> [SugarColumn(ColumnName = "pack_level")] public string? PackLevel { get; set; } /// <summary> /// å建æ¶é´ /// </summary> [SugarColumn(ColumnName = "create_time")] public DateTime? CreateTime { get; set; } /// <summary> /// æ´æ°æ¶é´ /// </summary> [SugarColumn(ColumnName = "update_time")] public DateTime? UpdateTime { get; set; } /// <summary> /// éè´§åå· /// </summary> [SugarColumn(ColumnName = "delivery_no")] public string? DeliveryNo { get; set; } /// <summary> /// éè´åå· /// </summary> [SugarColumn(ColumnName = "po_erp_no")] public string? PoErpNo { get; set; } /// <summary> /// éè´§å项次 /// </summary> [SugarColumn(ColumnName = "dnLines")] public string? DnLines { get; set; } /// <summary> /// 订å项次(ERP) /// </summary> [SugarColumn(ColumnName = "po_line_no")] public string? PoLineNo { get; set; } /// <summary> /// ä¾åºåç¼ç /// </summary> [SugarColumn(ColumnName = "inner_vendor_code")] public string? InnerVendorCode { get; set; } /// <summary> /// X /// </summary> [SugarColumn(ColumnName = "customize1")] public string? Customize1 { get; set; } /// <summary> /// 忥æ¶é´ /// </summary> [SugarColumn(ColumnName = "SYNCHRONOUS_DATE")] public DateTime? SynchronousDate { get; set; } /// <summary> /// çäº§æ¥æ /// </summary> [SugarColumn(ColumnName = "customize2")] public string? Customize2 { get; set; } /// <summary> /// æææ /// </summary> [SugarColumn(ColumnName = "customize3")] public string? Customize3 { get; set; } } MES.Service/service/BasicData/DeliveryBarcodeManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,291 @@ using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using System.Linq; namespace MES.Service.service.BasicData; /// <summary> /// éè´§åæ¡ç ä¸å¡ç®¡çå¨ï¼å¯¹åºTBL_BARCODE_INFORMATION表æä½ï¼ /// </summary> public class DeliveryBarcodeManager : Repository<BarcodeInformation> { /// <summary> /// å个éè´§åæ¡ç ä¿¡æ¯ä¿åï¼æ¯ææ°å¢/å é¤ï¼æTypeåºåæä½ç±»åï¼ /// </summary> /// <param name="barcodeDto">éè´§åæ¡ç DTOï¼å«æä½ç±»åTypeï¼</param> /// <returns>æä½æ¯å¦æå</returns> public bool Save(DeliveryBarcodeInfo barcodeDto) { if (barcodeDto == null) throw new ArgumentNullException(nameof(barcodeDto), "æ¡ç DTOä¸è½ä¸ºç©º"); // DTO转å®ä½ï¼æ å°åæ®µå ³ç³»ï¼ var barcodeEntity = ConvertDtoToEntity(barcodeDto); try { // æTypeåºåæä½ç±»åï¼0=æ°å¢ï¼1=å é¤ï¼ switch (barcodeDto.Type) { case "0": return InsertBarcode(barcodeEntity); case "1": return DeleteBarcode(barcodeEntity.Id); default: throw new ArgumentOutOfRangeException( nameof(barcodeDto.Type), barcodeDto.Type, "æ¡ç æä½ç±»åé误ï¼ä» æ¯æ 0ï¼æ°å¢ï¼ã1ï¼å é¤ï¼"); } } catch (Exception ex) { throw new ApplicationException($"å个æ¡ç æä½å¤±è´¥ï¼éè´§åå·ï¼{barcodeDto.DeliveryNo}ï¼ï¼{ex.Message}", ex); } } /// <summary> /// æ¹ééè´§åæ¡ç ä¿¡æ¯ä¿åï¼æTypeåç»å¤çï¼ç»ä¸å¼å¸¸æè·ï¼ /// </summary> /// <param name="barcodeDtoList">éè´§åæ¡ç DTOå表</param> /// <returns>æ¹éæä½æ¯å¦å ¨é¨æå</returns> public bool SaveList(List<DeliveryBarcodeInfo> barcodeDtoList) { if (barcodeDtoList == null || !barcodeDtoList.Any()) { throw new ArgumentException("æ¹éæä½çæ¡ç å表ä¸è½ä¸ºç©º"); } try { // 1. å建强类åçå®ä½ä¸ç±»åç»åå表ï¼è§£å³dynamic转æ¢é®é¢ï¼ var entityTypePairs = new List<EntityTypePair>(); foreach (var dto in barcodeDtoList) { entityTypePairs.Add(new EntityTypePair { Entity = ConvertDtoToEntity(dto), Type = dto.Type }); } // 2. ææä½ç±»åTypeåç»ï¼ä½¿ç¨å¼ºç±»åé¿å ç±»åæ¨æé®é¢ï¼ var typeGroupDict = entityTypePairs .GroupBy(pair => pair.Type) .ToDictionary( group => group.Key, group => group.Select(pair => pair.Entity).ToList() ); // 3. åå¨åç»æä½ç»æ var groupResultList = new List<bool>(); foreach (var (type, entityGroup) in typeGroupDict) { switch (type) { case "0": groupResultList.Add(InsertBarcodeBatch(entityGroup)); break; case "1": groupResultList.Add(DeleteBarcodeBatch(entityGroup.Select(e => e.Id).ToArray())); break; default: throw new ArgumentOutOfRangeException( nameof(type), type, "æ¹éæä½ä¸åå¨éæ³Typeï¼ä» æ¯æ 0ï¼æ°å¢ï¼ã1ï¼å é¤ï¼"); } } // 4. ææåç»æä½åæåæç®æ¹éæå if (groupResultList.All(result => result)) { return true; } throw new NotImplementedException("æ¹éæ¡ç æä½é¨å失败ï¼å ·ä½è¯·æ¥çæ¥å¿"); } catch (Exception ex) { throw new ApplicationException($"æ¹éæ¡ç æä½å¤±è´¥ï¼æ»æ¡æ°ï¼{barcodeDtoList.Count}ï¼ï¼{ex.Message}", ex); } } /// <summary> /// æ ¹æ®éè´§åå·å 餿¡ç æ°æ® /// </summary> /// <param name="deliveryNo">éè´§åå·ï¼ä¸è½ä¸ºç©º/空å符串ï¼</param> /// <returns>æ¯å¦å 餿åï¼true=è³å°å é¤1æ¡ï¼false=æªæ¾å°å¯¹åºæ°æ®ï¼</returns> public bool DeleteByDeliveryNo(string deliveryNo) { // 1. æ ¡éªåæ°ï¼éè´§åå·ä¸è½ä¸ºç©º if (string.IsNullOrWhiteSpace(deliveryNo)) throw new ArgumentException("éè´§åå· DeliveryNo ä¸è½ä¸ºç©ºæç©ºæ ¼", nameof(deliveryNo)); try { // 2. æ§è¡å é¤ï¼æ ¹æ® DeliveryNo å¹é è¡¨ä¸æ°æ®ï¼å¯¹åºå®ä½ç DeliveryNo åæ®µï¼ int deletedCount = Db.Deleteable<BarcodeInformation>() .Where(barcode => barcode.DeliveryNo == deliveryNo) // è¡¨åæ®µä¸éè´§åå·å¹é .ExecuteCommand(); // è¿ååå½±åçè¡æ° // 3. å¤æç»æï¼è³å°å é¤1æ¡åè§ä¸ºæåï¼å¦åæåºâæªæ¾å°æ°æ®âå¼å¸¸ if (deletedCount > 0) return true; throw new KeyNotFoundException($"æªæ¾å°éè´§åå·ä¸ºã{deliveryNo}ãçæ¡ç æ°æ®ï¼å 餿使ªæ§è¡"); } catch (Exception ex) { // 4. å è£ ä¸å¡å¼å¸¸ï¼è¡¥å ä¸ä¸æä¿¡æ¯ throw new ApplicationException($"æ ¹æ®éè´§åå·å 餿¡ç æ°æ®å¤±è´¥ï¼DeliveryNoï¼{deliveryNo}ï¼ï¼{ex.Message}", ex); } } /// <summary> /// æéè´§åå·+è¡å ç èåå 餿¡ç æ°æ® /// </summary> /// <param name="deliveryNo">éè´§åå·</param> /// <param name="lineNo">éè´§åè¡å ç </param> /// <returns>æ¯å¦å 餿åï¼true=è³å°å é¤1æ¡ï¼false=æªæ¾å°å¯¹åºæ°æ®ï¼</returns> public bool DeleteByDeliveryItem(string deliveryNo, string lineNo) { // 1. ååæ°æ ¡éªï¼é¿å 空å¼/空å符串 if (string.IsNullOrWhiteSpace(deliveryNo)) throw new ArgumentException("éè´§åå· DeliveryNo ä¸è½ä¸ºç©ºæç©ºæ ¼", nameof(deliveryNo)); if (string.IsNullOrWhiteSpace(lineNo)) throw new ArgumentException("éè´§åè¡å ç LineNo ä¸è½ä¸ºç©ºæç©ºæ ¼", nameof(lineNo)); try { // 2. è忡件å é¤ï¼å¹é DeliveryNoï¼éè´§åå·ï¼å DnLinesï¼è¡å ç ï¼å®ä½å段对åºè¡¨ç dnLines åï¼ int deletedCount = Db.Deleteable<BarcodeInformation>() .Where(barcode => barcode.DeliveryNo == deliveryNo // å¹é éè´§åå· && barcode.DnLines == lineNo // å¹é è¡å ç ï¼å®ä½ DnLines 对åºè¡¨ dnLines åæ®µï¼ ) .ExecuteCommand(); // è¿ååå½±åçè¡æ° // 3. ç»æå¤æï¼ææ°æ®è¢«å é¤åæåï¼å¦åæâæªæ¾å°æ°æ®âå¼å¸¸ if (deletedCount > 0) return true; throw new KeyNotFoundException( $"æªæ¾å°éè´§åå·ã{deliveryNo}ãä¸è¡å ç ã{lineNo}ã对åºçæ¡ç æ°æ®ï¼å 餿使ªæ§è¡"); } catch (Exception ex) { // 4. å è£ å¼å¸¸ï¼è¡¥å è忡件ä¸ä¸æï¼ä¾¿äºå®ä½é®é¢ throw new ApplicationException( $"æéè´§åå·+è¡å ç å 餿¡ç æ°æ®å¤±è´¥ï¼DeliveryNoï¼{deliveryNo}ï¼LineNoï¼{lineNo}ï¼ï¼{ex.Message}", ex); } } #region ç§æè¾ å©æ¹æ³åå é¨ç±» /// <summary> /// å é¨è¾ å©ç±»ï¼ç¨äºå ³èå®ä½åæä½ç±»åï¼è§£å³dynamicç±»å转æ¢é®é¢ï¼ /// </summary> private class EntityTypePair { public BarcodeInformation Entity { get; set; } public string Type { get; set; } } /// <summary> /// DTO转å®ä½ï¼æ å°DeliveryBarcodeInfoå°BarcodeInformationåæ®µ /// </summary> private BarcodeInformation ConvertDtoToEntity(DeliveryBarcodeInfo dto) { var entityId = dto.Type == "0" ? Guid.NewGuid() : (string.IsNullOrEmpty(dto.SmallBarcode) ? Guid.Empty : Guid.Parse(dto.SmallBarcode)); return new BarcodeInformation { Id = entityId, ProductCode = dto.ProductCode, SmallBarcode = dto.SmallBarcode, OuterBarcode = dto.OuterBarcode, IncludeQty = dto.IncludeQty.HasValue ? Convert.ToDecimal(dto.IncludeQty) : 0, DeliveryNo = dto.DeliveryNo, DnLines = dto.LineNo, PackLevel = dto.BarcodeType, CreateTime = dto.Type == "0" ? DateTime.Now : (DateTime?)null, UpdateTime = DateTime.Now, // æ©å±å段èµé»è®¤å¼ BigBarcode = null, SmallPackageLength = null, SmallPackageWidth = null, SmallPackageHeight = null, BigPackageLength = null, BigPackageWidth = null, BigPackageHeight = null, OuterPackageLength = null, OuterPackageWidth = null, OuterPackageHeight = null, SmallPackageSn = null, BigPackageSn = null, OutPackageSn = null, DynamicData = null, PoErpNo = null, PoLineNo = null, InnerVendorCode = null, Customize1 = null, SynchronousDate = null, Customize2 = null, Customize3 = null }; } /// <summary> /// å个æ¡ç æ°å¢ /// </summary> private bool InsertBarcode(BarcodeInformation entity) { var isInsertSuccess = base.Insert(entity); return isInsertSuccess ? true : throw new NotImplementedException("æ¡ç æ°å¢å¤±è´¥ï¼æ°æ®åºæå ¥æä½æªæ§è¡æå"); } /// <summary> /// å个æ¡ç å é¤ï¼æä¸»é®Idï¼ /// </summary> private bool DeleteBarcode(Guid id) { if (id == Guid.Empty) throw new ArgumentException("å 餿ä½çæ¡ç Idä¸è½ä¸ºç©º"); var deleteRowCount = Db.Deleteable<BarcodeInformation>() .Where(entity => entity.Id == id) .ExecuteCommand(); return deleteRowCount > 0 ? true : throw new NotImplementedException($"æ¡ç å é¤å¤±è´¥ï¼æªæ¾å°Id为ã{id}ãçæ¡ç è®°å½"); } /// <summary> /// æ¹éæ¡ç æ°å¢ /// </summary> private bool InsertBarcodeBatch(List<BarcodeInformation> entityList) { var isBatchInsertSuccess = base.InsertRange(entityList); return isBatchInsertSuccess ? true : throw new NotImplementedException($"æ¹éæ¡ç æ°å¢å¤±è´¥ï¼å ±{entityList.Count}æ¡è®°å½"); } /// <summary> /// æ¹éæ¡ç å é¤ï¼æä¸»é®Idæ°ç»ï¼ /// </summary> private bool DeleteBarcodeBatch(Guid[] ids) { if (ids == null || ids.Length == 0) throw new ArgumentException("æ¹éå é¤çæ¡ç Idæ°ç»ä¸è½ä¸ºç©º"); var deleteRowCount = Db.Deleteable<BarcodeInformation>() .Where(entity => ids.Contains(entity.Id)) .ExecuteCommand(); return deleteRowCount > 0 ? true : throw new NotImplementedException($"æ¹éæ¡ç å é¤å¤±è´¥ï¼å ±{ids.Length}个Id"); } #endregion } MESApplication/Controllers/BasicData/DeliveryBarcodeController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,256 @@ using 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(); // æ¥å£è¯·æ±æ¹æ³ï¼åºå®POSTï¼ä¸åæ§å¶å¨ä¸è´ï¼ 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">éè´§åæ¡ç DTOï¼å个ï¼</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), // åºååDTO为JSON 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">éè´§åæ¡ç DTOåè¡¨ï¼æ¹éï¼</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), // åºååDTOå表为JSON 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", // ä¸åææ¥å£ä¸è´çå建人 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("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", // ä¸åææ¥å£ä¸è´çå建人 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); } } }