From bded3d06eef8ecc929dc6ccb4e7f481b3d1fd547 Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Thu, 17 Aug 2023 22:21:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/demo/Application.java | 20 +- src/main/java/com/demo/Application3.java | 228 ++++++++++++++++++ .../com/demo/cost/SyncVerificationMain.java | 153 +++++++++--- .../java/com/demo/cost/TbsServiceImpl.java | 2 +- .../demo/cost/entity/XltCheckCostItem.java | 3 +- .../com/demo/t20230704/SyncNotCheckMain.java | 21 +- 6 files changed, 382 insertions(+), 45 deletions(-) create mode 100644 src/main/java/com/demo/Application3.java diff --git a/src/main/java/com/demo/Application.java b/src/main/java/com/demo/Application.java index 9a1ad5d..6c9a239 100644 --- a/src/main/java/com/demo/Application.java +++ b/src/main/java/com/demo/Application.java @@ -33,27 +33,27 @@ public class Application { // for (int i = 1; i < 13; i++) { // service.syncCost(y,i); // } +//// +//// //特殊的命中修改成本中心 +//// SyncMatchActCenter matchActCenter = new SyncMatchActCenter(); +//// matchActCenter.tmain(); // -// //特殊的命中修改成本中心 -// SyncMatchActCenter matchActCenter = new SyncMatchActCenter(); -// matchActCenter.tmain(); - - //更新申请vtb_flag=1,重新录入核销,并非每次执行 +// //更新申请vtb_flag=1,重新录入核销,并非每次执行 // new SyncActVtb().tmain(); -// +//// // new TbsMatchServiceImpl().matchBudget(); // - //费用核销 +// //费用核销 SyncVerificationMain verificationMain = new SyncVerificationMain(); verificationMain.testMain(); -// -// //更新核销中的预算费用占用 +//// +//// //更新核销中的预算费用占用 // new SyncDiscountBudget().sync(); // 更新申请和活动的状态 // 同步isCancel=1的费用释放 - new SyncNotCheckMain().doMain(); +// new SyncNotCheckMain().doMain(); // new TbsMatchServiceImpl().updateStatus(); diff --git a/src/main/java/com/demo/Application3.java b/src/main/java/com/demo/Application3.java new file mode 100644 index 0000000..e57391e --- /dev/null +++ b/src/main/java/com/demo/Application3.java @@ -0,0 +1,228 @@ +package com.demo; + +import com.demo.cost.TbsMapper; +import com.demo.cost.entity.JslBmsRegion; +import com.demo.cost.entity.JslTbsBudgetLog; +import com.demo.t20230616.CenterInfoDto; +import com.demo.t20230616.JslBmsCenter; +import com.demo.t20230616.JslTbsBudget; +import com.demo.t20230616.JslTbsScheduleItemBudget; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.noear.wood.DbContext; + +import java.math.BigDecimal; +import java.sql.SQLException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; + +/** + * @author YenHex + * @since 2023/3/22 + */ +@Slf4j +public class Application3 { + + DbContext xltDbContext = TbsMapper.getXltDbContext(); + DbContext jslDbContext = TbsMapper.getJslDbContext(); + + private final String tbs_budget = "tbs_budget"; + private final String tbs_budget_condition = "tbs_budget_condition"; + private final String tbs_schedule_item_budget = "tbs_schedule_item_budget"; + private final String bms_cost_center = "bms_cost_center"; + private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public static void main(String[] args) { + new Application3().buildBudgetRegion(); + } + + @SneakyThrows + public void test(){ + + } + + @SneakyThrows + private void buildBudgetCenter(){ + String sqlcenter = "select g.center_type,g.center_id from tbs_cost_apply a left join tbs_activity_center_goods g" + + " on a.id = g.cost_apply_id where g.act_start_date < '2023-01-01' and center_type = 'center' GROUP BY g.center_type,g.center_id "; + + String sql_center = "select * from bms_cost_center where del_flag = 0"; + List bmsCenterList = jslDbContext.sql(sql_center).getList(JslBmsCenter.class); + + List> centerlist = jslDbContext.sql(sqlcenter).getMapList(); + + for(Map map:centerlist){ + + String centerType = (String)map.get("center_type"); + String centerId = (String)map.get("center_id"); + + CenterInfoDto centerDto = null; + if(centerDto==null){ + for (JslBmsCenter bmsCenter : bmsCenterList) { + if(centerId.equals(bmsCenter.getId().toString())){ + centerDto = new CenterInfoDto(); + centerDto.setId(bmsCenter.getId()+""); + centerDto.setCode(bmsCenter.getCode()); + centerDto.setName(bmsCenter.getName()); + centerDto.setType("center"); + break; + } + } + } + + JslTbsBudget tbsBudget = new JslTbsBudget(); + tbsBudget.setBudgetCode("2022"+centerDto.getName()+"全年"); + tbsBudget.setBudgetState(0); + tbsBudget.setSubjectId(0L); + tbsBudget.setSubjectCode(""); + tbsBudget.setSubjectName(""); + tbsBudget.setCenterId(centerDto.getId()); + tbsBudget.setCenterType(centerDto.getType()); + tbsBudget.setCenterCode(centerDto.getCode()); + tbsBudget.setCenterName(centerDto.getName()); + tbsBudget.setScheduleId(5L); + tbsBudget.setScheduleCode("2022year"); + tbsBudget.setScheduleName("2022年年度预算"); + tbsBudget.setConditionFlag(0); + tbsBudget.setTenantId("001"); + try { + long tbsBudgetId = jslDbContext.table(tbs_budget).setEntity(tbsBudget).insert(); + JslTbsScheduleItemBudget itemBudget = new JslTbsScheduleItemBudget(); + itemBudget.setScheduleId(5L); + itemBudget.setTenantId("001"); + itemBudget.setBudgetAmount(BigDecimal.ZERO); + itemBudget.setItemName("2022年"); + itemBudget.setStartDate("2022-01-01"); + itemBudget.setEndDate("2022-12-31"); + itemBudget.setScheduleItemId(11L); + itemBudget.setBudgetId(tbsBudgetId); + long itemBudgetId = jslDbContext.table(tbs_schedule_item_budget).setEntity(itemBudget).insert(); + + JslTbsBudgetLog budgetLog = new JslTbsBudgetLog(); + budgetLog.setBudgetId(itemBudget.getBudgetId()); + budgetLog.setBudgetCode(tbsBudget.getBudgetCode()); + budgetLog.setOptType(0); + budgetLog.setOptUserId("0"); + budgetLog.setOptUserName("系统导入"); + budgetLog.setOptUserCode("system_his2022"); + budgetLog.setAmount(BigDecimal.ZERO); + budgetLog.setScheduleId(itemBudget.getScheduleId()); + budgetLog.setScheduleItemId(itemBudget.getScheduleItemId()); + budgetLog.setScheduleItemBudgetId(itemBudgetId); + budgetLog.setItemName(itemBudget.getItemName()); + budgetLog.setStartDate(LocalDateTime.parse("2022-01-01 00:00:00",formatter)); + budgetLog.setEndDate(LocalDateTime.parse("2022-12-31 00:00:00",formatter)); + + budgetLog.setSubjectId(0L); + budgetLog.setSubjectCode(""); + budgetLog.setSubjectName(""); + budgetLog.setCenterType(tbsBudget.getCenterType()); + budgetLog.setCenterId(tbsBudget.getCenterId()); + budgetLog.setCenterCode(tbsBudget.getCenterCode()); + budgetLog.setCenterName(tbsBudget.getCenterName()); + budgetLog.setRollbackFlag(0); + budgetLog.setMigrateFlag(0); + budgetLog.setTenantId("001"); + + jslDbContext.table("tbs_budget_log").setEntity(budgetLog).insert(); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + } + } + + @SneakyThrows + private void buildBudgetRegion(){ + String sqlcenter = "select g.center_type,g.center_id from tbs_cost_apply a left join tbs_activity_center_goods g " + + "on a.id = g.cost_apply_id where g.act_start_date < '2023-01-01' and center_type = 'saleRegion' GROUP BY g.center_type,g.center_id "; + + String sql_sale_region = "select * from bms_region where del_flag = 0"; + List saleRegionList = jslDbContext.sql(sql_sale_region).getList(JslBmsRegion.class); + + List> centerlist = jslDbContext.sql(sqlcenter).getMapList(); + for(Map map:centerlist){ + String centerType = (String)map.get("center_type"); + String centerId = (String)map.get("center_id"); + + CenterInfoDto centerDto = null; + if(centerDto==null){ + for (JslBmsRegion bmsRegion : saleRegionList) { + if(centerId.equals(bmsRegion.getId())){ + centerDto = new CenterInfoDto(); + centerDto.setId(bmsRegion.getId()); + centerDto.setCode(bmsRegion.getCode()); + centerDto.setName(bmsRegion.getName()); + centerDto.setType("saleRegion"); + break; + } + } + } + + String tbsBudgetSql = "select * from tbs_budget where schedule_id = 5 and center_type=? and center_id =?"; + List> count = jslDbContext.sql(tbsBudgetSql,centerType,centerId).getMapList(); + if(count.size()>0){ + continue; + } + JslTbsBudget tbsBudget = new JslTbsBudget(); + tbsBudget.setBudgetCode("2022"+centerDto.getName()+"全年"); + tbsBudget.setBudgetState(0); + tbsBudget.setSubjectId(0L); + tbsBudget.setSubjectCode(""); + tbsBudget.setSubjectName(""); + tbsBudget.setCenterId(centerDto.getId()); + tbsBudget.setCenterType(centerDto.getType()); + tbsBudget.setCenterCode(centerDto.getCode()); + tbsBudget.setCenterName(centerDto.getName()); + tbsBudget.setScheduleId(5L); + tbsBudget.setScheduleCode("2022year"); + tbsBudget.setScheduleName("2022年年度预算"); + tbsBudget.setConditionFlag(0); + tbsBudget.setTenantId("001"); + try { + long tbsBudgetId = jslDbContext.table(tbs_budget).setEntity(tbsBudget).insert(); + JslTbsScheduleItemBudget itemBudget = new JslTbsScheduleItemBudget(); + itemBudget.setScheduleId(5L); + itemBudget.setTenantId("001"); + itemBudget.setBudgetAmount(BigDecimal.ZERO); + itemBudget.setItemName("2022年"); + itemBudget.setStartDate("2022-01-01"); + itemBudget.setEndDate("2022-12-31"); + itemBudget.setScheduleItemId(11L); + itemBudget.setBudgetId(tbsBudgetId); + long itemBudgetId = jslDbContext.table(tbs_schedule_item_budget).setEntity(itemBudget).insert(); + + JslTbsBudgetLog budgetLog = new JslTbsBudgetLog(); + budgetLog.setBudgetId(itemBudget.getBudgetId()); + budgetLog.setBudgetCode(tbsBudget.getBudgetCode()); + budgetLog.setOptType(0); + budgetLog.setOptUserId("0"); + budgetLog.setOptUserName("系统导入"); + budgetLog.setOptUserCode("system_his2022"); + budgetLog.setAmount(BigDecimal.ZERO); + budgetLog.setScheduleId(itemBudget.getScheduleId()); + budgetLog.setScheduleItemId(itemBudget.getScheduleItemId()); + budgetLog.setScheduleItemBudgetId(itemBudgetId); + budgetLog.setItemName(itemBudget.getItemName()); + budgetLog.setStartDate(LocalDateTime.parse("2022-01-01 00:00:00",formatter)); + budgetLog.setEndDate(LocalDateTime.parse("2022-12-31 00:00:00",formatter)); + + budgetLog.setSubjectId(0L); + budgetLog.setSubjectCode(""); + budgetLog.setSubjectName(""); + budgetLog.setCenterType(tbsBudget.getCenterType()); + budgetLog.setCenterId(tbsBudget.getCenterId()); + budgetLog.setCenterCode(tbsBudget.getCenterCode()); + budgetLog.setCenterName(tbsBudget.getCenterName()); + budgetLog.setRollbackFlag(0); + budgetLog.setMigrateFlag(0); + budgetLog.setTenantId("001"); + + jslDbContext.table("tbs_budget_log").setEntity(budgetLog).insert(); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + } + } +} diff --git a/src/main/java/com/demo/cost/SyncVerificationMain.java b/src/main/java/com/demo/cost/SyncVerificationMain.java index 0d46bbf..b8a3aa5 100644 --- a/src/main/java/com/demo/cost/SyncVerificationMain.java +++ b/src/main/java/com/demo/cost/SyncVerificationMain.java @@ -105,8 +105,63 @@ public class SyncVerificationMain { this.removeCostIds(errorCostIds); int count = 1; + + //------------------------------------------------------------------// + List costApplyCodes = costList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + String sql_activity_list ="select * from tbs_activity where cost_apply_id in ("+costApplyCodes.stream().collect(Collectors.joining(","))+")"; + List tbsActivitiesAll = jslDbContext.sql(sql_activity_list).getList(JslTbsActivity.class); + + Map> tbsActivitiesMap = tbsActivitiesAll.stream().collect(Collectors.groupingBy(JslTbsActivity::getCostApplyId)); + + List tbsActivitiesCodes = tbsActivitiesAll.stream().map(a->a.getActivityCode()).collect(Collectors.toList()); + + String sql_xlt_check_cost = + " SELECT oldlistnumber as activity_code," + + " cmain.number_ AS main_number, " + + " clist.listNumber as list_number, " + + " clist.isYuEBuYuHeXiao not_allow_flag, " + + " clist.pifumoney as apply_amt, " + + " (cList.hexiaomoney + cList.shuiJin) check_pass_amt, " + + " cList.exedate " + + " FROM " + + " costreimbursementList clist " + + " LEFT JOIN costreimbursement cmain " + + " ON clist.mainID = cmain.id " + + " WHERE " + + " cmain.state = '120' " + + " and clist.iscancel = '0' " + + " and clist.iszuofei != 1 "+ + " AND oldlistnumber in ('"+tbsActivitiesCodes.stream().collect(Collectors.joining("','")) +"')";//活动id + + List checkCostItemListAll = xltDbContext.sql(sql_xlt_check_cost).getList(XltCheckCostItem.class); + + Map> checkCostItemListMap = checkCostItemListAll.stream().collect(Collectors.groupingBy(XltCheckCostItem::getActivityCode)); + + + String sql_xlt_check_cost_cancel = + " SELECT oldlistnumber as activity_code," + + " cmain.number_ AS main_number, " + + " clist.listNumber as list_number, " + + " clist.isYuEBuYuHeXiao not_allow_flag, " + + " clist.pifumoney as apply_amt, " + + " (cList.hexiaomoney + cList.shuiJin) check_pass_amt, " + + " cList.exedate " + + " FROM " + + " costreimbursementList clist " + + " LEFT JOIN costreimbursement cmain " + + " ON clist.mainID = cmain.id " + + " WHERE " + + " cmain.state = '120' " + + " and clist.iscancel = '0' " + + " and clist.iszuofei != 1 "+ + " AND oldlistnumber in ('"+tbsActivitiesCodes.stream().collect(Collectors.joining("','")) +"')";//活动id + + List checkCostItemListAllCancel = xltDbContext.sql(sql_xlt_check_cost_cancel).getList(XltCheckCostItem.class); + + Map> checkCostItemListCancelMap = checkCostItemListAllCancel.stream().collect(Collectors.groupingBy(XltCheckCostItem::getActivityCode)); + // 获取活动列表(未释放,以及未完成的) - String sql_activity_list ="select * from tbs_activity where cost_apply_id = ?"; + for (JslTbsCostApply costApply : costList) { System.out.println(count+"/"+costList.size()+" ["+costApply.getId()+"]"); @@ -117,8 +172,10 @@ public class SyncVerificationMain { jslDbContext.sql(sql_cost_sync + costApply.getId()).execute(); // 获取相关的支付单号 - List tbsActivities = jslDbContext.sql(sql_activity_list,costApply.getId().toString()).getList(JslTbsActivity.class); - boolean isOk = buildActivity(jslDbContext, xltDbContext, costApply, tbsActivities); +// List tbsActivities = jslDbContext.sql(sql_activity_list,costApply.getId().toString()).getList(JslTbsActivity.class); + List tbsActivities = tbsActivitiesMap.get(costApply.getId()); + + boolean isOk = buildActivity(jslDbContext, xltDbContext, costApply, tbsActivities,checkCostItemListMap,checkCostItemListCancelMap); //完成标记状态 if(isOk){ String sql_cost_sync_success = "update tbs_cost_apply set vtb_sync = 2 where id = "; @@ -127,37 +184,66 @@ public class SyncVerificationMain { } } - private boolean buildActivity(DbContext jslDbContext, DbContext xltDbContext, JslTbsCostApply costApply, List tbsActivities) throws SQLException { + private boolean buildActivity(DbContext jslDbContext, DbContext xltDbContext, JslTbsCostApply costApply, List tbsActivities, + Map> checkCostItemListMap, + Map> checkCostItemListCancelMap) throws SQLException { for (JslTbsActivity tbsActivity : tbsActivities) { if(tbsActivity.getTotalAmount().compareTo(BigDecimal.ZERO)==0){ continue; } String activityCode = tbsActivity.getActivityCode(); // 获取销路通核销明细 - String sql_xlt_check_cost = - " SELECT " + - " cmain.number_ AS main_number, " + - " clist.listNumber as list_number, " + - " clist.isYuEBuYuHeXiao not_allow_flag, " + - " clist.pifumoney as apply_amt, " + - " (cList.hexiaomoney + cList.shuiJin) check_pass_amt, " + - " cList.exedate " + - " FROM " + - " costreimbursementList clist " + - " LEFT JOIN costreimbursement cmain " + - " ON clist.mainID = cmain.id " + - " WHERE " + - " cmain.state = '120' " + - " and clist.iscancel = '0' " + - " AND oldlistnumber = '"+activityCode+"'";//活动id - - List checkCostItemList = xltDbContext.sql(sql_xlt_check_cost).getList(XltCheckCostItem.class); - - if(checkCostItemList.size()==0){ -// String sql_cost_sync_error_4 = "update tbs_cost_apply set vtb_sync = 4 where id = "; -// jslDbContext.sql(sql_cost_sync_error_4 + costApply.getId()).execute(); - System.out.println("无相关核销,活动编码:"+activityCode); - continue; +// String sql_xlt_check_cost = +// " SELECT oldlistnumber as activity_code," + +// " cmain.number_ AS main_number, " + +// " clist.listNumber as list_number, " + +// " clist.isYuEBuYuHeXiao not_allow_flag, " + +// " clist.pifumoney as apply_amt, " + +// " (cList.hexiaomoney + cList.shuiJin) check_pass_amt, " + +// " cList.exedate " + +// " FROM " + +// " costreimbursementList clist " + +// " LEFT JOIN costreimbursement cmain " + +// " ON clist.mainID = cmain.id " + +// " WHERE " + +// " cmain.state = '120' " + +// " and clist.iscancel = '0' " + +// " and clist.iszuofei != 1 "+ +// " AND oldlistnumber = '"+activityCode+"'";//活动id +// +// List checkCostItemList = xltDbContext.sql(sql_xlt_check_cost).getList(XltCheckCostItem.class); + List checkCostItemList = checkCostItemListMap.get(activityCode); + //申请人取消标识 + Boolean applyRealse = false; + + if(checkCostItemList ==null || checkCostItemList.size()==0){ + //申请人放弃核销 没有iscancel=0,只有iscancel=1 +// String sql_xlt_release_cost = +// " SELECT " + +// " cmain.number_ AS main_number, " + +// " clist.listNumber as list_number, " + +// " clist.isYuEBuYuHeXiao not_allow_flag, " + +// " clist.pifumoney as apply_amt, " + +// " (cList.hexiaomoney + cList.shuiJin) check_pass_amt, " + +// " cList.exedate " + +// " FROM " + +// " costreimbursementList clist " + +// " LEFT JOIN costreimbursement cmain " + +// " ON clist.mainID = cmain.id " + +// " WHERE " + +// " cmain.state = '120' " + +// " and clist.iscancel = '1' " + +// " and clist.iszuofei != 1 "+ +// " AND oldlistnumber = '"+activityCode+"'";//活动id +// List checkCostReleaseItemList = xltDbContext.sql(sql_xlt_release_cost).getList(XltCheckCostItem.class); + List checkCostReleaseItemList = checkCostItemListCancelMap.get(activityCode); + if(checkCostReleaseItemList == null || checkCostReleaseItemList.size()==0) { + System.out.println("无相关核销,活动编码:" + activityCode); + continue; + }else{ + applyRealse = true; + checkCostItemList = checkCostReleaseItemList; + } } String sql_budget_cost_item = "select * from tbs_budget_cost_item where activity_id = ?"; @@ -172,17 +258,21 @@ public class SyncVerificationMain { BigDecimal totalPassAmt = BigDecimal.ZERO; for (int i = 0; i < checkCostItemList.size(); i++) { XltCheckCostItem checkCostItem = checkCostItemList.get(i); - this.saveVerification(i, jslDbContext, currCostItem,tbsActivity, checkCostItem); + if(!applyRealse) { + //申请人取消的话要跳过核销插入,直接释放 + this.saveVerification(i, jslDbContext, currCostItem, tbsActivity, checkCostItem); + } totalApplyAmt = totalApplyAmt.add(checkCostItem.getApplyAmt()); totalPassAmt = totalPassAmt.add(checkCostItem.getCheckPassAmt()); } + // 不再支付 boolean isNotAllow = checkCostItemList.stream().anyMatch(a->a.getNotAllowFlag().equals(1)); //更新主表dto JslTbsActivity updAct = new JslTbsActivity(); //updAct.setId(tbsActivity.getId()); // 释放金额 - if(isNotAllow){ + if(isNotAllow || applyRealse){ // 不再支付返回预算到预算池 BigDecimal totalReleaseAmt = totalApplyAmt.subtract(totalPassAmt); if(totalReleaseAmt.compareTo(BigDecimal.ZERO)>0){ @@ -197,6 +287,9 @@ public class SyncVerificationMain { } } updAct.setUsedAmount(totalPassAmt); + if(totalApplyAmt.compareTo(totalPassAmt)==0){ + updAct.setFinishedFlag(1); + } String sql_update_act_info = SqlCreateUtil.buildUpdateSql(updAct,tbs_activity)+" where id = "+tbsActivity.getId(); jslDbContext.sql(sql_update_act_info).execute(); } diff --git a/src/main/java/com/demo/cost/TbsServiceImpl.java b/src/main/java/com/demo/cost/TbsServiceImpl.java index 732e918..12cef8f 100644 --- a/src/main/java/com/demo/cost/TbsServiceImpl.java +++ b/src/main/java/com/demo/cost/TbsServiceImpl.java @@ -57,7 +57,7 @@ public class TbsServiceImpl { public void removeYiDong(){ DbContext xltDbContext = TbsMapper.getXltDbContext(); List array = xltDbContext.sql("select reportNumber from emp_tpmYiDongMsg where isGuiDang = 1 " + - " and rowCreateDate>'2023-06-14' GROUP BY reportNumber").getArray("reportNumber"); + " and rowCreateDate>'2023-08-08' GROUP BY reportNumber").getArray("reportNumber"); //array.forEach(System.out::println); removeCostCode(array); } diff --git a/src/main/java/com/demo/cost/entity/XltCheckCostItem.java b/src/main/java/com/demo/cost/entity/XltCheckCostItem.java index 8fdc218..1f35bda 100644 --- a/src/main/java/com/demo/cost/entity/XltCheckCostItem.java +++ b/src/main/java/com/demo/cost/entity/XltCheckCostItem.java @@ -11,7 +11,8 @@ import java.util.Date; **/ @Data public class XltCheckCostItem { - + //活动编码 + String activityCode; /** * 核销主编码 */ diff --git a/src/main/java/com/demo/t20230704/SyncNotCheckMain.java b/src/main/java/com/demo/t20230704/SyncNotCheckMain.java index 1b458c2..b249eed 100644 --- a/src/main/java/com/demo/t20230704/SyncNotCheckMain.java +++ b/src/main/java/com/demo/t20230704/SyncNotCheckMain.java @@ -46,18 +46,29 @@ public class SyncNotCheckMain { " WHERE " + " cmain.state = '120' " + " and clist.iscancel = '1' " + + " and clist.iszuofei != 1 "+ + " and clist.iscancelremark = '申请人主动取消核销' "+ " AND oldlistnumber = ?"; - + String oldlistnumberSql = "SELECT " + + " DISTINCT oldlistnumber " + + "FROM " + + " [dbo].[costreimbursementList] " + + "WHERE " + + " [oldreportnumber] > N'202300000000' " + + " AND [iscancelremark] LIKE N'%申请人主动取消核销%' " + + " AND [isZuoFei] <> N'1' " + + " AND [exedate] > N'2022-12-01 00:00:00' "; + /** 统计活动的不予核销 */ - String sql_sum_release = "SELECT sum(used_amount) FROM `vtb_fund_flow` where activity_id = ? and fund_type = 'release'"; + String sql_sum_release = "SELECT sum(used_amount) FROM `vtb_fund_flow` where activity_id = ? and fund_type = 'release' and del_flag != 1"; /** 删除历史记录 */ String del_fund_flow = "delete from vtb_fund_flow where remark = 'byCancel_1' and activity_id = ?"; String del_budget_log = "delete from tbs_budget_log where remark = 'byCancel_1' and activity_id = ?"; - String sql_find_activity_release = "SELECT * FROM `vtb_fund_flow` where activity_id = ? and fund_type = 'release'"; + String sql_find_activity_release = "SELECT * FROM `vtb_fund_flow` where activity_id = ? and fund_type = 'release' and del_flag != 1"; @Test @SneakyThrows @@ -67,11 +78,15 @@ public class SyncNotCheckMain { List activity0704List = jslDbContext.sql(sql_cost_not_do_cancel).getList(Activity0704.class); activity0704List.forEach(a->a.setCostCode(a.getActivityCode().split("_")[0])); Map> map = activity0704List.stream().collect(Collectors.groupingBy(Activity0704::getCostCode)); + List oldListNumbers = xltDbContext.sql(oldlistnumberSql).getArray("oldlistnumber"); int totalCost = map.keySet().size(); int count = 1; for (String costCode : map.keySet()) { List actList = map.get(costCode); for (Activity0704 tbsActivity : actList) { + if(!oldListNumbers.contains(tbsActivity.getActivityCode())){ + continue; + } List checkCostItemList = xltDbContext.sql(sql_xlt_check_cost,tbsActivity.getActivityCode()).getList(XltCheckCostItem.class); for (XltCheckCostItem costItem : checkCostItemList) {