Browse Source

isCancel=1的费用释放

2022
YenHex 2 years ago
parent
commit
0fe97a17b1
  1. 16
      src/main/java/com/demo/Application.java
  2. 12
      src/main/java/com/demo/cost/TbsMapper.java
  3. 2
      src/main/java/com/demo/cost/TbsServiceImpl.java
  4. 66
      src/main/java/com/demo/t20230704/Activity0704.java
  5. 147
      src/main/java/com/demo/t20230704/SyncNotCheckMain.java

16
src/main/java/com/demo/Application.java

@ -25,13 +25,13 @@ public class Application {
Integer y = Integer.parseInt(year); Integer y = Integer.parseInt(year);
Integer m = Integer.parseInt(month); Integer m = Integer.parseInt(month);
// TbsServiceImpl service = new TbsServiceImpl(); TbsServiceImpl service = new TbsServiceImpl();
// service.removeYiDong(); //移除异动 // service.removeYiDong(); //移除异动
//费用申请 //费用申请
// for (int i = 1; i < 13; i++) { for (int i = 1; i < 13; i++) {
// service.syncCost(y,i); service.syncCost(y,i);
// } }
//特殊的命中修改成本中心 //特殊的命中修改成本中心
// SyncMatchActCenter matchActCenter = new SyncMatchActCenter(); // SyncMatchActCenter matchActCenter = new SyncMatchActCenter();
@ -46,12 +46,12 @@ public class Application {
//费用核销 //费用核销
// SyncVerificationMain verificationMain = new SyncVerificationMain(); SyncVerificationMain verificationMain = new SyncVerificationMain();
// verificationMain.testMain(); verificationMain.testMain();
//更新核销中的预算费用占用 //更新核销中的预算费用占用
// SyncDiscountBudget syncDiscountBudget = new SyncDiscountBudget(); SyncDiscountBudget syncDiscountBudget = new SyncDiscountBudget();
// syncDiscountBudget.sync();; syncDiscountBudget.sync();;
//更新申请和活动的状态 //更新申请和活动的状态
new TbsMatchServiceImpl().updateStatus(); new TbsMatchServiceImpl().updateStatus();

12
src/main/java/com/demo/cost/TbsMapper.java

@ -15,10 +15,14 @@ public class TbsMapper {
public static DbContext getJslDbContext() { public static DbContext getJslDbContext() {
if (jslCtx == null) { if (jslCtx == null) {
jslCtx = new DbContext("test", // jslCtx = new DbContext("test",
"jdbc:mysql://192.168.0.9:3306/jsl_mall_qs_dev2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", // "jdbc:mysql://192.168.0.9:3306/jsl_mall_qs_dev2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true",
"kpjsl", // "kpjsl",
"123456"); // "123456");
jslCtx = new DbContext("pro",
"jdbc:mysql://183.56.249.148/jsl_cost_base?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true",
"root",
"@Jsl2282125");
//jslCtx = new DbContext("test", "jdbc:mysql://183.234.29.228:3333/jsl_mall_qs_dev2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", "kpjsl", "123456"); //jslCtx = new DbContext("test", "jdbc:mysql://183.234.29.228:3333/jsl_mall_qs_dev2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", "kpjsl", "123456");
} }
return jslCtx; return jslCtx;

2
src/main/java/com/demo/cost/TbsServiceImpl.java

@ -82,7 +82,7 @@ public class TbsServiceImpl {
@Test @Test
public void removeAction(){ public void removeAction(){
String[] arr = new String[]{ String[] arr = new String[]{
"19301" "19743"
}; };
this.removeByCostIds(Arrays.asList(arr)); this.removeByCostIds(Arrays.asList(arr));
} }

66
src/main/java/com/demo/t20230704/Activity0704.java

@ -0,0 +1,66 @@
package com.demo.t20230704;
import lombok.Data;
import java.util.Date;
/**
* @author YenHex
* @since 2023/7/4
**/
@Data
public class Activity0704 {
private String costCode;
/**
* id
*/
private Long id;
/**
* 编码
*/
private String activityCode;
/**
* 活动状态0-待核销1-审批中2-完成3-冻结;4-已释放
*/
private Integer activityState;
/**
* 费用申请id
*/
private Long costApplyId;
/**
* 费用通过时间
*/
private Date costPassTime;
/**
* 费用通过标识用于已申请费用活动列表
*/
private Integer costPassFlag;
/**
* 活动简述及目的
*/
private String actTitle;
/**
* 客户id
*/
private Long supplierId;
/**
* 客户编码
*/
private String supplierCode;
/**
* 客户名称
*/
private String supplierName;
}

147
src/main/java/com/demo/t20230704/SyncNotCheckMain.java

@ -0,0 +1,147 @@
package com.demo.t20230704;
import com.demo.cost.TbsMapper;
import com.demo.cost.entity.JslTbsActivity;
import com.demo.cost.entity.JslTbsBudgetCostItem;
import com.demo.cost.entity.JslVtbFundFlow;
import com.demo.cost.entity.XltCheckCostItem;
import lombok.SneakyThrows;
import org.junit.Test;
import org.noear.wood.DbContext;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author YenHex
* @since 2023/7/4
**/
public class SyncNotCheckMain {
/** 查询未完成的活动 */
String sql_cost_not_do_cancel = "select " +
" act.* "+
" from tbs_activity act " +
" left join tbs_cost_apply cost on act.cost_apply_id = cost.id " +
" where cost.vtb_sync=2 and cost.do_cancel_flag = 0 " +
" order by cost_apply_id";
/** 更新已完成的 */
String sql_update_do_cancel = "update tbs_cost_apply set do_cancel_flag = 1 where id = ?";
/** 查询销路通的不予核销记录 */
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 = '1' " +
" AND oldlistnumber = ?";
/** 统计活动的不予核销 */
String sql_sum_release = "SELECT sum(used_amount) FROM `vtb_fund_flow` where activity_id = ? and fund_type = 'release'";
//删除历史记录
String del_fund_flow = "delete from vtb_fund_flow where remark = 'byCancel_1' and activity_id = ?";
@Test
@SneakyThrows
public void doMain(){
DbContext jslDbContext = TbsMapper.getJslDbContext();
DbContext xltDbContext = TbsMapper.getXltDbContext();
List<Activity0704> activity0704List = jslDbContext.sql(sql_cost_not_do_cancel).getList(Activity0704.class);
activity0704List.forEach(a->a.setCostCode(a.getActivityCode().split("_")[0]));
Map<String,List<Activity0704>> map = activity0704List.stream().collect(Collectors.groupingBy(Activity0704::getCostCode));
int totalCost = map.keySet().size();
int count = 1;
for (String costCode : map.keySet()) {
List<Activity0704> actList = map.get(costCode);
for (Activity0704 tbsActivity : actList) {
List<XltCheckCostItem> checkCostItemList = xltDbContext.sql(sql_xlt_check_cost,tbsActivity.getActivityCode()).getList(XltCheckCostItem.class);
for (XltCheckCostItem costItem : checkCostItemList) {
String sql_budget_cost_item = "select * from tbs_budget_cost_item where activity_id = ?";
JslTbsBudgetCostItem currCostItem = jslDbContext.sql(sql_budget_cost_item, tbsActivity.getId()).getItem(JslTbsBudgetCostItem.class);
if(currCostItem==null||currCostItem.getId()==null){
System.out.println("没有命中核销的费用编码:"+ tbsActivity.getCostCode());
return;
}
//删除历史记录
jslDbContext.sql(del_fund_flow,tbsActivity.getId()).execute();
//添加不再支付记录
BigDecimal amt = costItem.getApplyAmt();
JslVtbFundFlow fundFlow = new JslVtbFundFlow();
fundFlow.setFundType("release");
fundFlow.setVerificationId(0L);
fundFlow.setCenterGoodsCode(tbsActivity.getActivityCode()+"_00");
fundFlow.setCostApplyId(tbsActivity.getCostApplyId());
fundFlow.setActivityId(tbsActivity.getId());
fundFlow.setUsedAmount(amt);
fundFlow.setSupplierId(tbsActivity.getSupplierId());
fundFlow.setSupplierCode(tbsActivity.getSupplierCode());
fundFlow.setSupplierName(tbsActivity.getSupplierName());
fundFlow.setTenantId("001");
fundFlow.setSubjectId(0L);
fundFlow.setSubjectCode("");
fundFlow.setSubjectName("");
fundFlow.setCenterType(currCostItem.getCenterType());
fundFlow.setCenterId(currCostItem.getCenterId());
fundFlow.setCenterCode(currCostItem.getCenterCode());
fundFlow.setCenterName(currCostItem.getCenterName());
fundFlow.setTargetType(currCostItem.getTargetType());
fundFlow.setTargetId(currCostItem.getTargetId());
fundFlow.setTargetCode(currCostItem.getTargetCode());
fundFlow.setTargetName(currCostItem.getTargetName());
fundFlow.setTargetLevelPathIds(currCostItem.getTargetLevelPathIds());
fundFlow.setTargetLevelPathNames(currCostItem.getTargetLevelPathNames());
fundFlow.setCenterGoodItemId(currCostItem.getId());
fundFlow.setSupplierId(tbsActivity.getSupplierId());
fundFlow.setSupplierCode(tbsActivity.getSupplierCode());
fundFlow.setSupplierName(tbsActivity.getSupplierName());
fundFlow.setRemark("byCancel_1");
jslDbContext.table("vtb_fund_flow").setEntity(fundFlow).insert();
BigDecimal totalRes = BigDecimal.ZERO;
Object val = jslDbContext.sql(sql_sum_release,tbsActivity.getId()).getValue();
if(val!=null){
totalRes = new BigDecimal(val.toString());
}
JslTbsActivity updAct = new JslTbsActivity();
updAct.setReleaseFlag(1);
updAct.setFinishedFlag(1);
updAct.setReleaseUserId("0");
updAct.setReleaseUserName("系统导入");
updAct.setReleaseTime(checkCostItemList.get(0).getExedate());
updAct.setReleaseAmount(totalRes);
updAct.setId(tbsActivity.getId());
}
}
jslDbContext.sql(sql_update_do_cancel,actList.get(0).getCostApplyId()).execute();
System.out.println("完成"+count+"/"+totalCost+":CostApplyId="+actList.get(0).getCostApplyId());
count++;
}
}
}
Loading…
Cancel
Save