From e9b32f58e3ce425551c493bfb28c234ca8fd96ae Mon Sep 17 00:00:00 2001 From: mahao Date: Thu, 27 Jul 2023 16:16:32 +0800 Subject: [PATCH] =?UTF-8?q?EnumBusinessType=E6=B7=BB=E5=8A=A0=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettleAccount.HttpApi.Host/Startup.cs | 9 +- .../Entities/BQ/BBAC_CAN_SA_SERVICE.cs | 8 +- .../Entities/BQ/HBPO_CAN_SA_SERVICE.cs | 8 +- .../Entities/BQ/HBPO_SA_SERVICE.cs | 2 +- .../Entities/BQ/INVOICE_SERVICE.cs | 7 +- .../Entities/BQ/PUB_CAN_SA_SERVICE.cs | 8 +- .../Entities/BQ/Syncs/BBACSeSyncAppService.cs | 143 ++++++++++++++++++ .../BQ/{ => Syncs}/HBPOSeSyncAppService.cs | 39 +++-- .../Entities/BQ/Syncs/SeSyncConfig.cs | 31 ++++ .../BQ/Syncs/ZhiGongBBACSeSyncAppService.cs | 122 +++++++++++++++ ...ttleAccountApplicationAutoMapperProfile.cs | 8 + .../Entities/BQ/Managers/BBAC_NOT_SA_MNG.cs | 2 +- .../Entities/BQ/Managers/INV_MNG.cs | 14 +- .../Entities/BQ/Syncs/TM_BJBMPT_JIS_RECORD.cs | 9 +- .../Entities/BQ/Syncs/TM_BJBMPT_JIT_RECORD.cs | 58 ++++++- .../BQ/Syncs/TM_BJBMPT_OTHER_RECORD.cs | 91 +++++++++++ .../SettleAccount.Domain/EnumBusinessType.cs | 58 ++++--- .../EntityFrameworkCore/WMSBJBMPTDbContext.cs | 1 + 18 files changed, 561 insertions(+), 57 deletions(-) create mode 100644 code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/BBACSeSyncAppService.cs rename code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/{ => Syncs}/HBPOSeSyncAppService.cs (80%) create mode 100644 code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/SeSyncConfig.cs create mode 100644 code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/ZhiGongBBACSeSyncAppService.cs create mode 100644 code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_OTHER_RECORD.cs diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/Startup.cs b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/Startup.cs index 72df6159..c1859db9 100644 --- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/Startup.cs +++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/Startup.cs @@ -13,7 +13,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NUglify.Helpers; using SettleAccount.Job.SignalR; -using Win.Sfs.SettleAccount.Entities.BQ; +using Win.Sfs.SettleAccount.Entities.BQ.Syncs; using Win.Sfs.SettleAccount.Entities.BQ.Vmi; namespace Win.Sfs.SettleAccount; @@ -28,6 +28,9 @@ public class Startup .ForEach(o => services.AddTransient(o)); services.AddScheduler(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddRouting(options => options.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer)); services.AddMvc(options => options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()))); services.AddApplication(); @@ -50,7 +53,9 @@ public class Startup app.UseEndpoints(endpoints => endpoints.MapHub("/api/hub")); app.ApplicationServices.UseScheduler(scheduler => { - scheduler.Schedule().EveryMinute(); + //scheduler.Schedule().EveryMinute(); + scheduler.Schedule().EveryMinute(); + using var scope = app.ApplicationServices.CreateScope(); var jobs = scope.ServiceProvider.GetService().Set().ToList(); jobs?.ForEach(job => diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs index e8a76508..01780c2a 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs @@ -252,7 +252,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invGroupNum: main.InvGroupNum, lU: detail.LU, qty: detail.Qty, - bussiessType: EnumBusinessType.BBAC, + bussiessType: EnumBusinessType.JisBBAC, amt: detail.Amt, pRICE: detail.Price, extend1: detail.ContactDocID, @@ -294,7 +294,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ amt: amt, taxAmt: txtAmt, fileName: string.Empty, - businessType: EnumBusinessType.BBAC, + businessType: EnumBusinessType.JisBBAC, invGroupNum: main.InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常 @@ -400,7 +400,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invGroupNum: main.InvGroupNum, lU: detail.LU, qty: detail.Qty, - bussiessType: EnumBusinessType.BBAC, + bussiessType: EnumBusinessType.JisBBAC, amt: detail.Amt, pRICE: detail.Price, extend1: detail.ContractDocID, @@ -447,7 +447,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ amt: amt, taxAmt: txtAmt, fileName: string.Empty, - businessType: EnumBusinessType.BBAC, + businessType: EnumBusinessType.JisBBAC, invGroupNum: main.InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs index 62a3cb2b..170722ba 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs @@ -234,7 +234,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invGroupNum: main.InvGroupNum, lU: detail.LU, qty: detail.Qty, - bussiessType: EnumBusinessType.HBPO, + bussiessType: EnumBusinessType.JisHBPO, amt: detail.Amt, pRICE: detail.Price, extend1: string.Empty, @@ -275,7 +275,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ amt: amt, taxAmt: txtAmt, fileName: string.Empty, - businessType: EnumBusinessType.HBPO, + businessType: EnumBusinessType.JisHBPO, invGroupNum: main.InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常 @@ -371,7 +371,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invGroupNum: main.InvGroupNum, lU: detail.LU, qty: detail.Qty, - bussiessType: EnumBusinessType.BBAC, + bussiessType: EnumBusinessType.JisBBAC, amt: detail.Amt, pRICE: detail.Price, extend1: string.Empty, @@ -416,7 +416,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ amt: amt, taxAmt: txtAmt, fileName: string.Empty, - businessType: EnumBusinessType.HBPO, + businessType: EnumBusinessType.JisHBPO, invGroupNum: main.InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常 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 fdee5da9..187cf6f4 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 @@ -108,7 +108,7 @@ public class HBPO_SA_SERVICE : SettleAccountApplicationBase public async Task ImportAsync([FromForm] IFormFileCollection files) { //业务类型 - var businessType = EnumBusinessType.HBPO; + var businessType = EnumBusinessType.JisHBPO; //数据校验 var checkList = new List(); //结算单号 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs index 65a64563..df1c0ede 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs @@ -142,16 +142,17 @@ namespace Win.Sfs.SettleAccount.Entities.BQ case EnumBusinessType.BeiJian: await _pubMng.SetNewState(input.InvGroupNum); break; - case EnumBusinessType.ZhiGongJian: + case EnumBusinessType.ZhiGongJianBBAC: + case EnumBusinessType.ZhiGongJianHBPO: await _pubMng.SetNewState(input.InvGroupNum); break; case EnumBusinessType.YingDuJian: await _pubMng.SetNewState(input.InvGroupNum); break; - case EnumBusinessType.BBAC: + case EnumBusinessType.JisBBAC: await _bbacMng.SetNewState(input.InvGroupNum); break; - case EnumBusinessType.HBPO: + case EnumBusinessType.JisHBPO: await _hbpoMng.SetNewState(input.InvGroupNum); break; } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs index 444e87d7..275e8672 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs @@ -230,7 +230,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invGroupNum: main.InvGroupNum, lU: detail.LU, qty: detail.Qty, - bussiessType: EnumBusinessType.HBPO, + bussiessType: EnumBusinessType.JisHBPO, amt: detail.Amt, pRICE: detail.Price, extend1: string.Empty, @@ -271,7 +271,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ amt: amt, taxAmt: txtAmt, fileName: string.Empty, - businessType: EnumBusinessType.HBPO, + businessType: EnumBusinessType.JisHBPO, invGroupNum: main.InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常 @@ -368,7 +368,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invGroupNum: main.InvGroupNum, lU: detail.LU, qty: detail.Qty, - bussiessType: EnumBusinessType.BBAC, + bussiessType: EnumBusinessType.JisBBAC, amt: detail.Amt, pRICE: detail.Price, extend1: string.Empty, @@ -413,7 +413,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ amt: amt, taxAmt: txtAmt, fileName: string.Empty, - businessType: EnumBusinessType.HBPO, + businessType: EnumBusinessType.JisHBPO, invGroupNum: main.InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/BBACSeSyncAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/BBACSeSyncAppService.cs new file mode 100644 index 00000000..052e73c0 --- /dev/null +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/BBACSeSyncAppService.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Coravel.Invocable; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using SettleAccount.Domain.BQ; +using Volo.Abp.Application.Services; +using Win.Sfs.SettleAccount.EntityFrameworkCore; +using Win.Sfs.Shared.RepositoryBase; + +namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; + +/// +/// HBPO发运数据同步服务 +/// +[AllowAnonymous] +[Route("api/settleaccount/[controller]/[action]")] +public class BBACSeSyncAppService : ApplicationService, IInvocable +{ + /// + /// WMS数据上下文 + /// + private readonly WMSBJBMPTDbContext _wmsBJBMPTContext; + + /// + /// 同步位置标记 + /// + private readonly INormalEfCoreRepository _syncPositionFlagRepository; + + /// + /// HBPO发运数据仓储 + /// + private readonly INormalEfCoreRepository _bbacSeDetailRepository; + + /// + /// 构造 + /// + public BBACSeSyncAppService( + WMSBJBMPTDbContext wmsBJBMPTContext, + INormalEfCoreRepository syncPositionFlagRepository, + INormalEfCoreRepository bbacSeDetailRepository) + { + _wmsBJBMPTContext = wmsBJBMPTContext; + _syncPositionFlagRepository = syncPositionFlagRepository; + _bbacSeDetailRepository = bbacSeDetailRepository; + } + + [HttpPost] + public async Task Invoke() + { + await SyncJitRecord(); + //await SyncJisRecord(); + } + + /// + /// 同步JitRecord + /// + /// + private async Task SyncJitRecord() + { + //同步表名称 + var syncTableName = "TM_BJBMPT_JIT_RECORD"; + //BBAC类型集合 + var EnumDeliverSubBillTypes = new List + { + EnumDeliverSubBillType.保险杠BBAC, + EnumDeliverSubBillType.买单件保险杠BBAC, + EnumDeliverSubBillType.买单件小件BBAC, + EnumDeliverSubBillType.小件BBAC, + EnumDeliverSubBillType.JIT直供件BBAC + }; + + Expression> predicate = (t) => t.DeliverBillType == EnumDeliverBjBmpBillType.JIS件 && EnumDeliverSubBillTypes.Contains(t.DeliverSubBillType); + var syncPositionFlag = await _syncPositionFlagRepository.FindAsync(t => t.TableName == syncTableName); + if (syncPositionFlag != null) + { + Expression> expression = (t) => t.UID > int.Parse(syncPositionFlag.Position); + var body = expression.Body; + predicate = Expression.Lambda>(Expression.And(predicate.Body, body), predicate.Parameters); + } + + var jitRecords = _wmsBJBMPTContext.TM_BJBMPT_JIT_RECORD.Where(predicate).OrderBy(b => b.UID).ToList(); + + var bbacSeDetails = ObjectMapper.Map, List>(jitRecords); + if (bbacSeDetails.Any()) + { + await _bbacSeDetailRepository.InsertManyAsync(bbacSeDetails); + + if (syncPositionFlag != null) + { + syncPositionFlag.Position = jitRecords.Last().UID.ToString(); + await _syncPositionFlagRepository.UpdateAsync(syncPositionFlag); + } + else + { + syncPositionFlag = new SyncPositionFlag() + { + TableName = syncTableName, + Position = jitRecords.Last().UID.ToString() + }; + await _syncPositionFlagRepository.InsertAsync(syncPositionFlag); + } + } + } + + private async Task SyncJisRecord() + { + //同步表名称 + var syncTableName = "TM_BJBMPT_JIS_RECORD"; + Expression> predicate = (t) => true; + var syncPositionFlag = await _syncPositionFlagRepository.FindAsync(t => t.TableName == syncTableName); + if (syncPositionFlag != null) + { + predicate = (t) => t.UID > int.Parse(syncPositionFlag.Position); + } + + var jisRecords = _wmsBJBMPTContext.TM_BJBMPT_JIS_RECORD.Where(predicate).OrderBy(b => b.UID).ToList(); + + var bbacSeDetails = ObjectMapper.Map, List>(jisRecords); + if (bbacSeDetails.Any()) + { + await _bbacSeDetailRepository.InsertManyAsync(bbacSeDetails); + + if (syncPositionFlag != null) + { + syncPositionFlag.Position = jisRecords.Last().UID.ToString(); + await _syncPositionFlagRepository.UpdateAsync(syncPositionFlag); + } + else + { + syncPositionFlag = new SyncPositionFlag() + { + TableName = syncTableName, + Position = jisRecords.Last().UID.ToString() + }; + await _syncPositionFlagRepository.InsertAsync(syncPositionFlag); + } + } + } +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPOSeSyncAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HBPOSeSyncAppService.cs similarity index 80% rename from code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPOSeSyncAppService.cs rename to code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HBPOSeSyncAppService.cs index 6ca8f350..9d0192e0 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPOSeSyncAppService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HBPOSeSyncAppService.cs @@ -6,16 +6,12 @@ using System.Threading.Tasks; using Coravel.Invocable; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; using SettleAccount.Domain.BQ; using Volo.Abp.Application.Services; -using Win.Sfs.SettleAccount.Entities.BQ.Syncs; -using Win.Sfs.SettleAccount.Entities.BQ.Vmi; -using Win.Sfs.SettleAccount.Entities.Prices; using Win.Sfs.SettleAccount.EntityFrameworkCore; using Win.Sfs.Shared.RepositoryBase; -namespace Win.Sfs.SettleAccount.Entities.BQ; +namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; /// /// HBPO发运数据同步服务 @@ -62,7 +58,7 @@ public class HBPOSeSyncAppService : ApplicationService, IInvocable //IJobService [HttpPost] public async Task Invoke() { - //await SyncJitRecord(); + await SyncJitRecord(); //await SyncJisRecord(); //if (!dbContext.GetService().Exists() && dbContext.Database.EnsureCreated()) //{ @@ -107,7 +103,7 @@ public class HBPOSeSyncAppService : ApplicationService, IInvocable //IJobService // Console.WriteLine($"{blog.UID}"); // } //} - Console.WriteLine($"{this.GetType().FullName}执行了"); + Console.WriteLine($"{GetType().FullName}执行了"); } /// @@ -118,13 +114,38 @@ public class HBPOSeSyncAppService : ApplicationService, IInvocable //IJobService { //同步表名称 var syncTableName = "TM_BJBMPT_JIT_RECORD"; - Expression> predicate = (t) => true; + //HBPO类型集合 + var EnumDeliverSubBillTypes = new List + { + EnumDeliverSubBillType.保险杠HBPO, + EnumDeliverSubBillType.买单件保险杠HBPO, + EnumDeliverSubBillType.买单件小件HBPO, + EnumDeliverSubBillType.小件HBPO, + EnumDeliverSubBillType.JIT直供件HBPO + }; + + Expression> predicate = (t) => t.DeliverBillType == EnumDeliverBjBmpBillType.JIS件 && EnumDeliverSubBillTypes.Contains(t.DeliverSubBillType); var syncPositionFlag = await _syncPositionFlagRepository.FindAsync(t => t.TableName == syncTableName); if (syncPositionFlag != null) { - predicate = (t) => t.UID > int.Parse(syncPositionFlag.Position); + //var inv = Expression.Invoke(t=>t.UID > int.Parse(syncPositionFlag.Position), predicate.Parameters); + //return Expression.Lambda>(Expression.And(exp.Body, inv), exp.Parameters); + + //predicate.And(t => t.UID > int.Parse(syncPositionFlag.Position)); + + Expression> expression = (t) => t.UID > int.Parse(syncPositionFlag.Position); + var body = expression.Body; + + //var inv = Expression.Invoke(condition, exp.Parameters); + predicate = Expression.Lambda>(Expression.And(predicate.Body, body), predicate.Parameters); + + //Expression.Lambda>(Expression.Equal(member, constant), parameter); + //var expression = predicate.And(t => t.UID > int.Parse(syncPositionFlag.Position)); + } + Console.WriteLine($"表达式:{predicate}"); + var jitRecords = _wmsBJBMPTContext.TM_BJBMPT_JIT_RECORD .Where(predicate) .OrderBy(b => b.UID) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/SeSyncConfig.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/SeSyncConfig.cs new file mode 100644 index 00000000..aa27261e --- /dev/null +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/SeSyncConfig.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.ComponentModel; +using DocumentFormat.OpenXml.Office2010.ExcelAc; + +namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; + +/// +/// 发运同步配置 +/// +public class SeSyncConfig +{ + /// + /// 同步表名称 + /// + public string SyncTableName { get; set; } + + /// + /// 同步发运主类型 + /// + public EnumDeliverBjBmpBillType SyncDeliverBillType { get; set; } + + /// + /// 同步发运子类型 + /// + public List SyncDeliverSubBillTypes { get; set; } + + /// + /// + /// + public EnumBusinessType BusinessType { get; set; } +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/ZhiGongBBACSeSyncAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/ZhiGongBBACSeSyncAppService.cs new file mode 100644 index 00000000..199f5f9b --- /dev/null +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/ZhiGongBBACSeSyncAppService.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Coravel.Invocable; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using SettleAccount.Domain.BQ; +using Volo.Abp.Application.Services; +using Win.Sfs.SettleAccount.EntityFrameworkCore; +using Win.Sfs.Shared.RepositoryBase; + +namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; + +/// +/// 直供件BBAC发运同步 +/// +[AllowAnonymous] +[Route("api/settleaccount/[controller]/[action]")] +public class ZhiGongBBACSeSyncAppService : JitSeSyncAppService +{ + /// + /// 构造 + /// + public ZhiGongBBACSeSyncAppService( + WMSBJBMPTDbContext wmsBJBMPTContext, + INormalEfCoreRepository syncPositionFlagRepository, + INormalEfCoreRepository pubSeDetailRepository + ) : base(wmsBJBMPTContext, syncPositionFlagRepository, pubSeDetailRepository) + { + base.SeSyncConfigInfo = new SeSyncConfig() + { + SyncTableName = "ZhiGongBBACSeSync", + SyncDeliverBillType = EnumDeliverBjBmpBillType.JIT直供件, + SyncDeliverSubBillTypes = new List + { + EnumDeliverSubBillType.JIT直供件BBAC + } + }; + } +} + +/// +/// Jit发运数据同步 +/// +public class JitSeSyncAppService : ApplicationService, IInvocable +{ + /// + /// WMS数据上下文 + /// + private readonly WMSBJBMPTDbContext _wmsBJBMPTContext; + + /// + /// 同步位置标记 + /// + private readonly INormalEfCoreRepository _syncPositionFlagRepository; + + /// + /// Jit发运数据仓储 + /// + private readonly INormalEfCoreRepository _pubSeDetailRepository; + + /// + /// 构造 + /// + public JitSeSyncAppService( + WMSBJBMPTDbContext wmsBJBMPTContext, + INormalEfCoreRepository syncPositionFlagRepository, + INormalEfCoreRepository pubSeDetailRepository) + { + _wmsBJBMPTContext = wmsBJBMPTContext; + _syncPositionFlagRepository = syncPositionFlagRepository; + _pubSeDetailRepository = pubSeDetailRepository; + } + + public SeSyncConfig SeSyncConfigInfo { get; set; } + + [HttpPost] + public async Task Invoke() + { + //同步表名称 + var syncTableName = SeSyncConfigInfo.SyncTableName; + //同步发运主类型 + var deliverBillType = SeSyncConfigInfo.SyncDeliverBillType; + //同步发运子类型 + var deliverSubBillTypes = SeSyncConfigInfo.SyncDeliverSubBillTypes; + + Expression> predicate = (t) => t.DeliverBillType == deliverBillType && (!deliverSubBillTypes.Any() || deliverSubBillTypes.Contains(t.DeliverSubBillType)); + var syncPositionFlag = await _syncPositionFlagRepository.FindAsync(t => t.TableName == syncTableName); + if (syncPositionFlag != null) + { + Expression> expression = (t) => t.UID > int.Parse(syncPositionFlag.Position); + var body = expression.Body; + predicate = Expression.Lambda>(Expression.And(predicate.Body, body), predicate.Parameters); + } + + var jitRecords = _wmsBJBMPTContext.TM_BJBMPT_OTHER_RECORD.Where(predicate).OrderBy(b => b.UID)?.ToList(); + + var pubSeDetails = ObjectMapper.Map, List>(jitRecords); + if (pubSeDetails.Any()) + { + await _pubSeDetailRepository.InsertManyAsync(pubSeDetails); + + if (syncPositionFlag != null) + { + syncPositionFlag.Position = jitRecords.Last().UID.ToString(); + await _syncPositionFlagRepository.UpdateAsync(syncPositionFlag); + } + else + { + syncPositionFlag = new SyncPositionFlag() + { + TableName = syncTableName, + Position = jitRecords.Last().UID.ToString() + }; + await _syncPositionFlagRepository.InsertAsync(syncPositionFlag); + } + } + await Task.CompletedTask; + } +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs index b2d1fba8..b911f33d 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs @@ -1049,6 +1049,14 @@ namespace Win.Sfs.SettleAccount .ForMember(x => x.LU, y => y.MapFrom(d => d.PartCode)) .ForMember(x => x.PN, y => y.MapFrom(d => d.VinCode)) .ForMember(x => x.Qty, y => y.MapFrom(d => d.Qty)); + + CreateMap() + .ForMember(x => x.BeginDate, y => y.MapFrom(d => d.DnBillTime)) + .ForMember(x => x.ShippingDate, y => y.MapFrom(d => d.BillTime)) + .ForMember(x => x.WmsBillNum, y => y.MapFrom(d => d.BillNum)) + .ForMember(x => x.LU, y => y.MapFrom(d => d.PartCode)) + .ForMember(x => x.PN, y => y.MapFrom(d => d.BillNum)) + .ForMember(x => x.Qty, y => y.MapFrom(d => d.Qty)); } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/BBAC_NOT_SA_MNG.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/BBAC_NOT_SA_MNG.cs index 1b099345..92910d01 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/BBAC_NOT_SA_MNG.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/BBAC_NOT_SA_MNG.cs @@ -49,7 +49,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers _entity.Version = DateTime.Now.Year + DateTime.Now.Month; _entity.State = SettleBillState.未结状态; _entity.SettleBillNum = string.Empty; - _entity.BusinessType = EnumBusinessType.BBAC; + _entity.BusinessType = EnumBusinessType.JisBBAC; var _entityList = new List(); foreach (var itm in p_list) { diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs index 79670bcb..fbe0ffc7 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs @@ -71,8 +71,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { if (p_entiy.BusinessType == EnumBusinessType.BeiJian || p_entiy.BusinessType == EnumBusinessType.YingDuJian || - p_entiy.BusinessType == EnumBusinessType.MaiDanJian || - p_entiy.BusinessType == EnumBusinessType.ZhiGongJian + p_entiy.BusinessType == EnumBusinessType.MaiDanJianBBAC || + p_entiy.BusinessType == EnumBusinessType.MaiDanJianHBPO || + p_entiy.BusinessType == EnumBusinessType.ZhiGongJianBBAC || + p_entiy.BusinessType == EnumBusinessType.ZhiGongJianHBPO ) { bool isSucc = false; @@ -86,7 +88,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers } return isSucc; } - else if (p_entiy.BusinessType == EnumBusinessType.BBAC) + else if (p_entiy.BusinessType == EnumBusinessType.JisBBAC) { bool isSucc = false; if (IsForward == true) @@ -100,7 +102,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers return isSucc; } - else if (p_entiy.BusinessType == EnumBusinessType.HBPO) + else if (p_entiy.BusinessType == EnumBusinessType.JisHBPO) { bool isSucc = false; @@ -250,7 +252,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers public virtual async Task ReceivedAsync(string p_groupbillnum) { var inv = _repository.Where(p => p.InvGroupNum == p_groupbillnum).FirstOrDefault(); - if (inv.BusinessType == EnumBusinessType.BBAC) + if (inv.BusinessType == EnumBusinessType.JisBBAC) { var entity = await _bbacMng.GetMainAsync(inv.InvGroupNum); if (entity == null) @@ -303,7 +305,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers } } } - else if (inv.BusinessType == EnumBusinessType.HBPO) + else if (inv.BusinessType == EnumBusinessType.JisHBPO) { var entity = await _hbpoMng.GetMainAsync(inv.InvGroupNum); if (entity != null) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIS_RECORD.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIS_RECORD.cs index c3cbcabc..7375cc28 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIS_RECORD.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIS_RECORD.cs @@ -68,11 +68,14 @@ public class TM_BJBMPT_JIS_RECORD [DisplayName("单据性质")] public string BillCharacter { get; set; } - public int? TransType { get; set; } + [DisplayName("事务类型")] + public EnumDelTransType TransType { get; set; } - public int? DeliverBillType { get; set; } + [DisplayName("发运主类型")] + public EnumDeliverBjBmpBillType DeliverBillType { get; set; } - public int? DeliverSubBillType { get; set; } + [DisplayName("发运子类型")] + public EnumDeliverSubBillType DeliverSubBillType { get; set; } [DisplayName("发货关联单号")] public string RefBillNum { get; set; } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIT_RECORD.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIT_RECORD.cs index 4c9fd6fb..97b079e3 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIT_RECORD.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_JIT_RECORD.cs @@ -5,6 +5,9 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; +/// +/// Jis小件 +/// public class TM_BJBMPT_JIT_RECORD { [Key] @@ -64,11 +67,14 @@ public class TM_BJBMPT_JIT_RECORD //[DisplayName("子单据类型")] //public EnumSubBillType SubBillType { get; set; } - public int? TransType { get; set; } + [DisplayName("事务类型")] + public EnumDelTransType TransType { get; set; } - public int? DeliverBillType { get; set; } + [DisplayName("发运主类型")] + public EnumDeliverBjBmpBillType DeliverBillType { get; set; } - public int? DeliverSubBillType { get; set; } + [DisplayName("发运子类型")] + public EnumDeliverSubBillType DeliverSubBillType { get; set; } [DisplayName("单据性质")] public string BillCharacter { get; set; } @@ -118,9 +124,55 @@ public enum EnumProTpe Jit买单件退货 = 18, Jit匹配件退货 = 19, Jit补发订单退货 = 20, + 北汽4S发货 = 21, + HBPO发货 = 22, + 直供件发货 = 23, + 印度件发货 = 24, + 北汽4S退货 = 25, + HBPO退货 = 26, + 直供件退货 = 27, + 印度件退货 = 28, } public enum EnumBillType { } public enum EnumSubBillType { } +/// +/// 事务类型 +/// +public enum EnumDelTransType +{ + 发货 = 1, + 退货 = -1, +} + +/// +/// 发运主类型 +/// +public enum EnumDeliverBjBmpBillType +{ + 无 = 0, + JIS件 = 1, + JIT直供件 = 2, + 印度件 = 3, + 北汽4S备件 = 4, +} + +/// +/// 发运子类型 +/// +public enum EnumDeliverSubBillType +{ + 无 = 0, + 保险杠BBAC = 1, + 保险杠HBPO = 2, + 买单件保险杠BBAC = 3, + 买单件保险杠HBPO = 4, + 买单件小件BBAC = 5, + 买单件小件HBPO = 6, + 小件BBAC = 7, + 小件HBPO = 8, + JIT直供件BBAC = 9, + JIT直供件HBPO = 10, +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_OTHER_RECORD.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_OTHER_RECORD.cs new file mode 100644 index 00000000..f11c022c --- /dev/null +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Syncs/TM_BJBMPT_OTHER_RECORD.cs @@ -0,0 +1,91 @@ +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; + +/// +/// Jit(非Jis +/// +public class TM_BJBMPT_OTHER_RECORD +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long UID { get; set; } + + [DisplayName("发货单号")] + public string BillNum { get; set; } + + [DisplayName("发货时间")] + public DateTime? BillTime { get; set; } + + [DisplayName("零件号")] + public string PartCode { get; set; } + + [DisplayName("批次")] + public string Batch { get; set; } + + [DisplayName("发货人")] + public string Oper { get; set; } + + [DisplayName("DN单据号")] + public string DnBillNum { get; set; } + + [DisplayName("DN单据时间")] + public DateTime? DnBillTime { get; set; } + + [DisplayName("DN单添加人")] + public string DnOper { get; set; } + + [DisplayName("交付索引")] + public string DeliveryIndex { get; set; } + + [DisplayName("客户")] + public string CustId { get; set; } + + [DisplayName("发货仓库")] + public string DeliveryHose { get; set; } + + [DisplayName("来源库位")] + public string FromLocCode { get; set; } + + [DisplayName("来源仓库")] + public string FromHose { get; set; } + + [DisplayName("来源ERP库存")] + public string FromErpLocCode { get; set; } + + [DisplayName("目标库位")] + public string ToLocCode { get; set; } + + [DisplayName("目标仓库")] + public string ToHose { get; set; } + + [DisplayName("目标Erp库位")] + public string ToErpLocCode { get; set; } + + [DisplayName("数量")] + public decimal? Qty { get; set; } + + //[DisplayName("单据类型")] + //public EnumBillType BillType { get; set; } + + //[DisplayName("子单据类型")] + //public EnumSubBillType SubBillType { get; set; } + + [DisplayName("事务类型")] + public EnumDelTransType TransType { get; set; } + + [DisplayName("发运主类型")] + public EnumDeliverBjBmpBillType DeliverBillType { get; set; } + + [DisplayName("发运子类型")] + public EnumDeliverSubBillType DeliverSubBillType { get; set; } + + //[DisplayName("业务类型")] + //public EnumProTpe ProType { get; set; } + + [DisplayName("备注")] + public string Remark { get; set; } +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBusinessType.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBusinessType.cs index d062be09..2d2fe67f 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBusinessType.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBusinessType.cs @@ -14,39 +14,63 @@ namespace Win.Sfs.SettleAccount None = 0, /// - /// 直供件 + /// JisBBAC /// - [Display(Name = "直供件")] - ZhiGongJian = 1, + [Display(Name = "JisBBAC")] + JisBBAC = 1, /// - /// 买单件 + /// JisHBPO /// - [Display(Name = "买单件")] - MaiDanJian = 2, + [Display(Name = "JisHBPO")] + JisHBPO = 2, /// - /// 备件 + /// 直供件BBAC /// - [Display(Name = "备件")] - BeiJian = 3, + [Display(Name = "直供件BBAC")] + ZhiGongJianBBAC = 3, /// - /// 印度件 + /// 直供件HBPO /// - [Display(Name = "印度件")] - YingDuJian = 4, + [Display(Name = "直供件HBPO")] + ZhiGongJianHBPO = 4, /// - /// + /// 买单件BBAC /// - [Display(Name = "HBPO-JIS")] - HBPO = 5, + [Display(Name = "买单件BBAC")] + MaiDanJianBBAC = 5, + + /// + /// 买单件HBPO + /// + [Display(Name = "买单件HBPO")] + MaiDanJianHBPO = 6, + + /// + /// 备件 + /// + [Display(Name = "备件")] + BeiJian = 7, /// /// 印度件 /// - [Display(Name = "BBAC-JIS")] - BBAC = 6 + [Display(Name = "印度件")] + YingDuJian = 8, + + ///// + ///// + ///// + //[Display(Name = "HBPO-JIS")] + //HBPO = 5, + + ///// + ///// 印度件 + ///// + //[Display(Name = "BBAC-JIS")] + //BBAC = 6 } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/WMSBJBMPTDbContext.cs b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/WMSBJBMPTDbContext.cs index bbd0ae9a..8cc2fa6d 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/WMSBJBMPTDbContext.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/WMSBJBMPTDbContext.cs @@ -9,6 +9,7 @@ public class WMSBJBMPTDbContext : DbContext { public DbSet TM_BJBMPT_JIT_RECORD { get; set; } public DbSet TM_BJBMPT_JIS_RECORD { get; set; } + public DbSet TM_BJBMPT_OTHER_RECORD { get; set; } public WMSBJBMPTDbContext() {