FinarbillPushTask.java 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package fi.ar.task;
  2. import com.alibaba.druid.support.logging.Log;
  3. import com.alibaba.druid.support.logging.LogFactory;
  4. import kd.bos.context.RequestContext;
  5. import kd.bos.dataentity.entity.DynamicObject;
  6. import kd.bos.entity.botp.runtime.ConvertOperationResult;
  7. import kd.bos.entity.botp.runtime.PushArgs;
  8. import kd.bos.entity.datamodel.ListSelectedRow;
  9. import kd.bos.exception.KDException;
  10. import kd.bos.metadata.botp.ConvertRuleReader;
  11. import kd.bos.orm.query.QCP;
  12. import kd.bos.orm.query.QFilter;
  13. import kd.bos.schedule.api.MessageHandler;
  14. import kd.bos.schedule.executor.AbstractTask;
  15. import kd.bos.servicehelper.BusinessDataServiceHelper;
  16. import kd.bos.servicehelper.botp.ConvertServiceHelper;
  17. import sys.sc.task.UpdateImpairmentDailyTask;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.Set;
  22. /**
  23. * @author cjz
  24. * @date 2024/9/10 16:42
  25. * @description:应收单下推坏账处理单调度计划,每月
  26. */
  27. public class FinarbillPushTask extends AbstractTask {
  28. private static final Log log = LogFactory.getLog(FinarbillPushTask.class);
  29. private static String ar_finarbill="ar_finarbill";//应收挂账单标识源单
  30. private static String ar_baddebtlossbill="ar_baddebtlossbill";//坏账损失单标识目标单
  31. @Override
  32. public MessageHandler getMessageHandle() {
  33. return super.getMessageHandle();
  34. }
  35. @Override
  36. public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
  37. //是否诉讼类费用为是
  38. QFilter filter=new QFilter("nckd_checkboxfield1", QCP.equals,true);
  39. //未结算金额不为0
  40. filter.and("unsettleamount", QCP.not_equals,0);
  41. Map<Object, DynamicObject> dynamicObjects = BusinessDataServiceHelper.loadFromCache(ar_finarbill, new QFilter[]{filter});
  42. //获取转换规则id
  43. ConvertRuleReader read=new ConvertRuleReader();
  44. List<String> loadRuleIds = read.loadRuleIds(ar_finarbill, ar_baddebtlossbill, false);
  45. for (Object idkey:dynamicObjects.keySet()) {
  46. //获取应收挂帐单
  47. //当前单头
  48. DynamicObject info = dynamicObjects.get(idkey);
  49. //源单id
  50. Long pkid = info.getLong("id");
  51. // 下推参数,设置所选数据项
  52. List<ListSelectedRow> selectedRows = new ArrayList<>();
  53. ListSelectedRow selectedRow = new ListSelectedRow(pkid);
  54. //设置需要下推的单据名
  55. // selectedRow.setEntryEntityKey("nckd_salarydistribute");
  56. // 设置需要下推的单据体行内码:按分录下推时必须设置
  57. selectedRow.setEntryPrimaryKeyValue(pkid);
  58. selectedRows.add(selectedRow);
  59. // 创建下推参数
  60. PushArgs pushArgs = new PushArgs();
  61. // 源单标识
  62. pushArgs.setSourceEntityNumber(ar_finarbill);
  63. // 目标单据标识
  64. pushArgs.setTargetEntityNumber(ar_baddebtlossbill);
  65. // 生成转换结果报告
  66. pushArgs.setBuildConvReport(true);
  67. //传入下推使用的转换规则id,不填则使用默认规则
  68. pushArgs.setRuleId(loadRuleIds.get(0));
  69. //下推默认保存
  70. pushArgs.setAutoSave(true);
  71. // 设置源单选中的数据包
  72. pushArgs.setSelectedRows(selectedRows);
  73. // 执行下推操作
  74. ConvertOperationResult result = ConvertServiceHelper.push(pushArgs);
  75. //获取下推目标单id
  76. Set<Object> targetBillIds = result.getTargetBillIds();
  77. if (!targetBillIds.isEmpty()) {
  78. log.info("----------------------------下推坏账处理单成功----------------------");
  79. } else {
  80. log.info("----------------------------下推坏账处理单失败----------------------");
  81. }
  82. }
  83. }
  84. @Override
  85. public boolean isSupportReSchedule() {
  86. return super.isSupportReSchedule();
  87. }
  88. }