848 lines
37 KiB
C#
848 lines
37 KiB
C#
using Newtonsoft.Json;
|
||
using NPOI.HSSF.UserModel;
|
||
using NPOI.SS.UserModel;
|
||
using RestSharp;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Configuration;
|
||
using System.Data;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Net;
|
||
//using System.Net.Http;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace RuralPower
|
||
{
|
||
public class RuralPowerAPI
|
||
{
|
||
/// <summary>
|
||
/// Post 登录接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="login_name"></param>
|
||
/// <param name="real_name"></param>
|
||
/// <param name="password"></param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string Login(string url, string login_name, string real_name, string password)
|
||
{
|
||
var value = RSAHelper.EncryptData(password);
|
||
var post_data = JsonConvert.SerializeObject(new { login_name = login_name, password = value });
|
||
var src = get_page_json(url + "/unity/Login", post_data, "");
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 修改密码接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="token">token</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="OldPassword">旧密码</param>
|
||
/// <param name="NewPassword">新密码</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string ChangePassword(string url, string token, string LoginName, string OldPassword, string NewPassword)
|
||
{
|
||
OldPassword = RSAHelper.EncryptData(OldPassword);
|
||
NewPassword = RSAHelper.EncryptData(NewPassword);
|
||
var post_data = JsonConvert.SerializeObject(new { LoginName = LoginName, OldPassword = OldPassword, NewPassword = NewPassword });
|
||
var src = get_page_json(url + "/unity/ChangePassword", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 记录用户登录ip
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string LogIP(string url, string token, string UserId, string ExamId, string IP)
|
||
{
|
||
var post_data = string.Format("UserId={0}&ExamId={1}&IP={2}", UserId, ExamId, IP);
|
||
var src = get_page(url + "/unity/LoginLog", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
#region 考试
|
||
/// <summary>
|
||
/// Get 获取当前时间已发布的考试信息接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string GetExam(string url, string token, string UserId, string ExamId)
|
||
{
|
||
var post_data = string.Format("UserId={0}&ExamId={1}", UserId, ExamId);
|
||
var src = get_page(url + "/unity/GetExam", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 开始考试接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string StartExam(string url, string token, string ExamId, string UserId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
|
||
var src = get_page(url + "/unity/StartExam", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 结束考试接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string EndExam(string url, string token, string ExamId, string UserId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
|
||
var src = get_page(url + "/unity/EndExam", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 操作票接口
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <param name="ExamId">开始id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="Type">送电、停电</param>
|
||
/// <param name="data">json数组</param>
|
||
/// <returns></returns>
|
||
public string WriteTicket(string url, string token, string ExamId, string UserId, string Type, string data)
|
||
{
|
||
//var src = get_page_json(url + "/unity/WriteUserOperationTicket?action=writeTicket&ExamId=" + ExamId+ "&UserId="+ UserId+ "&Type="+ Type, data);
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}&data={3}", ExamId, UserId, Type, data);
|
||
var src = get_page(url + "/unity/WriteUserOperationTicket", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询操作票步骤,用以初始化或断点续传操作票步骤
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <param name="ExamId">开始id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="Type">送电、停电</param>
|
||
/// <param name="data">json数组</param>
|
||
/// <returns></returns>
|
||
public string QueryTicketProc(string url, string token, string ExamId, string UserId, string Type)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type);
|
||
var src = get_page(url + "/unity/QueryTicketProc", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步填写操作票步骤接口
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <param name="ExamId">开始id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="Type">送电、停电</param>
|
||
/// <param name="data">json数组</param>
|
||
/// <returns></returns>
|
||
public string WriteTicketProc(string url, string token, string ExamId, string UserId, string Type, string OperationTicketId, string Score, string ScoreReason)
|
||
{
|
||
//OperationTicketId: 步骤id
|
||
//UserId :用户id
|
||
//ExamId:考试id
|
||
//Type:送电、停电
|
||
//Score: 扣分值:0:不扣分
|
||
//ScoreReason:扣分原因
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}&OperationTicketId={3}&Score={4}&ScoreReason={5}"
|
||
, ExamId, UserId, Type, OperationTicketId, Score, ScoreReason);
|
||
var src = get_page(url + "/unity/WriteTicketProc", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询操作票步骤,用以初始化或断点续传操作票步骤
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <param name="ExamId">开始id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="Type">送电、停电</param>
|
||
/// <returns></returns>
|
||
public string StopTicketProc(string url, string token, string ExamId, string UserId, string Type)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type);
|
||
var src = get_page(url + "/unity/StopTicketProc", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 巡线、排故工器具接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddUserTool(string url, string token, string parameter)
|
||
{
|
||
var src = get_page_json(url + "/unity/AddUserTool", parameter, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 保存考试故障记录接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddUserFaultRecord(string url, string token, string parameter)
|
||
{
|
||
var src = get_page_json(url + "/unity/AddUserFaultRecord", parameter, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 上传考试选择题数据接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddUserChoiceQuestion(string url, string token, string parameter)
|
||
{
|
||
var src = get_page_json(url + "/unity/AddUserChoiceQuestion", parameter, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 上传故障排故数据接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddFaultOperation(string url, string token, string parameter)
|
||
{
|
||
var src = get_page_json(url + "/unity/AddFaultOperation", parameter, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 结束故障排故处理接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string EndFaultOperation(string url, string token, string ExamId, string UserId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
|
||
var src = get_page(url + "/unity/EndFaultOperation", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 选择台区上传接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="SelectPlatformArea">选择的台区</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string SelectPlatformArea(string url, string token, string ExamId, string UserId, string SelectPlatformArea)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&SelectPlatformArea={2}", ExamId, UserId, SelectPlatformArea);
|
||
var src = get_page(url + "/unity/SelectPlatformArea", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新验电结果接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="Type">类型 巡线、排故</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateElectricity(string url, string token, string ExamId, string UserId, string Type)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type);
|
||
var src = get_page(url + "/unity/UpdateElectricity", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新爬杆结果
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateClimbrod(string url, string token, string ExamId, string UserId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
|
||
var src = get_page(url + "/unity/UpdateClimbrod", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新未分闸状态拉合熔芯扣分接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateFusibleCore(string url, string token, string ExamId, string UserId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
|
||
var src = get_page(url + "/unity/UpdateFusibleCore", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新考试环节接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="SelectPlatformArea">选择的台区</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateExaminationLink(string url, string token, string ExamId, string UserId, string ExaminationLink)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}&ExaminationLink={2}", ExamId, UserId, ExaminationLink);
|
||
var src = get_page(url + "/unity/UpdateExaminationLink", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新围栏接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateEnclosure(string url, string token, string ExamId, string UserId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
|
||
var src = get_page(url + "/unity/UpdateEnclosure", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 获取考试状态接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string GetExamStatus(string url, string token, string ExamId)
|
||
{
|
||
var post_data = string.Format("ExamId={0}", ExamId);
|
||
var src = get_page(url + "/unity/GetExamStatus", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 上传视频录屏文件
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="FileDesc">视频描述</param>
|
||
/// <param name="FilePath">视频路径</param>
|
||
/// <returns></returns>
|
||
public string UploadFile(string url, string token, string ExamId, string UserId, string FileDesc, string FilePath)
|
||
{
|
||
try
|
||
{
|
||
//using (var httpClient = new HttpClient())
|
||
//{
|
||
// using (var request = new HttpRequestMessage(new HttpMethod("Post"), url + "/unity/UploadFile"))
|
||
// {
|
||
// request.Headers.TryAddWithoutValidation("User-Agent", "Apipost client Runtime/+https://www.apipost.cn/");
|
||
// request.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
|
||
|
||
// var multipartContent = new MultipartFormDataContent();
|
||
// multipartContent.Add(new StringContent("ExamId"), ExamId);
|
||
// multipartContent.Add(new StringContent("UserId"), UserId);
|
||
// multipartContent.Add(new StringContent("FileDesc"), FileDesc);
|
||
// multipartContent.Add(new StringContent("Files"), FilePath);
|
||
// request.Content = multipartContent;
|
||
// var task = httpClient.SendAsync(request);
|
||
// task.Wait();
|
||
// HttpResponseMessage response = task.Result;
|
||
// var result = response.Content.ReadAsStringAsync();
|
||
// string responseBodyAsText = result.Result;
|
||
// return responseBodyAsText;
|
||
// }
|
||
//}
|
||
|
||
//var mfdc = new System.Net.Http.MultipartFormDataContent();
|
||
//mfdc.Headers.Add("ContentType", "multipart/form-data");//声明头部
|
||
//mfdc.Add(new System.Net.Http.StringContent("ExamId"), ExamId);//参数, 内容在前,参数名称在后
|
||
//mfdc.Add(new System.Net.Http.StringContent("UserId"), UserId);
|
||
//mfdc.Add(new System.Net.Http.StringContent("FileDesc"), FileDesc);
|
||
//mfdc.Add(new System.Net.Http.StringContent("Files"), FilePath);
|
||
//var clientTask = new System.Net.Http.HttpClient().PostAsync(url + "/unity/UploadFile", mfdc);//发起异步请求
|
||
//clientTask.Wait();//等待请求结果
|
||
//if (clientTask.Result.IsSuccessStatusCode)
|
||
//{
|
||
// //请求正常
|
||
// var resultTask = clientTask.Result.Content.ReadAsStringAsync();//异步读取返回内容
|
||
// resultTask.Wait();//等读取返回内容
|
||
// var resultStr = resultTask.Result;//返回内容字符串
|
||
// return resultStr;
|
||
//}
|
||
//else
|
||
//{
|
||
// //请求异常
|
||
// return "请求接口出错";
|
||
//}
|
||
|
||
|
||
var client = new RestClient(url + "/unity/UploadFile");
|
||
client.Timeout = -1;
|
||
var request = new RestRequest(Method.POST);
|
||
request.AddFile("Files", FilePath);
|
||
request.AddParameter("ExamId", ExamId);
|
||
request.AddParameter("UserId", UserId);
|
||
request.AddParameter("FileDesc", FileDesc);
|
||
IRestResponse response = client.Execute(request);
|
||
var result = response.Content;
|
||
if (!string.IsNullOrEmpty(result))
|
||
{
|
||
if (result.Contains("\ufeff"))
|
||
{
|
||
result = result.Substring(1);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return "";
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新考试时长接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="ExaminationDuration">剩余考试时长</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateExaminationDuration(string url, string token, string UserId, string ExamId, string ExaminationDuration)
|
||
{
|
||
var post_data = string.Format("UserId={0}&ExamId={1}&ExaminationDuration={2}", UserId, ExamId, ExaminationDuration);
|
||
var src = get_page(url + "/unity/UpdateExaminationDuration", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新场景设备状态接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="ExaminationDuration">剩余考试时长</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateRestoreSceneMsg(string url, string token, string UserId, string ExamId, string RestoreSceneMsg)
|
||
{
|
||
var post_data = string.Format("UserId={0}&ExamId={1}&RestoreSceneMsg={2}", UserId, ExamId, RestoreSceneMsg);
|
||
var src = get_page(url + "/unity/UpdateRestoreSceneMsg", post_data, token);
|
||
return src;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 获取并更新考生考试时间
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="Read">1 读取, 0 更新</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateUserExamTime(string url, string token, string UserId, string ExamId, string Read)
|
||
{
|
||
var post_data = string.Format("UserId={0}&ExamId={1}&Read={2}", UserId, ExamId, Read);
|
||
var src = get_page(url + "/unity/UpdateUserExamTime", post_data, token);
|
||
return src;
|
||
}
|
||
#endregion
|
||
|
||
|
||
#region 实训
|
||
/// <summary>
|
||
/// Get 获取我的实训列表接口
|
||
/// </summary>
|
||
/// <param name="url">接口域名</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="PageIndex">页码</param>
|
||
/// <param name="PageSize">每页条数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string GetTrainList(string url, string token, string UserId, string PageIndex, string PageSize)
|
||
{
|
||
var post_data = string.Format("UserId={0}&PageIndex={1}&PageSize={2}", UserId, PageIndex, PageSize);
|
||
var src = get_page(url + "/unity/GetTrainList", post_data, token);
|
||
return src;
|
||
}
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// POST json转excel接口
|
||
/// </summary>
|
||
/// <param name="url">接口路径</param>
|
||
/// <param name="parameter">请求参数 json字符串</param>
|
||
/// <returns></returns>
|
||
public byte[] JsonTurnExcel(string url, string parameter)
|
||
{
|
||
var model = new Api.json_turn_excel_request();
|
||
if (!string.IsNullOrEmpty(parameter))
|
||
{
|
||
model = JsonConvert.DeserializeObject<Api.json_turn_excel_request>(parameter);
|
||
}
|
||
|
||
HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
|
||
ISheet sheet1 = workbook.CreateSheet("考试试卷");
|
||
var row1 = sheet1.CreateRow(0);//选择第1行
|
||
var cell1_1 = row1.CreateCell(0);//选择第1列
|
||
cell1_1.SetCellValue("考试名称");
|
||
var cell1_2 = row1.CreateCell(1);
|
||
cell1_2.SetCellValue("考试时长");
|
||
var cell1_3 = row1.CreateCell(2);
|
||
cell1_3.SetCellValue("开票日期");
|
||
var cell1_4 = row1.CreateCell(3);
|
||
cell1_4.SetCellValue("村组");
|
||
var cell1_5 = row1.CreateCell(4);
|
||
cell1_5.SetCellValue("台区");
|
||
var cell1_6 = row1.CreateCell(5);
|
||
cell1_6.SetCellValue("线路");
|
||
|
||
#region 设置列
|
||
IRow rowH = sheet1.CreateRow(1);
|
||
IDataFormat dataformat = workbook.CreateDataFormat();
|
||
ICellStyle cellstytle = workbook.CreateCellStyle();
|
||
cellstytle.DataFormat = dataformat.GetFormat("@");
|
||
for (int i = 0; i < 1000; i++)
|
||
{
|
||
if (i == 0)
|
||
{
|
||
sheet1.GetRow(0).GetCell(2).CellStyle = cellstytle;
|
||
}
|
||
else
|
||
{
|
||
var row = sheet1.CreateRow(i);
|
||
var cell = row.CreateCell(2);
|
||
cell.CellStyle = cellstytle;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
ISheet sheet2 = workbook.CreateSheet("考试工具");
|
||
var row2 = sheet2.CreateRow(0);//选择第1行
|
||
var cell2_1 = row2.CreateCell(0);//选择第1列
|
||
cell2_1.SetCellValue("工具名称");
|
||
var cell2_2 = row2.CreateCell(1);
|
||
cell2_2.SetCellValue("类型(工具、材料、着装)");
|
||
var cell2_3 = row2.CreateCell(2);
|
||
cell2_3.SetCellValue("用途(巡检、排故)");
|
||
|
||
ISheet sheet3 = workbook.CreateSheet("考试故障");
|
||
var row3 = sheet3.CreateRow(0);//选择第1行
|
||
var cell3_1 = row3.CreateCell(0);
|
||
cell3_1.SetCellValue("设备类型(杆塔、线档、配电箱)");
|
||
var cell3_2 = row3.CreateCell(1);
|
||
cell3_2.SetCellValue("线路");
|
||
var cell3_3 = row3.CreateCell(2);
|
||
cell3_3.SetCellValue("位置");
|
||
var cell3_4 = row3.CreateCell(3);
|
||
cell3_4.SetCellValue("缺陷类型");
|
||
var cell3_5 = row3.CreateCell(4);
|
||
cell3_5.SetCellValue("相位");
|
||
var cell3_6 = row3.CreateCell(5);
|
||
cell3_6.SetCellValue("缺陷类别");
|
||
|
||
ISheet sheet4 = workbook.CreateSheet("考试选择题");
|
||
var row4 = sheet4.CreateRow(0);//选择第1行
|
||
var cell4_1 = row4.CreateCell(0);//选择第1列
|
||
cell4_1.SetCellValue("题干");
|
||
var cell4_2 = row4.CreateCell(1);
|
||
cell4_2.SetCellValue("选项A");
|
||
var cell4_3 = row4.CreateCell(2);
|
||
cell4_3.SetCellValue("选项B");
|
||
var cell4_4 = row4.CreateCell(3);
|
||
cell4_4.SetCellValue("选项C");
|
||
var cell4_5 = row4.CreateCell(4);
|
||
cell4_5.SetCellValue("选项D");
|
||
var cell4_6 = row4.CreateCell(5);
|
||
cell4_6.SetCellValue("正确答案");
|
||
|
||
ISheet sheet5 = workbook.CreateSheet("考试操作票选项");
|
||
var row5 = sheet5.CreateRow(0);//选择第1行
|
||
var cell5_1 = row5.CreateCell(0);//选择第1列
|
||
cell5_1.SetCellValue("类型(送电、停电)");
|
||
var cell5_2 = row5.CreateCell(1);
|
||
cell5_2.SetCellValue("序号");
|
||
var cell5_3 = row5.CreateCell(2);
|
||
cell5_3.SetCellValue("内容");
|
||
|
||
if (model != null)
|
||
{
|
||
if (model.Exam != null)
|
||
{
|
||
var row = sheet1.CreateRow(1);//选择第1行
|
||
var cell1 = row.CreateCell(0);
|
||
cell1.SetCellValue(model.Exam.ExamName);
|
||
var cell2 = row.CreateCell(1);
|
||
cell2.SetCellValue(model.Exam.ExamDuration);
|
||
var cell3 = row.CreateCell(2);
|
||
cell3.SetCellValue(model.Exam.BillingDate);
|
||
cell3.CellStyle = cellstytle;
|
||
var cell4 = row.CreateCell(3);
|
||
cell4.SetCellValue(model.Exam.VillageGroup);
|
||
var cell5 = row.CreateCell(4);
|
||
cell5.SetCellValue(model.Exam.PlatformArea);
|
||
var cell6 = row.CreateCell(5);
|
||
cell6.SetCellValue(model.Exam.Line);
|
||
}
|
||
|
||
if (model.ToolList != null)
|
||
{
|
||
if (model.ToolList.Count > 0)
|
||
{
|
||
for (int i = 0; i < model.ToolList.Count; i++)
|
||
{
|
||
var row = sheet2.CreateRow(i);//选择第1行
|
||
var cell1 = row.CreateCell(0);
|
||
cell1.SetCellValue(model.ToolList[i].ToolName);
|
||
var cell2 = row.CreateCell(1);
|
||
cell2.SetCellValue(model.ToolList[i].ToolType);
|
||
var cell3 = row.CreateCell(2);
|
||
cell3.SetCellValue(model.ToolList[i].Purpose);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (model.FaultList != null)
|
||
{
|
||
if (model.FaultList.Count > 0)
|
||
{
|
||
for (int i = 0; i < model.FaultList.Count; i++)
|
||
{
|
||
var row = sheet3.CreateRow(i);//选择第1行
|
||
var cell1 = row.CreateCell(0);
|
||
cell1.SetCellValue(model.FaultList[i].DeviceType);
|
||
var cell2 = row.CreateCell(1);
|
||
cell2.SetCellValue(model.FaultList[i].Line);
|
||
var cell3 = row.CreateCell(2);
|
||
cell3.SetCellValue(model.FaultList[i].Position);
|
||
var cell4 = row.CreateCell(3);
|
||
cell4.SetCellValue(model.FaultList[i].DefectType);
|
||
var cell5 = row.CreateCell(4);
|
||
cell5.SetCellValue(model.FaultList[i].Phase);
|
||
var cell6 = row.CreateCell(5);
|
||
cell6.SetCellValue(model.FaultList[i].DefectCategory);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (model.ChoiceQuestionList != null)
|
||
{
|
||
if (model.ChoiceQuestionList.Count > 0)
|
||
{
|
||
for (int i = 0; i < model.ChoiceQuestionList.Count; i++)
|
||
{
|
||
var row = sheet4.CreateRow(i);//选择第1行
|
||
var cell1 = row.CreateCell(0);
|
||
cell1.SetCellValue(model.ChoiceQuestionList[i].Topic);
|
||
var cell2 = row.CreateCell(1);
|
||
cell2.SetCellValue(model.ChoiceQuestionList[i].OptionA);
|
||
var cell3 = row.CreateCell(2);
|
||
cell3.SetCellValue(model.ChoiceQuestionList[i].OptionB);
|
||
var cell4 = row.CreateCell(3);
|
||
cell4.SetCellValue(model.ChoiceQuestionList[i].OptionC);
|
||
var cell5 = row.CreateCell(4);
|
||
cell5.SetCellValue(model.ChoiceQuestionList[i].OptionD);
|
||
var cell6 = row.CreateCell(5);
|
||
cell6.SetCellValue(model.ChoiceQuestionList[i].RightKey);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (model.OperationTicketList != null)
|
||
{
|
||
if (model.OperationTicketList.Count > 0)
|
||
{
|
||
for (int i = 0; i < model.OperationTicketList.Count; i++)
|
||
{
|
||
var row = sheet5.CreateRow(i);//选择第1行
|
||
var cell1 = row.CreateCell(0);
|
||
cell1.SetCellValue(model.OperationTicketList[i].Type);
|
||
var cell2 = row.CreateCell(1);
|
||
cell2.SetCellValue(model.OperationTicketList[i].SerialNumber);
|
||
var cell3 = row.CreateCell(2);
|
||
cell3.SetCellValue(model.OperationTicketList[i].Content);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//保存Workbook方式二: 保存到内存流中
|
||
var stream = new MemoryStream();
|
||
workbook.Write(stream);
|
||
stream.Flush();
|
||
stream.Position = 0;
|
||
|
||
sheet1 = null;
|
||
sheet2 = null;
|
||
sheet3 = null;
|
||
sheet4 = null;
|
||
sheet5 = null;
|
||
workbook = null;
|
||
//byte[] data;
|
||
//try
|
||
//{
|
||
// // 发起POST请求,超时时间15秒,返回响应字节数组
|
||
// var api_result = get_page_json(url + "/unity/JsonTurnExcel", parameter);
|
||
// data = System.Text.Encoding.Default.GetBytes(api_result);
|
||
//}
|
||
//catch (Exception)
|
||
//{
|
||
// return null;
|
||
//}
|
||
return stream.ToArray();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Get请求
|
||
/// </summary>
|
||
/// <param name="post_url">请求地址</param>
|
||
/// <returns></returns>
|
||
public static string get_page(string post_url, string token)
|
||
{
|
||
Stream instream = null;
|
||
StreamReader sr = null;
|
||
HttpWebResponse response = null;
|
||
HttpWebRequest request = null;
|
||
Encoding encoding = Encoding.UTF8;
|
||
// 准备请求...
|
||
try
|
||
{
|
||
// 设置参数
|
||
request = WebRequest.Create(post_url) as HttpWebRequest;
|
||
CookieContainer cookieContainer = new CookieContainer();
|
||
request.CookieContainer = cookieContainer;
|
||
request.AllowAutoRedirect = true;
|
||
request.Headers.Add("Authorization", "Bearer " + token);
|
||
//默认值TimeOut:100 秒
|
||
//发送请求并获取相应回应数据
|
||
response = request.GetResponse() as HttpWebResponse;
|
||
//直到request.GetResponse()程序才开始向目标网页发送Post请求
|
||
instream = response.GetResponseStream();
|
||
sr = new StreamReader(instream, encoding);
|
||
//返回结果网页(html)代码
|
||
string content = sr.ReadToEnd();
|
||
string err = string.Empty;
|
||
return content;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return ex.Message;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// form-data post请求(请求时带cookie值)
|
||
/// </summary>
|
||
/// <param name="post_url">请求地址</param>
|
||
/// <param name="post_data">请求参数</param>
|
||
/// <returns></returns>
|
||
public static string get_page(string post_url, string post_data, string token)
|
||
{
|
||
Stream outstream = null;
|
||
Stream instream = null;
|
||
StreamReader sr = null;
|
||
HttpWebResponse response = null;
|
||
HttpWebRequest request = null;
|
||
Encoding encoding = Encoding.UTF8;
|
||
byte[] data = encoding.GetBytes(post_data);
|
||
// 准备请求...
|
||
try
|
||
{
|
||
// 设置参数
|
||
request = WebRequest.Create(post_url) as HttpWebRequest;
|
||
request.AllowAutoRedirect = true;
|
||
request.Method = "POST";
|
||
request.ContentType = "application/x-www-form-urlencoded";
|
||
request.ContentLength = data.Length;
|
||
request.Headers.Add("Authorization", "Bearer " + token);
|
||
outstream = request.GetRequestStream();
|
||
outstream.Write(data, 0, data.Length);
|
||
outstream.Close();
|
||
//发送请求并获取相应回应数据
|
||
response = request.GetResponse() as HttpWebResponse;
|
||
//直到request.GetResponse()程序才开始向目标网页发送Post请求
|
||
instream = response.GetResponseStream();
|
||
sr = new StreamReader(instream, encoding);
|
||
//返回结果网页(html)代码
|
||
string content = sr.ReadToEnd();
|
||
string err = string.Empty;
|
||
return content;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string err = ex.Message;
|
||
return err;
|
||
}
|
||
}
|
||
|
||
public static string get_page_json(string post_url, string post_data, string token)
|
||
{
|
||
Stream outstream = null;
|
||
Stream instream = null;
|
||
StreamReader sr = null;
|
||
HttpWebResponse response = null;
|
||
HttpWebRequest request = null;
|
||
Encoding encoding = Encoding.UTF8;
|
||
byte[] data = encoding.GetBytes(post_data);
|
||
// 准备请求...
|
||
try
|
||
{
|
||
// 设置参数
|
||
request = WebRequest.Create(post_url) as HttpWebRequest;
|
||
CookieContainer cookieContainer = new CookieContainer();
|
||
request.CookieContainer = cookieContainer;
|
||
request.AllowAutoRedirect = true;
|
||
request.Method = "POST";
|
||
request.ContentType = "application/json";
|
||
request.Headers.Add("Authorization", "Bearer " + token);
|
||
request.ContentLength = data.Length;
|
||
request.Timeout = 6000;
|
||
outstream = request.GetRequestStream();
|
||
outstream.Write(data, 0, data.Length);
|
||
outstream.Close();
|
||
//发送请求并获取相应回应数据
|
||
response = request.GetResponse() as HttpWebResponse;
|
||
//直到request.GetResponse()程序才开始向目标网页发送Post请求
|
||
//instream = response.GetResponseStream();
|
||
|
||
string message = "";
|
||
using (var responseStream = response.GetResponseStream())
|
||
using (var mstream = new MemoryStream())
|
||
{
|
||
responseStream.CopyTo(mstream);
|
||
message = Encoding.UTF8.GetString(mstream.ToArray());
|
||
}
|
||
//sr = new StreamReader(instream, encoding);
|
||
//返回结果网页(html)代码
|
||
string content = message;
|
||
string err = string.Empty;
|
||
return content;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string err = ex.Message;
|
||
return err;
|
||
}
|
||
}
|
||
}
|
||
}
|