using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Data;
|
using System.Threading.Tasks;
|
|
namespace DingDingMsg_EarlyWarning
|
{
|
class Program
|
{
|
//异常反馈单,异常工艺参数预警 发送钉钉消息
|
static DBHelper oCN = new DBHelper();
|
static DataSet dt = new DataSet();
|
static DataSet dts = new DataSet();
|
static async Task Main(string[] args)
|
{
|
//本地
|
string appKey = "dingrsrzhdyn3mlaof95";
|
string appSecret = "RAqH6YtZnPLCpDbuqfaYQkKkVtVdS0wqfC8I26X6qiS-8eoCJCNrzx3fubGND4Sq";
|
//斯莫尔
|
//string appKey = "dingkdddbhdcssk7jduw";
|
//string appSecret = "iv07c-GLfJPnzfJaNAAOfJDl3Z-eODvDAhlInMZCZhGorkle5Evbaxx3ImylvdjQ";
|
Console.WriteLine("程序2正在执行,请不要关闭!!!!");
|
string HDeptName = "";
|
// 记录上次执行新定时任务的时间
|
while (true)
|
{
|
//查找设备保养预警
|
string sql = "SELECT a.HInterID,b.HEntryID,c.HEquipFileNo 设备编码, c.HName 设备名称,d.HName 设备部门 FROM Sb_EquipMaintainPlanBillMain a " +
|
"INNER JOIN Sb_EquipMaintainPlanBillSub_Plan b ON a.HInterID = b.HInterID " +
|
"LEFT JOIN Gy_EquipFileBillMain c ON a.HEquipID = c.HInterID " +
|
"LEFT JOIN Gy_Department d ON a.HDeptID = d.HItemID " +
|
" WHERE CONVERT(date, b.HErrBeginTime, 120) = CONVERT(date, GETDATE(), 120) and HSendFlag = '0'";
|
DBHelper.CustomWriteLog("查询设备保养计划:" + sql, DateTime.Now.ToString("yyyy-MM-dd"));
|
dt = oCN.RunProcReturn(sql, "Sb_EquipMaintainPlanBillMain");
|
//设备保养预警自动发信息
|
if (dt.Tables[0].Rows.Count > 0)
|
{
|
string HContext = "";
|
|
for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
|
{
|
HContext = "设备编码为:" + dt.Tables[0].Rows[i]["设备编码"].ToString() + ",设备名称为:" + dt.Tables[0].Rows[i]["设备名称"].ToString() + ",已到保养预警日期,需尽快进行保养";
|
//更新设备保养计划预警 子表
|
string sql1 = "update Sb_EquipMaintainPlanBillSub_Plan set HSendFlag='1' where HInterID=" + dt.Tables[0].Rows[i]["HInterID"].ToString() + " and HEntryID=" + dt.Tables[0].Rows[i]["HEntryID"].ToString() + ""; ;
|
oCN.RunProc(sql1);
|
DBHelper.CustomWriteLog("设备保养计划预警:" + sql1 + " 更新子表语句:" + sql1, DateTime.Now.ToString("yyyy-MM-dd"));
|
HDeptName = dt.Tables[0].Rows[i]["设备部门"].ToString();
|
string sql2 = "select a.HDingDingUserID 钉钉id,a.Czymc 接收人 from Gy_Czygl a left join System_UserGroupInfo b on a.Czybm = b.UserId" +
|
" left join System_UserGroup c on b.GroupId = c.GroupID where c.GroupName = '" + HDeptName + "设备保养计划预警接收人'";
|
DBHelper.CustomWriteLog("设备保养计划预警接收人:" + sql2, DateTime.Now.ToString("yyyy-MM-dd"));
|
dts = oCN.RunProcReturn(sql2, "Gy_Czygl");
|
for (int j = 0; j < dts.Tables[0].Rows.Count; j++)
|
{
|
string HName = dts.Tables[0].Rows[j]["钉钉id"].ToString();
|
string Stares = dts.Tables[0].Rows[j]["接收人"].ToString();
|
MSG msg = new MSG();
|
//获取企业的access_token的值
|
string response = msg.GetAccessToken(appKey, appSecret);
|
JObject responseJson = JObject.Parse(response);
|
// 获取access_token的值
|
string accessToken = responseJson["accessToken"].ToString();
|
|
//调用方法发送消息
|
//string agentId = "3118119317";//钉钉后台建立的小程序id
|
//斯莫尔
|
string agentId = "3151454458";//钉钉后台建立的小程序id
|
string userIdList = HName;//钉钉人员的id
|
string deptIdList = "0"; // 空字符串表示不指定部门
|
string toAllUser = "false";
|
string message = HContext;
|
|
// 调用方法发送消息
|
response = await msg.SendTextMessage(accessToken, agentId, userIdList, deptIdList, toAllUser, message);
|
ResponseData responseData = JsonConvert.DeserializeObject<ResponseData>(response);
|
if (responseData.errcode == 0)
|
{
|
DBHelper.CustomWriteLog("钉钉发送信息成功!", DateTime.Now.ToString("yyyy-MM-dd"));
|
}
|
else
|
{
|
Console.WriteLine(responseData.errcode);
|
DBHelper.CustomWriteLog("钉钉返回信息:" + response, DateTime.Now.ToString("yyyy-MM-dd"));
|
}
|
}
|
}
|
}
|
|
//查找模具保养预警
|
string newsql = "SELECT a.HInterID,b.HEntryID,c.HMouldNo 模具编码, c.HName 模具名称,B.HErrBeginQty,HSendFlag,d.HName 模具部门 FROM Sc_MouldMaintainPlanBillMain a " +
|
"INNER JOIN Sc_MouldMaintainPlanBillSub_Plan b ON a.HInterID = b.HInterID " +
|
"LEFT JOIN Gy_MouldFileMain c ON a.HMouldID = c.HInterID " +
|
"LEFT JOIN Gy_Department d ON a.HDeptID = d.HItemID " +
|
" WHERE b.HErrBeginQty <= (select b.HUseNowQty+sum(HUseLife) from Sc_MouldLifeUseBillSub WHERE HMaterID = a.HMouldID) and b.HSendFlag = '0'";
|
DBHelper.CustomWriteLog("查询模具保养计划:"+newsql, DateTime.Now.ToString("yyyy-MM-dd"));
|
dt = oCN.RunProcReturn(newsql, "Sb_EquipMaintainPlanBillMain");
|
//模具保养预警自动发信息
|
if (dt.Tables[0].Rows.Count > 0)
|
{
|
string HContext = "";
|
|
for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
|
{
|
HContext = "模具编码为:" + dt.Tables[0].Rows[i]["模具编码"].ToString() + ",模具名称为:" + dt.Tables[0].Rows[i]["模具名称"].ToString() + ",已到保养预警次数,需尽快进行保养";
|
//更新模具保养计划预警 子表
|
string sql1 = "update Sc_MouldMaintainPlanBillSub_Plan set HSendFlag='1' where HInterID=" + dt.Tables[0].Rows[i]["HInterID"].ToString() + " and HEntryID=" + dt.Tables[0].Rows[i]["HEntryID"].ToString() + ""; ;
|
oCN.RunProc(sql1);
|
DBHelper.CustomWriteLog("模具保养计划预警:" + sql1 + " 更新子表语句:" + sql1, DateTime.Now.ToString("yyyy-MM-dd"));
|
HDeptName = dt.Tables[0].Rows[i]["模具部门"].ToString();
|
string sql2 = "select a.HDingDingUserID 钉钉id,a.Czymc 接收人 from Gy_Czygl a left join System_UserGroupInfo b on a.Czybm = b.UserId" +
|
" left join System_UserGroup c on b.GroupId = c.GroupID where c.GroupName = '模具保养计划预警接收人'";
|
DBHelper.CustomWriteLog("模具保养计划预警接收人:" + sql2, DateTime.Now.ToString("yyyy-MM-dd"));
|
dts = oCN.RunProcReturn(sql2, "Gy_Czygl");
|
for (int j = 0; j < dts.Tables[0].Rows.Count; j++)
|
{
|
string HName = dts.Tables[0].Rows[j]["钉钉id"].ToString();
|
string Stares = dts.Tables[0].Rows[j]["接收人"].ToString();
|
MSG msg = new MSG();
|
//获取企业的access_token的值
|
string response = msg.GetAccessToken(appKey, appSecret);
|
JObject responseJson = JObject.Parse(response);
|
// 获取access_token的值
|
string accessToken = responseJson["accessToken"].ToString();
|
|
//调用方法发送消息
|
string agentId = "3118119317";//钉钉后台建立的小程序id
|
//斯莫尔
|
//string agentId = "3151454458";//钉钉后台建立的小程序id
|
string userIdList = HName;//钉钉人员的id
|
string deptIdList = "0"; // 空字符串表示不指定部门
|
string toAllUser = "false";
|
string message = HContext;
|
|
// 调用方法发送消息
|
response = await msg.SendTextMessage(accessToken, agentId, userIdList, deptIdList, toAllUser, message);
|
ResponseData responseData = JsonConvert.DeserializeObject<ResponseData>(response);
|
if (responseData.errcode == 0)
|
{
|
DBHelper.CustomWriteLog("钉钉发送信息成功!", DateTime.Now.ToString("yyyy-MM-dd"));
|
}
|
else
|
{
|
Console.WriteLine(responseData.errcode);
|
DBHelper.CustomWriteLog("钉钉返回信息:" + response, DateTime.Now.ToString("yyyy-MM-dd"));
|
}
|
}
|
}
|
}
|
// 等待一分钟
|
await Task.Delay(TimeSpan.FromMinutes(1));
|
}
|
|
}
|
public class ResponseData
|
{
|
public int errcode { get; set; }
|
public string errmsg { get; set; }
|
public long task_id { get; set; }
|
public string request_id { get; set; }
|
}
|
}
|
}
|