403 lines
13 KiB
C#
403 lines
13 KiB
C#
using Newtonsoft.Json;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using LitJson;
|
|
|
|
/// <summary>
|
|
/// 场景中用到的全部buffer
|
|
/// </summary>
|
|
public class BufferTemp_6001
|
|
{
|
|
public List<string> TestPen3list;
|
|
public List<string> InSwitchCloseYDList;
|
|
public List<string> InSwitchOpenYDList;
|
|
public List<string> currentunInstallJieXian;
|
|
public List<string> currentInstallJieXian;
|
|
public List<string> installCover;
|
|
public List<string> currentInstallTestJieXian;
|
|
|
|
}
|
|
|
|
public class Score_6001 : ScoreBase
|
|
{
|
|
/// <summary>
|
|
/// 现场场景中的特殊物体控制
|
|
/// </summary>
|
|
private new Device_Control_6001 device_Control;
|
|
|
|
/// <summary>
|
|
/// 初始化,有配置用配置的分数,没有使用默认的分数
|
|
/// </summary>
|
|
public override void Init()
|
|
{
|
|
base.Init();
|
|
List<ScoreSubjectStep> tmps = new List<ScoreSubjectStep>();
|
|
tmps.Add(new ScoreSubjectStep(1, 0));//线损异常类型研判_
|
|
tmps.Add(new ScoreSubjectStep(2, 0));//异常分析_
|
|
tmps.Add(new ScoreSubjectStep(3, 5));//工作预约_
|
|
tmps.Add(new ScoreSubjectStep(4, 5));//办理工作票_
|
|
tmps.Add(new ScoreSubjectStep(5, 5));//正确着装_
|
|
tmps.Add(new ScoreSubjectStep(6, 10));//选取工具_
|
|
tmps.Add(new ScoreSubjectStep(7, 5));//与客户沟通_
|
|
tmps.Add(new ScoreSubjectStep(8, 0));//班前会_
|
|
tmps.Add(new ScoreSubjectStep(9, 3));//采集故障
|
|
tmps.Add(new ScoreSubjectStep(10, 4));//采集故障处理
|
|
tmps.Add(new ScoreSubjectStep(11, 4));//清理现场_
|
|
|
|
|
|
steps = new Dictionary<int, ScoreSubjectStep>();
|
|
tmps.ForEach(a =>
|
|
{
|
|
steps.Add(a.subProcessId, a);
|
|
});
|
|
|
|
List<D_SubProcess> dsteps = new List<D_SubProcess>();
|
|
DataManager.Instance.d_System.subjects.Find(a => a.id == schemeId).processes.ForEach(a =>
|
|
{
|
|
dsteps.AddRange(a.subProcesses);
|
|
});
|
|
|
|
for (int i = 0; i < steps.Count; i++)
|
|
{
|
|
steps[i + 1].step = dsteps[i];
|
|
}
|
|
|
|
//清理缓存
|
|
TestPen3list.Clear();
|
|
InSwitchCloseYDList.Clear();
|
|
InSwitchOpenYDList.Clear();
|
|
currentunInstallJieXian.Clear();
|
|
currentInstallJieXian.Clear();
|
|
installCover.Clear();
|
|
currentInstallTestJieXian.Clear();
|
|
reInstall = false;
|
|
|
|
FaultManager.Instance.selectedFaultOptions = JsonMapper.ToObject<FaultOptions>("{\r\n \"FaultDevice\": \"采集器\",\r\n \"FaultDeviceShow\": false,\r\n \"FaultTypeShow\": false,\r\n \"FaultSituationL1Show\": false,\r\n \"FaultSituationL2Show\": true,\r\n \"dataFaultType\": [\r\n {\r\n \"name\": \"111\",\r\n \"dataFaultSituationL1\": [\r\n {\r\n \"name\": \"2222\",\r\n \"dataFaultSituationL2\": [\r\n {\r\n \"L2name\": \"数据采集失败\",\r\n \"L2Limitation\": []\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}");
|
|
FaultManager.Instance.originalFaultOptions = JsonManager.Instance.LoadData<FaultOptions>("FaultOptions");
|
|
}
|
|
|
|
public override void SetDeviceControl(Device_Control device_Control)
|
|
{
|
|
base.SetDeviceControl(device_Control);
|
|
this.device_Control = (Device_Control_6001)device_Control;
|
|
}
|
|
/// <summary>
|
|
/// 三步验电顺序
|
|
/// </summary>
|
|
List<string> TestPen3list = new List<string>();
|
|
/// <summary>
|
|
/// 开关断电验电
|
|
/// </summary>
|
|
List<string> InSwitchCloseYDList = new List<string>();
|
|
/// <summary>
|
|
/// 开关通电验电
|
|
/// </summary>
|
|
List<string> InSwitchOpenYDList = new List<string>();
|
|
/// <summary>
|
|
/// 拆除接线顺序
|
|
/// </summary>
|
|
List<string> unInstallJieXian = new List<string>()
|
|
{
|
|
"A_in_螺丝up", "A_in_螺丝down", "A_in_线",
|
|
"B_in_螺丝up","B_in_螺丝down","B_in_线",
|
|
"C_in_螺丝up","C_in_螺丝down","C_in_线",
|
|
"A_out_螺丝up","A_out_螺丝down","A_out_线",
|
|
"B_out_螺丝up","B_out_螺丝down","B_out_线",
|
|
"C_out_螺丝up","C_out_螺丝down","C_out_线",
|
|
"零_地_螺丝up","零_地_螺丝down","零_地_线",
|
|
"零_out_螺丝up","零_out_螺丝down","零_out_线"
|
|
};
|
|
/// <summary>
|
|
/// 拆除接线螺丝操作
|
|
/// </summary>
|
|
List<string> currentunInstallJieXian = new List<string>();
|
|
/// <summary>
|
|
/// 安装接线螺丝顺序
|
|
/// </summary>
|
|
List<string> installJieXian = new List<string>()
|
|
{
|
|
"零_out_线","零_out_螺丝up","零_out_螺丝down",
|
|
"零_地_线","零_地_螺丝up","零_地_螺丝down",
|
|
"C_out_线","C_out_螺丝up","C_out_螺丝down",
|
|
"B_out_线","B_out_螺丝up","B_out_螺丝down",
|
|
"A_out_线","A_out_螺丝up","A_out_螺丝down",
|
|
"C_in_线","C_in_螺丝up","C_in_螺丝down",
|
|
"B_in_线","B_in_螺丝up","B_in_螺丝down",
|
|
"A_in_线","A_in_螺丝up", "A_in_螺丝down"
|
|
};
|
|
/// <summary>
|
|
/// 安装接线螺丝操作
|
|
/// </summary>
|
|
List<string> currentInstallJieXian = new List<string>();
|
|
|
|
/// <summary>
|
|
/// 安装流程安装盖子
|
|
/// </summary>
|
|
List<string> installCover = new List<string>();
|
|
/// <summary>
|
|
/// 安装流程对接验电螺丝
|
|
/// </summary>
|
|
List<string> installTestJieXian = new List<string>() { "验电笔+A_in_螺丝", "验电笔+B_in_螺丝", "验电笔+C_in_螺丝" };
|
|
/// <summary>
|
|
/// 安装流程对接验电操作
|
|
/// </summary>
|
|
List<string> currentInstallTestJieXian = new List<string>();
|
|
/// <summary>
|
|
/// 采集器是否重装过
|
|
/// </summary>
|
|
bool reInstall = false;
|
|
public override void CheckScore(string triggerName, object para)
|
|
{
|
|
base.CheckScore(triggerName, para);
|
|
if (triggerName == "电脑")
|
|
{
|
|
if (para.ToString() == "透抄检查完成")
|
|
{
|
|
steps[1].SetScore(true);//线损异常类型研判完成
|
|
}
|
|
}
|
|
if (triggerName == "手机")
|
|
{
|
|
if (para.ToString() == "异常分析完成")
|
|
{
|
|
steps[2].SetScore(true);//1->2 异常分析完成
|
|
}
|
|
else if (para.ToString() == "工作预约完成")
|
|
{
|
|
steps[3].SetScore(true);//2->3 工作预约完成
|
|
}
|
|
}
|
|
else if (triggerName == "低压工作票确认按钮")
|
|
{
|
|
steps[4].SetScore(true);//3->4 办理工作票完成
|
|
}
|
|
else if (triggerName == "现场按钮")
|
|
{
|
|
//检查是否穿戴
|
|
float tmp = 0;
|
|
tmp += (PacksackBagMgr.Instance.wearDic.ContainsKey("国网安全帽") ? 0.25f : 0);
|
|
tmp += (PacksackBagMgr.Instance.wearDic.ContainsKey("工作服") ? 0.25f : 0);
|
|
tmp += (PacksackBagMgr.Instance.wearDic.ContainsKey("编织手套") ? 0.25f : 0);
|
|
tmp += (PacksackBagMgr.Instance.wearDic.ContainsKey("绝缘靴") ? 0.25f : 0);
|
|
steps[5].SetScore(tmp);
|
|
|
|
//检查背包是否携带
|
|
string[] shoudleTools = new string[] { "剥线钳", "绝缘螺丝刀", "验电笔", "国网安全帽", "工作服", "编织手套", "绝缘靴", "工作证", "盒装封印", "采集器" };
|
|
float tmp2 = 1;
|
|
shoudleTools.ToList().ForEach(a =>
|
|
{
|
|
tmp2 -= (PacksackBagMgr.Instance.toolAndMaterialDic.ContainsKey(a) ? 0 : 0.1f);
|
|
});
|
|
steps[6].SetScore(Mathf.Clamp01(tmp2));
|
|
}
|
|
else if (triggerName == "工作证")
|
|
{
|
|
//与客户沟通
|
|
steps[7].SetScore(true);
|
|
}
|
|
else if (triggerName == "NPC负责人")
|
|
{
|
|
//班前会
|
|
steps[8].SetScore(true);
|
|
}
|
|
else if (triggerName == "验电笔+插座" || triggerName == "验电笔+柜门")
|
|
{
|
|
//记录验电顺序
|
|
TestPen3list.Add(triggerName);
|
|
}
|
|
else if (triggerName == "故障记录按钮")
|
|
{
|
|
//采集故障,完成验电、选了一个采集异常
|
|
steps[9].SetScore(isCheckE() &&
|
|
FaultManager.Instance.selectedFaultsInReg.Count == 1 && FaultManager.Instance.selectedFaultsInReg[0].Equals("采集异常"));
|
|
}
|
|
else if (triggerName == "采集器")
|
|
{
|
|
if (para.ToString() == "采集器完成重装")
|
|
{
|
|
reInstall = true;
|
|
}
|
|
}
|
|
else if (triggerName == "联系主站台按钮")
|
|
{
|
|
if (steps[9].isDone && para.ToString() == "异常分析完成" && reInstall)
|
|
{
|
|
steps[10].SetScore(true);
|
|
}
|
|
}
|
|
else if (triggerName == "柜门封印触发区域")
|
|
{
|
|
if (steps[10].isDone)
|
|
{
|
|
if (!device_Control.sundries.gameObject.activeInHierarchy && device_Control.door_screw.isInstall && !device_Control.door_seal.isCut)
|
|
{
|
|
steps[11].SetScore(true);//清理现场
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查三步验电
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private bool isCheckE()
|
|
{
|
|
int guimen = 0;
|
|
if (TestPen3list.Count >= 3)
|
|
{
|
|
for (int i = 0; i < TestPen3list.Count; i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
if (TestPen3list[i] != "验电笔+插座")
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if (TestPen3list[i] == "验电笔+柜门")
|
|
{
|
|
guimen = i;
|
|
}
|
|
else
|
|
{
|
|
if (guimen != 0)
|
|
{
|
|
//三步验电完成
|
|
Debug.Log("三步验电正确");
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
/// <summary>
|
|
/// 开关验电
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private bool isInSwitchCheckE()
|
|
{
|
|
if (InSwitchCloseYDList.Contains("验电笔+in开关_螺丝1") && InSwitchCloseYDList.Contains("验电笔+in开关_螺丝2") && InSwitchCloseYDList.Contains("验电笔+in开关_螺丝2"))
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断拆接线顺序
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private bool IsUninstallJieXianCheckE()
|
|
{
|
|
if (currentunInstallJieXian.Count != unInstallJieXian.Count)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//一一比对
|
|
for (int i = 0; i < currentunInstallJieXian.Count; i++)
|
|
{
|
|
if (currentunInstallJieXian[i] != unInstallJieXian[i])
|
|
{
|
|
//不分上下螺丝
|
|
if (currentunInstallJieXian[i].Replace("up", "").Replace("down", "") != unInstallJieXian[i].Replace("up", "").Replace("down", ""))
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断安装接线顺序
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool IsInstallJieXianCheckE()
|
|
{
|
|
if (!currentInstallJieXian.Contains("电能表拆装螺丝1") || !currentInstallJieXian.Contains("电能表拆装螺丝2"))
|
|
return false;
|
|
|
|
if (currentInstallJieXian.Count < installJieXian.Count + 2)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//一一比对
|
|
string[] tmps = new string[currentInstallJieXian.Count];
|
|
currentInstallJieXian.CopyTo(tmps);
|
|
var tmplist = tmps.ToList();
|
|
tmplist.Remove("电能表拆装螺丝1");
|
|
tmplist.Remove("电能表拆装螺丝2");
|
|
|
|
|
|
for (int i = 0; i < tmplist.Count; i++)
|
|
{
|
|
//不分上下螺丝
|
|
if (tmplist[i].Replace("up", "").Replace("down", "") != installJieXian[i].Replace("up", "").Replace("down", ""))
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public bool Check15()
|
|
{
|
|
//开关关了,盖子拧上了
|
|
if (device_Control.inSwitch.isOpen && installCover.Contains("电能表盖子固定螺丝1") && installCover.Contains("电能表盖子固定螺丝2"))
|
|
{
|
|
//无验电顺序
|
|
if (installTestJieXian.TrueForAll(a => currentInstallTestJieXian.Any(b => b.Replace("up", "").Replace("down", "") == a)))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存场景的Buffer信息
|
|
/// </summary>
|
|
/// <exception cref="System.NotImplementedException"></exception>
|
|
public override string SaveSceneBufferList()
|
|
{
|
|
BufferTemp_6001 tmp = new BufferTemp_6001();
|
|
tmp.TestPen3list = TestPen3list;
|
|
tmp.InSwitchCloseYDList = InSwitchCloseYDList;
|
|
tmp.InSwitchOpenYDList = InSwitchOpenYDList;
|
|
tmp.currentunInstallJieXian = currentunInstallJieXian;
|
|
tmp.currentInstallJieXian = currentInstallJieXian;
|
|
tmp.installCover = installCover;
|
|
tmp.currentInstallTestJieXian = currentInstallTestJieXian;
|
|
string sceneInfo = JsonConvert.SerializeObject(tmp, Formatting.Indented);
|
|
return sceneInfo;
|
|
//throw new System.NotImplementedException();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载场景的Buffer信息
|
|
/// </summary>
|
|
public override void LoadSceneBufferList(string sceneInfo)
|
|
{
|
|
BufferTemp_6001 tmp = new BufferTemp_6001();
|
|
tmp = JsonMapper.ToObject<BufferTemp_6001>(sceneInfo);
|
|
TestPen3list = tmp.TestPen3list;
|
|
InSwitchCloseYDList = tmp.InSwitchCloseYDList;
|
|
InSwitchOpenYDList = tmp.InSwitchOpenYDList;
|
|
currentunInstallJieXian = tmp.currentunInstallJieXian;
|
|
currentInstallJieXian = tmp.currentInstallJieXian;
|
|
installCover = tmp.installCover;
|
|
currentInstallTestJieXian = tmp.currentInstallTestJieXian;
|
|
//throw new System.NotImplementedException();
|
|
}
|
|
}
|