钉钉消息发送(安装dotnet-sdk-3.1.426-win-x64)
zrg
2024-11-14 ea9bc943bdf7c382f3dd609582e7518c6f9a5841
DingDingMsg_EarlyWarning/Program.cs
@@ -15,20 +15,23 @@
        static async Task Main(string[] args)
        {
            //本地
            //string appKey = "dingrsrzhdyn3mlaof95";
            //string appSecret = "RAqH6YtZnPLCpDbuqfaYQkKkVtVdS0wqfC8I26X6qiS-8eoCJCNrzx3fubGND4Sq";
            string appKey = "dingrsrzhdyn3mlaof95";
            string appSecret = "RAqH6YtZnPLCpDbuqfaYQkKkVtVdS0wqfC8I26X6qiS-8eoCJCNrzx3fubGND4Sq";
            //斯莫尔
            string appKey = "dingkdddbhdcssk7jduw";
            string appSecret = "iv07c-GLfJPnzfJaNAAOfJDl3Z-eODvDAhlInMZCZhGorkle5Evbaxx3ImylvdjQ";
            Console.WriteLine("程序正在执行,请不要关闭!!!!");
            //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 设备名称 FROM Sb_EquipMaintainPlanBillMain a " +
                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 " +
                    "WHERE CAST(CONVERT(datetime, b.HErrBeginTime, 120) AS DATE) = CAST(GETDATE() AS DATE) and HSendFlag = '0'";
                    "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)
@@ -37,14 +40,15 @@
                    for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
                    {
                        HContext = "设备编码为:"+dt.Tables[0].Rows[i]["设备编码"].ToString()+ ",设备名称为:"+dt.Tables[0].Rows[i]["设备名称"].ToString()+",已到保养预警日期,需尽快进行保养";
                        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()+""; ;
                        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 = '设备保养计划预警接收人'";
                            "  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++)
                        {
@@ -70,7 +74,7 @@
                            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
@@ -78,15 +82,17 @@
                                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 FROM Sc_MouldMaintainPlanBillMain a " +
                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 " +
                    "WHERE b.HErrBeginQty >= (select sum(HUseLife) from Sc_MouldLifeUseBillSub WHERE HMaterID = a.HMouldID) and b.HSendFlag = '0'";
                    "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)
@@ -95,14 +101,15 @@
                    for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
                    {
                        HContext = "模具编码为:" + dt.Tables[0].Rows[i]["模具编码"].ToString() + ",模具名称为:" + dt.Tables[0].Rows[i]["模具名称"].ToString() + ",已到保养预警日期,需尽快进行保养";
                        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 = '模具保养计划预警接收人'";
                            "  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++)
                        {
@@ -116,9 +123,9 @@
                            string accessToken = responseJson["accessToken"].ToString();
                            //调用方法发送消息           
                            //string agentId = "3118119317";//钉钉后台建立的小程序id
                            string agentId = "3118119317";//钉钉后台建立的小程序id
                            //斯莫尔
                            string agentId = "3151454458";//钉钉后台建立的小程序id
                            //string agentId = "3151454458";//钉钉后台建立的小程序id
                            string userIdList = HName;//钉钉人员的id
                            string deptIdList = "0"; // 空字符串表示不指定部门
                            string toAllUser = "false";