Browse Source

添加 寄售库VERSION字段寄售库业务字段,添加发运期间判断

master
学 赵 12 months ago
parent
commit
df79931f18
  1. 41
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/PendingDeductionService.cs
  2. 85
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/SeSyncExtendManager.cs
  3. 16
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
  4. 11
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs
  5. 4
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Vmi/VmiLog.cs

41
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/PendingDeductionService.cs

@ -202,11 +202,18 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
public void Sync<T>(List<T> p_ls, EnumDeliverBjBmpBillType bussinessType, string p_email, bool flag = true) public void Sync<T>(List<T> p_ls, EnumDeliverBjBmpBillType bussinessType, string p_email, bool flag = true)
where T : PD_BASE, new() where T : PD_BASE, new()
{ {
var query = from itm in p_ls var ls=new List<VmiLog>();
var invbills=p_ls.Select(p => p.BillNum).ToList();//发票号
var invs=_dbcontext.Set<INVOICE_GRP>().Where(p => invbills.Contains(p.InvbillNum)).ToList();//所有发票
foreach (var inv in invs)
{
var pdls= p_ls.Where(p => p.BillNum == inv.InvbillNum).ToList();
var query1 = from itm in pdls
select new VmiLog() select new VmiLog()
{ {
CodeType = string.Empty, CodeType = string.Empty,
BillTime = DateTime.Now, BillTime = inv.LastModificationTime,
ChangedTime = DateTime.Now, ChangedTime = DateTime.Now,
Qty = itm.Qty, Qty = itm.Qty,
RealPartCode = itm.RELU,//替换件 结算数据 RealPartCode->RELU RealPartCode = itm.RELU,//替换件 结算数据 RealPartCode->RELU
@ -222,9 +229,35 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
VinCode = itm.PN, VinCode = itm.PN,
OrderNum = itm.GroupNum, OrderNum = itm.GroupNum,
ErpToLoc = itm.Extend2, //寄售库 ErpToLoc = itm.Extend2, //寄售库
ReMark = itm.Extend3 ReMark = itm.Extend3,
Version=int.Parse(inv.LastModificationTime.Value.ToString("yyyyMM")),
factory=itm.BusinessType.ToString()
}; };
var ls = query.ToList(); ls.AddRange(query1.ToList());
}
//var query = from itm in p_ls
// select new VmiLog()
// {
// CodeType = string.Empty,
// BillTime = DateTime.Now,
// ChangedTime = DateTime.Now,
// Qty = itm.Qty,
// RealPartCode = itm.RELU,//替换件 结算数据 RealPartCode->RELU
// RealCode = itm.PN,
// LogType = Entities.BQ.Vmi.VmiLogType.Type200,
// ChangedQty = (flag == true) ? -itm.Qty : itm.Qty,
// ChangedType = VmiType.Out,
// //SubBillType = EnumDeliverSubBillType.小件BBAC,
// //BillType = EnumDeliverBjBmpBillType.JIS件,
// CustPartCode = itm.LU,
// SettlementVinCode = itm.PN,
// DeliverBillType = bussinessType,
// VinCode = itm.PN,
// OrderNum = itm.GroupNum,
// ErpToLoc = itm.Extend2, //寄售库
// ReMark = itm.Extend3,
// };
//var ls = query.ToList();
foreach (var itm in ls) foreach (var itm in ls)
{ {

85
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/SeSyncExtendManager.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using EFCore.BulkExtensions; using EFCore.BulkExtensions;
@ -8,7 +9,9 @@ using Newtonsoft.Json;
using SettleAccount.Bases; using SettleAccount.Bases;
using SettleAccount.Domain.BQ; using SettleAccount.Domain.BQ;
using Volo.Abp.Domain.Services; using Volo.Abp.Domain.Services;
using Volo.Abp.SettingManagement;
using Win.Sfs.SettleAccount.Entities.BQ.Vmi; using Win.Sfs.SettleAccount.Entities.BQ.Vmi;
using Win.Sfs.SettleAccount.Entities.CodeSettings;
using Win.Sfs.SettleAccount.MaterialRelationships; using Win.Sfs.SettleAccount.MaterialRelationships;
namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
@ -63,10 +66,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
/// </remarks> /// </remarks>
public async Task JisSeDetailsSaveConsignAsync<T>(List<T> seDetails, bool isJisTable) where T : JisSeBase public async Task JisSeDetailsSaveConsignAsync<T>(List<T> seDetails, bool isJisTable) where T : JisSeBase
{ {
var value = _settleAccountDbContext.Set<CodeSetting>().FirstOrDefault(p => p.Project == "库存账期").Value;
var deliverSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.); var deliverSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.);
var returnSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.退); var returnSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.退);
var dateTimeNow = DateTime.Now; var dateTimeNow = DateTime.Now;
var vmiLogList = deliverSeDetails.Select(t => new VmiLog var vmiLogList = deliverSeDetails.Select(t => new VmiLog
{ {
LogType = VmiLogType.Type100, LogType = VmiLogType.Type100,
@ -93,7 +98,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
Seq = t.Seq, Seq = t.Seq,
UniqueCode = isJisTable ? t.UniqueCode : t.DeliverCode, UniqueCode = isJisTable ? t.UniqueCode : t.DeliverCode,
VinCode = t.PN, VinCode = t.PN,
factory = t.Factory Version = GetVersionByBillTimeAsync(t.BillTime.Value, value),//加区间字段
factory = t.BusinessType.ToString()
}).ToList(); }).ToList();
var returnVmiLogList = returnSeDetails.Select(t => new VmiLog var returnVmiLogList = returnSeDetails.Select(t => new VmiLog
{ {
@ -121,7 +127,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
Seq = t.Seq, Seq = t.Seq,
UniqueCode = isJisTable ? t.UniqueCode : t.DeliverCode, UniqueCode = isJisTable ? t.UniqueCode : t.DeliverCode,
VinCode = t.VinCode, VinCode = t.VinCode,
factory = t.Factory Version = GetVersionByBillTimeAsync(t.BillTime.Value, value),//加区间字段
factory = t.BusinessType.ToString()
}).ToList(); }).ToList();
vmiLogList.AddRange(returnVmiLogList); vmiLogList.AddRange(returnVmiLogList);
await SaveVmiLogsAsync(vmiLogList).ConfigureAwait(false); await SaveVmiLogsAsync(vmiLogList).ConfigureAwait(false);
@ -136,6 +143,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
/// </remarks> /// </remarks>
public async Task PubSeDetailsSaveConsignAsync(List<PUB_SE_DETAIL> seDetails) public async Task PubSeDetailsSaveConsignAsync(List<PUB_SE_DETAIL> seDetails)
{ {
var value = _settleAccountDbContext.Set<CodeSetting>().FirstOrDefault(p => p.Project == "库存账期").Value;
var deliverSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.); var deliverSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.);
var returnSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.退); var returnSeDetails = seDetails.FindAll(t => t.TransType == EnumDelTransType.退);
var dateTimeNow = DateTime.Now; var dateTimeNow = DateTime.Now;
@ -158,7 +166,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
Qty = t.Qty, Qty = t.Qty,
ReMark = t.Remark, ReMark = t.Remark,
RealPartCode = t.PartCode, RealPartCode = t.PartCode,
VinCode = t.PN VinCode = t.PN,
Version=GetVersionByBillTimeAsync(t.BillTime.Value,value),//加区间字段
factory=t.BusinessType.ToString()
}).ToList(); }).ToList();
var returnVmiLogList = returnSeDetails.Select(t => new VmiLog var returnVmiLogList = returnSeDetails.Select(t => new VmiLog
{ {
@ -177,7 +188,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
OrderNum = t.DeliveryIndex, OrderNum = t.DeliveryIndex,
Qty = -t.Qty, Qty = -t.Qty,
ReMark = t.Remark, ReMark = t.Remark,
RealPartCode = t.PartCode RealPartCode = t.PartCode,
Version = GetVersionByBillTimeAsync(t.BillTime.Value, value),//加区间字段
factory = t.BusinessType.ToString()
}).ToList(); }).ToList();
vmiLogList.AddRange(returnVmiLogList); vmiLogList.AddRange(returnVmiLogList);
await SaveVmiLogsAsync(vmiLogList).ConfigureAwait(false); await SaveVmiLogsAsync(vmiLogList).ConfigureAwait(false);
@ -203,5 +217,68 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
}).ToList(); }).ToList();
await _settleAccountDbContext.BulkInsertAsync(vmiMessages).ConfigureAwait(false); await _settleAccountDbContext.BulkInsertAsync(vmiMessages).ConfigureAwait(false);
} }
public int GetVersionByBillTimeAsync(DateTime p_billtime,string p_day)
{
var before = p_billtime.Year;
var last = before - 1;
DateTime lastYear = DateTime.ParseExact(string.Format("{0}-12-{1} 08:00:00", last,p_day), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);//上期时间
DateTime beforeYear = DateTime.ParseExact(string.Format("{0}-12-{1} 07:59:59", before,p_day), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);//这期时间
//var result = seDetails
// .Select(log =>
// {
string version = null;
if (p_billtime >= lastYear && p_billtime <= lastYear.AddMonths(1))
{
version = $"{before.ToString()}01";
}
else if (p_billtime >= lastYear.AddMonths(1) && p_billtime <= lastYear.AddMonths(2))
{ version = $"{before.ToString()}02"; }
else if (p_billtime >= lastYear.AddMonths(2) && p_billtime <= lastYear.AddMonths(3))
{ version = $"{before.ToString()}03"; }
else if (p_billtime >= lastYear.AddMonths(3) && p_billtime <= lastYear.AddMonths(4))
{ version = $"{before.ToString()}04"; }
else if (p_billtime >= lastYear.AddMonths(4) && p_billtime <= lastYear.AddMonths(5))
{ version = $"{before.ToString()}05"; }
else if (p_billtime >= lastYear.AddMonths(5) && p_billtime <= lastYear.AddMonths(6))
{ version = $"{before.ToString()}06"; }
else if (p_billtime >= lastYear.AddMonths(6) && p_billtime <= lastYear.AddMonths(7))
{ version = $"{before.ToString()}07"; }
else if (p_billtime >= lastYear.AddMonths(7) && p_billtime <= lastYear.AddMonths(8))
{ version = $"{before.ToString()}08"; }
else if (p_billtime >= lastYear.AddMonths(8) && p_billtime <= lastYear.AddMonths(9))
{ version = $"{before.ToString()}09"; }
else if (p_billtime >= lastYear.AddMonths(9) && p_billtime <= lastYear.AddMonths(10))
{ version = $"{before.ToString()}10"; }
else if (p_billtime >= lastYear.AddMonths(10) && p_billtime <= lastYear.AddMonths(11))
{ version = $"{before.ToString()}11"; }
else if (p_billtime >= lastYear.AddMonths(11) && p_billtime <= beforeYear)
{ version = $"{before.ToString()}12"; }
if (string.IsNullOrEmpty(version))
{
return 200802 ;//找不到的数据默认写到这个区间
}
return int.Parse(version);
}
} }
} }

16
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs

@ -342,15 +342,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
return fileName; return fileName;
} }
/// <summary> /// <summary>
/// 快照列表 /// 快照列表
/// </summary> /// </summary>
@ -477,13 +468,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
//query = string.IsNullOrEmpty(input.Sorting) ? query : DynamicQueryableExtensions.OrderBy(query, input.Sorting); //query = string.IsNullOrEmpty(input.Sorting) ? query : DynamicQueryableExtensions.OrderBy(query, input.Sorting);
//var entities = await query.PageBy(input.SkipCount, input.MaxResultCount).ToListAsync().ConfigureAwait(false); //var entities = await query.PageBy(input.SkipCount, input.MaxResultCount).ToListAsync().ConfigureAwait(false);
var entities = await _logRepository.GetListByFilterAsync(input.Filters, input.Sorting, input.MaxResultCount, input.SkipCount).ConfigureAwait(false); var entities = await _logRepository.GetListByFilterAsync(input.Filters, input.Sorting, input.MaxResultCount, input.SkipCount).ConfigureAwait(false);
var totalCount = await _logRepository.GetCountByFilterAsync(input.Filters).ConfigureAwait(false); var totalCount = await _logRepository.GetCountByFilterAsync(input.Filters).ConfigureAwait(false);

11
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@ -9,6 +10,7 @@ using Volo.Abp.Domain.Services;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win.Sfs.SettleAccount.Boms; using Win.Sfs.SettleAccount.Boms;
using Win.Sfs.SettleAccount.Entities.CodeSettings;
using Win.Sfs.SettleAccount.Entities.Materials; using Win.Sfs.SettleAccount.Entities.Materials;
using Win.Sfs.SettleAccount.Entities.Prices; using Win.Sfs.SettleAccount.Entities.Prices;
using Win.Sfs.SettleAccount.MaterialRelationships; using Win.Sfs.SettleAccount.MaterialRelationships;
@ -19,6 +21,7 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices
public class BaseDomainService : DomainService public class BaseDomainService : DomainService
{ {
private readonly INormalEfCoreRepository<Material, Guid> _materialRepository; private readonly INormalEfCoreRepository<Material, Guid> _materialRepository;
private readonly INormalEfCoreRepository<CodeSetting, Guid> _settringRepository;
private readonly INormalEfCoreRepository<MaterialRelationship, Guid> _relationshipRepository; private readonly INormalEfCoreRepository<MaterialRelationship, Guid> _relationshipRepository;
private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository; private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository;
private readonly INormalEfCoreRepository<PriceListBJ, Guid> _pricebjRepository; private readonly INormalEfCoreRepository<PriceListBJ, Guid> _pricebjRepository;
@ -32,12 +35,14 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices
INormalEfCoreRepository<Bom, Guid> bomshipRepository, INormalEfCoreRepository<Bom, Guid> bomshipRepository,
INormalEfCoreRepository<PriceList, Guid> priceRepository, INormalEfCoreRepository<PriceList, Guid> priceRepository,
INormalEfCoreRepository<PriceListBJ, Guid> pricebjRepository, INormalEfCoreRepository<PriceListBJ, Guid> pricebjRepository,
INormalEfCoreRepository<PriceListYinDu, Guid> priceYinDuRepository INormalEfCoreRepository<PriceListYinDu, Guid> priceYinDuRepository,
INormalEfCoreRepository<CodeSetting, Guid> settringRepository
//IExcelImportAppService excelImportService, //IExcelImportAppService excelImportService,
//ISnowflakeIdGenerator snowflakeIdGenerator, //ISnowflakeIdGenerator snowflakeIdGenerator,
//ICommonManager commonManager //ICommonManager commonManager
) )
{ {
_settringRepository = settringRepository;
_priceYinDuRepository = priceYinDuRepository; _priceYinDuRepository = priceYinDuRepository;
_priceRepository = priceRepository; _priceRepository = priceRepository;
_pricebjRepository = pricebjRepository; _pricebjRepository = pricebjRepository;
@ -49,7 +54,7 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices
public async Task<List<MaterialRelationship>> GetMaterialList(EnumBusinessType businessType) public async Task<List<MaterialRelationship>> GetMaterialList(EnumBusinessType businessType)
{ {
List<MaterialRelationship> ls = new List<MaterialRelationship>(); List<MaterialRelationship> ls = new List<MaterialRelationship>();
var lst = await _relationshipRepository.Where(p => !string.IsNullOrEmpty(p.SettleMaterialCode) && p.BusinessType==businessType).ToListAsync().ConfigureAwait(false); var lst = await _relationshipRepository.Where(p => !string.IsNullOrEmpty(p.SettleMaterialCode) && p.BusinessType == businessType).ToListAsync().ConfigureAwait(false);
var l = lst.GroupBy(p => p.SettleMaterialCode).Select(g => g.First()); var l = lst.GroupBy(p => p.SettleMaterialCode).Select(g => g.First());
return l.ToList(); return l.ToList();
} }
@ -263,7 +268,7 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices
} }
else else
{ {
var first= p_list.FirstOrDefault(); var first = p_list.FirstOrDefault();
if (first.BusinessType == EnumBusinessType.YinDuJian) if (first.BusinessType == EnumBusinessType.YinDuJian)
{ {

4
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Vmi/VmiLog.cs

@ -56,7 +56,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Vmi
[ExporterHeader(DisplayName = "库存变动")] [ExporterHeader(DisplayName = "库存变动")]
[Display(Name = "库存变动", Order = 5)] [Display(Name = "库存变动", Order = 5)]
public decimal ChangedQty { get; set; } public decimal ChangedQty { get; set; }
[ExporterHeader(DisplayName = "库存变动")]
[Display(Name = "库存变动", Order = 5)]
public int Version { get; set; }
public string ConcurrencyStamp { get; set; } public string ConcurrencyStamp { get; set; }
public DateTime CreatedTime { get; set; } public DateTime CreatedTime { get; set; }
public DateTime UpdatedTime { get; set; } = DateTime.Now; public DateTime UpdatedTime { get; set; } = DateTime.Now;

Loading…
Cancel
Save