feat 完善表格数据添加与修改

This commit is contained in:
Abbh1 2023-11-23 00:13:55 +08:00
parent 025c0dd5c9
commit ebf503fef4
12 changed files with 435 additions and 46 deletions

View File

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using ARW.Model.Models.Business.TableDataManage.TableDataProductsInvolves;
namespace ARW.Model.Dto.Business.TableDataManage.TableDataProductsInvolves
{
/// <summary>
/// 表格数据所属涉及产品输入对象
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
public class TableDataProductsInvolveDto
{
public int TableDataProductsInvolveId { get; set; }
public long TableDataProductsInvolveGuid { get; set; }
[Required(ErrorMessage = "表格guid不能为空")]
public long TableGuid { get; set; }
[Required(ErrorMessage = "涉及产品guid不能为空")]
public long ProductsInvolvedGuid { get; set; }
}
/// <summary>
/// 表格数据所属涉及产品查询对象
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
public class TableDataProductsInvolveQueryDto : PagerInfo
{
public string ids { get; set; }
}
}

View File

@ -17,6 +17,7 @@ namespace ARW.Model.Dto.Business.TableDataManage.TableDatas
public int TableDataId { get; set; }
public long TableDataGuid { get; set; }
public string ProductsInvolvedGuid { get; set; }
[Required(ErrorMessage = "采购内容不能为空")]
public string TableDataProcurementContent { get; set; }

View File

@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using SqlSugar;
using OfficeOpenXml.Attributes;
using Newtonsoft.Json;
namespace ARW.Model.Models.Business.TableDataManage.TableDataProductsInvolves
{
/// <summary>
/// 表格数据所属涉及产品,数据实体对象
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
[SugarTable("tb_table_data_products_involve")]
public class TableDataProductsInvolve : BusinessBase
{
/// <summary>
/// 描述 :
/// 空值 : false
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "table_data_products_involve_id")]
public int TableDataProductsInvolveId { get; set; }
/// <summary>
/// 描述 :
/// 空值 : false
/// </summary>
[JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "table_data_products_involve_guid")]
public long TableDataProductsInvolveGuid { get; set; }
/// <summary>
/// 描述 :表格guid
/// 空值 : false
/// </summary>
[JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(ColumnName = "table_guid")]
public long TableGuid { get; set; }
/// <summary>
/// 描述 :涉及产品guid
/// 空值 : false
/// </summary>
[JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(ColumnName = "products_involved_id")]
public int ProductsInvolvedId { get; set; }
}
}

View File

@ -0,0 +1,45 @@
using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
namespace ARW.Model.Vo.Business.TableDataManage.TableDataProductsInvolves
{
/// <summary>
/// 表格数据所属涉及产品展示对象
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
public class TableDataProductsInvolveVo
{
/// <summary>
/// 描述 :
/// </summary>
public int TableDataProductsInvolveId { get; set; }
/// <summary>
/// 描述 :
/// </summary>
[JsonConverter(typeof(ValueToStringConverter))]
public long TableDataProductsInvolveGuid { get; set; }
/// <summary>
/// 描述 :表格guid
/// </summary>
[JsonConverter(typeof(ValueToStringConverter))]
public long TableGuid { get; set; }
/// <summary>
/// 描述 :涉及产品guid
/// </summary>
[JsonConverter(typeof(ValueToStringConverter))]
public long ProductsInvolvedGuid { get; set; }
}
}

View File

@ -2,6 +2,7 @@ using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
using System.Collections.Generic;
namespace ARW.Model.Vo.Business.TableDataManage.TableDatas
{
@ -29,6 +30,17 @@ namespace ARW.Model.Vo.Business.TableDataManage.TableDatas
[EpplusIgnore]
public long TableDataGuid { get; set; }
/// <summary>
/// 描述 :表格数据所属涉及产品
/// </summary>
[EpplusTableColumn(Header = "表格数据所属涉及产品")]
public string ProductsInvolvedName { get; set; }
/// <summary>
/// 描述 :表格数据所属涉及产品id
/// </summary>
[EpplusIgnore]
public List<int> ProductsInvolvedGuid { get; set; }
/// <summary>
/// 描述 :采购内容

View File

@ -0,0 +1,20 @@
using System;
using Infrastructure.Attribute;
using ARW.Repository.System;
using ARW.Model.Models.Business.TableDataManage.TableDataProductsInvolves;
namespace ARW.Repository.Business.TableDataManage.TableDataProductsInvolves
{
/// <summary>
/// 表格数据所属涉及产品仓储
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class TableDataProductsInvolveRepository : BaseRepository<TableDataProductsInvolve>
{
#region
#endregion
}
}

View File

@ -14,6 +14,8 @@ using ARW.Service.Business.IBusinessService.ProductsInvolveds;
using ARW.Model.Dto.Business.ProductsInvolveds;
using ARW.Model.Models.Business.ProductsInvolveds;
using ARW.Model.Vo.Business.ProductsInvolveds;
using Common.Request.Bsamecity;
using ARW.Model.Dto.Business.TableDataManage.TableDataProductsInvolves;
namespace ARW.Service.Business.BusinessService.ProductsInvolveds
{

View File

@ -0,0 +1,90 @@
using Infrastructure.Attribute;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Infrastructure;
using ARW.Model;
using ARW.Repository;
using ARW.Repository.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Service.Business.IBusinessService.TableDataManage.TableDataProductsInvolves;
using ARW.Model.Dto.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Model.Models.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Model.Vo.Business.TableDataManage.TableDataProductsInvolves;
namespace ARW.Service.Business.BusinessService.TableDataManage.TableDataProductsInvolves
{
/// <summary>
/// 表格数据所属涉及产品接口实现类
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
[AppService(ServiceType = typeof(ITableDataProductsInvolveService), ServiceLifetime = LifeTime.Transient)]
public class TableDataProductsInvolveServiceImpl : BaseService<TableDataProductsInvolve>, ITableDataProductsInvolveService
{
private readonly TableDataProductsInvolveRepository _TableDataProductsInvolveRepository;
public TableDataProductsInvolveServiceImpl(TableDataProductsInvolveRepository TableDataProductsInvolveRepository)
{
this._TableDataProductsInvolveRepository = TableDataProductsInvolveRepository;
}
#region
/// <summary>
/// 查询表格数据所属涉及产品分页列表
/// </summary>
public async Task<PagedInfo<TableDataProductsInvolveVo>> GetTableDataProductsInvolveList(TableDataProductsInvolveQueryDto parm)
{
//开始拼装查询条件d
var predicate = Expressionable.Create<TableDataProductsInvolve>();
var query = _TableDataProductsInvolveRepository
.Queryable()
.Where(predicate.ToExpression())
.OrderBy(s => s.Update_time, OrderByType.Desc)
.Select(s => new TableDataProductsInvolveVo
{
TableDataProductsInvolveId = s.TableDataProductsInvolveId,
TableDataProductsInvolveGuid = s.TableDataProductsInvolveGuid,
TableGuid = s.TableGuid,
});
return await query.ToPageAsync(parm);
}
/// <summary>
/// 添加或修改表格数据所属涉及产品
/// </summary>
public async Task<string> AddOrUpdateTableDataProductsInvolve(TableDataProductsInvolve model)
{
if (model.TableDataProductsInvolveId != 0)
{
var response = await _TableDataProductsInvolveRepository.UpdateAsync(model);
return "修改成功!";
}
else
{
var response = await _TableDataProductsInvolveRepository.InsertReturnSnowflakeIdAsync(model);
return "添加成功!";
}
}
#region Excel处理
#endregion
#endregion
}
}

View File

@ -14,6 +14,10 @@ using ARW.Service.Business.IBusinessService.TableDataManage.TableDatas;
using ARW.Model.Dto.Business.TableDataManage.TableDatas;
using ARW.Model.Models.Business.TableDataManage.TableDatas;
using ARW.Model.Vo.Business.TableDataManage.TableDatas;
using ARW.Model.Models.Business.ProductsInvolveds;
using ARW.Model.Models.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Repository.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Repository.Business.ProductsInvolveds;
namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
{
@ -27,19 +31,23 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
public class TableDataServiceImpl : BaseService<TableData>, ITableDataService
{
private readonly TableDataRepository _TableDataRepository;
private readonly TableDataProductsInvolveRepository _TableDataProductsInvolveRepository;
private readonly ProductsInvolvedRepository _ProductsInvolveRepository;
public TableDataServiceImpl(TableDataRepository TableDataRepository)
public TableDataServiceImpl(TableDataRepository TableDataRepository, TableDataProductsInvolveRepository tableDataProductsInvolveRepository, ProductsInvolvedRepository productsInvolveRepository)
{
this._TableDataRepository = TableDataRepository;
_TableDataProductsInvolveRepository = tableDataProductsInvolveRepository;
_ProductsInvolveRepository = productsInvolveRepository;
}
#region
/// <summary>
#region
/// <summary>
/// 查询表格数据分页列表
/// </summary>
public async Task<PagedInfo<TableDataVo>> GetTableDataList(TableDataQueryDto parm)
public async Task<PagedInfo<TableDataVo>> GetTableDataList(TableDataQueryDto parm)
{
//开始拼装查询条件d
var predicate = Expressionable.Create<TableData>();
@ -51,55 +59,116 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
var query = _TableDataRepository
.Queryable()
.Where(predicate.ToExpression())
.OrderBy(s => s.TableDataSort,OrderByType.Asc)
.OrderBy(s => s.TableDataSort, OrderByType.Asc)
.Select(s => new TableDataVo
{
TableDataId = s.TableDataId,
TableDataGuid = s.TableDataGuid,
TableDataProcurementContent = s.TableDataProcurementContent,
TableDataProcurementUnit = s.TableDataProcurementUnit,
TableDataProcurementMethod = s.TableDataProcurementMethod,
TableDataSupplierName = s.TableDataSupplierName,
TableDataSupplierOffer = s.TableDataSupplierOffer,
TableDataProjectPricingForm = s.TableDataProjectPricingForm,
TableDataLink = s.TableDataLink,
TableDataDate = s.TableDataDate,
TableDataDeadline = s.TableDataDeadline,
TableDataWinningBidde = s.TableDataWinningBidde,
TableDataBidWinningPrice = s.TableDataBidWinningPrice,
TableDataIsBidAnnouncement = s.TableDataIsBidAnnouncement,
TableDataIsHumanResourcePoolOrFrameworkAgreement = s.TableDataIsHumanResourcePoolOrFrameworkAgreement,
TableDataIsMultiple = s.TableDataIsMultiple,
TableDataIsOnlyBidder = s.TableDataIsOnlyBidder,
TableDataSingleSource = s.TableDataSingleSource,
TableDataDetails = s.TableDataDetails,
TableDataSort = s.TableDataSort,
});
TableDataId = s.TableDataId,
TableDataGuid = s.TableDataGuid,
TableDataProcurementContent = s.TableDataProcurementContent,
TableDataProcurementUnit = s.TableDataProcurementUnit,
TableDataProcurementMethod = s.TableDataProcurementMethod,
TableDataSupplierName = s.TableDataSupplierName,
TableDataSupplierOffer = s.TableDataSupplierOffer,
TableDataProjectPricingForm = s.TableDataProjectPricingForm,
TableDataLink = s.TableDataLink,
TableDataDate = s.TableDataDate,
TableDataDeadline = s.TableDataDeadline,
TableDataWinningBidde = s.TableDataWinningBidde,
TableDataBidWinningPrice = s.TableDataBidWinningPrice,
TableDataIsBidAnnouncement = s.TableDataIsBidAnnouncement,
TableDataIsHumanResourcePoolOrFrameworkAgreement = s.TableDataIsHumanResourcePoolOrFrameworkAgreement,
TableDataIsMultiple = s.TableDataIsMultiple,
TableDataIsOnlyBidder = s.TableDataIsOnlyBidder,
TableDataSingleSource = s.TableDataSingleSource,
TableDataDetails = s.TableDataDetails,
TableDataSort = s.TableDataSort,
});
return await query.ToPageAsync(parm);
var list = await query.ToPageAsync(parm);
foreach (var item in list.Result)
{
var productsInvolvedList = await _TableDataProductsInvolveRepository.GetListAsync(s => s.TableGuid == item.TableDataGuid);
if (productsInvolvedList.Count > 0)
{
var str = "";
List<int> stringId = new List<int>();
foreach (var item1 in productsInvolvedList)
{
var productsInvolved = await _ProductsInvolveRepository.GetFirstAsync(s => s.ProductsInvolvedId == item1.ProductsInvolvedId);
if (productsInvolved != null)
{
str += productsInvolved.ProductsInvolvedName + ",";
stringId.Add(item1.ProductsInvolvedId);
}
}
// 检查字符串是否以逗号结尾
if (str.EndsWith(","))
{
// 去掉字符串末尾的逗号
str = str.TrimEnd(',');
}
item.ProductsInvolvedName = str;
item.ProductsInvolvedGuid = stringId;
}
}
return list;
}
/// <summary>
/// <summary>
/// 添加或修改表格数据
/// </summary>
public async Task<string> AddOrUpdateTableData(TableData model)
public async Task<string> AddOrUpdateTableData(TableData model, TableDataDto dto)
{
if (model.TableDataId != 0)
{
var list = await _TableDataProductsInvolveRepository.GetListAsync(s => s.TableGuid == model.TableDataGuid);
if (list.Count > 0)
{
await _TableDataProductsInvolveRepository.DeleteAsync(s => s.TableGuid == model.TableDataGuid);
await HandleAddTableDataProductsInvolves(model.TableDataGuid, dto);
}
var response = await _TableDataRepository.UpdateAsync(model);
return "修改成功!";
}
else
{
var response = await _TableDataRepository.InsertReturnSnowflakeIdAsync(model);
await HandleAddTableDataProductsInvolves(response, dto);
return "添加成功!";
}
}
/// <summary>
/// 添加表格数据所属涉及产品
/// </summary>
/// <param name="model">商品Model</param>
/// <returns></returns>
public async Task HandleAddTableDataProductsInvolves(long tableGuid, TableDataDto dto)
{
if (!string.IsNullOrEmpty(dto.ProductsInvolvedGuid))
{
var productsInvolvedIds = dto.ProductsInvolvedGuid.Split(',');
var productsInvolvedList = new List<TableDataProductsInvolve>();
foreach (var id in productsInvolvedIds)
{
var productsInvolved = new TableDataProductsInvolve
{
TableGuid = tableGuid,
ProductsInvolvedId = Convert.ToInt32(id),
Create_time = DateTime.Now,
};
productsInvolvedList.Add(productsInvolved);
}
await _TableDataProductsInvolveRepository.InsertReturnSnowflakeIdAsync(productsInvolvedList);
}
}
#region Excel处理
/// <summary>
/// <summary>
/// 数据导入处理
/// </summary>
public async Task<TableDataVo> HandleImportData(TableDataVo TableData)
@ -111,7 +180,7 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
/// <summary>
/// Excel导入
/// </summary>
public async Task<string> ImportExcel(TableData TableData,int index,bool isUpdateSupport,string user)
public async Task<string> ImportExcel(TableData TableData, int index, bool isUpdateSupport, string user)
{
try
{
@ -122,14 +191,14 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
{
// 判断唯一值
var model = await GetFirstAsync(s => s.TableDataId == TableData.TableDataId);
// 如果为空就新增数据
if (model == null)
{
// 开启事务
var res = await UseTranAsync(async () =>
{
var addRes = await AddOrUpdateTableData(TableData);
var addRes = await AddOrUpdateTableData(TableData, new TableDataDto());
});
var addStr = $"第 {index} 行 => 表格数据:【{TableData.TableDataId}】<span style='color:#27af49'>新增成功!</span><br>";
return addStr;
@ -144,17 +213,18 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
TableData.TableDataGuid = model.TableDataGuid;
TableData.Update_by = user;
TableData.Update_time = DateTime.Now;
var editRes = await AddOrUpdateTableData(TableData);
var editRes = await AddOrUpdateTableData(TableData, new TableDataDto());
});
var editStr = $"第 {index} 行 => 表格数据:【{TableData.TableDataId}】<span style='color:#e6a23c'>更新成功!</span><br>";
return editStr;
}
}
else{
// 开启事务
else
{
// 开启事务
var res = await UseTranAsync(async () =>
{
var addRes = await AddOrUpdateTableData(TableData);
var addRes = await AddOrUpdateTableData(TableData, new TableDataDto());
});
//Console.WriteLine(res.IsSuccess);
var addStr = $"第 {index} 行 => 表格数据:【{TableData.TableDataId}】<span style='color:#27af49'>新增成功!</span><br>";
@ -170,7 +240,7 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
}
/// <summary>
/// Excel数据导出处理
/// </summary>
@ -180,10 +250,10 @@ namespace ARW.Service.Business.BusinessService.TableDataManage.TableDatas
}
#endregion
#endregion
#endregion
}
}

View File

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ARW.Model;
using ARW.Model.Dto.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Model.Models.Business.TableDataManage.TableDataProductsInvolves;
using ARW.Model.Vo.Business.TableDataManage.TableDataProductsInvolves;
namespace ARW.Service.Business.IBusinessService.TableDataManage.TableDataProductsInvolves
{
/// <summary>
/// 表格数据所属涉及产品接口类
///
/// @author lwh
/// @date 2023-11-22
/// </summary>
public interface ITableDataProductsInvolveService : IBaseService<TableDataProductsInvolve>
{
/// <summary>
/// 获取表格数据所属涉及产品分页列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<PagedInfo<TableDataProductsInvolveVo>> GetTableDataProductsInvolveList(TableDataProductsInvolveQueryDto parm);
/// <summary>
/// 添加或修改表格数据所属涉及产品
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<string> AddOrUpdateTableDataProductsInvolve(TableDataProductsInvolve parm);
}
}

View File

@ -31,7 +31,7 @@ namespace ARW.Service.Business.IBusinessService.TableDataManage.TableDatas
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<string> AddOrUpdateTableData(TableData parm);
Task<string> AddOrUpdateTableData(TableData parm, TableDataDto dto);
/// <summary>

View File

@ -70,7 +70,7 @@ namespace ARW.WebApi.Controllers.Business.TableDataManage.TableDatas
if (parm.TableDataId != 0) modal = parm.Adapt<TableData>().ToUpdate(HttpContext);
else modal = parm.Adapt<TableData>().ToCreate(HttpContext);
var res = await _TableDataService.AddOrUpdateTableData(modal);
var res = await _TableDataService.AddOrUpdateTableData(modal, parm);
return SUCCESS(res);
}