业务场景:由用户自己的第三方系统发起订单,订单通过接口生成数据到中间表,而平台根据中间表的单号做匹配,没有的数据则在平台中生成。用定时任务的方法,每十分钟执行一次。
参考脚本如下:- #include"baselibrary";
- (function(){
- /*因为定时任务是通过线程跑,所以获取不到平台封装的前端方法,只能用源生写法获取方法*/
- /*企业域id和软件id可以将固定的id值封装在函数库内调用,也可以直接写出来*/
-
- var domainid = "pfqrtkz2khbjbu9w0xc";
- var applicationid = "__dpdtviiboq60pcmb7ky";
- var process = getdocprocess(applicationid);
-
- var userprocess = createprocess("cn.myapps.authtime.user.service.userprocess"); //获取用户业务处理类
- var uservo = userprocess.login("jmcadmin", domainid);
- var user = new packages.cn.myapps.base.web.webuser(uservo);
- var userid = user.getid();
-
- var formprocess = new packages.cn.myapps.designtime.form.service.formdesigntimeserviceimpl(); //4.4或5.0版本
- var newform = formprocess.doviewbyformname("material_requisition_form", applicationid); //创建零星领料单
- var newform2 = formprocess.doviewbyformname("material_requisition_detail", applicationid); //创建零星领料单明细
-
- var docprocess = getdocprocess(applicationid);
- var params = createparamstable();
-
- var sql = "select t.*,'" domainid "' domainid from (select id as item_id, credate as item_credate, pickingno as item_pickingno, engineersap as item_engineersap, engineername as item_engineername, source as item_source, warehouse as item_warehouse, use as item_use, isrdcar as item_isrdcar, node as item_node, type as item_type, projectno as item_projectno, projectname as item_projectname, projectmanager as item_projectmanager, pickingtime as item_pickingtime, items as item_items from office_material_requisition where 1 = 1 and pickingno not in(select item_pickingno from tlk_material_requisition_form)) t";
- var query = process.querybysql(sql,domainid).datas;
-
- if(query!=null && query.size()>0){
- for(var iter = query.iterator();iter.hasnext();){
- var docs = iter.next();
- var jsontext = docs.getitemvalueasstring("items"); //子表参数
-
- var newdoc = docprocess.donew(newform,user,params);
- var uuid = new packages.cn.myapps.util.sequence.sequence();
- var uid = uuid.getsequence();
- var formid = "__mziv2egn3stlgbvgwoq";
- var newdocid = uid "--" formid;
-
- newdoc.setid(newdocid);
- newdoc.setauthor(userid);
- newdoc.setistmp(false);
-
- newdoc.addstringitem("pickingno",docs.getitemvalueasstring("pickingno"));
- newdoc.addstringitem("sap",docs.getitemvalueasstring("engineersap"));
- newdoc.adddateitem("applydate",docs.getitemvalueasdate("credate"));
- newdoc.addstringitem("name",docs.getitemvalueasstring("engineername"));
- newdoc.addstringitem("source",docs.getitemvalueasstring("source"));
- newdoc.addstringitem("warehouse",docs.getitemvalueasstring("warehouse"));
- newdoc.addstringitem("purpose",docs.getitemvalueasstring("use"));
- newdoc.addstringitem("iswholevehicle",docs.getitemvalueasstring("isrdcar"));
- newdoc.addstringitem("type",docs.getitemvalueasstring("type"));
- newdoc.addstringitem("projectno",docs.getitemvalueasstring("projectno"));
- newdoc.addstringitem("projectname",docs.getitemvalueasstring("projectname"));
- docprocess.docreate(newdoc);
- if(jsontext!=""){
- var jsonarray = new packages.org.json.jsonarray(jsontext);
- for(var i = 0;i
- var jsonobject = jsonarray.getjsonobject(i);
- materialname = jsonobject.getstring("materialname");
- var newdoc2 = docprocess.donew(newform2,user,params);
- var uuid2 = new packages.cn.myapps.util.sequence.sequence();
- var uid2 = uuid2.getsequence();
- var formid2 = "__5ptscix9qwsckpzhj4v";
- var newdocid2 = uid2 "--" formid2;
- newdoc2.setid(newdocid2);
- newdoc2.setparent(newdocid);
- newdoc2.setauthor(userid);
- newdoc2.setistmp(false);
- newdoc2.addstringitem("materialname",jsonobject.getstring("materialname"));
- newdoc2.addstringitem("materialcode",jsonobject.getstring("materialcode"));
- newdoc2.addstringitem("unit",jsonobject.getstring("unit"));
- newdoc2.adddoubleitem("demand",jsonobject.getdouble("quantity"));
- var sptype = jsonobject.getstring("sptype");
- if(sptype!=null||sptype!=""){
- var type ="sptype";
- sptype = gettruevaluebyshowvalue(sptype,type);
- }
- newdoc2.addstringitem("sptype",sptype);
- newdoc2.addstringitem("remarks",jsonobject.getstring("remake"));
- docprocess.docreate(newdoc2);
- }
- }
- }
- }
- })();
复制代码
|