Administrator
3 years ago
3 changed files with 429 additions and 1 deletions
@ -0,0 +1,228 @@ |
|||
|
|||
using EFCore.BulkExtensions; |
|||
using Magicodes.ExporterAndImporter.Core; |
|||
using Magicodes.ExporterAndImporter.Excel; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Microsoft.EntityFrameworkCore; |
|||
using Shouldly; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Domain.Repositories; |
|||
using Volo.Abp.Uow; |
|||
using Win.Abp.Snowflakes; |
|||
using Win.Sfs.BaseData.ImportExcelCommon; |
|||
using Win.Sfs.SettleAccount.CommonManagers; |
|||
using Win.Sfs.SettleAccount.Constant; |
|||
using Win.Sfs.SettleAccount.Entities.Wms; |
|||
using Win.Sfs.SettleAccount.Entities.Wms.WmsSumOutput; |
|||
using Win.Sfs.SettleAccount.Reports; |
|||
using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report; |
|||
using Win.Sfs.Shared.DomainBase; |
|||
using Win.Sfs.Shared.Filter; |
|||
|
|||
namespace Win.Sfs.SettleAccount.Entities.WMS |
|||
{ |
|||
[Authorize(SettleAccountPermissions.WMSJIT.Default)] |
|||
[Route("api/settleaccount/WMSOutputDetailCancelDiffReport")] |
|||
public class WMSOutputDetailCancelDiffReportAppService : |
|||
SettleAccountApplicationBase<WmsDetailDiffReport> |
|||
{ |
|||
private readonly ISettleAccountBranchEfCoreRepository<WmsDetailDiffReport, Guid> _wmsRepository; |
|||
private readonly WmsOutputSumDapperRepository _dapper; |
|||
private readonly IExcelImportAppService _excelImportService; |
|||
|
|||
private readonly ErpSumOutputDapperRepository _erpDapper; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
/// <param name="wmsRepository"></param>
|
|||
/// <param name="job"></param>
|
|||
|
|||
public WMSOutputDetailCancelDiffReportAppService( |
|||
WmsOutputSumDapperRepository dapper, |
|||
ISettleAccountBranchEfCoreRepository<WmsDetailDiffReport, Guid> wmsRepository, |
|||
ISettleAccountBranchEfCoreRepository<TaskJob, Guid> job, |
|||
IExcelImportAppService excelImportService, |
|||
IDistributedCache<WmsDetailDiffReport> cache, |
|||
ISnowflakeIdGenerator snowflakeIdGenerator, |
|||
ICommonManager commonManager, |
|||
ErpSumOutputDapperRepository erpDapper |
|||
) : base(cache, excelImportService, snowflakeIdGenerator, commonManager) |
|||
{ |
|||
_erpDapper = erpDapper; |
|||
_wmsRepository = wmsRepository; |
|||
_dapper = dapper; |
|||
_excelImportService = excelImportService; |
|||
|
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("Make")] |
|||
[UnitOfWork(false)] |
|||
public async Task<string> ReportMake(string version, DateTime accountDate) |
|||
{ |
|||
var _ls = _dapper.GetWmsSumCancelReportList(version, "0");//报表
|
|||
|
|||
var _count = _wmsRepository.Count(p => p.Version == version && p.State > 0); |
|||
if (_count > 0) |
|||
{ |
|||
throw new BusinessException("8899", "不能重新生成此版本!"); |
|||
} |
|||
else |
|||
{ |
|||
var query = _wmsRepository.Where(p => p.Version == version); |
|||
await query.BatchDeleteAsync(); |
|||
} |
|||
List<WmsDetailDiffReport> _lst = new List<WmsDetailDiffReport>(); |
|||
if (_ls != null && _ls.Count() > 0) |
|||
{ |
|||
foreach (var itm in _ls) |
|||
{ |
|||
_lst.Add(new WmsDetailDiffReport( |
|||
Guid.NewGuid(), |
|||
itm.客户, |
|||
itm.出库类型, |
|||
version, |
|||
itm.结算单, |
|||
itm.通用代码号, |
|||
itm.物料号, |
|||
itm.结算数量, |
|||
itm.实际出库数量, |
|||
itm.差异数量, |
|||
itm.物料组编码, |
|||
itm.物料组车型, |
|||
itm.物料描述, |
|||
itm.备注, |
|||
0)); |
|||
} |
|||
} |
|||
await _wmsRepository.GetDbContext().BulkInsertAsync(_lst); |
|||
return ApplicationConsts.SuccessStr; |
|||
} |
|||
/// <summary>
|
|||
/// Wms汇总合计明细
|
|||
/// </summary>
|
|||
/// <param name="input"></param>
|
|||
/// <returns></returns>
|
|||
[HttpPost] |
|||
[Route("WmsDetailReport")] |
|||
|
|||
virtual public async Task<PagedResultDto<WmsDetailDiffReport>> GetListAsync(WmsRequestDetailReportDto input) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Version", Logic = EnumFilterLogic.And, Value = input.Version }); |
|||
//客户过滤
|
|||
if (!string.IsNullOrEmpty(input.Client)) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Client", Logic = EnumFilterLogic.And, Value = input.Client }); |
|||
} |
|||
//出库类型
|
|||
if (!string.IsNullOrEmpty(input.Type)) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Type", Logic = EnumFilterLogic.And, Value = input.Type }); |
|||
} |
|||
var entities = await _wmsRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, input.MaxResultCount, |
|||
input.SkipCount, true); |
|||
var totalCount = await GetCountAsync(input); |
|||
return new PagedResultDto<WmsDetailDiffReport>(totalCount, entities); |
|||
} |
|||
|
|||
|
|||
private async Task<long> GetCountAsync(WmsRequestDetailReportDto input) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Version", Logic = EnumFilterLogic.And, Value = input.Version }); |
|||
return await _wmsRepository.GetCountByFilterAsync(GuidGenerator.Create(), input.Filters); |
|||
} |
|||
[HttpPost] |
|||
[Route("ModifyTaskState")] |
|||
|
|||
public virtual async Task<bool> ModifyTaskState(List<Guid> guids) |
|||
{ |
|||
if (guids != null && guids.Count() > 0) |
|||
{ |
|||
var str = "DECLARE @return_value int \n" + |
|||
"EXEC @return_value = [dbo].[p_wms_interface_cancel]\n" + |
|||
"@billnum = N'{0}', \n" + |
|||
"@type = {1}, \n" + |
|||
"@date = N'{2}', \n" + |
|||
"@switchcode = N'{3}', \n" + |
|||
"@partcode = N'{4}' \n" + |
|||
"SELECT 'Return Value' = @return_value "; |
|||
|
|||
var _ls = _wmsRepository.Where(p => guids.Contains(p.Id)); |
|||
foreach (var itm in _ls) |
|||
{ |
|||
var sql = string.Format(str, itm.BillNum, itm.Type, DateTime.Now, itm.SwitchCode, itm.MaterialCode); |
|||
_wmsRepository.GetDbContext().Database.SetCommandTimeout(300); |
|||
await _wmsRepository.GetDbContext().Database.ExecuteSqlRawAsync( |
|||
sql |
|||
); |
|||
} |
|||
} |
|||
//_wmsRepository.Where(p => p.BillNum ==)
|
|||
return true; |
|||
} |
|||
//[HttpPost]
|
|||
//[Route("Output")]
|
|||
|
|||
//virtual public async Task<bool> OutputAsync(WmsRequestDetailReportDto input)
|
|||
//{
|
|||
// var entities = await _wmsRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, int.MaxValue,
|
|||
// 0, true);
|
|||
// List<WmsDetailDiffReport> _ls = new List<WmsDetailDiffReport>();
|
|||
// if (entities.Count() > 0)
|
|||
// {
|
|||
// var _entity = entities.FirstOrDefault();
|
|||
// if (_entity != null)
|
|||
// {
|
|||
// var _version = _entity.Version;
|
|||
// var _accountDate = _entity.AccountDate;
|
|||
// _erpDapper.InsertWmsSum(_ls, _version, _accountDate);
|
|||
// }
|
|||
// }
|
|||
// return true;
|
|||
//}
|
|||
[HttpPost] |
|||
[Route("Export")] |
|||
virtual public async Task<string> ExportAsync(WmsRequestDetailReportDto input) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Version", Logic = EnumFilterLogic.And, Value = input.Version }); |
|||
//客户过滤
|
|||
if (!string.IsNullOrEmpty(input.Client)) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Client", Logic = EnumFilterLogic.And, Value = input.Client }); |
|||
} |
|||
//出库类型
|
|||
if (!string.IsNullOrEmpty(input.Type)) |
|||
{ |
|||
input.Filters.Add(new FilterCondition() { Action = EnumFilterAction.Equal, Column = "Type", Logic = EnumFilterLogic.And, Value = input.Type }); |
|||
} |
|||
var entities = await _wmsRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, int.MaxValue, |
|||
0, true); |
|||
var dtoDetails = ObjectMapper.Map<List<WmsDetailDiffReport>, List<WmsDetailDiffReportDto>>(entities); |
|||
IExporter _excel = new ExcelExporter(); |
|||
byte[] result = null; |
|||
var _fileName = string.Format("撤销清单报表_{0}.xlsx", Guid.NewGuid().ToString()); |
|||
result = await _excel.ExportAsByteArray(dtoDetails); |
|||
result.ShouldNotBeNull(); |
|||
//保存导出文件到服务器存成二进制
|
|||
await _excelImportService.SaveBlobAsync( |
|||
new SaveExcelImportInputDto |
|||
{ |
|||
Name = _fileName, |
|||
Content = result |
|||
} |
|||
); |
|||
return _fileName; |
|||
} |
|||
|
|||
|
|||
} |
|||
} |
Loading…
Reference in new issue