From 5eaa5d1998faa58de24008097e508bf3a0fe4a8c Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Jan 2022 11:30:07 +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 --- .../appsettings.Development.json | 10 +- .../appsettings.json | 8 +- .../Entities/WMS/WMSKanbanAppService.cs | 156 ++++++++++++++++-- .../Entities/WMS/WMSSharePartAppService.cs | 38 ++++- .../ReportServices/ReportMakeService.cs | 24 +++ .../SettleAccount.Application.xml | 14 +- .../Entities/WMS/TaskList.cs | 19 ++- .../Report/KanbanUnSettledDapperRepository.cs | 149 ++++++++++++++++- .../SettleKBWithCodeDapperReportRepository.cs | 2 +- .../Report/SettleKBWithCodeExportService.cs | 9 +- .../SettleKBWithOutCodeExportService.cs | 111 +++++++++++++ .../Report/SettleSparePartExportService.cs | 11 +- .../SettleAccountJobModule.cs | 7 + 13 files changed, 506 insertions(+), 52 deletions(-) create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithOutCodeExportService.cs diff --git a/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.Development.json b/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.Development.json index b6574412..8bcc29a5 100644 --- a/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.Development.json +++ b/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.Development.json @@ -7,11 +7,11 @@ // "SettleAccountService": "Server=LAPTOP-V3U07C2O;Database=SettleAccountService;user id=sa;Password=1q2w!@#;" //}, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=ABP;user id=sa;Password=1", - "SettleAccountService": "Server=127.0.0.1;Database=SettleAccountService1;user id=sa;Password=1;" - //"Default": "Server=192.168.0.140;Database=ABP;User ID=sa;Password=Microsoft2008;", - //"SettleAccountService": "Server=192.168.0.140;Database=SettleAccountService;user id=sa;password=Microsoft2008;", - //"Wms": "Server=192.168.0.140;Database=CPAT_WMS_TEST;user id=sa;password=Microsoft2008;" + //"Default": "Server=127.0.0.1;Database=ABP;user id=sa;Password=1", + //"SettleAccountService": "Server=127.0.0.1;Database=SettleAccountService;user id=sa;Password=1;" + "Default": "Server=192.168.0.67;Database=ABP;User ID=sa;Password=Microsoft2008;", + "SettleAccountService": "Server=192.168.0.67;Database=SettleAccountService;user id=sa;password=Microsoft2008;", + "Wms": "Server=192.168.0.140;Database=CPAT_WMS_TEST;user id=sa;password=Microsoft2008;" }, "Logging": { "LogLevel": { diff --git a/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.json b/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.json index 49bec457..4f6dcfdb 100644 --- a/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.json +++ b/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/appsettings.json @@ -7,10 +7,10 @@ // "SettleAccountService": "Server=LAPTOP-V3U07C2O;Database=SettleAccountService;user id=sa;Password=1q2w!@#;" //}, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=ABP;user id=sa;Password=1", - "SettleAccountService": "Server=127.0.0.1;Database=SettleAccountService1;user id=sa;Password=1;", - //"Default": "Server=192.168.0.140;Database=ABP;User ID=sa;Password=Microsoft2008;", - //"SettleAccountService": "Server=192.168.0.140;Database=SettleAccountService;user id=sa;password=Microsoft2008;", + //"Default": "Server=127.0.0.1;Database=ABP;user id=sa;Password=1", + //"SettleAccountService": "Server=127.0.0.1;Database=SettleAccountService;user id=sa;Password=1;", + "Default": "Server=192.168.0.67;Database=ABP;User ID=sa;Password=Microsoft2008;", + "SettleAccountService": "Server=192.168.0.67;Database=SettleAccountService;user id=sa;password=Microsoft2008;", "Wms": "Server=192.168.0.140;Database=CPAT_WMS_TEST;user id=sa;password=Microsoft2008;" }, diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSKanbanAppService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSKanbanAppService.cs index e3a1be91..e6b027c5 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSKanbanAppService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSKanbanAppService.cs @@ -47,6 +47,7 @@ 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 { @@ -162,24 +163,117 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts 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; + } + + /// + /// 选择任务,生成出库单,只包含已确认的单据 + /// + /// + /// + /// + [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) { - return true; - } - return false; + 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 WmsKanbanOutPutDetial(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 + ); + + _lst.Add(_entity); + } + + } + + var outPutDetail = await _wmsRepository.Where(p => p.Version == input.Version && p.Kanban==string.Empty).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) }); + //if (errList.Count() == 0) + //{ + + // 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 _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 WmsKanbanOutPut(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("WmsKanbanOutPut")] public async Task WmsKanbanOutPut(WmsJitRequestDto input) @@ -198,7 +292,7 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts var _list = _excelHelper.ExcelToList(); foreach (var itm in _list) { - itm.SetId(GuidGenerator.Create()); + itm.SetId(GuidGenerator.Create(),string.Empty); } _lst.AddRange(_list.ToArray()); } @@ -390,6 +484,38 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts 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 } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSSharePartAppService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSSharePartAppService.cs index 4add56fd..6fa83fb9 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSSharePartAppService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/WMS/WMSSharePartAppService.cs @@ -56,8 +56,8 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts [AllowAnonymous] [Route("api/settleaccount/wmsSharePartoutput")] - public class WMSSharePartAppService : - ApplicationService + public class WMSSharePartAppService : + SettleAccountApplicationBase { private readonly ISettleAccountBranchEfCoreRepository _wmsRepository; @@ -84,8 +84,11 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts ISettleAccountBranchEfCoreRepository wmsVersionRepository, WMSEfCoreRepository wmsefRespository, WMSEfCoreRepository wmstbRespository, - IExcelImportAppService excelImportService - ) + IExcelImportAppService excelImportService, + IDistributedCache cache, + ISnowflakeIdGenerator snowflakeIdGenerator, + ICommonManager commonManager + ) : base(cache, excelImportService, snowflakeIdGenerator, commonManager) { _excelImportService = excelImportService; _job = job; @@ -388,6 +391,33 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts 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.OrderBillNum } + 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 } 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 380bae42..24047cb6 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs @@ -149,6 +149,30 @@ namespace Win.Sfs.SettleAccount.Reports.ReportServices return _taskid; } + [HttpPost] + [Route("SettleKanBan-WithOutCode")] + [DisableRequestSizeLimit] + + public async Task SettledKanBanWithOutCode(BaseKanbanReqestDto input) + { + List customConditionList = new List(); + customConditionList.Add(new CustomCondition() { Name = "Version", Value = input.Version ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "CustomerCode", Value = input.CustomerCode ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "CustomerPartCode", Value = input.CustomerPartCode ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "State", Value = input.State ?? "0" }); + customConditionList.Add(new CustomCondition() { Name = "EstimateTypeDesc", Value = input.EstimateTypeDesc ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = "有条码看板结算核对" }); + customConditionList.Add(new CustomCondition() { Name = "Kanban", Value = input.KanBan ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "SapMaterialCode", Value = input.SapMaterialCode ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "BegingTime", Value = input.Begin.ToString() }); + customConditionList.Add(new CustomCondition() { Name = "EndTime", Value = input.End.ToString() }); + + var _taskid = await _service.ExportEnqueueAsync("大众无看板号库存核对明细表", ExportExtentsion.Excel, input.Version, string.Empty, CurrentUser, typeof(SettleKBWithOutCodeExportService), 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 f3115353..7a08862f 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml @@ -1672,7 +1672,7 @@ wms出库 - + @@ -1739,7 +1739,7 @@ wms出库 - + @@ -1770,6 +1770,14 @@ 上传的文件(前端已经限制只能上传一个附件) + + + 选择任务,生成出库单,只包含已确认的单据 + + + + + 选择任务,生成出库单,只包含已确认的单据 @@ -1799,7 +1807,7 @@ wms出库 - + 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 b7075954..5a288fba 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS/TaskList.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS/TaskList.cs @@ -257,9 +257,10 @@ namespace Win.Sfs.SettleAccount.Entities.WMS Remark = remark; Qty = qty; } - public void SetId(Guid id) + public void SetId(Guid id,string remark) { Id = id; + Remark = remark; } @@ -272,7 +273,7 @@ namespace Win.Sfs.SettleAccount.Entities.WMS public string ParentMaterialCode { set; get; } [ImporterHeader(Name = "交货单号")] public string WmsBillNum { set; get; } - [ImporterHeader(Name = "看板号")] + [ImporterHeader(Name = "条码号")] //KENN号 public string Kanban { set; get; } @@ -285,15 +286,15 @@ namespace Win.Sfs.SettleAccount.Entities.WMS [ImporterHeader(Name = "物料组(车型)")] //物料组(车型) public string MaterialGroup { set; get; } - [ImporterHeader(Name = "出库库位")] + [ImporterHeader(Name = "出库库位",IsIgnore =true)] //出库库位 public string OutPut { set; get; } - [ImporterHeader(Name = "入库库位")] + [ImporterHeader(Name = "入库库位", IsIgnore = true)] //入库库位 public string InPut { set; get; } [ImporterHeader(Name = "状态")] public int State { get; set; } - [ImporterHeader(Name = "扩展字段1")] + [ImporterHeader(Name = "扩展字段1", IsIgnore = true)] /// /// 扩展字段1 /// @@ -301,17 +302,17 @@ namespace Win.Sfs.SettleAccount.Entities.WMS /// /// 扩展字段2 /// - [ImporterHeader(Name = "扩展字段2")] + [ImporterHeader(Name = "扩展字段2", IsIgnore = true)] public string Extend2 { set; get; } /// /// 扩展字段3 /// - [ImporterHeader(Name = "版本号")] + [ImporterHeader(Name = "版本号", IsIgnore = true)] public string Version { set; get; } - [ImporterHeader(Name = "数量")] + [ImporterHeader(Name = "结算数量",IsIgnore =true)] public decimal? Qty { set; get; } - [ImporterHeader(Name = "数量", IsIgnore = true)] + [ImporterHeader(Name = "单据", IsIgnore = true)] public string BillNum { set; get; } 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 ad223d09..111a2d66 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 @@ -15,6 +15,50 @@ using Win.Sfs.SettleAccount.FISes; namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report { + + public class SettleKBWithOutCode + { + // Factory MaterialCode InvoiceQty InvoiceAmt InvoicePrice SapMaterialCode MaterialDesc SapMaterialGroup DiffPrice SalePrice SocketQty + + + + [ExporterHeader(DisplayName = "期间")] + public string Version { get; set; } + [ExporterHeader(DisplayName = "物料组")] + public string SapMaterialGroup { get; set; } + [ExporterHeader(DisplayName = "SAP编号")] + public string SapMaterialCode { get; set; } + [ExporterHeader(DisplayName = "工厂")] + public string Factory { get; set; } + [ExporterHeader(DisplayName = "零件编号")] + public string MaterialCode { get; set; } + [ExporterHeader(DisplayName = "零件名称")] + public string MaterialDesc { get; set; } + [ExporterHeader(DisplayName = "开票数量")] + public decimal InvoiceQty { get; set; } + [ExporterHeader(DisplayName = "金额")] + public decimal InvoiceAmt { get; set; } + [ExporterHeader(DisplayName = "开票单价")] + public decimal InvoicePrice { get; set; } + [ExporterHeader(DisplayName = "库存数量")] + public decimal SocketQty { get; set; } + //[ExporterHeader(DisplayName = "数量差")] + //public decimal DiffQty { get; set; } + //[ExporterHeader(DisplayName = "CP7报废")] + //public decimal CP7ScrapQty { get; set; } + //[ExporterHeader(DisplayName = "索赔/退货")] + //public decimal ClaimQty { get; set; } + [ExporterHeader(DisplayName = "定价")] + public decimal SalePrice { get; set; } + [ExporterHeader(DisplayName = "价格差异")] + public decimal DiffPrice { get; set; } + } + + + + + + public class KanbanUnSettled { [ExporterHeader(DisplayName = "交货单号")] @@ -73,7 +117,7 @@ namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report - + public class KanbanUnSettledDapperRepository : DapperRepository, ITransientDependency { @@ -81,7 +125,7 @@ namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report { } - public virtual List GetKanbanReportList( string version, string begintime, string endtime) + public virtual List GetKanbanReportList(string version, string begintime, string endtime) { string sql = " SELECT\n" + @@ -110,12 +154,12 @@ namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report " ) TEMP1\n" + " LEFT JOIN ( SELECT Price, MaterialCode FROM Set_PriceList WHERE version = ( SELECT MAX( Version ) FROM Set_PriceList ) ) TEMP2 ON TEMP1.SapCode = TEMP2.MaterialCode"; string str = string.Empty; - str += " where 1=1 "; + str += " where 1=1 "; var _query = DbConnection.Query(sql, null, null, true, 1200, null); var _list = _query.ToList(); return _list; } - public virtual List GetNoKanbanReportList( string version, string begintime, string endtime) + public virtual List GetNoKanbanReportList(string version, string begintime, string endtime) { var sql = "SELECT\n" + " TEMP1.*,\n" + @@ -144,6 +188,103 @@ namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report var _list = _query.ToList(); return _list; } + public virtual List GetNoKanbanSettleDetail(string version, string begintime, string endtime) + { + var sql = + + " SELECT\n" + + " '{0}' Version ,"+ + " temp1.Factory,\n" + + " temp1.MaterialCode,\n" + + " temp1.InvoiceQty,\n" + + " temp1.InvoiceAmt,\n" + + " temp1.InvoicePrice,\n" + + " temp1.SapMaterialCode,\n" + + " temp1.MaterialDesc,\n" + + " temp1.SapMaterialGroup,\n" + + " temp1.InvoicePrice - ISNULL( temp2.Price, 0 ) AS DiffPrice,\n" + + " temp2.Price AS SalePrice \n" + + " FROM\n" + + " (\n" + + " SELECT\n" + + " b.Factory,\n" + + " b.MaterialCode,\n" + + " b.InvoiceQty,\n" + + " b.InvoiceAmt,\n" + + " b.InvoicePrice,\n" + + " g.MaterialCode AS SapMaterialCode,\n" + + " g.MaterialDesc,\n" + + " g.EstimateTypeDesc AS SapMaterialGroup \n" + + " FROM\n" + + " (\n" + + " SELECT\n" + + " Factory,\n" + + " MaterialCode,\n" + + " SUM( Qty ) AS InvoiceQty,\n" + + " SUM( Amt ) AS InvoiceAmt,\n" + + " SUM( Amt ) / SUM( Qty ) AS InvoicePrice \n" + + " FROM\n" + + " Set_Invoice \n" + + " WHERE\n" + + " ( Version = '{0}' ) \n" + + " GROUP BY\n" + + " MaterialCode,\n" + + " Factory \n" + + " ) AS b\n" + + " LEFT OUTER JOIN ( SELECT SUM( Qty ) AS Qty, MaterialCode FROM Set_Settle WHERE ( Version = '{0}' ) GROUP BY MaterialCode ) AS c ON b.MaterialCode = c.MaterialCode\n" + + " LEFT OUTER JOIN (\n" + + " SELECT\n" + + " Id,\n" + + " YEAR,\n" + + " Period,\n" + + " Version,\n" + + " Type,\n" + + " MaterialCode,\n" + + " MaterialDesc,\n" + + " Qty,\n" + + " Amt,\n" + + " Extend,\n" + + " ExtraProperties,\n" + + " ConcurrencyStamp,\n" + + " CreationTime,\n" + + " CreatorId,\n" + + " LastModificationTime,\n" + + " LastModifierId,\n" + + " IsDeleted,\n" + + " DeleterId,\n" + + " DeletionTime,\n" + + " BranchId,\n" + + " Enabled,\n" + + " Remark \n" + + " FROM\n" + + " Set_ScrapClaims \n" + + " WHERE\n" + + " ( Version = '{0}' )) AS e ON b.MaterialCode = e.MaterialCode\n" + + " LEFT OUTER JOIN Set_material AS g ON b.MaterialCode = g.CustomerPartCode \n" + + " ) 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 ) AS Expr1 FROM Set_PriceListVersion ))) AS temp2 ON temp1.SapMaterialCode = temp2.MaterialCode \n" + + "WHERE\n" + + " (\n" + + " temp1.SapMaterialGroup IN ( '柱护板成品-NCS', '高光盖板成品-BORA', '高光盖板成品-A SUV', '高光盖板成品-B9 ACC', '成品-NCS NF装饰条', '成品-Q3 HG' ))"; + string str = string.Empty; + str += " where 1=1 "; + sql = string.Format(sql, version); + var _query = DbConnection.Query(sql, null, null, true, 1200, null); + var _list = _query.ToList(); + return _list; + + + + + } } } diff --git a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettleKBWithCodeDapperReportRepository.cs b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettleKBWithCodeDapperReportRepository.cs index cab4eb02..b89de6ea 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettleKBWithCodeDapperReportRepository.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettleKBWithCodeDapperReportRepository.cs @@ -71,7 +71,7 @@ namespace Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report " LEFT JOIN ( SELECT Price, --定价\n" + " MaterialCode --厂内物料号\n" + " FROM Set_PriceList WHERE version = ( SELECT MAX ( Version ) FROM Set_PriceList ) ) TEMP2 ON TEMP1.SapMaterialCode= TEMP2.MaterialCode \n" + - "WHERE 1=1 {1}"; + "WHERE 1=1 "; string addwhere = string.Empty; string addSqlStr = string.Format(sqlString, version); //if (!string.IsNullOrEmpty(kanBan)) diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithCodeExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithCodeExportService.cs index cf8eb52b..27b450a3 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithCodeExportService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithCodeExportService.cs @@ -48,9 +48,12 @@ namespace SettleAccount.Job.Services.Report foreach (var itm in diffList) { var _first = _list.FirstOrDefault(p => p.MaterialCode == itm.MaterialCode); - _first.InvoiceDiffQty = _first.SettleNumber + itm.DiffQty;//开票数量(结算数量+差异) - _first.InvoiceMoney = _first.InvoiceDiffQty * _first.InvoicePrice;//开票总金额(开票数量*开票单价) - _first.SumDiffMoney = (_first.SettleNumber * _first.Price) - _first.InvoiceMoney;//总金额差异(结算金额-开票金额) + if (_first != null) + { + _first.InvoiceDiffQty = _first.SettleNumber + itm.DiffQty;//开票数量(结算数量+差异) + _first.InvoiceMoney = _first.InvoiceDiffQty * _first.InvoicePrice;//开票总金额(开票数量*开票单价) + _first.SumDiffMoney = (_first.SettleNumber * _first.Price) - _first.InvoiceMoney;//总金额差异(结算金额-开票金额) + } } } if (!string.IsNullOrEmpty(materialGroup)) diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithOutCodeExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithOutCodeExportService.cs new file mode 100644 index 00000000..37b785f8 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleKBWithOutCodeExportService.cs @@ -0,0 +1,111 @@ +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.Repository.SettleAccountJob.Report; + +namespace SettleAccount.Job.Services.Report +{ + public class SettleKBWithOutCodeExportService : ITransientDependency, IExportJob + { + private readonly KanbanUnSettledDapperRepository _dapper; + private readonly OutputService _outputService; + private readonly ErpPartDapperRepository _erpdapperRepository; + + public SettleKBWithOutCodeExportService(KanbanUnSettledDapperRepository dapper, + OutputService outputService, + ErpPartDapperRepository erpdapperRepository) + { + _dapper = dapper; + _outputService = outputService; + _erpdapperRepository = erpdapperRepository; + } + + + public string ExportFile(Guid id, List exportName, List p_list) + { + + var _filename = exportName.FirstOrDefault(); + var sapMaterialCode = p_list.Where(p => p.Name == "SapMaterialCode").FirstOrDefault().Value; + + + var customerPartCode = p_list.Where(p => p.Name == "CustomerPartCode").FirstOrDefault().Value; + var version = p_list.Where(p => p.Name == "Version").FirstOrDefault().Value; + var materialGroup = p_list.Where(p => p.Name == "EstimateTypeDesc").FirstOrDefault().Value; + var kanban = p_list.Where(p => p.Name == "Kanban").FirstOrDefault().Value; + var beginTime = p_list.Where(p => p.Name == "BegingTime").FirstOrDefault().Value; + var endTime = p_list.Where(p => p.Name == "EndTime").FirstOrDefault().Value; + + + var _list = _dapper.GetNoKanbanSettleDetail(version, beginTime, endTime); + //var diffList = _erpdapperRepository.GetSettleInvoiceDiff(version); + //if (diffList != null) + //{ + // foreach (var itm in diffList) + // { + // var _first = _list.FirstOrDefault(p => p.MaterialCode == itm.MaterialCode); + // _first.InvoiceDiffQty = _first.SettleNumber + itm.DiffQty;//开票数量(结算数量+差异) + // _first.InvoiceMoney = _first.InvoiceDiffQty * _first.InvoicePrice;//开票总金额(开票数量*开票单价) + // _first.SumDiffMoney = (_first.SettleNumber * _first.Price) - _first.InvoiceMoney;//总金额差异(结算金额-开票金额) + // } + //} + if (!string.IsNullOrEmpty(materialGroup)) + { + var _groupList = materialGroup.Split(new char[] { ',' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _list = _list.Where(p => _groupList.Contains(p.SapMaterialGroup)).ToList(); + } + } + + if (!string.IsNullOrEmpty(sapMaterialCode)) + { + var _groupList = sapMaterialCode.Split(new char[] { '\n' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _list = _list.Where(p => _groupList.Contains(p.SapMaterialCode)).ToList(); + } + } + + if (!string.IsNullOrEmpty(customerPartCode)) + { + var _groupList = customerPartCode.Split(new char[] { '\n' }).Distinct().ToList(); + if (_groupList.Count() > 0) + { + _list = _list.Where(p => _groupList.Contains(p.SapMaterialCode)).ToList(); + } + } + + //if (!string.IsNullOrEmpty(beginTime)) + //{ + // _list = _list.Where(p => DateTime.Parse(beginTime)<=p.ActualGoodsDate).ToList(); + //} + //if (!string.IsNullOrEmpty(endTime)) + //{ + // _list = _list.Where(p => DateTime.Parse(endTime) >= p.ActualGoodsDate).ToList(); + //} + + //if (!string.IsNullOrEmpty(kanban)) + //{ + // var _groupList = kanban.Split(new char[] { '\n' }).Distinct().ToList(); + // if (_groupList.Count() > 0) + // { + // _list = _list.Where(p => _groupList.Contains(p.Kanban)).ToList(); + // } + //} + + + + + _outputService.Export(id,_filename , _list); + + return id.ToString(); + } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleSparePartExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleSparePartExportService.cs index cf100c2e..81de8f03 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleSparePartExportService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettleSparePartExportService.cs @@ -26,7 +26,7 @@ namespace SettleAccount.Job.Services.Report public string ExportFile(Guid id, List exportName, List p_list) { - var year = p_list.Where(p => p.Name == "Year").FirstOrDefault().Value; + var purchaseOrderNo = p_list.Where(p => p.Name == "PurchaseOrderNo").FirstOrDefault().Value; var version = p_list.Where(p => p.Name == "Version").FirstOrDefault().Value; var sapCode = p_list.Where(p => p.Name == "SAPCode").FirstOrDefault().Value; @@ -40,9 +40,12 @@ namespace SettleAccount.Job.Services.Report foreach (var itm in diffList) { var _first = _list.FirstOrDefault(p => p.MaterialCode == itm.MaterialCode); - _first.InvoicedQty = _first.InvoicedQty + itm.DiffQty;//开票数量(结算数量+差异) - _first.InvoiceMoney =Math.Round(_first.InvoicedQty * _first.InvoicePrice,2);//开票总金额(开票数量*开票单价) - _first.SumDiffMoney = (_first.ReceiptQty * _first.Price) - _first.InvoiceMoney;//总金额差异(结算金额-开票金额) + if (_first != null) + { + _first.InvoicedQty = _first.InvoicedQty + itm.DiffQty;//开票数量(结算数量+差异) + _first.InvoiceMoney = Math.Round(_first.InvoicedQty * _first.InvoicePrice, 2);//开票总金额(开票数量*开票单价) + _first.SumDiffMoney = (_first.ReceiptQty * _first.Price) - _first.InvoiceMoney;//总金额差异(结算金额-开票金额) + } } } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs index 639da150..5de1afde 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs @@ -140,6 +140,13 @@ namespace Win.Sfs.SettleAccount { return implementationFactory.GetService(); } + if (key.Equals(typeof(SettleKBWithOutCodeExportService).FullName)) + { + return implementationFactory.GetService(); + } + + + else {