移动系统liao
2 天以前 3373a075081a707b094c6225759a776d18ee1e53
no message
8个文件已修改
199 ■■■■ 已修改文件
Admin.NET/Admin.NET.Application/Configuration/Swagger.json 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Application/Const/ApplicationConst.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/FZCZTB.NET.MD.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/FZCZTB.TSCL.Application.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Application/Configuration/Swagger.json
@@ -6,17 +6,24 @@
    "GroupOpenApiInfos": [
      {
        "Group": "Default",
        "Title": "Admin.NET 通用权限开发平台",
        "Description": "让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。",
        "Title": "系统",
        "Description": "",
        "Version": "1.0.0",
        "Order": 1000
      },
      {
        "Group": "All Groups",
        "Title": "所有接口",
        "Description": "让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。",
        "Description": "",
        "Version": "1.0.0",
        "Order": 0
      },
      {
        "Group": "FZCCGPT",
        "Title": "非政府采购交易平台",
        "Description": "非政府采购交易平台",
        "Version": "1.0.0",
        "Order": 10000
      }
    ],
    "DefaultGroupName": "Default", // 默认分组名
Admin.NET/Admin.NET.Application/Const/ApplicationConst.cs
@@ -14,5 +14,5 @@
    /// <summary>
    /// API分组名称
    /// </summary>
    public const string GroupName = "xxx业务应用";
    public const string GroupName = "FZCCGPT";
}
Admin.NET/FZCZTB.NET.MD/FZCZTB.NET.MD.csproj
@@ -4,6 +4,7 @@
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <GenerateDocumentationFile>True</GenerateDocumentationFile>
  </PropertyGroup>
  <ItemGroup>
Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs
@@ -2,6 +2,7 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -12,7 +13,7 @@
    /// 投诉质疑结果
    /// </summary>
    [SugarTable("FB_ProcurementComplaints")]
    public  partial class ProcurementComplaint: EntityBase
    public  partial class ProcurementComplaint: basemodelNoId
    {
        /// <summary>
        /// 投诉ID,主键
@@ -75,7 +76,7 @@
        /// <summary>
        /// 投诉事项
        /// </summary>
        [Navigate(NavigateType.OneToMany,nameof(ProcurementComplaintItems.ComplaintId))]
        [Navigate(NavigateType.OneToMany,nameof(ProcurementComplaintItems.ComplaintId), nameof(ProcurementComplaint.Id))]
        public  List<ProcurementComplaintItems>? Complaints { get; set; }
    }
@@ -114,6 +115,12 @@
        /// </summary>
        [SugarColumn(Length = 1000,IsNullable = true, ColumnDescription = "处理结果")]
        public string? HandlingResult { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        [SugarColumn( IsNullable = true, ColumnDescription = "处理结果")]
        public int sort { get; set; } = 0;
    }
       public enum PComplaintStatus
@@ -121,26 +128,84 @@
        /// <summary>
        /// 其他
        /// </summary>
        [Description("其它"), Theme("info")]
        Other = 0,
        /// <summary>
        /// 成立
        /// </summary>
        [Description("成立")]
        Valid = 1,
        /// <summary>
        /// 驳回
        /// </summary>
        [Description("驳回")]
        Rejected = 2,
        /// <summary>
        /// 部分成立
        /// </summary>
        [Description("部分成立")]
        PartiallyValid = 3
     
    }
    public class basemodelNoId
    {
    /// 创建时间
    /// </summary>
    [SugarColumn(ColumnDescription = "创建时间", IsNullable = true, IsOnlyIgnoreUpdate = true)]
        public virtual DateTime CreateTime { get; set; }
        /// <summary>
        /// 更新时间
        /// </summary>
        [SugarColumn(ColumnDescription = "更新时间")]
        public virtual DateTime? UpdateTime { get; set; }
        /// <summary>
        /// 创建者Id
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者Id", IsOnlyIgnoreUpdate = true)]
        public virtual long? CreateUserId { get; set; }
        ///// <summary>
        ///// 创建者
        ///// </summary>
        //[Newtonsoft.Json.JsonIgnore]
        //[System.Text.Json.Serialization.JsonIgnore]
        //[Navigate(NavigateType.OneToOne, nameof(CreateUserId))]
        //public virtual SysUser CreateUser { get; set; }
        /// <summary>
        /// 创建者姓名
        /// </summary>
        [SugarColumn(ColumnDescription = "创建者姓名", Length = 64, IsOnlyIgnoreUpdate = true)]
        public virtual string? CreateUserName { get; set; }
        /// <summary>
        /// 修改者Id
        /// </summary>
        [SugarColumn(ColumnDescription = "修改者Id")]
        public virtual long? UpdateUserId { get; set; }
        ///// <summary>
        ///// 修改者
        ///// </summary>
        //[Newtonsoft.Json.JsonIgnore]
        //[System.Text.Json.Serialization.JsonIgnore]
        //[Navigate(NavigateType.OneToOne, nameof(UpdateUserId))]
        //public virtual SysUser UpdateUser { get; set; }
        /// <summary>
        /// 修改者姓名
        /// </summary>
        [SugarColumn(ColumnDescription = "修改者姓名", Length = 64)]
        public virtual string? UpdateUserName { get; set; }
    }
    }
Admin.NET/FZCZTB.TSCL.Application/FZCZTB.TSCL.Application.csproj
@@ -4,6 +4,7 @@
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <GenerateDocumentationFile>True</GenerateDocumentationFile>
  </PropertyGroup>
  <ItemGroup>
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs
@@ -113,11 +113,15 @@
    /// 线上地址
    /// </summary>
    public string? Url { get; set; }
    /// <summary>
    /// 处理事项
    /// </summary>
    public List<ProcurementComplaintItems>? Complaints { get; set; }
    /// <summary>
    /// 选中主键列表
    /// </summary>
     public List<Guid> SelectKeyList { get; set; }
    public List<Guid> SelectKeyList { get; set; }
}
/// <summary>
@@ -258,7 +262,11 @@
    /// </summary>    
    [MaxLength(255, ErrorMessage = "线上地址字符长度不能超过255")]
    public string? Url { get; set; }
    /// <summary>
    /// 事项
    /// </summary>
    public List<ProcurementComplaintItems>? Complaints { get; set; }
}
/// <summary>
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs
@@ -85,6 +85,8 @@
    /// 修改者姓名
    /// </summary>
    public string? UpdateUserName { get; set; }    
    
}
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs
@@ -50,8 +50,8 @@
    public async Task<SqlSugarPagedList<ProcurementComplaintOutput>> Page(PageProcurementComplaintInput input)
    {
        input.Keyword = input.Keyword?.Trim();
        var query = _procurementComplaintRep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.ProjectCode.Contains(input.Keyword) || u.ProjectName.Contains(input.Keyword) || u.Purchaser.Contains(input.Keyword) || u.ProcurementAgency.Contains(input.Keyword) || u.Complainant.Contains(input.Keyword) || u.ProcurementSupervisionDepartment.Contains(input.Keyword) || u.Url.Contains(input.Keyword))
        var query = _procurementComplaintRep.AsQueryable().Includes(x=>x.Complaints)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Complaints.Any(uu=>uu.ItemDescription.Contains(input.Keyword)))
            .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectCode), u => u.ProjectCode.Contains(input.ProjectCode.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), u => u.ProjectName.Contains(input.ProjectName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Purchaser), u => u.Purchaser.Contains(input.Purchaser.Trim()))
@@ -73,7 +73,8 @@
    [ApiDescriptionSettings(Name = "Detail"), HttpGet]
    public async Task<ProcurementComplaint> Detail([FromQuery] QueryByIdProcurementComplaintInput input)
    {
        return await _procurementComplaintRep.GetFirstAsync(u => u.Id == input.Id);
        return await _procurementComplaintRep.AsQueryable().Where(x=>x.Id==input.Id).Includes(x=>x.Complaints.OrderBy(xx=>xx.sort).ToList()).FirstAsync();
    }
    /// <summary>
@@ -87,6 +88,13 @@
    {
        var entity = input.Adapt<ProcurementComplaint>();
        entity.Id = Guid.NewGuid();
        int index = 0;
        if (entity.Complaints != null)
            foreach (var item in entity.Complaints)
        {
            item.Id = Guid.NewGuid();
                item.sort = index++;
            }
        return await _sqlSugarClient.InsertNav(entity).Include(x=>x.Complaints).ExecuteCommandAsync();
    }
@@ -101,7 +109,14 @@
    public async Task Update(UpdateProcurementComplaintInput input)
    {
        var entity = input.Adapt<ProcurementComplaint>();
        await _procurementComplaintRep.AsUpdateable(entity)
        int index = 0;
        if(entity.Complaints!=null)
        foreach (var item in entity.Complaints)
        {
            item.Id = Guid.NewGuid();
            item.sort=    index++;
        }
        await _procurementComplaintRep.AsSugarClient().UpdateNav(entity).Include(x=>x.Complaints)
        .ExecuteCommandAsync();
    }
@@ -167,46 +182,46 @@
    /// 导入政府采购投诉数据处理记录 💾
    /// </summary>
    /// <returns></returns>
    [DisplayName("导入政府采购投诉数据处理记录")]
    [ApiDescriptionSettings(Name = "Import"), HttpPost, NonUnify, UnitOfWork]
    public IActionResult ImportData([Required] IFormFile file)
    {
        lock (_procurementComplaintImportLock)
        {
            var stream = ExcelHelper.ImportData<ImportProcurementComplaintInput, ProcurementComplaint>(file, (list, markerErrorAction) =>
            {
                _sqlSugarClient.Utilities.PageEach(list, 2048, pageItems =>
                {
    //[DisplayName("导入政府采购投诉数据处理记录")]
    //[ApiDescriptionSettings(Name = "Import"), HttpPost, NonUnify, UnitOfWork]
    //public IActionResult ImportData([Required] IFormFile file)
    //{
    //    lock (_procurementComplaintImportLock)
    //    {
    //        var stream = ExcelHelper.ImportData<ImportProcurementComplaintInput, ProcurementComplaint>(file, (list, markerErrorAction) =>
    //        {
    //            _sqlSugarClient.Utilities.PageEach(list, 2048, pageItems =>
    //            {
                    
                    // 校验并过滤必填基本类型为null的字段
                    var rows = pageItems.Where(x => {
                        return true;
                    }).Adapt<List<ProcurementComplaint>>();
    //                // 校验并过滤必填基本类型为null的字段
    //                var rows = pageItems.Where(x => {
    //                    return true;
    //                }).Adapt<List<ProcurementComplaint>>();
                    
                    var storageable = _procurementComplaintRep.Context.Storageable(rows)
                        .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProjectCode), "项目编号不能为空")
                        .SplitError(it => it.Item.ProjectCode?.Length > 50, "项目编号长度不能超过50个字符")
                        .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProjectName), "项目名称不能为空")
                        .SplitError(it => it.Item.ProjectName?.Length > 200, "项目名称长度不能超过200个字符")
                        .SplitError(it => string.IsNullOrWhiteSpace(it.Item.Purchaser), "采购人不能为空")
                        .SplitError(it => it.Item.Purchaser?.Length > 100, "采购人长度不能超过100个字符")
                        .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProcurementAgency), "采购代理机构不能为空")
                        .SplitError(it => it.Item.ProcurementAgency?.Length > 100, "采购代理机构长度不能超过100个字符")
                        .SplitError(it => it.Item.Complainant?.Length > 100, "投诉人长度不能超过100个字符")
                        .SplitError(it => it.Item.ProcurementSupervisionDepartment?.Length > 100, "采购监督部门长度不能超过100个字符")
                        .SplitError(it => it.Item.Url?.Length > 255, "线上地址长度不能超过255个字符")
                        .SplitInsert(_ => true)
                        .ToStorage();
    //                var storageable = _procurementComplaintRep.Context.Storageable(rows)
    //                    .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProjectCode), "项目编号不能为空")
    //                    .SplitError(it => it.Item.ProjectCode?.Length > 50, "项目编号长度不能超过50个字符")
    //                    .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProjectName), "项目名称不能为空")
    //                    .SplitError(it => it.Item.ProjectName?.Length > 200, "项目名称长度不能超过200个字符")
    //                    .SplitError(it => string.IsNullOrWhiteSpace(it.Item.Purchaser), "采购人不能为空")
    //                    .SplitError(it => it.Item.Purchaser?.Length > 100, "采购人长度不能超过100个字符")
    //                    .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProcurementAgency), "采购代理机构不能为空")
    //                    .SplitError(it => it.Item.ProcurementAgency?.Length > 100, "采购代理机构长度不能超过100个字符")
    //                    .SplitError(it => it.Item.Complainant?.Length > 100, "投诉人长度不能超过100个字符")
    //                    .SplitError(it => it.Item.ProcurementSupervisionDepartment?.Length > 100, "采购监督部门长度不能超过100个字符")
    //                    .SplitError(it => it.Item.Url?.Length > 255, "线上地址长度不能超过255个字符")
    //                    .SplitInsert(_ => true)
    //                    .ToStorage();
                    
                    storageable.AsInsertable.ExecuteCommand();// 不存在插入
                    storageable.AsUpdateable.ExecuteCommand();// 存在更新
    //                storageable.AsInsertable.ExecuteCommand();// 不存在插入
    //                storageable.AsUpdateable.ExecuteCommand();// 存在更新
                    
                    // 标记错误信息
                    markerErrorAction.Invoke(storageable, pageItems, rows);
                });
            });
    //                // 标记错误信息
    //                markerErrorAction.Invoke(storageable, pageItems, rows);
    //            });
    //        });
            
            return stream;
        }
    }
    //        return stream;
    //    }
    //}
}