Browse Source

印度件发票导入

master
mahao 12 months ago
parent
commit
c6e1f7fdb2
  1. 57
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs
  2. 5
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/InvoiceSyncQadService.cs
  3. 6
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_SERVICE.cs
  4. 59
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/InvoiceSyncQadInvocable.cs
  5. 13
      code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/Options/GlobalConfigOptions.cs
  6. 9
      code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/Options/SeConfigOptions.cs

57
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs

@ -2,14 +2,9 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.DirectoryServices.ActiveDirectory;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Security.Policy;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Wordprocessing;
using EFCore.BulkExtensions; using EFCore.BulkExtensions;
using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Csv; using Magicodes.ExporterAndImporter.Csv;
@ -17,17 +12,13 @@ using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.CodeAnalysis.Operations; using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Writers; using Polly;
using SettleAccount.Domain.BQ; using SettleAccount.Domain.BQ;
using ShardingCore.Extensions;
using Shouldly; using Shouldly;
using SqlSugar; using SqlSugar;
using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win.Abp.Snowflakes; using Win.Abp.Snowflakes;
using Win.Sfs.BaseData.ImportExcelCommon; using Win.Sfs.BaseData.ImportExcelCommon;
@ -35,23 +26,13 @@ using Win.Sfs.SettleAccount.Bases;
using Win.Sfs.SettleAccount.Bases.DomainServices; using Win.Sfs.SettleAccount.Bases.DomainServices;
using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.CommonManagers;
using Win.Sfs.SettleAccount.Constant; using Win.Sfs.SettleAccount.Constant;
using Win.Sfs.SettleAccount.Customers;
using Win.Sfs.SettleAccount.Entities.BQ.Dtos; using Win.Sfs.SettleAccount.Entities.BQ.Dtos;
using Win.Sfs.SettleAccount.Entities.BQ.Managers; using Win.Sfs.SettleAccount.Entities.BQ.Managers;
using Win.Sfs.SettleAccount.Entities.BQ.Syncs;
using Win.Sfs.SettleAccount.Entities.BQ.Temp;
using Win.Sfs.SettleAccount.Entities.Invoices;
using Win.Sfs.SettleAccount.EntityFrameworkCore; using Win.Sfs.SettleAccount.EntityFrameworkCore;
using Win.Sfs.SettleAccount.ExcelImporter; using Win.Sfs.SettleAccount.ExcelImporter;
using Win.Sfs.SettleAccount.ExportReports; using Win.Sfs.SettleAccount.ExportReports;
using Win.Sfs.Shared.RepositoryBase;
using static Dm.parser.LVal;
using static LinqToDB.Sql;
using Win.Sfs.Shared.Filter; using Win.Sfs.Shared.Filter;
using Polly; using Win.Sfs.Shared.RepositoryBase;
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
using Microsoft.Extensions.Logging;
using Castle.Core.Logging;
namespace Win.Sfs.SettleAccount.Entities.BQ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
@ -65,10 +46,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
/// </summary> /// </summary>
private readonly SettleAccountDbContext _settleAccountDbContext; private readonly SettleAccountDbContext _settleAccountDbContext;
/// <summary> /// <summary>
/// WMS数据上下文
/// </summary>
private readonly WMSBJBMPTDbContext _wmsBJBMPTContext;
/// <summary>
/// 数据中心数据上下文 /// 数据中心数据上下文
/// </summary> /// </summary>
private readonly ExChangeCenterDbContext _exChangeCenterDbContext; private readonly ExChangeCenterDbContext _exChangeCenterDbContext;
@ -86,7 +63,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
public INVOICE_SERVICE( public INVOICE_SERVICE(
ILogger<BASE_SERVICE> logger, ILogger<BASE_SERVICE> logger,
SettleAccountDbContext settleAccountDbContext, SettleAccountDbContext settleAccountDbContext,
WMSBJBMPTDbContext wmsBJBMPTContext,
ExChangeCenterDbContext exChangeCenterDbContext, ExChangeCenterDbContext exChangeCenterDbContext,
IExcelImportAppService excelImportService, IExcelImportAppService excelImportService,
ISnowflakeIdGenerator snowflakeIdGenerator, ISnowflakeIdGenerator snowflakeIdGenerator,
@ -106,7 +82,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
_logger = logger; _logger = logger;
_settleAccountDbContext = settleAccountDbContext; _settleAccountDbContext = settleAccountDbContext;
_wmsBJBMPTContext = wmsBJBMPTContext;
_exChangeCenterDbContext = exChangeCenterDbContext; _exChangeCenterDbContext = exChangeCenterDbContext;
_baseservice = baseservice; _baseservice = baseservice;
_repository = repository; _repository = repository;
@ -218,7 +193,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false);
invoiceGrp.State = SettleBillState.QAD; invoiceGrp.State = SettleBillState.QAD;
//构建发票同步Qad状态表数据 //构建发票同步Qad状态表数据
await BindInvoiceSyncQadAsync(taskId, invoiceGrp.RealnvBillNum, invoiceGrp.InvbillNum).ConfigureAwait(false); await BindInvoiceSyncQadAsync(teaTaskSub, invoiceGrp.RealnvBillNum, invoiceGrp.InvbillNum, invoiceGrp.ClientCode, "").ConfigureAwait(false);
await _exChangeCenterDbContext.SaveChangesAsync().ConfigureAwait(false); await _exChangeCenterDbContext.SaveChangesAsync().ConfigureAwait(false);
var retryPolicyAsync = Policy.Handle<Exception>().WaitAndRetryAsync(new[] { var retryPolicyAsync = Policy.Handle<Exception>().WaitAndRetryAsync(new[] {
@ -299,27 +274,23 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
await _exChangeCenterDbContext.Set<TEA_TASK_SUB>().AddAsync(teaTaskSub).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TEA_TASK_SUB>().AddAsync(teaTaskSub).ConfigureAwait(false);
await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false);
//构建发票同步Qad状态表数据 //构建发票同步Qad状态表数据
await BindInvoiceSyncQadAsync(taskId, invoiceGrp.RealnvBillNum, invoiceGrp.InvbillNum).ConfigureAwait(false); await BindInvoiceSyncQadAsync(teaTaskSub, invoiceGrp.RealnvBillNum, invoiceGrp.InvbillNum, invoiceGrp.ClientCode, "").ConfigureAwait(false);
} }
} }
/// <summary> /// <summary>
/// 构建发票同步Qad状态表数据 /// 构建发票同步Qad状态表数据
/// </summary> /// </summary>
[HttpPost] private async Task BindInvoiceSyncQadAsync(TEA_TASK_SUB teaTaskSub, string invoiceNumber, string sasInvoiceNumber, string customer, string voucher)
public async Task InvoiceSyncQad(string invbillNum)
{ {
var invoiceSyncQad = new InvoiceSyncQad(GuidGenerator.Create(), "", ""); var invoiceSyncQad = new InvoiceSyncQad(teaTaskSub.TaskID, invoiceNumber, sasInvoiceNumber)
await _settleAccountDbContext.Set<InvoiceSyncQad>().AddAsync(invoiceSyncQad).ConfigureAwait(false); {
await _settleAccountDbContext.SaveChangesAsync().ConfigureAwait(false); TaskName = teaTaskSub.TableName,
} Domain = teaTaskSub.Domain,
Site = teaTaskSub.Site,
/// <summary> Customer = customer,
/// 构建发票同步Qad状态表数据 Voucher = voucher
/// </summary> };
private async Task BindInvoiceSyncQadAsync(Guid taskID, string invoiceNumber, string sasInvoiceNumber)
{
var invoiceSyncQad = new InvoiceSyncQad(taskID, invoiceNumber, sasInvoiceNumber);
await _settleAccountDbContext.Set<InvoiceSyncQad>().AddAsync(invoiceSyncQad).ConfigureAwait(false); await _settleAccountDbContext.Set<InvoiceSyncQad>().AddAsync(invoiceSyncQad).ConfigureAwait(false);
} }

5
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/InvoiceSyncQadService.cs

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using SettleAccount.Domain.BQ; using SettleAccount.Domain.BQ;
using Shouldly; using Shouldly;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
@ -13,6 +14,7 @@ using Win.Sfs.BaseData.ImportExcelCommon;
using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.CommonManagers;
using Win.Sfs.SettleAccount.Entities.BQ.Dtos; using Win.Sfs.SettleAccount.Entities.BQ.Dtos;
using Win.Sfs.SettleAccount.ExcelImporter; using Win.Sfs.SettleAccount.ExcelImporter;
using Win.Sfs.SettleAccount.Options;
using Win.Sfs.Shared.RepositoryBase; using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Entities.BQ namespace Win.Sfs.SettleAccount.Entities.BQ
@ -26,10 +28,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
private readonly ILogger<InvoiceSyncQadService> _logger; private readonly ILogger<InvoiceSyncQadService> _logger;
private readonly INormalEfCoreRepository<InvoiceSyncQad, Guid> _repository; private readonly INormalEfCoreRepository<InvoiceSyncQad, Guid> _repository;
private readonly IOptions<GlobalConfigOptions> _globalConfigOptions;
public InvoiceSyncQadService( public InvoiceSyncQadService(
ILogger<InvoiceSyncQadService> logger, ILogger<InvoiceSyncQadService> logger,
INormalEfCoreRepository<InvoiceSyncQad, Guid> repository, INormalEfCoreRepository<InvoiceSyncQad, Guid> repository,
IOptions<GlobalConfigOptions> globalConfigOptions,
IDistributedCache<InvoiceSyncQad> cache, IDistributedCache<InvoiceSyncQad> cache,
IExcelImportAppService excelImportService, IExcelImportAppService excelImportService,
ISnowflakeIdGenerator snowflakeIdGenerator, ISnowflakeIdGenerator snowflakeIdGenerator,
@ -38,6 +42,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
_logger = logger; _logger = logger;
_repository = repository; _repository = repository;
_globalConfigOptions = globalConfigOptions;
} }
#region 导入、导出 #region 导入、导出

6
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_SERVICE.cs

@ -533,7 +533,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
EnumBusinessType.ZhiGongJianBBAC => site, EnumBusinessType.ZhiGongJianBBAC => site,
EnumBusinessType.ZhiGongJianHBPO => "104T", EnumBusinessType.ZhiGongJianHBPO => "104T",
EnumBusinessType.BeiJian => "1049", EnumBusinessType.BeiJian => "1049",
EnumBusinessType.YinDuJian => "1040", EnumBusinessType.YinDuJian => "1041",
_ => throw new UserFriendlyException($"业务编码错误", "400") _ => throw new UserFriendlyException($"业务编码错误", "400")
}; };
site = clientCode; site = clientCode;
@ -542,7 +542,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
//备件销售价格 //备件销售价格
var priceListEntitys = _priceBjListRepository.Where(t => t.IsCancel == false) var priceListEntitys = _priceBjListRepository.Where(t => t.IsCancel == false)
.Where(t => t.ClientCode == clientCode)
.Where(t => lus.Contains(t.LU)).ToList(); .Where(t => lus.Contains(t.LU)).ToList();
pubSaDetails.ForEach(importPubSaDetail => pubSaDetails.ForEach(importPubSaDetail =>
{ {
@ -556,11 +555,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
importPubSaDetail.Price = priceListEntity?.Price ?? 0; importPubSaDetail.Price = priceListEntity?.Price ?? 0;
}); });
} }
else if(businessType == EnumBusinessType.YinDuJian) else if (businessType == EnumBusinessType.YinDuJian)
{ {
//印度销售价格 //印度销售价格
var priceListEntitys = _priceYinDuListRepository.Where(t => t.IsCancel == false) var priceListEntitys = _priceYinDuListRepository.Where(t => t.IsCancel == false)
.Where(t => t.ClientCode == clientCode)
.Where(t => lus.Contains(t.LU)).ToList(); .Where(t => lus.Contains(t.LU)).ToList();
pubSaDetails.ForEach(importPubSaDetail => pubSaDetails.ForEach(importPubSaDetail =>
{ {

59
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/InvoiceSyncQadInvocable.cs

@ -0,0 +1,59 @@
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
using Coravel.Invocable;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using SettleAccount.Domain.BQ;
using Win.Sfs.SettleAccount.EntityFrameworkCore;
using Win.Sfs.SettleAccount.Options;
namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
{
public class InvoiceSyncQadInvocable : IInvocable
{
private readonly ILogger<InvoiceSyncQadInvocable> _logger;
private readonly GlobalConfigOptions _globalConfigOptions;
private readonly ISettleAccountDbContext _settleAccountDbContext;
/// <summary>
/// 数据中心数据上下文
/// </summary>
private readonly ExChangeCenterDbContext _exChangeCenterDbContext;
public InvoiceSyncQadInvocable(
ILogger<InvoiceSyncQadInvocable> logger,
IOptions<GlobalConfigOptions> options,
ISettleAccountDbContext settleAccountDbContext,
ExChangeCenterDbContext exChangeCenterDbContext)
{
_logger = logger;
_globalConfigOptions = options.Value;
_settleAccountDbContext = settleAccountDbContext;
_exChangeCenterDbContext = exChangeCenterDbContext;
}
/// <summary>
/// 执行
/// </summary>
public async Task Invoke()
{
await Task.CompletedTask.ConfigureAwait(false);
if (!_globalConfigOptions.IsSyncInvoiceQadState)
{
return;
}
var invoiceSyncQads = _settleAccountDbContext.Set<InvoiceSyncQad>().Where(t => t.TaskState == 0 || t.TaskState == 1).OrderBy(t => t.CreationTime).Take(1000).ToList();
if (!invoiceSyncQads.Any())
{
_globalConfigOptions.IsSyncInvoiceQadState = false;
return;
}
var taskIDs = invoiceSyncQads.Select(t => t.TaskID);
var TeaTaskSubs = _exChangeCenterDbContext.TEA_TASK_SUB.Where(t => taskIDs.Contains(t.TaskID)).ToList();
}
}
}

13
code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/Options/GlobalConfigOptions.cs

@ -0,0 +1,13 @@
namespace Win.Sfs.SettleAccount.Options
{
/// <summary>
/// 全局配置选项
/// </summary>
public class GlobalConfigOptions
{
/// <summary>
/// 是否同步发票Qad状态
/// </summary>
public bool IsSyncInvoiceQadState { get; set; }
}
}

9
code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/Options/SeConfigOptions.cs

@ -1,9 +0,0 @@
namespace Win.Sfs.SettleAccount.Options
{
/// <summary>
/// 发运配置选项
/// </summary>
public class SeConfigOptions
{
}
}
Loading…
Cancel
Save