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 e20f8fe2..78edb22a 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/Reports/ReportServices/ReportMakeService.cs @@ -313,6 +313,43 @@ namespace Win.Sfs.SettleAccount.Reports.ReportServices } + /// + /// 结算总成和ERP总成价格对比 + /// + /// 上传的文件(前端已经限制只能上传一个附件) + /// + [HttpGet] + [Route("BomDiffPrice-Make")] + [DisableRequestSizeLimit] + + public async Task SettledPartAndErpPartPriceDiffMake(string version, string customerCode) + { + + if (!_relationshipRepository.Any(p => p.Version == version && p.CustomerCode == customerCode)) + { + throw new BusinessException("8989", string.Format("不存总成与结算件零件关系{0}期间", version)); + } + if (!_settlementPartVersionrepository.Any(p => p.Version == version && p.CustomerCode == customerCode)) + { + throw new BusinessException("8989", string.Format("不存结算包价格{0}期间", version)); + } + + List customConditionList = new List(); + + customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = "Bom定价差异明细" }); + customConditionList.Add(new CustomCondition() { Name = "Version", Value = version ?? string.Empty }); + customConditionList.Add(new CustomCondition() { Name = "CustomerCode", Value = customerCode }); + + var _taskid = await _service.ExportEnqueueAsync("Bom定价差异明细", ExportExtentsion.Excel, version, string.Empty, CurrentUser, typeof(SettledPartAndErpPartPriceDiffExportService), customConditionList, (rs) => + { + + }); + return _taskid; + } + + + + /// /// 看板未结输出 /// diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/SettledPartAndErpPartPriceDiffs/SettledPartAndErpPartPriceDiff.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/SettledPartAndErpPartPriceDiffs/SettledPartAndErpPartPriceDiff.cs index 9567de5b..3dba01d8 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/SettledPartAndErpPartPriceDiffs/SettledPartAndErpPartPriceDiff.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/SettledPartAndErpPartPriceDiffs/SettledPartAndErpPartPriceDiff.cs @@ -19,9 +19,9 @@ namespace Win.Sfs.SettleAccount.Reports.SettledPartAndErpPartPriceDiffs [ExporterHeader(DisplayName = "ERP物料编号")] public string ErpMaterialCode { set; get; } - [ExporterHeader(DisplayName = "总成价格")] + [ExporterHeader(DisplayName = "Bom总成价格")] public decimal Price { set; get; } - [ExporterHeader(DisplayName = "结算总成价格")] + [ExporterHeader(DisplayName = "总成价格")] public decimal SumPrice { get; set; } [ExporterHeader(DisplayName = "差额")] public decimal DiffPrice { get; set; } diff --git a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettledPartAndErpPartPriceDiffRepository.cs b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettledPartAndErpPartPriceDiffRepository.cs index 39979f27..b76c64f5 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettledPartAndErpPartPriceDiffRepository.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/SettledPartAndErpPartPriceDiffRepository.cs @@ -21,16 +21,35 @@ namespace Win.Sfs.SettleAccount.Repository.Report public virtual List GetDiffReport(string year, string customcode, string version) { - string sqlString = " select " + string.Format(" {0} as Version , ", version) + " r1.ErpMaterialCode, r2.Price, r1.SumPrice , r1.MaterialDesc, (isnull(r2.Price,0)-isnull(r1.SumPrice,0)) as diffPrice from \n" + - "( select ErpMaterialCode, MaterialDesc, SUM(Price) as SumPrice from(\n" + - "select a.ErpMaterialCode, b.SettlementPartCode, a.MaterialDesc, (a.Qty * b.Price) as Price from\n" + - "(SELECT ErpMaterialCode, MaterialDesc, SettleMaterialCode, Qty, Version ,CustomerCode \n" + - "FROM [Set_MaterialRelationshipDetail] mdetail \n" + + string sqlString = "SELECT\n" + +" t1.ErpMaterialCode,\n" + +" t1.Price SumPrice,\n" + +" t2.Price,\n" + +" t3.MaterialDesc,\n" + +" t3.EstimateTypeDesc ,\n" + - " where mdetail.Version='{0}' and mdetail.CustomerCode='{1}' \n" + - ") a \n" + - "inner join Set_settlement_part b on a.Version = b.Version and a.SettleMaterialCode = b.SettlementPartCode and a.CustomerCode = b.CustomerCode) temp group by ErpMaterialCode, MaterialDesc) r1 left join set_pricelist r2 " + - " on r2.MaterialCode=r1.ErpMaterialCode and r2.Version='{0}'\n"; +" (ISNULL(t1.price,0)-ISNULL(t2.price,0)) DiffPrice\n" + + +"FROM\n" + +" (\n" + +" SELECT\n" + +" ErpMaterialCode,\n" + +" SUM( amt ) Price \n" + +" FROM\n" + +" (\n" + +" SELECT\n" + +" ErpMaterialCode,\n" + +" SettleMaterialCode,(\n" + +" Qty * isnull( b.Price, 0 )) amt \n" + +" FROM\n" + +" Set_MaterialRelationshipDetail a\n" + +" LEFT JOIN ( SELECT Price, MaterialCode FROM Set_PriceList WHERE version = ( SELECT Max( Version ) FROM Set_PriceList ) AND type = 10 ) b ON a.SettleMaterialCode = b.MaterialCode \n" + +" ) temp1 \n" + +" GROUP BY\n" + +" ErpMaterialCode \n" + +" ) t1\n" + +" LEFT JOIN ( SELECT Price, MaterialCode FROM Set_PriceList WHERE version = ( SELECT Max( Version ) FROM Set_PriceList ) AND type = 10 ) t2 ON t1.ErpMaterialCode = t2.MaterialCode\n" + +" LEFT JOIN ( SELECT max( Id ) Id, MaterialCode, MaterialDesc, EstimateTypeDesc FROM Set_material GROUP BY MaterialCode, MaterialDesc, EstimateTypeDesc ) t3 ON t1.ErpMaterialCode = t3.MaterialCode"; string _sql = string.Format(sqlString, version, customcode); @@ -38,5 +57,32 @@ namespace Win.Sfs.SettleAccount.Repository.Report //var _query = _db.Query(); return _query.ToList(); } + + public virtual List GetDiffDetailReport(string year, string customcode, string version) + { + string sqlString = "select a.ErpMaterialCode,SettleMaterialCode,a.ShipMaterailCode,d.MaterialDesc,d.EstimateTypeDesc from\n" + +" Set_MaterialRelationshipDetail_pg a left join\n" + +" (\n" + +" SELECT\n" + +" Price,\n" + +" MaterialCode \n" + +" FROM\n" + +" Set_PriceList \n" + +" WHERE\n" + +" version = ( SELECT Max( Version ) FROM Set_PriceList ) and type=10 )\n" + +" b on a.SettleMaterialCode=b.MaterialCode \n" + +" left join \n" + +" set_material d ON a.ShipMaterailCode = d.CustomerPartCode\n" + +" \n" + +" \n" + +" where b.MaterialCode is null"; + string _sql = string.Format(sqlString, version, customcode); + + var _query = DbConnection.Query(_sql, null, null, true, 1200, null); + //var _query = _db.Query(); + return _query.ToList(); + } + + } } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/InvoiceSettledDetailDiffExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/InvoiceSettledDetailDiffExportService.cs index 5446acc8..95c25bde 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/InvoiceSettledDetailDiffExportService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/InvoiceSettledDetailDiffExportService.cs @@ -180,11 +180,11 @@ namespace SettleAccount.Job.Services _ls = _ls.Where(p => _groupList.Contains(p.SapMaterialCode)).ToList(); } } - - - //.Select(p => p.FirstOrDefault()); - _ls = _ls.OrderBy(p => p.SapMaterialCode).ThenBy(p => p.ChassisNumber).ThenBy(p => p.KENNCode).ToList(); + + + //.Select(p => p.FirstOrDefault()); + _ls = _ls.OrderBy(p => p.ChassisNumber).ThenBy(p => p.KENNCode).ThenBy(p => p.SapMaterialCode).ToList(); } _outputService.Export(id, _filename, _ls); diff --git a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettledPartAndErpPartPriceDiffExportService.cs b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettledPartAndErpPartPriceDiffExportService.cs index 59a21ca9..60ad7617 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettledPartAndErpPartPriceDiffExportService.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SettledPartAndErpPartPriceDiffExportService.cs @@ -31,7 +31,7 @@ namespace SettleAccount.Job.Services.Report var version = p_list.Where(p => p.Name == "Version").FirstOrDefault().Value; var customerCode = p_list.Where(p => p.Name == "CustomerCode").FirstOrDefault().Value; var _list= _dapper.GetDiffReport(DateTime.Now.Year.ToString(), customerCode, version); - _outputService.Export(id,string.Format("总成定价和结算价对比_{0}.xlsx",Guid.NewGuid().ToString()), _list); + _outputService.Export(id,string.Format("Bom定价对比_{0}.xlsx",Guid.NewGuid().ToString()), _list); return id.ToString(); }