package tqq9.lc123.cloud.app.plugin.task; import kd.bos.context.RequestContext; import kd.bos.dataentity.OperateOption; 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.bos.servicehelper.operation.OperationServiceHelper; import kd.sdk.plugin.Plugin; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Map; /** * 后台任务插件 * 处理合同定时生效 */ public class ContractScheduledEffTask extends AbstractTask implements Plugin { private final static Log logger = LogFactory.getLog(ContractScheduledEffTask.class); @Override public void execute(RequestContext requestContext, Map map) throws KDException { //获取未生效、为作废,已审核、起始日期等于当天的采购合同 //1.未作废 QFilter f1 = new QFilter("cancelstatus", QCP.equals, "A"); //2.未生效 QFilter f2 = new QFilter("validstatus", QCP.equals, "A"); //3.已审核 QFilter f3 = new QFilter("billstatus", QCP.equals, "C"); //4.起始日期等于当前日期 LocalDateTime now = LocalDateTime.now(); LocalDate today = now.toLocalDate(); QFilter f4 = new QFilter("biztimebegin", QCP.equals, today); //查询这类过滤条件下的采购合同 QFilter[] filters = new QFilter[]{f1, f2, f3, f4}; DynamicObject[] purcontracts = BusinessDataServiceHelper.load("conm_purcontract", "id,billno,validstatus", filters); if (purcontracts == null || purcontracts.length == 0) { return; } OperateOption option = OperateOption.create(); for (int i = 0; i < purcontracts.length; i++) { DynamicObject purcontract = purcontracts[i]; purcontract = BusinessDataServiceHelper.loadSingle(purcontract.getPkValue(), purcontract.getDynamicObjectType().getName()); purcontracts[i] = purcontract; } OperationResult result = OperationServiceHelper.executeOperate("bizvalid", "conm_purcontract", purcontracts, option); if (result.isSuccess()) { logger.info("合同定时生效执行成功"); } else { logger.info("合同定时生效执行失败"); } } }