diff --git a/src/main/java/com/demo/Application.java b/src/main/java/com/demo/Application.java index 5c79451..3b91e77 100644 --- a/src/main/java/com/demo/Application.java +++ b/src/main/java/com/demo/Application.java @@ -1,6 +1,7 @@ package com.demo; import com.demo.cost.SyncVerificationMain; +import com.demo.cost.TbsMatchServiceImpl; import com.demo.cost.TbsServiceImpl; import com.demo.dto.DaoContext; import com.demo.t20230616.SyncBudget; @@ -33,13 +34,17 @@ public class Application { // } //特殊的命中修改成本中心 - SyncMatchActCenter matchActCenter = new SyncMatchActCenter(); - matchActCenter.tmain(); +// SyncMatchActCenter matchActCenter = new SyncMatchActCenter(); +// matchActCenter.tmain(); + +// 预算匹配 + new TbsMatchServiceImpl().matchBudget(); //TODO 根据活动编码,更新申请vtb_flag=1,重新录入核销 // SyncActVtb actVtb = new SyncActVtb(); // actVtb.tmain(); + //费用核销 // SyncVerificationMain verificationMain = new SyncVerificationMain(); // verificationMain.testMain(); @@ -48,6 +53,9 @@ public class Application { // SyncDiscountBudget syncDiscountBudget = new SyncDiscountBudget(); // syncDiscountBudget.sync();; + //更新申请和活动的状态 + new TbsMatchServiceImpl().updateStatus(); + } diff --git a/src/main/java/com/demo/cost/TbsMatchServiceImpl.java b/src/main/java/com/demo/cost/TbsMatchServiceImpl.java new file mode 100644 index 0000000..6f6e15e --- /dev/null +++ b/src/main/java/com/demo/cost/TbsMatchServiceImpl.java @@ -0,0 +1,312 @@ +package com.demo.cost; + +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.noear.wood.DbContext; + +@Slf4j +public class TbsMatchServiceImpl { + + @SneakyThrows + public void updateStatus(){ + DbContext jslContext = TbsMapper.getJslDbContext(); + + String sqlUpdate1 = "update tbs_activity t left join tbs_cost_apply a on a.id = t.cost_apply_id set t.activity_state = 3 where a.xlt_sync = 2"; + String sqlUpdate2 = "update tbs_activity t left join tbs_cost_apply a on a.id = t.cost_apply_id set t.activity_state = 4,t.release_flag =1,t.finished_flag =1 where t.release_amount > 0 and a.xlt_sync = 2 "; + String sqlUpdate3 = "update tbs_activity t left join tbs_cost_apply a on a.id = t.cost_apply_id set t.activity_state = 2,t.finished_flag =1 where t.total_amount = t.used_amount and a.xlt_sync = 2 "; + String sqlUpdate4 = "update tbs_cost_apply set charge_state = 3 where xlt_sync = 2"; + + jslContext.sql(sqlUpdate1).execute(); + jslContext.sql(sqlUpdate2).execute(); + jslContext.sql(sqlUpdate3).execute(); + jslContext.sql(sqlUpdate4).execute(); + + } + + @SneakyThrows + public void matchBudget(){ + DbContext jslContext = TbsMapper.getJslDbContext(); + + String sql = "UPDATE tbs_activity_center_goods g " + + "LEFT JOIN bms_cost_center c ON g.center_id = c.id " + + "SET g.center_code = c.`code`, g.center_name = c.`name` " + + "WHERE g.center_type = 'center' and g.sync_budget =1 "; + + String sql2 = "UPDATE tbs_activity_center_goods g " + + "LEFT JOIN bms_region c ON g.center_id = c.id " + + "SET g.center_code = c.`code`, g.center_name = c.`name` " + + "WHERE g.center_type = 'saleRegion' and g.sync_budget =1 "; + + jslContext.sql(sql).execute(); + jslContext.sql(sql2).execute(); + + String sql_drop = "drop table temp_ids"; + + jslContext.sql(sql_drop).execute(); + + String sql_temp_create = "CREATE TABLE temp_ids " + + "SELECT g.id " + + "FROM tbs_activity_center_goods g " + + "LEFT JOIN tbs_budget b ON g.center_id = b.center_id " + + "LEFT JOIN tbs_budget_condition c ON b.id = c.budget_id AND g.target_level_path_ids LIKE CONCAT(c.target_level_path_ids, '_%') " + + "LEFT JOIN tbs_schedule_item_budget i ON b.id = i.budget_id AND g.act_start_date BETWEEN i.start_date AND i.end_date " + + "WHERE g.act_start_date >= '2023-01-01' " + + "AND c.id IS NOT NULL " + + "AND i.id IS NOT NULL"; + + jslContext.sql(sql_temp_create).execute(); + + String updateSql1 = "UPDATE tbs_activity_center_goods g SET g.sync_budget = 0"; + + String updateSql2 = "UPDATE tbs_activity_center_goods g LEFT JOIN temp_ids i on g.id = i.id " + + "SET g.sync_budget = 1 where i.id is not null"; + + String updateSql3 = "UPDATE tbs_activity_center_goods g SET g.sync_budget = 1 where g.center_amount = 0"; + + String updateSql4 = "UPDATE tbs_cost_apply a SET a.new_budget_sync = 0 where a.budget_sync = 0"; + String updateSql5 = "UPDATE tbs_cost_apply AS a " + + "LEFT JOIN tbs_activity_center_goods AS g ON a.id = g.cost_apply_id " + + "SET a.new_budget_sync = 3 " + + "WHERE g.sync_budget = 0 and a.xlt_sync = 2"; + String updateSql6 = "UPDATE tbs_cost_apply a SET a.budget_sync = 2 where a.new_budget_sync != 3 and a.budget_sync = 0 and a.xlt_sync = 2"; + + jslContext.sql(updateSql1).execute(); + jslContext.sql(updateSql2).execute(); + jslContext.sql(updateSql3).execute(); + jslContext.sql(updateSql4).execute(); + jslContext.sql(updateSql5).execute(); + jslContext.sql(updateSql6).execute(); + + String insertSql = "INSERT INTO tbs_budget_cost_item ( " + + " center_goods_code, " + + " cost_apply_id, " + + " activity_id, " + + " activity_code, " + + " subject_id, " + + " subject_code, " + + " subject_name, " + + " center_type, " + + " center_id, " + + " center_code, " + + " center_name, " + + " center_amount, " + + " center_rate, " + + " center_goods_amount, " + + " center_goods_rate, " + + " target_type, " + + " target_id, " + + " target_code, " + + " target_name, " + + " target_level_path_ids, " + + " target_level_path_names, " + + " remark, " + + " create_time, " + + " update_time, " + + " tenant_id, " + + " create_by, " + + " update_by, " + + " del_flag, " + + " act_start_date, " + + " act_end_date, " + + " pre_start_date, " + + " pre_end_date, " + + " pre_check_date, " + + " schedule_id, " + + " schedule_item_id, " + + " schedule_item_name, " + + " schedule_item_amount, " + + " schedule_item_amount_used, " + + " schedule_item_amount_apply, " + + " budget_id, " + + " schedule_item_budget_id, " + + " center_good_item_id, " + + " invalid_flag, " + + " supplier_id, " + + " supplier_code, " + + " supplier_name " + + ") " + + "SELECT " + + " g.center_goods_code, " + + " g.cost_apply_id, " + + " g.activity_id, " + + " g.activity_code, " + + " g.subject_id, " + + " g.subject_code, " + + " g.subject_name, " + + " g.center_type, " + + " g.center_id, " + + " g.center_code, " + + " g.center_name, " + + " g.center_amount, " + + " g.center_rate, " + + " g.center_goods_amount, " + + " g.center_goods_rate, " + + " g.target_type, " + + " g.target_id, " + + " g.target_code, " + + " g.target_name, " + + " g.target_level_path_ids, " + + " g.target_level_path_names, " + + " g.remark, " + + " g.create_time, " + + " g.update_time, " + + " g.tenant_id, " + + " g.create_by, " + + " g.update_by, " + + " g.del_flag, " + + " g.act_start_date, " + + " g.act_end_date, " + + " g.pre_start_date, " + + " g.pre_end_date, " + + " g.pre_check_date, " + + " i.schedule_id, " + + " i.schedule_item_id, " + + " i.item_name as schedule_item_name, " + + " i.budget_amount as schedule_item_amount, " + + " 0 as schedule_item_amount_used, " + + " g.center_amount as schedule_item_amount_apply, " + + " i.budget_id, " + + " i.id AS schedule_item_budget_id, " + + " g.id AS center_good_item_id, " + + " 0 as invalid_flag, " + + " g.supplier_id, " + + " g.supplier_code, " + + " g.supplier_name " + + "FROM " + + " tbs_activity_center_goods g " + + " LEFT JOIN tbs_budget b ON g.center_id = b.center_id " + + " LEFT JOIN tbs_budget_condition c ON b.id = c.budget_id AND g.target_level_path_ids LIKE CONCAT(c.target_level_path_ids, '_%') " + + " LEFT JOIN tbs_schedule_item_budget i ON b.id = i.budget_id AND g.act_start_date BETWEEN i.start_date AND i.end_date " + + " left join tbs_cost_apply a on a.id = g.cost_apply_id " + + "WHERE " + + " i.id IS NOT NULL " + + " AND c.id IS NOT NULL " + + " and a.budget_sync = 2"; + jslContext.sql(insertSql).execute(); + + String insertSql2 = "INSERT INTO tbs_budget_log ( " + + " budget_id, " + + " budget_code, " + + " rollback_flag, " + + " migrate_flag, " + + " opt_type, " + + " opt_user_id, " + + " opt_user_name, " + + " opt_user_code, " + + " amount, " + + " schedule_id, " + + " schedule_item_id, " + + " schedule_item_budget_id, " + + " schedule_org_id, " + + " schedule_item_org_id, " + + " schedule_item_budget_org_id, " + + " item_name, " + + " start_date, " + + " end_date, " + + " subject_id, " + + " subject_code, " + + " subject_name, " + + " center_type, " + + " center_id, " + + " center_code, " + + " center_name, " + + " center_org_id, " + + " center_org_code, " + + " center_org_name, " + + " supplier_id, " + + " supplier_code, " + + " supplier_name, " + + " activity_id, " + + " activity_code, " + + " activity_theme, " + + " cost_apply_id, " + + " cost_apply_code, " + + " cost_apply_theme, " + + " policy_id, " + + " policy_code, " + + " policy_title, " + + " policy_item_id, " + + " policy_item_code, " + + " remark, " + + " target_type, " + + " target_id, " + + " target_code, " + + " target_name, " + + " target_level_path_ids, " + + " target_level_path_names, " + + " tenant_id, " + + " del_flag, " + + " migrate_time " + + ") " + + "SELECT " + + " i.budget_id, " + + " b.budget_code, " + + " 0 as rollback_flag, " + + " 0 as migrate_flag, " + + " 1 as opt_type, " + + " 0 as opt_user_id, " + + " '系统管理员' as opt_user_name, " + + " 0 as opt_user_code, " + + " -g.center_amount as amount, " + + " i.schedule_id, " + + " i.schedule_item_id, " + + " i.id as schedule_item_budget_id, " + + " NULL, " + + " NULL, " + + " NULL, " + + " i.item_name, " + + " g.act_start_date, " + + " g.act_end_date, " + + " g.subject_id, " + + " g.subject_code, " + + " g.subject_name, " + + " g.center_type, " + + " g.center_id, " + + " g.center_code, " + + " g.center_name, " + + " NULL, " + + " NULL, " + + " NULL, " + + " g.supplier_id, " + + " g.supplier_code, " + + " g.supplier_name, " + + " g.activity_id, " + + " g.activity_code, " + + " act.act_title, " + + " g.cost_apply_id, " + + " a.`code`, " + + " a.charge_theme, " + + " NULL, " + + " NULL, " + + " NULL, " + + " NULL, " + + " NULL, " + + " NULL, " + + " g.target_type, " + + " g.target_id, " + + " g.target_code, " + + " g.target_name, " + + " g.target_level_path_ids, " + + " g.target_level_path_names, " + + " '001', " + + " '0', " + + " NULL " + + "FROM " + + " tbs_activity_center_goods g " + + " LEFT JOIN tbs_budget b ON g.center_id = b.center_id " + + " LEFT JOIN tbs_budget_condition c ON b.id = c.budget_id AND g.target_level_path_ids LIKE CONCAT(c.target_level_path_ids, '_%') " + + " LEFT JOIN tbs_schedule_item_budget i ON b.id = i.budget_id AND g.act_start_date BETWEEN i.start_date AND i.end_date " + + " LEFT JOIN tbs_cost_apply a ON a.id = g.cost_apply_id " + + " LEFT JOIN tbs_activity act ON act.id = g.activity_id " + + "WHERE " + + " i.id IS NOT NULL " + + " AND c.id IS NOT NULL " + + " AND a.budget_sync =2"; + jslContext.sql(insertSql2).execute(); + + String lastUpdateSql = "UPDATE tbs_cost_apply a SET a.budget_sync = 1 where a.new_budget_sync != 3 and a.budget_sync = 2 and xlt_sync =2"; + jslContext.sql(lastUpdateSql).execute(); + + + } +} diff --git a/src/main/java/com/demo/cost/TbsServiceImpl.java b/src/main/java/com/demo/cost/TbsServiceImpl.java index 1168390..02100dc 100644 --- a/src/main/java/com/demo/cost/TbsServiceImpl.java +++ b/src/main/java/com/demo/cost/TbsServiceImpl.java @@ -303,8 +303,8 @@ public class TbsServiceImpl { activity.setCostPassFlag(1); activity.setActTitle(costItem.getRemark()); activity.setSupplierId(supplierId); - activity.setSupplierCode(costItem.getCusCode()); - activity.setSupplierName(costItem.getCusName()); + activity.setSupplierCode(xltCost.getCusCode()); + activity.setSupplierName(xltCost.getCusName()); activity.setActStartDate(costItem.getActStartTime()); activity.setActEndDate(costItem.getActEndTime()); activity.setPreStartDate(costItem.getActStartTime()); @@ -353,6 +353,7 @@ public class TbsServiceImpl { targetName = goodSpu.getName(); levelIds = goodSpu.getCategoryFirst() + "_" + goodSpu.getCategorySecond() + "_" + goodSpu.getCategoryLast(); levelNames = category1.getName() + "_" + category2.getName() + "_" + category3.getName(); + targetId = goodSpu.getId(); } } else if (costItem.getCateLv3() != null) { JslGoodsCategory category1 = null; @@ -378,6 +379,7 @@ public class TbsServiceImpl { targetName = category3.getName(); levelIds = category1.getId() + "_" + category2.getId() + "_" + category3.getId(); levelNames = category1.getName() + "_" + category2.getName() + "_" + category3.getName(); + targetId = category3.getId(); } else if (costItem.getCateLv2() != null) { JslGoodsCategory category1 = null; JslGoodsCategory category2 = null; @@ -397,6 +399,7 @@ public class TbsServiceImpl { targetName = category2.getName(); levelIds = category1.getId() + "_" + category2.getId(); levelNames = category1.getName() + "_" + category2.getName(); + targetId = category2.getId(); } else if (costItem.getCateLv1() != null) { JslGoodsCategory category1 = null; for (JslGoodsCategory category : categoryList) { @@ -409,6 +412,7 @@ public class TbsServiceImpl { targetName = category1.getName(); levelIds = category1.getId() + ""; levelNames = category1.getName(); + targetId = category1.getId(); } activityGoods.setTargetType(targetType); activityGoods.setTargetId(targetId); @@ -444,6 +448,10 @@ public class TbsServiceImpl { centerGoods.setCenterRate(new BigDecimal("100")); centerGoods.setCenterType("customer"); centerGoods.setTenantId("001"); + centerGoods.setSupplierId(supplierId); + centerGoods.setSupplierCode(costItem.getCusCode()); + centerGoods.setSupplierName(costItem.getCusName()); + // if (costItem.getCenterId().equals(xltCost.getCusId())) { // centerGoods.setCenterId(supplierId + ""); // } else { @@ -451,6 +459,7 @@ public class TbsServiceImpl { centerGoods.setCenterType("saleRegion"); centerGoods.setCenterId(saleRegion.getId()); centerGoods.setCenterName(saleRegion.getName()); + centerGoods.setCenterCode(saleRegion.getCode()); }else { centerGoods.setCenterId("__"+supplierId); } @@ -459,11 +468,7 @@ public class TbsServiceImpl { // ).getItem(JslSupplier.class); // centerGoods.setCenterId(centerSuppliers.getId() + ""); // } - centerGoods.setSupplierId(supplierId); - centerGoods.setSupplierCode(costItem.getCusCode()); - centerGoods.setSupplierName(costItem.getCusName()); - centerGoods.setCenterCode(costItem.getCenterCode()); - centerGoods.setCenterName(costItem.getCenterName()); + //todo 同步核销时更新 //centerGoods.setUsedAmount(totalCheckMoney); centerGoods.setUsedAmount(BigDecimal.ZERO); @@ -516,6 +521,8 @@ public class TbsServiceImpl { activityCenter.setCenterRate(new BigDecimal("100")); activityCenter.setCenterType("customer"); activityCenter.setTenantId("001"); + activityCenter.setCenterCode(costItem.getCenterCode()); + activityCenter.setCenterName(costItem.getCenterName()); // if (costItem.getCenterId().equals(xltCost.getCusId())) { // activityCenter.setCenterId(supplierId + ""); // } else { @@ -523,6 +530,7 @@ public class TbsServiceImpl { activityCenter.setCenterType("saleRegion"); activityCenter.setCenterId(saleRegion.getId()); activityCenter.setCenterName(saleRegion.getName()); + activityCenter.setCenterCode(saleRegion.getCode()); }else { activityCenter.setCenterId("__"+supplierId); } @@ -530,8 +538,7 @@ public class TbsServiceImpl { // ).getItem(JslSupplier.class); // activityCenter.setCenterId(centerSuppliers.getId() + ""); // } - activityCenter.setCenterCode(costItem.getCenterCode()); - activityCenter.setCenterName(costItem.getCenterName()); + //todo 同步时更新 //activityCenter.setUsedAmount(totalCheckMoney); activityCenter.setUsedAmount(BigDecimal.ZERO);