From 037322809d45a56a2f4a48fb534f2b0816e8d90d Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 6 Jan 2022 17:26:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/Win.Sfs.SmartSettlementSystem.PG/v16/.suo | Bin 79872 -> 79872 bytes .../Entities/Wms/WmsJitOutPutDetialDto.cs | 4 +- .../ReportRequestDto/ReportRequestDto.cs | 29 ++ .../Entities/WMS/WMSHQFKanbanAppService.cs | 489 ++++++++++++++++++ .../WMS/WMSHQFSharePartAppService .cs | 418 +++++++++++++++ .../ReportServices/ReportMakeService.cs | 63 ++- .../SettleAccount.Application.xml | 134 +++++ .../Entities/HQ_H/HQ_H_Kanban.cs | 25 +- .../Entities/WMS/TaskList.cs | 281 +++++++++- ...AccountDbContextModelCreatingExtensions.cs | 72 ++- .../HQFSettledDetailDapperRepository.cs | 341 ++++++++++++ .../Report/KanbanUnSettledDapperRepository.cs | 2 - .../HQFSettledDetailDiffExportService.cs | 124 +++++ ...SharePartSettledDetailDiffExportService.cs | 123 +++++ .../SettleAccountJobModule.cs | 11 +- 15 files changed, 2042 insertions(+), 74 deletions(-) create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFKanbanAppService.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFSharePartAppService .cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/HQFSettledDetailDapperRepository.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSettledDetailDiffExportService.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSharePartSettledDetailDiffExportService.cs diff --git a/.vs/Win.Sfs.SmartSettlementSystem.PG/v16/.suo b/.vs/Win.Sfs.SmartSettlementSystem.PG/v16/.suo index caa323f28df59ec7639ee0e3cf8be776bbcbae02..59036805337d503f235961294f2ad03e5276d10c 100644 GIT binary patch delta 2704 zcmcIlZERCz6u$3WJ4$yqE?u`3Shp4mt7CWE^=ln&(phZE*x1SdF=Dchb`c_T%8DS8 zUikwVAGSS_@(~lWC>moHp~RZWj|uz%Oju%Kh`$K>!9z=ooaVXj zd(ZpPbDr~YmAe|{t|s2W#PgvCjOoD2R~B~I4BubkZ?SR?1@`j?m;)yGDOLs(c~vn3 zDyMQXiK7YM7a;VAMF<<>A?gcpEI^bXXglpyWpPfYzMJvA0#S*uAc_#QX3vc)aa@I{ z;<#GwG)|sDR3la+Y7i2l7O@5)BkB+igcGjm*NN+KM%TT7V*mlB0t@R*go+Ed;M-Qj zHpJmX=#wPhIxh)zL_(|#ckV`z(48a;aZWCii>jMMlNLeL&>o_RMiOIgPG@vDS7{>Z z)bq4&4w|+-E>BODCeY|DAnG+>)4M`sF?pwYzYOP;I`lp>sMefr1&-wDjG%H9=tnVy zhYKqUov3jk+=$6U_fhC7*kL77RM~?IgNP_%FXAl(Zd{QRf;!44+6M{227|)5K#8fc zIjt=G>8TjL0=Daf#K4iqH&^r*vgK$VQKj0PPl|pX-WE3$W(!L#BC(Zw!^h{l)DNG}pk`vl`fE_*S4eP(0L&*&2uz$Fx);`EbAF09y{x(ip3S z34GQ-v@FIXm?(>BselC7FWi`mx?@TERe_S8YFxbY z`>H#1beIJFvco+?>pTV*WDUj}P$03<4Do?gsR}c?esWV19GeXbw%?@w!vSlrGRpo2 zIS>f=od@4(Y}>h~H?Wg&ptC*)W9@e6x0*z%OOo$ScOBaGGIt%u+f6WHHG$9KBR8@> zPfc-LcJbXMa?&e8+#-X#;T15uWN5QG#ntgYcD;Ib-%F1!iCYH}-R0IJc<~T|+&YTm zF~o7i3B-E{%+V_C8JrZK52aYrxE`+Za(d9HVN8VmB^w1gNYSJ*o2yErh6!-rd_yQj zH8mi0DWAGb6Q)ANb%7d<+F0nAKuz=%f@F9VPtK7a=ng38=YRPE%x6xUT|ctq|B|8Y z0z*3lglhbwlx<1-YZ%Lho<0ETIt)t3lI1}NdX<@ZVoU$&6Nm8?@GJ-$|EARZ~2Z}p43bxnBS zK^}IpK6h`VC*13j++lZ*R;^iaay=$t%rlYuNM&` zcuiJbe=Q0=|L#u774Ul`uh-Ko$sU)(>y+J{oUPzt^XlW@1keBQ+0EjQU&M~q$$9&X zmnSb*w0`tKcqCQvdjs7vTieQwkAiRgIhTyz#%6?{Yrtn9`}1>7?jW`k%*U(^IGNK> zVWy#QIA{lDV=a7s^dj62+0$3s!tBZGa8?QB>TtM&2foP!N}~~>jx;x>l}3eK2=cl# zzj@LPjy3}rKJ1?njYxfO#ObJ)A`SI@k}J~JCv|(BbyBw{((Mh0Wp7;%eo^Lga*k;D zhKEW)@k_;X1O>+Y+h9qsn#hHbbxW5%DUD;zCGcBI@hmFmZDG1xpW|SY)tl{S*tUkh zLb@&~Y2{NT@1&lMrbkBt415P1Fn&h>%XVE#EMS&QpUBRz)blHuC+!)%z7=kF=plZk zG-ENc+w7!?wPads?8^nfhYZja&Ci$&>}QseE14k`U&MA~`b$}o!J%Jwfn|>+GgQO& zGI(=Kb*9?HM)Yv!mwqUE-vV7dMX3Ra`7#%+td)n$XNN#`7o|?sqUx57*;&#uHmi50 L$1O5DXJ_KylpjIe delta 2641 zcmd^=Urd`-6u`gp(Lx6;wB^sLpp@AbWG!n;=?cLO0`3pP&@y1m&1|IS^Wa6_yGsqZm^&DuiF~F0)=t+LP=bZ1{ z``vr)IbTDIlF*`L%n6!l*D63hmWag)<=Lg5BCGddmmmmrI3kWh0GGr#=y55n^d%*E z<0N^B@d@b}r0+=B{46&`SCF2Su#eIBH1P)qkrd+H%wlK=yDmdZ*tJLDq-QRol_&_i zauuDV94B5TuAwihiW>~VxCnaPACt}?jk8?se5qxO&@w}%<=Y+7GoX!Dlig#f`5&bur%NGl0q}(<^OAmm zj2mfqL3vmK+yz_}8xM_Sgr)dcc^Ger7I+?qRY7SfIXiGg)gt4HNyg$_wFCp|Z*V@> zh5^eFyp>)hOQ!&qh^|pyKx48+IQcQZP6AMbBl;t96+PpU+*mABD*-vK<(a!Y$=y`Xpo!2N%7)1gld>I6(M1de;Cos-gbgVZX1xZ_wN8_WRCzYog9l2;|Vx zDdn+U>=Z8Vn-v?k3khUrwYi7RHv5MB6`mn*@++KTV#HsYJv%lYp|hkE=k}jNgP4nT zpLXEA{pA>{o74@|5BMq?dVStL|H-3XzrWX8@A32x_xUTr^f#EhmW?P?@p8m5w@HE= zX25X$Y;3maU`9+l@C0z~qzq4Y>0-v#@2gOJL4%>%JR&)=o)-(%h5)|}^u~HWxSEgF z7B#B(_5GD;x5MlC5C(}WUcIALNIwpma kGkt1^z_<*WW||7%!_1inyPynku&sQiTn6_tCXFEf6InP~tN;K2 diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Wms/WmsJitOutPutDetialDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Wms/WmsJitOutPutDetialDto.cs index 25573de6..27e0e9c8 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Wms/WmsJitOutPutDetialDto.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/Wms/WmsJitOutPutDetialDto.cs @@ -287,8 +287,6 @@ namespace Win.Sfs.SettleAccount.Entities.Wms //物料号 public string MaterialCode { set; get; } - - [ImporterHeader(Name = "物料描述")] //物料描述 public string MaterialDesc { set; get; } @@ -301,6 +299,8 @@ namespace Win.Sfs.SettleAccount.Entities.Wms + + } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Reports/ReportRequestDto/ReportRequestDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Reports/ReportRequestDto/ReportRequestDto.cs index c91b3e6b..06b20e5b 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Reports/ReportRequestDto/ReportRequestDto.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Reports/ReportRequestDto/ReportRequestDto.cs @@ -6,6 +6,35 @@ using System.Threading.Tasks; namespace Win.Sfs.SettleAccount.Reports.ReportRequestDto { + + + + public class HQKanbanRequestDto + { + public string Version { set; get; } + public string MaterialCode { set; get; } + public string Begin { set; get; } + public string End { set; get; } + + + public string MaterialGroup { set; get; } + public string SapCode { set; get; } + + public string WarehouseDesc { set; get; } + + public string AcceptNo { set; get; } + + public string Kanban { set; get; } + + + + public string State { set; get; } + + + + + + } public class BaseRequestDto { public string Version { set; get; } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFKanbanAppService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFKanbanAppService.cs new file mode 100644 index 00000000..3a316357 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFKanbanAppService.cs @@ -0,0 +1,489 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Caching.Distributed; +using AutoMapper; +using System.Linq; +using System.Text; +using Volo.Abp.Guids; +using Volo.Abp.Application.Services; +using Volo.Abp.Caching; + +using Volo.Abp.ObjectMapping; +using Win.Sfs.SettleAccount.ExcelImporter; +using Win.Sfs.Shared.CacheBase; +using Win.Utils; +using Volo.Abp.Application.Dtos; +using Win.Sfs.BaseData.ImportExcelCommon; +using Volo.Abp.Domain.Repositories; +using EFCore.BulkExtensions; +using System.IO; +using Microsoft.EntityFrameworkCore; +using Win.Sfs.SettleAccount.Entities.SettleAccountVersion; +using Win.Sfs.SettleAccount.FISes; +using Win.Sfs.Shared.Enums.SettleAccount; +using Win.Sfs.Shared.Filter; +using Shouldly; +using Magicodes.ExporterAndImporter.Csv; +using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Excel; +using System.Data.Common; +using Volo.Abp.Uow; +using Volo.Abp; +using Win.Abp.Snowflakes; +using Win.Sfs.SettleAccount.CommonManagers; +using Win.Sfs.SettleAccount.ExportReports; +using Win.Sfs.SettleAccount.Constant; +using Win.Sfs.SettleAccount.MaterialRelationships; +using Win.Sfs.SettleAccount.Entities.TaskJobs; +using Magicodes.ExporterAndImporter.Core.Models; + +using TaskJob.Services; +using TaskJob.EventArgs; +using Win.Sfs.SettleAccount.Entities.WMS; +using Win.Sfs.SettleAccount.Entities.Wms; +using Win.Sfs.SettleAccount.Repository; +using WY.NewJit.Extends.PaiGe.WMS; +using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report; + +namespace Win.Sfs.SettleAccount.Entities.SettleAccounts +{ + /// + /// wms出库 + /// + + [AllowAnonymous] + [Route("api/settleaccount/WMSHQFKanbanoutput")] + public class WmsHQFKanbanAppService : + SettleAccountApplicationBase + { + + private readonly ISettleAccountBranchEfCoreRepository _wmsRepository; + private readonly ISettleAccountBranchEfCoreRepository _wmsVersionRepository; + private readonly WMSEfCoreRepository _wmsefRespository; + + private readonly WMSEfCoreRepository _wmstbRespository; + private readonly ISettleAccountBranchEfCoreRepository _job; + private readonly IExcelImportAppService _excelImportService; + + + private readonly TaskJobService _service; + /// + /// + /// + /// + /// + /// + /// + /// + public WmsHQFKanbanAppService( + + + IExcelImportAppService excelImportService, + + ISettleAccountBranchEfCoreRepository wmsRepository, + ISettleAccountBranchEfCoreRepository job, + ISettleAccountBranchEfCoreRepository wmsVersionRepository, + WMSEfCoreRepository wmsefRespository, + WMSEfCoreRepository wmstbRespository, + IDistributedCache cache, + ISnowflakeIdGenerator snowflakeIdGenerator, + ICommonManager commonManager + ) : base(cache, excelImportService, snowflakeIdGenerator, commonManager) + { + _job = job; + _wmstbRespository = wmstbRespository; + _wmsRepository = wmsRepository; + _wmsVersionRepository = wmsVersionRepository; + _wmsefRespository = wmsefRespository; + _excelImportService = excelImportService; + } + + private async Task GetCountAsync(WmsKanbanOutPutDetialRequestDto input) + { + return await _wmsRepository.GetCountByFilterAsync(GuidGenerator.Create(), input.Filters); + } + + private async Task GetCountAsync(WmsKanbanOutPutRequestDto input) + { + return await _wmsVersionRepository.GetCountByFilterAsync(GuidGenerator.Create(), input.Filters); + } + + /// + /// 准时化出库主表 + /// + /// + /// + [HttpPost] + [Route("WmsHQFKanbanList")] + //[Authorize(SettleAccountPermissions.SettleAccounts.Default)] + virtual public async Task> GetListAsync( WmsKanbanOutPutRequestDto input) + { + + var entities = await _wmsVersionRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, input.MaxResultCount, + input.SkipCount, true); + + var totalCount = await GetCountAsync(input); + + + return new PagedResultDto(totalCount, entities); + } + + /// + /// 准时化出库明细 + /// + /// + /// + [HttpPost] + [Route("WmsHQFKanbanDetailList")] + //[Authorize(SettleAccountPermissions.SettleAccounts.Default)] + virtual public async Task> GetListAsync(WmsKanbanOutPutDetialRequestDto input) + { + var entities = await _wmsRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, input.MaxResultCount, + input.SkipCount, true); + + var totalCount = await GetCountAsync(input); + return new PagedResultDto(totalCount, entities); + } + /// + /// 任务明细标记已确认 + /// + /// 上传的文件(前端已经限制只能上传一个附件) + /// + [HttpPost] + [Route("WmsHQFKanbanOutPutAudit")] + [DisableRequestSizeLimit] + + public async Task WmsHQFKanbanAudit(List ids) + { + var _joblist =await _job.Where(p => ids.Contains(p.Id)).ToListAsync(); + foreach (var itm in _joblist) + { + itm.FileName = "已确认"; + await _job.UpdateAsync(itm); + } + + return true; + } + + ///// + ///// 选择任务,生成出库单,只包含已确认的单据 + ///// + ///// + ///// + ///// + //[HttpPost] + //[Route("WmsWithOutKanbanOutPut")] + //public async Task WmsWithOutKanbanOutPut(WmsJitRequestDto input) + //{ + // var _billNum = "KA" + DateTime.Now.ToString("yyyyMMddhhmmss"); + + // var _joblist = _job.Where(p => input.Guids.Contains(p.Id) && p.FileName == "已确认").ToList(); + // if (_joblist.Count() > 0) + // { + // var fileList = _joblist.Select(p => p.RealDownFileName).ToList(); + // List _lst = new List(); + // foreach (var filename in fileList) + // { + // string fileSavePath = Environment.CurrentDirectory + @"\wwwroot\files\host\my-file-container\" + filename; + // ExcelHelper _excelHelper = new ExcelHelper(fileSavePath); + // var _list = _excelHelper.ExcelToList(); + // foreach (var itm in _list) + // { + + // var _entity= new WmsHQFKanbanOutPutDetial(GuidGenerator.Create(), string.Empty, string.Empty, itm.MaterialCode, itm.MaterialDesc + // , itm.SapMaterialGroup, string.Empty, string.Empty, 0, string.Empty, string.Empty, itm.Version, itm.SapMaterialCode, + // _billNum, Guid.Empty, string.Empty, itm.InvoiceQty,itm. + // ); + + // _lst.Add(_entity); + // } + + // } + + // var outPutDetail = await _wmsRepository.Where(p => p.Version == input.Version && p.Kanban==string.Empty).ToListAsync(); + + + // await _wmsRepository.GetDbContext().BulkInsertAsync(_lst, new BulkConfig() { BulkCopyTimeout = 0, BatchSize = 10000 }); + // int _count = _wmsVersionRepository.Count(p => p.Version == input.Version && p.BillNum == _billNum); + // if (_count == 0) + // { + // var _version = new WmsHQFKanbanOutPut(GuidGenerator.Create(), input.Version, _billNum, CurrentUser.Email); + + // await _wmsVersionRepository.InsertAsync(_version, true); + // } + + // foreach (var job in _joblist) + // { + // job.FileName = _billNum; + // await _job.UpdateAsync(job); + // } + // } + + // return ApplicationConsts.SuccessStr; ; + //} + + + /// + /// 选择任务,生成出库单,只包含已确认的单据 + /// + /// + /// + /// + [HttpPost] + [Route("WmsHQFKanbanOutPut")] + public async Task WmsHQFKanbanOutPut(WmsJitRequestDto input) + { + var _billNum = "K" + DateTime.Now.ToString("yyyyMMddhhmmss"); + + var _joblist = _job.Where(p => input.Guids.Contains(p.Id) && p.FileName == "已确认").ToList(); + if (_joblist.Count() > 0) + { + var fileList = _joblist.Select(p => p.RealDownFileName).ToList(); + List _lst = new List(); + foreach (var filename in fileList) + { + string fileSavePath = Environment.CurrentDirectory + @"\wwwroot\files\host\my-file-container\" + filename; + ExcelHelper _excelHelper = new ExcelHelper(fileSavePath); + var _list = _excelHelper.ExcelToList(); + foreach (var itm in _list) + { + + + + + + itm.SetData(GuidGenerator.Create(),string.Empty,!string.IsNullOrEmpty(itm.WmsBillNum)? itm.WmsBillNum:string.Empty,input.Version,GuidGenerator.Create()); + } + _lst.AddRange(_list.ToArray()); + } + // var _ls1 = _lst.Where(p => p.ParentMaterialCode == p.MaterialCode).ToList(); + var outPutDetail = await _wmsRepository.Where(p => p.Version == input.Version).ToListAsync(); + + var error = from itm1 in outPutDetail + join itm2 in _lst on + new { itm1.MaterialCode, itm1.Kanban} + equals + new { itm2.MaterialCode, itm2.Kanban } + select itm1; + var errList = error.GroupBy(p => new { p.BillNum }).Select(p => new { BillNum = p.Key.BillNum, Number = p.Sum(itm => itm.Qty) }); + if (errList.Count() == 0) + { + + var query = from itm1 in _lst + join itm2 in outPutDetail on + new { itm1.MaterialCode, itm1.Kanban } + equals + new { itm2.MaterialCode, itm2.Kanban } into temp1 + from tm1 in temp1.DefaultIfEmpty() + where tm1 == null + select itm1; + var _wmslst = query.ToList(); + foreach (var itm in _wmslst) + { + itm.BillNum = _billNum; + } + await _wmsRepository.GetDbContext().BulkInsertAsync(_wmslst, new BulkConfig() { BulkCopyTimeout = 0, BatchSize = 10000 }); + int _count = _wmsVersionRepository.Count(p => p.Version == input.Version && p.BillNum == _billNum); + if (_count == 0) + { + var _version = new WmsHQFKanbanOutPut(GuidGenerator.Create(), input.Version, _billNum, CurrentUser.Email); + + await _wmsVersionRepository.InsertAsync(_version, true); + } + + foreach (var job in _joblist) + { + job.FileName = _billNum; + await _job.UpdateAsync(job); + } + } + else + { + StringBuilder _buffer = new StringBuilder(); + foreach (var itm in errList) + { + _buffer.AppendFormat("出库单号:{0}重复记录数:{1}条", itm.BillNum, itm.Number); + } + var _errinfo = _buffer.ToString(); + + foreach (var job in _joblist) + { + job.FileName = _errinfo; + await _job.UpdateAsync(job); + } + } + } + else + { + _billNum = string.Empty; + } + return ApplicationConsts.SuccessStr; ; + } + /// + /// 出库界面功能,核准出库功能 + /// + /// + /// + /// + [HttpPost] + [Route("WmsHQFKanbanOutPut-Pass")] + [UnitOfWork(false)] + public async Task WmsHQFKanbanOutPutPass(WmsJitRequestDto input) + { + if (input.Guids != null) + { + List _ls = new List(); + if (input.Guids.Count() > 0) + { + _ls = await _wmsRepository.Where(p => input.Guids.Contains(p.Id) && p.Version ==input.Version && p.BillNum == input.BillNum && p.State != 2).ToListAsync(); + } + else + { + _ls = await _wmsRepository.Where(p => p.Version == input.Version && p.BillNum == input.BillNum && p.State != 2).ToListAsync(); + } + if (_ls.Count() > 0) + { + var sql = "DECLARE @return_value int\n" + + "EXEC @return_value = [dbo].[p_wms_output]\n" + + " @billnum = N'{0}',\n" + + " @type = 3\n" + + "SELECT 'Return Value' = @return_value"; + await _wmsRepository.GetDbContext().Database.ExecuteSqlRawAsync( + string.Format(sql, input.BillNum)); + + } + } + return true; + } + /// + ///出库界面功能, 撤销核准出库 + /// + /// + /// + /// + [HttpPost] + [Route("WmsHQFKanbanOutPut-Cancel")] + public async Task WmsHQFKanbanOutPutCancel(WmsJitRequestDto input) + { + var _ls = await _wmsRepository.Where(p => input.Guids.Contains(p.Id) && p.Version == input.Version && p.State == 1).ToListAsync(); + var _first = _ls.FirstOrDefault(); + if (_ls.Count()>0) + { + var _guid = GuidGenerator.Create(); + await _wmsefRespository.GetDbContext().BulkInsertAsync(_ls,new BulkConfig() { BulkCopyTimeout=0 }); + var uniapi = new TS_UNI_API(GuidGenerator.Create(), "1", input.Version, "WmsHQFKanbanOutPutDetail", _first.BillNum, 0,0, _guid) + { + TaskId = _guid, + SourceBillNum = _first.BillNum, + TableName = "WmsHQFKanbanOutPutDetail", + InterfaceType = "2", + Version = input.Version, + WmsState = 0, + SettleAccountState=0 + }; + var _l = new List(); + _l.Add(uniapi); + await _wmsefRespository.GetDbContext().BulkInsertAsync(_l); + } + return true; + } + [HttpPost] + [Route("ExcelImport")] + [DisableRequestSizeLimit] + //[Authorize(SettleAccountPermissions.SettleAccounts.Default)] + public async Task ExcelImport([FromForm] IFormFileCollection files, string version) + { + var _billNum = "K" + DateTime.Now.ToString("yyyyMMddhhmmss"); + ExportImporter _exportImporter = new ExportImporter(); + var result = await _exportImporter.ExtendExcelImport(files, _excelImportService); + List _lst = new List(); + var _lsCopy = new List(); + foreach (var itm in result) + { + WmsHQFKanbanOutPutDetial _detail = new WmsHQFKanbanOutPutDetial( + GuidGenerator.Create(), + itm.WmsBillNum, + itm.Kanban, + + itm.MaterialCode, + itm.MaterialDesc, + itm.MaterialGroup, + string.Empty, + string.Empty, + 0, + string.Empty, + string.Empty, + version, + itm.ParentMaterialCode, + itm.BillNum, + GuidGenerator.Create() + , string.Empty + , itm.Qty, + itm.PoLine + ); + _lsCopy.Add(_detail); + } + _lst.AddRange(_lsCopy.ToArray()); + + var _ls1 = _lst.Where(p => p.ParentMaterialCode == p.MaterialCode).ToList(); + var outPutDetail = await _wmsRepository.Where(p => p.Version == version).ToListAsync(); + + + var error = from itm1 in outPutDetail + join itm2 in _ls1 on + new { itm1.MaterialCode, itm1.Kanban } + equals + new { itm2.MaterialCode, itm2.Kanban } + select itm1; + var errList = error.GroupBy(p => new { p.BillNum }).Select(p => new { BillNum = p.Key.BillNum, Number = p.Sum(itm => itm.Qty) }); + + var checkList = new List(); + foreach (var itm in errList) + { + checkList.Add(new ErrorExportDto() { Message = string.Format("出库单号:{0}重复记录数:{1}条", itm.BillNum, itm.Number) }); + } + if (checkList.Count > 0) + { + + return await ExportErrorReportAsync(checkList); + } + + + + + + + + + + + var query = from itm1 in _ls1 + join itm2 in outPutDetail on + new { itm1.MaterialCode, itm1.Kanban } + equals + new { itm2.MaterialCode, itm2.Kanban } into temp1 + from tm1 in temp1.DefaultIfEmpty() + where tm1 == null + select itm1; + var _wmslst = query.ToList(); + foreach (var itm in _wmslst) + { + itm.BillNum = _billNum; + } + await _wmsRepository.GetDbContext().BulkInsertAsync(_wmslst, new BulkConfig() { BulkCopyTimeout = 0, BatchSize = 10000 }); + int _count = _wmsVersionRepository.Count(p => p.Version == version && p.BillNum == _billNum); + if (_count == 0) + { + var _version = new WmsHQFKanbanOutPut(GuidGenerator.Create(), version, _billNum, CurrentUser.Email); + await _wmsVersionRepository.InsertAsync(_version, true); + } + return _billNum; + } + + + } +} \ No newline at end of file diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFSharePartAppService .cs b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFSharePartAppService .cs new file mode 100644 index 00000000..3d8f673a --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSHQFSharePartAppService .cs @@ -0,0 +1,418 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Caching.Distributed; +using AutoMapper; +using System.Linq; +using System.Text; +using Volo.Abp.Guids; +using Volo.Abp.Application.Services; +using Volo.Abp.Caching; + +using Volo.Abp.ObjectMapping; +using Win.Sfs.SettleAccount.ExcelImporter; +using Win.Sfs.Shared.CacheBase; +using Win.Utils; +using Volo.Abp.Application.Dtos; +using Win.Sfs.BaseData.ImportExcelCommon; +using Volo.Abp.Domain.Repositories; +using EFCore.BulkExtensions; +using System.IO; +using Microsoft.EntityFrameworkCore; +using Win.Sfs.SettleAccount.Entities.SettleAccountVersion; +using Win.Sfs.SettleAccount.FISes; +using Win.Sfs.Shared.Enums.SettleAccount; +using Win.Sfs.Shared.Filter; +using Shouldly; +using Magicodes.ExporterAndImporter.Csv; +using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Excel; +using System.Data.Common; +using Volo.Abp.Uow; +using Volo.Abp; +using Win.Abp.Snowflakes; +using Win.Sfs.SettleAccount.CommonManagers; +using Win.Sfs.SettleAccount.ExportReports; +using Win.Sfs.SettleAccount.Constant; +using Win.Sfs.SettleAccount.MaterialRelationships; +using Win.Sfs.SettleAccount.Entities.TaskJobs; +using Magicodes.ExporterAndImporter.Core.Models; + +using TaskJob.Services; +using TaskJob.EventArgs; +using Win.Sfs.SettleAccount.Entities.WMS; +using Win.Sfs.SettleAccount.Entities.Wms; +using Win.Sfs.SettleAccount.Repository; +using WY.NewJit.Extends.PaiGe.WMS; +using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report; + +namespace Win.Sfs.SettleAccount.Entities.SettleAccounts +{ + /// + /// wms出库 + /// + + [AllowAnonymous] + [Route("api/settleaccount/wmsHQFSharePartoutput")] + public class WMSHQFSharePartAppService : + SettleAccountApplicationBase + { + private readonly ISettleAccountBranchEfCoreRepository _wmsRepository; + private readonly ISettleAccountBranchEfCoreRepository _wmsVersionRepository; + private readonly WMSEfCoreRepository _wmsefRespository; + + private readonly WMSEfCoreRepository _wmstbRespository; + private readonly ISettleAccountBranchEfCoreRepository _job; + private readonly IExcelImportAppService _excelImportService; + + private readonly TaskJobService _service; + /// + /// + /// + /// + /// + /// + /// + /// + public WMSHQFSharePartAppService( + + ISettleAccountBranchEfCoreRepository wmsRepository, + ISettleAccountBranchEfCoreRepository job, + ISettleAccountBranchEfCoreRepository wmsVersionRepository, + WMSEfCoreRepository wmsefRespository, + WMSEfCoreRepository wmstbRespository, + IExcelImportAppService excelImportService, + IDistributedCache cache, + ISnowflakeIdGenerator snowflakeIdGenerator, + ICommonManager commonManager + ) : base(cache, excelImportService, snowflakeIdGenerator, commonManager) + { + _excelImportService = excelImportService; + _job = job; + _wmstbRespository = wmstbRespository; + _wmsRepository = wmsRepository; + _wmsVersionRepository = wmsVersionRepository; + _wmsefRespository = wmsefRespository; + } + + private async Task GetCountAsync(WmsSharePartOutPutDetialRequestDto input) + { + return await _wmsRepository.GetCountByFilterAsync(GuidGenerator.Create(), input.Filters); + } + + private async Task GetCountAsync(WmsSharePartOutPutRequestDto input) + { + return await _wmsVersionRepository.GetCountByFilterAsync(GuidGenerator.Create(), input.Filters); + } + + /// + /// 准时化出库主表 + /// + /// + /// + [HttpPost] + [Route("WmsSharePartList")] + //[Authorize(SettleAccountPermissions.SettleAccounts.Default)] + virtual public async Task> GetListAsync(WmsSharePartOutPutRequestDto input) + { + + var entities = await _wmsVersionRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, input.MaxResultCount, + input.SkipCount, true); + + var totalCount = await GetCountAsync(input); + + + return new PagedResultDto(totalCount, entities); + } + + /// + /// 准时化出库明细 + /// + /// + /// + [HttpPost] + [Route("WmsSharePartDetailList")] + //[Authorize(SettleAccountPermissions.SettleAccounts.Default)] + virtual public async Task> GetListAsync(WmsSharePartOutPutDetialRequestDto input) + { + var entities = await _wmsRepository.GetListByFilterAsync(GuidGenerator.Create(), input.Filters, input.Sorting, input.MaxResultCount, + input.SkipCount, true); + + var totalCount = await GetCountAsync(input); + return new PagedResultDto(totalCount, entities); + } + /// + /// 任务明细标记已确认 + /// + /// 上传的文件(前端已经限制只能上传一个附件) + /// + [HttpPost] + [Route("WmsSharePartOutPutAudit")] + [DisableRequestSizeLimit] + + public async Task WmsSharePartAudit(List ids) + { + var _joblist = await _job.Where(p => ids.Contains(p.Id)).ToListAsync(); + foreach (var itm in _joblist) + { + itm.FileName = "已确认"; + } + foreach (var itm in _joblist) + { + await _job.UpdateAsync(itm); + } + var _count = await _job.BatchUpdateAsync(_joblist.ToList()); + if (_count > 0) + { + return true; + } + return false; + } + /// + /// 选择任务,生成出库单,只包含已确认的单据 + /// + /// + /// + /// + [HttpPost] + [Route("WmsSharePartOutPut")] + public async Task WmsSharePartOutPut(WmsJitRequestDto input) + { + var _billNum = "BHQ" + DateTime.Now.ToString("yyyyMMddhhmmss"); + var _joblist = _job.Where(p => input.Guids.Contains(p.Id) && p.FileName == "已确认").ToList(); + if (_joblist.Count() > 0) + { + var fileList = _joblist.Select(p => p.RealDownFileName).ToList(); + List _lst = new List(); + foreach (var filename in fileList) + { + string fileSavePath = Environment.CurrentDirectory + @"\wwwroot\files\host\my-file-container\" + filename; + ExcelHelper _excelHelper = new ExcelHelper(fileSavePath); + var _list = _excelHelper.ExcelToList(); + if (_list.Count() > 0) + { + var _lsAry = _list.Select(p => new + WmsHQFSharePartOutPutDetial( + GuidGenerator.Create(), + "", + string.Empty, + p.结算物料号, + p.物料描述, + p.物料组, + string.Empty, + string.Empty, + 0, + string.Empty, + string.Empty, + input.Version, + p.Sap编码, + _billNum, + GuidGenerator.Create(), + string.Empty, + p.结算数量 + + )); + _lst.AddRange(_lsAry.ToArray()); + } + } + + + + foreach (var itm in _lst) + { + itm.BillNum = _billNum; + } + await _wmsRepository.GetDbContext().BulkInsertAsync(_lst, new BulkConfig() { BulkCopyTimeout = 0, BatchSize = 10000 }); + int _count = _wmsVersionRepository.Count(p => p.Version == input.Version && p.BillNum == _billNum); + if (_count == 0) + { + var _version = new WmsHQFSharePartOutPut(GuidGenerator.Create(), input.Version, _billNum, CurrentUser.Email); + + await _wmsVersionRepository.InsertAsync(_version, true); + + } + + foreach (var job in _joblist) + { + job.FileName = _billNum; + await _job.UpdateAsync(job); + } + } + //return _billNum; + //else + //{ + // StringBuilder _buffer = new StringBuilder(); + // foreach (var itm in errList) + // { + // _buffer.AppendFormat("出库单号:{0}重复记录数:{1}条", itm.BillNum, itm.Number); + // } + // var _errinfo = _buffer.ToString(); + // foreach (var job in _joblist) + // { + // job.FileName = _errinfo; + // await _job.UpdateAsync(job); + // } + + // //} + //} + //else + //{ + // _billNum = string.Empty; + //} + return ApplicationConsts.SuccessStr; + } + /// + /// 出库界面功能,核准出库功能 + /// + /// + /// + /// + [HttpPost] + [Route("WmsSharePartOutPut-Pass")] + [UnitOfWork(false)] + public async Task WmsSharePartOutPutPass(WmsJitRequestDto input) + { + if (input.Guids != null) + { + List _ls = new List(); + if (input.Guids.Count() > 0) + { + _ls = await _wmsRepository.Where(p => input.Guids.Contains(p.Id) && p.Version == input.Version && p.BillNum == input.BillNum && p.State != 2).ToListAsync(); + } + else + { + _ls = await _wmsRepository.Where(p => p.Version == input.Version && p.BillNum == input.BillNum && p.State != 2).ToListAsync(); + } + if (_ls.Count() > 0) + { + var sql = "DECLARE @return_value int\n" + + "EXEC @return_value = [dbo].[p_wms_output]\n" + + " @billnum = N'{0}',\n" + + " @type = 2\n" + + "SELECT 'Return Value' = @return_value"; + await _wmsRepository.GetDbContext().Database.ExecuteSqlRawAsync( + string.Format(sql, input.BillNum)); + + } + } + return true; + } + /// + ///出库界面功能, 撤销核准出库 + /// + /// + /// + /// + [HttpPost] + [Route("WmsSharePartOutPut-Cancel")] + public async Task WmsSharePartOutPutCancel(WmsJitRequestDto input) + { + var _ls = await _wmsRepository.Where(p => input.Guids.Contains(p.Id) && p.Version == input.Version && p.State == 1).ToListAsync(); + var _first = _ls.FirstOrDefault(); + if (_ls.Count() > 0) + { + //var _guid = GuidGenerator.Create(); + //await _wmsefRespository.GetDbContext().BulkInsertAsync(_ls,new BulkConfig() { BulkCopyTimeout=0 }); + //var uniapi = new TS_UNI_API(GuidGenerator.Create(), "1", input.Version, "WmsSharePartOutPutDetail", _first.BillNum, 0,0, _guid) + //{ + // TaskId = _guid, + // SourceBillNum = _first.BillNum, + // TableName = "WmsSharePartOutPutDetail", + // InterfaceType = "3", + // Version = input.Version, + // WmsState = 0, + // SettleAccountState=0 + //}; + //var _l = new List(); + //_l.Add(uniapi); + //await _wmsefRespository.GetDbContext().BulkInsertAsync(_l); + } + return true; + } + //[HttpPost] + //[Route("ExcelImport")] + //[DisableRequestSizeLimit] + ////[Authorize(SettleAccountPermissions.SettleAccounts.Default)] + //public async Task ExcelImport([FromForm] IFormFileCollection files, string version) + //{ + //var _billNum = "BHQ" + DateTime.Now.ToString("yyyyMMddhhmmss"); + //ExportImporter _exportImporter = new ExportImporter(); + //var result = await _exportImporter.ExtendExcelImport(files, _excelImportService); + //List _lst = new List(); + + + + //var _lsCopy = new List(); + //foreach (var itm in result) + //{ + // WmsHQFSharePartOutPutDetial _detail = new WmsHQFSharePartOutPutDetial( + // GuidGenerator.Create(), + // itm.WmsBillNum, + // itm.OrderBillNum, + // itm.MaterialCode, + // itm.MaterialDesc, + // itm.MaterialGroup, + // string.Empty, + // string.Empty, + // 0, + // string.Empty, + // string.Empty, + // version, + // itm.ParentMaterialCode, + // itm.BillNum, + // GuidGenerator.Create() + // , string.Empty + // , itm.Qty + + // ); + // _lsCopy.Add(_detail); + //} + //_lst.AddRange(_lsCopy.ToArray()); + + + //var outPutDetail = await _wmsRepository.Where(p => p.Version == version).ToListAsync(); + + //var error = from itm1 in outPutDetail + // join itm2 in _lst on + // new { itm1.MaterialCode, itm1.OrderBillNum,itm1.WmsBillNum,itm1.po } + // equals + // new { itm2.MaterialCode, itm2.OrderBillNum } + // select itm1; + //var errList = error.GroupBy(p => new { p.BillNum }).Select(p => new { BillNum = p.Key.BillNum, Number = p.Sum(itm => itm.Qty) }); + + //var checkList = new List(); + //foreach (var itm in errList) + //{ + // checkList.Add(new ErrorExportDto() { Message = string.Format("出库单号:{0}重复记录数:{1}条", itm.BillNum, itm.Number) }); + //} + //if (checkList.Count > 0) + //{ + // return await ExportErrorReportAsync(checkList); + //} + //var query = from itm1 in _ls1 + // join itm2 in outPutDetail on + // new { itm1.MaterialCode, itm1.OrderBillNum } + // equals + // new { itm2.MaterialCode, itm2.OrderBillNum } into temp1 + // from tm1 in temp1.DefaultIfEmpty() + // where tm1 == null + // select itm1; + //var _wmslst = query.ToList(); + //foreach (var itm in _wmslst) + //{ + // itm.BillNum = _billNum; + //} + //await _wmsRepository.GetDbContext().BulkInsertAsync(_wmslst, new BulkConfig() { BulkCopyTimeout = 0, BatchSize = 10000 }); + //int _count = _wmsVersionRepository.Count(p => p.Version == version && p.BillNum == _billNum); + //if (_count == 0) + //{ + // var _version = new WmsHQFSharePartOutPut(GuidGenerator.Create(), version, _billNum, CurrentUser.Email); + // await _wmsVersionRepository.InsertAsync(_version, true); + //} + //return _billNum; + } + +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs index 738fcef2..7562375b 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs @@ -605,7 +605,7 @@ namespace Win.Sfs.SettleAccount.Reports.ReportServices //[HttpGet] //[Route("SettledPartAndErpPartPriceDiff-Make")] //[DisableRequestSizeLimit] - + //public async Task SettledPartAndErpPartPriceDiffMake( string version, string customerCode) //{ @@ -619,7 +619,7 @@ namespace Win.Sfs.SettleAccount.Reports.ReportServices // } // List customConditionList = new List(); - + // customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = "结算总成和ERP总成价格对比" }); // customConditionList.Add(new CustomCondition() { Name = "Version", Value = version??string.Empty }); // customConditionList.Add(new CustomCondition() { Name = "CustomerCode", Value = customerCode }); @@ -663,8 +663,63 @@ namespace Win.Sfs.SettleAccount.Reports.ReportServices //} - - + /// + ///红旗F平台核对明细 + /// + /// 上传的文件(前端已经限制只能上传一个附件) + /// + [HttpPost] + [Route("HQFSettledDetailDiffExportService")] + [DisableRequestSizeLimit] + public async Task HQFSettledDetailDiffExportServiceMake( + HQKanbanRequestDto input + ) + { + + List customConditionList = new List(); + customConditionList.Add(new CustomCondition() { Name = "Version", Value = input.Version }); + customConditionList.Add(new CustomCondition() { Name = "MaterialCode", Value = input.MaterialCode }); + customConditionList.Add(new CustomCondition() { Name = "BeginTime", Value = input.Begin }); + customConditionList.Add(new CustomCondition() { Name = "EndTime", Value = input.End }); + customConditionList.Add(new CustomCondition() { Name = "MaterialCode", Value = input.MaterialCode }); + customConditionList.Add(new CustomCondition() { Name = "AcceptNo", Value = input.AcceptNo }); + customConditionList.Add(new CustomCondition() { Name = "WarehouseDesc", Value = input.WarehouseDesc }); + customConditionList.Add(new CustomCondition() { Name = "Kanban", Value = input.Kanban }); + customConditionList.Add(new CustomCondition() { Name = "MaterialGroup", Value = string.IsNullOrEmpty(input.MaterialGroup) ? string.Empty : input.MaterialGroup }); + customConditionList.Add(new CustomCondition() { Name = "SapCode", Value = string.IsNullOrEmpty(input.SapCode) ? string.Empty : input.SapCode }); + var _taskid = await _service.ExportEnqueueAsync("F平台核对明细", ExportExtentsion.Excel, input.Version, string.IsNullOrEmpty(input.MaterialGroup) ? string.Empty : input.MaterialGroup, CurrentUser, typeof(HQFSettledDetailDiffExportService), customConditionList, (rs) => + { + }); + return _taskid; + } + /// + /// 红旗F平台备件结算出库 + /// + /// + /// + [HttpPost] + [Route("HQFSharePartSettledDetailDiffExportService")] + [DisableRequestSizeLimit] + public async Task HQFSharePartSettledDetailDiffExportServiceMake( + HQKanbanRequestDto input + ) + { + List customConditionList = new List(); + customConditionList.Add(new CustomCondition() { Name = "Version", Value = input.Version }); + customConditionList.Add(new CustomCondition() { Name = "MaterialCode", Value = input.MaterialCode }); + customConditionList.Add(new CustomCondition() { Name = "BeginTime", Value = input.Begin }); + customConditionList.Add(new CustomCondition() { Name = "EndTime", Value = input.End }); + customConditionList.Add(new CustomCondition() { Name = "MaterialCode", Value = input.MaterialCode }); + customConditionList.Add(new CustomCondition() { Name = "AcceptNo", Value = input.AcceptNo }); + customConditionList.Add(new CustomCondition() { Name = "WarehouseDesc", Value = input.WarehouseDesc }); + customConditionList.Add(new CustomCondition() { Name = "Kanban", Value = input.Kanban }); + customConditionList.Add(new CustomCondition() { Name = "MaterialGroup", Value = string.IsNullOrEmpty(input.MaterialGroup) ? string.Empty : input.MaterialGroup }); + customConditionList.Add(new CustomCondition() { Name = "SapCode", Value = string.IsNullOrEmpty(input.SapCode) ? string.Empty : input.SapCode }); + var _taskid = await _service.ExportEnqueueAsync("F平台核备件核对明细", ExportExtentsion.Excel, input.Version, string.IsNullOrEmpty(input.MaterialGroup) ? string.Empty : input.MaterialGroup, CurrentUser, typeof(HQFSharePartSettledDetailDiffExportService), customConditionList, (rs) => + { + }); + return _taskid; + } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml index 9b114084..bd612dfb 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml @@ -1667,6 +1667,126 @@ 请求条件 实体DTO列表 + + + wms出库 + + + + + + + + + + + + + + + 准时化出库主表 + + + + + + + 准时化出库明细 + + + + + + + 任务明细标记已确认 + + 上传的文件(前端已经限制只能上传一个附件) + + + + + 选择任务,生成出库单,只包含已确认的单据 + + + + + + + + 出库界面功能,核准出库功能 + + + + + + + + 出库界面功能, 撤销核准出库 + + + + + + + + wms出库 + + + + + + + + + + + + + + + 准时化出库主表 + + + + + + + 准时化出库明细 + + + + + + + 任务明细标记已确认 + + 上传的文件(前端已经限制只能上传一个附件) + + + + + 选择任务,生成出库单,只包含已确认的单据 + + + + + + + + 出库界面功能,核准出库功能 + + + + + + + + 出库界面功能, 撤销核准出库 + + + + + wms出库 @@ -3030,6 +3150,20 @@ 上传的文件(前端已经限制只能上传一个附件) + + + 红旗F平台核对明细 + + 上传的文件(前端已经限制只能上传一个附件) + + + + + 红旗F平台备件结算出库 + + + + 红旗F平台导入 diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/HQ_H/HQ_H_Kanban.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/HQ_H/HQ_H_Kanban.cs index 5fd264c4..f68600b1 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/HQ_H/HQ_H_Kanban.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/HQ_H/HQ_H_Kanban.cs @@ -24,6 +24,10 @@ namespace Win.Sfs.SettleAccount.Entities.HQ_F public class HQ_H_Kanban:FullAuditedAggregateRootBase { + [ExporterHeader(DisplayName = "交货时间")] + public DateTime BillDate { set; get; } + [ExporterHeader(DisplayName = "交货单号")] + public string WmsBillNum { set; get; } [ExporterHeader(DisplayName = "行号")] public string PoLine { set; get; } [ExporterHeader(DisplayName = "零件号")] @@ -45,9 +49,28 @@ namespace Win.Sfs.SettleAccount.Entities.HQ_F [ExporterHeader(DisplayName = "发货状态")] public string State { set; get; } - public HQ_H_Kanban(Guid id,string poLine, string materialCode, string materialDesc, decimal qty, string kanban, string isAuto, string warehouse, string warehouseDesc, string supplier, string state):base(id) + //public HQ_H_Kanban(DateTime billDate, string wmsBillNum, string poLine, string materialCode, string materialDesc, decimal qty, string kanban, string isAuto, string warehouse, string warehouseDesc, string supplier, string state) + //{ + // BillDate = billDate; + // WmsBillNum = wmsBillNum; + // PoLine = poLine; + // MaterialCode = materialCode; + // MaterialDesc = materialDesc; + // Qty = qty; + // Kanban = kanban; + // IsAuto = isAuto; + // Warehouse = warehouse; + // WarehouseDesc = warehouseDesc; + // Supplier = supplier; + // State = state; + //} + + public HQ_H_Kanban(Guid id, DateTime billDate, string wmsBillNum, string poLine, string materialCode, string materialDesc, decimal qty, string kanban, string isAuto, string warehouse, string warehouseDesc, string supplier, string state):base(id) { Id = id; + + BillDate = billDate; + WmsBillNum = wmsBillNum; PoLine = poLine; MaterialCode = materialCode; MaterialDesc = materialDesc; diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS/TaskList.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS/TaskList.cs index 088ee487..01b4920b 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS/TaskList.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS/TaskList.cs @@ -258,6 +258,7 @@ namespace Win.Sfs.SettleAccount.Entities.WMS TaskId = taskId; Remark = remark; Qty = qty; + } public void SetData(Guid id,string remark,string wmsbillnum,string version,Guid taskId) { @@ -275,8 +276,6 @@ namespace Win.Sfs.SettleAccount.Entities.WMS // 交货单号 实际发货日期 KENN号 底盘号 物料号 物料描述 客户物料 组件组物料 组件组物料描述 物料组(车型) 定价 金额 结算平台未结数量 大众R3未结数量 差异金额 差异数量 漏结标识 漏结期间 说明 - //交货单号 - [ImporterHeader(Name = "组件组物料",IsIgnore =true)] public string ParentMaterialCode { set; get; } [ImporterHeader(Name = "交货单号")] @@ -329,34 +328,144 @@ namespace Win.Sfs.SettleAccount.Entities.WMS } + #region 红旗看板 + public class WmsHQFKanbanOutPut : FullAuditedAggregateRootBase + { + public WmsHQFKanbanOutPut() + { + } + public WmsHQFKanbanOutPut(Guid id, string version, string billNum, string creator) : base(id) + { + Id = id; + Version = version; + BillNum = billNum; + Creator = creator; + } + + public string Version { set; get; } + public string BillNum { set; get; } + public string Creator { set; get; } + } /// - /// 备件出库 + /// 看板明细 /// - public class WmsSharePartOutPut : FullAuditedAggregateRootBase + public class WmsHQFKanbanOutPutDetial : FullAuditedAggregateRootBase { - public WmsSharePartOutPut() + public WmsHQFKanbanOutPutDetial() { } - public WmsSharePartOutPut(Guid id, string version, string billNum, string creator) : base(id) + public WmsHQFKanbanOutPutDetial(Guid id, string wmsBillNum, string kanban, string materialCode, string materialDesc, string materialGroup, string outPut, string inPut, int state, string extend1, string extend2, string extend3, string parentMaterialCode, string billNum, Guid taskId, string remark, decimal qty,string poline) { Id = id; - Version = version; + WmsBillNum = wmsBillNum; + Kanban = kanban; + MaterialCode = materialCode; + MaterialDesc = materialDesc; + MaterialGroup = materialGroup; + OutPut = outPut; + InPut = inPut; + State = state; + Extend1 = extend1; + Extend2 = extend2; + Version = extend3; + ParentMaterialCode = parentMaterialCode; BillNum = billNum; - Creator = creator; + TaskId = taskId; + Remark = remark; + Qty = qty; + PoLine = poline; + } + public void SetData(Guid id, string remark, string wmsbillnum, string version, Guid taskId) + { + Id = id; + Remark = remark; + WmsBillNum = wmsbillnum; + Version = version; + TaskId = taskId; } + + // 交货单号 实际发货日期 KENN号 底盘号 物料号 物料描述 客户物料 组件组物料 组件组物料描述 物料组(车型) 定价 金额 结算平台未结数量 大众R3未结数量 差异金额 差异数量 漏结标识 漏结期间 说明 + [ImporterHeader(Name = "行号")] + public string PoLine { set; get; } + + //交货单号 + + [ImporterHeader(Name = "组件组物料", IsIgnore = true)] + public string ParentMaterialCode { set; get; } + [ImporterHeader(Name = "交货单号")] + public string WmsBillNum { set; get; } + [ImporterHeader(Name = "条码号")] + //KENN号 + public string Kanban { set; get; } + + [ImporterHeader(Name = "物料号")] + //物料号 + public string MaterialCode { set; get; } + [ImporterHeader(Name = "物料描述")] + //物料描述 + public string MaterialDesc { set; get; } + [ImporterHeader(Name = "物料组(车型)")] + //物料组(车型) + public string MaterialGroup { set; get; } + [ImporterHeader(Name = "出库库位", IsIgnore = true)] + //出库库位 + public string OutPut { set; get; } + [ImporterHeader(Name = "入库库位", IsIgnore = true)] + //入库库位 + public string InPut { set; get; } + [ImporterHeader(Name = "状态", IsIgnore = true)] + public int State { get; set; } + [ImporterHeader(Name = "客户物料")] + /// + /// 扩展字段1 + /// + public string Extend1 { set; get; } + /// + /// 扩展字段2 + /// + [ImporterHeader(Name = "订单日期")] + public string Extend2 { set; get; } + /// + /// 扩展字段3 + /// + [ImporterHeader(Name = "版本号", IsIgnore = true)] public string Version { set; get; } + [ImporterHeader(Name = "结算数量")] + public decimal Qty { set; get; } + [ImporterHeader(Name = "单据", IsIgnore = true)] public string BillNum { set; get; } - public string Creator { set; get; } + [ImporterHeader(Name = "任务", IsIgnore = true)] + public Guid TaskId { set; get; } + } + + /// + /// 备件出库 + /// + public class WmsHQFSharePartOutPut : FullAuditedAggregateRootBase + { + public WmsHQFSharePartOutPut() + { + } + public WmsHQFSharePartOutPut(Guid id, string version, string billNum, string creator) : base(id) + { + Id = id; + Version = version; + BillNum = billNum; + Creator = creator; + } + public string Version { set; get; } + public string BillNum { set; get; } + public string Creator { set; get; } } @@ -364,13 +473,12 @@ namespace Win.Sfs.SettleAccount.Entities.WMS /// /// 备件出库明细 /// - public class WmsSharePartOutPutDetial : FullAuditedAggregateRootBase + public class WmsHQFSharePartOutPutDetial : FullAuditedAggregateRootBase { - public WmsSharePartOutPutDetial() + public WmsHQFSharePartOutPutDetial() { } - - public WmsSharePartOutPutDetial(Guid id, string wmsBillNum, string orderBillNum, string materialCode, string materialDesc, string materialGroup, string outPut, string inPut, int state, string extend1, string extend2, string extend3, string parentMaterialCode, string billNum, Guid taskId,string remark,decimal qty ) + public WmsHQFSharePartOutPutDetial(Guid id, string wmsBillNum, string orderBillNum, string materialCode, string materialDesc, string materialGroup, string outPut, string inPut, int state, string extend1, string extend2, string extend3, string parentMaterialCode, string billNum, Guid taskId,string remark,decimal qty ) { Id = id; WmsBillNum = wmsBillNum; @@ -390,16 +498,10 @@ namespace Win.Sfs.SettleAccount.Entities.WMS Remark = remark; Qty = qty; } - - public void SetId(Guid id) { Id = id; } - - // 交货单号 实际发货日期 KENN号 底盘号 物料号 物料描述 客户物料 组件组物料 组件组物料描述 物料组(车型) 定价 金额 结算平台未结数量 大众R3未结数量 差异金额 差异数量 漏结标识 漏结期间 说明 - - //交货单号 [ImporterHeader(Name = "组件组物料")] @@ -409,7 +511,6 @@ namespace Win.Sfs.SettleAccount.Entities.WMS [ImporterHeader(Name = "看板号")] //KENN号 public string OrderBillNum { set; get; } - [ImporterHeader(Name = "SAP编码")] //物料号 public string MaterialCode { set; get; } @@ -444,17 +545,12 @@ namespace Win.Sfs.SettleAccount.Entities.WMS public string Version { set; get; } [ImporterHeader(Name = "开票数量")] public decimal Qty { set; get; } - [ImporterHeader(Name = "数量", IsIgnore = true)] public string BillNum { set; get; } - - public Guid TaskId { set; get; } - - } - + #endregion /// /// 备件无订单号出库 @@ -553,5 +649,138 @@ namespace Win.Sfs.SettleAccount.Entities.WMS + /// + /// 备件出库 + /// + public class WmsSharePartOutPut : FullAuditedAggregateRootBase + { + public WmsSharePartOutPut() + { + } + + public WmsSharePartOutPut(Guid id, string version, string billNum, string creator) : base(id) + { + Id = id; + Version = version; + BillNum = billNum; + Creator = creator; + } + + public string Version { set; get; } + + public string BillNum { set; get; } + + public string Creator { set; get; } + + + + } + + + /// + /// 备件出库明细 + /// + public class WmsSharePartOutPutDetial : FullAuditedAggregateRootBase + { + public WmsSharePartOutPutDetial() + { + } + + public WmsSharePartOutPutDetial(Guid id, string wmsBillNum, string orderBillNum, string materialCode, string materialDesc, string materialGroup, string outPut, string inPut, int state, string extend1, string extend2, string extend3, string parentMaterialCode, string billNum, Guid taskId, string remark, decimal qty) + { + Id = id; + WmsBillNum = wmsBillNum; + OrderBillNum = orderBillNum; + MaterialCode = materialCode; + MaterialDesc = materialDesc; + MaterialGroup = materialGroup; + OutPut = outPut; + InPut = inPut; + State = state; + Extend1 = extend1; + Extend2 = extend2; + Version = extend3; + ParentMaterialCode = parentMaterialCode; + BillNum = billNum; + TaskId = taskId; + Remark = remark; + Qty = qty; + } + + + public void SetId(Guid id) + { + Id = id; + } + + // 交货单号 实际发货日期 KENN号 底盘号 物料号 物料描述 客户物料 组件组物料 组件组物料描述 物料组(车型) 定价 金额 结算平台未结数量 大众R3未结数量 差异金额 差异数量 漏结标识 漏结期间 说明 + + + //交货单号 + + [ImporterHeader(Name = "组件组物料")] + public string ParentMaterialCode { set; get; } + [ImporterHeader(Name = "交货单号")] + public string WmsBillNum { set; get; } + [ImporterHeader(Name = "看板号")] + //KENN号 + public string OrderBillNum { set; get; } + + [ImporterHeader(Name = "SAP编码")] + //物料号 + public string MaterialCode { set; get; } + [ImporterHeader(Name = "物料描述")] + //物料描述 + public string MaterialDesc { set; get; } + [ImporterHeader(Name = "物料组(车型)")] + //物料组(车型) + public string MaterialGroup { set; get; } + [ImporterHeader(Name = "出库库位", IsIgnore = true)] + //出库库位 + public string OutPut { set; get; } + [ImporterHeader(Name = "入库库位", IsIgnore = true)] + //入库库位 + public string InPut { set; get; } + [ImporterHeader(Name = "状态", IsIgnore = true)] + public int State { get; set; } + [ImporterHeader(Name = "物料代码")] + /// + /// 扩展字段1 + /// + public string Extend1 { set; get; } + /// + /// 扩展字段2 + /// + [ImporterHeader(Name = "扩展字段2", IsIgnore = true)] + public string Extend2 { set; get; } + /// + /// 扩展字段3 + /// + [ImporterHeader(Name = "版本号", IsIgnore = true)] + public string Version { set; get; } + [ImporterHeader(Name = "开票数量")] + public decimal Qty { set; get; } + + [ImporterHeader(Name = "数量", IsIgnore = true)] + public string BillNum { set; get; } + + + public Guid TaskId { set; get; } + + + } + + + + + + + + + + + + + } diff --git a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs index f522e1b2..819a054c 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs @@ -412,8 +412,6 @@ namespace Win.Sfs.SettleAccount b.Property(x => x.Warehouse).HasMaxLength(50); b.Property(x => x.WarehouseDesc).HasMaxLength(150); b.Property(x => x.State).HasMaxLength(50); - - //创建组合索引 b.HasIndex(x => new { x.Kanban, x.PoLine, x.MaterialCode }); @@ -430,48 +428,48 @@ namespace Win.Sfs.SettleAccount /// /// /// - private static void ConfigureHQCar(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) - { + //private static void ConfigureHQCar(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) + //{ - builder.Entity(b => - { + // builder.Entity(b => + // { - b.ToTable($"{options.TablePrefix}_HQ_Car_Platform", options.Schema); + // b.ToTable($"{options.TablePrefix}_HQ_Car_Platform", options.Schema); - b.ConfigureByConvention(); - b.Property(x => x.HQCarKanBan).HasMaxLength(150);//看板号(一汽轿车没有看板号) - b.Property(x => x.MaterialVoucherNo).HasMaxLength(150); - b.Property(x => x.Factory).HasMaxLength(50); - b.Property(x => x.MaterialCode).IsRequired().HasMaxLength(150); - b.Property(x => x.ExternalKanbanNumber).HasMaxLength(50); - b.Property(x => x.KanbanNumber).HasMaxLength(150);//看板编号 - b.Property(x => x.Period).HasMaxLength(50); - b.Property(x => x.Year).HasMaxLength(50); - b.Property(x => x.Version).HasMaxLength(50); - b.Property(x => x.Supplier).HasMaxLength(50); - b.Property(x => x.StorageLocation).HasMaxLength(50); - b.Property(x => x.StorageLocationDesc).HasMaxLength(150); - //创建组合索引 - b.HasIndex(x => new { x.Version, x.KanbanNumber, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); + // b.ConfigureByConvention(); + // b.Property(x => x.HQCarKanBan).HasMaxLength(150);//看板号(一汽轿车没有看板号) + // b.Property(x => x.MaterialVoucherNo).HasMaxLength(150); + // b.Property(x => x.Factory).HasMaxLength(50); + // b.Property(x => x.MaterialCode).IsRequired().HasMaxLength(150); + // b.Property(x => x.ExternalKanbanNumber).HasMaxLength(50); + // b.Property(x => x.KanbanNumber).HasMaxLength(150);//看板编号 + // b.Property(x => x.Period).HasMaxLength(50); + // b.Property(x => x.Year).HasMaxLength(50); + // b.Property(x => x.Version).HasMaxLength(50); + // b.Property(x => x.Supplier).HasMaxLength(50); + // b.Property(x => x.StorageLocation).HasMaxLength(50); + // b.Property(x => x.StorageLocationDesc).HasMaxLength(150); + // //创建组合索引 + // b.HasIndex(x => new { x.Version, x.KanbanNumber, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); - }); - } + // }); + //} - private static void ConfigureHQCarVersion(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) - { + //private static void ConfigureHQCarVersion(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) + //{ - builder.Entity(b => - { - b.ToTable($"{options.TablePrefix}_HQ_Car_PlatformVersion", options.Schema); - b.ConfigureByConvention(); - b.Property(x => x.Year).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); - b.Property(x => x.Period).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); - b.Property(x => x.Version).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); - b.Property(x => x.CustomerCode).HasMaxLength(CommonConsts.MaxCodeLength); - b.HasIndex(x => new { x.Version }).IsUnique().HasFilter(IsDeletedFilter); - }); + // builder.Entity(b => + // { + // b.ToTable($"{options.TablePrefix}_HQ_Car_PlatformVersion", options.Schema); + // b.ConfigureByConvention(); + // b.Property(x => x.Year).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + // b.Property(x => x.Period).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + // b.Property(x => x.Version).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + // b.Property(x => x.CustomerCode).HasMaxLength(CommonConsts.MaxCodeLength); + // b.HasIndex(x => new { x.Version }).IsUnique().HasFilter(IsDeletedFilter); + // }); - } + //} /// diff --git a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/HQFSettledDetailDapperRepository.cs b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/HQFSettledDetailDapperRepository.cs new file mode 100644 index 00000000..f61dc81f --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/HQFSettledDetailDapperRepository.cs @@ -0,0 +1,341 @@ +using Dapper; +using Magicodes.ExporterAndImporter.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories.Dapper; +using Volo.Abp.EntityFrameworkCore; + +namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report +{ + + public class HQFSharePartSettledDetailDiff + { + [ExporterHeader(DisplayName = "收货仓库")] + public string 收货仓库 { set; get; } + [ExporterHeader(DisplayName = "收货仓库描述")] + public string 收货仓库描述 { set; get; } + [ExporterHeader(DisplayName = "结算物料号")] + public string 结算物料号 { set; get; } + + [ExporterHeader(DisplayName = "结算物料描述")] + public string 物料描述 { set; get; } + + [ExporterHeader(DisplayName = "结算数量")] + public decimal 结算数量 { set; get; } + [ExporterHeader(DisplayName = "结算单价")] + public decimal 结算单价 { set; get; } + [ExporterHeader(DisplayName = "结算金额")] + public decimal 结算金额 { set; get; } + [ExporterHeader(DisplayName = "Sap编码")] + public string Sap编码 { set; get; } + [ExporterHeader(DisplayName = "物料组(车型)")] + public string 物料组 { set; get; } + + [ExporterHeader(DisplayName = "寄销库数量")] + public decimal 寄销库数量 { set; get; } + + + } + + + + + + + + public class HQFSettledDetailDiff + { + [ExporterHeader(DisplayName = "交货单号")] + public string 交货单号 { set; get; } + [ExporterHeader(DisplayName = "交货时间")] + public string 交货时间 { set; get; } + [ExporterHeader(DisplayName = "手工或自动")] + public string 手工或自动 { set; get; } + [ExporterHeader(DisplayName = "收货仓库")] + public string 收货仓库 { set; get; } + [ExporterHeader(DisplayName = "收货仓库描述")] + public string 收货仓库描述 { set; get; } + [ExporterHeader(DisplayName = "订货看板编号")] + public string 订货看板编号 { set; get; } + [ExporterHeader(DisplayName = "订货零件号")] + public string 订货零件号 { set; get; } + [ExporterHeader(DisplayName = "发货零件号")] + public string 发货零件号 { set; get; } + [ExporterHeader(DisplayName = "零件中文名称")] + public string 零件中文名称 { set; get; } + [ExporterHeader(DisplayName = "Sap编码")] + public string Sap编码 { set; get; } + [ExporterHeader(DisplayName = "物料组(车型)")] + public string 物料组 { set; get; } + [ExporterHeader(DisplayName = "发货数量")] + public decimal 发货数量 { set; get; } + [ExporterHeader(DisplayName = "发货状态")] + public string 发货状态 { set; get; } + [ExporterHeader(DisplayName = "结算验收单号")] + public string 结算验收单号 { set; get; } + [ExporterHeader(DisplayName = "结算数量")] + public decimal 结算数量 { set; get; } + [ExporterHeader(DisplayName = "结算单价")] + public decimal 结算单价 { set; get; } + [ExporterHeader(DisplayName = "结算金额")] + public decimal 结算金额 { set; get; } + [ExporterHeader(DisplayName = "发货定价")] + public decimal 发货定价 { set; get; } + [ExporterHeader(DisplayName = "发货总金额")] + public decimal 发货总金额 { set; get; } + [ExporterHeader(DisplayName = "数量差异")] + public decimal 数量差异 { set; get; } + [ExporterHeader(DisplayName = "单价差异")] + public decimal 单价差异 { set; get; } + [ExporterHeader(DisplayName = "差异总金额")] + public decimal 差异总金额 { set; get; } + } + public class HQFSettleQtyDiff + { + public string 客户物料号 { set; get; } + public decimal 结算数量 { set; get; } + public decimal 发货数量 { set; get; } + public decimal 差异数量 { set; get; } + public string 看板号 { set; get; } + } + /// + /// 2.大众发票与结算核对明细表-准时化 + /// + public class HQFSettledDetailDapperRepository : DapperRepository, ITransientDependency + { + public HQFSettledDetailDapperRepository(IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + } + public virtual List GetInvoiceSettledDetailDiffReportList(string version, string materialCode, string begin, string end, string materialGroup) + { + + List _list = new List(); + + string condition = " where 1=1 "; + + + ////if (!string.IsNullOrEmpty(materialCode)) + ////{ + + //// condition += string.Format(" and d.MaterialCode in ({0}) ", materialCode); + ////} + if (!string.IsNullOrEmpty(begin)) + { + condition += string.Format(" and a.BeginTime>='{0}' ", begin); + } + if (!string.IsNullOrEmpty(end)) + { + condition += string.Format(" and a.BeginTime<='{0}' ", end); + } + //if (!string.IsNullOrEmpty(cp7begin)) + //{ + // condition += string.Format(" and B.cp7>='{0}' ", cp7begin); + //} + //if (!string.IsNullOrEmpty(cp7end)) + //{ + // condition += string.Format(" and B.cp7<='{0}' ", cp7end); + //} + ////if (!string.IsNullOrEmpty(kennCode)) + ////{ + //// condition += string.Format(" and B.kenncode='{0}' ", kennCode); + ////} + ////if (!string.IsNullOrEmpty(chassisNumber)) + ////{ + //// condition += string.Format(" and B.chassisNumber='{0}' ", chassisNumber); + ////} + ////if (!string.IsNullOrEmpty(materialGroup)) + ////{ + //// condition += string.Format(" B.chassisNumber='{0}' ", materialGroup); + ////} + string str = + "SELECT\n" + +" isnull(temp1.交货单号,'') 交货单号,\n" + +" temp1.交货时间,\n" + +" isnull(temp1.手工或自动,'') 手工或自动,\n" + +" temp1.收货仓库,\n" + +" temp1.收货仓库描述,\n" + +" temp1.订货看板编号,\n" + +" temp1.订货零件号,\n" + +" temp1.发货零件号,\n" + +" temp1.零件中文名称,\n" + +" temp1.Sap编码,\n" + +" temp1.物料组,\n" + +" temp1.发货数量,\n" + +" temp1.发货状态,\n" + +" temp1.结算验收单号,\n" + +" temp1.结算数量,\n" + +" temp1.结算单价,\n" + +" temp1.结算金额,\n" + +" isnull(TEMP2.Price,0) AS 发货定价,\n" + +" isnull(temp1.发货数量,0) * isnull(TEMP2.Price,0) AS 发货总金额,\n" + +" 0 AS 数量差异,\n" + +" 0 AS 单价差异,\n" + +" 0 AS 差异总金额 \n" + +"FROM\n" + +" (\n" + +" SELECT\n" + +" b.WmsBillNum AS 交货单号,\n" + +" a.CreationTime AS 交货时间,\n" + +" b.IsAuto AS 手工或自动,\n" + +" a.StorageLocation AS 收货仓库,\n" + +" a.StorageLocationDesc AS 收货仓库描述,\n" + +" a.HQHKanBan AS 订货看板编号,\n" + +" a.MaterialCode AS 订货零件号,\n" + +" c.MaterialCode Sap编码,\n" + +" a.MaterialCode AS 发货零件号,\n" + +" c.MaterialDesc AS 零件中文名称,\n" + +" isnull(b.Qty,0) AS 发货数量,\n" + +" isnull(b.State,0) AS 发货状态,\n" + +" a.AcceptanceNo AS 结算验收单号,\n" + +" isnull(b.Qty,0) AS 结算数量,\n" + +" isnull(a.Price,0) AS 结算单价,\n" + +" isnull(a.Amt,0) AS 结算金额 ,\n" + +" C.EstimateTypeDesc AS 物料组\n" + +" FROM\n" + +" Set_HQ_H_Platform AS a\n" + +" LEFT OUTER JOIN Set_HQ_H_Kanban AS b ON a.HQHKanBan = b.Kanban \n" + +" AND a.MaterialCode = b.MaterialCode\n" + +" LEFT OUTER JOIN Set_material AS c ON a.MaterialCode = c.CustomerPartCode \n" + +" WHERE\n" + +" ( a.HQHKanBan <> 'BJ' ) and a.Version='{0}') AS temp1\n" + +" LEFT OUTER JOIN (\n" + +" SELECT\n" + +" Price,\n" + +" MaterialCode \n" + +" FROM\n" + +" Set_PriceList \n" + +" WHERE\n" + +" (\n" + +" Version = ( SELECT MAX( Version ) FROM Set_PriceList ))) AS TEMP2 ON temp1.Sap编码 = TEMP2.MaterialCode"; + var _sql = string.Format(str, version, condition); + + var _query = DbConnection.Query(_sql, null, null, true, 1200, null); + _list = _query.ToList(); + return _list; + + } + + + + public virtual List GetDiffQtyList(string version) + { + List _list = new List(); + var str = + "SELECT temp1.MaterialCode 客户物料号,temp1.HQHKanBan 看板号 ,temp1.SettleQty 结算数量, temp2.Qty 发货数量,( temp1.SettleQty - temp2.Qty ) 差异数量 \n" + + "FROM\n" + + " (\n" + + " SELECT\n" + + " SUM( Qty ) SettleQty,\n" + + " HQHKanBan,\n" + + " MaterialCode \n" + + " FROM\n" + + " Set_HQ_H_Platform where version='{0}'\n" + + " GROUP BY\n" + + " HQHKanBan,\n" + + " MaterialCode \n" + + " ) temp1\n" + + " LEFT JOIN (\n" + + " SELECT\n" + + " SUM( Qty ) Qty,\n" + + " Kanban,\n" + + " MaterialCode \n" + + " FROM\n" + + " Set_HQ_H_Kanban \n" + + " GROUP BY\n" + + " Kanban,\n" + + " MaterialCode \n" + + " ) temp2 ON temp1.HQHKanBan = temp2.Kanban \n" + + " AND temp1.MaterialCode = temp2.MaterialCode where temp1.SettleQty!=temp2.Qty "; + str = string.Format(str, version); + + var _query = DbConnection.Query(str, null, null, true, 1200, null); + _list = _query.ToList(); + + + return _list; + + } + public virtual List GetSharePartSettledDetailDiffReportList(string version, string materialCode, string begin, string end, string materialGroup) + { + + List _list = new List(); + + string condition = " where 1=1 "; + + + + if (!string.IsNullOrEmpty(begin)) + { + condition += string.Format(" and a.BeginTime>='{0}' ", begin); + } + if (!string.IsNullOrEmpty(end)) + { + condition += string.Format(" and a.BeginTime<='{0}' ", end); + } + + string str = +"SELECT\n" + +" temp1.*,\n" + +" isnull( temp2.Price, 0 ) 销售单价,(\n" + +" isnull( temp1.结算单价, 0 )- isnull( temp2.Price, 0 )) 价格差异 \n" + +"FROM\n" + +" (\n" + +" SELECT\n" + +" A.Price 结算单价,\n" + +" A.Qty 结算数量,\n" + +" A.MaterialCode 结算物料号,\n" + +" A.StorageLocation 收货仓库,\n" + +" A.StorageLocationDesc 收货仓库描述,\n" + +" C.EstimateTypeDesc 物料组,\n" + +" C.MaterialCode Sap编码,\n" + +" C.MaterialDesc 物料描述,\n" + +" 0 寄销库数量 \n" + +" FROM\n" + +" (\n" + +" SELECT\n" + +" Price,\n" + +" SUM( Qty ) Qty,\n" + +" MaterialCode,\n" + +" StorageLocation,\n" + +" StorageLocationDesc \n" + +" FROM\n" + +" Set_HQ_H_Platform \n" + +" WHERE\n" + +" version = '{0}' \n" + +" AND HQHKanBan = 'BJ' \n" + +" GROUP BY\n" + +" MaterialCode,\n" + +" StorageLocation,\n" + +" StorageLocationDesc,\n" + +" price \n" + +" ) A\n" + +" LEFT JOIN Set_material AS c ON a.MaterialCode = c.CustomerPartCode \n" + +" ) temp1\n" + +" LEFT OUTER JOIN (\n" + +" SELECT\n" + +" Price,\n" + +" MaterialCode \n" + +" FROM\n" + +" Set_PriceList \n" + +" WHERE\n" + +" (\n" + +" Version = ( SELECT MAX( Version ) AS Expr1 FROM Set_PriceList ))) AS temp2 ON temp1.Sap编码 = temp2.MaterialCode"; + ; + var _sql = string.Format(str, version, condition); + + var _query = DbConnection.Query(_sql, null, null, true, 1200, null); + _list = _query.ToList(); + return _list; + + } + + + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/KanbanUnSettledDapperRepository.cs b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/KanbanUnSettledDapperRepository.cs index 111a2d66..5a6ea20c 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/KanbanUnSettledDapperRepository.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/KanbanUnSettledDapperRepository.cs @@ -20,8 +20,6 @@ namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report { // Factory MaterialCode InvoiceQty InvoiceAmt InvoicePrice SapMaterialCode MaterialDesc SapMaterialGroup DiffPrice SalePrice SocketQty - - [ExporterHeader(DisplayName = "期间")] public string Version { get; set; } [ExporterHeader(DisplayName = "物料组")] diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSettledDetailDiffExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSettledDetailDiffExportService.cs new file mode 100644 index 00000000..641cdb1a --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSettledDetailDiffExportService.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TaskJob.EventArgs; +using TaskJob.Interfaces; +using Volo.Abp.DependencyInjection; +using Win.Sfs.SettleAccount.Reports.InvoiceSettledDiffs; +using Win.Sfs.SettleAccount.Repository.SettleAccount; +using Win.Sfs.SettleAccount.Repository.SettleAccountJob; +using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report; + +namespace SettleAccount.Job.Services +{ + /// + /// 2.大众发票与结算核对明细表-准时化 + /// + public class HQFSharePartSettledDetailDiffExportService : ITransientDependency, IExportJob + { + + private readonly HQFSettledDetailDapperRepository _dapperRepository; + private readonly ErpPartDapperRepository _erpdapperRepository; + + private readonly OutputService _outputService; + private readonly InputService _inputService; + + public HQFSharePartSettledDetailDiffExportService( + + ErpPartDapperRepository erpdapperRepository, + HQFSettledDetailDapperRepository dapperRepository, + OutputService outputService, + InputService inputService + ) + { + _inputService = inputService; + _outputService = outputService; + _erpdapperRepository= erpdapperRepository; + + _dapperRepository =dapperRepository; + } + + public string ExportFile(Guid id, List exportName, List p_list) + { + var _filename = exportName.FirstOrDefault(); + var version = p_list.Where(p => p.Name == "Version").FirstOrDefault().Value; + var materialCode = p_list.Where(p => p.Name == "MaterialCode").FirstOrDefault().Value; + var kanban = p_list.Where(p => p.Name == "Kanban").FirstOrDefault().Value; + var begin = p_list.Where(p => p.Name == "BeginTime").FirstOrDefault().Value; + var end = p_list.Where(p => p.Name == "EndTime").FirstOrDefault().Value; + var materialGroup = p_list.Where(p => p.Name == "MaterialGroup").FirstOrDefault().Value; + var acceptNo = p_list.Where(p => p.Name == "AcceptNo").FirstOrDefault().Value; + var sapCode = p_list.Where(p => p.Name == "SapCode").FirstOrDefault().Value; + var warehouseDesc = p_list.Where(p => p.Name == "WarehouseDesc").FirstOrDefault().Value; + var _ls=_dapperRepository.GetSharePartSettledDetailDiffReportList(version, materialCode, begin, end, materialGroup); + //var _ls = _dapperRepository.GetInvoiceSettledDetailDiffReportList(version, materialCode, begin, end, materialGroup); + //var _lst=_dapperRepository.GetDiffQtyList(version); + + //foreach (var itm in _lst) + //{ + // var _first = _ls.FirstOrDefault(p => p.订货看板编号 == itm.看板号 && p.订货零件号==itm.客户物料号); + // if(_first!=null) + // { + // _first.发货数量 = _first.结算数量+ itm.差异数量; + // _first.数量差异 = itm.差异数量; + // } + //} + if (!string.IsNullOrEmpty(kanban)) + { + var _groupList = kanban.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.结算物料号)).ToList(); + } + } + + + if (!string.IsNullOrEmpty(warehouseDesc)) + { + var _groupList = warehouseDesc.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.收货仓库描述)).ToList(); + } + } + + //if (!string.IsNullOrEmpty(acceptNo)) + //{ + // var _groupList = acceptNo.Split(new char[] { ',' }).Distinct().ToList(); + // if (_groupList.Count() > 0) + // { + // _ls = _ls.Where(p => _groupList.Contains(p.结算验收单号)).ToList(); + // } + //} + if (!string.IsNullOrEmpty(materialGroup)) + { + var _groupList = materialGroup.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.物料组)).ToList(); + } + } + if (!string.IsNullOrEmpty(materialCode)) + { + var _groupList = materialCode.Split(new char[] { '\n' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.结算物料号)).ToList(); + } + } + if (!string.IsNullOrEmpty(sapCode)) + { + var _groupList = sapCode.Split(new char[] { '\n' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.Sap编码)).ToList(); + } + } + _outputService.Export(id, _filename, _ls); + return id.ToString(); + } + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSharePartSettledDetailDiffExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSharePartSettledDetailDiffExportService.cs new file mode 100644 index 00000000..7b3b6ac8 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HQFSharePartSettledDetailDiffExportService.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TaskJob.EventArgs; +using TaskJob.Interfaces; +using Volo.Abp.DependencyInjection; +using Win.Sfs.SettleAccount.Reports.InvoiceSettledDiffs; +using Win.Sfs.SettleAccount.Repository.SettleAccount; +using Win.Sfs.SettleAccount.Repository.SettleAccountJob; +using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report; + +namespace SettleAccount.Job.Services +{ + /// + /// 2.大众发票与结算核对明细表-准时化 + /// + public class HQFSettledDetailDiffExportService : ITransientDependency, IExportJob + { + + private readonly HQFSettledDetailDapperRepository _dapperRepository; + private readonly ErpPartDapperRepository _erpdapperRepository; + + private readonly OutputService _outputService; + private readonly InputService _inputService; + + public HQFSettledDetailDiffExportService( + + ErpPartDapperRepository erpdapperRepository, + HQFSettledDetailDapperRepository dapperRepository, + OutputService outputService, + InputService inputService + ) + { + _inputService = inputService; + _outputService = outputService; + _erpdapperRepository= erpdapperRepository; + + _dapperRepository =dapperRepository; + } + + public string ExportFile(Guid id, List exportName, List p_list) + { + var _filename = exportName.FirstOrDefault(); + var version = p_list.Where(p => p.Name == "Version").FirstOrDefault().Value; + var materialCode = p_list.Where(p => p.Name == "MaterialCode").FirstOrDefault().Value; + var kanban = p_list.Where(p => p.Name == "Kanban").FirstOrDefault().Value; + var begin = p_list.Where(p => p.Name == "BeginTime").FirstOrDefault().Value; + var end = p_list.Where(p => p.Name == "EndTime").FirstOrDefault().Value; + var materialGroup = p_list.Where(p => p.Name == "MaterialGroup").FirstOrDefault().Value; + var acceptNo = p_list.Where(p => p.Name == "AcceptNo").FirstOrDefault().Value; + var sapCode = p_list.Where(p => p.Name == "SapCode").FirstOrDefault().Value; + var warehouseDesc = p_list.Where(p => p.Name == "WarehouseDesc").FirstOrDefault().Value; + var _ls = _dapperRepository.GetInvoiceSettledDetailDiffReportList(version, materialCode, begin, end, materialGroup); + var _lst=_dapperRepository.GetDiffQtyList(version); + + foreach (var itm in _lst) + { + var _first = _ls.FirstOrDefault(p => p.订货看板编号 == itm.看板号 && p.订货零件号==itm.客户物料号); + if(_first!=null) + { + _first.发货数量 = _first.结算数量+ itm.差异数量; + _first.数量差异 = itm.差异数量; + } + } + if (!string.IsNullOrEmpty(kanban)) + { + var _groupList = kanban.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.订货看板编号)).ToList(); + } + } + + + if (!string.IsNullOrEmpty(warehouseDesc)) + { + var _groupList = warehouseDesc.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.收货仓库描述)).ToList(); + } + } + + if (!string.IsNullOrEmpty(acceptNo)) + { + var _groupList = acceptNo.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.结算验收单号)).ToList(); + } + } + if (!string.IsNullOrEmpty(materialGroup)) + { + var _groupList = materialGroup.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.物料组)).ToList(); + } + } + if (!string.IsNullOrEmpty(materialCode)) + { + var _groupList = materialCode.Split(new char[] { '\n' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.发货零件号)).ToList(); + } + } + if (!string.IsNullOrEmpty(sapCode)) + { + var _groupList = sapCode.Split(new char[] { '\n' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _ls = _ls.Where(p => _groupList.Contains(p.Sap编码)).ToList(); + } + } + _outputService.Export(id, _filename, _ls); + return id.ToString(); + } + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs index 9d5e54b8..716ae44c 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs @@ -148,9 +148,16 @@ namespace Win.Sfs.SettleAccount { return implementationFactory.GetService(); } - - + if (key.Equals(typeof(HQFSettledDetailDiffExportService).FullName)) + { + return implementationFactory.GetService(); + } + if (key.Equals(typeof(HQFSharePartSettledDetailDiffExportService).FullName)) + { + return implementationFactory.GetService(); + } + else {