AutoAccountbankFreezeTask.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package kd.cosmic.jkjt.fi.cas.task;
  2. import kd.bos.context.RequestContext;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.exception.KDException;
  5. import kd.bos.orm.query.QCP;
  6. import kd.bos.orm.query.QFilter;
  7. import kd.bos.schedule.executor.AbstractTask;
  8. import kd.bos.servicehelper.BusinessDataServiceHelper;
  9. import kd.bos.servicehelper.operation.OperationServiceHelper;
  10. import kd.bos.entity.operate.result.OperationResult;
  11. import kd.bos.dataentity.OperateOption;
  12. import java.util.Date;
  13. import java.util.Map;
  14. /**
  15. * @author turborao
  16. * @date 2023/05/04
  17. * @description 调度任务类,用于未开通CBS银企接口且未报备的银行账户,按预计开通CBS日期进行自动冻结。
  18. */
  19. public class AutoAccountbankFreezeTask extends AbstractTask {
  20. @Override
  21. public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
  22. /**
  23. * 账户查询单据标识nckd_am_accountbank_ext
  24. * 过滤字段:
  25. * 开通CBS银企接口=否,nckd_issetcbs=0
  26. * 未开通CBS是否报备=否,nckd_isreport=0
  27. * 执行冻结日期:预计开通CBS日期,nckd_excbsdate
  28. */
  29. String cbsOpen = "0";
  30. ///String cbsReport = "0";
  31. String ENTITY_NAME = "am_accountbank";
  32. QFilter filter1 = new QFilter("nckd_issetcbs", QCP.equals, cbsOpen);
  33. ////QFilter filter2 = new QFilter("nckd_isreport", QCP.equals, cbsReport);
  34. QFilter[] filters = new QFilter[]{filter1};
  35. DynamicObject[] billEntities = BusinessDataServiceHelper.load(ENTITY_NAME, "id,billno,nckd_excbsdate", filters);
  36. for (DynamicObject dataEntity : billEntities) {
  37. Date excbsdate = dataEntity.getDate("nckd_excbsdate");
  38. if(excbsdate!=null && DateUtils.compareByDay(DateUtils.getDateAfterAddDays(excbsdate,1),DateUtils.getCurrentDate())<=0){
  39. DynamicObject bankBillEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), ENTITY_NAME);
  40. OperateOption option = OperateOption.create();
  41. ///增加调用参数
  42. option.setVariableValue("createOrg",bankBillEntity.getDynamicObject("company").getPkValue().toString());
  43. ///执行账户管理的冻结操作
  44. OperationResult result = OperationServiceHelper.executeOperate("freeze", ENTITY_NAME, new DynamicObject[] { bankBillEntity }, option);
  45. }
  46. }
  47. }
  48. }