生产质量日汇报单查询,增加发送钉钉时调用的方法,以及报工台点击异常按钮,输入信息保存后,进行钉钉发信息
5个文件已修改
1个文件已添加
277 ■■■■■ 已修改文件
WebAPI/Controllers/SCGL/Sc_MESTransFerWorkBillController.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/生产管理/质量汇报单/Sc_QualityReportBillController.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/DLL/钉钉消息/Cls_DDMsg.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Web.config 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/WebAPI.csproj 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/packages.config 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
@@ -6590,5 +6596,57 @@
        #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
    }
}
WebAPI/Controllers/Éú²ú¹ÜÀí/ÖÊÁ¿»ã±¨µ¥/Sc_QualityReportBillController.cs
@@ -631,7 +631,7 @@
        #region æäº¤ä¿å­˜ï¼Œå­˜ä¸»å­è¡¨åŠæ˜Žç»†è¡¨
        [Route("Sc_QualityReportBill/set_SaveBill")]
        [HttpGet]
        public object set_SaveBill(long HInterID,string HBillNo, string HChecker)
        public object set_SaveBill(long HInterID,string HBillNo, string HChecker,string HBadReasonHQty)
        {
            try
            {
@@ -659,7 +659,7 @@
                }
                //=========================================================
                //保存
                oCN.RunProc("exec h_p_save_Sc_QualityReportBill " + HInterID);
                oCN.RunProc("exec h_p_save_Sc_QualityReportBill " + HInterID+",'"+ HBadReasonHQty +"'");
                //判断是否允许保存,不允许则回滚
                ds = oCN.RunProcReturn("exec h_p_JIT_ICMOBillQualityStatus_SaveCtrl", "h_p_JIT_ICMOBillQualityStatus_SaveCtrl");
                if (ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBack"]) == "2")
@@ -1613,5 +1613,63 @@
            }
        }
        #endregion
        #region ç”Ÿäº§è´¨é‡æ—¥æ±‡æŠ¥å•列表 æŸ¥è¯¢
        [Route("Sc_QualityReportBill/getSc_QualityReportBillDay")]
        [HttpGet]
        public object getSc_QualityReportBillDay(string sWhere, string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //查看权限
                if (!DBUtility.ClsPub.Security_Log("Sc_QualityReportBill_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_Sc_StationOutBillMainList order by å•据号 desc", "h_v_Sc_StationOutBillMainList");
                }
                else
                {
                    string sql1 = "select * from h_v_Sc_StationOutBillMainList where 1 = 1 ";
                    string sql = sql1 + sWhere + " order by å•据号 desc";
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_StationOutBillMainList");
                }
                //添加列名
                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 e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}
WebAPI/DLL/¶¤¶¤ÏûÏ¢/Cls_DDMsg.cs
New file
@@ -0,0 +1,75 @@
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace DLL
{
    public class Cls_DDMsg
    {
        private HttpClient _client;
        private string _baseUrl;
        //获取企业的accessToken
        public string GetAccessToken(string appKey, string appSecret)
        {
            string url = "https://api.dingtalk.com/v1.0/oauth2/accessToken";
            string postData = "{\"appKey\":\"" + appKey + "\", \"appSecret\":\"" + appSecret + "\"}";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            WebRequest request = WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = byteArray.Length;
            using (Stream dataStream = request.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
            }
            using (WebResponse response = request.GetResponse())
            using (Stream responseStream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(responseStream))
            {
                string responseString = reader.ReadToEnd();
                return responseString;
            }
        }
        //发送工作通知
        public async Task<string> SendTextMessage(string accessToken, string agentId, string userIdList, string deptIdList, string toAllUser, string message)
        {
            try
            {
                _client = new HttpClient();
                _baseUrl = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2";
                string url = $"{_baseUrl}?access_token={accessToken}";
                DateTimeOffset now = DateTimeOffset.Now;
                string currentTime = now.ToString("yyyy-MM-dd HH:mm:ss");
                string messageWithTimestamp = $"{currentTime}-{message}"; // åœ¨æ¶ˆæ¯å†…容之前添加时间戳
                string messageJson = $"{{\"msgtype\": \"text\", \"text\": {{ \"content\": \"{messageWithTimestamp}\" }} }}";
                string requestBody = $"agent_id={agentId}&userid_list={userIdList}&dept_id_list={deptIdList}&to_all_user={toAllUser}&msg={messageJson}";
                HttpResponseMessage response = await _client.PostAsync(url, new StringContent(requestBody, Encoding.UTF8, "application/x-www-form-urlencoded"));
                if (response.IsSuccessStatusCode)
                {
                    return await response.Content.ReadAsStringAsync();
                }
                else
                {
                    return $"Failed to send message. Status code: {response.StatusCode}";
                }
            }
            catch (Exception ex)
            {
                return "An error occurred: " + ex.Message;
            }
        }
    }
}
WebAPI/Web.config
@@ -8,7 +8,7 @@
  <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
  <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
   <section name="WebAPI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </sectionGroup>
 </configSections>
@@ -53,7 +53,7 @@
      </system.Web>
  -->
    <system.web>
        <customErrors mode="Off"/>
        <customErrors mode="Off" />
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime maxQueryStringLength="102400" />
        <pages controlRenderingCompatibilityVersion="4.0" />
@@ -67,7 +67,7 @@
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
@@ -106,9 +106,7 @@
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://61.130.182.102:18181/WEBSCS/WebService1.asmx" binding="basicHttpBinding"
     bindingConfiguration="WebService1Soap" contract="Webs1.WebService1Soap"
     name="WebService1Soap" />
            <endpoint address="http://61.130.182.102:18181/WEBSCS/WebService1.asmx" binding="basicHttpBinding" bindingConfiguration="WebService1Soap" contract="Webs1.WebService1Soap" name="WebService1Soap" />
        </client>
    </system.serviceModel>
WebAPI/WebAPI.csproj
@@ -46,6 +46,33 @@
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="AlibabaCloud.EndpointUtil, Version=0.1.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.EndpointUtil.0.1.1\lib\net45\AlibabaCloud.EndpointUtil.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.GatewayDingTalk, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.GatewayDingTalk.1.0.2\lib\net45\AlibabaCloud.GatewayDingTalk.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.GatewaySpi, Version=0.0.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.GatewaySpi.0.0.2\lib\net45\AlibabaCloud.GatewaySpi.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.OpenApiClient, Version=0.1.8.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.OpenApiClient.0.1.9\lib\net45\AlibabaCloud.OpenApiClient.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.OpenApiUtil, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.OpenApiUtil.1.1.1\lib\net45\AlibabaCloud.OpenApiUtil.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.SDK.Dingtalk, Version=0.0.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.SDK.Dingtalk.2.1.24\lib\net45\AlibabaCloud.SDK.Dingtalk.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.TeaUtil, Version=0.1.14.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.TeaUtil.0.1.18\lib\net45\AlibabaCloud.TeaUtil.dll</HintPath>
    </Reference>
    <Reference Include="AlibabaCloud.TeaXML, Version=0.0.5.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\AlibabaCloud.TeaXML.0.0.5\lib\net45\AlibabaCloud.TeaXML.dll</HintPath>
    </Reference>
    <Reference Include="Aliyun.Credentials, Version=1.3.2.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Aliyun.Credentials.1.3.2\lib\net45\Aliyun.Credentials.dll</HintPath>
    </Reference>
    <Reference Include="Antlr3.Runtime, Version=3.4.1.9004, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
      <HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
      <Private>True</Private>
@@ -80,9 +107,8 @@
      <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="NPOI, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
      <HintPath>..\packages\NPOI.2.5.5\lib\net45\NPOI.dll</HintPath>
@@ -119,15 +145,23 @@
    <Reference Include="System.Net.Http">
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.Primitives, Version=4.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.WebRequest" />
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.Serialization">
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Security" />
    <Reference Include="System.ServiceModel" />
    <Reference Include="System.Web.Cors, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.AspNet.Cors.5.2.7\lib\net45\System.Web.Cors.dll</HintPath>
@@ -212,6 +246,9 @@
    </Reference>
    <Reference Include="System.Xml.Linq">
      <Private>True</Private>
    </Reference>
    <Reference Include="Tea, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Tea.1.1.2\lib\net45\Tea.dll</HintPath>
    </Reference>
    <Reference Include="WebActivatorEx, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4, processorArchitecture=MSIL">
      <HintPath>..\packages\WebActivatorEx.2.0.6\lib\net40\WebActivatorEx.dll</HintPath>
@@ -731,6 +768,7 @@
    <Compile Include="DLL\工资管理\ClsPay_GroupBalBill.cs" />
    <Compile Include="DLL\工资管理\ClsGy_GroupEmpBill.cs" />
    <Compile Include="DLL\工资管理\ClsPay_WorkTimesBill.cs" />
    <Compile Include="DLL\钉钉消息\Cls_DDMsg.cs" />
    <Compile Include="HttpClient.cs" />
    <Compile Include="InvokeHelper.cs" />
    <Compile Include="Log.cs" />
@@ -1230,6 +1268,11 @@
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Grpc.Core.2.45.0\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.2.45.0\build\net45\Grpc.Core.targets'))" />
  </Target>
  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
  </Target>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
WebAPI/packages.config
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="AlibabaCloud.EndpointUtil" version="0.1.1" targetFramework="net45" />
  <package id="AlibabaCloud.GatewayDingTalk" version="1.0.2" targetFramework="net45" />
  <package id="AlibabaCloud.GatewaySpi" version="0.0.2" targetFramework="net45" />
  <package id="AlibabaCloud.OpenApiClient" version="0.1.9" targetFramework="net45" />
  <package id="AlibabaCloud.OpenApiUtil" version="1.1.1" targetFramework="net45" />
  <package id="AlibabaCloud.SDK.Dingtalk" version="2.1.24" targetFramework="net45" />
  <package id="AlibabaCloud.TeaUtil" version="0.1.18" targetFramework="net45" />
  <package id="AlibabaCloud.TeaXML" version="0.0.5" targetFramework="net45" />
  <package id="Aliyun.Credentials" version="1.3.2" targetFramework="net45" />
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="bootstrap" version="3.0.0" targetFramework="net45" />
  <package id="Dapper" version="1.50.2" targetFramework="net45" />
@@ -21,10 +30,13 @@
  <package id="Microsoft.AspNet.WebApi.WebHost.zh-Hans" version="5.2.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net45" />
  <package id="Microsoft.Azure.AppService.ApiApps.Service" version="0.9.16" targetFramework="net45" />
  <package id="Microsoft.Bcl" version="1.1.10" targetFramework="net45" />
  <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net45" />
  <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net45" />
  <package id="NPOI" version="2.5.5" targetFramework="net45" />
  <package id="Portable.BouncyCastle" version="1.8.9" targetFramework="net45" />
  <package id="RestSharp" version="104.0" targetFramework="net45" />
@@ -35,6 +47,7 @@
  <package id="System.IdentityModel.Tokens.Jwt" version="4.0.0" targetFramework="net45" />
  <package id="System.Memory" version="4.5.3" targetFramework="net45" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net45" />
  <package id="Tea" version="1.1.2" targetFramework="net45" />
  <package id="WebActivatorEx" version="2.0.6" targetFramework="net45" />
  <package id="WebGrease" version="1.5.2" targetFramework="net45" />
</packages>