Selaa lähdekoodia

厂商机构和员工管理

jeremy 8 kuukautta sitten
vanhempi
commit
ff44183cc7

+ 21 - 0
src/VitalMixtureService/DBService/QueryAction/FacturyUserQueryAction.cs

@@ -0,0 +1,21 @@
+using MongoDB.Driver;
+using VitalService.Entities;
+
+namespace VitalService.QueryAction
+{
+    public class FacturyUserQueryAction : IQueryAction<FacturyUserEntity>
+    {
+        public async Task<FilterDefinition<FacturyUserEntity>> GetQuery(string keyword)
+        {
+            if (string.IsNullOrWhiteSpace(keyword))
+            {
+                return Builders<FacturyUserEntity>.Filter.Empty;
+            }
+            var bsonRegular = new MongoDB.Bson.BsonRegularExpression($".*{keyword}.*", "ig");
+            var keywordFilters = new List<FilterDefinition<FacturyUserEntity>>();
+            keywordFilters.Add(Builders<FacturyUserEntity>.Filter.Regex(f => f.FacturyCode, bsonRegular));
+            keywordFilters.Add(Builders<FacturyUserEntity>.Filter.Regex(f => f.FacturyName, bsonRegular));
+            return Builders<FacturyUserEntity>.Filter.Or(keywordFilters);
+        }
+    }
+}

+ 50 - 3
src/VitalMixtureService/DBService/Service/FacturyUserDBService.cs

@@ -80,7 +80,7 @@ namespace VitalService.Service
         public async Task<PageCollection<FacturyUserDTO>> GetFacturyOrgByPageDBAsync(GetFacturyOrgByPageDBRequest request)
         {
             var filter = await _facturyUserDBRepository.GetPageFilter(request);
-            filter &= Builders<FacturyUserEntity>.Filter.Where(f => f.FacturyCode == "");
+            filter &= Builders<FacturyUserEntity>.Filter.Where(f => f.FatherCode == "");
             var pageFilter = new DBPageRequest<FacturyUserEntity>
             {
                 PageIndex = request.PageIndex,
@@ -100,7 +100,7 @@ namespace VitalService.Service
         public async Task<PageCollection<FacturyUserDTO>> GetFacturyUserByPageDBAsync(GetFacturyUserByPageDBRequest request)
         {
             var filter = await _facturyUserDBRepository.GetPageFilter(request);
-            filter &= Builders<FacturyUserEntity>.Filter.Where(f => f.FacturyCode == request.FacturyOrgCode);
+            filter &= Builders<FacturyUserEntity>.Filter.Where(f => f.FatherCode == request.FacturyOrgCode);
             var pageFilter = new DBPageRequest<FacturyUserEntity>
             {
                 PageIndex = request.PageIndex,
@@ -131,7 +131,54 @@ namespace VitalService.Service
         /// <returns></returns>
         public async Task<bool> RemoveFacturyUserDBAsync(RemoveFacturyUserDBRequest request)
         {
-            return await _facturyUserDBRepository.DeleteOneAsync("Code", request.Code);
+            var code = request.Code;
+            if (!string.IsNullOrWhiteSpace(code))
+            {
+                var entity = await _facturyUserDBRepository.FindOneAsync(Builders<FacturyUserEntity>.Filter.Eq(f => f.Code, code));
+                if (entity != null && !entity.IsDelete)
+                {
+                    var filter = Builders<FacturyUserEntity>.Filter.Eq(f => f.Code, code);
+                    var update = Builders<FacturyUserEntity>.Update
+                        .Set(f => f.IsDelete, true)
+                        .Set(f => f.UpdateTime, DateTime.UtcNow);
+                    var res = await _facturyUserDBRepository.UpdateOneAsync(filter, update) > 0;
+                    if (res)
+                    {
+                        var removeUserCodes = new List<string> { };
+                        if (string.IsNullOrWhiteSpace(entity.FatherCode))
+                        {
+                            var filter2 = Builders<FacturyUserEntity>.Filter.Eq(f => f.FatherCode, code);
+                            var orgUseers = await _facturyUserDBRepository.FindAllAsync(filter2);
+                            if (orgUseers?.Any() ?? false)
+                            {
+                                removeUserCodes.AddRange(orgUseers.Select(x => x.Code));
+                            }
+                        }
+                        else
+                        {
+                            removeUserCodes.Add(code);
+                        }
+                        if (removeUserCodes.Any())
+                        {
+                            var filterUser = Builders<UserEntity>.Filter.In(x => x.Code, removeUserCodes);
+                            var userEntities = await _userDBRepository.FindAllAsync(filterUser);
+                            if (userEntities?.Any() ?? false)
+                            {
+                                foreach (var user in userEntities)
+                                {
+                                    var filterUser2 = Builders<UserEntity>.Filter.Eq(f => f.Code, user.Code);
+                                    var updateUser2 = Builders<UserEntity>.Update
+                                        .Set(f => f.FacturyUserCode, "")
+                                        .Set(f => f.UpdateTime, DateTime.UtcNow);
+                                    await _userDBRepository.UpdateOneAsync(filterUser2, updateUser2);
+                                }
+                            }
+                        }
+                    }
+                    return res;
+                }
+            }
+            return false;
         }
     }
 }

+ 10 - 7
src/VitalMixtureService/FrontService/Service/ExamService.cs

@@ -68,14 +68,17 @@ namespace VitalService.Service
             {
                 try
                 {
-                    await CreateJingQiExamPostHistoryAsync(new CreateJingQiExamPostHistoryRequest
+                    if (request.Key == "HEITCMC" || request.Key == "LNRZLNLPG" || request.Key == "HEIBiochemical" || request.Key == "HEIBloodRoutine" || request.Key == "HEIUrinalysis")
                     {
-                        Token = request.Token,
-                        ExamKey = dbRequest.Key,
-                        PhysicalExamNumber = dbRequest.PhysicalExamNumber,
-                        ExamData = JsonConvert.DeserializeObject<Dictionary<string, string>>(request.ExamData),
-                        ExamTime = DateTime.UtcNow,
-                    });
+                        await CreateJingQiExamPostHistoryAsync(new CreateJingQiExamPostHistoryRequest
+                        {
+                            Token = request.Token,
+                            ExamKey = dbRequest.Key,
+                            PhysicalExamNumber = dbRequest.PhysicalExamNumber,
+                            ExamData = JsonConvert.DeserializeObject<Dictionary<string, string>>(request.ExamData),
+                            ExamTime = DateTime.UtcNow,
+                        });
+                    }
                 }
                 catch (Exception ex)
                 {

+ 2 - 0
src/VitalMixtureService/FrontService/Service/FacturyUserService.cs

@@ -43,6 +43,7 @@ namespace VitalService.Service
         {
             var dbRequest = new UpdateFacturyUserDBRequest
             {
+                Code = request.Code,
                 FacturyUniqueCode = request.FacturyUniqueCode,
                 FacturyType = request.FacturyType,
                 FacturyCode = request.FacturyCode,
@@ -94,6 +95,7 @@ namespace VitalService.Service
         {
             var dbRequest = new GetFacturyUserByPageDBRequest
             {
+                FacturyOrgCode = request.FacturyOrgCode,
                 PageIndex = request.PageIndex,
                 PageSize = request.PageSize,
                 Keyword = request.Keyword,