WebAPI/Controllers/SCGL/Sc_MESTransFerWorkBillController.cs
@@ -1,4 +1,6 @@
using DBUtility;
using DAL;
using DBUtility;
using DLL;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
@@ -7,8 +9,11 @@
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Timers;
using System.Threading.Tasks;
using System.Web.Http;
using WebAPI.Models;
using System.Threading;
namespace WebAPI.Controllers.SCGL
{
@@ -43,7 +48,7 @@
        /// <returns></returns>
        [Route("Sc_MESTransFerWorkBill/SaveGetMESTransFerWorkFrom")]
        [HttpPost]
        public object SaveGetMESTransFerWorkFrom([FromBody] JObject msg)
        public object SaveGetMESTransFerWorkFromAsync([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
@@ -151,10 +156,19 @@
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    //string[] arrStr = oItem.HSendMan.Split(','); //发送人
                    //arrStr = oItem.HReceiveMan.Split(',');  //接收人
                    string[] arrStr = oItem.HCopyMan.Split(',');  //抄送人
                    string[] arrStr;
                    if (string.IsNullOrEmpty(oItem.HCopyMan))
                    {
                        arrStr = new string[0];  // 如果 oItem.HCopyMan 为空,则赋值为空数组
                    }
                    else
                    {
                        arrStr = oItem.HCopyMan.Split(',');  // 否则,使用 Split(',') 方法拆分字符串
                    }
                    List<string> b = new List<string>(arrStr);
                    b.Add(oItem.HSendMan);
                    b.Add(oItem.HReceiveMan);
@@ -165,12 +179,13 @@
                        Models.ClsOA_ErrMsgBackBillSub2 sb = new Models.ClsOA_ErrMsgBackBillSub2();
                        sb.HEntryID = i;
                        sb.HReceiveMan = arrStr[i - 1];
                        if (arrStr[i-1].ToString() == oItem.HSendMan)
                        if (arrStr[i - 1].ToString() == oItem.HSendMan)
                        {
                            sb.HReadFlag = true;
                        }
                        oBill.DetailColl2.Add(sb);
                    }
                    oBill.omodel = oItem;
                }
               
@@ -180,7 +195,7 @@
                bool bResult;
                if (refSav == "Add")
                {
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    if (bResult)
                    {
                        objJsonResult.HInterID = DBUtility.ClsPub.sExeReturnInfo; //返回主ID
@@ -196,8 +211,8 @@
                            {
                                objJsonResult.Verify = "N";
                            }
                        }
                    }
                        }
                    }
                }
                else
@@ -516,14 +531,15 @@
                                        A.HQty,A.HSendType,
                                        A.HDeptID,D.HName HDeptName, A.HSendMan, 
                                        A.HReceiveMan,A.HCopyMan,A.HHasten,
                                        A.HLevel,A.HMaterName,A.HMaterModel,
                                        A.HLevel,A.HMaterNumber,A.HMaterName,A.HMaterModel,
                                        B.HReadFlag, A.HMaker,A.HMakeDate,A.HUpDater,A.HUpDateDate,A.HChecker,A.HCheckDate,A.HCloseMan,A.HCloseDate,A.HDeleteMan,A.HDeleteDate,
                                        A.HSourceInterID,A.HSourceEntryID,A.HSourceBillNo,A.HSourceBillType,
                              A.HHandleEmpID,f.HName HHandleEmpName
                              A.HHandleEmpID,f.HName HHandleEmpName,A.HErrMsgBackTypeID,g.HName HErrMsgBackTypeName
                                        from OA_ErrMsgBackBillMain A 
                                        inner join  OA_ErrMsgBackBillSub2 B on A.HInterID=B.HInterID 
                                        left join Gy_Department D on A.HDeptID=D.HItemID
                              left join Gy_Employee f on A.HHandleEmpID=f.HItemID
                              left join Gy_Employee f on A.HHandleEmpID=f.HItemID
                                        left join Gy_ErrMsgBackType g on A.HErrMsgBackTypeID=g.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)
@@ -1012,6 +1028,7 @@
                {
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    _ = SendDingDingAsync(oBill.omodel.HSendMan, oBill.omodel.HHandleEmpID,oBill.omodel.HDescription,"");
                }
                else if (refSav == "Update")
                {
@@ -1986,6 +2003,7 @@
                {
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    _ = SendDingDingAsync(oBill.omodel.HSendMan, 1, oBill.omodel.HDescription, oBill.omodel.HReceiveMan);
                }
                else if (refSav == "Update")
                {
@@ -2902,6 +2920,7 @@
                {
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    _ = SendDingDingAsync(oBill.omodel.HSendMan, 1, oBill.omodel.HDescription, oBill.omodel.HReceiveMan);
                }
                else if (refSav == "Update")
                {
@@ -3815,6 +3834,7 @@
                {
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    _ = SendDingDingAsync(oBill.omodel.HReceiveMan, 0, oBill.omodel.HDescription, oBill.omodel.HCopyMan);
                }
                else if (refSav == "Update")
                {
@@ -6590,5 +6610,269 @@
        #endregion
        #endregion
        #region 异常反馈 接收,处理,验收单保存发送消息
        /// <summary>
        /// 异常反馈 接收,处理,验收单保存发送消息
        /// </summary>
        /// <param name="HSendMan"></param>
        /// <param name="HHandleEmpID"></param>
        /// <param name="HDescription"></param>
        /// <param name="HCopyMan"></param>
        /// <returns></returns>
        public async Task<object> SendDingDingAsync(string HSendMan, int HHandleEmpID,string HDescription,string HCopyMan)
        {
            string concatenatedNames = "";
            Cls_DDMsg msg = new Cls_DDMsg();
            string appKey = "dingrsrzhdyn3mlaof95";
            string appSecret = "RAqH6YtZnPLCpDbuqfaYQkKkVtVdS0wqfC8I26X6qiS-8eoCJCNrzx3fubGND4Sq";
            if (HHandleEmpID==0) //异常反馈验收单保存  将消息 发送给 接收人,指派处理人,全部抄送人
            {
                string HReceiveMan = HSendMan;
                string[] names = HCopyMan.Split(',');
                string sqlNames = "";
                foreach (string name in names)
                {
                    sqlNames += "'" + name.Trim() + "',";
                }
                sqlNames = sqlNames.TrimEnd(',');
                //获取指派处理人,发送人的钉钉id
                string sql1 = "select HDingDingUserID 钉钉id from Gy_Czygl where Czymc in ('" + HReceiveMan + "'," + sqlNames + ")";
                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);
            }
            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);
            }
            else
            {
                //查询指派处理人
                string sql = "select HName from Gy_Employee where HItemID='" + HHandleEmpID + "'";
                ds = oCN.RunProcReturn(sql, "Gy_Employee");
                string HHandleEmpName = ds.Tables[0].Rows[0]["HName"].ToString();
                //获取指派处理人,发送人的钉钉id
                string sql1 = "select HDingDingUserID 钉钉id from Gy_Czygl where Czymc in ('" + HSendMan + "','" + HHandleEmpName + "')";
                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);
            }
            //获取企业的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 userIdList = concatenatedNames;//钉钉人员的id
            string deptIdList = "0"; // 空字符串表示不指定部门
            string toAllUser = "false";
            string message = HDescription;
            response = await msg.SendTextMessage(accessToken, agentId, userIdList, deptIdList, toAllUser, message);
            Console.WriteLine(response);
            return response;
        }
        #endregion
        #region  异常反馈单查询(接收的,发送的,抄送的)
        [Route("Sc_MESTransFerWorkBill/GetSc_MESTransFerWorkBillQuery")]
        [HttpGet]
        public object GetSc_MESTransFerWorkBillQuery(string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                ds = oCN.RunProcReturn("exec h_p_OA_ErrMsgBackSelfQuery " + user, "h_p_OA_ErrMsgBackSelfQuery");
                if (ds.Tables[0].Rows.Count != 0 || ds != null)
                {
                    //添加列名
                    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;
                    objJsonResult.list = columnNameList;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无数据";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 报工台跳转异常反馈单 弹窗获取生产状态临时表的 物料 数量 信息
        [Route("Sc_MESTransFerWorkBill/Get_Sc_ICMOBillStatus")]
        [HttpGet]
        public object Get_Sc_ICMOBillStatus(string HSourceBill)
        {
            try
            {
                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 + "'";
                ds = oCN.RunProcReturn(sql, "Sc_ICMOBillStatus_Tmp");
                //添加列名
                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/Get_ErrMsgBackType")]
        [HttpGet]
        public object Get_ErrMsgBackType(string TypeName)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                string sql = "select HItemID,HName from Gy_ErrMsgBackType where HName='" + TypeName + "'";
                ds = oCN.RunProcReturn(sql, "Gy_ErrMsgBackType");
                //添加列名
                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/Get_UserSuperiors")]
        [HttpGet]
        public object Get_UserSuperiors(string HName)
        {
            try
            {
                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))";
                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");
                //添加列名
                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
    }
}