[JavaScript] 纯文本查看 复制代码
.版本 2
.支持库 shell
.支持库 spec
.支持库 iconv
.支持库 mysql
.支持库 dp1
.程序集 程序集1
.程序集变量 程_MYSQL句柄, 整数型
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
' 打开写日志的文件
程集_文件号 = 打开文件 (取特定目录 (#我的文档) + “logSms_” + 时间_到文本 (, 3, 1, 2) + “.txt”, #改写, 1)
移到文件尾 (程集_文件号)
全_坐席超30分钟通知人 = “00000000000”
' 程序启动
子程序_输出日志 (“程序启动”)
' 连接数据库
.如果 (子程序_MYSQL连接 () = 0)
子程序_输出日志 (“数据库链接失败,请检查设置后再试!”)
标准输出 (, “数据库连接失败,将在5秒后自动关闭!”)
延迟 (5000)
返回 (0)
.否则
子程序_输出日志 (“数据库链接成功,现在开始监测!”)
.如果结束
' 设置心跳
全_检查心跳 = 到整数 (时间_到时间戳 (, 真, 真))
.判断循环首 (全_检查心跳 ≠ 1)
全_小时 = 取小时 (取现行时间 ())
.如果 (全_小时 < 8)
' 则不提醒,不监测;直接跳转到延时命令
子程序_输出日志 (“当前时间不在检查范围内!”)
.否则
.如果结束
' 业务① 监控电话坐席通过超过30分钟或者离线超过10分钟
子程序_输出日志 (“开启业务① 监控电话坐席通过超过30分钟或者离线超过10分钟”)
子程序_监控中心坐席通过超时及离线 ()
延迟 (60000)
' 业务② 检测自动录单是否在线
子程序_输出日志 (“监测WorkStatus数据库的所有业务”)
子程序_监测在线业务状态 ()
' 最后检查一下待发短xin,一次性发完
子程序_输出日志 (“检查待发短xin中……”)
子程序_检查待发短xin并发送 ()
' 延迟一定时间后,开启下一次检查
全_ID = 全_ID + 1
延迟 (300000)
.判断循环尾 ()
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 子程序_输出日志
.参数 参_文本, 文本型
.局部变量 局_增加文本, 文本型
局_增加文本 = 时间_到文本 (, 1, , 2) + “ -> ” + 参_文本
标准输出 (, 局_增加文本 + #换行符 + #换行符)
写文本行 (程集_文件号, 局_增加文本)
.如果 (全_行数 > 10000)
程集_文件号 = 打开文件 (取特定目录 (#我的文档) + “logSms_” + 时间_到文本 (, 3, 1, 2) + “.txt”, #改写, 1)
移到文件尾 (程集_文件号)
全_行数 = 0
.否则
全_行数 = 全_行数 + 1
.如果结束
.子程序 子程序_检查待发短xin并发送
.局部变量 局_SQL, 文本型
.局部变量 局_记录数, 整数型
.局部变量 局_记录集句柄, 整数型
.局部变量 局_计数, 整数型
.局部变量 局_Id, 文本型
.局部变量 局_smsOnly, 文本型
.局部变量 局_sendTel, 文本型
.局部变量 局_sendVar, 文本型
.局部变量 局_modelID, 文本型
.局部变量 局_gbID, 文本型
.局部变量 局_返回文本, 文本型
.局部变量 局_结果, 逻辑型
局_SQL = “Select Id,smsOnly,sendTel,sendVar,modelID,gbID from dbhy.yw_sms_worklist where sendStatus=0 Order by Id ASC”
局_SQL = 到文本 (编码转换 (到字节集 (局_SQL), #编码_GB2312, #编码_UTF_8, ))
.如果 (取记录集行数 (局_记录集句柄) > 0)
.否则
子程序_输出日志 (“检查待发短xin结果 -- 无待发短xin”)
.如果结束
.如果 (执行SQL语句 (程_MYSQL句柄, 局_SQL))
局_记录集句柄 = 取记录集 (程_MYSQL句柄)
局_记录数 = 取记录集行数 (局_记录集句柄)
.计次循环首 (局_记录数, 局_计数)
读字段值 (局_记录集句柄, 0, 局_Id)
读字段值 (局_记录集句柄, 1, 局_smsOnly)
读字段值 (局_记录集句柄, 2, 局_sendTel)
读字段值 (局_记录集句柄, 3, 局_sendVar)
读字段值 (局_记录集句柄, 4, 局_modelID)
读字段值 (局_记录集句柄, 5, 局_gbID)
局_smsOnly = 到文本 (编码转换 (到字节集 (局_smsOnly), #编码_UTF_8, #编码_GB2312, ))
局_sendTel = 到文本 (编码转换 (到字节集 (局_sendTel), #编码_UTF_8, #编码_GB2312, ))
局_sendVar = 到文本 (编码转换 (到字节集 (局_sendVar), #编码_UTF_8, #编码_GB2312, ))
局_modelID = 到文本 (编码转换 (到字节集 (局_modelID), #编码_UTF_8, #编码_GB2312, ))
局_gbID = 到文本 (编码转换 (到字节集 (局_gbID), #编码_UTF_8, #编码_GB2312, ))
子程序_输出日志 (“检查待发短xin结果 -- 有待发短xin,正在组织发送--唯一值[” + 局_smsOnly + “]接收号码[” + 局_sendTel + “]消息体[” + 局_sendVar + “]模板ID[” + 局_modelID + “]”)
局_返回文本 = 子程序_TX_发送短xin_查发记 (“db7b3f2e2d2a439ce404943ed172acef”, 局_smsOnly, 局_modelID, 局_sendTel, 局_sendVar, 局_gbID, 假)
子程序_输出日志 (“短xin发送结果--” + 局_返回文本)
' 将发送结果写到数据库;不管成功与否,都写到数据库
局_SQL = “UPDATE dbhy.yw_sms_worklist SET sendStatus=1,sendTimes='” + 时间_到文本 (, 1, , 2) + “',smsStatus=1,backVar='” + 局_返回文本 + “' WHERE Id=” + 局_Id
局_SQL = 到文本 (编码转换 (到字节集 (局_SQL), #编码_GB2312, #编码_UTF_8, ))
局_结果 = 执行SQL语句 (程_MYSQL句柄, 局_SQL)
.如果 (局_结果 = 真)
子程序_输出日志 (“更新短xin发送结果 -- 真”)
.否则
子程序_输出日志 (“更新短xin发送结果 -- 假--更新语句:” + 局_SQL)
.如果结束
延迟 (40000)
到下一行 (局_记录集句柄)
.计次循环尾 ()
释放记录集 (局_记录集句柄)
子程序_输出日志 (“检查待发短息完毕!”)
.否则
子程序_输出日志 (“检查待发短xin失败!”)
.如果结束
.子程序 子程序_MYSQL连接, 整数型
.局部变量 局_服务器IP, 文本型
.局部变量 局_服务器端口, 整数型
.局部变量 局_数据库名, 文本型
.局部变量 局_数据库用户名, 文本型
.局部变量 局_数据库密码, 文本型
局_服务器IP = “127.0.0.1” ' //MYSQL服务器IP,默认127.0.0.1(本机)
局_服务器端口 = 3306 ' //MYSQL默认端口3306
局_数据库名 = “” ' //要打开的数据库名,默认为空
局_数据库用户名 = “” ' //数据库用户名,默认root
局_数据库密码 = “” ' //数据库密码,如果无需验证则留空或随意填
程_MYSQL句柄 = 连接MySql (局_服务器IP, 局_数据库用户名, 局_数据库密码, 局_数据库名, 局_服务器端口)
返回 (程_MYSQL句柄)
.子程序 子程序_监控中心坐席通过超时及离线
.局部变量 局_SQL, 文本型
.局部变量 局_记录数, 整数型
.局部变量 局_记录集句柄, 整数型
.局部变量 局_计数, 整数型
.局部变量 局_myTel, 整数型
.局部变量 局_openTime, 日期时间型
.局部变量 局_statusXt, 整数型
.局部变量 局_telStatus, 文本型
.局部变量 局_间隔秒, 整数型
.局部变量 局_唯一值, 文本型
.局部变量 局_sendVar, 文本型
.局部变量 局_结果, 逻辑型
局_SQL = “Select myTel,openTime,statusXt,telStatus from dbhy.yw_zh_tel”
局_SQL = 到文本 (编码转换 (到字节集 (局_SQL), #编码_GB2312, #编码_UTF_8, ))
.如果 (执行SQL语句 (程_MYSQL句柄, 局_SQL))
局_记录集句柄 = 取记录集 (程_MYSQL句柄)
局_记录数 = 取记录集行数 (局_记录集句柄)
.计次循环首 (局_记录数, 局_计数)
读字段值 (局_记录集句柄, 0, 局_myTel)
读字段值 (局_记录集句柄, 1, 局_openTime)
读字段值 (局_记录集句柄, 2, 局_statusXt)
读字段值 (局_记录集句柄, 3, 局_telStatus)
局_telStatus = 到文本 (编码转换 (到字节集 (局_telStatus), #编码_UTF_8, #编码_GB2312, ))
' ①检查通过是否超过30分钟
局_间隔秒 = 取时间间隔 (取现行时间 (), 局_openTime, 8)
.如果真 (局_间隔秒 > 1800 且 局_telStatus = “通话中”)
' 读取唯一值
局_唯一值 = 取数据摘要 (到字节集 (到文本 (局_myTel) + “-” + 时间_到文本 (局_openTime, 1, , 2)))
局_sendVar = “[” + #引号 + 到文本 (局_myTel) + #引号 + “]”
局_结果 = 子程序_新增待发短xin (局_唯一值, 读配置项 (取特定目录 (#我的文档) + “/云端监控.ini”, “接收号码”, “坐席超30分钟通知人”, ), 局_sendVar, “1546939”, “2222”, 1001)
.如果 (局_结果 = 真)
子程序_输出日志 (“业务[坐席通话超30分钟]检查状态【异常】新增待发短xin结果为【真】唯一值【” + 局_唯一值 + “】”)
.否则
子程序_输出日志 (“业务[坐席通话超30分钟]检查状态【异常】新增待发短xin结果为【假】唯一值【” + 局_唯一值 + “】”)
.如果结束
.如果真结束
' ②检查离线超过10分钟
局_间隔秒 = 到整数 (时间_到时间戳 (, 真, )) - 局_statusXt
.如果真 (局_间隔秒 > 600)
' 通过超过30分钟
子程序_输出日志 (“业务[坐席坐席离线超10分钟]检查状态【异常】将调取写入待发短xin!”)
' 读取唯一值
局_唯一值 = 取数据摘要 (到字节集 (到文本 (局_myTel) + “-” + 到文本 (局_statusXt) + “-600”))
局_sendVar = “[” + #引号 + “坐席” + 到文本 (局_myTel) + #引号 + “,” + #引号 + 取文本中间 (时间_时间戳转文本 (到文本 (局_statusXt), 2), 12, 5) + #引号 + “]”
局_结果 = 子程序_新增待发短xin (局_唯一值, 读配置项 (取特定目录 (#我的文档) + “/云端监控.ini”, “接收号码”, “坐席超30分钟通知人”, ), 局_sendVar, “1736738”, “2222”, 1001)
.如果 (局_结果 = 真)
子程序_输出日志 (“新增待发短xin结果为【真】唯一值【” + 局_唯一值 + “】”)
.否则
子程序_输出日志 (“新增待发短xin结果为【假】唯一值【” + 局_唯一值 + “】”)
.如果结束
.如果真结束
延迟 (100)
到下一行 (局_记录集句柄)
.计次循环尾 ()
释放记录集 (局_记录集句柄)
子程序_输出日志 (“检查中心坐席状态完毕!”)
.否则
子程序_输出日志 (“检查中心坐席状态,数据库打开失败!”)
.如果结束
.子程序 子程序_新增待发短xin, 逻辑型
.参数 局_smsOnly, 文本型
.参数 局_sendTel, 文本型
.参数 局_sendVar, 文本型
.参数 局_modelID, 文本型
.参数 局_gbID, 文本型
.参数 局_formWhere, 整数型
.局部变量 局_SQL, 文本型
.局部变量 局_记录数, 整数型
.局部变量 局_记录集句柄, 整数型
.局部变量 记录集句柄, 整数型
局_SQL = “Select COUNT(*) from dbhy.yw_sms_worklist where smsOnly='” + 局_smsOnly + “'”
局_SQL = 到文本 (编码转换 (到字节集 (局_SQL), #编码_GB2312, #编码_UTF_8, ))
.如果 (执行SQL语句 (程_MYSQL句柄, 局_SQL))
局_记录集句柄 = 取记录集 (程_MYSQL句柄)
读字段值 (局_记录集句柄, 0, 局_记录数)
释放记录集 (局_记录集句柄)
.否则
局_记录数 = 0
.如果结束
.如果 (局_记录数 = 0)
局_SQL = “INSERT INTO dbhy.yw_sms_worklist(smsOnly,sendTel,sendVar,modelID,gbID,formWhere) VALUES('” + 局_smsOnly + “','” + 局_sendTel + “','” + 局_sendVar + “','” + 局_modelID + “','” + 局_gbID + “',” + 到文本 (局_formWhere) + “)”
子程序_输出日志 (“新增待发短xinSQL:” + 局_SQL)
局_SQL = 到文本 (编码转换 (到字节集 (局_SQL), #编码_GB2312, #编码_UTF_8, ))
.如果 (执行SQL语句 (程_MYSQL句柄, 局_SQL) = 真)
子程序_输出日志 (“新增短xin成功!”)
返回 (真)
.否则
子程序_输出日志 (“新增短xin失败!执行语句失败,语句在上面!”)
返回 (假)
.如果结束
.否则
子程序_输出日志 (“检查该唯一码[” + 局_smsOnly + “]已存在,本次属于重复发送,已经跳过!”)
返回 (假)
.如果结束
.子程序 子程序_监测在线业务状态, , , 数据库workStatus的业务状态
.局部变量 局_SQL, 文本型
.局部变量 局_记录集句柄, 整数型
.局部变量 局_Id, 文本型
.局部变量 局_workName, 文本型
.局部变量 局_intimestamp, 整数型
.局部变量 局_intimes, 日期时间型
.局部变量 局_sendTel, 文本型
.局部变量 局_smsOnly, 文本型
.局部变量 局_sendVar, 文本型
.局部变量 局_modelID, 文本型
.局部变量 局_gbID, 文本型
.局部变量 局_formWhere, 整数型
.局部变量 局_结果, 逻辑型
.局部变量 局_记录数, 整数型
.局部变量 局_计数, 整数型
局_SQL = “Select Id,workName,intimestamp,intimes,sendTel from dbhy.yw_workstatus”
局_SQL = 到文本 (编码转换 (到字节集 (局_SQL), #编码_GB2312, #编码_UTF_8, ))
.如果 (执行SQL语句 (程_MYSQL句柄, 局_SQL))
局_记录集句柄 = 取记录集 (程_MYSQL句柄)
局_记录数 = 取记录集行数 (局_记录集句柄)
.计次循环首 (局_记录数, 局_计数)
读字段值 (局_记录集句柄, 0, 局_Id)
读字段值 (局_记录集句柄, 1, 局_workName)
读字段值 (局_记录集句柄, 2, 局_intimestamp)
读字段值 (局_记录集句柄, 3, 局_intimes)
读字段值 (局_记录集句柄, 4, 局_sendTel)
局_workName = 到文本 (编码转换 (到字节集 (局_workName), #编码_UTF_8, #编码_GB2312, ))
局_sendTel = 到文本 (编码转换 (到字节集 (局_sendTel), #编码_UTF_8, #编码_GB2312, ))
' 检查在线状态 不在线10分钟以上的,发送短息
.如果 (到整数 (时间_到时间戳 (, 真, )) - 局_intimestamp > 600)
子程序_输出日志 (“业务[” + 局_Id + “-” + 局_workName + “]检查状态【异常】将调取写入待发短xin!”)
局_smsOnly = 取数据摘要 (到字节集 (到文本 (局_intimestamp) + “-” + 局_Id))
局_modelID = “1736738”
局_sendVar = “[” + #引号 + 局_workName + #引号 + “,” + #引号 + 取文本中间 (时间_时间戳转文本 (到文本 (局_intimestamp), 2), 12, 5) + #引号 + “]”
局_结果 = 子程序_新增待发短xin (局_smsOnly, 局_sendTel, 局_sendVar, 局_modelID, “2222”, 1001)
.如果 (局_结果 = 真)
子程序_输出日志 (“新增待发短xin结果为【真】唯一值【” + 局_smsOnly + “】”)
.否则
子程序_输出日志 (“新增待发短xin结果为【假】唯一值【” + 局_smsOnly + “】”)
.如果结束
.否则
子程序_输出日志 (“业务[” + 局_Id + “-” + 局_workName + “]检查状态正常”)
.如果结束
延迟 (200)
到下一行 (局_记录集句柄)
.计次循环尾 ()
子程序_输出日志 (“检查自动录单是否在线完毕!”)
释放记录集 (局_记录集句柄)
.否则
子程序_输出日志 (“检查自动录单是否在线,数据库打开失败!”)
.如果结束