收款单自动下推生成清账单

This commit is contained in:
李贵强 2025-03-18 17:36:14 +08:00
parent 43ed17df70
commit 254c1fb04a
4 changed files with 85 additions and 42 deletions

View File

@ -59,7 +59,7 @@ public class PaybillPushFkTask extends AbstractTask implements Plugin {
OperationResult operationResult = OperationServiceHelper.executeOperate("pushfk", "cas_paybill", billArray, operateOption);
// 可以根据需要处理 operationResult例如检查是否成功获取返回值等
if (operationResult.isSuccess()) {
logger.info("执行 pushfk 失败,单据编号:" + dynamicObject.getPkValue());
logger.info("执行 pushfk 成功,单据编号:" + dynamicObject.getPkValue());
} else {
logger.error(operationResult.getMessage());
}

View File

@ -0,0 +1,83 @@
package shjh.jhzj7.fi.fi.plugin.task;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.operate.OperateOptionConst;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.exception.KDException;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.schedule.executor.AbstractTask;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.sdk.plugin.Plugin;
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
/**
* 定时任务 收款单自动下推生成清账单
* @author LiGuiQiang
*/
public class RecBillToClearBillTask extends AbstractTask implements Plugin {
private static final Log logger = LogFactory.getLog(RecBillToClearBillTask.class);
private static final String srcEntityName = "cas_recbill";//源单 收款单
private static final String KEY_STATUS ="billstatus";//单据状态
private static final String KEY_ACT_RECT_AMOUNT ="actrecamt";//单据状态
private static final String KEY_VOUCHER_NUM ="shjh_vouchernum";//SAP凭证号
private static final String KEY_AUDIT_DATE ="auditdate";//审核日期
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
// 单据状态=已收款 and
// SAP凭证号 and
// 收款金额>0 and
// 审核日期T+1日下推T及T之前收款单
QFilter qFilter = new QFilter(KEY_STATUS, QCP.equals, "D");
qFilter.and(KEY_VOUCHER_NUM, QCP.not_equals, "");
qFilter.and(KEY_ACT_RECT_AMOUNT, QCP.large_than, BigDecimal.ZERO);
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DAY_OF_YEAR, -1); // 当前日期减1天
Date yesterday = cal.getTime();
qFilter.and(KEY_AUDIT_DATE, QCP.less_than, yesterday);
DynamicObject[] collection = BusinessDataServiceHelper.load(srcEntityName, "id", qFilter.toArray());
if (collection.length!=0){
ArrayList<Long> ids = new ArrayList<>();
for (DynamicObject dynamicObject : collection) {
ids.add(dynamicObject.getLong("id"));
}
Map<Object, DynamicObject> recBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), srcEntityName);
OperateOption operateOption = OperateOption.create();
// 不执行警告级别校验器
operateOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true));
// 不显示交互提示自动执行到底
operateOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true));
// 全部校验通过才保存
operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true));
//同一个用户在多个界面操作同一张也不允许操作
operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true));
for (DynamicObject dynamicObject : recBillMap.values()) {
// 注意executeOperate 需要一个数组形式的 DynamicObject[]
DynamicObject[] billArray = new DynamicObject[]{dynamicObject};
OperationResult operationResult = OperationServiceHelper.executeOperate("pushclear", srcEntityName, billArray, operateOption);
// 可以根据需要处理 operationResult例如检查是否成功获取返回值等
if (operationResult.isSuccess()) {
logger.info("执行 push 成功,单据编号:" + dynamicObject.getPkValue());
} else {
logger.error(operationResult.getMessage());
}
}
}
}
}

View File

@ -68,7 +68,7 @@ public class RecPushFiTask extends AbstractTask implements Plugin {
OperationResult operationResult = OperationServiceHelper.executeOperate(operationKey, KEY_REC_BILL, billArray, operateOption);
// 可以根据需要处理 operationResult例如检查是否成功获取返回值等
if (operationResult.isSuccess()) {
logger.info("执行 pushPayment 失败,单据编号:" + dynamicObject.getPkValue());
logger.info("执行 pushPayment 成功,单据编号:" + dynamicObject.getPkValue());
} else {
logger.error(operationResult.getMessage());
}

View File

@ -1,40 +0,0 @@
package shjh.jhzj7.fi.fi.plugin.task;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.exception.KDException;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.schedule.executor.AbstractTask;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
import java.math.BigDecimal;
import java.util.Map;
/**
* 定时任务 收款单自动下推生成清账单
* @author LiGuiQiang
*/
public class ReceBillToClearBillTask extends AbstractTask implements Plugin {
private static final String srcEntityName = "cas_recbill";//源单 收款单
private static final String destEntityName = "shjh_clear_account";//目标单 清账单
private static final Log logger = LogFactory.getLog(ReceBillToClearBillTask.class);
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
//TODO 设置定时任务按时下推清账单T+1日下推T及T之前收款单生成清账单
QFilter qFilter = new QFilter("receredtype", QCP.equals, "0");
qFilter.and("creditamount", QCP.not_equals, BigDecimal.ZERO);
qFilter.and("claimnoticebillno", QCP.equals, "");
qFilter.and("billno", QCP.equals, "20250211-0000000094");
DynamicObject[] collection = BusinessDataServiceHelper.load(srcEntityName, "id", qFilter.toArray());
OperationResult operationResult3 = JhzjUtils.push(srcEntityName, destEntityName, null);
}
}