shjh/main/java/shjh/jhzj7/fi/fi/plugin/task/RecBillToClearBillTask.java

82 lines
4.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
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 {
QFilter qFilter = new QFilter(KEY_STATUS, QCP.equals, "D");//【单据状态】=已收款 and
qFilter.and(KEY_VOUCHER_NUM, QCP.not_equals, "");//【SAP凭证号】≠空 and
qFilter.and(KEY_ACT_RECT_AMOUNT, QCP.large_than, BigDecimal.ZERO);//【收款金额】>0 and
//获取昨天的日期字符串
LocalDate yesterday = LocalDate.now().minusDays(1);
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// String yesterdayStr = yesterday.format(formatter);
qFilter.and(KEY_AUDIT_DATE, QCP.less_equals, yesterday);//TODO 【审核日期】T+1日下推T及T之前收款单
DynamicObject[] collection = BusinessDataServiceHelper.load(srcEntityName, "id", qFilter.toArray());
if (collection.length != 0){
ArrayList<Long> ids = new ArrayList<>(collection.length);
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));
// 注意executeOperate 需要一个数组形式的 DynamicObject[]
DynamicObject[] billArray = new DynamicObject[recBillMap.values().size()];
int index = 0;
for (DynamicObject dynamicObject : recBillMap.values()) {
billArray[index] = dynamicObject;
index++;
}
OperationResult operationResult = OperationServiceHelper.executeOperate("pushclear", srcEntityName, billArray, operateOption);
// 可以根据需要处理 operationResult例如检查是否成功、获取返回值等
if (operationResult.isSuccess()) {
logger.info("执行pushclear成功本次处理收款单个数" + billArray.length);
} else {
logger.error(operationResult.getMessage());
}
}
}
}