diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs
index 4b5fd8b1..85ece7d0 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs
@@ -79,7 +79,7 @@ public class BBAC_SA_DETAIL_IMPORT_DTO
[Display(Name = "Material")]
[Required(ErrorMessage = "{0}不能为空")]
[ImporterHeader(Name = "Material")]
- public string LU { get; set; }
+ public string PartCode { get; set; }
///
/// 数量
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs
index 32d392d3..3ff82dcf 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs
@@ -114,14 +114,7 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase
#region 导入数据转换、数据校验
ExportImporter _exportImporter = new ExportImporter();
var importDtos = await _exportImporter.UploadExcelImport(files, _excelImportService);
-
- //JisBBAC
- var importHBOPDtos = importDtos.FindAll(t => t.PN.Contains("R0") == false);
- //买单件BBAC
- var importMaiDanJianHBOPDtos = importDtos.FindAll(t => t.PN.Contains("R0"));
-
- var importBBACSaDetails = ObjectMapper.Map, List>(importHBOPDtos);
- var importMaiDanJianBBACSaDetails = ObjectMapper.Map, List>(importHBOPDtos);
+ var importBBACSaDetails = ObjectMapper.Map, List>(importDtos);
//数据校验
var checkList = new List();
@@ -139,14 +132,14 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase
if (checkList.Count > 0)
{
- string fileName = await ExportErrorReportAsync(checkList);
+ string fileName = await ExportErrorReportAsync(checkList).ConfigureAwait(false);
return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, fileName = fileName });
}
#endregion
if (importBBACSaDetails.Any())
{
- await SaDataHandleAsync(importBBACSaDetails, importMaiDanJianBBACSaDetails);
+ await SaDataHandleAsync(importBBACSaDetails).ConfigureAwait(false);
}
return new JsonResult(new { Code = 200, Message = "导入成功" });
@@ -286,7 +279,7 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase
///
/// 结算数据处理
///
- private async Task SaDataHandleAsync(List bbacSaDetails, List maiDanJianBBACSaDetails)
+ private async Task SaDataHandleAsync(List bbacSaDetails)
{
//结算单号
var bbacSaBillNum = OrderNumberGenerator.GenerateOrderNumber("SA");
@@ -319,13 +312,13 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase
bbacSaDetails.ForEach(bbacSaDetail =>
{
- List luList = bbacSaDetail.LU.Split(" ").ToList();
- bbacSaDetail.LU = luList[0].Replace(" ", "");
- if (luList.Count > 1)
+ List partCodes = bbacSaDetail.PartCode.Split(" ").ToList();
+ bbacSaDetail.PartCode = partCodes[0].Replace(" ", "");
+ if (partCodes.Count > 1)
{
- luList.RemoveAt(0);
- var luAssemble = luList.Select(t => t.Replace(" ", ""));
- bbacSaDetail.LU += luAssemble.Aggregate(" ", (current, index) => current + index);
+ partCodes.RemoveAt(0);
+ var partCodeAssemble = partCodes.Select(t => t.Replace(" ", ""));
+ bbacSaDetail.PartCode += partCodeAssemble.Aggregate(" ", (current, index) => current + index);
}
bbacSaDetail.BillNum = bbacSaBillNum;
@@ -334,6 +327,7 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase
//根据物料号、结算日期获取价格
var priceListEntity = priceListEntitys.Find(t => t.LU == bbacSaDetail.LU && bbacSaDetail.SettleDate > t.BeginTime && bbacSaDetail.SettleDate < t.EndTime);
bbacSaDetail.Price = priceListEntity?.Price ?? default;
+ bbacSaDetail.IsMaiDan = bbacSaDetail.PN.Contains("R0");
});
//导入的零件号集合
@@ -353,6 +347,13 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase
var materialRelationship = new MaterialRelationship(GuidGenerator.Create(), t.Replace(" ", "-"), "", t, _businessType.ToString());
materialRelationships.Add(materialRelationship);
});
+
+ var seAllMaterialRelationships = materialRelationshipEntitys.Union(materialRelationships);
+ bbacSaDetails.ForEach(bbacSaDetail =>
+ {
+ bbacSaDetail.LU = seAllMaterialRelationships.FirstOrDefault(t => t.SettleMaterialCode == bbacSaDetail.PartCode)?.ErpMaterialCode ?? bbacSaDetail.PartCode.Replace(" ", "-");
+ bbacSaDetail.KeyCode = bbacSaDetail.PN + bbacSaDetail.LU;
+ });
#endregion
#region 入库数据赋值
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs
index 430cc75e..460565f6 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs
@@ -328,8 +328,8 @@ public class HBPO_SA_SERVICE : SettleAccountApplicationBase
if (partCodes.Count > 1)
{
partCodes.RemoveAt(0);
- var luAssemble = partCodes.Select(t => t.Replace(" ", ""));
- hbpoSaDetail.PartCode += luAssemble.Aggregate(" ", (current, index) => current + index);
+ var partCodeAssemble = partCodes.Select(t => t.Replace(" ", ""));
+ hbpoSaDetail.PartCode += partCodeAssemble.Aggregate(" ", (current, index) => current + index);
}
hbpoSaDetail.BillNum = hbpoSaBillNum;
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs
index f0ae4698..427fc39f 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs
@@ -1,17 +1,15 @@
using System;
+using System.Collections.Generic;
using System.Diagnostics;
+using System.Linq;
using System.Threading.Tasks;
using Coravel.Invocable;
+using LinqToDB;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.DependencyInjection;
using SettleAccount.Domain.BQ;
using Volo.Abp.Application.Services;
using Win.Sfs.Shared.RepositoryBase;
-using System.Linq;
-using DocumentFormat.OpenXml.Office2010.ExcelAc;
-using System.Collections.Generic;
-using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp.Application;
-using System.Runtime.Intrinsics.X86;
namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs;
@@ -47,56 +45,38 @@ public class JisHBPOSeEdiCompareAppService : ApplicationService, IInvocable
///
public async Task Invoke()
{
- await Task.CompletedTask;
- Debug.WriteLine($"执行了 {this.GetType()}");
-
+ Debug.WriteLine($"执行了:{this.GetType()}");
using var serviceScope = _serviceProvider.CreateScope();
var db = serviceScope.ServiceProvider.GetRequiredService();
+ //var query = from se in db.Set()
+ // join edi in db.Set() on new
+ // {
+ // se.LU,
+ // se.PN,
+ // se.Qty
+ // } equals new
+ // {
+ // edi.LU,
+ // edi.PN,
+ // edi.Qty
+ // }
+ // where se.IsHaveEdiData == false && edi.IsHaveSeData == false
+ // select new
+ // {
+ // se,
+ // edi
+ // };
+ var query = db.Set().Join(db.Set(), a => new { a.PN, a.LU, a.Qty }, b => new { b.PN, b.LU, b.Qty }, (se, edi) => new { se, edi }).Where(t => t.se.IsHaveEdiData == false && t.edi.IsHaveSeData == false);
+ var ses = query.Select(t => t.se);
+ var edis = query.Select(t => t.edi);
- //List hbpoSeDetails = await _hbpoSeDetailRepository.GetListAsync(t => t.IsHaveEdiData == false);
-
- //var hbpoSeDetails = db.Set().Where(t => t.IsHaveEdiData == false).OrderBy(t => t.BillTime);
-
- //var hbpoSeEdis = db.Set().Where(t => t.IsHaveSeData == false && hbpoSeDetails.Any(w => w.PN.Equals(t.PN) && w.LU.Equals(t.LU) && w.Qty.Equals(t.Qty)));
-
- var query = from se in db.Set()
- join edi in db.Set() on new
- {
- se.LU,
- se.PN,
- se.Qty
- } equals new
- {
- edi.LU,
- edi.PN,
- edi.Qty
- }
- where se.IsHaveEdiData == false && edi.IsHaveSeData == false
- //select new
- //{
- // SeID = se.Id,
- // se.PN,
- // se.LU,
- // se.Qty,
- // EdiID = edi.Id
- //};
- select new
- {
- se,
- edi
- };
-
- query.ForEach(item =>
- {
- Debug.WriteLine($"{Newtonsoft.Json.JsonConvert.SerializeObject(item)}");
- });
- //var ses = query.SelectMany(t => t.se);
- //var edis = query.SelectMany(t => t.edi);
+ ses.ForEach(t => t.IsHaveEdiData = true);
+ edis.ForEach(t => t.IsHaveSeData = true);
- //hbpoSeEdis.ForEach(hbpoSeEdi =>
- //{
- // Debug.WriteLine($"{hbpoSeEdi.Id}");
- //});
+ db.Set().UpdateRange(ses);
+ db.Set().UpdateRange(edis);
+ await db.SaveChangesAsync().ConfigureAwait(false);
+ Debug.WriteLine($"处理数量:{query.Count()}");
}
}