|  |  | 
 |  |  |                 return new ApiResult<DataSet> { code = -1, msg = "ID不能为空" }; | 
 |  |  |             SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); | 
 |  |  |             string sql =string.Format(@"select A.HInterID,b.HEntryID,A.HBillStatus,A.HBillNo,A.HDate,A.HContext,A.HDescription,A.HRemark, | 
 |  |  |                                         A.HQty,A.HSendType, | 
 |  |  |                                       A.HQty,A.HSendType,a.HForm,a.HChangeNote,a.HNote,a.HBadProcMan,f1.HName HBadProcManName, | 
 |  |  |                               a.HQEMan,f2.HName HQEManName,a.HSourceID,s.HName HSourceName,a.HShiftsID,s1.HName HShiftsName, | 
 |  |  |                                         A.HDeptID,D.HName HDeptName, A.HSendMan,  | 
 |  |  |                                         A.HReceiveMan,A.HCopyMan,A.HHasten, | 
 |  |  |                                         A.HLevel,A.HMaterNumber,A.HMaterName,A.HMaterModel, | 
 |  |  | 
 |  |  |                                         left join Gy_Department D on A.HDeptID=D.HItemID | 
 |  |  |                               left join Gy_Employee f on A.HHandleEmpID=f.HItemID      | 
 |  |  |                                         left join Gy_ErrMsgBackType g on A.HErrMsgBackTypeID=g.HItemID | 
 |  |  |                                         left join Gy_Employee f1 on a.HBadProcMan=f1.HItemID | 
 |  |  |                               left join Gy_Employee f2 on a.HQEMan=f2.HItemID | 
 |  |  |                               left join Gy_Source s on a.HSourceID=s.HItemID | 
 |  |  |                               left join Gy_Shifts s1 on a.HShiftsID=s1.HItemID | 
 |  |  |                                         where A.HInterID='" + HID + "' and b.HEntryID='" + HEntryID + "'"); | 
 |  |  |             var dataSet = oCN.RunProcReturn(sql, "OA_ErrMsgBackBillMain"); | 
 |  |  |             if (dataSet == null || dataSet.Tables[0].Rows.Count == 0) | 
 |  |  | 
 |  |  |  | 
 |  |  |         [Route("OA_ErrMsgBackSignBill_BrushCard/ErrMsgBackReceive")] | 
 |  |  |         [HttpGet] | 
 |  |  |         public object ErrMsgBackReceive(string sWhere, string user) | 
 |  |  |         public object ErrMsgBackReceive(string sWhere,string num, string user) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  | 
 |  |  |                     objJsonResult.data = null; | 
 |  |  |                     return objJsonResult; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (sWhere == null || sWhere.Equals("")) | 
 |  |  |                 if (num=="2")       //报工台获取刷卡签到数据 | 
 |  |  |                 { | 
 |  |  |                     string sql = "select * from h_v_OA_ErrMsgBackReceiveBillList_BrushCard order by 单据号 desc"; | 
 |  |  |                     ds = oCN.RunProcReturn(sql, "h_v_OA_ErrMsgBackReceiveBillList_BrushCard"); | 
 |  |  |                     if (sWhere == null || sWhere.Equals("")) | 
 |  |  |                     { | 
 |  |  |                         string sql = "select * from h_v_SingOA_ErrMsgBackList_BrushCard order by 单据号 desc"; | 
 |  |  |                         ds = oCN.RunProcReturn(sql, "h_v_SingOA_ErrMsgBackList_BrushCard"); | 
 |  |  |                     } | 
 |  |  |                     else | 
 |  |  |                     { | 
 |  |  |                         string sql1 = "select * from h_v_SingOA_ErrMsgBackList_BrushCard where 1 = 1 "; | 
 |  |  |                         string sql = sql1 + sWhere + " order by 单据号 desc"; | 
 |  |  |                         ds = oCN.RunProcReturn(sql, "h_v_SingOA_ErrMsgBackList_BrushCard"); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 else   //原有的刷卡签到获取数据 | 
 |  |  |                 { | 
 |  |  |                     string sql1 = "select * from h_v_OA_ErrMsgBackReceiveBillList_BrushCard where 1 = 1 "; | 
 |  |  |                     string sql = sql1 + sWhere + " order by 单据号 desc"; | 
 |  |  |                     ds = oCN.RunProcReturn(sql, "h_v_OA_ErrMsgBackReceiveBillList_BrushCard"); | 
 |  |  |                     { | 
 |  |  |                         if (sWhere == null || sWhere.Equals("")) | 
 |  |  |                         { | 
 |  |  |                             string sql = "select * from h_v_OA_ErrMsgBackReceiveBillList_BrushCard order by 单据号 desc"; | 
 |  |  |                             ds = oCN.RunProcReturn(sql, "h_v_OA_ErrMsgBackReceiveBillList_BrushCard"); | 
 |  |  |                         } | 
 |  |  |                         else | 
 |  |  |                         { | 
 |  |  |                             string sql1 = "select * from h_v_OA_ErrMsgBackReceiveBillList_BrushCard where 1 = 1 "; | 
 |  |  |                             string sql = sql1 + sWhere + " order by 单据号 desc"; | 
 |  |  |                             ds = oCN.RunProcReturn(sql, "h_v_OA_ErrMsgBackReceiveBillList_BrushCard"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                  | 
 |  |  |                 | 
 |  |  |  | 
 |  |  |                 //添加列名 | 
 |  |  |                 foreach (DataColumn col in ds.Tables[0].Columns) | 
 |  |  | 
 |  |  |                 { | 
 |  |  |  | 
 |  |  |                     bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                     _ = SendDingDingAsync(oBill.omodel.HSendMan, 1, oBill.omodel.HDescription, oBill.omodel.HReceiveMan); | 
 |  |  |                     _ = SendDingDingAsync(oBill.omodel.HSendMan, 2, oBill.omodel.HDescription, oBill.omodel.HReceiveMan); | 
 |  |  |                 } | 
 |  |  |                 else if (refSav == "Update") | 
 |  |  |                 { | 
 |  |  | 
 |  |  |             string appKey = ""; | 
 |  |  |             string appSecret = ""; | 
 |  |  |             string sReturn = ""; | 
 |  |  |             string agentIds = ""; | 
 |  |  |             Cls_DDMsg msg = new Cls_DDMsg(); | 
 |  |  |             if (oSystemParameter.ShowBill(ref sReturn) == true) | 
 |  |  |             { | 
 |  |  |                 //系统参数是否为私有云模式,N为本地,Y为斯莫尔 | 
 |  |  |                 //系统参数是否 N为本地,Y为斯莫尔 | 
 |  |  |                 if (oSystemParameter.omodel.OA_ErrMsgBackBill_SendDingDingMsg == "N") | 
 |  |  |                 { | 
 |  |  |                      appKey = "dingrsrzhdyn3mlaof95"; | 
 |  |  |                     appKey = "dingrsrzhdyn3mlaof95"; | 
 |  |  |                      appSecret = "RAqH6YtZnPLCpDbuqfaYQkKkVtVdS0wqfC8I26X6qiS-8eoCJCNrzx3fubGND4Sq"; | 
 |  |  |                     agentIds = "3118119317"; | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 else if (oSystemParameter.omodel.OA_ErrMsgBackBill_SendDingDingMsg == "Y") | 
 |  |  |                 { | 
 |  |  |                      appKey = "dingkdddbhdcssk7jduw"; | 
 |  |  |                      appSecret = "iv07c-GLfJPnzfJaNAAOfJDl3Z-eODvDAhlInMZCZhGorkle5Evbaxx3ImylvdjQ"; | 
 |  |  |                     appKey = "dingkdddbhdcssk7jduw"; | 
 |  |  |                     appSecret = "iv07c-GLfJPnzfJaNAAOfJDl3Z-eODvDAhlInMZCZhGorkle5Evbaxx3ImylvdjQ"; | 
 |  |  |                     agentIds = "3151454458"; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if (HHandleEmpID==0) //异常反馈验收单保存  将消息 发送给 接收人,指派处理人,全部抄送人  | 
 |  |  |             if (HHandleEmpID==0) //  | 
 |  |  |             { | 
 |  |  |                 string HReceiveMan = HSendMan; | 
 |  |  |                 string[] names = HCopyMan.Split(','); | 
 |  |  | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 concatenatedNames = string.Join(",", HNames); | 
 |  |  |                 HDescription = HDescription + "--已验收"; | 
 |  |  |             } | 
 |  |  |             else if (HHandleEmpID==1)//异常反馈签到单,异常反馈处理单  将消息 发送给 发送人,接收人 | 
 |  |  |             else if (HHandleEmpID==1)//异常反馈处理单  将消息 发送给 发送人,接收人 | 
 |  |  |             { | 
 |  |  |                 //获取发送人  接收人 | 
 |  |  |                 string HReceiveMan = HCopyMan; | 
 |  |  |                 string sql1 = "select HDingDingUserID 钉钉id from Gy_Czygl where Czymc in ('" + HSendMan + "','" + HReceiveMan + "')"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql1, "Gy_Czygl");                    | 
 |  |  |                 List<string> HNames = new List<string>(); | 
 |  |  |                 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) | 
 |  |  |                 { | 
 |  |  |                     string HName = ds.Tables[0].Rows[i]["钉钉id"].ToString(); | 
 |  |  |                     HNames.Add(HName); | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 concatenatedNames = string.Join(",", HNames); | 
 |  |  |                 HDescription = HDescription + "--已签到"; | 
 |  |  |             } | 
 |  |  |             else if (HHandleEmpID == 2)//异常反馈处理单  将消息 发送给 发送人,接收人 | 
 |  |  |             { | 
 |  |  |                 //获取发送人  接收人 | 
 |  |  |                 string HReceiveMan = HCopyMan; | 
 |  |  | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 concatenatedNames = string.Join(",", HNames); | 
 |  |  |                 HDescription = HDescription + "--已处理"; | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 concatenatedNames = string.Join(",", HNames); | 
 |  |  |                 HDescription = HDescription + "--已接收"; | 
 |  |  |             } | 
 |  |  |            | 
 |  |  |             //获取企业的access_token的值 | 
 |  |  | 
 |  |  |             string accessToken = responseJson["accessToken"].ToString(); | 
 |  |  |  | 
 |  |  |             //调用方法发送消息            | 
 |  |  |             string agentId = "3118119317";//钉钉后台建立的小程序id | 
 |  |  |             string agentId = agentIds;//钉钉后台建立的小程序id | 
 |  |  |             string userIdList = concatenatedNames;//钉钉人员的id | 
 |  |  |             string deptIdList = "0"; // 空字符串表示不指定部门 | 
 |  |  |             string toAllUser = "false"; | 
 |  |  | 
 |  |  |             { | 
 |  |  |                 List<object> columnNameList = new List<object>(); | 
 |  |  |  | 
 |  |  |                 string sql = "select a.HSourceBillNo 流转卡号,a.HSourceBillType 流转卡类型,a.HSourceInterID 流转卡主内码,a.HSourceEntryID 流转卡子内码,b.HNumber 物料代码,b.HName 物料名称,b.HModel 规格型号,a.HPlanQty 计划数量 from Sc_ICMOBillStatus_Tmp a left join Gy_Material b on a.HMaterID=b.HItemID where HSourceBillNo='" + HSourceBill + "'"; | 
 |  |  |                 string sql = "select a.HSourceBillNo 流转卡号,a.HSourceBillType 流转卡类型,a.HSourceInterID 流转卡主内码,a.HSourceEntryID 流转卡子内码,b.HNumber 物料代码,b.HName 物料名称,b.HModel 规格型号,a.HDatePlanQty 计划数量,a.HSourceID,c.HName 生产资源 from Sc_ICMOBillStatus_Tmp a " + | 
 |  |  |                     "left join Gy_Material b on a.HMaterID=b.HItemID  left join Gy_Source c on a.HSourceID=c.HItemID where HSourceBillNo='" + HSourceBill + "'"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql, "Sc_ICMOBillStatus_Tmp"); | 
 |  |  |  | 
 |  |  |                 //添加列名 | 
 |  |  | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 //string sReturn = ""; | 
 |  |  |                 List<object> columnNameList = new List<object>(); | 
 |  |  |                 //根据当前人获取职务 | 
 |  |  |                 string sql = "select a.Czymc 用户名称,c.GroupName 职务 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 a.Czymc = '"+HName+"'"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql, "Gy_ErrMsgBackType"); | 
 |  |  |                 string Job = ds.Tables[0].Rows[0]["职务"].ToString(); | 
 |  |  |                 //根据职务找到他的上级 | 
 |  |  |                 string sql1 = "select *  from Gy_Duty where HParentID=(select HParentID from Gy_Duty where HItemID =(select HParentID from Gy_Duty group by HParentID, HName having HName = '"+Job+"' and count(*) = 1))"; | 
 |  |  |  | 
 |  |  |                 //根据职务找到他的上级,给发送人默认为当前登录人 | 
 |  |  |                 string sql1 = "select * from Gy_Duty where HItemID =(select HParentID from Gy_Duty group by HParentID, HName having HName = '" + Job + "' and count(*) = 1))"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql1, "Gy_Duty"); | 
 |  |  |  | 
 |  |  |                 string Job1= ds.Tables[0].Rows[0]["HName"].ToString();  | 
 |  |  |                 //用上级的职务找到用户 | 
 |  |  |                 string sql2 = "select 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 = '"+Job1+"'"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql2, "Gy_Czygl"); | 
 |  |  |  | 
 |  |  |                 //用职务找到用户 | 
 |  |  |                 string sql3 = "select a.Czymc 用户名称,c.GroupName 职务  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 = '" + Job1+"'"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql3, "Gy_Czygl"); | 
 |  |  |                 //添加列名 | 
 |  |  |                 foreach (DataColumn col in ds.Tables[0].Columns) | 
 |  |  |                 { | 
 |  |  |                     Type dataType = col.DataType; | 
 |  |  |                     string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; | 
 |  |  |                     columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名 | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 objJsonResult.code = "1"; | 
 |  |  |                 objJsonResult.count = 1; | 
 |  |  |                 objJsonResult.Message = "Sucess!"; | 
 |  |  |                 objJsonResult.data = ds.Tables[0]; | 
 |  |  |                 objJsonResult.list = columnNameList; | 
 |  |  |                 return objJsonResult; | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  |                 objJsonResult.code = "0"; | 
 |  |  |                 objJsonResult.count = 0; | 
 |  |  |                 objJsonResult.Message = "查询数据异常,请与管理员联系!" + ex.ToString(); | 
 |  |  |                 objJsonResult.data = null; | 
 |  |  |                 return objJsonResult; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         #endregion | 
 |  |  |  | 
 |  |  |         #region 报工台跳转异常反馈单 弹窗获取 设备编码 | 
 |  |  |  | 
 |  |  |         [Route("Sc_MESTransFerWorkBill/set_EquipFile")] | 
 |  |  |         [HttpGet] | 
 |  |  |         public object set_EquipFile(string HSourceName) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 List<object> columnNameList = new List<object>(); | 
 |  |  |  | 
 |  |  |                 string sql = "select a.HEquipFileNumber 设备编码 ,a.HName 设备名称 from Gy_EquipFileBillMain a left join Gy_Source b on a.HSourceID = b.HItemID where b.HName ='" + HSourceName   + "'"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql, "Gy_ErrMsgBackType"); | 
 |  |  |  | 
 |  |  |                 //添加列名 | 
 |  |  |                 foreach (DataColumn col in ds.Tables[0].Columns) | 
 |  |  |                 { |