diff --git a/BasicData/Tnb.BasicData/BasProcessService.cs b/BasicData/Tnb.BasicData/BasProcessService.cs index 725de247..db43c8ae 100644 --- a/BasicData/Tnb.BasicData/BasProcessService.cs +++ b/BasicData/Tnb.BasicData/BasProcessService.cs @@ -68,7 +68,7 @@ namespace Tnb.BasicData if (organize != null) { var whereExpr = Expressionable.Create(); - var curProcessIds = await db.Queryable().Where(it => it.station_id == organize.Id).Select(it => it.process_id).ToListAsync(); + var curProcessIds = await db.Queryable().Where(it => it.station_id == organize.Id).Select(it => it.process_id).Distinct().ToListAsync(); if (curProcessIds?.Count > 0) { whereExpr = whereExpr.And((a, b) => curProcessIds.Contains(a.id)).Or((a, b) => string.IsNullOrEmpty(b.process_id)); diff --git a/system/Tnb.Systems/Permission/DepartmentService.cs b/system/Tnb.Systems/Permission/DepartmentService.cs index 5d45b5a7..3dc97348 100644 --- a/system/Tnb.Systems/Permission/DepartmentService.cs +++ b/system/Tnb.Systems/Permission/DepartmentService.cs @@ -472,7 +472,9 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra { var dic = _repository.GetList().ToDictionary(x => x.FullName, x => x.Id); var procList = jsonObj.Value("rowprocess"); - var basProcessStationList = procList.Select(x => new BasProcessStation + var pids = procList.Select(x => x.Value("id")).Distinct().ToList(); + var dbProcIds = await _repository.AsSugarClient().Queryable().Where(it => pids.Contains(it.process_id)).Select(it => it.process_id).ToListAsync(); + var basProcessStationList = procList.Where(x => !dbProcIds.Contains(x.Value("id"))).Select(x => new BasProcessStation { id = SnowflakeIdHelper.NextId(), org_id = dic.ContainsKey(x.Value("org_id")) ? dic[x.Value("org_id")] : "", @@ -483,7 +485,11 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra create_id = _userManager.UserId, create_time = DateTime.Now, }).ToList(); - isOK = await _repository.AsSugarClient().Insertable(basProcessStationList).ExecuteCommandAsync(); + //数据库中不存在则插入 + if (basProcessStationList?.Count > 0) + { + isOK = await _repository.AsSugarClient().Insertable(basProcessStationList).ExecuteCommandAsync(); + } //工位与工序解绑操作 //>1 根据传递的工位Id获取绑定过的工序Id var processIds = await _repository.AsSugarClient().Queryable().Where(it => it.station_id == input.id).Select(it => it.process_id).ToListAsync();