田爽 1 жил өмнө
parent
commit
331d65f3e1

+ 25 - 12
src/Hotline.Api/Controllers/QualityController.cs

@@ -121,6 +121,7 @@ namespace Hotline.Api.Controllers
 				.FirstAsync(x => x.Id == id);
 		}
 		#endregion
+
 		#region 质检项管理 
 		/// <summary>
 		/// 新增项目
@@ -138,17 +139,17 @@ namespace Hotline.Api.Controllers
 			await _qualiteyItem.AddAsync(model, HttpContext.RequestAborted);
 		}
 
-		/// <summary>
-		/// 删除项目
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		[Permission(EPermission.DeleteQualityItem)]
-		[HttpDelete("item")]
-		public async Task Delete([FromBody] QualityItemDeleteDto dto)
-		{
-			await _qualiteyItem.RemoveAsync(x => x.Id == dto.Id);
-		}
+		///// <summary>
+		///// 删除项目
+		///// </summary>
+		///// <param name="dto"></param>
+		///// <returns></returns>
+		//[Permission(EPermission.DeleteQualityItem)]
+		//[HttpDelete("item")]
+		//public async Task Delete([FromBody] QualityItemDeleteDto dto)
+		//{
+		//	await _qualiteyItem.RemoveAsync(x => x.Id == dto.Id);
+		//}
 
 		/// <summary>
 		/// 删除项目
@@ -160,7 +161,13 @@ namespace Hotline.Api.Controllers
 		public async Task Delete([FromBody] QualityItemBatchDeleteDto dto)
 		{
 			List<QualityItem> items = await _qualiteyItem.Queryable().In(x => x.Id, dto.Ids).ToListAsync();
-			await _qualiteyItem.RemoveRangeAsync(items, HttpContext.RequestAborted);
+            foreach (var item in items)
+            {
+	            var detail = await _qualiteyDetail.Queryable().Where(x => x.Name == item.Name && !x.IsDeleted).AnyAsync();
+				//质检中已存在 启用状态不可以删
+				if (item.IsEnable == 0 || detail) items.Remove(item);
+}
+            if (items.Any()) await _qualiteyItem.RemoveRangeAsync(items,true, HttpContext.RequestAborted);
 		}
 
 		/// <summary>
@@ -175,6 +182,10 @@ namespace Hotline.Api.Controllers
 			var item = await _qualiteyItem.GetAsync(dto.Id, HttpContext.RequestAborted);
 			if (item is null)
 				throw UserFriendlyException.SameMessage("无效质检项目");
+			if (item.IsEnable != dto.IsEnable || item.Name != dto.Name) {
+				var detail = await _qualiteyDetail.Queryable().Where(x => x.Name == item.Name && !x.IsDeleted).AnyAsync();
+				if(detail) throw UserFriendlyException.SameMessage("质检项目在中心质检中已使用,不能修改状态和名称!");
+			}
 			_mapper.Map(dto, item);
 			item.LastModificationName = _sessionContext.UserName;
 			await _qualiteyItem.UpdateAsync(item, HttpContext.RequestAborted);
@@ -211,6 +222,7 @@ namespace Hotline.Api.Controllers
 		}
 
 		#endregion
+
 		#region 质检模版管理
 		/// <summary>
 		/// 新增模版
@@ -345,6 +357,7 @@ namespace Hotline.Api.Controllers
 			await _qualityTemplate.UpdateAsync(template, HttpContext.RequestAborted);
 		}
 		#endregion
+
 		#region 质检词库管理
 
 		/// <summary>

+ 13 - 1
src/Hotline.Repository.SqlSugar/BaseRepository.cs

@@ -81,7 +81,19 @@ namespace Hotline.Repository.SqlSugar
             await Db.Deleteable<TEntity>(entities).ExecuteCommandAsync(cancellationToken);
         }
 
-        public async Task UpdateAsync(TEntity entity, CancellationToken cancellationToken = default)
+        public async Task RemoveRangeAsync(IEnumerable<TEntity> entities, bool? soft, CancellationToken cancellationToken = default)
+        {
+	        if (soft.HasValue && soft.Value)
+	        {
+		        await Db.Deleteable<TEntity>(entities).IsLogic().ExecuteCommandAsync("IsDeleted", true, "DeletionTime");
+	        }
+	        else
+	        {
+		        await Db.Deleteable<TEntity>(entities).ExecuteCommandAsync(cancellationToken);
+	        }
+        }
+
+		public async Task UpdateAsync(TEntity entity, CancellationToken cancellationToken = default)
         {
             await Db.Updateable(entity)
                 .IgnoreColumns(ignoreAllNullColumns: true)

+ 5 - 19
src/Hotline/Quality/QualityTemplateDetail.cs

@@ -19,28 +19,14 @@ namespace Hotline.Quality
 		public string TemplateId { get; set; }
 
 		/// <summary>
-		/// 质检项目名称
+		/// 质检项ID
 		/// </summary>
-		[SugarColumn(ColumnDescription = "质检项目名称")]
-		public string Name { get; set; }
+		[SugarColumn(ColumnDescription = "质检项ID")]
+		public string ItemId { get; set; }
 
-		/// <summary>
-		/// 扣分内容
-		/// </summary>
-		[SugarColumn(ColumnDescription = "扣分内容", ColumnDataType = "varchar(2000)")]
-		public string? Content { get; set; }
 
-		/// <summary>
-		/// 分值
-		/// </summary>
-		[SugarColumn(ColumnDescription = "分值")]
-		public int Grade { get; set; }
-
-		/// <summary>
-		/// 是否智能质检项目
-		/// </summary>
-		[SugarColumn(ColumnDescription = "是否智能质检项目  0  不是  1 是")]
-		public int IsIntelligent { get; set; }
+		[Navigate(NavigateType.OneToOne, nameof(ItemId))]
+		public QualityItem QualityItem { get; set; }
 
 		/// <summary>
 		/// 

+ 3 - 1
src/XF.Domain.Repository/IRepositoryWithTKey.cs

@@ -19,7 +19,9 @@ namespace XF.Domain.Repository
         Task RemoveAsync(TKey id, bool? soft = false, CancellationToken cancellationToken = default);
         Task RemoveAsync(Expression<Func<TEntity, bool>> predicate, bool? soft = false, CancellationToken cancellationToken = default);
         Task RemoveRangeAsync(IEnumerable<TEntity> entities, CancellationToken cancellationToken = default);
-        Task UpdateAsync(TEntity entity, CancellationToken cancellationToken = default);
+        Task RemoveRangeAsync(IEnumerable<TEntity> entities, bool? soft, CancellationToken cancellationToken = default);
+
+		Task UpdateAsync(TEntity entity, CancellationToken cancellationToken = default);
         Task UpdateRangeAsync(List<TEntity> entities, CancellationToken cancellationToken = default);
         Task<TEntity?> GetAsync(TKey id, CancellationToken cancellationToken = default);
         Task<TEntity?> GetAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default);