diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/MakeCanSettlementService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/MakeCanSettlementService.cs index 02b56fcc..073b0b0a 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/MakeCanSettlementService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/MakeCanSettlementService.cs @@ -52,8 +52,14 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs bbacquery = bbacquery.Where(filers.ToLambda()); } var p_list = bbacquery.ToList(); - - + if (p_list.Count == 0) + { + var ls = _dbcontext.Set().Where(p => p.Project == "BBAC_NOT" && p.Value == "True").ToList(); + if (ls.Any()) + { + _dbcontext.BulkDelete(ls); + } + } var jis1 = p_list.Where(p => p.Site == "1040").ToList(); var jis2 = p_list.Where(p => p.Site == "1046").ToList(); List notlist = new List(); @@ -107,6 +113,28 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs List details = new List(); foreach (var itm1 in ls) { + var _detailEntity = new BBAC_CAN_SA_DETAIL( + guid: GuidGenerator.Create(), + keyCode: itm1.KeyCode, + version: itm1.Version, + billNum: string.Empty, + settleBillNum: itm1.SettleBillNum, + lU: itm1.LU, + pN: itm1.PN, + site: itm1.Site, + qty: itm1.Qty, + price: itm1.Price, + category: itm1.BusinessType, + isReturn: itm1.IsReturn, + settleDate: itm1.SettleDate, + groupNum: itm1.GroupNum, + invGroupNum: string.Empty, + contactid: itm1.ContractDocID, + invbillnum: string.Empty, + partcode: itm1.PartCode + ); + _detailEntity.RealPartCode = itm1.RealPartCode; + details.Add(_detailEntity); sum += (itm1.Qty * itm1.Price); if (sum > 10000000) { @@ -130,29 +158,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs details = new List(); sum = 0; } - var _detailEntity = new BBAC_CAN_SA_DETAIL( - guid: GuidGenerator.Create(), - keyCode: itm1.KeyCode, - version: itm1.Version, - billNum: string.Empty, - settleBillNum: itm1.SettleBillNum, - lU: itm1.LU, - pN: itm1.PN, - site: itm1.Site, - qty: itm1.Qty, - price: itm1.Price, - category: itm1.BusinessType, - isReturn: itm1.IsReturn, - settleDate: itm1.SettleDate, - groupNum: itm1.GroupNum, - invGroupNum: string.Empty, - contactid: itm1.ContractDocID, - invbillnum: string.Empty, - partcode: itm1.PartCode - ); - _detailEntity.RealPartCode = itm1.RealPartCode; - details.Add(_detailEntity); - } var billNum1 = OrderNumberGenerator.GenerateOrderNumber("N"); var bbac_sa1 = new BBAC_CAN_SA(); @@ -265,6 +270,28 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs List details = new List(); foreach (var itm1 in ls) { + var _detailEntity = new BBAC_CAN_SA_DETAIL( + guid: GuidGenerator.Create(), + keyCode: itm1.KeyCode, + version: itm1.Version, + billNum: string.Empty, + settleBillNum: itm1.SettleBillNum, + lU: itm1.LU, + pN: itm1.PN, + site: itm1.Site, + qty: itm1.Qty, + price: itm1.Price, + category: itm1.BusinessType, + isReturn: itm1.IsReturn, + settleDate: itm1.SettleDate, + groupNum: itm1.GroupNum, + invGroupNum: string.Empty, + contactid: itm1.ContractDocID, + invbillnum: string.Empty, + partcode: itm1.PartCode + ); + _detailEntity.RealPartCode = itm1.RealPartCode; + details.Add(_detailEntity); sum += (itm1.Qty * itm1.Price); if (sum > 10000000) { @@ -287,30 +314,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs } details = new List(); sum = 0; - } - var _detailEntity = new BBAC_CAN_SA_DETAIL( - guid: GuidGenerator.Create(), - keyCode: itm1.KeyCode, - version: itm1.Version, - billNum: string.Empty, - settleBillNum: itm1.SettleBillNum, - lU: itm1.LU, - pN: itm1.PN, - site: itm1.Site, - qty: itm1.Qty, - price: itm1.Price, - category: itm1.BusinessType, - isReturn: itm1.IsReturn, - settleDate: itm1.SettleDate, - groupNum: itm1.GroupNum, - invGroupNum: string.Empty, - contactid: itm1.ContractDocID, - invbillnum: string.Empty, - partcode: itm1.PartCode - ); - _detailEntity.RealPartCode = itm1.RealPartCode; - details.Add(_detailEntity); - + } } var billNum1 = OrderNumberGenerator.GenerateOrderNumber("N"); var bbac_sa1 = new BBAC_CAN_SA(); @@ -439,6 +443,16 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs bbacquery = bbacquery.Where(filers.ToLambda()); } var p_list = bbacquery.ToList(); + + if (p_list.Count == 0) + { + var ls = _dbcontext.Set().Where(p => p.Project == "BBAC_NOT" && p.Value == "True").ToList(); + if (ls.Any()) + { + _dbcontext.BulkDelete(ls); + } + } + var jis1 = p_list.Where(p => p.Site == "104T").ToList(); if (jis1.Count > 0) { @@ -488,6 +502,26 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs List details = new List(); foreach (var itm1 in ls) { + var _detailEntity = new HBPO_CAN_SA_DETAIL( + guid: GuidGenerator.Create(), + keyCode: itm1.KeyCode, + version: itm1.Version, + billNum: string.Empty, + settleBillNum: itm1.SettleBillNum, + lU: itm1.LU, + pN: itm1.PN, + site: itm1.Site, + qty: itm1.Qty, + price: itm1.Price, + businessType: itm1.BusinessType, + settleDate: itm1.SettleDate, + groupNum: itm1.GroupNum, + invGroupNum: string.Empty, + invbillnum: string.Empty, + partcode: itm1.PartCode + ); + _detailEntity.RealPartCode = itm1.RealPartCode; + details.Add(_detailEntity); sum += (itm1.Qty * itm1.Price); if (sum > 10000000) { @@ -511,26 +545,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs details = new List(); sum = 0; } - var _detailEntity = new HBPO_CAN_SA_DETAIL( - guid: GuidGenerator.Create(), - keyCode: itm1.KeyCode, - version: itm1.Version, - billNum: string.Empty, - settleBillNum: itm1.SettleBillNum, - lU: itm1.LU, - pN: itm1.PN, - site: itm1.Site, - qty: itm1.Qty, - price: itm1.Price, - businessType: itm1.BusinessType, - settleDate: itm1.SettleDate, - groupNum: itm1.GroupNum, - invGroupNum: string.Empty, - invbillnum: string.Empty, - partcode: itm1.PartCode - ); - _detailEntity.RealPartCode = itm1.RealPartCode; - details.Add(_detailEntity); + } var billNum1 = OrderNumberGenerator.GenerateOrderNumber("N"); var bbac_sa1 = new HBPO_CAN_SA(); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/PUB_NOT_SA_MNG.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/PUB_NOT_SA_MNG.cs index 2ff09b82..f1dd6127 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/PUB_NOT_SA_MNG.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/PUB_NOT_SA_MNG.cs @@ -70,6 +70,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers var entityList = new List(); var notList = new List(); var billList = new List(); + List billDetails = new List(); var query = p_list.Select(p => p.BusinessType).Distinct().ToList(); if (query.Count > 1) { @@ -311,44 +312,126 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers var pub_not_list = query1.Select(p => p.b).ToList(); if (pub_can_list.Count > 0) { + var t1 = pub_can_list.GroupBy(p => p.LU).Select(p => new { LU = p.Key, Amt = p.Sum(itm => itm.Qty * itm.Price) }).OrderByDescending(p => p.Amt).ToList(); + var part_group_big = t1.Where(p => p.Amt >= 10000000).ToList(); + var part_group_small = t1.Where(p => p.Amt < 10000000).ToList(); + if (part_group_big.Count > 0) + { + foreach (var itm in part_group_big) + { + var ls = pub_can_list.Where(p => p.LU == itm.LU).ToList(); + decimal sum = 0; + List details = new List(); + foreach (var itm1 in ls) + { + var _detailEntity = new PUB_CAN_SA_DETAIL( + guid: GuidGenerator.Create(), + keyCode: itm1.KeyCode, + version: itm1.Version, + billNum: string.Empty, + settleBillNum: itm1.SettleBillNum, + lU: itm1.LU, + pN: itm1.PN, + site: itm1.Site, + qty: itm1.Qty, + price: itm1.Price, + businessType: itm1.BusinessType, + settleDate: itm1.SettleDate, + groupNum: itm1.GroupNum, + invGroupNum: string.Empty, + invbillnum: string.Empty, + partcode: itm1.PartCode, + pobillnum: itm1.PoBillNum - notList.AddRange(pub_not_list); - var billNumber = OrderNumberGenerator.GenerateOrderNumber("N"); - var entity = new PUB_CAN_SA(); - entity.SetId(Guid.NewGuid()); - entity.BillNum = billNumber; - entity.InvGroupNum = billNumber; - entity.Version = int.Parse(DateTime.Now.ToString("yyyymm")); - entity.State = SettleBillState.未结状态; - entity.SettleBillNum = string.Empty; - entity.BusinessType = _first.BusinessType; - entity.Site = _first.Site; - foreach (var itm in pub_can_list) + ); + _detailEntity.RealPartCode = itm1.RealPartCode; + details.Add(_detailEntity); + sum += (itm1.Qty * itm1.Price); + if (sum > 10000000) + { + var billNum = OrderNumberGenerator.GenerateOrderNumber("N"); + var bbac_sa = new PUB_CAN_SA(); + bbac_sa.SetId(Guid.NewGuid()); + bbac_sa.BillNum = billNum; + bbac_sa.InvGroupNum = billNum; + bbac_sa.Version = int.Parse(DateTime.Now.ToString("yyyyMM")); + bbac_sa.State = SettleBillState.未结状态; + bbac_sa.SettleBillNum = string.Empty; + bbac_sa.Site = "104T"; + bbac_sa.BusinessType = EnumBusinessType.JisBBAC; + billList.Add(bbac_sa); + foreach (var itm2 in details) + { + itm2.SetBillNum(billNum); + itm2.SetGroupNum(billNum); + billDetails.Add(itm2); + } + details = new List(); + sum = 0; + } + } + var billNum1 = OrderNumberGenerator.GenerateOrderNumber("N"); + var bbac_sa1 = new PUB_CAN_SA(); + bbac_sa1.SetId(Guid.NewGuid()); + bbac_sa1.BillNum = billNum1; + bbac_sa1.InvGroupNum = billNum1; + bbac_sa1.Version = int.Parse(DateTime.Now.ToString("yyyyMM")); + bbac_sa1.State = SettleBillState.未结状态; + bbac_sa1.SettleBillNum = string.Empty; + bbac_sa1.Site = "104T"; + bbac_sa1.BusinessType = EnumBusinessType.JisBBAC; + billList.Add(bbac_sa1); + foreach (var detail in details) + { + detail.SetBillNum(billNum1); + detail.SetGroupNum(billNum1); + billDetails.Add(detail); + } + } + } + if (part_group_small.Count > 0) { - var _detailEntity = new PUB_CAN_SA_DETAIL( - guid: GuidGenerator.Create(), - keyCode: itm.KeyCode, - version: itm.Version, - billNum: billNumber, - settleBillNum: itm.SettleBillNum, - lU: itm.LU, - pN: itm.PN, - site: itm.Site, - qty: itm.Qty, - price: itm.Price, - businessType: itm.BusinessType, - settleDate: itm.SettleDate, - groupNum: itm.GroupNum, - invGroupNum: billNumber, - invbillnum: string.Empty, - partcode: itm.PartCode, - pobillnum: string.Empty - ); - _detailEntity.RealPartCode = string.IsNullOrEmpty(itm.RealPartCode) ? itm.PartCode : itm.RealPartCode; - entityList.Add(_detailEntity); + var partlist = part_group_small.Select(p => p.LU).ToList(); + var ls = pub_can_list.Where(p => partlist.Contains(p.LU)).ToList(); + var billNum = OrderNumberGenerator.GenerateOrderNumber("N"); + var bbac_sa = new PUB_CAN_SA(); + bbac_sa.SetId(Guid.NewGuid()); + bbac_sa.BillNum = billNum; + bbac_sa.InvGroupNum = billNum; + bbac_sa.Version = int.Parse(DateTime.Now.ToString("yyyyMM")); + bbac_sa.State = SettleBillState.未结状态; + bbac_sa.SettleBillNum = string.Empty; + bbac_sa.Site = "104T"; + bbac_sa.BusinessType = EnumBusinessType.JisBBAC; + billList.Add(bbac_sa); + foreach (var itm1 in ls) + { + var _detailEntity = new PUB_CAN_SA_DETAIL( + guid: GuidGenerator.Create(), + keyCode: itm1.KeyCode, + version: itm1.Version, + billNum: billNum, + settleBillNum: itm1.SettleBillNum, + lU: itm1.LU, + pN: itm1.PN, + site: itm1.Site, + qty: itm1.Qty, + price: itm1.Price, + businessType: itm1.BusinessType, + settleDate: itm1.SettleDate, + groupNum: itm1.GroupNum, + invGroupNum: billNum, + invbillnum: string.Empty, + partcode: itm1.PartCode, + pobillnum:itm1.PoBillNum + ); + _detailEntity.RealPartCode = itm1.RealPartCode; + billDetails.Add(_detailEntity); + } } + await _repository.DbContext.BulkDeleteAsync(notList).ConfigureAwait(false); - await _repository.DbContext.BulkInsertAsync(new List() { entity }).ConfigureAwait(false); + await _repository.DbContext.BulkInsertAsync(billList).ConfigureAwait(false); await _repository.DbContext.BulkInsertAsync(entityList).ConfigureAwait(false); } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/PUB_CAN_SA.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/PUB_CAN_SA.cs index 1438029c..3be22779 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/PUB_CAN_SA.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/PUB_CAN_SA.cs @@ -147,5 +147,15 @@ namespace SettleAccount.Domain.BQ public PUB_CAN_SA_DETAIL() { } + + public void SetBillNum(string billNum) + { + BillNum = billNum; + } + public void SetGroupNum(string billNum) { + BillNum = billNum; + } + + } }