zrg
2024-11-14 ea9bc943bdf7c382f3dd609582e7518c6f9a5841
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
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; }
        }
    }
}