dobe_comic8/main/java/shkd/repc/task/DobeAutoEvaluateTask.java

89 lines
4.5 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 shkd.repc.task;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.operate.OperateOptionConst;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.exception.KDException;
import kd.bos.form.IFormView;
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.QueryServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class DobeAutoEvaluateTask extends AbstractTask implements Plugin {
private static Log log = LogFactory.getLog(DobeDWaccountTask.class);
/**
* 自动评估超时的我的评估
* @param requestContext
* @param map
* @throws KDException
*/
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
//todo:查询所有评估状态未完成,且已经超时的我的评估
QFilter eval_QF = new QFilter("billstatus", QCP.equals,"A");//提交评分状态为:未完成
// 德必集团-2024-三季度-定期评估任务【7】
// eval_QF.and("evaltask.name",QCP.equals,"德必集团-2024-三季度-定期评估任务【7】");
eval_QF.and("evalenddate",QCP.less_equals,new Date());//当前日期超过评估截止日期
DynamicObjectCollection queries = QueryServiceHelper.query("resm_myeval_new", "id", eval_QF.toArray());
for (DynamicObject query : queries) {
long evalId = query.getLong("id");//获取评估单主键
DynamicObject resm_myeval_new = BusinessDataServiceHelper.loadSingle(evalId, "resm_myeval_new");//加载评估单完整数据
String myevalname = resm_myeval_new.getDynamicObject("evaltask").getString("name");
DynamicObject evalscheme = resm_myeval_new.getDynamicObject("evalscheme");
DynamicObject resm_evalschemef7 = BusinessDataServiceHelper.loadSingle(evalscheme.getPkValue(), "resm_evalschemef7");
String scoremethod = resm_evalschemef7.getString("scoremethod");//计分方式
BigDecimal evalscore = new BigDecimal(80);//初始化评估得分
DynamicObjectCollection entry_stadardscore = resm_myeval_new.getDynamicObjectCollection("entry_stadardscore");//标准项
if ("weight".equals(scoremethod) || "share".equals(scoremethod)){//当评分制为权重制或者份额制时评分为100分的80%,即固定为80分
for (DynamicObject dy : entry_stadardscore) {
dy.set("std_score", new BigDecimal(80));
}
}else if ("standard".equals(scoremethod)){//当评分制为标准分时评分为标准分的80%
for (DynamicObject dy : entry_stadardscore) {
BigDecimal std_standardscore = dy.getBigDecimal("std_standardscore");//获取标准分
std_standardscore = std_standardscore.multiply(new BigDecimal(0.8));
dy.set("std_inputscore",std_standardscore);
dy.set("std_score",std_standardscore);
}
}
resm_myeval_new.set("evalscore",evalscore);
SaveServiceHelper.save(new DynamicObject[]{resm_myeval_new});
OperateOption option= OperateOption.create();
//已经验权,执行操作服务时,不需要再次验权
option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));
// 跳过系统默认的特殊数据权限
option.setVariableValue(OperateOptionConst.SKIPCHECKPERMISSION,String.valueOf(true));
OperationResult operationResult = OperationServiceHelper.executeOperate("submit", "resm_myeval_new", new DynamicObject[]{resm_myeval_new}, option);
boolean success = operationResult.isSuccess();
if (!success) {
String message = operationResult.getMessage();
String allErrorInfo = operationResult.getValidateResult().getValidateErrors().get(0).getAllErrorInfo().get(0).getMessage();
log.info("评估任务:" + myevalname +message +"-"+ allErrorInfo);
}
}
}
}