schangxiang@126.com
2025-05-20 726693db8c69f3dad6e44e7e3755acfabb005292
优化
已修改6个文件
884 ■■■■■ 文件已修改
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkTaskAppService.cs 800 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkTaskAutoMapperProfile.cs 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkTask导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/AppService/AppService_Generate.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Application/MapperProfiles/AutoMapperProfile模板.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkTaskAppService.cs
@@ -1,129 +1,129 @@
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
/// <summary> 
/// ä½œä¸šä»»åŠ¡è¡¨åº”ç”¨æœåŠ¡ 
/// </summary> 
public class WorkTaskAppService : CMSPluginAppService, IWorkTaskAppService
{
    private readonly IWorkTaskRepository _workTaskRepository;
public class WorkTaskAppService : CMSPluginAppService, IWorkTaskAppService
{
    private readonly IWorkTaskRepository _workTaskRepository;
    /// <summary> 
    /// Initializes a new instance of the <see cref="WorkTaskAppService"/> class. 
    /// </summary> 
    /// <param name="WorkTaskRepository">The task job repository.</param> 
    public WorkTaskAppService(IWorkTaskRepository workTaskRepository)
    {
        _workTaskRepository = workTaskRepository;
    }
    public WorkTaskAppService(IWorkTaskRepository workTaskRepository)
    {
        _workTaskRepository = workTaskRepository;
    }
    /// <summary> 
    /// èŽ·å–æŒ‡å®šä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public virtual async Task<WorkTaskDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WorkTask, WorkTaskDto>(await _workTaskRepository.GetAsync(id));
    }
    public virtual async Task<WorkTaskDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WorkTask, WorkTaskDto>(await _workTaskRepository.GetAsync(id));
    }
    /// <summary> 
    /// åˆ†é¡µèŽ·å–ä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    public virtual async Task<PagedResultDto<WorkTaskDto>> GetListAsync(GetWorkTaskInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
    public virtual async Task<PagedResultDto<WorkTaskDto>> GetListAsync(GetWorkTaskInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
        //动态构造查询条件  
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await _workTaskRepository.GetCountAsync(whereConditions);
        var list = await _workTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WorkTaskDto>(count, ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(list));
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await _workTaskRepository.GetCountAsync(whereConditions);
        var list = await _workTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WorkTaskDto>(count, ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(list));
    }
    /// <summary>  
    /// åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
    /// </summary>  
    /// <param name="input">输入参数</param>  
    /// <returns></returns>  
    private FunReturnResultModel<Expression<Func<WorkTask, bool>>> DynamicGetQueryParams(GetWorkTaskInput input)
    {
    private FunReturnResultModel<Expression<Func<WorkTask, bool>>> DynamicGetQueryParams(GetWorkTaskInput input)
    {
        //动态构造查询条件  
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WorkTask, GetWorkTaskInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WorkTask, GetWorkTaskInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        //也可再次自定义构建查询条件  
        Expression<Func<WorkTask, bool>> extendExpression = a => a.IsDeleted == false;
        Expression<Func<WorkTask, bool>> extendExpression = a => a.IsDeleted == false;
        // ä½¿ç”¨ System.Linq.PredicateBuilder çš„ And 
        var pres = (System.Linq.Expressions.Expression<Func<WorkTask, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
        var pres = (System.Linq.Expressions.Expression<Func<WorkTask, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
    /// <summary> 
    /// æ–°å»ºä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public virtual async Task<WorkTaskDto> CreateAsync(WorkTaskCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await _workTaskRepository.NameExistAsync(input.Son_TaskCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Son_TaskCode]);
        }
        var maxSort = await _workTaskRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WorkTaskCreateDto, WorkTask>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
    public virtual async Task<WorkTaskDto> CreateAsync(WorkTaskCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await _workTaskRepository.NameExistAsync(input.Son_TaskCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Son_TaskCode]);
        }
        var maxSort = await _workTaskRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WorkTaskCreateDto, WorkTask>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        insertObj.CreatorName = input.CreatorName;//创建人 
        await _workTaskRepository.InsertAsync(insertObj);
        await _workTaskRepository.InsertAsync(insertObj);
        //if (input.Sort.HasValue && insertObj.Sort != maxSort) 
        //{ 
        //    await AdjustSortAsync(insertObj.Id, insertObj.Sort); 
        //} 
        return ObjectMapper.Map<WorkTask, WorkTaskDto>(insertObj);
    }
        return ObjectMapper.Map<WorkTask, WorkTaskDto>(insertObj);
    }
    /// <summary> 
    /// æ›´æ–°ä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
@@ -131,78 +131,37 @@
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public virtual async Task<WorkTaskDto> UpdateAsync(Guid id, WorkTaskUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await _workTaskRepository.GetAsync(id);
        var exist = await _workTaskRepository.NameExistAsync(input.Son_TaskCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Son_TaskCode]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        // æ‰¹é‡èµ‹å€¼æ‰€æœ‰å¯æ˜ å°„字段(通过匿名对象)
        updateObj = ObjectMapper.Map(input, updateObj); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
        //updateObj.Id = id;
        //updateObj.Son_TaskCode = input.Son_TaskCode;
        //updateObj.TaskCode = input.TaskCode;
        //updateObj.WorkPlanStatus = input.WorkPlanStatus;
        //updateObj.CallMaterialStatus = input.CallMaterialStatus;
        //updateObj.DataIdentifier = input.DataIdentifier;
        //updateObj.MaterialMode = input.MaterialMode;
        //updateObj.Length = input.Length;
        //updateObj.MarkingContent = input.MarkingContent;
        //updateObj.MarkingPosition = input.MarkingPosition;
        //updateObj.CuttingPosition = input.CuttingPosition;
        //updateObj.Quantity = input.Quantity;
        //updateObj.FlangeThickness = input.FlangeThickness;
        //updateObj.FlangeInnerDiameter = input.FlangeInnerDiameter;
        //updateObj.WeldingHeatInput = input.WeldingHeatInput;
        //updateObj.PipeAllowableStress = input.PipeAllowableStress;
        //updateObj.PipeDiameter = input.PipeDiameter;
        //updateObj.PipeWallThickness = input.PipeWallThickness;
        //updateObj.FactoryCode = input.FactoryCode;
        //updateObj.ProductCode = input.ProductCode;
        //updateObj.WorkstationCode = input.WorkstationCode;
        //updateObj.EquipmentCode = input.EquipmentCode;
        //updateObj.ProdLineCode = input.ProdLineCode;
        //updateObj.ShipNumber = input.ShipNumber;
        //updateObj.ProjectNumber = input.ProjectNumber;
        //updateObj.ProcessName = input.ProcessName;
        //updateObj.PipeFittingCode = input.PipeFittingCode;
        //updateObj.PreSerialNumber = input.PreSerialNumber;
        //updateObj.PipeSpecCode = input.PipeSpecCode;
        //updateObj.PipeSectionName = input.PipeSectionName;
        //updateObj.OuterDiameter = input.OuterDiameter;
        //updateObj.Thickness = input.Thickness;
        //updateObj.Material = input.Material;
        //updateObj.ProcessRouteNumber = input.ProcessRouteNumber;
        //updateObj.PlannedStartTime = input.PlannedStartTime;
        //updateObj.PlannedEndTime = input.PlannedEndTime;
        //updateObj.TeamInfo = input.TeamInfo;
        //updateObj.Timestamp = input.Timestamp;
        //updateObj.Remark = input.Remark;
    public virtual async Task<WorkTaskDto> UpdateAsync(Guid id, WorkTaskUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await _workTaskRepository.GetAsync(id);
        var exist = await _workTaskRepository.NameExistAsync(input.Son_TaskCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Son_TaskCode]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        // æ‰¹é‡èµ‹å€¼æ‰€æœ‰å¯æ˜ å°„字段(通过匿名对象)
        updateObj = ObjectMapper.Map(input, updateObj); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
        updateObj.LastModifierName = input.LastModifierName;//修改人 
        await _workTaskRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WorkTask, WorkTaskDto>(updateObj);
    }
        await _workTaskRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WorkTask, WorkTaskDto>(updateObj);
    }
    /// <summary> 
    /// å…‹éš†ä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    public async Task<List<WorkTaskDto>> CloneAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser)
    {
    public async Task<List<WorkTaskDto>> CloneAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser)
    {
        //var workTasks = new List<WorkTask>(); 
        //if (ids != null) 
        //{ 
@@ -222,321 +181,234 @@
        //                    name += WorkTaskConsts.CloneTag; 
        //                    continue; 
        //                } 
        //                notExist = true; 
        //            } 
        //            //WorkTask = await _workTaskRepository.InsertAsync(WorkTask.Clone(GuidGenerator.Create(), name, sort++)); 
        //            workTasks.Add(WorkTask); 
        //        } 
        //    } 
        //} 
        //return ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(workTasks); 
        return new List<WorkTaskDto>();
    }
        return new List<WorkTaskDto>();
    }
    /// <summary> 
    /// åˆ é™¤å•个作业任务表 
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public virtual Task DeleteAsync(Guid id)
    {
        return _workTaskRepository.DeleteAsync(id);
    }
    public virtual Task DeleteAsync(Guid id)
    {
        return _workTaskRepository.DeleteAsync(id);
    }
    /// <summary> 
    /// åˆ é™¤å¤šä¸ªä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    public async Task DeleteManyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    /// <summary>
    public async Task DeleteManyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
     /// <summary>
    /// ç‰©ç†åˆ é™¤ä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="id">主键ID</param> 
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public virtual async Task DeletePermanentlyAsync(Guid id, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default)
    {
        _workTaskRepository.DeletePermanentlyAsync(id);
    }
    public virtual async Task DeletePermanentlyAsync(Guid id, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default)
    {
        _workTaskRepository.DeletePermanentlyAsync(id);
    }
    /// <summary> 
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ä½œä¸šä»»åŠ¡è¡¨ï¼ˆç›´æŽ¥åˆ é™¤ï¼Œä¸è½¯åˆ é™¤ï¼‰ 
    /// </summary> 
    /// <param name="ids">要删除的主键ID列表</param> 
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public virtual async Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default)
    {
        _workTaskRepository.BatchDeletePermanentlyAsync(ids);
    }
    public virtual async Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default)
    {
        _workTaskRepository.BatchDeletePermanentlyAsync(ids);
    }
    /// <summary> 
    /// è°ƒæ•´æŽ’序作业任务表 
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="sort"></param> 
    /// <returns></returns> 
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        //var list = await _workTaskRepository.GetListAsync(null, nameof(WorkTask.Sort));
        //if (list != null && list.Any())
        //{
        //    var initSort = 1;
        //    list.ForEach(x => x.AdjustSort(initSort++));
        //    var entity = list.FirstOrDefault(x => x.Id == id);
        //    if (entity != null)
        //    {
        //        if (sort == 1)
        //        {
        //            list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
        //        }
        //        else if (entity.Sort > sort)
        //        {
        //            list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
        //            list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
        //        }
        //        else if (entity.Sort < sort)
        //        {
        //            list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
        //            list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
        //        }
        //        entity.AdjustSort(sort);
        //    }
        //}
        //await _workTaskRepository.UpdateManyAsync(list);
    }
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await _workTaskRepository.GetListAsync(null, nameof(WorkTask.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await _workTaskRepository.UpdateManyAsync(list);
    }
    /// <summary> 
    /// å¯¼å…¥ä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public async Task ImportAsync(WorkTasksImportModel input, MyCurrentUser myCurrentUser)
    {
        Check.NotNull(input, nameof(input));
        var workTaskCreateDtos = new List<(int RowIndex, WorkTaskCreateDto Item)>();
        var workTaskUpdateDtos = new List<(int RowIndex, Guid Id, WorkTask Item)>();
        var importItems = input.WorkTasks;
        if (importItems != null && importItems.Any())
        {
    public async Task ImportAsync(WorkTasksImportModel input, MyCurrentUser myCurrentUser)
    {
        Check.NotNull(input, nameof(input));
        var workTaskCreateDtos = new List<(int RowIndex, WorkTaskCreateDto Item)>();
        var workTaskUpdateDtos = new List<(int RowIndex, Guid Id, WorkTask Item)>();
        var importItems = input.WorkTasks;
        if (importItems != null && importItems.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ 
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复 
            var duplicateWorkTasks = importItems.GroupBy(x => x.Son_TaskCode).Where(x => x.Count() > 1).ToList();
            if (duplicateWorkTasks?.Any() == true)
            {
                var duplicateWorkTaskMsgs = duplicateWorkTasks.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
                var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWorkTaskMsgs)},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
            #endregion
            foreach (var impItem in importItems)
            {
                if (impItem.Son_TaskCode.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (impItem.Son_TaskCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WorkTask名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldWorkTask = await _workTaskRepository.FindByNameAsync(impItem.Son_TaskCode);
                if (oldWorkTask != null)
                {
                    //var workTaskUpdateDto = new WorkTaskUpdateDto { };
                    oldWorkTask = ObjectMapper.Map(impItem, oldWorkTask); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    //var workTaskUpdateDto = new WorkTaskUpdateDto
                    //{
                    //    Son_TaskCode = impItem.Son_TaskCode,
                    //    TaskCode = impItem.TaskCode,
                    //    WorkPlanStatus = impItem.WorkPlanStatus,
                    //    CallMaterialStatus = impItem.CallMaterialStatus,
                    //    DataIdentifier = impItem.DataIdentifier,
                    //    MaterialMode = impItem.MaterialMode,
                    //    Length = impItem.Length,
                    //    MarkingContent = impItem.MarkingContent,
                    //    MarkingPosition = impItem.MarkingPosition,
                    //    CuttingPosition = impItem.CuttingPosition,
                    //    Quantity = impItem.Quantity,
                    //    FlangeThickness = impItem.FlangeThickness,
                    //    FlangeInnerDiameter = impItem.FlangeInnerDiameter,
                    //    WeldingHeatInput = impItem.WeldingHeatInput,
                    //    PipeAllowableStress = impItem.PipeAllowableStress,
                    //    PipeDiameter = impItem.PipeDiameter,
                    //    PipeWallThickness = impItem.PipeWallThickness,
                    //    FactoryCode = impItem.FactoryCode,
                    //    ProductCode = impItem.ProductCode,
                    //    WorkstationCode = impItem.WorkstationCode,
                    //    EquipmentCode = impItem.EquipmentCode,
                    //    ProdLineCode = impItem.ProdLineCode,
                    //    ShipNumber = impItem.ShipNumber,
                    //    ProjectNumber = impItem.ProjectNumber,
                    //    ProcessName = impItem.ProcessName,
                    //    PipeFittingCode = impItem.PipeFittingCode,
                    //    PreSerialNumber = impItem.PreSerialNumber,
                    //    PipeSpecCode = impItem.PipeSpecCode,
                    //    PipeSectionName = impItem.PipeSectionName,
                    //    OuterDiameter = impItem.OuterDiameter,
                    //    Thickness = impItem.Thickness,
                    //    Material = impItem.Material,
                    //    ProcessRouteNumber = impItem.ProcessRouteNumber,
                    //    PlannedStartTime = impItem.PlannedStartTime,
                    //    PlannedEndTime = impItem.PlannedEndTime,
                    //    TeamInfo = impItem.TeamInfo,
                    //    Timestamp = impItem.Timestamp,
                    //    Remark = impItem.Remark,
                    //};
                    workTaskUpdateDtos.Add((impItem.RowIndex, oldWorkTask.Id, oldWorkTask));
                }
                else
                {
                    var workTaskCreateDto = new WorkTaskCreateDto { };
                    workTaskCreateDto = ObjectMapper.Map(impItem, workTaskCreateDto); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    //var workTaskCreateDto = new WorkTaskCreateDto
                    //{
                    //    Son_TaskCode = impItem.Son_TaskCode,
                    //    TaskCode = impItem.TaskCode,
                    //    WorkPlanStatus = impItem.WorkPlanStatus,
                    //    CallMaterialStatus = impItem.CallMaterialStatus,
                    //    DataIdentifier = impItem.DataIdentifier,
                    //    MaterialMode = impItem.MaterialMode,
                    //    Length = impItem.Length,
                    //    MarkingContent = impItem.MarkingContent,
                    //    MarkingPosition = impItem.MarkingPosition,
                    //    CuttingPosition = impItem.CuttingPosition,
                    //    Quantity = impItem.Quantity,
                    //    FlangeThickness = impItem.FlangeThickness,
                    //    FlangeInnerDiameter = impItem.FlangeInnerDiameter,
                    //    WeldingHeatInput = impItem.WeldingHeatInput,
                    //    PipeAllowableStress = impItem.PipeAllowableStress,
                    //    PipeDiameter = impItem.PipeDiameter,
                    //    PipeWallThickness = impItem.PipeWallThickness,
                    //    FactoryCode = impItem.FactoryCode,
                    //    ProductCode = impItem.ProductCode,
                    //    WorkstationCode = impItem.WorkstationCode,
                    //    EquipmentCode = impItem.EquipmentCode,
                    //    ProdLineCode = impItem.ProdLineCode,
                    //    ShipNumber = impItem.ShipNumber,
                    //    ProjectNumber = impItem.ProjectNumber,
                    //    ProcessName = impItem.ProcessName,
                    //    PipeFittingCode = impItem.PipeFittingCode,
                    //    PreSerialNumber = impItem.PreSerialNumber,
                    //    PipeSpecCode = impItem.PipeSpecCode,
                    //    PipeSectionName = impItem.PipeSectionName,
                    //    OuterDiameter = impItem.OuterDiameter,
                    //    Thickness = impItem.Thickness,
                    //    Material = impItem.Material,
                    //    ProcessRouteNumber = impItem.ProcessRouteNumber,
                    //    PlannedStartTime = impItem.PlannedStartTime,
                    //    PlannedEndTime = impItem.PlannedEndTime,
                    //    TeamInfo = impItem.TeamInfo,
                    //    Timestamp = impItem.Timestamp,
                    //    Remark = impItem.Remark,
                    //};
                    workTaskCreateDtos.Add((impItem.RowIndex, workTaskCreateDto));
                }
            }
        }
            var duplicateWorkTasks = importItems.GroupBy(x => x.Son_TaskCode).Where(x => x.Count() > 1).ToList();
            if (duplicateWorkTasks?.Any() == true)
            {
                var duplicateWorkTaskMsgs = duplicateWorkTasks.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
                var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWorkTaskMsgs)},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
            #endregion
            foreach (var impItem in importItems)
            {
                if (impItem.Son_TaskCode.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (impItem.Son_TaskCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WorkTask名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldWorkTask = await _workTaskRepository.FindByNameAsync(impItem.Son_TaskCode);
                if (oldWorkTask != null)
                {
                    oldWorkTask = ObjectMapper.Map(impItem, oldWorkTask); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    workTaskUpdateDtos.Add((impItem.RowIndex, oldWorkTask.Id, oldWorkTask));
                }
                else
                {
                    var workTaskCreateDto = new WorkTaskCreateDto { };
                    workTaskCreateDto = ObjectMapper.Map(impItem, workTaskCreateDto); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    workTaskCreateDtos.Add((impItem.RowIndex, workTaskCreateDto));
                }
            }
        }
        // æ–°å¢ž 
        foreach (var workTaskDto in workTaskCreateDtos)
        {
            try
            {
        foreach (var workTaskDto in workTaskCreateDtos)
        {
            try
            {
                workTaskDto.Item.CreatorName = myCurrentUser.UserAccount;//创建人 
                await CreateAsync(workTaskDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{workTaskDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
                await CreateAsync(workTaskDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{workTaskDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–° 
        foreach (var oldWorkObj in workTaskUpdateDtos)
        {
            try
            {
                oldWorkObj.Item.LastModifierName = myCurrentUser.UserAccount;//修改人
                await _workTaskRepository.UpdateAsync(oldWorkObj.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{oldWorkObj.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
        foreach (var workTaskDto in workTaskUpdateDtos)
        {
            try
            {
                workTaskDto.Item.LastModifierName = myCurrentUser.UserAccount;//修改人
                await _workTaskRepository.UpdateAsync(workTaskDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{workTaskDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
    /// <summary> 
    /// å¯¼å‡ºä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkTaskInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkTaskInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
        //动态构造查询条件  
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await _workTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = "作业任务";
        return (sheets, fileName);
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await _workTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = "作业任务";
        return (sheets, fileName);
    }
    /// <summary> 
    /// æ ¡éªŒä½œä¸šä»»åŠ¡è¡¨ï¼Œå½“æ–°å»ºæˆ–æ›´æ–°æ—¶ 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    protected Task CheckCreateOrUpdateDtoAsync(WorkTaskCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
        Check.NotNullOrWhiteSpace(input.Son_TaskCode, "子任务编码", 256);
    protected Task CheckCreateOrUpdateDtoAsync(WorkTaskCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
                Check.NotNullOrWhiteSpace(input.Son_TaskCode, "子任务编码", 256);
        Check.NotNullOrWhiteSpace(input.TaskCode, "任务编码", 256);
        Check.NotNull(input.WorkPlanStatus, "计划状态");
        Check.NotNull(input.CallMaterialStatus, "叫料状态");
@@ -550,21 +422,21 @@
        Check.NotNull(input.PipeWallThickness, "套管直径(mm)");
        Check.NotNull(input.OuterDiameter, "外径(mm)");
        Check.NotNull(input.Thickness, "壁厚(mm)");
        return Task.CompletedTask;
    }
    /// <summary>
        return Task.CompletedTask;
    }
     /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ä½œä¸šä»»åŠ¡è¡¨åˆ—è¡¨ 
    /// </summary> 
    /// <param name="whereConditions"></param> 
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public async Task<List<WorkTask>> GetListByFilterAsync(Expression<Func<WorkTask, bool>> whereConditions, CancellationToken cancellationToken = default)
    {
        return await _workTaskRepository.GetListByFilterAsync(whereConditions);
    }
    public async Task<List<WorkTask>> GetListByFilterAsync(Expression<Func<WorkTask, bool>> whereConditions, CancellationToken cancellationToken = default)
    {
        return await _workTaskRepository.GetListByFilterAsync(whereConditions);
    }
    /// <summary> 
    ///  æ ¹æ®æ¡ä»¶èŽ·å–å•ä¸ªä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary> 
@@ -573,59 +445,59 @@
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public async Task<WorkTask> GetSingleByFilterAsync(Expression<Func<WorkTask, bool>> whereConditions, bool is​MultipleThrowException = false, CancellationToken cancellationToken = default)
    {
        return await _workTaskRepository.GetSingleByFilterAsync(whereConditions, is​MultipleThrowException);
    }
    /// <summary>
    public async Task<WorkTask> GetSingleByFilterAsync(Expression<Func<WorkTask, bool>> whereConditions, bool is​MultipleThrowException = false, CancellationToken cancellationToken = default)
    {
        return await _workTaskRepository.GetSingleByFilterAsync(whereConditions, is​MultipleThrowException);
    }
     /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ä½œä¸šä»»åŠ¡è¡¨åˆ—è¡¨ 
    /// </summary>  
    /// <param name="input"></param>  
    /// <returns></returns>  
    public virtual async Task<List<WorkTaskDto>> FindListByFilterAsync(GetWorkTaskInput input, CancellationToken cancellationToken = default)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
    public virtual async Task<List<WorkTaskDto>> FindListByFilterAsync(GetWorkTaskInput input, CancellationToken cancellationToken = default)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶   
        //动态构造查询条件   
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await _workTaskRepository.GetListByFilterAsync(whereConditions?.data);
        return new List<WorkTaskDto>(ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(list));
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await _workTaskRepository.GetListByFilterAsync(whereConditions?.data);
        return new List<WorkTaskDto>(ObjectMapper.Map<List<WorkTask>, List<WorkTaskDto>>(list));
    }
    /// <summary>  
    /// æ ¹æ®æ¡ä»¶èŽ·å–å•ä¸ªä½œä¸šä»»åŠ¡è¡¨ 
    /// </summary>  
    /// <param name="input"></param>  
    /// <returns></returns>  
    public virtual async Task<WorkTaskDto> FindSingleByFilterAsync(GetWorkTaskInput input, CancellationToken cancellationToken = default)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
    public virtual async Task<WorkTaskDto> FindSingleByFilterAsync(GetWorkTaskInput input, CancellationToken cancellationToken = default)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkTask.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶   
        //动态构造查询条件   
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var dataObj = await _workTaskRepository.GetSingleByFilterAsync(whereConditions?.data);
        return (ObjectMapper.Map<WorkTask, WorkTaskDto>(dataObj));
    }
}
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var dataObj = await _workTaskRepository.GetSingleByFilterAsync(whereConditions?.data);
        return (ObjectMapper.Map<WorkTask, WorkTaskDto>(dataObj));
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkTaskAutoMapperProfile.cs
@@ -1,36 +1,32 @@
using AutoMapper;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using Volo.Abp.ObjectExtending;
using static CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask.WorkTasksImportModel;
namespace CMS.Plugin.PipeLineLems.Application.MapperProfiles;
using AutoMapper;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using Volo.Abp.ObjectExtending;
using static CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask.WorkTasksImportModel;
namespace CMS.Plugin.PipeLineLems.Application.MapperProfiles;
/// <summary> 
/// ä½œä¸šä»»åŠ¡è¡¨AutoMapper配置 
/// </summary> 
/// <seealso cref="AutoMapper.Profile" /> 
public class WorkTaskAutoMapperProfile : Profile
{
public class WorkTaskAutoMapperProfile : Profile
{
    /// <summary> 
    /// Initializes a new instance of the <see cref="WorkTaskAutoMapperProfile"/> class. 
    /// </summary> 
    public WorkTaskAutoMapperProfile()
    {
    public WorkTaskAutoMapperProfile()
    {
        /* You can configure your AutoMapper mapping configuration here. 
         * Alternatively, you can split your mapping configurations 
         * into multiple profile classes for a better organization. */
        CreateMap<WorkTask, WorkTaskDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskCreateDto, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWorkTaskInput, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkPlanCreateDto, WorkTaskCreateDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskUpdateDto, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskImportModel, WorkTaskCreateDto>(MemberList.None);
        CreateMap<WorkTaskImportModel, WorkTaskUpdateDto>(MemberList.None);
        CreateMap<WorkTaskImportModel, WorkTask>(MemberList.None);
    }
}
         * into multiple profile classes for a better organization. */
        CreateMap<WorkTask, WorkTaskDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskCreateDto, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWorkTaskInput, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskUpdateDto, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskImportModel, WorkTaskCreateDto>(MemberList.None);
        CreateMap<WorkTaskImportModel, WorkTaskUpdateDto>(MemberList.None);
        CreateMap<WorkTaskImportModel, WorkTask>(MemberList.None);
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkTaskµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/AppService/AppService_Generate.cs
@@ -44,13 +44,13 @@
            }
            str = str.Replace("$UpdateAttributesForCheckCreateOrUpdateDtoAsync$", attrString);
            attrString = "";
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttribute_AppService_ImportAsync(newColumnNameList[i], param);
            }
            str = str.Replace("$AppService_ImportAsync$", attrString);
            //优化,这代码不用了
            //attrString = "";
            //for (int i = 0; i < newColumnNameList.Count; ++i)
            //{
            //    attrString += StructStrHelper.GenerateAttribute_AppService_ImportAsync(newColumnNameList[i], param);
            //}
            //str = str.Replace("$AppService_ImportAsync$", attrString);
            return str;
        }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/AppServiceÄ£°å.txt
@@ -289,7 +289,7 @@
        Check.NotNull(input, nameof(input));
        var $EntityInstanceName$CreateDtos = new List<(int RowIndex, $EntityName$CreateDto Item)>();
        var $EntityInstanceName$UpdateDtos = new List<(int RowIndex, Guid Id, $EntityName$UpdateDto Item)>();
        var $EntityInstanceName$UpdateDtos = new List<(int RowIndex, Guid Id, $EntityName$ Item)>();
        var importItems = input.$EntityName$s;
        if (importItems != null && importItems.Any())
@@ -323,20 +323,13 @@
                var old$EntityName$ = await _$EntityInstanceName$Repository.FindByNameAsync(impItem.$ValidateRepeatName$);
                if (old$EntityName$ != null)
                {
                    var $EntityInstanceName$UpdateDto = new $EntityName$UpdateDto
                    {
                        $AppService_ImportAsync$
                    };
                    $EntityInstanceName$UpdateDtos.Add((impItem.RowIndex, old$EntityName$.Id, $EntityInstanceName$UpdateDto));
                    old$EntityName$ = ObjectMapper.Map(impItem, old$EntityName$); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    $EntityInstanceName$UpdateDtos.Add((impItem.RowIndex, old$EntityName$.Id, old$EntityName$));
                }
                else
                {
                    var $EntityInstanceName$CreateDto = new $EntityName$CreateDto
                    {
                        $AppService_ImportAsync$
                    };
                    var workTaskCreateDto = new $EntityName$CreateDto { };
                    workTaskCreateDto = ObjectMapper.Map(impItem, workTaskCreateDto); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    $EntityInstanceName$CreateDtos.Add((impItem.RowIndex, $EntityInstanceName$CreateDto));
                }
            }
@@ -363,7 +356,7 @@
            try
            {
                $EntityInstanceName$Dto.Item.LastModifierName = myCurrentUser.UserAccount;//修改人
                await UpdateAsync($EntityInstanceName$Dto.Id, $EntityInstanceName$Dto.Item);
                await _$EntityInstanceName$Repository.UpdateAsync($EntityInstanceName$Dto.Item);
            }
            catch (Exception e)
            {
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Application/MapperProfiles/AutoMapperProfileÄ£°å.txt
@@ -2,6 +2,7 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using Volo.Abp.ObjectExtending;
using static CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$.$EntityName$sImportModel;
namespace CMS.Plugin.$NameSpacePath$.Application.MapperProfiles;