username@email.com
2023-08-16 65d00bdb20608516fe2c6ed880162aa3d314cea9
Merge branch 'master' of http://47.108.235.38:8080/r/DocumentService

# Conflicts:
# DocumentServiceAPI.Application/DocumentServiceAPI.Application.xml
1 文件已重命名
7个文件已修改
5个文件已添加
1072 ■■■■■ 已修改文件
DocumentServiceAPI.Application/DocManage/DocClassificationManageAppService.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocManage/Dtos/Classification_Submit_Dto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocManage/Dtos/Document_List_Dto.cs 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocManage/Services/DocClassificationService.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocManage/Services/DocumentManageService.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocumentServiceAPI.Application.xml 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/System/OrganizationAppService.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Model/cyDocumentModel/Doc_Classification.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Model/cyDocumentModel/Doc_Info.cs 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Utility/PageBaseSearch.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Utility/UtilitySearch.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Web.Entry/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DocumentServiceAPI.Application/DocManage/DocClassificationManageAppService.cs
File was renamed from DocumentServiceAPI.Application/DocManage/DocManageAppService.cs
@@ -8,11 +8,11 @@
    /// <summary>
    /// 资料分类管理
    /// </summary>
    public class DocManageAppService : IDynamicApiController
    public class DocClassificationManageAppService : IDynamicApiController
    {
        private readonly DocClassificationService _classificationService;
        public DocManageAppService(DocClassificationService classificationService)
        public DocClassificationManageAppService(DocClassificationService classificationService)
        {
            _classificationService = classificationService;
        }
@@ -55,6 +55,17 @@
        }
        /// <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>
@@ -69,7 +80,7 @@
            doc.parent_code = info.code;
            doc.sort_id = 99;
            doc.status = info.status;
            doc.tenant_code = "";
            doc.tenant_code = info.tenant_id;
            
            var msg =await _classificationService.InsertAsync(doc);
            return new JsonResult(msg);
DocumentServiceAPI.Application/DocManage/DocumentManageAppService.cs
New file
@@ -0,0 +1,282 @@
using DocumentServiceAPI.Application.DocManage.Dtos;
using DocumentServiceAPI.Application.DocManage.Services;
using DocumentServiceAPI.Application.System.Services;
using DocumentServiceAPI.Model.cyDocumentModel;
using DocumentServiceAPI.Utility;
using System.Linq.Expressions;
namespace DocumentServiceAPI.Application.DocManage
{
    /// <summary>
    /// 资料管理
    /// </summary>
    public class DocumentManageAppService : IDynamicApiController
    {
        private readonly DocClassificationService _classificationService;
        private readonly DocumentManageService _docManageService;
        private readonly OrganizationService _organizationService;
        private readonly FileManageService _fileManageService;
        public DocumentManageAppService(DocClassificationService classService, DocumentManageService docService, OrganizationService orgService,FileManageService fileManageService)
        {
            _classificationService = classService;
            _docManageService = docService;
            _organizationService = orgService;
            _fileManageService = fileManageService;
        }
        /// <summary>
        /// 检查名称重复
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        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);
            if (ck != null)
            {
                msg = true;
            }
            return msg;
        }
        /// <summary>
        /// 根据分页条件查询分页数据
        /// </summary>
        /// <param name="page"></param>
        /// <returns></returns>
        public async Task<IActionResult> PostListPage(DocumentPageSearch page)
        {
            PageResult<Document_List_Dto> result = new PageResult<Document_List_Dto>();
            try
            {
                Expression<Func<Doc_Info, bool>> expression = t => true;
                expression = expression.And(t => t.doc_code == page.Code && t.is_del==false);
                if (page.ClassCode.HasValue)
                {
                    expression = expression.And(t => t.classification_id == page.ClassCode);
                }
                if (!string.IsNullOrEmpty(page.Name))
                {
                    expression = expression.And(t => t.doc_name.Contains(page.Name));
                }
                if (page.Status.HasValue)
                {
                    expression = expression.And(t => t.status == page.Status);
                }
                if (page.OrganizationCode.HasValue)
                {
                    expression = expression.And(t => t.org_id == page.OrganizationCode);
                }
                RefAsync<int> total = 0;
                var data = await _docManageService.Context.Queryable<Doc_Info>()
                        .Includes(c => c.DocClassification)
                        .Includes(c=>c.DocOrganization)
                        .Where(expression)
                        .ToPageListAsync(page.PageIndex, page.PageSize, total);
                if (data != null && total > 0)
                {
                    result.Items = data.Select(c => new Document_List_Dto()
                    {
                        add_time = c.add_time,
                        class_id = c.classification_id,
                        class_name = c.DocClassification?.doc_classification,
                        doc_name = c.doc_name,
                        id = c.id,
                        org_id = c.org_id,
                        org_name = c.DocOrganization.UnitName,
                        project_id = c.project_id,
                        project_name = "",
                        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="info"></param>
        /// <returns></returns>
        public async Task<bool> PostAddDocumentInfo(Document_Submit_Dto info)
        {
            bool msg = false;
            Doc_Info doc = new Doc_Info();
            doc.add_time = DateTime.Now;
            doc.classification_id = info.class_id;
            doc.doc_code = info.code;
            doc.doc_name = info.name;
            doc.is_del = false;
            doc.org_id = info.org_id;
            doc.status = info.status;
            doc.tenant_code = info.tenant_id;
            var id =await _docManageService.InsertReturnIdentityAsync(doc);
            if (id > 0)
            {
                if(info.files!=null&& info.files.Count > 0)
                {
                    foreach (var item in info.files)
                    {
                        File_Info file = new File_Info();
                        file.doc_id = 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;
                        await _fileManageService.InsertAsync(file);
                    }
                }
                msg = true;
            }
            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)
        {
            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> PostDelInfo(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);
        }
        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public async Task<IActionResult> PostAddFilesInfo(Classification_Submit_Dto info)
        {
            Doc_Classification doc = new Doc_Classification();
            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.tenant_code = info.tenant_id;
            var msg = await _classificationService.InsertAsync(doc);
            return new JsonResult(msg);
        }
        /// <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);
        }
    }
}
DocumentServiceAPI.Application/DocManage/Dtos/Classification_Submit_Dto.cs
@@ -1,15 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DocumentServiceAPI.Application.DocManage.Dtos
namespace DocumentServiceAPI.Application.DocManage.Dtos
{
    public class Classification_Submit_Dto
    {
        public int id { get; set; }
        public int tenant_id { get; set; }
        public string name { get; set; }
        /// <summary>
DocumentServiceAPI.Application/DocManage/Dtos/Document_List_Dto.cs
New file
@@ -0,0 +1,137 @@
using DocumentServiceAPI.Model.cyDocumentModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DocumentServiceAPI.Application.DocManage.Dtos
{
    /// <summary>
    /// 文档信息
    /// </summary>
    public class Document_List_Dto
    {
        /// <summary>
        /// 添加/更新时间
        /// </summary>
        public DateTime add_time { get; set; }
        /// <summary>
        /// 状态
        /// </summary>
        public int status { get; set; }
        public int id { get; set; }
        /// <summary>
        /// 归属分类(子类型)
        /// </summary>
        public int? class_id { get; set; }
        public string class_name { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string doc_name { get; set; }
        /// <summary>
        /// 单位ID
        /// </summary>
        public int? org_id { get; set; }
        public string org_name { get; set; }
        /// <summary>
        /// 项目id
        /// </summary>
        public int? project_id { get; set; }
        public string project_name { get; set; }
    }
    /// <summary>
    /// 提交文档信息
    /// </summary>
    public class Document_Submit_Dto
    {
        public int id { get; set; }
        public int tenant_id { get; set; }
        /// <summary>
        /// 分类id
        /// </summary>
        public int class_id { get; set; }
        public string name { get; set; }
        /// <summary>
        /// 文档编码
        /// </summary>
        public string code { get; set; }
        /// <summary>
        /// 投标单位
        /// </summary>
        public int org_id { get; set; }
        public int status { get; set; }
        public List<DocumentFile_Submit_Dto> files { get; set; }
    }
    /// <summary>
    /// 提交文件信息
    /// </summary>
    public class DocumentFile_Submit_Dto
    {
        /// <summary>
        /// 原文件名称
        /// </summary>
        public string fileoldname { get; set; }
        /// <summary>
        /// 新名称
        /// </summary>
        public string filenewname { get; set; }
        /// <summary>
        /// 保存文件名称
        /// </summary>
        public string fileservername { get; set; }
        /// <summary>
        /// 文件大小(字节)
        /// </summary>
        public int filesize { get; set; }
        /// <summary>
        /// 后缀名
        /// </summary>
        public string suffix { get; set; }
        /// <summary>
        /// 文档ID
        /// </summary>
        public int doc_id { get; set; }
        /// <summary>
        /// 文件类型
        /// </summary>
        public string filetype { get; set; }
        /// <summary>
        /// 上传人员
        /// </summary>
        public int up_userid { get; set; }
        /// <summary>
        /// 上传人员
        /// </summary>
        public string up_username { get; set; }
        public string filepath { get; set; }
    }
}
DocumentServiceAPI.Application/DocManage/Services/DocClassificationService.cs
New file
@@ -0,0 +1,35 @@
using DocumentServiceAPI.Core;
using DocumentServiceAPI.Model.cyDocumentModel;
using DocumentServiceAPI.Utility;
namespace DocumentServiceAPI.Application.DocManage.Services
{
    public class DocClassificationPageSearch : PageBaseSearch
    {
        /// <summary>
        /// 分类代码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 状态
        /// </summary>
        public int? Status { get; set; }
    }
    public class DocClassificationSearch : BaseSearch
    {
        /// <summary>
        /// 分类代码
        /// </summary>
        public string Code { get; set; }
    }
    /// <summary>
    /// 文档分类
    /// </summary>
    public class DocClassificationService : BaseRepository<Doc_Classification>, ITransient
    {
    }
}
DocumentServiceAPI.Application/DocManage/Services/DocumentManageService.cs
@@ -4,7 +4,10 @@
namespace DocumentServiceAPI.Application.DocManage.Services
{
    public class DocClassificationPageSearch : PageBaseSearch
    /// <summary>
    /// 文档分页查询条件
    /// </summary>
    public class DocumentPageSearch : PageBaseSearch
    {
        /// <summary>
        /// 分类代码
@@ -12,15 +15,46 @@
        public string Code { get; set; }
        /// <summary>
        /// 类别ID
        /// </summary>
        public int? ClassCode { get; set; }
        /// <summary>
        /// 文档名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 单位ID
        /// </summary>
        public int? OrganizationCode { get; set; }
        /// <summary>
        /// 状态
        /// </summary>
        public int? Status { get; set; }
    }
    public class DocumentSearch : BaseSearch
    {
    /// <summary>
    /// 文档分类
        /// 分类代码
    /// </summary>
    public class DocClassificationService : BaseRepository<Doc_Classification>, ITransient
        public string Code { get; set; }
    }
    /// <summary>
    /// 文档管理
    /// </summary>
    public class DocumentManageService : BaseRepository<Doc_Info>, ITransient
    {
    }
    /// <summary>
    /// 文件管理
    /// </summary>
    public class FileManageService : BaseRepository<File_Info>, ITransient
    {
    }
}
DocumentServiceAPI.Application/DocumentServiceAPI.Application.xml
@@ -4,49 +4,229 @@
        <name>DocumentServiceAPI.Application</name>
    </assembly>
    <members>
        <member name="T:DocumentServiceAPI.Application.DocManage.DocManageAppService">
        <member name="T:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService">
            <summary>
            资料分类管理
            </summary>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocManageAppService.GetInfo(System.Int32)">
        <member name="M:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService.GetInfo(System.Int32)">
            <summary>
            根据ID查询对象
            </summary>
            <param name="id"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocManageAppService.PostListPage(DocumentServiceAPI.Application.DocManage.Services.DocClassificationPageSearch)">
        <member name="M:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService.PostListPage(DocumentServiceAPI.Application.DocManage.Services.DocClassificationPageSearch)">
            <summary>
            根据分页条件查询分页数据
            </summary>
            <param name="page"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocManageAppService.PostAddInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
        <member name="M:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService.PostItemList(DocumentServiceAPI.Application.DocManage.Services.DocClassificationSearch)">
            <summary>
            根据类型查询数据
            </summary>
            <param name="page"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService.PostAddInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
            <summary>
            添加数据
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocManageAppService.PostEdtInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
        <member name="M:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService.PostEdtInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
            <summary>
            修改数据
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocManageAppService.PostDelInfo(System.Int32)">
        <member name="M:DocumentServiceAPI.Application.DocManage.DocClassificationManageAppService.PostDelInfo(System.Int32)">
            <summary>
            删除数据
            </summary>
            <param name="id"></param>
            <returns></returns>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.DocumentManageAppService">
            <summary>
            资料管理
            </summary>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.CheckNameDuplicate(DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto)">
            <summary>
            检查名称重复
            </summary>
            <param name="model"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostListPage(DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch)">
            <summary>
            根据分页条件查询分页数据
            </summary>
            <param name="page"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostAddDocumentInfo(DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto)">
            <summary>
            添加数据
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostItemList(DocumentServiceAPI.Application.DocManage.Services.DocClassificationSearch)">
            <summary>
            根据类型查询数据
            </summary>
            <param name="page"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostEdtInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
            <summary>
            修改数据
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostDelInfo(DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto)">
            <summary>
            删除数据
            </summary>
            <param name="doc"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostAddFilesInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
            <summary>
            添加数据
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostEdtFileInfo(DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto)">
            <summary>
            修改数据
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:DocumentServiceAPI.Application.DocManage.DocumentManageAppService.PostDelFileInfo(DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto)">
            <summary>
            删除数据
            </summary>
            <param name="doc"></param>
            <returns></returns>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Classification_Submit_Dto.code">
            <summary>
            父级编码
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto">
            <summary>
            文档信息
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto.add_time">
            <summary>
            添加/更新时间
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto.status">
            <summary>
            状态
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto.class_id">
            <summary>
            归属分类(子类型)
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto.doc_name">
            <summary>
            名称
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto.org_id">
            <summary>
            单位ID
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_List_Dto.project_id">
            <summary>
            项目id
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto">
            <summary>
            提交文档信息
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto.class_id">
            <summary>
            分类id
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto.code">
            <summary>
            文档编码
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.Document_Submit_Dto.org_id">
            <summary>
            投标单位
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto">
            <summary>
            提交文件信息
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.fileoldname">
            <summary>
            原文件名称
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.filenewname">
            <summary>
            新名称
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.fileservername">
            <summary>
            保存文件名称
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.filesize">
            <summary>
            文件大小(字节)
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.suffix">
            <summary>
            后缀名
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.doc_id">
            <summary>
            文档ID
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.filetype">
            <summary>
            文件类型
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.up_userid">
            <summary>
            上传人员
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Dtos.DocumentFile_Submit_Dto.up_username">
            <summary>
            上传人员
            </summary>           
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocClassificationPageSearch.Code">
@@ -59,9 +239,59 @@
            状态
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocClassificationSearch.Code">
            <summary>
            分类代码
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Services.DocClassificationService">
            <summary>
            文档分类
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch">
            <summary>
            文档分页查询条件
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch.Code">
            <summary>
            分类代码
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch.ClassCode">
            <summary>
            类别ID
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch.Name">
            <summary>
            文档名称
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch.OrganizationCode">
            <summary>
            单位ID
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocumentPageSearch.Status">
            <summary>
            状态
            </summary>
        </member>
        <member name="P:DocumentServiceAPI.Application.DocManage.Services.DocumentSearch.Code">
            <summary>
            分类代码
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Services.DocumentManageService">
            <summary>
            文档管理
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.DocManage.Services.FileManageService">
            <summary>
            文件管理
            </summary>
        </member>
        <member name="T:DocumentServiceAPI.Application.ProjectInfo.ProjectInfoController">
@@ -632,6 +862,13 @@
            员工提醒 
            </summary>
        </member>
        <member name="M:DocumentServiceAPI.Application.System.OrganizationAppService.GetOrgItemList(System.Int32)">
            <summary>
            查询公司Item数据
            </summary>
            <param name="code">租户id</param>
            <returns></returns>
        </member>
        <member name="T:DocumentServiceAPI.Application.System.Services.OrganizationService">
            <summary>
            投标单位操作类
DocumentServiceAPI.Application/System/OrganizationAppService.cs
@@ -1,11 +1,7 @@
using DocumentServiceAPI.Application.System.Services;
using DocumentServiceAPI.Application.UserAndLogin.Services;
using DocumentServiceAPI.Model;
using DocumentServiceAPI.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DocumentServiceAPI.Application.System
{
@@ -17,10 +13,23 @@
    public class OrganizationAppService : IDynamicApiController
    {
        private readonly OrganizationService _businessService;
        private readonly UserService _userServer;
        public OrganizationAppService(OrganizationService businessService)
        public OrganizationAppService(OrganizationService businessService, UserService userService)
        {
            _businessService = businessService;
            _userServer = userService;
        }
        /// <summary>
        /// 查询公司Item数据
        /// </summary>
        /// <param name="code">租户id</param>
        /// <returns></returns>
        public async Task<IActionResult> GetOrgItemList(int code)
        {
            var data = await _userServer.GetUserUnitList(code);
            return new JsonResult(data);
        }
        public IActionResult GetInfo()
DocumentServiceAPI.Model/cyDocumentModel/Doc_Classification.cs
@@ -44,6 +44,11 @@
        /// </summary>
        public bool is_system { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        public int sort_id { get; set; }
    }
    public abstract class Doc_Base
@@ -51,7 +56,7 @@
        /// <summary>
        /// 租户标识
        /// </summary>           
        public string tenant_code { get; set; }
        public int tenant_code { get; set; }
        /// <summary>
        /// 添加/更新时间
@@ -63,9 +68,5 @@
        /// </summary>           
        public int status { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        public int sort_id { get; set; }
    }
}
DocumentServiceAPI.Model/cyDocumentModel/Doc_Info.cs
New file
@@ -0,0 +1,149 @@
using SqlSugar;
namespace DocumentServiceAPI.Model.cyDocumentModel
{
    ///<summary>
    ///文档管理类
    ///</summary>
    [SugarTable("t_document")]
    public class Doc_Info : Doc_Base
    {
        public Doc_Info()
        {
        }
        /// <summary>
        /// id
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int id { get; set; }
        /// <summary>
        /// 文档分类编码
        /// </summary>
        public string doc_code { get; set; }
        /// <summary>
        /// 归属分类(子类型)
        /// </summary>
        public int? classification_id { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string doc_name { get; set; }
        /// <summary>
        /// 单位ID
        /// </summary>
        public int? org_id { get; set; }
        /// <summary>
        /// 项目id
        /// </summary>
        public int? project_id { get; set; }
        /// <summary>
        /// 删除标记
        /// </summary>
        public bool is_del { get; set; }
        /// <summary>
        /// 关联分类
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        [Navigate(NavigateType.OneToOne, nameof(classification_id))]
        public Doc_Classification? DocClassification { get; set; }
        /// <summary>
        /// 关联投标单位
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        [Navigate(NavigateType.OneToOne, nameof(org_id))]
        public Document_TenderUnit? DocOrganization { get; set; }
    }
    ///<summary>
    ///文件信息类
    ///</summary>
    [SugarTable("t_doc_file")]
    public class File_Info
    {
        /// <summary>
        /// id
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int id { get; set; }
        /// <summary>
        /// 原文件名称
        /// </summary>
        public string fileoldname { get; set; }
        /// <summary>
        /// 新名称
        /// </summary>
        public string filenewname { get; set; }
        /// <summary>
        /// 保存文件名称
        /// </summary>
        public string fileservername { get; set; }
        /// <summary>
        /// 文件大小(字节)
        /// </summary>
        public int filesize { get; set; }
        /// <summary>
        /// 后缀名
        /// </summary>
        public string suffix { get; set; }
        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime uptime { get; set; }
        /// <summary>
        /// 文档ID
        /// </summary>
        public int doc_id { get; set; }
        /// <summary>
        /// 状态
        /// </summary>
        public int status { get; set; }
        /// <summary>
        /// 文件类型
        /// 001-资质文档
        /// 002-业绩文档
        /// 003-方案文档
        /// 004-财务文档
        /// 005-技术文档
        /// 006-设备文档
        /// 007-质检文档
        /// 008-制度流程文档
        /// </summary>
        public string filetype { get; set; }
        /// <summary>
        /// 上传人员
        /// </summary>
        public int up_userid { get; set; }
        /// <summary>
        /// 上传人员
        /// </summary>
        public string up_username { get; set; }
        /// <summary>
        /// 路径
        /// </summary>
        public string filepath { get; set; }
    }
}
DocumentServiceAPI.Utility/PageBaseSearch.cs
@@ -1,15 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DocumentServiceAPI.Utility
namespace DocumentServiceAPI.Utility
{
    /// <summary>
    /// 分页查询条件基类
    /// </summary>
    public abstract class PageBaseSearch
    public abstract class PageBaseSearch: BaseSearch
    {
        /// <summary>
        /// 页码
@@ -21,6 +15,25 @@
        /// </summary>
        public int PageSize { get; set; } = 20;
    }
    public abstract class BaseSearch
    {
        /// <summary>
        /// 公司ID
        /// </summary>
        public string CompanyID { get; set; }
        /// <summary>
        /// 租户ID
        /// </summary>
        public string TenantID { get; set; }
        /// <summary>
        /// 用户ID
        /// </summary>
        public string UserID { get; set; }
        /// <summary>
        /// 开始日期
        /// </summary>
DocumentServiceAPI.Utility/UtilitySearch.cs
New file
@@ -0,0 +1,90 @@
using System.Linq.Expressions;
namespace DocumentServiceAPI.Utility
{
    /// <summary>
    /// Lambda表达式拼接扩展类
    /// </summary>
    public static class UtilitySearch
    {
        /// <summary>
        /// Lambda表达式拼接
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="first"></param>
        /// <param name="second"></param>
        /// <param name="merge"></param>
        /// <returns></returns>
        public static Expression<T> Compose<T>(this Expression<T> first, Expression<T> second, Func<Expression, Expression, Expression> merge)
        {
            // 构建参数映射(从第二个参数到第一个参数)
            var map = first.Parameters.Select((f, i) => new { f, s = second.Parameters[i] }).ToDictionary(p => p.s, p => p.f);
            // 将第二个lambda表达式中的参数替换为第一个lambda表达式的参数
            var secondBody = ParameterRebinder.ReplaceParameters(map, second.Body);
            // 将lambda表达式体的组合应用于第一个表达式中的参数
            return Expression.Lambda<T>(merge(first.Body, secondBody), first.Parameters);
        }
        /// <summary>
        /// and扩展
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="first"></param>
        /// <param name="second"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
        {
            return first.Compose(second, Expression.AndAlso);
        }
        /// <summary>
        /// or扩展
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="first"></param>
        /// <param name="second"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
        {
            return first.Compose(second, Expression.OrElse);
        }
    }
    /// <summary>
    ///
    /// </summary>
    public class ParameterRebinder : ExpressionVisitor
    {
        private readonly Dictionary<ParameterExpression, ParameterExpression> map;
        /// <summary>
        ///
        /// </summary>
        /// <param name="map"></param>
        public ParameterRebinder(Dictionary<ParameterExpression, ParameterExpression> map)
        {
            this.map = map ?? new Dictionary<ParameterExpression, ParameterExpression>();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="map"></param>
        /// <param name="exp"></param>
        /// <returns></returns>
        public static Expression ReplaceParameters(Dictionary<ParameterExpression, ParameterExpression> map, Expression exp)
        {
            return new ParameterRebinder(map).Visit(exp);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        protected override Expression VisitParameter(ParameterExpression p)
        {
            ParameterExpression replacement;
            if (map.TryGetValue(p, out replacement))
            {
                p = replacement;
            }
            return base.VisitParameter(p);
        }
    }
}
DocumentServiceAPI.Web.Entry/appsettings.json
@@ -12,7 +12,7 @@
    {
      "ConfigId": "default", //多库配置ID
      "ConnectionString": "Server=localhost\\SQLEXPRESS;Database=CY_DocumentSystemOnline;User ID=sa;Password=123456;",
      "ConnectionString": "Server=.;Database=doc_new;User ID=sa;Password=123456;",
      "DbType": "SqlServer",
      "IsAutoCloseConnection": true