3700 lines
220 KiB
C#
3700 lines
220 KiB
C#
using Microsoft.Win32;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Converters;
|
||
using Newtonsoft.Json.Linq;
|
||
using NPOI.HSSF.UserModel;
|
||
using NPOI.POIFS.Crypt.Dsig;
|
||
using NPOI.SS.Formula.Functions;
|
||
using NPOI.SS.UserModel;
|
||
using RestSharp;
|
||
using RuralPower.Api;
|
||
using SGUnitySDK.Etys;
|
||
using SGUnitySDK.Services.HTTP;
|
||
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Configuration;
|
||
using System.Data;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Management.Instrumentation;
|
||
using System.Net;
|
||
using System.Runtime.Remoting.Contexts;
|
||
//using System.Net.Http;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
|
||
using static Org.BouncyCastle.Crypto.Digests.SkeinEngine;
|
||
|
||
namespace RuralPower
|
||
{
|
||
public class RuralPowerAPI
|
||
{
|
||
/// <summary>
|
||
/// 围栏分值
|
||
/// </summary>
|
||
public string enclosure_score = "2";
|
||
/// <summary>
|
||
/// 围栏每次扣分值
|
||
/// </summary>
|
||
public string EnclosureFaultScore = "1";
|
||
/// <summary>
|
||
/// 验电分值
|
||
/// </summary>
|
||
public string ElectricityScore = "30";
|
||
/// <summary>
|
||
/// 台区选择分值
|
||
/// </summary>
|
||
public string SelectAreaScore = "30";
|
||
/// <summary>
|
||
/// 巡检爬杆分值
|
||
/// </summary>
|
||
public string ClimbrodScore = "30";
|
||
/// <summary>
|
||
/// 巡线工器具总分
|
||
/// </summary>
|
||
public double LineTotalScore = 3;
|
||
/// <summary>
|
||
/// 巡线工器具多选分值
|
||
/// </summary>
|
||
public double LineMultipleScore = 0.5;
|
||
/// <summary>
|
||
/// 巡线工器具少选分值
|
||
/// </summary>
|
||
public double LineMomentScore = 1;
|
||
/// <summary>
|
||
/// 缺陷总分
|
||
/// </summary>
|
||
public string TotalDefectScore = "65";
|
||
|
||
/// <summary>
|
||
/// Get 获取当前时间已发布的考试信息接口
|
||
/// </summary>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="ExamType">考试类型 1、2、3</param>
|
||
/// <param name="Path">绝对路径前缀</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string GetExam(string url, string UserId, string ExamType, string Path)
|
||
{
|
||
var now = DateTime.Now;
|
||
DataBase.user_operation_ticket_list = new List<DataService.Model.pow_user_operation_ticket>();
|
||
DataBase.user_list = new List<DataService.Model.admin_user>();
|
||
DataBase.scene_list = new List<DataService.Model.pow_scene>();
|
||
DataBase.platform_area_list = new List<DataService.Model.pow_platform_area>();
|
||
DataBase.line_list = new List<DataService.Model.pow_line>();
|
||
DataBase.exam_list = new List<DataService.Model.pow_exam>();
|
||
DataBase.exam_tool_list = new List<DataService.Model.pow_exam_tool>();
|
||
DataBase.exam_fault_list = new List<DataService.Model.pow_exam_fault>();
|
||
DataBase.exam_operation_ticket_list = new List<DataService.Model.pow_exam_operation_ticket>();
|
||
DataBase.user_exam_list = new List<DataService.Model.pow_user_exam>();
|
||
DataBase.user_tool_list = new List<DataService.Model.pow_user_tool>();
|
||
DataBase.user_operation_proc_ticket_list = new List<DataService.Model.pow_user_operation_proc_ticket>();
|
||
DataBase.user_fault_list = new List<DataService.Model.pow_user_fault>();
|
||
DataBase.achievement_list = new List<DataService.Model.pow_achievement>();
|
||
DataBase.achievement_details_list = new List<DataService.Model.pow_achievement_details>();
|
||
DataBase.user_fault_record_list = new List<DataService.Model.pow_user_fault_record>();
|
||
DataBase.path = Path;
|
||
if (DataBase.user_list.Where(a => a.user_id == UserId).Count() <= 0)
|
||
{
|
||
DataBase.user_list.Add(new DataService.Model.admin_user() { user_id = UserId });
|
||
}
|
||
//根据考试类型读取考试信息
|
||
var exam_model = new exam_data();
|
||
string fault_tree_file = Path + "/Json/exam" + ExamType + ".json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(fault_tree_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
exam_model = JsonConvert.DeserializeObject<exam_data>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string exam_file = Path + "/Json/exam.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(exam_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.exam_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_exam>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string scene_file = Path + "/Json/scene.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(scene_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.scene_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_scene>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string platform_area_file = Path + "/Json/platform_area.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(platform_area_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.platform_area_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_platform_area>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string line_file = Path + "/Json/line.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(line_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.line_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_line>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string exam_tool_file = Path + "/Json/exam_tool.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(exam_tool_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.exam_tool_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_exam_tool>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string exam_fault_file = Path + "/Json/exam_fault.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(exam_fault_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.exam_fault_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_exam_fault>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
|
||
string exam_operation_ticket_file = Path + "/Json/exam_operation_ticket.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(exam_operation_ticket_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
DataBase.exam_operation_ticket_list = JsonConvert.DeserializeObject<List<DataService.Model.pow_exam_operation_ticket>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
return Write(APICode.Success, exam_model);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 开始考试接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string StartExam(string url, string ExamId, string UserId)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "StartExam.txt", "ExamId:" + ExamId + ",UserId:" + UserId);
|
||
var user_model = DataBase.user_list.Where(a => a.user_id == UserId).FirstOrDefault();
|
||
if (user_model == null)
|
||
{
|
||
return Write(APICode.Fail, "考生信息不存在");
|
||
}
|
||
|
||
var count = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).Count();
|
||
if (count > 0)
|
||
{
|
||
return Write(APICode.Fail, "考试考试信息已存在");
|
||
}
|
||
var query = (from exam in DataBase.exam_list
|
||
join scene in DataBase.scene_list on exam.SceneId equals scene.SceneId into sceneJoin
|
||
from scene in sceneJoin.DefaultIfEmpty()
|
||
join platformArea in DataBase.platform_area_list on exam.PlatformAreaId equals platformArea.PlatformAreaId into platformAreaJoin
|
||
from platformArea in platformAreaJoin.DefaultIfEmpty()
|
||
join line in DataBase.line_list on exam.LineId equals line.LineId into lineJoin
|
||
from line in lineJoin.DefaultIfEmpty()
|
||
select new
|
||
{
|
||
exam,
|
||
SceneName = scene.SceneName,
|
||
PlatformAreaName = platformArea.PlatformAreaName,
|
||
LineName = line.LineName
|
||
}).ToList();
|
||
var exam_model = query.Where(a => a.exam.ExamId == ExamId).FirstOrDefault();
|
||
if (exam_model != null)
|
||
{
|
||
var user_exam_model = new DataService.Model.pow_user_exam();
|
||
user_exam_model.UserExamId = Guid.NewGuid().ToString("N");
|
||
user_exam_model.UserId = UserId;
|
||
user_exam_model.ExamId = ExamId;
|
||
user_exam_model.ExamName = exam_model.exam.ExamName;
|
||
user_exam_model.StartExamTime = exam_model.exam.StartExamTime;
|
||
user_exam_model.EndExamTime = exam_model.exam.EndExamTime;
|
||
user_exam_model.ExaminationDuration = exam_model.exam.ExaminationDuration + ":00";
|
||
user_exam_model.SceneId = exam_model.exam.SceneId;
|
||
user_exam_model.SceneName = exam_model.SceneName;
|
||
user_exam_model.PlatformAreaId = exam_model.exam.PlatformAreaId;
|
||
user_exam_model.PlatformAreaName = exam_model.PlatformAreaName;
|
||
user_exam_model.LineId = exam_model.exam.LineId;
|
||
user_exam_model.LineName = exam_model.LineName;
|
||
user_exam_model.LinePatrolDate = exam_model.exam.LinePatrolDate;
|
||
user_exam_model.HandleDate = exam_model.exam.HandleDate;
|
||
user_exam_model.WorkOrderContent = exam_model.exam.WorkOrderContent;
|
||
user_exam_model.BackgroundInformation = exam_model.exam.BackgroundInformation;
|
||
user_exam_model.IncomingLineModelLength = exam_model.exam.IncomingLineModelLength;
|
||
user_exam_model.OutgoingLineModelLength = exam_model.exam.OutgoingLineModelLength;
|
||
user_exam_model.StartExamTime = DateTime.Now;
|
||
user_exam_model.Status = "考试中";
|
||
user_exam_model.ExaminationLink = "初始化";
|
||
user_exam_model.CreateTime = DateTime.Now;
|
||
user_exam_model.LeakageProtection = exam_model.exam.LeakageProtection;
|
||
user_exam_model.OverloadProtection = exam_model.exam.OverloadProtection;
|
||
user_exam_model.ShortCircuitDelayProtection = exam_model.exam.ShortCircuitDelayProtection;
|
||
user_exam_model.ShortCircuitProtection = exam_model.exam.ShortCircuitProtection;
|
||
user_exam_model.UndervoltageProtection = exam_model.exam.UndervoltageProtection;
|
||
user_exam_model.OvervoltageProtection = exam_model.exam.OvervoltageProtection;
|
||
user_exam_model.PhaseLossProtection = exam_model.exam.PhaseLossProtection;
|
||
user_exam_model.FusibleCoreCurrent = exam_model.exam.FusibleCoreCurrent;
|
||
user_exam_model.LineIsScore = "0";
|
||
user_exam_model.FaultIsScore = "0";
|
||
user_exam_model.ClimbrodIsScore = "0";
|
||
user_exam_model.IsScore = "0";
|
||
user_exam_model.FusibleCoreIsScore = "0";
|
||
user_exam_model.EnclosureIsScore = enclosure_score;
|
||
|
||
var tool_list = DataBase.exam_tool_list.Where(a => a.ExamId == exam_model.exam.ExamId);
|
||
|
||
var achievement_model = new DataService.Model.pow_achievement();
|
||
achievement_model.AchievementId = Guid.NewGuid().ToString("N");
|
||
achievement_model.ExamId = exam_model.exam.ExamId;
|
||
achievement_model.ExamName = exam_model.exam.ExamName;
|
||
achievement_model.UserId = user_model.user_id;
|
||
achievement_model.LoginName = user_model.login_name;
|
||
achievement_model.RealName = user_model.real_name;
|
||
achievement_model.ProvinceId = user_model.province_id;
|
||
achievement_model.ProvinceName = user_model.province;
|
||
achievement_model.CityId = user_model.city_id;
|
||
achievement_model.CityName = user_model.city;
|
||
achievement_model.TotalScore = 0;
|
||
achievement_model.ExamStartTime = DateTime.Now;
|
||
|
||
var exam_fault_list = DataBase.exam_fault_list.Where(a => a.ExamId == exam_model.exam.ExamId);
|
||
var exam_operation_ticket_list = DataBase.exam_operation_ticket_list.Where(a => a.ExamId == exam_model.exam.ExamId).OrderBy(s => s.Type).ThenBy(s => s.SerialNumber).ToList();
|
||
try
|
||
{
|
||
DataBase.user_exam_list.Add(user_exam_model);
|
||
var new_tool_list = new List<DataService.Model.pow_user_tool>();
|
||
foreach (var item in tool_list)
|
||
{
|
||
var tool_model = new DataService.Model.pow_user_tool();
|
||
tool_model.UserToolId = Guid.NewGuid().ToString("N");
|
||
tool_model.UserId = user_exam_model.UserId;
|
||
tool_model.ExamId = user_exam_model.ExamId;
|
||
tool_model.Purpose = item.Purpose;
|
||
tool_model.ToolName = item.ToolName;
|
||
tool_model.ToolType = item.ToolType;
|
||
tool_model.IsSelect = "0";
|
||
tool_model.IsScore = "0";
|
||
tool_model.Quantity = 0;
|
||
new_tool_list.Add(tool_model);
|
||
}
|
||
if (new_tool_list.Count > 0)
|
||
{
|
||
DataBase.user_tool_list.AddRange(new_tool_list);
|
||
}
|
||
|
||
DataBase.achievement_list.Add(achievement_model);
|
||
var new_fault_list = new List<DataService.Model.pow_user_fault>();
|
||
foreach (var item in exam_fault_list)
|
||
{
|
||
var fault_model = new DataService.Model.pow_user_fault();
|
||
fault_model.UserFaultId = Guid.NewGuid().ToString("N");
|
||
fault_model.UserId = user_exam_model.UserId;
|
||
fault_model.ExamId = item.ExamId;
|
||
fault_model.FaultId = item.FaultId;
|
||
fault_model.RootDeviceId = item.RootDeviceId;
|
||
fault_model.DeviceId = item.DeviceId;
|
||
fault_model.Type = item.Type;
|
||
fault_model.FaultType = item.FaultType;
|
||
fault_model.FaultDesc = item.FaultDesc;
|
||
fault_model.DefectLevel = item.DefectLevel;
|
||
fault_model.SpecificSimulation = item.SpecificSimulation;
|
||
fault_model.FaultPosition = item.FaultPosition;
|
||
fault_model.SelectSocre = item.SelectSocre;
|
||
fault_model.FaultScore = item.FaultScore;
|
||
fault_model.HandlerScore = item.HandlerScore;
|
||
fault_model.DegreesSerialNumber = item.DegreesSerialNumber;
|
||
fault_model.DegreesValue = item.DegreesValue;
|
||
fault_model.ChoiceQuestion = item.ChoiceQuestion;
|
||
fault_model.MultipleQuestion = item.MultipleQuestion;
|
||
fault_model.DifficultyLevel = item.DifficultyLevel;
|
||
fault_model.PositionValue = item.PositionValue;
|
||
fault_model.Position = item.Position;
|
||
fault_model.FusibleCoreNormal = item.FusibleCoreNormal;
|
||
fault_model.FusibleCoreFault = item.FusibleCoreFault;
|
||
fault_model.PorcelainBottleType = item.PorcelainBottleType;
|
||
fault_model.Direction = item.Direction;
|
||
fault_model.Topic = item.Topic;
|
||
fault_model.OptionA = item.OptionA;
|
||
fault_model.OptionB = item.OptionB;
|
||
fault_model.OptionC = item.OptionC;
|
||
fault_model.OptionD = item.OptionD;
|
||
fault_model.OptionE = item.OptionE;
|
||
fault_model.RightKey = item.RightKey;
|
||
fault_model.Settings = item.Settings;
|
||
fault_model.Name = item.Name;
|
||
fault_model.Value = item.Value;
|
||
fault_model.CableName = item.CableName;
|
||
fault_model.CreateTime = item.CreateTime;
|
||
fault_model.CableStart = item.CableStart;
|
||
fault_model.CableEnd = item.CableEnd;
|
||
fault_model.ModelLength = item.ModelLength;
|
||
fault_model.SensitiveKnowledge = item.SensitiveKnowledge;
|
||
fault_model.Minhui = item.Minhui;
|
||
fault_model.SensitiveLine = item.SensitiveLine;
|
||
fault_model.Allergy = item.Allergy;
|
||
fault_model.GracefulGraceful = item.GracefulGraceful;
|
||
fault_model.RequiredTool = item.RequiredTool;
|
||
fault_model.HasHandle = "false";
|
||
fault_model.CurreSelectDetail = "";
|
||
fault_model.FaultLocation = "";
|
||
fault_model.IsProcessingScore = "0";
|
||
new_fault_list.Add(fault_model);
|
||
}
|
||
|
||
if (new_fault_list.Count > 0)
|
||
{
|
||
DataBase.user_fault_list.AddRange(new_fault_list);
|
||
}
|
||
var new_ticket_list = new List<DataService.Model.pow_user_operation_proc_ticket>();
|
||
foreach (var model in exam_operation_ticket_list)
|
||
{
|
||
var ticket_model = new DataService.Model.pow_user_operation_proc_ticket();
|
||
ticket_model.UserOperationProcTicketId = Guid.NewGuid().ToString("N");
|
||
ticket_model.UserId = user_exam_model.UserId;
|
||
ticket_model.ExamId = model.ExamId;
|
||
ticket_model.OperationTicketId = model.OperationTicketId;
|
||
ticket_model.Type = model.Type;
|
||
ticket_model.SerialNumber = model.SerialNumber;
|
||
ticket_model.Content = model.Content;
|
||
ticket_model.State = 0;
|
||
ticket_model.IsScore = "0"; // model.IsScore; 是否扣分 0:否,1:是
|
||
ticket_model.Score = 0; // model.Score; 扣分值 0 不扣分
|
||
ticket_model.ScoreReason = ""; // model.ScoreReason; //扣分原因
|
||
ticket_model.CreateTime = DateTime.Now;
|
||
ticket_model.UpdateTime = null;
|
||
ticket_model.R1 = "";
|
||
ticket_model.R2 = "";
|
||
ticket_model.R3 = "";
|
||
new_ticket_list.Add(ticket_model);
|
||
}
|
||
if (new_ticket_list.Count > 0)
|
||
{
|
||
DataBase.user_operation_proc_ticket_list.AddRange(new_ticket_list);
|
||
}
|
||
|
||
return Write(APICode.Success, "创建考试成功");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return Write(APICode.Fail, "创建考试失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <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 ExamId, string UserId)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "EndExam.txt", "ExamId:" + ExamId + ",UserId:" + UserId);
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (achievement_model == null)
|
||
{
|
||
return Write(APICode.Fail, "考生成绩信息不存在");
|
||
}
|
||
var now = DateTime.Now;
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
var add_achievement_details_list = new List<DataService.Model.pow_achievement_details>();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
user_exam_model.EndExamTime = now;
|
||
achievement_model.ExamEndTime = now;
|
||
user_exam_model.Status = "已结束";
|
||
if (user_exam_model.EnclosureIsScore != "2")
|
||
{
|
||
var item_name = "不放置围栏分值";
|
||
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var enclosure_is_score = decimal.Parse(user_exam_model.EnclosureIsScore);
|
||
var points_score = 2 - enclosure_is_score;
|
||
achievement_model.TotalScore = achievement_model.TotalScore + enclosure_is_score;
|
||
if (achievement_model.TotalScore < 0)
|
||
{
|
||
achievement_model.TotalScore = 0;
|
||
}
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "不放置围栏分值";
|
||
details_model.ItemizedScore = enclosure_is_score;
|
||
details_model.Type = "围栏";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 2;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var item_name = "不放置围栏分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var enclosure_is_score = decimal.Parse(user_exam_model.EnclosureIsScore);
|
||
achievement_model.TotalScore = achievement_model.TotalScore + enclosure_is_score;
|
||
if (achievement_model.TotalScore < 0)
|
||
{
|
||
achievement_model.TotalScore = 0;
|
||
}
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "不放置围栏分值";
|
||
details_model.ItemizedScore = 2;
|
||
details_model.Type = "围栏";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 2;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
if (user_exam_model.LineIsScore == "1" || user_exam_model.FaultIsScore == "1")
|
||
{
|
||
var item_name = "箱门或插座未验电或验电顺序错误";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var electricity_score = decimal.Parse(ElectricityScore);
|
||
achievement_model.TotalScore = achievement_model.TotalScore - electricity_score;
|
||
if (achievement_model.TotalScore < 0)
|
||
{
|
||
achievement_model.TotalScore = 0;
|
||
}
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "箱门或插座未验电或验电顺序错误";
|
||
details_model.ItemizedScore = -30;
|
||
details_model.Type = "验电";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 2;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var item_name = "箱门或插座未验电或验电顺序错误";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
achievement_model.TotalScore = achievement_model.TotalScore + 2;
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "箱门或插座未验电或验电顺序错误";
|
||
details_model.ItemizedScore = 2;
|
||
details_model.Type = "验电";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 2;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
#region 巡检爬杆
|
||
if (user_exam_model.ClimbrodIsScore == "1")
|
||
{
|
||
var item_name = "巡检爬杆";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var electricity_score = decimal.Parse(ClimbrodScore);
|
||
achievement_model.TotalScore = achievement_model.TotalScore - electricity_score;
|
||
if (achievement_model.TotalScore < 0)
|
||
{
|
||
achievement_model.TotalScore = 0;
|
||
}
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "巡检爬杆";
|
||
details_model.ItemizedScore = -30;
|
||
details_model.Type = "巡检爬杆";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 0;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
if (user_exam_model.IsScore == "1")
|
||
{
|
||
var item_name = "台区选择错误分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var select_area_score = decimal.Parse(SelectAreaScore);
|
||
|
||
achievement_model.TotalScore = achievement_model.TotalScore - select_area_score;
|
||
if (achievement_model.TotalScore < 0)
|
||
{
|
||
achievement_model.TotalScore = 0;
|
||
}
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "台区选择错误分值";
|
||
details_model.ItemizedScore = -30;
|
||
details_model.Type = "台区选择";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 0;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
if (user_exam_model.FusibleCoreIsScore == "1")
|
||
{
|
||
var item_name = "未分闸状态拉合熔芯扣分分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
achievement_model.TotalScore = achievement_model.TotalScore - 30;
|
||
if (achievement_model.TotalScore < 0)
|
||
{
|
||
achievement_model.TotalScore = 0;
|
||
}
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = "未分闸状态拉合熔芯扣分分值";
|
||
details_model.ItemizedScore = -30;
|
||
details_model.Type = "未分闸状态拉合熔芯";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 0;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
}
|
||
}
|
||
|
||
var details_model1 = new DataService.Model.pow_achievement_details();
|
||
details_model1.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model1.AchievementId = achievement_model.AchievementId;
|
||
details_model1.ItemName = "时间分";
|
||
details_model1.ItemizedScore = 5;
|
||
details_model1.Type = "时间分";
|
||
details_model1.CreateTime = DateTime.Now;
|
||
details_model1.TotalScore = 5;
|
||
achievement_model.TotalScore = achievement_model.TotalScore + 5;
|
||
DataBase.achievement_details_list.Add(details_model1);
|
||
|
||
return Write(APICode.Success, "结束考试成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "结束考试失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取提交的数据
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <returns></returns>
|
||
public List<SGAnswer> GetAnswer(string ExamId, string UserId, int lesson_plan_id)
|
||
{
|
||
var list = new List<SGAnswer>();
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (achievement_model != null)
|
||
{
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
//if (user_exam_model.Status == "已结束")
|
||
//{
|
||
var model = new SGAnswer(lesson_plan_id, new List<SGAnswerInfo>());
|
||
var answer_info = new List<SGAnswerInfo>();
|
||
var answer_info_model1 = new SGAnswerInfo("1", "巡检工器具", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model2 = new SGAnswerInfo("2", "排故工器具", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model3 = new SGAnswerInfo("3", "停电操作票", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model4 = new SGAnswerInfo("4", "送电操作票", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model5 = new SGAnswerInfo("5", "停电操作票步骤", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model6 = new SGAnswerInfo("6", "送电操作票步骤", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model7 = new SGAnswerInfo("7", "围栏", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model8 = new SGAnswerInfo("8", "验电", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model9 = new SGAnswerInfo("9", "时间分", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model10 = new SGAnswerInfo("10", "缺陷查找、缺陷处理、缺陷分类分值", 0, 0, 0, "", new List<SGStep>());
|
||
var answer_info_model11 = new SGAnswerInfo("11", "其它扣分项", 0, 0, 0, "", new List<SGStep>());
|
||
|
||
var data = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId).OrderBy(a => a.CreateTime).ToList();
|
||
|
||
#region 巡检工器具
|
||
var all_line_tool_list = new List<SGStep>();
|
||
var line_tool_model = data.Where(a => a.Type == "巡线工器具").FirstOrDefault();
|
||
if (line_tool_model != null)
|
||
{
|
||
answer_info_model1.AutoScore = double.Parse(line_tool_model.ItemizedScore.ToString());
|
||
var tool_model = new SGStep(line_tool_model.ItemName, double.Parse(line_tool_model.TotalScore.ToString()), double.Parse(line_tool_model.ItemizedScore.ToString()));
|
||
all_line_tool_list.Add(tool_model);
|
||
}
|
||
else
|
||
{
|
||
var tool_model = new SGStep("巡检工器具选择", 3, 0);
|
||
all_line_tool_list.Add(tool_model);
|
||
}
|
||
|
||
var user_tool_list = DataBase.user_tool_list.Where(a => a.ExamId == ExamId && a.UserId == UserId && a.IsScore == "1").ToList();
|
||
var line_tool_list = user_tool_list.Where(a => a.Purpose == "巡线").ToList();
|
||
for (int i = 0; i < line_tool_list.Count; i++)
|
||
{
|
||
double score = 0;
|
||
if (line_tool_list[i].IsSelect == "1")
|
||
{
|
||
score = LineMultipleScore;
|
||
}
|
||
else
|
||
{
|
||
score = LineMomentScore;
|
||
}
|
||
var tool_model = new SGStep(line_tool_list[i].ToolName, 0, double.Parse((-score).ToString()));
|
||
all_line_tool_list.Add(tool_model);
|
||
}
|
||
|
||
if (all_line_tool_list.Count() > 0)
|
||
{
|
||
answer_info_model1.StepArr = all_line_tool_list;
|
||
}
|
||
#endregion
|
||
|
||
#region 排故工器具
|
||
var all_trouble_tool_list = new List<SGStep>();
|
||
var trouble_tool_model = data.Where(a => a.Type == "排故工器具").FirstOrDefault();
|
||
if (trouble_tool_model != null)
|
||
{
|
||
answer_info_model2.AutoScore = double.Parse(trouble_tool_model.ItemizedScore.ToString());
|
||
var tool_model = new SGStep(trouble_tool_model.ItemName, double.Parse(trouble_tool_model.TotalScore.ToString()), double.Parse(trouble_tool_model.ItemizedScore.ToString()));
|
||
all_trouble_tool_list.Add(tool_model);
|
||
}
|
||
else
|
||
{
|
||
var tool_model = new SGStep("排故工器具选择", 3, 0);
|
||
all_trouble_tool_list.Add(tool_model);
|
||
}
|
||
|
||
var trouble_tool_list = user_tool_list.Where(a => a.Purpose == "排故").ToList();
|
||
for (int i = 0; i < trouble_tool_list.Count; i++)
|
||
{
|
||
double score = 0;
|
||
if (trouble_tool_list[i].IsSelect == "1")
|
||
{
|
||
score = LineMultipleScore;
|
||
}
|
||
else
|
||
{
|
||
score = LineMomentScore;
|
||
}
|
||
var tool_model = new SGStep(trouble_tool_list[i].ToolName, 0, double.Parse((-score).ToString()));
|
||
all_trouble_tool_list.Add(tool_model);
|
||
}
|
||
if (all_trouble_tool_list.Count() > 0)
|
||
{
|
||
answer_info_model2.StepArr = all_trouble_tool_list;
|
||
}
|
||
#endregion
|
||
|
||
#region 停电操作票
|
||
var power_failure_model = data.Where(a => a.Type == "停电操作票").FirstOrDefault();
|
||
if (power_failure_model != null)
|
||
{
|
||
answer_info_model3.AutoScore = double.Parse(power_failure_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(power_failure_model.ItemName, double.Parse(power_failure_model.TotalScore.ToString()), double.Parse(power_failure_model.ItemizedScore.ToString()));
|
||
answer_info_model3.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("停电操作票选择", 5, 0);
|
||
answer_info_model3.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
#endregion
|
||
|
||
#region 送电操作票
|
||
var power_transmission_model = data.Where(a => a.Type == "送电操作票").FirstOrDefault();
|
||
if (power_transmission_model != null)
|
||
{
|
||
answer_info_model4.AutoScore = double.Parse(power_transmission_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(power_transmission_model.ItemName, double.Parse(power_transmission_model.TotalScore.ToString()), double.Parse(power_transmission_model.ItemizedScore.ToString()));
|
||
answer_info_model4.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("送电操作票选择", 5, 0);
|
||
answer_info_model4.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
#endregion
|
||
|
||
#region 停电操作票步骤
|
||
var all_power_failure_step_list = new List<SGStep>();
|
||
var power_failure_step_model = data.Where(a => a.Type == "停电操作票步骤").FirstOrDefault();
|
||
if (power_failure_step_model != null)
|
||
{
|
||
answer_info_model5.AutoScore = double.Parse(power_failure_step_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(power_failure_step_model.ItemName, double.Parse(power_failure_step_model.TotalScore.ToString()), double.Parse(power_failure_step_model.ItemizedScore.ToString()));
|
||
all_power_failure_step_list.Add(power_model);
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("停电操作票步骤", 5, 0);
|
||
all_power_failure_step_list.Add(power_model);
|
||
}
|
||
|
||
var proc_ticket_list = DataBase.user_operation_proc_ticket_list.Where(a => a.ExamId == ExamId && a.UserId == UserId && a.IsScore == "1").ToList();
|
||
var power_failure_step_list = proc_ticket_list.Where(a => a.Type == "停电").OrderBy(a => a.SerialNumber).ToList();
|
||
for (int i = 0; i < power_failure_step_list.Count; i++)
|
||
{
|
||
var power_model = new SGStep(power_failure_step_list[i].Content, 0, double.Parse((-power_failure_step_list[i].Score).ToString()));
|
||
all_power_failure_step_list.Add(power_model);
|
||
}
|
||
if (all_power_failure_step_list.Count() > 0)
|
||
{
|
||
answer_info_model5.StepArr = all_power_failure_step_list;
|
||
}
|
||
#endregion
|
||
|
||
#region 送电操作票步骤
|
||
var all_power_transmission_step_list = new List<SGStep>();
|
||
var power_transmission_step_model = data.Where(a => a.Type == "送电操作票步骤").FirstOrDefault();
|
||
if (power_transmission_step_model != null)
|
||
{
|
||
answer_info_model6.AutoScore = double.Parse(power_transmission_step_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(power_transmission_step_model.ItemName, double.Parse(power_transmission_step_model.TotalScore.ToString()), double.Parse(power_transmission_step_model.ItemizedScore.ToString()));
|
||
all_power_transmission_step_list.Add(power_model);
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("送电操作票步骤", 5, 0);
|
||
all_power_transmission_step_list.Add(power_model);
|
||
}
|
||
|
||
var power_transmission_step_list = proc_ticket_list.Where(a => a.Type == "送电").OrderBy(a => a.SerialNumber).ToList();
|
||
for (int i = 0; i < power_transmission_step_list.Count; i++)
|
||
{
|
||
var power_model = new SGStep(power_transmission_step_list[i].Content, 0, double.Parse((-power_transmission_step_list[i].Score).ToString()));
|
||
all_power_transmission_step_list.Add(power_model);
|
||
}
|
||
if (all_power_transmission_step_list.Count() > 0)
|
||
{
|
||
answer_info_model6.StepArr = all_power_transmission_step_list;
|
||
}
|
||
#endregion
|
||
|
||
#region 围栏
|
||
var place_model = data.Where(a => a.Type == "围栏").FirstOrDefault();
|
||
if (place_model != null)
|
||
{
|
||
answer_info_model7.AutoScore = double.Parse(place_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(place_model.ItemName, double.Parse(place_model.TotalScore.ToString()), double.Parse(place_model.ItemizedScore.ToString()));
|
||
answer_info_model7.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("不放置围栏分值", 2, 0);
|
||
answer_info_model7.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
#endregion
|
||
|
||
#region 验电
|
||
var electricity_model = data.Where(a => a.Type == "验电").FirstOrDefault();
|
||
if (electricity_model != null)
|
||
{
|
||
answer_info_model8.AutoScore = double.Parse(electricity_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(electricity_model.ItemName, double.Parse(electricity_model.TotalScore.ToString()), double.Parse(electricity_model.ItemizedScore.ToString()));
|
||
answer_info_model8.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("箱门或插座未验电或验电顺序错误", 2, 0);
|
||
answer_info_model8.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
#endregion
|
||
|
||
#region 时间分
|
||
var time_model = data.Where(a => a.Type == "时间分").FirstOrDefault();
|
||
if (time_model != null)
|
||
{
|
||
answer_info_model9.AutoScore = double.Parse(time_model.ItemizedScore.ToString());
|
||
var power_model = new SGStep(time_model.ItemName, double.Parse(time_model.TotalScore.ToString()), double.Parse(time_model.ItemizedScore.ToString()));
|
||
answer_info_model9.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep("时间分", 5, 0);
|
||
answer_info_model9.StepArr = new List<SGStep>() { power_model };
|
||
}
|
||
#endregion
|
||
|
||
#region 缺陷查找、缺陷处理、缺陷分类分值
|
||
var all_fault_list = new List<SGStep>();
|
||
var fault_list = data.Where(a => a.Type == "故障记录选择" || a.Type == "故障选择题处理" || a.Type == "故障排故处理").OrderBy(a => a.CreateTime).ToList();
|
||
var fault_type_list = fault_list.GroupBy(a => a.FaultDesc).ToList();
|
||
for (int i = 0; i < fault_type_list.Count; i++)
|
||
{
|
||
var fault = fault_list.Where(a => a.FaultDesc == fault_type_list[i].Key).ToList();
|
||
|
||
var first = fault.Where(a => a.ScoreType == "缺陷查找分值").FirstOrDefault();
|
||
if (first != null)
|
||
{
|
||
var power_model = new SGStep(fault_type_list[i].Key + "-查找", double.Parse(first.TotalScore.ToString()), double.Parse(first.ItemizedScore.ToString()));
|
||
all_fault_list.Add(power_model);
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep(fault_type_list[i].Key + "-查找", 0, 0);
|
||
all_fault_list.Add(power_model);
|
||
}
|
||
|
||
var second = fault.Where(a => a.ScoreType == "缺陷分类分值").FirstOrDefault();
|
||
if (second != null)
|
||
{
|
||
var power_model = new SGStep(fault_type_list[i].Key + "-分类", double.Parse(second.TotalScore.ToString()), double.Parse(second.ItemizedScore.ToString()));
|
||
all_fault_list.Add(power_model);
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep(fault_type_list[i].Key + "-分类", 0, 0);
|
||
all_fault_list.Add(power_model);
|
||
}
|
||
|
||
var third = fault.Where(a => a.ScoreType == "缺陷处理分值").FirstOrDefault();
|
||
if (third != null)
|
||
{
|
||
var power_model = new SGStep(fault_type_list[i].Key + "-处理", double.Parse(third.TotalScore.ToString()), double.Parse(third.ItemizedScore.ToString()));
|
||
all_fault_list.Add(power_model);
|
||
}
|
||
else
|
||
{
|
||
var power_model = new SGStep(fault_type_list[i].Key + "-处理", 0, 0);
|
||
all_fault_list.Add(power_model);
|
||
}
|
||
}
|
||
if (all_fault_list.Count() > 0)
|
||
{
|
||
answer_info_model10.AutoScore = all_fault_list.Sum(a => a.TotalScore);
|
||
answer_info_model10.StepArr = all_fault_list;
|
||
}
|
||
#endregion
|
||
|
||
#region 其它扣分项
|
||
var other_step_list = new List<SGStep>();
|
||
//巡检爬杆
|
||
var climbrod_model = data.Where(a => a.Type == "巡检爬杆").FirstOrDefault();
|
||
if (climbrod_model != null)
|
||
{
|
||
var power_model = new SGStep(climbrod_model.ItemName, double.Parse(climbrod_model.TotalScore.ToString()), double.Parse(climbrod_model.ItemizedScore.ToString()));
|
||
other_step_list.Add(power_model);
|
||
}
|
||
|
||
var platform_area_model = data.Where(a => a.Type == "台区选择").FirstOrDefault();
|
||
if (platform_area_model != null)
|
||
{
|
||
var power_model = new SGStep(platform_area_model.ItemName, double.Parse(platform_area_model.TotalScore.ToString()), double.Parse(platform_area_model.ItemizedScore.ToString()));
|
||
other_step_list.Add(power_model);
|
||
}
|
||
|
||
var fusible_core_model = data.Where(a => a.Type == "未分闸状态拉合熔芯").FirstOrDefault();
|
||
if (fusible_core_model != null)
|
||
{
|
||
var power_model = new SGStep(fusible_core_model.ItemName, double.Parse(fusible_core_model.TotalScore.ToString()), double.Parse(fusible_core_model.ItemizedScore.ToString()));
|
||
other_step_list.Add(power_model);
|
||
}
|
||
|
||
if (other_step_list.Count() > 0)
|
||
{
|
||
answer_info_model11.AutoScore = other_step_list.Sum(a => a.TotalScore);
|
||
answer_info_model11.StepArr = other_step_list;
|
||
}
|
||
#endregion
|
||
|
||
answer_info.Add(answer_info_model1);
|
||
answer_info.Add(answer_info_model2);
|
||
answer_info.Add(answer_info_model3);
|
||
answer_info.Add(answer_info_model4);
|
||
answer_info.Add(answer_info_model5);
|
||
answer_info.Add(answer_info_model6);
|
||
answer_info.Add(answer_info_model7);
|
||
answer_info.Add(answer_info_model8);
|
||
answer_info.Add(answer_info_model9);
|
||
answer_info.Add(answer_info_model10);
|
||
answer_info.Add(answer_info_model11);
|
||
model.AnswerInfo = answer_info;
|
||
list.Add(model);
|
||
//}
|
||
}
|
||
}
|
||
return list;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 操作票接口
|
||
/// </summary>
|
||
/// <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 ExamId, string UserId, string Type, string data)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "WriteTicket.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",Type:" + Type + ",data:" + data);
|
||
if (string.IsNullOrEmpty(data))
|
||
{
|
||
return GetResult(false, "data参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(ExamId))
|
||
{
|
||
return GetResult(false, "ExamId参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(Type))
|
||
{
|
||
return GetResult(false, "Type参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(UserId))
|
||
{
|
||
return GetResult(false, "UserId参数不能为空");
|
||
}
|
||
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return GetResult(false, "考生考试已结束");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return GetResult(false, "考生考试信息不存在");
|
||
}
|
||
|
||
var achievement = DataBase.achievement_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (null == achievement)
|
||
{
|
||
return GetResult(false, "考生成绩数据不存在");
|
||
}
|
||
|
||
//用户操作ticket
|
||
var list_user_operation_ticket = JsonConvert.DeserializeObject<List<OperationTicketData>>(data);
|
||
var list_exam_operation_ticket = DataBase.exam_operation_ticket_list.Where(a => a.ExamId == ExamId && a.Type == Type && a.Content.Length > 0).OrderBy(s => s.SerialNumber).ToList();
|
||
int total_score = 5;
|
||
var list_TicketId_HasScore = new List<string>();
|
||
var score = ComputeTicketScore(ref total_score, list_TicketId_HasScore, list_user_operation_ticket, list_exam_operation_ticket);
|
||
for (int i = 0; i < list_user_operation_ticket.Count; i++)
|
||
{
|
||
var item = list_user_operation_ticket[i];
|
||
var model = new DataService.Model.pow_user_operation_ticket();
|
||
model.UserOperationTicketId = Guid.NewGuid().ToString("N");
|
||
model.UserId = UserId;
|
||
model.ExamId = ExamId;
|
||
model.OperationTicketId = item.OperationTicketId;
|
||
model.Type = item.Type;
|
||
model.SerialNumber = i + 1; // int.Parse(item.SerialNumber);
|
||
model.Content = item.Content;
|
||
model.IsSelect = "1"; //是否选择 0:未选择,1:已选择
|
||
model.IsScore = list_TicketId_HasScore.Contains(item.OperationTicketId) ? "0" : "1"; //是否扣分 0:否,1:是
|
||
model.CreateTime = DateTime.Now;
|
||
DataBase.user_operation_ticket_list.Add(model);
|
||
}
|
||
|
||
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement.AchievementId;
|
||
details_model.ItemName = Type + "操作票选择";
|
||
details_model.ItemizedScore = total_score;
|
||
details_model.Type = Type + "操作票";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 5;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
achievement.TotalScore = achievement.TotalScore + total_score;
|
||
|
||
return GetResult(true, null, "操作票总分:" + total_score);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询操作票步骤,用以初始化或断点续传操作票步骤
|
||
/// </summary>
|
||
/// <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 ExamId, string UserId, string Type)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "QueryTicketProc.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",Type:" + Type);
|
||
if (string.IsNullOrEmpty(ExamId))
|
||
{
|
||
return GetResult(false, "ExamId参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(Type))
|
||
{
|
||
return GetResult(false, "Type参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(UserId))
|
||
{
|
||
return GetResult(false, "UserId参数不能为空");
|
||
}
|
||
|
||
|
||
//UserId :用户id
|
||
//ExamId:考试id
|
||
//Type:送电、停电
|
||
var proc_ticket_list = DataBase.user_operation_proc_ticket_list.Where(a => a.UserId == UserId && a.ExamId == ExamId && a.Type == Type).OrderBy(s => s.SerialNumber).ToList();
|
||
if (proc_ticket_list.Count > 0)
|
||
{
|
||
return GetResult(true, proc_ticket_list, proc_ticket_list.Count.ToString());
|
||
}
|
||
else
|
||
{
|
||
return GetResult(false, null, "记录不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步填写操作票步骤接口
|
||
/// </summary>
|
||
/// <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 ExamId, string UserId, string Type, string OperationTicketId, string Score, string ScoreReason)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "WriteTicketProc.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",Type:" + Type + ",OperationTicketId:" + OperationTicketId + ",Score" + Score + ",ScoreReason:" + ScoreReason);
|
||
//OperationTicketId: 步骤id
|
||
//UserId :用户id
|
||
//ExamId:考试id
|
||
//Type:送电、停电
|
||
//Score: 扣分值:0:不扣分
|
||
//ScoreReason:扣分原因
|
||
if (string.IsNullOrEmpty(OperationTicketId))
|
||
{
|
||
return GetResult(false, "OperationTicketId参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(ExamId))
|
||
{
|
||
return GetResult(false, "ExamId参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(Type))
|
||
{
|
||
return GetResult(false, "Type参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(UserId))
|
||
{
|
||
return GetResult(false, "UserId参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(Score))
|
||
{
|
||
return GetResult(false, "Score参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(ScoreReason))
|
||
{
|
||
return GetResult(false, "ScoreReason参数不能为空");
|
||
}
|
||
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return GetResult(false, "考生考试已结束");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return GetResult(false, "考生考试信息不存在");
|
||
}
|
||
|
||
//OperationTicketId: 步骤id
|
||
//UserId :用户id
|
||
//ExamId:考试id
|
||
//Type:送电、停电
|
||
//Score: 扣分值:0:不扣分
|
||
//ScoreReason:扣分原因
|
||
var proc_ticket = DataBase.user_operation_proc_ticket_list.Where(a => a.OperationTicketId == OperationTicketId && a.UserId == UserId && a.ExamId == ExamId && a.Type == Type).FirstOrDefault();
|
||
if (proc_ticket != null)
|
||
{
|
||
try
|
||
{
|
||
proc_ticket.State = 1; //已开始
|
||
proc_ticket.UpdateTime = DateTime.Now;
|
||
int i_score = 0;
|
||
int.TryParse(Score, out i_score);
|
||
proc_ticket.Score = i_score;
|
||
proc_ticket.ScoreReason = ScoreReason;
|
||
//是否扣分 0:否,1:是
|
||
if (i_score > 0)
|
||
{
|
||
proc_ticket.IsScore = "1";
|
||
}
|
||
else
|
||
{
|
||
proc_ticket.IsScore = "0";
|
||
}
|
||
|
||
return GetResult(true, "");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return GetResult(false, "");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return GetResult(false, "操作票步骤信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 停止操作票所有步骤接口,计算分数累计成绩
|
||
/// </summary>
|
||
/// <param name="ExamId">开始id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="Type">送电、停电</param>
|
||
/// <returns></returns>
|
||
public string StopTicketProc(string url, string ExamId, string UserId, string Type)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "StopTicketProc.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",Type:" + Type);
|
||
if (string.IsNullOrEmpty(ExamId))
|
||
{
|
||
return GetResult(false, "ExamId参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(Type))
|
||
{
|
||
return GetResult(false, "Type参数不能为空");
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(UserId))
|
||
{
|
||
return GetResult(false, "UserId参数不能为空");
|
||
}
|
||
|
||
|
||
//UserId :用户id
|
||
//ExamId:考试id
|
||
//Type:送电、停电
|
||
var achievement = DataBase.achievement_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (null == achievement)
|
||
{
|
||
return GetResult(false, "考生成绩数据不存在");
|
||
}
|
||
|
||
var proc_ticket_list = DataBase.user_operation_proc_ticket_list.Where(a => a.UserId == UserId && a.ExamId == ExamId && a.Type == Type && a.Content.Length > 0).OrderBy(s => s.SerialNumber).ToList();
|
||
|
||
if (proc_ticket_list.Count <= 0)
|
||
{
|
||
return GetResult(false, "操作票步骤数据不存在");
|
||
}
|
||
|
||
//获取操作票步骤得分
|
||
var total_score = get_ticket_proc_scrore(proc_ticket_list);
|
||
|
||
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement.AchievementId;
|
||
details_model.ItemName = Type + "操作票步骤";
|
||
details_model.ItemizedScore = total_score;
|
||
details_model.Type = Type + "操作票步骤";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = 5;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
achievement.TotalScore = achievement.TotalScore + total_score;
|
||
|
||
return GetResult(true, null, "操作票步骤总分:" + total_score);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 巡线、排故工器具接口
|
||
/// </summary>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddUserTool(string url, string parameter)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "AddUserTool.txt", "parameter:" + parameter);
|
||
var model = JsonConvert.DeserializeObject<DataService.Api.add_user_tool_request>(parameter);
|
||
if (model != null)
|
||
{
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
|
||
if (user_exam_model != null)
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
try
|
||
{
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (achievement_model == null)
|
||
{
|
||
return Write(APICode.Fail, "考生成绩数据不存在");
|
||
}
|
||
|
||
var user_tool_list = DataBase.user_tool_list.Where(a => a.UserId == model.UserId && model.ExamId == model.ExamId && a.Purpose == model.Purpose).ToList();
|
||
var tool_list = model.Tool.Select(a => a.ToolName).ToList();
|
||
//var local_tool_list = model.Tool.Select(a => a.ToolName).ToList();
|
||
|
||
//用户有、正确有,修改是否选择
|
||
//用户有、正确没有,新增数据
|
||
//用户没有、正确有,
|
||
var line_total_score = double.Parse(LineTotalScore.ToString());
|
||
var total_score = decimal.Parse(LineTotalScore.ToString());
|
||
////相同的数据
|
||
//var IdenticalData = user_tool_list.Where(s => tool_list.Contains(s.ToolName)).Select(s => s.ToolName).ToArray();
|
||
////不同
|
||
//var DifferentData = user_tool_list.Where(s => !tool_list.Contains(s.ToolName)).ToList();
|
||
////不同 用户选择数据里有,本地数据库里没有
|
||
//var FieldCaseData = model.Tool.Where(s => !local_tool_list.Contains(s.ToolName)).ToList();
|
||
|
||
foreach (var item in model.Tool)
|
||
{
|
||
var tool_model = user_tool_list.Where(a => a.ToolName == item.ToolName).FirstOrDefault();
|
||
if (tool_model != null)
|
||
{
|
||
tool_model.Quantity = item.Quantity;
|
||
tool_model.IsSelect = "1";
|
||
tool_model.IsScore = "0";
|
||
}
|
||
else
|
||
{
|
||
if (line_total_score != 0)
|
||
{
|
||
line_total_score = line_total_score - LineMultipleScore;
|
||
if (line_total_score < 0)
|
||
{
|
||
line_total_score = 0;
|
||
}
|
||
}
|
||
var add_tool_model = new DataService.Model.pow_user_tool();
|
||
add_tool_model.UserToolId = Guid.NewGuid().ToString("N");
|
||
add_tool_model.UserId = model.UserId;
|
||
add_tool_model.ExamId = model.ExamId;
|
||
add_tool_model.Purpose = model.Purpose;
|
||
add_tool_model.ToolName = item.ToolName;
|
||
add_tool_model.IsSelect = "1";
|
||
add_tool_model.Quantity = item.Quantity;
|
||
add_tool_model.IsScore = "1";
|
||
DataBase.user_tool_list.Add(add_tool_model);
|
||
}
|
||
}
|
||
|
||
//本地数据库正确数据里有,用户选择数据里没有,少选
|
||
var correct_data = user_tool_list.Where(s => !tool_list.Contains(s.ToolName)).ToList();
|
||
foreach (var item in correct_data)
|
||
{
|
||
if (line_total_score != 0)
|
||
{
|
||
line_total_score = line_total_score - LineMomentScore;
|
||
if (line_total_score < 0)
|
||
{
|
||
line_total_score = 0;
|
||
}
|
||
}
|
||
item.IsScore = "1";
|
||
}
|
||
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = model.Purpose + "工器具选择";
|
||
details_model.ItemizedScore = decimal.Parse(line_total_score.ToString());
|
||
details_model.Type = model.Purpose + "工器具";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = total_score;
|
||
DataBase.achievement_details_list.Add(details_model);
|
||
achievement_model.TotalScore = achievement_model.TotalScore + details_model.ItemizedScore.Value;
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "请求参数无数据");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 保存考试故障记录接口
|
||
/// </summary>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddUserFaultRecord(string url, string parameter)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "AddUserFaultRecord.txt", "parameter:" + parameter);
|
||
var model = JsonConvert.DeserializeObject<DataService.Api.add_user_fault_record_request>(parameter);
|
||
if (model != null)
|
||
{
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (achievement_model == null)
|
||
{
|
||
return Write(APICode.Fail, "考生成绩数据不存在");
|
||
}
|
||
|
||
var user_fault_list = DataBase.user_fault_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).ToList();
|
||
var select_total_score = user_fault_list.Where(a => a.ChoiceQuestion != "0").Sum(a => decimal.Parse(a.SelectSocre));
|
||
var fault_total_score = user_fault_list.Where(a => a.ChoiceQuestion != "0").Sum(a => decimal.Parse(a.FaultScore));
|
||
var handler_score = user_fault_list.Where(a => a.ChoiceQuestion != "0").Sum(a => decimal.Parse(a.HandlerScore));
|
||
var total = select_total_score + fault_total_score + handler_score;//总分
|
||
var record_list = new List<DataService.Model.pow_user_fault_record>();
|
||
var details_list = new List<DataService.Model.pow_achievement_details>();
|
||
var total_defect_score = decimal.Parse(TotalDefectScore);
|
||
decimal total_score = 0;
|
||
//组织树
|
||
var tree_list = ReadTree();
|
||
|
||
foreach (var item in model.Data)
|
||
{
|
||
var new_fault_model = new DataService.Model.pow_user_fault_record();
|
||
if (!string.IsNullOrEmpty(item.FaultId))
|
||
{
|
||
var fault_model = user_fault_list.Where(a => a.FaultId == item.FaultId && a.RootDeviceId == item.RootDeviceId && a.DeviceId == item.DeviceId).FirstOrDefault();
|
||
if (fault_model.FaultDesc == "导线未绑扎、扎线断股" || fault_model.FaultDesc == "瓷瓶歪斜松动" || fault_model.FaultDesc == "瓷瓶损坏")
|
||
{
|
||
item.Value = "";
|
||
}
|
||
if (item.Value.Contains("东侧") || item.Value.Contains("北侧") || item.Value.Contains("西侧"))
|
||
{
|
||
item.Value = item.Value + "拉线";
|
||
}
|
||
var root_device_name = "";
|
||
var device_name = "";
|
||
if (fault_model != null)
|
||
{
|
||
var first_list = tree_list.Where(a => a.TowerId == item.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != item.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == item.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == item.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
var is_find_score = "0";
|
||
var is_classification_score = "0";
|
||
|
||
if (item.IsCorrect == "1")
|
||
{
|
||
if (fault_model.ChoiceQuestion != "0")
|
||
{
|
||
is_find_score = "1";
|
||
decimal select_score = 0;
|
||
decimal fault_score = 0;
|
||
if (fault_model.FaultDesc == "配电箱箱门未加锁" || fault_model.FaultDesc == "柜门与箱体没有链接线" || fault_model.FaultDesc == "配电箱孔洞未封堵")
|
||
{
|
||
var value_list = new List<string>();
|
||
if (fault_model.FaultDesc != "配电箱孔洞未封堵")
|
||
{
|
||
value_list = fault_model.Position.Split('|').ToList();
|
||
}
|
||
else
|
||
{
|
||
value_list = fault_model.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
foreach (var position_item in value_list)
|
||
{
|
||
select_score = System.Decimal.Round((decimal.Parse(fault_model.SelectSocre) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item + "-" + "缺陷查找分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = select_score;
|
||
details_model.Type = "故障记录选择";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = select_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item;
|
||
details_model.ScoreType = "缺陷查找分值";
|
||
details_list.Add(details_model);
|
||
total_score = total_score + select_score;
|
||
}
|
||
}
|
||
|
||
if (item.DefectLevel == fault_model.DefectLevel)
|
||
{
|
||
fault_score = System.Decimal.Round((decimal.Parse(fault_model.FaultScore) / total) * total_defect_score, 3);
|
||
var item_name2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item + "-" + "缺陷分类分值";
|
||
var achievement_details_model2 = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name2).FirstOrDefault();
|
||
if (achievement_details_model2 == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name2).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model2 = new DataService.Model.pow_achievement_details();
|
||
details_model2.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model2.AchievementId = achievement_model.AchievementId;
|
||
details_model2.ItemName = item_name2;
|
||
details_model2.ItemizedScore = fault_score;
|
||
details_model2.Type = "故障记录选择";
|
||
details_model2.CreateTime = DateTime.Now;
|
||
details_model2.TotalScore = fault_score;
|
||
details_model2.FaultDesc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item;
|
||
details_model2.ScoreType = "缺陷分类分值";
|
||
details_list.Add(details_model2);
|
||
total_score = total_score + fault_score;
|
||
is_classification_score = "1";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
fault_score = System.Decimal.Round((decimal.Parse(fault_model.FaultScore) / total) * total_defect_score, 3);
|
||
var item_name2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item + "-" + "缺陷分类分值";
|
||
var achievement_details_model2 = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name2).FirstOrDefault();
|
||
if (achievement_details_model2 == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name2).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model2 = new DataService.Model.pow_achievement_details();
|
||
details_model2.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model2.AchievementId = achievement_model.AchievementId;
|
||
details_model2.ItemName = item_name2;
|
||
details_model2.ItemizedScore = 0;
|
||
details_model2.Type = "故障记录选择";
|
||
details_model2.CreateTime = DateTime.Now;
|
||
details_model2.TotalScore = fault_score;
|
||
details_model2.FaultDesc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item;
|
||
details_model2.ScoreType = "缺陷分类分值";
|
||
details_list.Add(details_model2);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
select_score = System.Decimal.Round((decimal.Parse(fault_model.SelectSocre) / total) * total_defect_score, 3);
|
||
var item_name = "";
|
||
var desc = "";
|
||
if (!string.IsNullOrEmpty(item.Value))
|
||
{
|
||
item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value + "-" + "缺陷查找分值";
|
||
desc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value;
|
||
}
|
||
else
|
||
{
|
||
item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + "缺陷查找分值";
|
||
desc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc;
|
||
}
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.FaultDesc = desc;
|
||
details_model.ItemizedScore = select_score;
|
||
details_model.Type = "故障记录选择";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = select_score;
|
||
details_model.ScoreType = "缺陷查找分值";
|
||
details_list.Add(details_model);
|
||
total_score = total_score + select_score;
|
||
}
|
||
}
|
||
|
||
if (item.DefectLevel == fault_model.DefectLevel)
|
||
{
|
||
fault_score = System.Decimal.Round((decimal.Parse(fault_model.FaultScore) / total) * total_defect_score, 3);
|
||
var item_name2 = "";
|
||
var desc2 = "";
|
||
if (!string.IsNullOrEmpty(item.Value))
|
||
{
|
||
item_name2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value + "-" + "缺陷分类分值";
|
||
desc2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value;
|
||
}
|
||
else
|
||
{
|
||
item_name2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + "缺陷分类分值";
|
||
desc2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc;
|
||
}
|
||
var achievement_details_model2 = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name2).FirstOrDefault();
|
||
if (achievement_details_model2 == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name2).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model2 = new DataService.Model.pow_achievement_details();
|
||
details_model2.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model2.AchievementId = achievement_model.AchievementId;
|
||
details_model2.ItemName = item_name2;
|
||
details_model2.FaultDesc = desc2;
|
||
details_model2.ItemizedScore = fault_score;
|
||
details_model2.Type = "故障记录选择";
|
||
details_model2.CreateTime = DateTime.Now;
|
||
details_model2.TotalScore = fault_score;
|
||
details_model2.ScoreType = "缺陷分类分值";
|
||
details_list.Add(details_model2);
|
||
total_score = total_score + fault_score;
|
||
is_classification_score = "1";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
fault_score = System.Decimal.Round((decimal.Parse(fault_model.FaultScore) / total) * total_defect_score, 3);
|
||
var item_name2 = "";
|
||
var desc2 = "";
|
||
if (!string.IsNullOrEmpty(item.Value))
|
||
{
|
||
item_name2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value + "-" + "缺陷分类分值";
|
||
desc2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value;
|
||
}
|
||
else
|
||
{
|
||
item_name2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + "缺陷分类分值";
|
||
desc2 = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc;
|
||
}
|
||
var achievement_details_model2 = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name2).FirstOrDefault();
|
||
if (achievement_details_model2 == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name2).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model2 = new DataService.Model.pow_achievement_details();
|
||
details_model2.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model2.AchievementId = achievement_model.AchievementId;
|
||
details_model2.ItemName = item_name2;
|
||
details_model2.FaultDesc = desc2;
|
||
details_model2.ItemizedScore = 0;
|
||
details_model2.Type = "故障记录选择";
|
||
details_model2.CreateTime = DateTime.Now;
|
||
details_model2.TotalScore = fault_score;
|
||
details_model2.ScoreType = "缺陷分类分值";
|
||
details_list.Add(details_model2);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
new_fault_model.UserFaultRecordId = Guid.NewGuid().ToString("N");
|
||
new_fault_model.UserId = model.UserId;
|
||
new_fault_model.ExamId = model.ExamId;
|
||
new_fault_model.FaultId = item.FaultId;
|
||
new_fault_model.RootDeviceId = item.RootDeviceId;
|
||
new_fault_model.DeviceId = item.DeviceId;
|
||
new_fault_model.Type = item.Type;
|
||
new_fault_model.FaultType = item.FaultType;
|
||
new_fault_model.FaultDesc = fault_model.FaultDesc;
|
||
new_fault_model.DefectLevel = fault_model.DefectLevel;
|
||
new_fault_model.SpecificSimulation = fault_model.SpecificSimulation;
|
||
new_fault_model.FaultPosition = fault_model.FaultPosition;
|
||
new_fault_model.SelectSocre = fault_model.SelectSocre;
|
||
new_fault_model.FaultScore = fault_model.FaultScore;
|
||
new_fault_model.HandlerScore = fault_model.HandlerScore;
|
||
new_fault_model.DegreesSerialNumber = fault_model.DegreesSerialNumber;
|
||
new_fault_model.DegreesValue = fault_model.DegreesValue;
|
||
new_fault_model.ChoiceQuestion = fault_model.ChoiceQuestion;
|
||
new_fault_model.MultipleQuestion = fault_model.MultipleQuestion;
|
||
new_fault_model.DifficultyLevel = fault_model.DifficultyLevel;
|
||
new_fault_model.PositionValue = fault_model.PositionValue;
|
||
new_fault_model.Position = fault_model.Position;
|
||
new_fault_model.PorcelainBottleType = fault_model.PorcelainBottleType;
|
||
new_fault_model.Direction = fault_model.Direction;
|
||
new_fault_model.Topic = fault_model.Topic;
|
||
new_fault_model.OptionA = fault_model.OptionA;
|
||
new_fault_model.OptionB = fault_model.OptionB;
|
||
new_fault_model.OptionC = fault_model.OptionC;
|
||
new_fault_model.OptionD = fault_model.OptionD;
|
||
new_fault_model.OptionE = fault_model.OptionE;
|
||
new_fault_model.RightKey = fault_model.RightKey;
|
||
new_fault_model.IsCorrect = item.IsCorrect;
|
||
new_fault_model.Answer = "";
|
||
new_fault_model.Content = item.Content;
|
||
new_fault_model.Value = item.Value;
|
||
new_fault_model.IsFindScore = is_find_score;
|
||
new_fault_model.IsClassificationScore = is_classification_score;
|
||
new_fault_model.IsProcessingScore = "0";
|
||
new_fault_model.CreateTime = fault_model.CreateTime;
|
||
|
||
new_fault_model.Cache_Key = item.Cache_Key;
|
||
new_fault_model.Cache_Content = item.Cache_Content;
|
||
new_fault_model.Cache_Value = item.Cache_Value;
|
||
new_fault_model.R1 = item.R1;
|
||
new_fault_model.R2 = item.R2;
|
||
new_fault_model.R3 = item.R3;
|
||
|
||
record_list.Add(new_fault_model);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
new_fault_model.UserFaultRecordId = Guid.NewGuid().ToString("N");
|
||
new_fault_model.UserId = model.UserId;
|
||
new_fault_model.ExamId = model.ExamId;
|
||
new_fault_model.IsCorrect = item.IsCorrect;
|
||
new_fault_model.Content = item.Content;
|
||
new_fault_model.IsFindScore = "0";
|
||
new_fault_model.IsClassificationScore = "0";
|
||
new_fault_model.IsProcessingScore = "0";
|
||
new_fault_model.CreateTime = DateTime.Now;
|
||
new_fault_model.Cache_Key = item.Cache_Key;
|
||
new_fault_model.Cache_Content = item.Cache_Content;
|
||
new_fault_model.Cache_Value = item.Cache_Value;
|
||
new_fault_model.R1 = item.R1;
|
||
new_fault_model.R2 = item.R2;
|
||
new_fault_model.R3 = item.R3;
|
||
record_list.Add(new_fault_model);
|
||
}
|
||
}
|
||
|
||
if (record_list.Count > 0)
|
||
{
|
||
DataBase.user_fault_record_list.AddRange(record_list);
|
||
}
|
||
|
||
var fault_list = model.Data.Select(a => a.FaultId).ToList();
|
||
//本地数据库正确数据里有,用户选择数据里没有,少选
|
||
var correct_data = user_fault_list.Where(s => s.ChoiceQuestion != "0" && !fault_list.Contains(s.FaultId)).ToList();
|
||
foreach (var item in correct_data)
|
||
{
|
||
var root_device_name = "";
|
||
var device_name = "";
|
||
|
||
var first_list = tree_list.Where(a => a.TowerId == item.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != item.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == item.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == item.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
decimal select_score = 0;
|
||
decimal fault_score = 0;
|
||
var value_list = new List<string>();
|
||
if (item.FaultDesc == "配电箱箱门未加锁" || item.FaultDesc == "柜门与箱体没有链接线")
|
||
{
|
||
value_list = item.Position.Split('|').ToList();
|
||
}
|
||
else
|
||
{
|
||
if (item.FaultDesc == "配电箱孔洞未封堵"
|
||
|| item.FaultDesc == "熔断器下桩头发热"
|
||
|| item.FaultDesc == "熔芯不匹配"
|
||
|| item.FaultDesc == "熔芯损坏"
|
||
|| item.FaultDesc == "电缆头套管相色缺失"
|
||
|| item.FaultDesc == "电缆接头发热"
|
||
|| item.FaultDesc == "电缆绝缘层老化开裂"
|
||
|| item.FaultDesc == "拉线无警示套管"
|
||
|| item.FaultDesc == "拉线松动"
|
||
|| item.FaultDesc == "拉线断股锈蚀"
|
||
|| item.FaultDesc == "拉线UT线夹螺帽不齐全"
|
||
|| item.FaultDesc == "接头发热"
|
||
|| item.FaultDesc == "线路弧垂不一致")
|
||
{
|
||
if (!string.IsNullOrEmpty(item.MultipleQuestion))
|
||
{
|
||
if (item.FaultDesc != "相色标识错误")
|
||
{
|
||
value_list = item.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (value_list.Count == 0)
|
||
{
|
||
select_score = System.Decimal.Round((decimal.Parse(item.SelectSocre) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + "缺陷查找分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = 0;
|
||
details_model.Type = "故障记录选择";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = select_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + item.FaultDesc;
|
||
details_model.ScoreType = "缺陷查找分值";
|
||
details_list.Add(details_model);
|
||
}
|
||
}
|
||
|
||
fault_score = System.Decimal.Round((decimal.Parse(item.FaultScore) / total) * total_defect_score, 3);
|
||
var item_name2 = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + "缺陷分类分值";
|
||
var achievement_details_model2 = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name2).FirstOrDefault();
|
||
if (achievement_details_model2 == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name2).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model2 = new DataService.Model.pow_achievement_details();
|
||
details_model2.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model2.AchievementId = achievement_model.AchievementId;
|
||
details_model2.ItemName = item_name2;
|
||
details_model2.ItemizedScore = 0;
|
||
details_model2.Type = "故障记录选择";
|
||
details_model2.CreateTime = DateTime.Now;
|
||
details_model2.TotalScore = fault_score;
|
||
details_model2.FaultDesc = root_device_name + "-" + device_name + "-" + item.FaultDesc;
|
||
details_model2.ScoreType = "缺陷分类分值";
|
||
details_list.Add(details_model2);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (var position_item in value_list)
|
||
{
|
||
select_score = System.Decimal.Round((decimal.Parse(item.SelectSocre) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + position_item + "-" + "缺陷查找分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = 0;
|
||
details_model.Type = "故障记录选择";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = select_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + position_item;
|
||
details_model.ScoreType = "缺陷查找分值";
|
||
details_list.Add(details_model);
|
||
}
|
||
}
|
||
|
||
fault_score = System.Decimal.Round((decimal.Parse(item.FaultScore) / total) * total_defect_score, 3);
|
||
var item_name2 = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + position_item + "-" + "缺陷分类分值";
|
||
var achievement_details_model2 = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name2).FirstOrDefault();
|
||
if (achievement_details_model2 == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name2).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model2 = new DataService.Model.pow_achievement_details();
|
||
details_model2.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model2.AchievementId = achievement_model.AchievementId;
|
||
details_model2.ItemName = item_name2;
|
||
details_model2.ItemizedScore = 0;
|
||
details_model2.Type = "故障记录选择";
|
||
details_model2.CreateTime = DateTime.Now;
|
||
details_model2.TotalScore = fault_score;
|
||
details_model2.FaultDesc = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + position_item;
|
||
details_model2.ScoreType = "缺陷分类分值";
|
||
details_list.Add(details_model2);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (details_list.Count > 0)
|
||
{
|
||
DataBase.achievement_details_list.AddRange(details_list);
|
||
}
|
||
achievement_model.TotalScore = achievement_model.TotalScore + total_score;
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "请求参数无数据");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 上传考试选择题数据接口
|
||
/// </summary>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddUserChoiceQuestion(string url, string parameter)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "AddUserChoiceQuestion.txt", "parameter:" + parameter);
|
||
var model = JsonConvert.DeserializeObject<DataService.Api.add_user_fault_record_request>(parameter);
|
||
if (model != null)
|
||
{
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (achievement_model == null)
|
||
{
|
||
return Write(APICode.Fail, "考生成绩数据不存在");
|
||
}
|
||
|
||
var exam_fault_list = DataBase.exam_fault_list.Where(a => a.ExamId == model.ExamId && a.ChoiceQuestion != "0").ToList();
|
||
var select_total_score = exam_fault_list.Sum(a => decimal.Parse(a.SelectSocre));
|
||
var fault_total_score = exam_fault_list.Sum(a => decimal.Parse(a.FaultScore));
|
||
var handler_score = exam_fault_list.Sum(a => decimal.Parse(a.HandlerScore));
|
||
var total = select_total_score + fault_total_score + handler_score;//总分
|
||
var record_list = new List<DataService.Model.pow_user_fault_record>();
|
||
var details_list = new List<DataService.Model.pow_achievement_details>();
|
||
var user_fault_record_list = DataBase.user_fault_record_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).ToList();
|
||
decimal total_score = 0;//总分
|
||
var total_defect_score = decimal.Parse(TotalDefectScore);
|
||
//组织树
|
||
var tree_list = ReadTree();
|
||
foreach (var item in model.Data)
|
||
{
|
||
var fault_model = new DataService.Model.pow_user_fault_record();
|
||
var root_device_name = "";
|
||
var device_name = "";
|
||
var exam_fault_model = exam_fault_list.Where(a => a.RootDeviceId == item.RootDeviceId && a.DeviceId == item.DeviceId && a.FaultId == item.FaultId).FirstOrDefault();
|
||
if (exam_fault_model != null)
|
||
{
|
||
if (exam_fault_model.FaultDesc == "导线未绑扎、扎线断股" || exam_fault_model.FaultDesc == "瓷瓶歪斜松动" || exam_fault_model.FaultDesc == "瓷瓶损坏")
|
||
{
|
||
item.Value = "";
|
||
}
|
||
if (item.Value.Contains("东侧") || item.Value.Contains("北侧") || item.Value.Contains("西侧"))
|
||
{
|
||
item.Value = item.Value + "拉线";
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(item.Value))
|
||
{
|
||
fault_model = user_fault_record_list.Where(a => a.FaultId == item.FaultId && a.RootDeviceId == item.RootDeviceId && a.DeviceId == item.DeviceId && a.Value == item.Value).FirstOrDefault();
|
||
}
|
||
else
|
||
{
|
||
fault_model = user_fault_record_list.Where(a => a.FaultId == item.FaultId && a.RootDeviceId == item.RootDeviceId && a.DeviceId == item.DeviceId).FirstOrDefault();
|
||
}
|
||
if (fault_model != null)
|
||
{
|
||
var first_list = tree_list.Where(a => a.TowerId == item.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != item.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == item.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == item.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(fault_model.UserFaultRecordId))
|
||
{
|
||
var is_processing_score = "0";
|
||
|
||
if (fault_model.ChoiceQuestion != "0")
|
||
{
|
||
var right_key_content = new List<string>();
|
||
var right_key_list = fault_model.RightKey.Split('|');
|
||
foreach (var right_key in right_key_list)
|
||
{
|
||
if (right_key == "A")
|
||
{
|
||
right_key_content.Add(fault_model.OptionA);
|
||
}
|
||
if (right_key == "B")
|
||
{
|
||
right_key_content.Add(fault_model.OptionB);
|
||
}
|
||
if (right_key == "C")
|
||
{
|
||
right_key_content.Add(fault_model.OptionC);
|
||
}
|
||
if (right_key == "D")
|
||
{
|
||
right_key_content.Add(fault_model.OptionD);
|
||
}
|
||
if (right_key == "E")
|
||
{
|
||
right_key_content.Add(fault_model.OptionE);
|
||
}
|
||
}
|
||
if (fault_model.FaultDesc == "配电箱箱门未加锁" || fault_model.FaultDesc == "柜门与箱体没有链接线" || fault_model.FaultDesc == "配电箱孔洞未封堵")
|
||
{
|
||
var value_list = new List<string>();
|
||
if (fault_model.FaultDesc != "配电箱孔洞未封堵")
|
||
{
|
||
value_list = fault_model.Position.Split('|').ToList();
|
||
}
|
||
else
|
||
{
|
||
value_list = fault_model.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
foreach (var position_item in value_list)
|
||
{
|
||
var success_index = 0;
|
||
var fault_index = 0;
|
||
var answer_list = item.Answer.Split('|');
|
||
foreach (var answer_item in answer_list)
|
||
{
|
||
if (right_key_content.Contains(answer_item))
|
||
{
|
||
success_index++;
|
||
}
|
||
else
|
||
{
|
||
fault_index++;
|
||
}
|
||
}
|
||
if (success_index == right_key_list.Length && fault_index == 0)
|
||
{
|
||
is_processing_score = "1";
|
||
}
|
||
|
||
if (is_processing_score == "1")
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(fault_model.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item + "-" + "缺陷处理分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = processing_score;
|
||
details_model.Type = "故障选择题处理";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = processing_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item;
|
||
details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(details_model);
|
||
total_score = total_score + processing_score;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
decimal processing_score = 0;
|
||
processing_score = System.Decimal.Round((decimal.Parse(fault_model.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item + "-" + "缺陷处理分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = 0;
|
||
details_model.Type = "故障选择题处理";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = processing_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + position_item;
|
||
details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(details_model);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var success_index = 0;
|
||
var fault_index = 0;
|
||
var answer_list = item.Answer.Split('|');
|
||
foreach (var answer_item in answer_list)
|
||
{
|
||
if (right_key_content.Contains(answer_item))
|
||
{
|
||
success_index++;
|
||
}
|
||
else
|
||
{
|
||
fault_index++;
|
||
}
|
||
}
|
||
if (success_index == right_key_list.Length && fault_index == 0)
|
||
{
|
||
is_processing_score = "1";
|
||
}
|
||
|
||
if (is_processing_score == "1")
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(fault_model.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = "";
|
||
var desc = "";
|
||
if (!string.IsNullOrEmpty(item.Value))
|
||
{
|
||
item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value + "-" + "缺陷处理分值";
|
||
desc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value;
|
||
}
|
||
else
|
||
{
|
||
item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
desc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc;
|
||
}
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.FaultDesc = desc;
|
||
details_model.ItemizedScore = processing_score;
|
||
details_model.Type = "故障选择题处理";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = processing_score;
|
||
details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(details_model);
|
||
total_score = total_score + processing_score;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(fault_model.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = "";
|
||
var desc = "";
|
||
if (!string.IsNullOrEmpty(item.Value))
|
||
{
|
||
item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value + "-" + "缺陷处理分值";
|
||
desc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + item.Value;
|
||
}
|
||
else
|
||
{
|
||
item_name = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
desc = root_device_name + "-" + device_name + "-" + fault_model.FaultDesc;
|
||
}
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.FaultDesc = desc;
|
||
details_model.ItemizedScore = 0;
|
||
details_model.Type = "故障选择题处理";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = processing_score;
|
||
details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(details_model);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
fault_model.Answer = item.Answer;
|
||
fault_model.IsProcessingScore = is_processing_score;
|
||
//record_list.Add(fault_model);
|
||
}
|
||
}
|
||
}
|
||
|
||
var fault_list = model.Data.Select(a => a.FaultId).ToList();
|
||
//本地数据库正确数据里有,用户选择数据里没有,少选
|
||
var correct_data = exam_fault_list.Where(s => s.ChoiceQuestion != "0" && s.SpecificSimulation == "选择题" && !fault_list.Contains(s.FaultId)).ToList();
|
||
foreach (var item in correct_data)
|
||
{
|
||
var root_device_name = "";
|
||
var device_name = "";
|
||
|
||
var first_list = tree_list.Where(a => a.TowerId == item.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != item.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == item.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == item.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
decimal select_score = 0;
|
||
decimal fault_score = 0;
|
||
var value_list = new List<string>();
|
||
if (item.FaultDesc == "配电箱箱门未加锁" || item.FaultDesc == "柜门与箱体没有链接线")
|
||
{
|
||
value_list = item.Position.Split('|').ToList();
|
||
}
|
||
else
|
||
{
|
||
if (item.FaultDesc == "配电箱孔洞未封堵"
|
||
|| item.FaultDesc == "熔断器下桩头发热"
|
||
|| item.FaultDesc == "熔芯不匹配"
|
||
|| item.FaultDesc == "熔芯损坏"
|
||
|| item.FaultDesc == "电缆头套管相色缺失"
|
||
|| item.FaultDesc == "电缆接头发热"
|
||
|| item.FaultDesc == "电缆绝缘层老化开裂"
|
||
|| item.FaultDesc == "拉线无警示套管"
|
||
|| item.FaultDesc == "拉线松动"
|
||
|| item.FaultDesc == "拉线断股锈蚀"
|
||
|| item.FaultDesc == "拉线UT线夹螺帽不齐全"
|
||
|| item.FaultDesc == "接头发热"
|
||
|| item.FaultDesc == "线路弧垂不一致")
|
||
{
|
||
if (!string.IsNullOrEmpty(item.MultipleQuestion))
|
||
{
|
||
if (item.FaultDesc != "相色标识错误")
|
||
{
|
||
value_list = item.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (value_list.Count == 0)
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(item.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + "缺陷处理分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = 0;
|
||
details_model.Type = "故障选择题处理";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = processing_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + item.FaultDesc;
|
||
details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(details_model);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (var position_item in value_list)
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(item.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + position_item + "-" + "缺陷处理分值";
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var new_details_model = details_list.Where(a => a.ItemName == item_name).FirstOrDefault();
|
||
if (new_details_model == null)
|
||
{
|
||
var details_model = new DataService.Model.pow_achievement_details();
|
||
details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
details_model.AchievementId = achievement_model.AchievementId;
|
||
details_model.ItemName = item_name;
|
||
details_model.ItemizedScore = 0;
|
||
details_model.Type = "故障选择题处理";
|
||
details_model.CreateTime = DateTime.Now;
|
||
details_model.TotalScore = processing_score;
|
||
details_model.FaultDesc = root_device_name + "-" + device_name + "-" + item.FaultDesc + "-" + position_item;
|
||
details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(details_model);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (details_list.Count > 0)
|
||
{
|
||
DataBase.achievement_details_list.AddRange(details_list);
|
||
}
|
||
achievement_model.TotalScore = achievement_model.TotalScore + total_score;
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "请求参数无数据");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 上传故障排故数据接口
|
||
/// </summary>
|
||
/// <param name="parameter">参数</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string AddFaultOperation(string url, string parameter)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "AddFaultOperation.txt", "parameter:" + parameter);
|
||
var model = JsonConvert.DeserializeObject<DataService.Api.add_fault_operation_request>(parameter);
|
||
if (model != null)
|
||
{
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId).FirstOrDefault();
|
||
if (achievement_model == null)
|
||
{
|
||
Write(APICode.Fail, "考生成绩数据不存在");
|
||
}
|
||
|
||
var exam_fault_list = DataBase.exam_fault_list.Where(a => a.ExamId == model.ExamId && a.ChoiceQuestion != "0").ToList();
|
||
var select_total_score = exam_fault_list.Sum(a => decimal.Parse(a.SelectSocre));
|
||
var fault_total_score = exam_fault_list.Sum(a => decimal.Parse(a.FaultScore));
|
||
var handler_score = exam_fault_list.Sum(a => decimal.Parse(a.HandlerScore));
|
||
var total = select_total_score + fault_total_score + handler_score;//总分
|
||
var add_details_model = new DataService.Model.pow_achievement_details();
|
||
var delete_details_model = new DataService.Model.pow_achievement_details();
|
||
var user_fault_model = new DataService.Model.pow_user_fault();
|
||
var correct_model = new DataService.Model.pow_exam_fault();
|
||
var total_defect_score = decimal.Parse(TotalDefectScore);
|
||
var is_processing_score = "0";
|
||
//组织树
|
||
var tree_list = ReadTree();
|
||
var root_device_name = "";
|
||
var device_name = "";
|
||
if (model.Details != null)
|
||
{
|
||
user_fault_model = DataBase.user_fault_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId && a.FaultId == model.FaultId && a.RootDeviceId == model.RootDeviceId && a.DeviceId == model.Details.DeviceId).FirstOrDefault();
|
||
correct_model = exam_fault_list.Where(a => a.FaultId == model.FaultId && a.RootDeviceId == model.RootDeviceId && a.DeviceId == model.Details.DeviceId).FirstOrDefault();
|
||
if (user_fault_model != null)
|
||
{
|
||
var first_list = tree_list.Where(a => a.TowerId == user_fault_model.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != user_fault_model.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == user_fault_model.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == user_fault_model.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (user_fault_model.FaultDesc == "配电箱名称牌缺失" || user_fault_model.FaultDesc == "出线电缆编号牌型号编写错误" || user_fault_model.FaultDesc == "无出线电缆名称牌" || user_fault_model.FaultDesc == "出线开关编号牌缺失" || user_fault_model.FaultDesc == "熔芯不匹配" || user_fault_model.FaultDesc == "熔芯损坏")
|
||
{
|
||
if (user_fault_model.FaultDesc == "熔芯不匹配")
|
||
{
|
||
if (!string.IsNullOrEmpty(model.Details.FaultLocation))
|
||
{
|
||
var correct = correct_model.MultipleQuestion.Split('|').ToList();
|
||
if (correct.Contains(model.Details.FaultLocation))
|
||
{
|
||
var multiple_value_list = new List<string>();
|
||
if (!string.IsNullOrEmpty(user_fault_model.MultipleQuestion))
|
||
{
|
||
multiple_value_list = user_fault_model.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
if (multiple_value_list.Contains(model.Details.FaultLocation))
|
||
{
|
||
if (correct_model.FusibleCoreNormal == model.Details.CurreSelectDetail)
|
||
{
|
||
is_processing_score = "1";
|
||
multiple_value_list.Remove(model.Details.FaultLocation);
|
||
}
|
||
else
|
||
{
|
||
user_fault_model.FusibleCoreFault = model.Details.CurreSelectDetail;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
multiple_value_list.Add(model.Details.FaultLocation);
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
}
|
||
if (is_processing_score == "1")
|
||
{
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
if (multiple_value_list.Count == 0)
|
||
{
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
user_fault_model.ChoiceQuestion = "2";
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "熔芯损坏")
|
||
{
|
||
if (!string.IsNullOrEmpty(model.Details.FaultLocation))
|
||
{
|
||
var correct = correct_model.MultipleQuestion.Split('|').ToList();
|
||
if (correct.Contains(model.Details.FaultLocation))
|
||
{
|
||
var multiple_value_list = new List<string>();
|
||
if (!string.IsNullOrEmpty(user_fault_model.MultipleQuestion))
|
||
{
|
||
multiple_value_list = user_fault_model.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
if (multiple_value_list.Contains(model.Details.FaultLocation))
|
||
{
|
||
if (model.Details.CurreSelectDetail == "true")
|
||
{
|
||
is_processing_score = "1";
|
||
multiple_value_list.Remove(model.Details.FaultLocation);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
multiple_value_list.Add(model.Details.FaultLocation);
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
}
|
||
if (is_processing_score == "1")
|
||
{
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
if (multiple_value_list.Count == 0)
|
||
{
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
user_fault_model.ChoiceQuestion = "2";
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "出线开关编号牌缺失")
|
||
{
|
||
if (model.Details.CurreSelectDetail == "411开关")
|
||
{
|
||
is_processing_score = "1";
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
user_fault_model.ChoiceQuestion = "1";
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "配电箱名称牌缺失")
|
||
{
|
||
if (model.Details.CurreSelectDetail.Replace("配电箱名牌-", "") == user_exam_model.PlatformAreaName)
|
||
{
|
||
is_processing_score = "1";
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
user_fault_model.ChoiceQuestion = "1";
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "无出线电缆名称牌")
|
||
{
|
||
if (model.Details.CurreSelectDetail.Replace("电缆名称牌-411#", "") == user_exam_model.PlatformAreaName)
|
||
{
|
||
is_processing_score = "1";
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
user_fault_model.ChoiceQuestion = "1";
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "出线电缆编号牌型号编写错误")
|
||
{
|
||
if (model.Details.CurreSelectDetail.Replace("电缆名称牌-411#", "") == user_exam_model.PlatformAreaName)
|
||
{
|
||
is_processing_score = "1";
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
user_fault_model.ChoiceQuestion = "1";
|
||
}
|
||
}
|
||
}
|
||
user_fault_model.CurreSelectDetail = model.Details.CurreSelectDetail;
|
||
|
||
if (is_processing_score == "1")
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(correct_model.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = user_fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
if (!string.IsNullOrEmpty(model.Details.FaultLocation))
|
||
{
|
||
item_name = user_fault_model.FaultDesc + "-" + model.Details.FaultLocation.Replace("配电箱名牌-", "").Replace("电缆名称牌-411#", "") + "-" + "缺陷处理分值";
|
||
}
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model != null)
|
||
{
|
||
delete_details_model = achievement_details_model;
|
||
//update_details_model.DetailsId = achievement_details_model.DetailsId;
|
||
//update_details_model.AchievementId = achievement_model.AchievementId;
|
||
//update_details_model.ItemName = item_name;
|
||
//update_details_model.ItemizedScore = processing_score;
|
||
//update_details_model.Type = "故障排故处理";
|
||
//update_details_model.CreateTime = DateTime.Now;
|
||
//update_details_model.TotalScore = processing_score;
|
||
}
|
||
else
|
||
{
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = processing_score;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion != "0")
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(correct_model.HandlerScore) / total) * total_defect_score, 3);
|
||
|
||
var item_name = user_fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
if (!string.IsNullOrEmpty(model.Details.FaultLocation))
|
||
{
|
||
item_name = user_fault_model.FaultDesc + "-" + model.Details.FaultLocation.Replace("配电箱名牌-", "").Replace("电缆名称牌-411#", "") + "-" + "缺陷处理分值";
|
||
}
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
//if (achievement_details_model != null)
|
||
//{
|
||
// delete_details_model = achievement_details_model;
|
||
//}
|
||
if (achievement_details_model != null)
|
||
{
|
||
delete_details_model = achievement_details_model;
|
||
}
|
||
else
|
||
{
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = 0;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(model.Details.FaultLocation))
|
||
{
|
||
if (!string.IsNullOrEmpty(correct_model.MultipleQuestion))
|
||
{
|
||
var multiple_value_list = correct_model.MultipleQuestion.Split('|').ToList();
|
||
if (multiple_value_list.Contains(model.Details.FaultLocation))
|
||
{
|
||
is_processing_score = "1";
|
||
multiple_value_list.Remove(model.Details.FaultLocation);
|
||
}
|
||
if (is_processing_score == "1")
|
||
{
|
||
user_fault_model.MultipleQuestion = string.Join("|", multiple_value_list);
|
||
if (multiple_value_list.Count == 0)
|
||
{
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(correct_model.Position))
|
||
{
|
||
var multiple_value_list = correct_model.Position.Split('|').ToList();
|
||
if (multiple_value_list.Contains(model.Details.FaultLocation))
|
||
{
|
||
is_processing_score = "1";
|
||
multiple_value_list.Remove(model.Details.FaultLocation);
|
||
}
|
||
if (is_processing_score == "1")
|
||
{
|
||
user_fault_model.Position = string.Join("|", multiple_value_list);
|
||
if (multiple_value_list.Count == 0)
|
||
{
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
is_processing_score = "1";
|
||
}
|
||
|
||
if (is_processing_score == "1")
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(correct_model.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = user_fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
if (!string.IsNullOrEmpty(model.Details.FaultLocation))
|
||
{
|
||
item_name = user_fault_model.FaultDesc + "-" + model.Details.FaultLocation + "-" + "缺陷处理分值";
|
||
}
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model != null)
|
||
{
|
||
achievement_details_model.ItemName = item_name;
|
||
achievement_details_model.ItemizedScore = processing_score;
|
||
achievement_details_model.Type = "故障排故处理";
|
||
achievement_details_model.CreateTime = DateTime.Now;
|
||
achievement_details_model.TotalScore = processing_score;
|
||
achievement_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
achievement_details_model.ScoreType = "缺陷处理分值";
|
||
}
|
||
else
|
||
{
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = processing_score;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (model.Screen != null)
|
||
{
|
||
#region 断路器
|
||
user_fault_model = DataBase.user_fault_list.Where(a => a.ExamId == model.ExamId && a.UserId == model.UserId && a.FaultId == model.FaultId && a.RootDeviceId == model.RootDeviceId && a.DeviceId == model.Screen.DeviceId).FirstOrDefault();
|
||
if (user_fault_model != null)
|
||
{
|
||
var first_list = tree_list.Where(a => a.TowerId == user_fault_model.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != user_fault_model.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == user_fault_model.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == user_fault_model.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
correct_model = exam_fault_list.Where(a => a.FaultId == model.FaultId && a.RootDeviceId == model.RootDeviceId && a.DeviceId == model.Screen.DeviceId).FirstOrDefault();
|
||
if (null == correct_model)
|
||
{
|
||
return Write(APICode.Success, "故障:" + model.FaultDesc + ":无需操作!");
|
||
}
|
||
var name_list = user_fault_model.Name.Split('|');
|
||
ArrayList name_arry = new ArrayList(name_list);
|
||
var value_list = user_fault_model.Value.Split('|');
|
||
var success_index = 0;
|
||
var value = new List<string>();
|
||
|
||
if (user_fault_model.FaultDesc == "漏电保护设置不合理" || user_fault_model.FaultDesc == "欠压保护设置错误" || user_fault_model.FaultDesc == "过压保护设置错误")
|
||
{
|
||
if (user_fault_model.FaultDesc == "欠压保护设置错误")
|
||
value = user_exam_model.UndervoltageProtection.Split('|').ToList();
|
||
else if (user_fault_model.FaultDesc == "过压保护设置错误")
|
||
value = user_exam_model.OvervoltageProtection.Split('|').ToList();
|
||
else
|
||
value = user_exam_model.LeakageProtection.Split('|').ToList();
|
||
if (value.Count > 1 && !string.IsNullOrEmpty(value[0]))
|
||
{
|
||
foreach (var item in model.Screen.Params)
|
||
{
|
||
if (item.Name == "档位")
|
||
{
|
||
if (item.Value == value[0])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
else if (item.Name == "开关")
|
||
{
|
||
if (item.Value == value[1])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "过载保护设置错误")
|
||
{
|
||
value = user_exam_model.OverloadProtection.Split('|').ToList();
|
||
if (value.Count > 1 && !string.IsNullOrEmpty(value[0]))
|
||
{
|
||
foreach (var item in model.Screen.Params)
|
||
{
|
||
if (item.Name == "ln1")
|
||
{
|
||
if (item.Value == value[0])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
else if (item.Name == "保护")
|
||
{
|
||
if (item.Value == value[1])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "短路延时保护设置错误" || user_fault_model.FaultDesc == "短路瞬时保护设置错误")
|
||
{
|
||
if (user_fault_model.FaultDesc == "短路瞬时保护设置错误")
|
||
value = user_exam_model.ShortCircuitProtection.Split('|').ToList();
|
||
else
|
||
value = user_exam_model.ShortCircuitDelayProtection.Split('|').ToList();
|
||
if (value.Count > 1 && !string.IsNullOrEmpty(value[0]))
|
||
{
|
||
foreach (var item in model.Screen.Params)
|
||
{
|
||
if (item.Name == "ln2")
|
||
{
|
||
if (item.Value == value[0])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
else if (item.Name == "保护")
|
||
{
|
||
if (item.Value == value[1])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (user_fault_model.FaultDesc == "缺相保护设置错误")
|
||
{
|
||
value = user_exam_model.PhaseLossProtection.Split('|').ToList();
|
||
if (!string.IsNullOrEmpty(value[0]))
|
||
{
|
||
foreach (var item in model.Screen.Params)
|
||
{
|
||
if (item.Name == "开关")
|
||
{
|
||
if (item.Value == value[0])
|
||
{
|
||
success_index++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
foreach (var item in model.Screen.Params)
|
||
{
|
||
var subscript = name_arry.IndexOf(item.Name);
|
||
if (subscript > -1)
|
||
{
|
||
value_list[subscript] = item.Value;
|
||
}
|
||
}
|
||
user_fault_model.Value = string.Join("|", value_list);
|
||
|
||
if (success_index == value.Count)
|
||
{
|
||
user_fault_model.ChoiceQuestion = "0";
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(correct_model.HandlerScore) / total) * total_defect_score, 3);
|
||
|
||
var item_name = user_fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model != null)
|
||
{
|
||
delete_details_model = achievement_details_model;
|
||
//update_details_model.DetailsId = achievement_details_model.DetailsId;
|
||
//update_details_model.AchievementId = achievement_model.AchievementId;
|
||
//update_details_model.ItemName = item_name;
|
||
//update_details_model.ItemizedScore = processing_score;
|
||
//update_details_model.Type = "故障排故处理";
|
||
//update_details_model.TotalScore= processing_score;
|
||
//update_details_model.CreateTime = DateTime.Now;
|
||
}
|
||
else
|
||
{
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = processing_score;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (user_fault_model.ChoiceQuestion == "0")
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(correct_model.HandlerScore) / total) * total_defect_score, 3);
|
||
user_fault_model.ChoiceQuestion = "1";
|
||
var item_name = user_fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model != null)
|
||
{
|
||
delete_details_model = achievement_details_model;
|
||
}
|
||
else
|
||
{
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = 0;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
user_fault_model.IsProcessingScore = is_processing_score;
|
||
if (add_details_model != null)
|
||
{
|
||
DataBase.achievement_details_list.Add(add_details_model);
|
||
}
|
||
if (delete_details_model != null)
|
||
{
|
||
DataBase.achievement_details_list.RemoveAll(a => a.DetailsId == delete_details_model.DetailsId);
|
||
}
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "请求参数无数据");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 结束故障排故处理接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string EndFaultOperation(string url, string ExamId, string UserId)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "EndFaultOperation.txt", "ExamId:" + ExamId + ",UserId:" + UserId);
|
||
var details_list = new List<DataService.Model.pow_achievement_details>();
|
||
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
var achievement_model = DataBase.achievement_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (achievement_model == null)
|
||
{
|
||
return Write(APICode.Fail, "考生成绩数据不存在");
|
||
}
|
||
|
||
var exam_fault = DataBase.exam_fault_list.Where(a => a.ExamId == ExamId && a.ChoiceQuestion != "0").OrderBy(a => a.CreateTime).ToList();
|
||
var user_fault = DataBase.user_fault_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).ToList();
|
||
var select_total_score = exam_fault.Sum(a => decimal.Parse(a.SelectSocre));
|
||
var fault_total_score = exam_fault.Sum(a => decimal.Parse(a.FaultScore));
|
||
var handler_score = exam_fault.Sum(a => decimal.Parse(a.HandlerScore));
|
||
var total = select_total_score + fault_total_score + handler_score;//总分
|
||
var total_defect_score = decimal.Parse(TotalDefectScore);
|
||
//组织树
|
||
var tree_list = ReadTree();
|
||
var new_exam_fault = exam_fault.Where(a => a.SpecificSimulation == "现场处理").ToList();
|
||
foreach (var item in new_exam_fault)
|
||
{
|
||
var root_device_name = "";
|
||
var device_name = "";
|
||
var user_fault_model = user_fault.Where(a => a.FaultId == item.FaultId).FirstOrDefault();
|
||
if (user_fault_model != null)
|
||
{
|
||
var first_list = tree_list.Where(a => a.TowerId == item.RootDeviceId).FirstOrDefault();
|
||
if (first_list != null)
|
||
{
|
||
root_device_name = first_list.Tower;
|
||
if (first_list.TowerId != item.DeviceId)
|
||
{
|
||
if (first_list.Data != null)
|
||
{
|
||
var two_list = first_list.Data.Where(a => a.PowerDistributionBoxId == item.DeviceId).FirstOrDefault();
|
||
if (two_list != null)
|
||
{
|
||
device_name = two_list.PowerDistributionBox;
|
||
}
|
||
else
|
||
{
|
||
var three_list = first_list.Data.SelectMany(a => a.Data).Where(a => a.LineId == item.DeviceId).FirstOrDefault();
|
||
if (three_list != null)
|
||
{
|
||
device_name = three_list.Line;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.ChoiceQuestion == user_fault_model.ChoiceQuestion)
|
||
{
|
||
var value_list = new List<string>();
|
||
var select_value_list = new List<string>();
|
||
if (item.FaultDesc == "配电箱箱门未加锁" || item.FaultDesc == "柜门与箱体没有链接线")
|
||
{
|
||
if (!string.IsNullOrEmpty(item.Position))
|
||
{
|
||
value_list = item.Position.Split('|').ToList();
|
||
select_value_list = user_fault_model.Position.Split('|').ToList();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (item.FaultDesc == "配电箱孔洞未封堵"
|
||
|| item.FaultDesc == "熔断器下桩头发热"
|
||
|| item.FaultDesc == "熔芯不匹配"
|
||
|| item.FaultDesc == "熔芯损坏"
|
||
|| item.FaultDesc == "电缆头套管相色缺失"
|
||
|| item.FaultDesc == "电缆接头发热"
|
||
|| item.FaultDesc == "电缆绝缘层老化开裂"
|
||
|| item.FaultDesc == "拉线无警示套管"
|
||
|| item.FaultDesc == "拉线松动"
|
||
|| item.FaultDesc == "拉线断股锈蚀"
|
||
|| item.FaultDesc == "拉线UT线夹螺帽不齐全"
|
||
|| item.FaultDesc == "接头发热"
|
||
|| item.FaultDesc == "线路弧垂不一致")
|
||
{
|
||
if (!string.IsNullOrEmpty(item.MultipleQuestion))
|
||
{
|
||
if (item.FaultDesc != "相色标识错误")
|
||
{
|
||
value_list = item.MultipleQuestion.Split('|').ToList();
|
||
select_value_list = user_fault_model.MultipleQuestion.Split('|').ToList();
|
||
}
|
||
}
|
||
//if (!string.IsNullOrEmpty(item.MultipleQuestion))
|
||
//{
|
||
// value_list = item.MultipleQuestion.Split('|').ToList();
|
||
// select_value_list = user_fault_model.MultipleQuestion.Split('|').ToList();
|
||
//}
|
||
}
|
||
}
|
||
|
||
if (value_list.Count == 0)
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(item.HandlerScore) / total) * total_defect_score, 3);
|
||
var item_name = user_fault_model.FaultDesc + "-" + "缺陷处理分值";
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var add_details_model = new DataService.Model.pow_achievement_details();
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = 0;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(add_details_model);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (var position_item in value_list)
|
||
{
|
||
if (select_value_list.Contains(position_item))
|
||
{
|
||
decimal processing_score = 0;
|
||
|
||
processing_score = System.Decimal.Round((decimal.Parse(item.HandlerScore) / total) * total_defect_score, 3);
|
||
|
||
var item_name = user_fault_model.FaultDesc + "-" + position_item + "-" + "缺陷处理分值";
|
||
item_name = root_device_name + "-" + device_name + "-" + item_name;
|
||
var achievement_details_model = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.ItemName == item_name).FirstOrDefault();
|
||
if (achievement_details_model == null)
|
||
{
|
||
var add_details_model = new DataService.Model.pow_achievement_details();
|
||
add_details_model.DetailsId = Guid.NewGuid().ToString("N");
|
||
add_details_model.AchievementId = achievement_model.AchievementId;
|
||
add_details_model.ItemName = item_name;
|
||
add_details_model.ItemizedScore = 0;
|
||
add_details_model.Type = "故障排故处理";
|
||
add_details_model.CreateTime = DateTime.Now;
|
||
add_details_model.TotalScore = processing_score;
|
||
add_details_model.FaultDesc = item_name.Replace("-缺陷处理分值", "");
|
||
add_details_model.ScoreType = "缺陷处理分值";
|
||
details_list.Add(add_details_model);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
var details = DataBase.achievement_details_list.Where(a => a.AchievementId == achievement_model.AchievementId && a.Type == "故障排故处理").ToList();
|
||
var total_score = details.Sum(a => a.ItemizedScore);
|
||
if (details_list.Count > 0)
|
||
{
|
||
DataBase.achievement_details_list.AddRange(details_list);
|
||
}
|
||
achievement_model.TotalScore = achievement_model.TotalScore + total_score.Value;
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 选择台区上传接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="SelectPlatformArea">选择的台区</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string SelectPlatformArea(string url, string ExamId, string UserId, string SelectPlatformArea)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "SelectPlatformArea.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",SelectPlatformArea:" + SelectPlatformArea);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
user_exam_model.SelectPlatformArea = SelectPlatformArea;
|
||
if (SelectPlatformArea != user_exam_model.PlatformAreaName)
|
||
{
|
||
user_exam_model.IsScore = "1";
|
||
}
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新验电结果接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="Type">类型 巡线、排故</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateElectricity(string url, string ExamId, string UserId, string Type)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateElectricity.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",Type:" + Type);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
if (Type == "巡线")
|
||
{
|
||
user_exam_model.LineIsScore = "1";
|
||
}
|
||
else if (Type == "排故")
|
||
{
|
||
user_exam_model.FaultIsScore = "1";
|
||
}
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新爬杆结果
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateClimbrod(string url, string ExamId, string UserId)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateClimbrod.txt", "ExamId:" + ExamId + ",UserId:" + UserId);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
user_exam_model.ClimbrodIsScore = "1";
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新未分闸状态拉合熔芯扣分接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateFusibleCore(string url, string ExamId, string UserId)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateFusibleCore.txt", "ExamId:" + ExamId + ",UserId:" + UserId);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
user_exam_model.FusibleCoreIsScore = "1";
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新考试环节接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <param name="SelectPlatformArea">选择的台区</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateExaminationLink(string url, string ExamId, string UserId, string ExaminationLink)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateExaminationLink.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",ExaminationLink:" + ExaminationLink);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
user_exam_model.ExaminationLink = ExaminationLink;
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新围栏接口
|
||
/// </summary>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="UserId">考生id</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateEnclosure(string url, string ExamId, string UserId)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateEnclosure.txt", "ExamId:" + ExamId + ",UserId:" + UserId);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
if (user_exam_model.Status == "已结束")
|
||
{
|
||
return Write(APICode.Fail, "考生考试已结束");
|
||
}
|
||
|
||
var enclosure_fault_score = decimal.Parse(EnclosureFaultScore);
|
||
var value = decimal.Parse(user_exam_model.EnclosureIsScore) - enclosure_fault_score;
|
||
if (value < 0)
|
||
{
|
||
value = 0;
|
||
}
|
||
user_exam_model.EnclosureIsScore = value.ToString();
|
||
|
||
return Write(APICode.Success, "成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新考试时长接口
|
||
/// </summary>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="ExaminationDuration">剩余考试时长</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateExaminationDuration(string url, string UserId, string ExamId, string ExaminationDuration)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateExaminationDuration.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",ExaminationDuration:" + ExaminationDuration);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
user_exam_model.ExaminationDuration = ExaminationDuration;
|
||
return Write(APICode.Success, "更新考试时长成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "更新考试时长失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 更新场景设备状态接口
|
||
/// </summary>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="RestoreSceneMsg">场景设备状态</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateRestoreSceneMsg(string url, string UserId, string ExamId, string RestoreSceneMsg)
|
||
{
|
||
////System.IO.File.AppendAllText(@"D:\zy\" + "UpdateRestoreSceneMsg.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",RestoreSceneMsg:" + RestoreSceneMsg);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
try
|
||
{
|
||
user_exam_model.RestoreSceneMsg = RestoreSceneMsg;
|
||
return Write(APICode.Success, "更新场景设备状态成功");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "更新场景设备状态失败");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Write(APICode.Fail, "考生考试信息不存在");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Post 获取并更新考生考试时间
|
||
/// </summary>
|
||
/// <param name="UserId">用户id</param>
|
||
/// <param name="ExamId">考试id</param>
|
||
/// <param name="Read">1 读取, 0 更新</param>
|
||
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
|
||
public string UpdateUserExamTime(string url, string UserId, string ExamId, string Read)
|
||
{
|
||
//System.IO.File.AppendAllText(@"D:\zy\" + "UpdateUserExamTime.txt", "ExamId:" + ExamId + ",UserId:" + UserId + ",Read:" + Read);
|
||
var user_exam_model = DataBase.user_exam_list.Where(a => a.ExamId == ExamId && a.UserId == UserId).FirstOrDefault();
|
||
if (user_exam_model != null)
|
||
{
|
||
var Last = user_exam_model.UpdateTime.HasValue ? user_exam_model.UpdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
|
||
if (Read == "1")
|
||
{
|
||
var data = new
|
||
{
|
||
last = Last,
|
||
now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
||
msg = "查询考试时间成功!"
|
||
};
|
||
return Write(APICode.Success, data);
|
||
}
|
||
else
|
||
{
|
||
try
|
||
{
|
||
user_exam_model.UpdateTime = DateTime.Now;
|
||
return Write(APICode.Success, "更新考试时间成功!");
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return Write(APICode.Fail, "更新考试时间失败");
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//Write(APICode.Fail, "考生考试信息不存在");
|
||
var data = new
|
||
{
|
||
last = "",
|
||
now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
||
msg = "考生考试信息不存在"
|
||
};
|
||
return Write(APICode.Fail, data);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 计算操作票得分
|
||
/// </summary>
|
||
/// <param name="total">总分</param>
|
||
/// <param name="list_TicketId_HasScore">保存未扣分项</param>
|
||
/// <param name="list_user_operation_ticket">用户操作票</param>
|
||
/// <param name="list_exam_operation_ticket">答案操作票</param>
|
||
/// <returns></returns>
|
||
public int ComputeTicketScore(ref int total, List<string> list_TicketId_HasScore, List<OperationTicketData> list_user_operation_ticket, List<DataService.Model.pow_exam_operation_ticket> list_exam_operation_ticket)
|
||
{
|
||
for (int i = 0; i < list_exam_operation_ticket.Count; i++)
|
||
{
|
||
var item_exam = list_exam_operation_ticket[i];
|
||
var item_user = list_user_operation_ticket.FirstOrDefault(s => s.OperationTicketId == item_exam.OperationTicketId);
|
||
//没找到答案 扣1分
|
||
if (null == item_user)
|
||
{
|
||
total--;
|
||
if (total <= 0)
|
||
{
|
||
return 0;
|
||
}
|
||
continue;
|
||
}
|
||
//找到答案 扣除距离分
|
||
var exam_index = i;
|
||
var user_Index = list_user_operation_ticket.IndexOf(item_user);
|
||
var distance = user_Index - exam_index;
|
||
//不扣分项
|
||
if (distance == 0)
|
||
{
|
||
list_TicketId_HasScore.Add(item_user.OperationTicketId);
|
||
}
|
||
total = total - distance;
|
||
if (total <= 0)
|
||
{
|
||
return 0;
|
||
}
|
||
//剩余用户答案
|
||
var remain_user_operation_ticket = new List<OperationTicketData>();
|
||
for (var jindex = user_Index + 1; jindex < list_user_operation_ticket.Count; jindex++)
|
||
{
|
||
remain_user_operation_ticket.Add(list_user_operation_ticket[jindex]);
|
||
}
|
||
//剩余标准答案
|
||
var remain_exam_operation_ticket = new List<DataService.Model.pow_exam_operation_ticket>();
|
||
for (var e_index = exam_index + 1; e_index < list_exam_operation_ticket.Count; e_index++)
|
||
{
|
||
remain_exam_operation_ticket.Add(list_exam_operation_ticket[e_index]);
|
||
}
|
||
//多余的用户操作票扣分
|
||
if (remain_exam_operation_ticket.Count <= 0)
|
||
{
|
||
total = total - remain_user_operation_ticket.Count;
|
||
if (total <= 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
return ComputeTicketScore(ref total, list_TicketId_HasScore, remain_user_operation_ticket, remain_exam_operation_ticket);
|
||
}
|
||
return total;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取步骤得分
|
||
/// </summary>
|
||
/// <param name="list_proc"></param>
|
||
/// <returns></returns>
|
||
public int get_ticket_proc_scrore(List<DataService.Model.pow_user_operation_proc_ticket> list_proc)
|
||
{
|
||
int total = 5;
|
||
foreach (var item in list_proc)
|
||
{
|
||
//未做步骤直接扣1分
|
||
if (item.State == 0)
|
||
{
|
||
total = total - 1;
|
||
if (total <= 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
//已做步骤按真实情况扣分或不扣分
|
||
else
|
||
{
|
||
total = total - item.Score;
|
||
if (total <= 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
}
|
||
return total;
|
||
}
|
||
|
||
public List<DataService.Other.fault_tree> ReadTree()
|
||
{
|
||
var tree_list = new List<DataService.Other.fault_tree>();
|
||
string fault_tree_file = DataBase.path + "/Json/FaultTree.json";
|
||
//读取json文件
|
||
using (StreamReader file = File.OpenText(fault_tree_file))
|
||
{
|
||
using (JsonTextReader reader = new JsonTextReader(file))
|
||
{
|
||
tree_list = JsonConvert.DeserializeObject<List<DataService.Other.fault_tree>>(JToken.ReadFrom(reader).ToString());
|
||
}
|
||
}
|
||
return tree_list;
|
||
}
|
||
|
||
private string Write(APICode code, object data)
|
||
{
|
||
return GetJsonWithCode(code, data);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取带状态码的JSON字符串
|
||
/// </summary>
|
||
/// <param name="code"></param>
|
||
/// <param name="dataObj"></param>
|
||
/// <returns></returns>
|
||
private string GetJsonWithCode(APICode code, object dataObj)
|
||
{
|
||
return Newtonsoft.Json.JsonConvert.SerializeObject(new { code = (int)code, state = code.ToString(), data = dataObj });
|
||
}
|
||
|
||
private string GetResult(bool _state, object _data, string _message)
|
||
{
|
||
var iso = new IsoDateTimeConverter();
|
||
iso.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
|
||
return JsonConvert.SerializeObject(new Result(_state, _data, _message), iso);
|
||
}
|
||
|
||
protected string GetResult(bool _state, string _message)
|
||
{
|
||
return JsonConvert.SerializeObject(new Result(_state, _message));
|
||
}
|
||
}
|
||
|
||
public class Result
|
||
{
|
||
public bool state = false;
|
||
public string message = "";
|
||
public object data = null;
|
||
|
||
public Result(bool _state, object _data, string _message)
|
||
{
|
||
this.state = _state;
|
||
this.data = _data;
|
||
this.message = _message;
|
||
}
|
||
|
||
public Result(bool _state, object _data)
|
||
{
|
||
this.state = _state;
|
||
this.data = _data;
|
||
}
|
||
|
||
public Result(bool _state, string _message)
|
||
{
|
||
this.state = _state;
|
||
this.message = _message;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 接口状态码
|
||
/// </summary>
|
||
public enum APICode
|
||
{
|
||
/// <summary>
|
||
/// 成功
|
||
/// </summary>
|
||
Success,
|
||
/// <summary>
|
||
/// 失败
|
||
/// </summary>
|
||
Fail
|
||
}
|
||
}
|