Browse Source

[CI SKIP]

master
学 赵 1 year ago
parent
commit
5e84187d05
  1. 6
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs
  2. 27
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs
  3. 146
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs
  4. 13
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/GenerateJisInvoiceService.cs
  5. 6
      code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationModule.cs
  6. 3
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/BBAC_CAN_SA.cs
  7. 16
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/BBAC_CAN_SA_MNG.cs

6
code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs

@ -247,11 +247,11 @@ namespace Win.Sfs.SettleAccount.Bases
/// <returns></returns> /// <returns></returns>
protected async Task<List<ERR_EXP_DTO>> CheckInvoiceGenerationRules<T>(List<T> dto1s, string p_site, List<PriceList> p_pricelist, EnumBusinessType p_businessType) where T : SA_CAN_BASE protected async Task<List<ERR_EXP_DTO>> CheckInvoiceGenerationRules<T>(List<T> dto1s, string p_site, List<PriceList> p_pricelist, EnumBusinessType p_businessType) where T : SA_CAN_BASE
{ {
//var maxDate = p_pricelist.Max(p => p.Date); //var maxDate = p_pricelist.Max(p => p.Date);
var first = dto1s.FirstOrDefault(); var first = dto1s.FirstOrDefault();
var usepriceList = p_pricelist.Where(p => p.ClientCode == first.Site && p.IsCancel == false).ToList(); var usepriceList = p_pricelist.Where(p => p.ClientCode == first.Site && p.IsCancel == false).ToList();
var errorlist = _baseservice.CheckPriceListContinuity(usepriceList); var errorlist = _baseservice.CheckPriceListContinuity(usepriceList);
var prices = p_pricelist.Where(p => p.ClientCode == p_site && p.IsCancel == false).ToList(); var prices = p_pricelist.Where(p => p.ClientCode == p_site && p.IsCancel == false).ToList();
@ -262,13 +262,13 @@ namespace Win.Sfs.SettleAccount.Bases
d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.ClientCode == d.Site && p.IsCancel == false d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.ClientCode == d.Site && p.IsCancel == false
select d; select d;
var ls = inner.ToList(); var ls = inner.ToList();
var left = from d in dto1s var left = from d in dto1s
join p in inner on new { d.LU, d.PN } equals new { p.LU, p.PN } join p in inner on new { d.LU, d.PN } equals new { p.LU, p.PN }
into temp into temp
from tm in temp.DefaultIfEmpty()//校验错误项 from tm in temp.DefaultIfEmpty()//校验错误项
where tm == null where tm == null
select d; select d;
List<ERR_EXP_DTO> errorList = new List<ERR_EXP_DTO>(); List<ERR_EXP_DTO> errorList = new List<ERR_EXP_DTO>();
string name = string.Empty; string name = string.Empty;
string keyname = string.Empty; string keyname = string.Empty;

27
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs

@ -31,11 +31,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
[Route("api/settleaccount/[controller]/[action]")] [Route("api/settleaccount/[controller]/[action]")]
public class BBAC_BA_SERVICE : BA_SERVICE public class BBAC_BA_SERVICE : BA_SERVICE
{ {
private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository; private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository;
private readonly INormalEfCoreRepository<BBAC_PD, Guid> _pdRepository; private readonly INormalEfCoreRepository<BBAC_PD, Guid> _pdRepository;
private readonly INormalEfCoreRepository<MaterialRelationship, Guid> _relationRepository; private readonly INormalEfCoreRepository<MaterialRelationship, Guid> _relationRepository;
private readonly ADJ_SERVICE _adjservice; private readonly ADJ_SERVICE _adjservice;
public BBAC_BA_SERVICE(IExcelImportAppService excelImportService, public BBAC_BA_SERVICE(IExcelImportAppService excelImportService,
ISnowflakeIdGenerator snowflakeIdGenerator, ISnowflakeIdGenerator snowflakeIdGenerator,
@ -137,13 +135,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
} }
var entitys = bbaclist;//合并库存调整单和就发票可结算明细数据 var entitys = bbaclist;//合并库存调整单和就发票可结算明细数据
var gNumList = entitys.Select(p => p.GroupNum).Distinct().ToList(); var gNumList = entitys.Select(p => p.GroupNum).Distinct().ToList();
//var groupNumList = entitys.Select(p => new { p.GroupNum).Distinct().ToList(); //var groupNumList = entitys.Select(p => new { p.GroupNum).Distinct().ToList();
//var notList = _notRepository.Where(p => gNumList.Contains(p.GroupNum)).ToList();//不能结算 //var notList = _notRepository.Where(p => gNumList.Contains(p.GroupNum)).ToList();//不能结算
var priceList = _priceRepository.Where(p => p.IsCancel == false).ToList();//价格单 var priceList = _priceRepository.Where(p => p.IsCancel == false).ToList();//价格单
// priceList.GroupBy(p => new { p.BeginTime, p.EndTime }).Select(p => p.First()); // priceList.GroupBy(p => new { p.BeginTime, p.EndTime }).Select(p => p.First());
var errorList = await CheckInvoiceGenerationRules(entitys, priceList, inv.BusinessType).ConfigureAwait(false); var errorList = await CheckInvoiceGenerationRules(entitys, priceList, inv.BusinessType).ConfigureAwait(false);
if (errorList.Count > 0) if (errorList.Count > 0)
{ {
@ -326,20 +321,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
return new JsonResult(new { Code = 200, Message = "重开成功" }); ; return new JsonResult(new { Code = 200, Message = "重开成功" }); ;
} }
[HttpPost] [HttpPost]
[UnitOfWork(false)] [UnitOfWork(false)]
/// <summary> /// <summary>
@ -638,7 +619,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
throw new UserFriendlyException($"不存发票号为:{invbillnum}发票", "400"); throw new UserFriendlyException($"不存发票号为:{invbillnum}发票", "400");
} }
} }
var als = invBilllist.Where(p => string.IsNullOrEmpty(p.LU)).ToList(); var als = invBilllist.Where(p => string.IsNullOrEmpty(p.LU)).ToList();
var invlist = invBilllist.OrderBy(p => p.LU).ToList(); var invlist = invBilllist.OrderBy(p => p.LU).ToList();
return new JsonResult(new { Code = 200, Data = invlist }); return new JsonResult(new { Code = 200, Data = invlist });
@ -678,9 +658,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
//var gList = mappingList.Select(p => p.SettleGroupNum).ToList();//获取发票所有结算分组 //var gList = mappingList.Select(p => p.SettleGroupNum).ToList();//获取发票所有结算分组
var inv = await GetInvoiceGroupByInvBillNum(invbillnum).ConfigureAwait(false); var inv = await GetInvoiceGroupByInvBillNum(invbillnum).ConfigureAwait(false);
if (inv == null) if (inv == null)
{ {
throw new UserFriendlyException($"无原发票记录!", "400"); throw new UserFriendlyException($"无原发票记录!", "400");
@ -698,10 +675,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
throw new UserFriendlyException($"发票只有在财务已审核、红冲状态下可以报废!", "400"); throw new UserFriendlyException($"发票只有在财务已审核、红冲状态下可以报废!", "400");
} }
var settle = await _bbacMng.GetMainAsync(inv.InvGroupNum).ConfigureAwait(false); var settle = await _bbacMng.GetMainAsync(inv.InvGroupNum).ConfigureAwait(false);
if (settle == null) if (settle == null)

146
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs

@ -3,10 +3,14 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Bibliography;
using LinqToDB; using LinqToDB;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Org.BouncyCastle.Asn1.Ocsp;
using SettleAccount.Domain.BQ; using SettleAccount.Domain.BQ;
using SettleAccount.Job.Services;
using TaskJob.EventArgs;
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;
@ -16,8 +20,10 @@ using Win.Sfs.SettleAccount.CommonManagers;
using Win.Sfs.SettleAccount.Constant; using Win.Sfs.SettleAccount.Constant;
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.BQ.Temp;
using Win.Sfs.SettleAccount.Entities.Prices; using Win.Sfs.SettleAccount.Entities.Prices;
using Win.Sfs.SettleAccount.Entities.TaskJobs;
using Win.Sfs.Shared.RepositoryBase; using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Entities.BQ namespace Win.Sfs.SettleAccount.Entities.BQ
@ -43,6 +49,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository; private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository;
private readonly TaskJobService _service;
private readonly BBAC_CAN_SA_MNG _bbacMng; private readonly BBAC_CAN_SA_MNG _bbacMng;
public BBAC_CAN_SA_SERVICE(IExcelImportAppService excelImportService, public BBAC_CAN_SA_SERVICE(IExcelImportAppService excelImportService,
@ -54,10 +63,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
INormalEfCoreRepository<BBAC_NOT_SA_DETAIL, Guid> notRepository, INormalEfCoreRepository<BBAC_NOT_SA_DETAIL, Guid> notRepository,
INormalEfCoreRepository<PriceList, Guid> priceRepository, INormalEfCoreRepository<PriceList, Guid> priceRepository,
BBAC_CAN_SA_MNG bbacMng, BBAC_CAN_SA_MNG bbacMng,
BaseDomainService baseservice BaseDomainService baseservice,
TaskJobService service
) )
: base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng, baseservice) : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng, baseservice)
{ {
_service = service;
_notRepository = notRepository; _notRepository = notRepository;
_bbacMng = bbacMng; _bbacMng = bbacMng;
_priceRepository = priceRepository; _priceRepository = priceRepository;
@ -89,67 +100,80 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, Message = "错误提示文件已下载,请打开文件查看", fileName = await ExportErrorReportAsync(errorList).ConfigureAwait(false) }); return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, Message = "错误提示文件已下载,请打开文件查看", fileName = await ExportErrorReportAsync(errorList).ConfigureAwait(false) });
} }
if (await _bbacMng.SetForwardState(main, SettleBillState.).ConfigureAwait(false))
List<CustomCondition> customConditionList = new List<CustomCondition>();
customConditionList.Add(new CustomCondition() { Name = "BillNum", Value = invbillNum });
customConditionList.Add(new CustomCondition() { Name = "BussinessType", Value = main.BusinessType.ToString() });
//main.State = SettleBillState.发票生成中;
await _bbacMng.SetWaitingState(invbillNum);
var _taskid = await _service.ExportEnqueueAsync("生成发票任务", ExportExtentsion.Excel, string.Empty, string.Empty, CurrentUser, typeof(GenerateJisInvoiceService), customConditionList, (rs) =>
{ {
var groupNumList = entitys.Select(p => p.GroupNum).Distinct().ToList(); }).ConfigureAwait(false);
var notQuery = await _notRepository.Where(p => p.SettleBillNum == main.SettleBillNum).ToListAsync().ConfigureAwait(false);
var dto1s = ObjectMapper.Map<List<BBAC_CAN_SA_DETAIL>, List<BBAC_CAN_SA_DETAIL_DTO>>(entitys);
var q = from d in dto1s
join p in priceList on d.LU equals p.LU //if (await _bbacMng.SetForwardState(main, SettleBillState.已开票).ConfigureAwait(false))
where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == main.Site //{
select new TEMP_CAN_SA_DETAIL // var groupNumList = entitys.Select(p => p.GroupNum).Distinct().ToList();
{ // var notQuery = await _notRepository.Where(p => p.SettleBillNum == main.SettleBillNum).ToListAsync().ConfigureAwait(false);
SettleBillNum = d.SettleBillNum, // var dto1s = ObjectMapper.Map<List<BBAC_CAN_SA_DETAIL>, List<BBAC_CAN_SA_DETAIL_DTO>>(entitys);
Site = d.Site, // var q = from d in dto1s
Version = d.Version, // join p in priceList on d.LU equals p.LU
Price = p.Price, // where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == main.Site
BillNum = d.BillNum, // select new TEMP_CAN_SA_DETAIL
SettleDate = d.SettleDate, // {
InvGroupNum = d.InvGroupNum, // SettleBillNum = d.SettleBillNum,
LU = d.LU, // Site = d.Site,
MaterialDesc = d.MaterialDesc, // Version = d.Version,
PN = d.PN, // Price = p.Price,
Qty = d.Qty, // BillNum = d.BillNum,
GroupNum = d.GroupNum, // SettleDate = d.SettleDate,
Amt = Math.Round(d.Qty * p.Price, 2), // InvGroupNum = d.InvGroupNum,
ContractDocID = d.ContractDocID, // LU = d.LU,
BeginDate = p.BeginTime, // MaterialDesc = d.MaterialDesc,
EndDate = p.EndTime, // PN = d.PN,
PartCode = d.PartCode // Qty = d.Qty,
}; // GroupNum = d.GroupNum,
var dtos = q.ToList(); // Amt = Math.Round(d.Qty * p.Price, 2),
// ContractDocID = d.ContractDocID,
if (dtos != null && dtos.Count > 0) // BeginDate = p.BeginTime,
{ // EndDate = p.EndTime,
if (invbillNum.Substring(0, 1) == "C")//一次开票 // PartCode = d.PartCode
{ // };
var notlist = notQuery.Select(p => new TEMP_NOT_SA_DETAIL // var dtos = q.ToList();
{
KeyCode = p.KeyCode, // if (dtos != null && dtos.Count > 0)
Version = p.Version, // {
SettleBillNum = p.SettleBillNum, // if (invbillNum.Substring(0, 1) == "C")//一次开票
LU = p.LU, // {
PN = p.PN, // var notlist = notQuery.Select(p => new TEMP_NOT_SA_DETAIL
Site = p.Site, // {
Qty = p.Qty, // KeyCode = p.KeyCode,
Price = p.Price, // Version = p.Version,
BusinessType = p.BusinessType, // SettleBillNum = p.SettleBillNum,
IsReturn = "", // LU = p.LU,
InvGroupNum = p.InvGroupNum, // PN = p.PN,
SettleDate = p.SettleDate, // Site = p.Site,
GroupNum = p.GroupNum, // Qty = p.Qty,
ContractDocID = string.Empty, // Price = p.Price,
PartCode = p.PartCode // BusinessType = p.BusinessType,
// IsReturn = "",
}).ToList();//不能结算 // InvGroupNum = p.InvGroupNum,
await FirstInvoice(entitys, new List<PUB_ADJ_DETAIL>(), dtos, notlist, main.Version, main.InvGroupNum, string.Empty, main.BusinessType).ConfigureAwait(false); // SettleDate = p.SettleDate,
} // GroupNum = p.GroupNum,
else//二次开票 // ContractDocID = string.Empty,
{ // PartCode = p.PartCode
await SecInvoice(entitys, new List<PUB_ADJ_DETAIL>(), dtos, main.Version, main.InvGroupNum, string.Empty, main.BusinessType).ConfigureAwait(false);
} // }).ToList();//不能结算
} // await FirstInvoice(entitys, new List<PUB_ADJ_DETAIL>(), dtos, notlist, main.Version, main.InvGroupNum, string.Empty, main.BusinessType).ConfigureAwait(false);
} // }
// else//二次开票
// {
// await SecInvoice(entitys, new List<PUB_ADJ_DETAIL>(), dtos, main.Version, main.InvGroupNum, string.Empty, main.BusinessType).ConfigureAwait(false);
// }
// }
//}
} }
else else
{ {

13
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/GenerateJisInvoiceService.cs

@ -114,11 +114,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
public string ExportFile(Guid id, List<string> exportName, List<CustomCondition> property) public string ExportFile(Guid id, List<string> exportName, List<CustomCondition> property)
{ {
var billNum = property.Where(p => p.Name == "BillNum").FirstOrDefault().Value; var billNum = property.Where(p => p.Name == "BillNum").FirstOrDefault().Value;
var BussinessType = property.Where(p => p.Name == "BussinessType").FirstOrDefault().Value; var BussinessType = property.Where(p => p.Name == "BussinessType").FirstOrDefault().Value;
if (BussinessType == "JisBBAC")
if (BussinessType == "BBACJIS")
{ {
var main = _dbcontext.Set<BBAC_CAN_SA>().FirstOrDefault(p => p.InvGroupNum == billNum); var main = _dbcontext.Set<BBAC_CAN_SA>().FirstOrDefault(p => p.InvGroupNum == billNum);
//var main = await _bbacMng.GetMainAsync(invbillNum); //var main = await _bbacMng.GetMainAsync(invbillNum);
@ -177,13 +175,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
PartCode = p.PartCode PartCode = p.PartCode
}).ToList();//不能结算 }).ToList();//不能结算
var invs= FirstInvoice(entitys, new List<PUB_ADJ_DETAIL>(), dtos, notlist, main.Version, main.InvGroupNum, string.Empty, main.BusinessType); var invs = FirstInvoice(entitys, new List<PUB_ADJ_DETAIL>(), dtos, notlist, main.Version, main.InvGroupNum, string.Empty, main.BusinessType);
if (invs.Count > 0) if (invs.Count > 0)
{ {
main.State = SettleBillState.; main.State = SettleBillState.;
} }
} }
else//二次开票 else//二次开票
{ {
@ -195,11 +191,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
} }
} }
_dbcontext.BulkUpdate(new List<BBAC_CAN_SA>() { main }); _dbcontext.BulkUpdate(new List<BBAC_CAN_SA>() { main });
} }
} }
if(BussinessType=="HBPOJIS") if(BussinessType== "JisHBPO")
{ {
var main = _dbcontext.Set<HBPO_CAN_SA>().FirstOrDefault(p => p.InvGroupNum == billNum); var main = _dbcontext.Set<HBPO_CAN_SA>().FirstOrDefault(p => p.InvGroupNum == billNum);
//var main = await _bbacMng.GetMainAsync(invbillNum); //var main = await _bbacMng.GetMainAsync(invbillNum);
@ -278,7 +272,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs
} }
return id.ToString(); return id.ToString();
} }
public List<string> SecInvoice<TDetail>(List<TDetail> p_list, List<PUB_ADJ_DETAIL> p_ajdlist, List<TEMP_CAN_SA_DETAIL> dtos, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType) public List<string> SecInvoice<TDetail>(List<TDetail> p_list, List<PUB_ADJ_DETAIL> p_ajdlist, List<TEMP_CAN_SA_DETAIL> dtos, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType)
where TDetail : SA_CAN_BASE where TDetail : SA_CAN_BASE
{ {

6
code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationModule.cs

@ -85,6 +85,12 @@ namespace Win.Sfs.SettleAccount
{ {
return implementationFactory.GetService<PendingDeductionDelService>(); return implementationFactory.GetService<PendingDeductionDelService>();
} }
if (key.Equals(typeof(GenerateJisInvoiceService).FullName))
{
return implementationFactory.GetService<GenerateJisInvoiceService>();
}
else else

3
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/BBAC_CAN_SA.cs

@ -11,12 +11,10 @@ namespace SettleAccount.Domain.BQ
//[Display(Name = "期间")] //[Display(Name = "期间")]
//public int Version { get; set; } //public int Version { get; set; }
//[Display(Name = "结算单据")] //[Display(Name = "结算单据")]
//public string BillNum { get; set; } = null!; //public string BillNum { get; set; } = null!;
//[Display(Name = "关联结算单号")] //[Display(Name = "关联结算单号")]
//public string SettleBillNum { get; set; } = null!; //public string SettleBillNum { get; set; } = null!;
///// <summary> ///// <summary>
///// 1、新建 2、已有出库3、已有扣减寄售库 ///// 1、新建 2、已有出库3、已有扣减寄售库
///// </summary> ///// </summary>
@ -47,7 +45,6 @@ namespace SettleAccount.Domain.BQ
} }
} }
[Display(Name = "BBAC可结算导入明细")] [Display(Name = "BBAC可结算导入明细")]
public class BBAC_CAN_SA_DETAIL : SA_CAN_BASE public class BBAC_CAN_SA_DETAIL : SA_CAN_BASE
{ {

16
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/BBAC_CAN_SA_MNG.cs

@ -205,6 +205,22 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
return false; return false;
; ;
} }
public virtual async Task<bool> SetWaitingState(string billNum)
{
var entity = await GetMainAsync(billNum).ConfigureAwait(false);
if (entity != null)
{
entity.State = SettleBillState.;
await _repository.UpdateAsync(entity).ConfigureAwait(false);
return true;
}
return false;
;
}
/// <summary> /// <summary>
/// 获得所有明细 /// 获得所有明细
/// </summary> /// </summary>

Loading…
Cancel
Save