From f99c1becb0bbde82796e15d27e11ac4965c56468 Mon Sep 17 00:00:00 2001
From: qwj <qwjzorro@163.com>
Date: 星期一, 28 八月 2023 09:28:39 +0800
Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/DocumentService

---
 DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs |  200 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 198 insertions(+), 2 deletions(-)

diff --git a/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs b/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
index 0365c1d..7a19cf5 100644
--- a/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
+++ b/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
@@ -1,9 +1,12 @@
 锘縰sing DocumentServiceAPI.Application.DocManage.Dtos;
 using DocumentServiceAPI.Application.DocManage.Services;
+using DocumentServiceAPI.Application.ProjectInfo.Services;
 using DocumentServiceAPI.Application.System.Services;
 using DocumentServiceAPI.Model.cyDocumentModel;
+using DocumentServiceAPI.Services.IService;
 using DocumentServiceAPI.Utility;
 using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.Extensions.Caching.Memory;
 using System.Linq.Expressions;
 
 namespace DocumentServiceAPI.Application.DocManage
@@ -17,13 +20,89 @@
         private readonly DocumentManageService _docManageService;
         private readonly OrganizationService _organizationService;
         private readonly FileManageService _fileManageService;
+        private readonly ProjectManageService _projectService;
+        private readonly DocAchievementService _achievementService;
+        private readonly IRedisCacheService _redisCache;
 
-        public DocumentManageAppService(DocClassificationService classService, DocumentManageService docService, OrganizationService orgService,FileManageService fileManageService)
+        public DocumentManageAppService(DocClassificationService classService, DocumentManageService docService, OrganizationService orgService,
+            FileManageService fileManageService, ProjectManageService projectService, DocAchievementService achievementService, IRedisCacheService redisCase)
         {
             _classificationService = classService;
             _docManageService = docService;
             _organizationService = orgService;
             _fileManageService = fileManageService;
+            _projectService = projectService;
+            _achievementService = achievementService;
+
+            _redisCache = redisCase;
+        }
+
+        /// <summary>
+        /// 缂栬緫鏂囨。鏃惰缃枃妗i攣瀹氱姸鎬�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns>
+        ///  true:璁剧疆閿佸畾鎴愬姛
+        ///  false:閿佸畾澶辫触锛屾枃妗e凡琚攣瀹�
+        /// </returns>
+        public bool SetDocLockStatus(DocLock_Submit_Dto model)
+        {
+            bool msg = true;
+            string key = model.tenant_id.ToString().PadLeft(4,'0') + "_" + model.id.ToString().PadLeft(8,'0');
+            if (_redisCache.Get<Document_Lock_Dto>(key) != null)
+            {
+                msg = false;
+            }
+            else
+            {
+                Document_Lock_Dto lk = new Document_Lock_Dto();
+                lk.doc_id = model.id;
+                lk.lock_time = DateTime.Now;
+                lk.lock_user = model.username;
+                lk.lock_user_id = model.userid;
+                lk.status = 0;
+                lk.tenant_id = model.tenant_id;
+                
+                var db= _redisCache.Add<Document_Lock_Dto>(key,lk ,-1);
+            }
+            return msg;
+        }
+
+        /// <summary>
+        /// 鏌ヨ椤圭洰淇℃伅
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        public async Task<IActionResult> PostProjectItemList(ProjectItemSearch search)
+        {
+            var data = await _projectService.GetListAsync();//.GetListAsync(c => c.TenantID == search.tenant_id);
+            if (data != null)
+            {
+                var list = data.Select(c => new ProjectItem_List_Dto()
+                {
+                     pro_id=c.ProjectId,
+                      pro_name=c.ProjectName
+                }).OrderBy(c => c.pro_name).ToList();
+                return new JsonResult(list);
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鏂囨。绫诲瀷鏌ヨ鏂囨。鍒楄〃
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        public async Task<IActionResult> PostDocumentItemList(DocumentSearch search)
+        {
+            var data = await _docManageService.GetListAsync(c => c.is_del == false && c.doc_code == search.Code && c.tenant_code == search.TenantID);
+            if (search.class_id > 0)
+            {
+                data = data.Where(c => c.classification_id == search.class_id).ToList();
+            }
+
+            return new JsonResult(data.Select(c => new { name= c.doc_name, c.id }).ToList());
         }
 
         /// <summary>
@@ -40,6 +119,11 @@
             {
                 expression = expression.And(t => t.classification_id == model.class_id);
             }
+            if (model.project_id.HasValue && model.project_id != 0)
+            {
+                expression = expression.And(t => t.project_id == model.project_id);
+            }
+
             if (model.id > 0)
             {
                 expression = expression.And(t => t.id != model.id);
@@ -86,7 +170,9 @@
                 var data = await _docManageService.Context.Queryable<Doc_Info>()
                         .Includes(c => c.DocClassification)
                         .Includes(c=>c.DocOrganization)
+                        .Includes(c=>c.DocProject)
                         .Where(expression)
+                        .OrderByDescending(c=>c.id)
                         .ToPageListAsync(page.PageIndex, page.PageSize, total);
 
                 if (data != null && total > 0)
@@ -101,7 +187,7 @@
                         org_id = c.org_id,
                         org_name = c.DocOrganization?.UnitName,
                         project_id = c.project_id,
-                        project_name = "",
+                        project_name = c.DocProject?.ProjectName,                        
                         status = c.status
                     }).ToList();
 
@@ -303,5 +389,115 @@
         }
 
         #endregion
+
+        #region 涓氱哗绠$悊
+
+        /// <summary>
+        /// 鏍规嵁鍒嗛〉鏉′欢鏌ヨ鍒嗛〉鏁版嵁
+        /// </summary>
+        /// <param name="page"></param>
+        /// <returns></returns>
+        public async Task<IActionResult> PostAchievementListPage(DocumentPageSearch page)
+        {
+            PageResult<Achievement_List_Dto> result = new PageResult<Achievement_List_Dto>();
+
+            try
+            {
+                Expression<Func<Doc_Achievement, bool>> expression = t => true;
+
+                expression = expression.And(t => t.tenant_code == page.TenantID && t.status == 1);
+                if (page.ClassCode.HasValue)
+                {
+                    expression = expression.And(t => t.classification_id == page.ClassCode);
+                }
+                if (!string.IsNullOrEmpty(page.Name))
+                {
+                    expression = expression.And(t => t.achievement_name.Contains(page.Name));
+                }
+                
+                RefAsync<int> total = 0;
+                var data = await _achievementService.Context.Queryable<Doc_Achievement>()
+                        .Includes(c => c.DocClassification)
+                        .Includes(c => c.DocProject)
+                        .Where(expression)
+                        .OrderByDescending(c => c.id)
+                        .ToPageListAsync(page.PageIndex, page.PageSize, total);
+
+                if (data != null && total > 0)
+                {
+                    result.Items = data.Select(c => new Achievement_List_Dto()
+                    {
+                        add_time = c.add_time,
+                        class_id=c.classification_id,
+                        class_name = c.DocClassification?.doc_classification,
+                        id = c.id,
+                        project_id = c.project_id,
+                        project_name = c.DocProject?.ProjectName,
+                         fkpz=c.fkpz_url,
+                          hjzs=c.hjzs_url,
+                           ht=c.ht_url,
+                            yhpj=c.yhpj_url,
+                             ysbg=c.ysbg_url,
+                              zbtzs=c.zbtzs_url,
+                        status = c.status
+                    }).ToList();
+
+                }
+                result.PageIndex = page.PageIndex;
+                result.PageSize = page.PageSize;
+                result.TotalCount = total;
+            }
+            catch (Exception er)
+            {
+                Log.Error(er.Message, er);
+            }
+
+            return new JsonResult(result);
+        }
+
+        /// <summary>
+        /// 妫�鏌ラ噸澶�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public async Task<bool> CheckDocAchievementDuplicate(Document_Submit_Dto model)
+        {
+            var msg = false;
+            var ck = await _achievementService.GetFirstAsync(c=>c.status==1 && c.tenant_code==model.tenant_id 
+            && c.project_id==model.project_id && c.classification_id==c.classification_id);
+            if (ck != null)
+            {
+                msg = true;
+            }
+            return msg;
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        public async Task<bool> PostAddDocAchievement(Achievement_Submit_Dto info)
+        {
+            Doc_Achievement doc = new Doc_Achievement();
+            doc.add_time = DateTime.Now;
+            doc.classification_id = info.class_id;
+            doc.project_id = info.project_id;
+            doc.achievement_name = info.name;
+
+            doc.fkpz_url = info.fkpz;
+            doc.hjzs_url = info.hjzs;
+            doc.ht_url = info.ht;            
+            doc.yhpj_url = info.yhpj;
+            doc.ysbg_url = info.ysbg;
+            doc.zbtzs_url = info.zbtzs;
+
+            doc.status = 1;
+            doc.tenant_code = info.tenant_id;
+
+            return await _achievementService.InsertAsync(doc);
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.9.1