using AutoMapper;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using static GameManager;
///
/// 端口-编辑
///
public class RedactPort : MonoBehaviour
{
public Body mybody = new Body();
public Root URlreturn;
//public PortQuery.Root root;
public Button save_bt;
PortQuery.PortList portlist;
///
/// 端口
///
//public Dropdown port;
public InputField port;
///
/// 编号
///
public InputField portCode;
///
/// 名称
///
public InputField portName;
///
/// 线缆组名称
///
public Dropdown cableGroupName;
/////
///// 所属设备
/////
//public InputField deviceId;
///
/// 型号
///
//public InputField portModel;
///
/// 状态
///
//public Dropdown status;
///
/// 类型
///
public Dropdown portType;
///
/// 对联机柜
///
public Dropdown conCabinet;
///
/// 对联设备
///
public Dropdown conDevice;
///
/// 对联端口
///
public Dropdown conPort;
public InputField cableName;
private void Awake()
{
addconCabinet();
conCabinet.captionText.text = null;
gameObject.SetActive(false);
}
public void addconCabinet()
{
conCabinet.options.Clear();
List conCabinetname = new List();
for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++)
conCabinetname.Add(GameManager.Inst.Cabinets_go[i].name);
conCabinetname.Add("");
conCabinet.AddOptions(conCabinetname);
}
//MapperConfiguration config;
//IMapper mapper;
private void OnEnable()
{
//config = new MapperConfiguration(cfg =>
//{
// cfg.CreateMap();
// cfg.CreateMap();
//});
//mapper = config.CreateMapper();
//try
//{
// if (!string.IsNullOrEmpty(GameManager.Inst.nowDeviceID))
// {
// for (int i = 0; i < GameManager.Inst.TmsPorts.Count; i++)
// {
// if (GameManager.Inst.TmsPorts[i].id == GameManager.Inst.nowDeviceID)
// {
// portlist = GameManager.Inst.TmsPorts[i];
// break;
// }
// }
// mybody = mapper.Map(portlist);
// }
//}
//catch (Exception e)
//{
// Debug.Log(e.StackTrace + "**********" + e.Message);
//}
if (conCabinet.options.Count == 0)
{
addconCabinet();
}
syncInfo();
#region 正式
init();
port.text = mybody.port;
portCode.text = mybody.portCode;
portName.text = mybody.portName;
cableGroupName.captionText.text = mybody.cableGroupName;
cableName.text = mybody.cableName;
//deviceId.text = mybody.deviceId;
//portModel.text = mybody.portModel;
portType.captionText.text = mybody.portType;
findconCabinet();
conDevice.captionText.text = mybody.conDevice;
//status.value = string.IsNullOrEmpty(mybody.status) ? 2 : Convert.ToInt32(mybody.status);
if (!string.IsNullOrEmpty(mybody.conDevice))
{
//自动识别对联设备
for (int i = 0; i < conDevice.options.Count; i++)
{
if (conDevice.options[i].text == mybody.conDevice)
{
conDevice.value = 0;
conDevice.value = i;
break;
}
}
}
else
{
conDevice.captionText.text = null;
conPort.captionText.text = null;
cableName.text = null;
cableGroupName.captionText.text = null;
}
#endregion
}
///
/// 寻找对联机柜
///
public void findconCabinet()
{
GameObject _go = null;
List gos = new List();
gos.AddRange(GameManager.Inst.Racks_go);
gos.AddRange(GameManager.Inst.TmsCards_go);
for (int i = 0; i < gos.Count; i++)
{
if (gos[i].GetComponent().deviceList.id == mybody.conDevice)
{
_go = gos[i];
break;
}
}
GameObject go = null;
if (_go != null)
{
go = GameManager.Inst.FindParent(_go, GameManager.Inst.IsDesiredParent);
if (go != null)
{
for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++)
{
if (GameManager.Inst.Cabinets_go[i].name == go.name)
{
conCabinet.value = i;
conCabinet.captionText.text = go.name;
break;
}
}
//conCabinet.captionText.text = go.name;
}
}
else
{
conCabinet.captionText.text = null;
}
}
///
/// 同步信息
///
public void syncInfo(string nowDeviceID)
{
mybody = new Body();
//config = new MapperConfiguration(cfg =>
//{
// cfg.CreateMap();
// cfg.CreateMap();
//});
//mapper = config.CreateMapper();
try
{
if (!string.IsNullOrEmpty(GameManager.Inst.nowDeviceID))
{
for (int i = 0; i < GameManager.Inst.TmsPorts.Count; i++)
{
if (GameManager.Inst.TmsPorts[i].id == GameManager.Inst.nowDeviceID)
{
portlist = GameManager.Inst.TmsPorts[i];
break;
}
}
//mybody = mapper.Map(portlist);
if (portlist != null)
{
mybody.id = portlist.id;
mybody.port = portlist.port;
mybody.portCode = portlist.portCode;
mybody.portName = portlist.portName;
mybody.portType = portlist.portType;
mybody.deviceId = portlist.deviceId;
mybody.deviceName = portlist.deviceName;
mybody.portModel = portlist.portModel;
mybody.status = portlist.status;
mybody.conDevice = portlist.conDevice;
mybody.conDevice = portlist.conDeviceName;
mybody.conPort = portlist.conPort;
mybody.cableName = portlist.cableName;
mybody.cableGroupName = portlist.cableGroupName;
mybody.remark = portlist.remark;
mybody.createTime = portlist.createTime;
mybody.createName = portlist.createName;
}
}
}
catch (Exception e)
{
Debug.Log(e.StackTrace + "**********" + e.Message);
}
}
///
/// 同步信息
///
public void syncInfo()
{
//config = new MapperConfiguration(cfg =>
//{
// cfg.CreateMap();
// cfg.CreateMap();
//});
//mapper = config.CreateMapper();
try
{
if (!string.IsNullOrEmpty(GameManager.Inst.nowDeviceID))
{
for (int i = 0; i < GameManager.Inst.TmsPorts.Count; i++)
{
if (GameManager.Inst.TmsPorts[i].id == GameManager.Inst.nowDeviceID)
{
portlist = GameManager.Inst.TmsPorts[i];
break;
}
}
//mybody = mapper.Map(portlist);
if (portlist != null)
{
mybody.id = portlist.id;
mybody.port = portlist.port;
mybody.portCode = portlist.portCode;
mybody.portName = portlist.portName;
mybody.portType = portlist.portType;
mybody.deviceId = portlist.deviceId;
mybody.deviceName = portlist.deviceName;
mybody.portModel = portlist.portModel;
mybody.status = portlist.status;
mybody.conDevice = portlist.conDevice;
mybody.conDeviceName = portlist.conDeviceName;
mybody.conPort = portlist.conPort;
mybody.cableName = portlist.cableName;
mybody.cableGroupName = portlist.cableGroupName;
mybody.remark = portlist.remark;
mybody.createTime = portlist.createTime;
mybody.createName = portlist.createName;
}
}
}
catch (Exception e)
{
Debug.Log(e.StackTrace + "**********" + e.Message);
}
}
///
/// 获取端口的对联设备和对联端口选项
///
///
///
public void init()
{
//var jsonResult = await CombineJSON.GetJson_POST(GameManager.Inst.Jk_URL.dk_cx, GameManager.Inst.token);
//root = JsonConvert.DeserializeObject(jsonResult);
List conDevice_list = new List();//对联设备
List conPort_list = new List();// 对联端口
conPort_list.Add("");
conDevice_list.Add("");
//加载所有对联设备和对联端口选项
Dictionary conDevice_list_dict = new Dictionary();
Dictionary conPort_list_dict = new Dictionary();
if (GameManager.Inst.TmsPorts == null)
return;
foreach (var item in GameManager.Inst.TmsPorts)
{
if (!conDevice_list_dict.ContainsKey(item.deviceId))
{
conDevice_list_dict.Add(item.deviceId, "");
conDevice_list.Add(item.deviceId);
}
if (!conPort_list_dict.ContainsKey(item.port))
{
conPort_list_dict.Add(item.port, "");
conPort_list.Add(item.port);
}
}
conDevice.options.Clear();
conDevice.AddOptions(conDevice_list);
conPort.options.Clear();
conPort.AddOptions(conPort_list);
cableGroupName.options.Clear();
foreach (var item in LineQuery.Inst.keyValues.Keys)
{
Dropdown.OptionData optionData = new Dropdown.OptionData(item);
cableGroupName.options.Add(optionData);
}
cableGroupName.captionText.text = null;
}
private void Start()
{
save_bt.onClick.AddListener(() =>
{
GameManager.Inst.editorMenu.gameObject.SetActive(false);
StartCoroutine(SaveJsonCoroutine());
});
conDevice.onValueChanged.AddListener(OnDropdownValueChanged_conDevice);
//port.onValueChanged.AddListener(OnDropdownValueChanged_port);
conCabinet.onValueChanged.AddListener(OnDropdownValueChanged_conCabinet);
}
private IEnumerator SaveJsonCoroutine()
{
Debug.Log("@@1");
yield return StartCoroutine(saveJson((x) =>
{
//Debug.Log("@@8");
if (x != null && URlreturn != null && URlreturn.message == "操作成功")
{
StartCoroutine(Succeed((x) =>
{
if (x)
{
refurbish();
}
}));
}
else
{
SecondConfirmPanel.DeleteConform(null, "编辑端口失败");
refurbish();
}
}));
}
///
/// 刷新
///
public void refurbish()
{
Array.ForEach(GameManager.Inst.pop_ups.ToArray(), (itme) =>
{
itme.gameObject.SetActive(false);
});
}
public IEnumerator Succeed(Action callback)
{
GameManager.Inst.isLoading = false;
//TransparentGlowManage.Inst.addScript();
//yield return StartCoroutine(GameManager.Inst.init_Device());
//yield return StartCoroutine(GameManager.Inst.init_Port());
//yield return StartCoroutine(LineQuery.Inst.getJsonCoroutine());
//GameManager.Inst.LoadScene();
//callback.Invoke(true);
yield return null;
StartCoroutine(GameManager.Inst.Initialize((x) =>
{
if (!string.IsNullOrEmpty(x))
callback.Invoke(true);
}));
}
///
/// 当 端口 值发生改变时(根据端口添加该端口下信息)
///
///
private void OnDropdownValueChanged_port(int index)
{
if (index == 0) return;
//port.options[index]
//for (int i = 0; i < port.options.Count; i++)
//{
// if (i == port.value)
// {
// port.value = 0;
// port.value = i;
// }
//}
}
///
/// 当 对联设备 值发生改变时(根据对联设备--添加该设备下所有端口)
///
///
public void OnDropdownValueChanged_conDevice(int index)
{
if (index == 0) return;
List conPort_list = new List();//对联端口
conPort_list.Add("");
//conDevice.options[index]//对联设备ID
foreach (var item in GameManager.Inst.root_AllPort.data)
{
if (item.deviceId == conDevice.options[index].text)
{
conPort_list.Add(item.port);
}
}
conPort.options.Clear();
conPort.AddOptions(conPort_list);
if (string.IsNullOrEmpty(mybody.conPort)) return;
//自动识别端口
for (int i = 0; i < conPort.options.Count; i++)
{
if (conPort.options[i].text == mybody.conPort)
{
conPort.value = i;
break;
}
}
}
public void OnDropdownValueChanged_conCabinet(int index)
{
List conDevice_list = new List();//对联设备
Dictionary conDevice_list_dict = new Dictionary();
var _s = GameManager.Inst.Cabinets_go[index].GetComponentsInChildren();
Array.ForEach(_s, (item) =>
{
if (!conDevice_list_dict.ContainsKey(item.deviceList.id))
{
conDevice_list_dict.Add(item.deviceList.id, "");
conDevice_list.Add(item.deviceList.id);
}
});
conDevice.options.Clear();
conDevice.AddOptions(conDevice_list);
}
private void Update()
{
}
///
/// 端口-编辑保存
///
///
public IEnumerator saveJson(Action callback)
{
//Debug.Log("@@2");
if (string.IsNullOrEmpty(mybody.id))
yield break;
//Debug.Log("@@3");
try
{
mybody.port = port.text;
mybody.portCode = portCode.text;
mybody.portName = portName.text;
if (!string.IsNullOrEmpty(conDevice.captionText.text) && !string.IsNullOrEmpty(conPort.captionText.text))
mybody.cableGroupName = cableGroupName.captionText.text;
//mybody.deviceId = deviceId.text;
//mybody.portModel = portModel.text;
//mybody.status = status.value.ToString();
mybody.conDevice = conDevice.captionText.text;
mybody.conPort = conPort.captionText.text;
mybody.cableName = cableName.text;
mybody.portType = portType.captionText.text;
}
catch (Exception e)
{
Debug.Log("修改端口错误:" + e.Message);
//gameObject.SetActive(false);
callback.Invoke(null);
yield break;
}
//Debug.Log("@@4");
string newData = JsonConvert.SerializeObject(mybody);
//Debug.Log(json);
yield return StartCoroutine(
CombineJSON.UpdateJson_POST(GameManager.Inst.Jk_URL.dk_bj, GameManager.Inst.arguments.token, newData, (jsonResult) =>
{
//Debug.Log("@@5");
try
{
URlreturn = JsonConvert.DeserializeObject(jsonResult);
callback?.Invoke(jsonResult);
//Debug.Log("@@6");
}
catch (Exception e)
{
Debug.Log("修改端口接口错误:" + e.Message);
callback.Invoke(null);
}
}
));
}
#region JSON
[System.Serializable]
public class Body
{
///
/// id
///
public string id;
///
/// 端口
///
public string port;
///
/// 编号
///
public string portCode;
///
/// 名称
///
public string portName;
///
/// 类型
///
public string portType;
///
/// 所属设备
///
public string deviceId;
///
/// 型号
///
public string portModel;
///
/// 是否启用:1-正常;0-禁用
///
public string status;
///
/// 对联设备
///
public string conDevice;
///
/// 对联端口
///
public string conPort;
///
/// 线缆名
///
[Tooltip("线缆名")] public string cableName;
///
/// 线缆组名
///
[Tooltip("线缆组名")] public string cableGroupName;
///
/// 备注
///
public string remark;
///
/// 所属设备名称
///
public string deviceName;
///
/// 对联设备名称
///
public string conDeviceName;
///
///
///
public string createTime;
///
///
///
public string createName;
}
[System.Serializable]
public class Root
{
///
///
///
public string code;
///
/// 反馈结果
///
public string message;
///
/// 返回内容
///
public string data;
///
///
///
public string serverTime;
}
#endregion
}