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,7 +156,7 @@
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    //string[] arrStr = oItem.HSendMan.Split(','); //发送人
                    //arrStr = oItem.HReceiveMan.Split(',');  //接收人
                    string[] arrStr = oItem.HCopyMan.Split(',');  //抄送人
@@ -165,7 +170,7 @@
                        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;
                        }
@@ -198,6 +203,7 @@
                            }
                        }
                    }
                    SaveOA_ErrMsgBackBillSub(msg2);//第一次保存发送钉钉
                }
                else
@@ -396,7 +402,7 @@
                if (sWhere == null || sWhere.Equals(""))
                {
                    string sql = "select * from h_v_OA_ErrMsgBackBillList order by 单据号 desc";
                    ds = oCN.RunProcReturn(sql, "p_v_OA_ErrMsgBackBillList");
                    ds = oCN.RunProcReturn(sql, "h_v_OA_ErrMsgBackBillList");
                }
                else
                {
@@ -518,10 +524,12 @@
                                        A.HReceiveMan,A.HCopyMan,A.HHasten,
                                        A.HLevel,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.HSourceInterID,A.HSourceEntryID,A.HSourceBillNo,A.HSourceBillType,
                              A.HHandleEmpID,f.HName HHandleEmpName
                                        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
                                        where A.HInterID='" + HID + "' and b.HEntryID='" + HEntryID + "'");
            var dataSet = oCN.RunProcReturn(sql, "OA_ErrMsgBackBillMain");
            if (dataSet == null || dataSet.Tables[0].Rows.Count == 0)
@@ -5523,16 +5531,16 @@
            //判断会计期是否合理
            string s = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(DateTime.Now, ref sYear, ref sPeriod, ref s) == false)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = s;
                objJsonResult.data = null;
                return objJsonResult;
            }
            //int sYear = 0;
            //int sPeriod = 0;
            //if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(DateTime.Now, ref sYear, ref sPeriod, ref s) == false)
            //{
            //    objJsonResult.code = "0";
            //    objJsonResult.count = 0;
            //    objJsonResult.Message = s;
            //    objJsonResult.data = null;
            //    return objJsonResult;
            //}
            ListModels oListModels = new ListModels();
            try
@@ -5613,9 +5621,17 @@
                    //string[] arrStr = oItem.HSendMan.Split(','); //发送人
                    //arrStr = oItem.HReceiveMan.Split(',');  //接收人
                    string[] arrStr = oItem.HCopyMan.Split(',');  //抄送人
                    List<string> b = new List<string>(arrStr);
                    b.Add(oItem.HReceiveMan);
                    arrStr = b.ToArray();
                    if (!string.IsNullOrEmpty(oItem.HCopyMan))
                    {
                        arrStr = oItem.HCopyMan.Split(',');  // 抄送人
                        List<string> b = new List<string>(arrStr);
                        b.Add(oItem.HReceiveMan);
                        arrStr = b.ToArray();
                    }
                    else
                    {
                        arrStr = oItem.HReceiveMan.Split(',');//接收人
                    }
                    //抄送人表体数据
                    for (int i = 1; i <= arrStr.Length; i++)
                    {
@@ -5733,18 +5749,17 @@
        #region 工作联系单编辑获取数据
        [Route("Sc_MESTransFerWorkBill/GetOA_WorkLinkBillListCheckDetai")]
        [HttpGet]
        public object GetOA_WorkLinkBillListCheckDetai(string HID, string HEntryID)
        public object GetOA_WorkLinkBillListCheckDetai(string HID)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                string sql = string.Format(@"select A.*,B.HEntryID,B.HReadFlag,D.HName HDeptName,e.HName HEvaluateStatusName
                string sql = string.Format(@"select A.*,D.HName HDeptName,e.HName HEvaluateStatusName
                                        from OA_WorkLinkBillMain A 
                                        inner join  OA_WorkLinkBillSub2 B on A.HInterID=B.HInterID
                                        left join Gy_Department D on A.HDeptID=D.HItemID
                                        left join Gy_EvaluateStatus AS e ON A.HEvaluateStatusID = e.HItemID
                                        where A.HInterID='" + HID + "' and b.HEntryID='" + HEntryID + "'"); ;
                                        where A.HInterID='" + HID + "'" ); ;
                ds = oCN.RunProcReturn(sql, "OA_WorkLinkBillMain");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
@@ -6283,7 +6298,7 @@
        #region 工作联系单回复
        /// <summary>
        /// 异常反馈单
        /// 工作联系单
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
@@ -6312,16 +6327,16 @@
            //判断会计期是否合理
            string s = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(DateTime.Now, ref sYear, ref sPeriod, ref s) == false)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = s;
                objJsonResult.data = null;
                return objJsonResult;
            }
            //int sYear = 0;
            //int sPeriod = 0;
            //if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(DateTime.Now, ref sYear, ref sPeriod, ref s) == false)
            //{
            //    objJsonResult.code = "0";
            //    objJsonResult.count = 0;
            //    objJsonResult.Message = s;
            //    objJsonResult.data = null;
            //    return objJsonResult;
            //}
            ListModels oListModels = new ListModels();
            try
@@ -6459,6 +6474,179 @@
        }
        #endregion
        #region 工作联系单催促
        [Route("Sc_MESTransFerWorkBill/UpdateOA_WorkLinkBillHHasten")]
        [HttpGet]
        public object UpdateOA_WorkLinkBillHHasten(Int64 HInterID,string CurUserName)
        {
            try
            {
                //权限
                if (!DBUtility.ClsPub.Security_Log_second("OA_WorkLinkBill_Edit", 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无保存权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //HInterID数据判断
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);
                DAL.ClsOA_WorkLinkBill oBill = new DAL.ClsOA_WorkLinkBill();               //实例化单据操作类,用于进行相关操作
                //针对需要进行的操作,检验当前单据的状态是否支持需要进行的操作
                if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo))                    //根据HInterID获取该单据的数据
                {
                    if (oBill.omodel.HCloseMan.Trim() != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已关闭!不能催促!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (oBill.omodel.HDeleteMan.Trim() != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已作废!不能催促!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不存在!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                string sql = "update OA_WorkLinkBillMain set HHasten = HHasten + 1 where HInterID = " + HInterID ;
                oCN.RunProc(sql);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工作联系单根据源单ID查看是否有对应联系单
        [Route("Sc_MESTransFerWorkBill/GetOA_WorkLinkBillListBySourceID")]
        [HttpGet]
        public object GetOA_WorkLinkBillListBySourceID(string HRelationInterID, string HRelationEntryID)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                string sql = string.Format(@"select A.*,D.HName HDeptName,e.HName HEvaluateStatusName
                                        from OA_WorkLinkBillMain A
                                        left join Gy_Department D on A.HDeptID=D.HItemID
                                        left join Gy_EvaluateStatus AS e ON A.HEvaluateStatusID = e.HItemID
                                        where A.HRelationInterID='" + HRelationInterID + "' and A.HRelationEntryID= '"+ HRelationEntryID+"'"); ;
                ds = oCN.RunProcReturn(sql, "OA_WorkLinkBillMain");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "false!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "查询数据异常,请与管理员联系!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
        #region 异常反馈单保存后,往子表里面去插入数据
        public object SaveOA_ErrMsgBackBillSub(string msg2)
        {
             msg2 = "[" + msg2.ToString() + "]";
            List<ClsOA_ErrMsgBackBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsOA_ErrMsgBackBillMain>>(msg2);
            long HInterID = mainList[0].HInterID;//递入type得到的单据ID
            string HReceiveMan = mainList[0].HReceiveMan;//接收人
            string HDescription = mainList[0].HDescription;//内容
            int HEntryID = 1;
            string sql = "insert into OA_ErrMsgBackBillSub2 values('" + HInterID + "','" + HEntryID + "','" + HReceiveMan + "','0')";
            oCN.RunProcReturn(sql, "OA_ErrMsgBackBillSub2");
            //直接发送钉钉消息  s
             FistDingDingMesAsync(HReceiveMan, HDescription);
            objJsonResult.code = "0";
            objJsonResult.count = 0;
            objJsonResult.Message = "插入成功,开始执行定时任务,钉钉发送消息";
            objJsonResult.data = 1;
            return objJsonResult;
        }
        /// <summary>
        /// 异常反馈单第一次保存的时候进行发送消息
        /// </summary>
        /// <param name="HReceiveMan"></param>
        /// <param name="HDescription"></param>
        public async void FistDingDingMesAsync(string HReceiveMan, string HDescription)
        {
            ds = oCN.RunProcReturn("select * from Gy_Czygl where Czymc='" + HReceiveMan + "'", "Gy_Czygl");
            string DDUserID = ds.Tables[0].Rows[0]["DDUserID"].ToString();  //钉钉用户的id
            Cls_DDMsg msg = new Cls_DDMsg();
            string appKey = "dingrsrzhdyn3mlaof95";
            string appSecret = "RAqH6YtZnPLCpDbuqfaYQkKkVtVdS0wqfC8I26X6qiS-8eoCJCNrzx3fubGND4Sq";
            //获取企业的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 deptIdList = "0"; // 空字符串表示不指定部门
            string toAllUser = "false";
            string message = HDescription;//异常反馈单的内容
            response = await msg.SendTextMessage(accessToken, agentId, DDUserID, deptIdList, toAllUser, message);
            Console.WriteLine($"初始消息发送结果: {response}");
        }
        #endregion
    }
}