|
|
@ -11,6 +11,7 @@ using Magicodes.ExporterAndImporter.Excel; |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Http; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using Microsoft.OpenApi.Writers; |
|
|
|
using SettleAccount.Domain.BQ; |
|
|
|
using ShardingCore.Extensions; |
|
|
|
using Shouldly; |
|
|
@ -198,12 +199,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ |
|
|
|
bj.LU = itm.LU; |
|
|
|
bj.PartCode = itm.PartCode; |
|
|
|
bj.PRICE = itm.PRICE; |
|
|
|
|
|
|
|
//bj.InvGroupNum = itm.InvGroupNum;
|
|
|
|
//bj.DeliveryNumber= itm.GetProperty("DeliveryNumber", "");//交货号
|
|
|
|
//bj.InvbillNum = itm.GetProperty("InvoiceNumber", "");//发票号
|
|
|
|
//bj.VendorCode = itm.GetProperty("VendorCode", "");//供应商代码
|
|
|
|
//bj.VendorName = itm.GetProperty("VendorName", "");//供应商名称
|
|
|
|
|
|
|
|
bj.InvGroupNum = itm.InvGroupNum; |
|
|
|
bj.DeliveryNumber =itm.ExtraProperties["DeliveryIndexNumber"].ToSqlValue(); |
|
|
|
//bj.DeliveryNumber = itm.GetProperty("DeliveryNumber", "");//交货号
|
|
|
|
//bj.InvbillNum = itm.GetProperty("InvoiceNumber", "");//发票号
|
|
|
|
//bj.VendorCode = itm.GetProperty("VendorCode", "");//供应商代码
|
|
|
|
//bj.VendorName = itm.GetProperty("VendorName", "");//供应商名称
|
|
|
|
//bj.PurchaseOrderNumber = itm.GetProperty("PurchaseOrderNumber", "");//采购订单号
|
|
|
|
//bj.DeliveryIndexNumber = itm.GetProperty("DeliveryIndexNumber", "");//交付索引号
|
|
|
|
//bj.PartName = itm.GetProperty("PartName", "");//零件名称
|
|
|
@ -338,10 +340,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ |
|
|
|
.Select(p => new JIT_UNSETTLED_DETAIL_DTO { LU = p.Key.LU, GroupNum = p.Key.SettleGroupNum, Qty = p.Sum(itm => itm.Qty.Value) }); |
|
|
|
entity.JIT_UNSETTLED_DETAIL = unsettledList.ToList().OrderBy(p => p.GroupNum).ThenBy(p => p.LU).ToList(); |
|
|
|
} |
|
|
|
if (first.BusinessType == EnumBusinessType.JisHBPO) |
|
|
|
{ |
|
|
|
entity.INVOICE_MAP_GROUP = lscompare.ToList().OrderBy(p => p.SettleGroupNum).ToList();//包含不可结结算分组号
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (first.BusinessType == EnumBusinessType.JisHBPO || first.BusinessType == EnumBusinessType.JisBBAC) |
|
|
|
{ |
|
|
@ -349,7 +348,27 @@ namespace Win.Sfs.SettleAccount.Entities.BQ |
|
|
|
} |
|
|
|
if (first.BusinessType == EnumBusinessType.MaiDanJianHBPO) |
|
|
|
{ |
|
|
|
entity.INVOICE_MAP_GROUP = mdtos; |
|
|
|
List<MAIDAN_HBPO_INVOICE_MAP_GROUP_DTO> maidan = new List<MAIDAN_HBPO_INVOICE_MAP_GROUP_DTO>(); |
|
|
|
foreach (var itm in m) |
|
|
|
{ |
|
|
|
maidan.Add(new MAIDAN_HBPO_INVOICE_MAP_GROUP_DTO() { |
|
|
|
Extend1=itm.Extend1, |
|
|
|
InvGroupNum=itm.InvGroupNum, |
|
|
|
SettleGroupNum=itm.SettleGroupNum |
|
|
|
}); |
|
|
|
} |
|
|
|
entity.MAIDAN_HBPO_INVOICE_MAP_GROUP = maidan; |
|
|
|
List<MAIDAN_HBPO_UNSETTLED_DETAIL_DTO> unsettle = new List<MAIDAN_HBPO_UNSETTLED_DETAIL_DTO>(); |
|
|
|
foreach (var itm in notquery.ToList()) |
|
|
|
{ |
|
|
|
unsettle.Add(new MAIDAN_HBPO_UNSETTLED_DETAIL_DTO() { |
|
|
|
GroupNum=itm.InvGroupNum, |
|
|
|
LU=itm.LU, |
|
|
|
PN=itm.Extend1, |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
entity.ADJ_DETAIL = adjQuery.ToList().OrderBy(p=>p.GroupNum).ThenBy(p=>p.LU).ToList(); |
|
|
@ -413,132 +432,148 @@ namespace Win.Sfs.SettleAccount.Entities.BQ |
|
|
|
var bbac = invdetail.INVOICE_WAIT_DETAIL_BBAC;//BBACJIS明细
|
|
|
|
var bj = invdetail.INVOICE_WAIT_DETAIL_BJ;//备件明细
|
|
|
|
var unsettle = invdetail.UNSETTLED_DETAIL;//全部未结明细
|
|
|
|
var hbpom = invdetail.MAIDAN_HBPO_INVOICE_MAP_GROUP;//买单HBPO分组对应
|
|
|
|
var hbpounsettle = invdetail.MAIDAN_HBPO_UNSETTLED_DETAIL;//买单HBPO未结
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var classDisplayName = typeof(INVOICE_GRP_DTO).GetCustomAttribute<DisplayAttribute>()?.Name ?? typeof(INVOICE_GRP_DTO).Name; |
|
|
|
string _fileName = $"{classDisplayName}_{Guid.NewGuid().ToString()}.xlsx"; |
|
|
|
|
|
|
|
//发票明细
|
|
|
|
#region 发票明细
|
|
|
|
if (entities.FirstOrDefault().BusinessType == EnumBusinessType.JisBBAC) |
|
|
|
{ |
|
|
|
_excel.Append(bbac, "发票明细"); |
|
|
|
} |
|
|
|
else if (entities.FirstOrDefault().BusinessType == EnumBusinessType.BeiJian) |
|
|
|
{ |
|
|
|
|
|
|
|
_excel.Append(bj, "发票明细"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
_excel.Append(detail, "发票明细"); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
// 发票分组
|
|
|
|
if (first.BusinessType == EnumBusinessType.JisBBAC || first.BusinessType == EnumBusinessType.JisHBPO) |
|
|
|
{ |
|
|
|
_excel.Append(m, "发票结算分组对应");//发票分组对应结算号
|
|
|
|
} |
|
|
|
if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC ) |
|
|
|
if (first.BusinessType == EnumBusinessType.MaiDanJianHBPO) |
|
|
|
{ |
|
|
|
_excel.Append(unsettle, "未结零件结算汇总"); |
|
|
|
if (hbpom != null) |
|
|
|
{ |
|
|
|
_excel.Append(hbpom, "发票结算分组对应"); |
|
|
|
} |
|
|
|
if (unsettle != null) |
|
|
|
{ |
|
|
|
_excel.Append(unsettle, "未结零件汇总"); |
|
|
|
} |
|
|
|
} |
|
|
|
if (first.BusinessType == EnumBusinessType.JisHBPO) |
|
|
|
if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC) |
|
|
|
{ |
|
|
|
_excel.Append(unsettle, "未结零件列表"); |
|
|
|
_excel.Append(unsettle, "未结零件结算汇总"); |
|
|
|
} |
|
|
|
|
|
|
|
foreach (var itm in entities) |
|
|
|
//jis业务,发票分组对应关系,未结数据,调整数据
|
|
|
|
if (first.BusinessType == EnumBusinessType.JisBBAC || first.BusinessType == EnumBusinessType.JisHBPO) |
|
|
|
{ |
|
|
|
var mgroup = m.Where(p => p.InvbillNum == itm.InvbillNum).ToList(); |
|
|
|
var adjp = adj.Where(p => p.InvBillNum == itm.InvbillNum).ToList(); |
|
|
|
var nolist = not.Where(p => p.InvBillNum == itm.InvbillNum).ToList(); |
|
|
|
var lsC = nolist.Where(p => p.Extend1 == "可结算") |
|
|
|
.GroupBy(p => new |
|
|
|
{ |
|
|
|
p.LU, |
|
|
|
p.RealInvBillNum, |
|
|
|
p.InvDate, |
|
|
|
p.InvBillNum, |
|
|
|
p.InvGroupNum, |
|
|
|
}).Select(p => new INVOICE_NOT_SETTLE_DTO() |
|
|
|
{ |
|
|
|
LU = p.Key.LU, |
|
|
|
RealInvBillNum = p.Key.RealInvBillNum, |
|
|
|
InvDate = p.Key.InvDate, |
|
|
|
InvBillNum = p.Key.InvBillNum, |
|
|
|
|
|
|
|
InvGroupNum = p.Key.InvGroupNum, |
|
|
|
Qty = p.Sum(itm => itm.Qty) |
|
|
|
|
|
|
|
}).ToList(); |
|
|
|
var lsN = nolist.Where(p => p.Extend1 == "不可结算").ToList() |
|
|
|
.GroupBy(p => new |
|
|
|
{ |
|
|
|
p.LU, |
|
|
|
p.RealInvBillNum, |
|
|
|
p.InvDate, |
|
|
|
p.InvBillNum, |
|
|
|
p.InvGroupNum, |
|
|
|
foreach (var itm in entities) |
|
|
|
{ |
|
|
|
var mgroup = m.Where(p => p.InvbillNum == itm.InvbillNum).ToList(); |
|
|
|
var adjp = adj.Where(p => p.InvBillNum == itm.InvbillNum).ToList(); |
|
|
|
var nolist = not.Where(p => p.InvBillNum == itm.InvbillNum).ToList(); |
|
|
|
var lsC = nolist.Where(p => p.Extend1 == "可结算") |
|
|
|
.GroupBy(p => new |
|
|
|
{ |
|
|
|
p.LU, |
|
|
|
p.RealInvBillNum, |
|
|
|
p.InvDate, |
|
|
|
p.InvBillNum, |
|
|
|
p.InvGroupNum, |
|
|
|
}).Select(p => new INVOICE_NOT_SETTLE_DTO() |
|
|
|
{ |
|
|
|
LU = p.Key.LU, |
|
|
|
RealInvBillNum = p.Key.RealInvBillNum, |
|
|
|
InvDate = p.Key.InvDate, |
|
|
|
InvBillNum = p.Key.InvBillNum, |
|
|
|
InvGroupNum = p.Key.InvGroupNum, |
|
|
|
Qty = p.Sum(itm => itm.Qty) |
|
|
|
|
|
|
|
}).Select(p => new INVOICE_NOT_SETTLE_DTO() |
|
|
|
{ |
|
|
|
LU = p.Key.LU, |
|
|
|
RealInvBillNum = p.Key.RealInvBillNum, |
|
|
|
InvDate = p.Key.InvDate, |
|
|
|
InvBillNum = p.Key.InvBillNum, |
|
|
|
InvGroupNum = p.Key.InvGroupNum, |
|
|
|
Qty = p.Sum(itm => itm.Qty) |
|
|
|
}).ToList(); |
|
|
|
var lineC = lsC.Count; |
|
|
|
var lineN = lsN.Count; |
|
|
|
List<INVOICE_NOT_SETTLE_EXT_DTO> ls = new List<INVOICE_NOT_SETTLE_EXT_DTO>(); |
|
|
|
}).ToList(); |
|
|
|
var lsN = nolist.Where(p => p.Extend1 == "不可结算").ToList() |
|
|
|
.GroupBy(p => new |
|
|
|
{ |
|
|
|
p.LU, |
|
|
|
p.RealInvBillNum, |
|
|
|
p.InvDate, |
|
|
|
p.InvBillNum, |
|
|
|
p.InvGroupNum, |
|
|
|
|
|
|
|
for (int i = 0; i < 10000; i++) |
|
|
|
{ |
|
|
|
INVOICE_NOT_SETTLE_EXT_DTO invnot = new INVOICE_NOT_SETTLE_EXT_DTO(); |
|
|
|
invnot.RealInvBillNum = string.Empty; |
|
|
|
invnot.InvDate = null; |
|
|
|
invnot.InvBillNum = string.Empty; |
|
|
|
invnot.InvGroupNum = string.Empty; |
|
|
|
invnot.SettleGroupNum = string.Empty; |
|
|
|
invnot.SettleLU = string.Empty; |
|
|
|
invnot.SettleQty = null; |
|
|
|
invnot.NotSettleLU = string.Empty; |
|
|
|
invnot.Qty = string.Empty; |
|
|
|
ls.Add(invnot); |
|
|
|
} |
|
|
|
var entity = nolist.FirstOrDefault(); |
|
|
|
var disList = mgroup.Select(p => p.SettleGroupNum).Distinct().ToList(); |
|
|
|
for (int i = 0; i < lineC; i++)//更新可结信息
|
|
|
|
{ |
|
|
|
ls[i].RealInvBillNum = entity.RealInvBillNum; |
|
|
|
ls[i].InvDate = entity.InvDate; |
|
|
|
ls[i].InvBillNum = entity.InvBillNum; |
|
|
|
ls[i].InvGroupNum = entity.InvGroupNum; |
|
|
|
// ls[i].SettleGroupNum = entity.SettleGroupNum;
|
|
|
|
ls[i].SettleLU = lsC[i].LU; |
|
|
|
ls[i].SettleQty = lsC[i].Qty == null ? string.Empty : lsC[i].Qty.ToString(); |
|
|
|
} |
|
|
|
for (int i = 0; i < lineN; i++)//更新不可结信息
|
|
|
|
{ |
|
|
|
ls[i].RealInvBillNum = entity.RealInvBillNum; |
|
|
|
ls[i].InvDate = entity.InvDate; |
|
|
|
ls[i].InvBillNum = entity.InvBillNum; |
|
|
|
ls[i].InvGroupNum = entity.InvGroupNum; |
|
|
|
// ls[i].SettleGroupNum = entity.SettleGroupNum;
|
|
|
|
ls[i].NotSettleLU = lsN[i].LU; |
|
|
|
ls[i].Qty = lsN[i].Qty == null ? string.Empty : lsN[i].Qty.ToString(); |
|
|
|
} |
|
|
|
for (int i = 0; i < disList.Count; i++)//更新结算分组
|
|
|
|
{ |
|
|
|
ls[i].SettleGroupNum = disList[i]; |
|
|
|
}).Select(p => new INVOICE_NOT_SETTLE_DTO() |
|
|
|
{ |
|
|
|
LU = p.Key.LU, |
|
|
|
RealInvBillNum = p.Key.RealInvBillNum, |
|
|
|
InvDate = p.Key.InvDate, |
|
|
|
InvBillNum = p.Key.InvBillNum, |
|
|
|
InvGroupNum = p.Key.InvGroupNum, |
|
|
|
Qty = p.Sum(itm => itm.Qty) |
|
|
|
}).ToList(); |
|
|
|
var lineC = lsC.Count; |
|
|
|
var lineN = lsN.Count; |
|
|
|
List<INVOICE_NOT_SETTLE_EXT_DTO> ls = new List<INVOICE_NOT_SETTLE_EXT_DTO>(); |
|
|
|
for (int i = 0; i < 10000; i++) |
|
|
|
{ |
|
|
|
INVOICE_NOT_SETTLE_EXT_DTO invnot = new INVOICE_NOT_SETTLE_EXT_DTO(); |
|
|
|
invnot.RealInvBillNum = string.Empty; |
|
|
|
invnot.InvDate = null; |
|
|
|
invnot.InvBillNum = string.Empty; |
|
|
|
invnot.InvGroupNum = string.Empty; |
|
|
|
invnot.SettleGroupNum = string.Empty; |
|
|
|
invnot.SettleLU = string.Empty; |
|
|
|
invnot.SettleQty = null; |
|
|
|
invnot.NotSettleLU = string.Empty; |
|
|
|
invnot.Qty = string.Empty; |
|
|
|
ls.Add(invnot); |
|
|
|
} |
|
|
|
var entity = nolist.FirstOrDefault(); |
|
|
|
var disList = mgroup.Select(p => p.SettleGroupNum).Distinct().ToList(); |
|
|
|
for (int i = 0; i < lineC; i++)//更新可结信息
|
|
|
|
{ |
|
|
|
ls[i].RealInvBillNum = entity.RealInvBillNum; |
|
|
|
ls[i].InvDate = entity.InvDate; |
|
|
|
ls[i].InvBillNum = entity.InvBillNum; |
|
|
|
ls[i].InvGroupNum = entity.InvGroupNum; |
|
|
|
// ls[i].SettleGroupNum = entity.SettleGroupNum;
|
|
|
|
ls[i].SettleLU = lsC[i].LU; |
|
|
|
ls[i].SettleQty = lsC[i].Qty == null ? string.Empty : lsC[i].Qty.ToString(); |
|
|
|
} |
|
|
|
for (int i = 0; i < lineN; i++)//更新不可结信息
|
|
|
|
{ |
|
|
|
ls[i].RealInvBillNum = entity.RealInvBillNum; |
|
|
|
ls[i].InvDate = entity.InvDate; |
|
|
|
ls[i].InvBillNum = entity.InvBillNum; |
|
|
|
ls[i].InvGroupNum = entity.InvGroupNum; |
|
|
|
// ls[i].SettleGroupNum = entity.SettleGroupNum;
|
|
|
|
ls[i].NotSettleLU = lsN[i].LU; |
|
|
|
ls[i].Qty = lsN[i].Qty == null ? string.Empty : lsN[i].Qty.ToString(); |
|
|
|
} |
|
|
|
for (int i = 0; i < disList.Count; i++)//更新结算分组
|
|
|
|
{ |
|
|
|
ls[i].SettleGroupNum = disList[i]; |
|
|
|
} |
|
|
|
_excel.Append(ls, "结算分组零件" + itm.InvbillNum); |
|
|
|
_excel.Append(adjp, "发票调整数据" + itm.InvbillNum).SeparateBySheet(); |
|
|
|
} |
|
|
|
if (first.BusinessType == EnumBusinessType.JisBBAC || first.BusinessType == EnumBusinessType.JisHBPO) |
|
|
|
} |
|
|
|
else//其他业务发票调整数据
|
|
|
|
{ |
|
|
|
foreach (var itm in entities) |
|
|
|
{ |
|
|
|
_excel.Append(ls, "结算分组零件" + itm.InvbillNum); |
|
|
|
var adjp = adj.Where(p => p.InvBillNum == itm.InvbillNum).ToList(); |
|
|
|
_excel.Append(adjp, "发票调整数据" + itm.InvbillNum).SeparateBySheet(); |
|
|
|
} |
|
|
|
_excel.Append(adjp, "发票调整数据" + itm.InvbillNum).SeparateBySheet(); |
|
|
|
} |
|
|
|
|
|
|
|
var result = _excel.ExportAppendDataAsByteArray(); |
|
|
|
result.ShouldNotBeNull(); |
|
|
|
//保存导出文件到服务器存成二进制
|
|
|
@ -622,7 +657,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ |
|
|
|
inv.RealnvBillNum = newinv.RealnvBillNum; |
|
|
|
// inv.RealAmt = newinv.RealAmt;
|
|
|
|
inv.TaxDiff = newinv.PreTaxDiff; |
|
|
|
|
|
|
|
// inv.ClientCode = newinv.ClientCode;
|
|
|
|
} |
|
|
|
foreach (var detail in invdetail) |
|
|
|