天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 1226|回复: 4

[已解决] 定时任务创建表单无DOMAINID

[复制链接]
伊示雅 发表于 2013-12-23 17:05:42 | 显示全部楼层 |阅读模式
本帖最后由 echochen 于 2013-12-24 11:36 编辑
  1. #include "dbHelper";
  2. #include "timeHelper";

  3. var docProc=getDocumentProcess();
  4. var formProc=getFormProcess();

  5. var sql="SELECT ID,ITEM_门店,ITEM_开始日期,CONVERT(NVARCHAR(MAX),ITEM_店长) AS ITEM_店长,CONVERT(NVARCHAR(MAX),ITEM_经理) AS ITEM_经理,ITEM_所属事业部 FROM TLK_门店信息表";
  6. var dsShop=queryByDSName("shopmgr",sql);
  7. println("【需要检查异常的门店有】"+dsShop.size());

  8. for(var itrShop=dsShop.iterator();itrShop.hasNext();){
  9.         var docShop=itrShop.next();

  10.         var shopNm=getValueByDSName("zmsales","SELECT BMMC FROM JGSZ WHERE BMBH='"+docShop.get("ITEM_门店")+"'","BMMC");
  11.         var lstDt=parseDate(docShop.get("ITEM_开始日期"),"yyyy-MM-dd");

  12.         while(diffMinutes(lstDt,getToday())>=24*60){
  13.                 var hasDoc=getValueByDSName("shopmgr","SELECT ID FROM TLK_门店业绩异常表 WHERE ITEM_门店编号='"+
  14.                         docShop.get("ITEM_门店")+"' AND DATEDIFF(d,ITEM_日期,'"+format(lstDt,"yyyy-MM-dd")+"')=0","ID");
  15.                 if(hasDoc==null){//如果没填过这一天的单,就生成,否则就不要重复的生成了//
  16.                         println("【测试日期】"+(getToday()-lstDt));
  17.                         var amt=getValueByDSName("zmsales","SELECT 金额 FROM  VIEW_SaleYyrb WHERE 部门编号='"+
  18.                                 docShop.get("ITEM_门店")+"' AND DATEDIFF(d,日期,'"+format(lstDt,"yyyy-MM-dd")+"')=0","金额");
  19.                         println("【"+shopNm+":"+format(lstDt,"yyyy-MM-dd")+"营业金额】"+amt);

  20.                         var bud=getValueByDSName("budget","SELECT ISNULL(MAX(YBE),0) AS BUD FROM ZM_MDYBE WHERE BMBH='"+
  21.                                 docShop.get("ITEM_门店")+"' AND okid=1 AND NIAN="+getYear(lstDt)+ " AND YUE="+getMonth(lstDt),"BUD");
  22.                         println("【月预算金额】"+bud);

  23.                         if(amt==null || amt/bud<0.0258 || amt/bud>0.0333){//出现业绩异常,开始创建业绩表//
  24.                                 if(amt==null){//给所有店长发提醒短信//
  25.                                         sql="SELECT TELEPHONE FROM T_USER WHERE '"+docShop.get("ITEM_店长")+";"+
  26.                                         docShop.get("ITEM_经理")+"' LIKE '%'+ID+'%'";
  27.                                         println("【店长的电话列表】"+sql);
  28.                                         var dsUser=queryByDSName("obpm",sql);
  29.                                         var tels="";
  30.                                         var sendCnt=0;
  31.                                         for(var itrUser=dsUser.iterator();itrUser.hasNext();){
  32.                                                 var docUser=itrUser.next();
  33.                                                 if(docUser.get("TELEPHONE")!=null && docUser.get("TELEPHONE")!="null"){
  34.                                                         tels+=(tels.length>0 ? "," : "")+docUser.get("TELEPHONE");
  35.                                                         sendCnt++;
  36.                                                 }
  37.                                         }
  38.                                         sendSMS("","营业日报未提交提醒","您所辖门店:"+shopNm+"未上传"+format(lstDt,"yyyy-MM-dd")+
  39.                                         "的营业日报,请您尽快跟进补传!",tels,false,(sendCnt>1));
  40.                                         break;//如果有一天没上传,后面的都不用处理了//
  41.                                 }else{
  42.                                         var excForm=formProc.doView("11e3-646d-728d4376-bc38-0190bb70da9e");
  43.                                         var docExc=docProc.doNew(excForm,getWebUser(),createParamsTable());
  44.                                        
  45.                                         docExc.addStringItem("所属事业部",docShop.get("ITEM_所属事业部"));
  46.                                         docExc.addStringItem("门店",shopNm);
  47.                                         docExc.addDateItem("日期",lstDt);
  48.                                         docExc.addDoubleItem("营业额",amt);
  49.                                         docExc.addDoubleItem("达标率",amt/bud*100);
  50.                                         docExc.addDoubleItem("差异率",(amt/bud*100)-3.33);
  51.                                         docExc.addStringItem("门店编号",docShop.get("ITEM_门店"));
  52.                                         docProc.doCreate(docExc);

  53.                                         docExc.setFlowid("11e3-67ce-7ab282d2-93ba-7322f6ae4b73");
  54.                                         var params=createParamsTable();
  55.                                         params.setParameter("_flowid","11e3-67ce-7ab282d2-93ba-7322f6ae4b73");
  56.                                         docProc.doStartFlowOrUpdate(docExc,params,getWebUser());
  57.                                 }
  58.                         }
  59.                 }

  60.                 lstDt=adjustDay(lstDt,1);
  61.                 sql="UPDATE TLK_门店信息表 SET ITEM_开始日期='"+format(lstDt,"yyyy-MM-dd")+"' WHERE ID='"+
  62.                         docShop.get("ID")+"'";
  63.                 updateByDSName("shopmgr",sql);
  64.         }
  65. }
复制代码
以上代码写入定时任务,可以正常创建表单,但是表单的DOMAINID为空,如何解决?另外,数据库的STATEINT值为256,这个值是什么意思?
echochen 发表于 2013-12-23 17:10:19 | 显示全部楼层
您好,请您参考这个帖子:http://www.teemlink.com/bbs/view ... 8%CA%B1%C8%CE%CE%F1
因为定时任务是在后台运行的,所以这里的getDomainid()就获取不到企业域的id,那么你在定时任务执行就会获取不到数据啊,所以您需要写死软件id和企业域Id。
echochen 发表于 2013-12-23 17:14:57 | 显示全部楼层
本帖最后由 echochen 于 2013-12-23 17:16 编辑

或者您参看这个帖子:http://www.teemlink.com/bbs/view ... hlight=%B2%E5%C8%EB

您需要在后台定时任务使用doCreate()这个方法,那么您就需要手动去写死类是帖子中的: doc.setApplicationid(getApplication());和 doc.setDomainid(user.getDomainid());,把这俩个id写死。因为后台定时任务获取不到。
echochen 发表于 2013-12-23 17:25:57 | 显示全部楼层
您好,数据库的STATEINT值为256
表示正在执行流程中 流程节点类型是人工节点,这个字段没有实际的字面意义,只是程序运行当作做逻辑判断用的
1.jpg
echochen 发表于 2013-12-24 11:36:00 | 显示全部楼层
q上客户反馈,问题已经解决。本帖关闭。

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-13 12:08

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表