收款定时任务优化
This commit is contained in:
parent
04e8f52b53
commit
75fd1b206a
|
|
@ -14,12 +14,11 @@ 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.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -30,31 +29,26 @@ 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";//审核日期
|
||||
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, "A");
|
||||
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);
|
||||
qFilter.and("billno", QCP.equals, "SKZJ202412300006");
|
||||
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_than, yesterdayStr);//TODO 【审核日期】T+1日下推T及T之前收款单
|
||||
|
||||
DynamicObject[] collection = BusinessDataServiceHelper.load(srcEntityName, "id", qFilter.toArray());
|
||||
if (collection.length!=0){
|
||||
ArrayList<Long> ids = new ArrayList<>();
|
||||
if (collection.length != 0){
|
||||
ArrayList<Long> ids = new ArrayList<>(collection.length);
|
||||
for (DynamicObject dynamicObject : collection) {
|
||||
ids.add(dynamicObject.getLong("id"));
|
||||
}
|
||||
|
|
@ -68,16 +62,19 @@ public class RecBillToClearBillTask extends AbstractTask implements Plugin {
|
|||
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()) {
|
||||
// 注意: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());
|
||||
}
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ public class RecPushFiTask extends AbstractTask implements Plugin {
|
|||
|
||||
private static final String KEY_IS_PUSH_FI = "shjh_ispushfc";//是否已推送费控
|
||||
|
||||
private static final String KEY_BILLSTATUS = "billstatus";//收款单状态
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
|
|
@ -46,6 +48,7 @@ public class RecPushFiTask extends AbstractTask implements Plugin {
|
|||
QFilter qFilter = new QFilter(KEY_RECEIVING_TYPE, QCP.in, typeList);//只有这两类推送费控
|
||||
qFilter.and(new QFilter(KEY_VOUCHER_NUM,QCP.not_equals,""));//sap凭证编号不为空
|
||||
qFilter.and(new QFilter(KEY_IS_PUSH_FI,QCP.equals,"0"));//没有推过费控的
|
||||
qFilter.and(new QFilter(KEY_BILLSTATUS, QCP.equals, "D"));//收款单已收款
|
||||
DynamicObject[] recBillList = BusinessDataServiceHelper.load(KEY_REC_BILL, "id", qFilter.toArray());
|
||||
if (recBillList.length != 0){
|
||||
ArrayList<Long> ids = new ArrayList<>(recBillList.length);
|
||||
|
|
@ -54,11 +57,11 @@ public class RecPushFiTask extends AbstractTask implements Plugin {
|
|||
}
|
||||
Map<Object, DynamicObject> recBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), KEY_REC_BILL);
|
||||
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));
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ 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.plugin.form.info.RecFieldsInfo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -30,24 +29,26 @@ public class RecPushSapTask extends AbstractTask implements Plugin {
|
|||
|
||||
private final static Log logger = LogFactory.getLog(RecPushSapTask.class);
|
||||
|
||||
private static final String KEY_REC_BILL = "cas_recbill";//收款单实体标识
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
// 查询条件:收款单、已生成凭证、未推送SAP、金额≠0
|
||||
//查询条件:收款单已收款、已生成金蝶凭证、未推送SAP、收款金额≠0
|
||||
QFilter qFilter = new QFilter("billstatus", QCP.equals, "D")
|
||||
.and(new QFilter("isvoucher", QCP.equals, true))
|
||||
.and(new QFilter("shjh_ispushsap", QCP.equals, false))
|
||||
.and(new QFilter("actrecamt", QCP.not_equals, BigDecimal.ZERO));
|
||||
|
||||
DynamicObject[] recBillList = BusinessDataServiceHelper.load("cas_recbill", "id,billno,actrecamt", qFilter.toArray());
|
||||
DynamicObject[] recBillList = BusinessDataServiceHelper.load(KEY_REC_BILL, "id,billno,actrecamt", qFilter.toArray());
|
||||
|
||||
if (recBillList.length == 0) {
|
||||
logger.info("未找到符合条件的收款单");
|
||||
return;
|
||||
}
|
||||
|
||||
// 按金额正负分组
|
||||
List<DynamicObject> normalBills = new ArrayList<>(); // 正数单据
|
||||
List<DynamicObject> redBills = new ArrayList<>(); // 负数单据(红冲)
|
||||
//按金额正负分组
|
||||
List<DynamicObject> normalBills = new ArrayList<>(); //正数单据
|
||||
List<DynamicObject> redBills = new ArrayList<>(); //负数单据(红冲)
|
||||
|
||||
for (DynamicObject bill : recBillList) {
|
||||
if (bill.getBigDecimal("actrecamt").compareTo(BigDecimal.ZERO) > 0) {
|
||||
|
|
@ -71,10 +72,10 @@ public class RecPushSapTask extends AbstractTask implements Plugin {
|
|||
// 创建严格的操作选项
|
||||
private OperateOption createStrictOperateOption() {
|
||||
OperateOption option = OperateOption.create();
|
||||
option.setVariableValue(OperateOptionConst.IGNOREWARN, "true");
|
||||
option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, "true");
|
||||
option.setVariableValue(OperateOptionConst.STRICTVALIDATION, "true");
|
||||
option.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, "true");
|
||||
option.setVariableValue(OperateOptionConst.IGNOREWARN, "true");//不执行警告级别校验器
|
||||
option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, "true");//不显示交互提示,自动执行到底
|
||||
option.setVariableValue(OperateOptionConst.STRICTVALIDATION, "true");//全部校验通过才保存
|
||||
option.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, "true");//同一个用户在多个界面操作同一张,也不允许操作
|
||||
return option;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue