|
|
【myApps/OBPM版本号】:v5.1
【浏览器类型】:Chrome/其他
【联系方式-QQ】:请留下您的QQ号码
【联系电话】: 请留下您的联系电话,以便技术同事更好解决您的问题
【问题描述】:
我想通过系统里的“常用工具”-“任务”定制一些定时任务,任务是在某个表里插入数据。
我在库里定义了一个方法,让定时任务进行引用,还在测试页面中添加一个按钮,让按钮也引用该方法。
在测试中,通过按钮可以成功调用该方法,也达到预期的结果。
但是通过任务调动时,在tomcat控制台有看到任务被触发,但是日志中没看到有报错提示,但是在数据库对应的表中也没有创建出新的数据。
由于我定义的方法中docProcess.doCreate创建新的数据时,需要使用domainId和applicationId,我看了你们的说明,不能使用get方法获取对应的值,所以我都改成字符串形式写死在代码里面,但是情况还是一样。
不知道怎么做才可以通过定时任务添加数据行。
以下为部份代码:
//获取售后工单
function Job_xxx_Aftermarket_WorkOrder(){
var kind = "xxx售后率";
var date = adjustDay(getToday(), -30);
var dateStr = format(date,"yyyyMM");
var domainid = SysDomainID(); //SysDomainID方法返回的是字符串常量
var sql = "SELECT '" +
domainid + "' AS domainid," +
"DIRECTOR, " +
"PLATFORM, " +
"ACCOUNT, " +
"SKU_SERIES, " +
"Y_M, " +
"ORDERS, " +
"AFTERSALE_ORDERS, " +
"AFTERSALE_RATE " +
"FROM PBIRS.xxxxx WHERE conditionFlag = 1 AND Y_M = '" + dateStr + ".0' " +
"ORDER BY DIRECTOR, SKU_SERIES LIMIT 1";
println("获取xxxx售后工单:" + sql);
var applicationId = SysApplicationID(); //SysApplicationID方法返回的是字符串常量
var docProcess = getDocProcess(applicationId);
var arr = MagicQueryBySql("DATACENTER_SHOPELF", sql); //读取数据
if (arr != null && arr.size() > 0){
for(var j =0; j < arr.size(); j++){
var vo = arr.get(j);
println("发现售后工单:" + vo.get("SKU_SERIES") + ", " + vo.get("DIRECTOR"));
var userLoginNo = getUserLoginnoByUserName(vo.get("DIRECTOR"));
println("userLoginNo=" + userLoginNo);
var user = getUserByLoginno(userLoginNo);
var sku = vo.get("SKU");
if (IsAlreadySendForXXX(vo, kind)){
println("当前商品最近已发起过工单。");
continue;
}
//创建售后单
var cgdPrefix="YWSHGD-";
var cgBillNo = countNext2(cgdPrefix,true,true,true,4);
var billFormName = "YWSH_01_AfterSales_WorkOrders";
var formProcess = new Packages.cn.myapps.designtime.form.service.FormDesignTimeServiceImpl();
var Form = formProcess.doViewByFormName(billFormName, applicationId);
var params = createParamsTable();
mainDoc = docProcess.doNew(Form, user, params);
mainDoc.addStringItem("编号",cgBillNo);
mainDoc.addStringItem("填写人", vo.get("DIRECTOR"));
mainDoc.addStringItem("工单类型", kind);
mainDoc.addDateItem("填写日期",getToday());
mainDoc.addStringItem("反馈平台", vo.get("PLATFORM"));
mainDoc.addStringItem("运营账号", vo.get("ACCOUNT"));
mainDoc.addStringItem("SKU系列", vo.get("SKU_SERIES"));
mainDoc.addDoubleItem("周期总售出量", vo.get("ORDERS"));
mainDoc.addDoubleItem("售后单量", vo.get("AFTERSALE_ORDERS"));
mainDoc.addDoubleItem("总售后率", vo.get("AFTERSALE_RATE"));
mainDoc.addDoubleItem("统计周期", vo.get("Y_M").replace(".0",""));
println("准备创建工单");
docProcess.doCreate(mainDoc);//创建
println("工单创建成功");
//重新获取售后工单对象
var orderMainDoc = LoadByIndexFieldValue("tlk_xxxx_aftersales_workorders", "ITEM_编号", cgBillNo, true);
println("工单内容:" + orderMainDoc);
//发起流程
var flowid = " __l5PJKQHTUngIYmWjJPs";
var billParams = createParamsTable();
billParams.setParameter("_flowid", flowid);
docProcess.doStartFlowOrUpdate(orderMainDoc, billParams, user); //启动流程
println("流程启动成功。");
}
}
1、问题描述最好图文并茂,如有视频/脚本可直接放出,这样技术同事在处理该问题时效率更加高效哦~
2、如果该问题已得到解决,请在该帖子下回复\\\"已解决可结帖\\\"
|
|