diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Materials/MaterialDtoBase.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Materials/MaterialDtoBase.cs
index 671f842a..5cce368d 100644
--- a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Materials/MaterialDtoBase.cs
+++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Materials/MaterialDtoBase.cs
@@ -9,9 +9,92 @@ using Win.Sfs.Shared;
using Win.Sfs.Shared.Constant;
using Win.Sfs.Shared.DtoBase;
-namespace Win.Sfs.SettleAccount.Entities.Materials
+
+namespace Win.Sfs.SettleAccount.Entities.Errors
{
+ public class ErrorBillDto
+ {
+ ///
+ ///错误单据号
+ ///
+ public string BillNum { get; protected set; }
+
+ ///
+ /// 物料号
+ ///
+ public string MaterialCode { set; get; }
+
+ ///
+ /// 发货单号
+ ///
+ public string WmsBillNum { set; get; }
+
+
+ }
+ public class ErrorBillImportDto
+ {
+ ///
+ ///错误单据号
+ ///
+ public string BillNum { get; protected set; }
+
+ ///
+ /// 物料号
+ ///
+ public string MaterialCode { set; get; }
+
+ ///
+ /// 发货单号
+ ///
+ public string WmsBillNum { set; get; }
+
+ }
+
+ public class ErrorBillExportDto
+ {
+ ///
+ ///错误单据号
+ ///
+ public string BillNum { get; protected set; }
+
+ ///
+ /// 物料号
+ ///
+ public string MaterialCode { set; get; }
+
+ ///
+ /// 发货单号
+ ///
+ public string WmsBillNum { set; get; }
+
+ }
+
+
+
+ public class ErrorBillRequestDto : RequestDtoBase, IBranch
+ {
+ ///错误单据号
+ ///
+ public string BillNum { get; protected set; }
+
+ ///
+ /// 物料号
+ ///
+ public string MaterialCode { set; get; }
+
+ ///
+ /// 发货单号
+ ///
+ public string WmsBillNum { set; get; }
+ public Guid BranchId { get; set; }
+ }
+}
+
+
+
+namespace Win.Sfs.SettleAccount.Entities.Materials
+{
public class MaterialImportDtoTH
{
[ImporterHeader(Name= "PART NUMBER COMP")]
diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/ErrorListBill/ErrorBillAppService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/ErrorListBill/ErrorBillAppService.cs
new file mode 100644
index 00000000..3b5e31a0
--- /dev/null
+++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/ErrorListBill/ErrorBillAppService.cs
@@ -0,0 +1,354 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using EFCore.BulkExtensions;
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Distributed;
+using Shouldly;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+using Volo.Abp.BackgroundJobs;
+using Volo.Abp.Caching;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Guids;
+using Volo.Abp.ObjectMapping;
+using Volo.Abp.Uow;
+using Win.Abp.Snowflakes;
+using Win.Sfs.BaseData.ImportExcelCommon;
+using Win.Sfs.SettleAccount.Boms;
+using Win.Sfs.SettleAccount.CommonManagers;
+using Win.Sfs.SettleAccount.Constant;
+using Win.Sfs.SettleAccount.Entities.Boms;
+using Win.Sfs.SettleAccount.Entities.Errors;
+using Win.Sfs.SettleAccount.Entities.EstimatedInventories;
+using Win.Sfs.SettleAccount.Entities.ImportMap;
+using Win.Sfs.SettleAccount.Entities.Prices;
+using Win.Sfs.SettleAccount.Entities.TaskJobs;
+using Win.Sfs.SettleAccount.Errors;
+using Win.Sfs.SettleAccount.EstimatedInventories;
+using Win.Sfs.SettleAccount.ExcelImporter;
+using Win.Sfs.SettleAccount.ExportReports;
+
+
+using Win.Sfs.Shared.CacheBase;
+using Win.Utils;
+namespace Win.Sfs.SettleAccount.Entities.ErrorBills
+{
+
+ ///
+ /// 物料主数据应用服务
+ ///
+ // [Authorize(SettleAccountPermissions.ErrorBills.Default)]
+ //[AllowAnonymous]
+ [Route("api/settleaccount/ErrorBill")]
+ public class ErrorBillAppService : SettleAccountApplicationBase
+ {
+
+
+ private readonly IExcelImportAppService _excelImportService;
+ private readonly ISettleAccountBranchEfCoreRepository _repository;
+ private readonly ISettleAccountBranchEfCoreRepository _bomRepository;
+ private readonly ISettleAccountBranchEfCoreRepository _bomversionRepository;
+ private readonly ISettleAccountBranchEfCoreRepository _priceRepository;
+ private readonly ISettleAccountBranchEfCoreRepository _priceversionRepository;
+ private readonly ISettleAccountBranchEfCoreRepository _mapRepository;
+ //private readonly ISettleAccountBranchEfCoreRepository _relationshipRepository;
+ ///
+ /// 构建方法
+ ///
+ /// 构建UID
+ /// 自动map
+ /// 仓储接口
+ /// 缓存
+ public ErrorBillAppService(
+
+ ISettleAccountBranchEfCoreRepository repository,
+ ISettleAccountBranchEfCoreRepository mapRepository,
+ ISettleAccountBranchEfCoreRepository bomRepository,
+ ISettleAccountBranchEfCoreRepository bomversionRepository,
+ TaskJobService service,
+ //ISettleAccountBranchEfCoreRepository relationshipRepository,
+ ISettleAccountBranchEfCoreRepository priceRepository,
+ ISettleAccountBranchEfCoreRepository priceversionRepository,
+
+ IDistributedCache cache,
+ IExcelImportAppService excelImportService,
+ ISnowflakeIdGenerator snowflakeIdGenerator,
+ ICommonManager commonManager
+
+ ) : base(cache,excelImportService,snowflakeIdGenerator,commonManager)
+ {
+ _priceRepository = priceRepository;
+ _priceversionRepository = priceversionRepository;
+ _bomRepository = bomRepository;
+ _excelImportService = excelImportService;
+ _repository = repository;
+ //_relationshipRepository = relationshipRepository;
+ _mapRepository = mapRepository;
+ _bomversionRepository = bomversionRepository;
+
+ }
+
+
+ ///
+ /// 导入功能
+ ///
+ /// 上传的文件(前端已经限制只能上传一个附件)
+ ///
+ [HttpPost]
+ [Route("ExcelImport")]
+ [DisableRequestSizeLimit]
+
+ public async Task ErrorBillUploadExcelImportMap([FromForm] IFormFileCollection files,string version)
+ {
+ ExportImporter _exportImporter = new ExportImporter();
+ var result = await _exportImporter.ExtendExcelImport(files, _excelImportService);
+ return ApplicationConsts.SuccessStr;
+ }
+
+
+
+
+
+
+
+
+ ///
+ /// 导入功能
+ ///
+ /// 上传的文件(前端已经限制只能上传一个附件)
+ ///
+ [HttpPost]
+ [Route("ExcelImport")]
+ [DisableRequestSizeLimit]
+
+ public async Task ErrorBillUploadExcelImport([FromForm] IFormFileCollection files)
+ {
+ ExportImporter _exportImporter = new ExportImporter();
+ var result = await _exportImporter.UploadExcelImport(files, _excelImportService);
+ var _ls = ObjectMapper.Map, List>(result);
+ var checkList = new List();
+ foreach (var itm in _ls)
+ {
+
+
+
+ //var _first = await _repository.FirstOrDefaultAsync(p => p.ErrorBillCode == itm.ErrorBillCode);
+ //if (_first == null)
+ //{
+ //var entity = new ErrorBill(
+ // GuidGenerator.Create(),
+ // GuidGenerator.Create(),
+ // itm.Factory,
+ // itm.ErrorBillCode,
+ // itm.ErrorBillDesc,
+ // itm.Unit,
+ // itm.EstimateType,
+ // itm.EstimateTypeDesc
+ // );
+ // await _repository.InsertAsync(entity);
+ //}
+ //else
+ //{
+ //_first.Update(itm.ErrorBillDesc, itm.Unit, itm.EstimateType, itm.EstimateTypeDesc, itm.Factory
+ // );
+ //await _repository.UpdateAsync(_first);
+ //}
+ //var _f = await _relationshipRepository.FirstOrDefaultAsync(p => p.ErpErrorBillCode == itm.ErrorBillCode);
+ //if (_f != null)
+ //{
+ // _f.Update(itm.ErrorBillDesc, _f.ErrorBillProperty, _f.SettleErrorBillCode, _f.ShipMaterailCode);
+ // await _relationshipRepository.UpdateAsync(_f);
+ //}
+ //else
+ //{
+ // var _r = new ErrorBillRelationship(GuidGenerator.Create(), GuidGenerator.Create(), itm.ErrorBillCode, itm.ErrorBillDesc, string.Empty, string.Empty, string.Empty, itm.EstimateType);
+ // await _relationshipRepository.InsertAsync(_r);
+ //}
+
+
+
+
+ }
+ return ApplicationConsts.SuccessStr;
+ }
+
+
+
+ ///
+ /// 按ID获取唯一实体
+ ///
+ ///
+ /// 返回实体全部属性
+ ///
+ /// ID
+ /// 实体DTO
+ [HttpGet]
+ [Route("{id}")]
+
+ virtual public async Task GetAsync(Guid id)
+ {
+
+
+ var result = await GetFromCacheAsync(id);
+ var dto = ObjectMapper.Map(result);
+ return dto;
+ }
+
+
+ private async Task GetFromCacheAsync(Guid id)
+ {
+ var result = await _repository.GetAsync(id);
+
+ return result;
+ }
+
+
+ private async Task GetCountAsync(ErrorBillRequestDto input)
+ {
+ return await _repository.GetCountByFilterAsync(input.BranchId, input.Filters);
+ }
+
+
+
+
+ /////
+
+ ///
+ /// 根据筛选条件获取实体列表
+ ///
+ ///
+ /// 请求条件包括:筛选条件列表,排序条件,数据数量,页码
+ ///
+ /// 请求条件
+ /// 实体DTO列表
+ [HttpPost]
+ [Route("list")]
+
+ virtual public async Task> GetListAsync(ErrorBillRequestDto input)
+ {
+ var entities = await _repository.GetListByFilterAsync(input.BranchId, input.Filters, input.Sorting, input.MaxResultCount,
+ input.SkipCount, true);
+
+ var totalCount = await GetCountAsync(input);
+ var dtos = ObjectMapper.Map, List>(entities);
+
+ return new PagedResultDto(totalCount, dtos);
+ }
+
+
+ ///
+ /// 获取实体总数
+ ///
+ /// 实体总数
+ [HttpGet]
+ [Route("count")]
+
+ virtual public async Task GetTotalCountAsync(Guid branchId)
+ {
+ return await _repository.GetCountAsync(branchId);
+ }
+
+ ///
+ /// 获取全部实体列表
+ ///
+ /// 实体DTO列表
+ [HttpGet]
+ [Route("all")]
+
+ virtual public async Task> GetAllAsync(Guid branchId)
+ {
+ var entities = await _repository.GetAllAsync(branchId, true);
+ var dtos = ObjectMapper.Map, List>(entities);
+ return new ListResultDto(dtos);
+ }
+
+
+
+
+
+ ///
+ /// 新增实体
+ ///
+ /// 新增实体DTO
+ /// 实体DTO
+
+
+
+
+ ///
+ /// 删除实体
+ ///
+ /// ID
+ /// 无
+ [HttpDelete]
+ [Route("{id}")]
+
+ virtual public async Task DeleteAsync(Guid id)
+ {
+ var entity = await GetFromCacheAsync(id);
+ await Cache.DeleteAsync(id.ToString());
+ await _repository.DeleteAsync(id);
+ }
+
+ ///
+ /// 按IDs删除实体列表
+ ///
+ /// IDs
+ /// 是否执行成功
+ [HttpPost]
+ [Route("delete")]
+
+ virtual public async Task DeleteListAsync(List ids)
+ {
+ var _query = _repository.Where(p => ids.Contains(p.Id));
+ int i = await _query.BatchDeleteAsync();
+
+ if (i == 0)
+ {
+ return false;
+ }
+ return true;
+ }
+ [HttpPost]
+ [Route("Export")]
+
+ virtual public async Task ExportAsync(ErrorBillRequestDto input)
+ {
+ string _fileName = string.Format("错误单据_{0}.xlsx", DateTime.Now.ToString("yyyyMMdd"));
+ var entities = await _repository.GetListByFilterAsync(input.BranchId, input.Filters, input.Sorting, int.MaxValue,
+ 0, true);
+
+ var dtoDetails = ObjectMapper.Map, List>(entities);
+
+ //声明导出容器
+ ExportImporter _exportImporter = new ExportImporter();
+
+ var result = await _exportImporter.ExcelExporter(dtoDetails);
+
+ result.ShouldNotBeNull();
+
+ //保存导出文件到服务器存成二进制
+ await _excelImportService.SaveBlobAsync(
+ new SaveExcelImportInputDto
+ {
+ Name = _fileName,
+ Content = result
+ }
+ );
+ return _fileName;
+ }
+
+
+
+
+
+ }
+}
diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs
index 9a051ac7..89d2927d 100644
--- a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs
+++ b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs
@@ -91,6 +91,8 @@ using Win.Sfs.SettleAccount.Entities.WMS;
using Win.Sfs.SettleAccount.Entities;
using Win.Sfs.SettleAccount.Entities.UnHQSettleAccounts;
using Win.Sfs.SettleAccount.Entities.Wms.WmsSumOutput;
+using Win.Sfs.SettleAccount.Errors;
+using Win.Sfs.SettleAccount.Entities.Errors;
namespace Win.Sfs.SettleAccount
{
@@ -137,9 +139,6 @@ namespace Win.Sfs.SettleAccount
CreateMapSecondaryPriceRatioVersion();
CreateMapSecondaryAdjustmentVersion();
-
-
-
CreateMapEstimatedStockDiffReport();
CreateMapSendUnsettledDiffReport();
CreateMapStockSettledDiffReport();
@@ -268,12 +267,19 @@ namespace Win.Sfs.SettleAccount
CreateMapWMSDiffOutputSum();
CreateMapWMSWithCodeOutputSum();
CreateMapWMSCacelOutputSum();
+ CreateMapWMSErrorBill();
#endregion
}
#region 派格出库单
+ private void CreateMapWMSErrorBill()
+ {
+ CreateMap().ReverseMap();
+ CreateMap().ReverseMap();
+ }
+
private void CreateMapWMSOutputSum()
{
CreateMap().ReverseMap();
diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/ErrorBillNum/ErrorBillNum.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/ErrorBillNum/ErrorBillNum.cs
new file mode 100644
index 00000000..9cc5b4bb
--- /dev/null
+++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/ErrorBillNum/ErrorBillNum.cs
@@ -0,0 +1,31 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using Win.Sfs.Shared.DomainBase;
+
+using Win.Sfs.Shared.Constant;
+
+namespace Win.Sfs.SettleAccount.Errors
+{
+ ///
+ /// 错误单据
+ ///
+ public class ErrorBill : FullAuditedAggregateRootBase
+ {
+ ///
+ ///错误单据号
+ ///
+ public string BillNum { get; set; }
+
+ ///
+ /// 物料号
+ ///
+ public string MaterialCode { set; get; }
+
+ ///
+ /// 发货单号
+ ///
+ public string WmsBillNum { set; get; }
+
+
+ }
+}
\ No newline at end of file