From 6b24ae48c664c25676672ece72d134474c6af817 Mon Sep 17 00:00:00 2001
From: liaoxujun@qq.com <liaoxujun@qq.com>
Date: 星期二, 12 九月 2023 15:00:23 +0800
Subject: [PATCH] 消息发送
---
DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs | 395 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 308 insertions(+), 87 deletions(-)
diff --git a/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs b/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
index fd87b88..7a19cf5 100644
--- a/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
+++ b/DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
@@ -1,8 +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
@@ -16,15 +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>
@@ -35,7 +113,22 @@
public async Task<bool> CheckNameDuplicate(Document_Submit_Dto model)
{
var msg = false;
- var ck =await _docManageService.GetFirstAsync(c=>c.doc_name==model.name && c.doc_code==model.code && c.classification_id==model.class_id && c.id!=model.id);
+ Expression<Func<Doc_Info, bool>> expression = t => true;
+ expression = expression.And(c => c.tenant_code == model.tenant_id && c.doc_name == model.name && c.doc_code == model.code );
+ if (model.class_id.HasValue && model.class_id!=0)
+ {
+ 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);
+ }
+ var ck =await _docManageService.GetFirstAsync(expression);
if (ck != null)
{
msg = true;
@@ -56,7 +149,7 @@
{
Expression<Func<Doc_Info, bool>> expression = t => true;
- expression = expression.And(t => t.doc_code == page.Code && t.is_del==false);
+ expression = expression.And(t =>t.tenant_code==page.TenantID && t.doc_code == page.Code && t.is_del==false);
if (page.ClassCode.HasValue)
{
expression = expression.And(t => t.classification_id == page.ClassCode);
@@ -77,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)
@@ -90,9 +185,9 @@
doc_name = c.doc_name,
id = c.id,
org_id = c.org_id,
- org_name = c.DocOrganization.UnitName,
+ org_name = c.DocOrganization?.UnitName,
project_id = c.project_id,
- project_name = "",
+ project_name = c.DocProject?.ProjectName,
status = c.status
}).ToList();
@@ -107,6 +202,24 @@
}
return new JsonResult(result);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鏂囨。鍙锋煡璇�
+ /// </summary>
+ /// <param name="search"></param>
+ /// <returns></returns>
+ public async Task<IActionResult> PostDocumentInfo(DocumentSearch search)
+ {
+ var data = await _docManageService.GetFirstAsync(c => c.is_del == false && c.id == search.ID && c.tenant_code==search.TenantID);
+ if (data != null)
+ {
+ var list = await _fileManageService.GetListAsync(c =>c.status==1 && c.doc_id == search.ID);
+ Document_Info_Dto info = new Document_Info_Dto(data, list.Select(c => new FileInfo_List_Dto(c)).OrderBy(c => c.sort).ToList());
+ return new JsonResult(info);
+ }
+
+ return null;
}
/// <summary>
@@ -131,9 +244,9 @@
var id =await _docManageService.InsertReturnIdentityAsync(doc);
if (id > 0)
{
- if(info.files!=null&& info.files.Count > 0)
+ if(info.newfiles!=null&& info.newfiles.Count > 0)
{
- foreach (var item in info.files)
+ foreach (var item in info.newfiles)
{
File_Info file = new File_Info();
file.doc_id = id;
@@ -148,6 +261,7 @@
file.uptime = DateTime.Now;
file.up_userid = item.up_userid;
file.up_username = item.up_username;
+ file.sort = item.sort;
await _fileManageService.InsertAsync(file);
}
}
@@ -156,45 +270,90 @@
return msg;
}
-
-
-
-
- /// <summary>
- /// 鏍规嵁绫诲瀷鏌ヨ鏁版嵁
- /// </summary>
- /// <param name="page"></param>
- /// <returns></returns>
- public async Task<IActionResult> PostItemList(DocClassificationSearch page)
- {
- var data = await _classificationService.GetListAsync(c => c.status == 1 && c.parent_code == page.Code);
- return new JsonResult(data);
- }
-
-
/// <summary>
/// 淇敼鏁版嵁
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
- public async Task<IActionResult> PostEdtInfo(Classification_Submit_Dto info)
+ public async Task<bool> PostEdtDocumentInfo(Document_Submit_Dto info)
{
- var msg = false;
- var model = await _classificationService.GetByIdAsync(info.id);
- if (model != null)
- {
- model.add_time = DateTime.Now;
- model.doc_classification = info.name;
- model.status = info.status;
+ bool msg = false;
- msg = await _classificationService.UpdateAsync(model);
+ var doc= _docManageService.GetById(info.id);
+ if (info.tenant_id == doc.tenant_code && doc.is_del==false)
+ {
+ doc.add_time = DateTime.Now;
+ doc.classification_id = info.class_id;
+ doc.doc_name = info.name;
+ doc.org_id = info.org_id;
+ doc.status = info.status;
+
+ if (await _docManageService.UpdateAsync(doc))
+ {
+ //鏂版彁浜ょ殑鏂囦欢
+ if (info.newfiles != null && info.newfiles.Count > 0)
+ {
+ foreach (var item in info.newfiles)
+ {
+ File_Info file = new File_Info();
+ file.doc_id = doc.id;
+ file.filenewname = item.filenewname.Length > 40 ? item.filenewname.Substring(item.filenewname.Length - 40) : item.filenewname;
+ file.fileoldname = item.fileoldname.Length > 40 ? item.fileoldname.Substring(item.fileoldname.Length - 40) : item.fileoldname;
+ file.filepath = item.filepath;
+ file.fileservername = item.fileservername;
+ file.filesize = item.filesize;
+ file.filetype = item.filetype;
+ file.status = 1;
+ file.suffix = item.suffix;
+ file.uptime = DateTime.Now;
+ file.up_userid = item.up_userid;
+ file.up_username = item.up_username;
+ file.sort = item.sort;
+ await _fileManageService.InsertAsync(file);
+ }
+ }
+
+ //淇敼璧勬簮鍚嶇О鐨勬枃浠�
+ if (info.editfiles != null && info.editfiles.Count > 0)
+ {
+ foreach (var item in info.editfiles)
+ {
+ var file= _fileManageService.GetById(item.id);
+ if (file != null && file.doc_id==doc.id)
+ {
+ file.fileoldname = file.filenewname;
+ file.filenewname = item.filenewname.Length > 40 ? item.filenewname.Substring(item.filenewname.Length - 40) : item.filenewname;
+ file.uptime = DateTime.Now;
+ file.sort = item.sort;
+ await _fileManageService.UpdateAsync(file);
+ }
+ }
+ }
+
+ //鍒犻櫎璧勬簮
+ if (info.delfiles != null && info.delfiles.Count > 0)
+ {
+ foreach (var item in info.delfiles)
+ {
+ var file = _fileManageService.GetById(item);
+ if (file != null && file.doc_id == doc.id)
+ {
+ file.status = 0;
+ file.uptime = DateTime.Now;
+ await _fileManageService.UpdateAsync(file);
+ }
+ }
+ }
+
+ msg = true;
+ }
}
- return new JsonResult(msg);
+ return msg;
}
/// <summary>
- /// 鍒犻櫎鏁版嵁
+ /// 鍒犻櫎鏂囨。鏁版嵁
/// </summary>
/// <param name="doc"></param>
/// <returns></returns>
@@ -214,69 +373,131 @@
return new JsonResult(msg);
}
+ #region 鏂囨。鐨勬枃浠�
+ /// <summary>
+ /// 鏍规嵁鏂囨。鍙锋煡璇㈡枃浠舵暟鎹�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public async Task<IActionResult> GetDocumentFilesList(int id)
+ {
+ var data = await _fileManageService.GetListAsync(c => c.status == 1 && c.doc_id == id);
+ var list = data.Select(c => new FileInfo_List_Dto(c)).OrderBy(c => c.sort).ToList();
+
+ return new JsonResult(list);
+ }
+
+ #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<IActionResult> PostAddFilesInfo(Classification_Submit_Dto info)
+ public async Task<bool> PostAddDocAchievement(Achievement_Submit_Dto info)
{
- Doc_Classification doc = new Doc_Classification();
+ Doc_Achievement doc = new Doc_Achievement();
doc.add_time = DateTime.Now;
- doc.doc_classification = info.name;
- doc.doc_classification_code = "";
- doc.is_system = false;
- doc.parent_code = info.code;
- doc.sort_id = 99;
- doc.status = info.status;
+ 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;
- var msg = await _classificationService.InsertAsync(doc);
- return new JsonResult(msg);
+ return await _achievementService.InsertAsync(doc);
}
- /// <summary>
- /// 淇敼鏁版嵁
- /// </summary>
- /// <param name="info"></param>
- /// <returns></returns>
- public async Task<IActionResult> PostEdtFileInfo(Classification_Submit_Dto info)
- {
- var msg = false;
- var model = await _classificationService.GetByIdAsync(info.id);
- if (model != null)
- {
- model.add_time = DateTime.Now;
- model.doc_classification = info.name;
- model.status = info.status;
-
- msg = await _classificationService.UpdateAsync(model);
- }
-
- return new JsonResult(msg);
- }
-
- /// <summary>
- /// 鍒犻櫎鏁版嵁
- /// </summary>
- /// <param name="doc"></param>
- /// <returns></returns>
- public async Task<IActionResult> PostDelFileInfo(Document_Submit_Dto doc)
- {
- bool msg = false;
- //鍋囧垹闄�
- var model = await _docManageService.GetByIdAsync(doc.id);
- if (model != null)
- {
- if (model.tenant_code == doc.tenant_id && !model.is_del)
- {
- model.is_del = true;
- msg = await _docManageService.UpdateAsync(model);
- }
- }
- return new JsonResult(msg);
- }
+ #endregion
}
}
--
Gitblit v1.9.1