using AutoMapper;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
using static GameManager;
///
/// 端口-新增
///
public class AddPort : MonoBehaviour
{
public Root URlreturn;
public Body mybody = new Body();
public Button save_bt;
public InputField port;
public InputField portCode;
public InputField portName;
public InputField portType;
//public Dropdown deviceId;
//public InputField portModel;
public Dropdown status;
public Dropdown conDevice;
public Dropdown conPort;
public InputField remark;
MapperConfiguration config;
IMapper mapper;
PortQuery.PortList portlist;
private void OnEnable()
{
init();
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;
}
}
if (portlist != null)
mybody = mapper.Map(portlist);
else
{
mybody = mapper.Map(GameManager.Inst.nowDevice.GetComponent().portList);
}
}
}
catch (Exception e)
{
Debug.Log(e.StackTrace + "**********" + e.Message);
}
}
private void init()
{
//deviceId.options.Clear();
List deviceId_ops = new List();
deviceId_ops.Add("");
//for (int i = 0; i < GameManager.Inst.Racks_go.Count; i++)
//{
// var n = GameManager.Inst.Racks_go[i].GetComponent().deviceList.id;
// deviceId_ops.Add(n);
//}
//for (int i = 0; i < GameManager.Inst.MachineSlots_go.Count; i++)
//{
// var n = GameManager.Inst.MachineSlots_go[i].GetComponent().deviceList.id;
// deviceId_ops.Add(n);
//}
//for (int i = 0; i < GameManager.Inst.TmsCards_go.Count; i++)
//{
// var n = GameManager.Inst.TmsCards_go[i].GetComponent().deviceList.id;
// deviceId_ops.Add(n);
//}
var list = Array.FindAll(GameObject.FindObjectsOfType(), itme =>
{
var n = itme.transform.parent.GetComponent().deviceList;
if (!string.IsNullOrEmpty(itme.portList.id) && n != null)
return true;
return false;
}).ToList();
for (int i = 0; i < list.Count; i++)
{
deviceId_ops.Add(list[i].transform.parent.GetComponent().deviceList.id);
}
//deviceId.AddOptions(deviceId_ops);
conDevice.options.Clear();
conDevice.AddOptions(deviceId_ops);
}
private void Start()
{
//deviceId.onValueChanged.AddListener(deviceId_fuc);//所属设备
conDevice.onValueChanged.AddListener(conDevice_fuc);//对联设备
save_bt.onClick.AddListener(() =>
{
StartCoroutine(SaveJsonCoroutine());
});
}
private IEnumerator SaveJsonCoroutine()
{
yield return StartCoroutine(saveJson());
if (URlreturn.message == "操作成功")
{
yield return StartCoroutine(GameManager.Inst.LoadAddress((ct) =>
{
if (ct != null)
{
GameManager.Inst.Jk_URL = new webURL(ct);
StartCoroutine(GameManager.Inst.Initialize());
}
else
{
Debug.Log("获取穿透错误!");
}
}));
Array.ForEach(GameManager.Inst.pop_ups.ToArray(), (itme) =>
{
itme.gameObject.SetActive(false);
});
}
else
{
}
}
private void conDevice_fuc(int arg0)
{
List conPort_ops = new List();
//对联设备下所有端口
//conDevice.options[arg0].text//对联设备id
//Array.FindAll(FindObjectsOfType(), itme =>
//{
// if (itme.portList.deviceId== conDevice.options[arg0].text)
// return true;
// return false;
//}).ToList();
for (int i = 0; i < GameManager.Inst.TmsPorts_go.Count; i++)
{
var n = GameManager.Inst.TmsPorts_go[i].GetComponent().portList;
if (n.deviceId == conDevice.options[arg0].text)
conPort_ops.Add(n.port);
}
}
private void deviceId_fuc(int arg0)
{
//deviceId.options[arg0].text//所属设备ID
}
private void Update()
{
}
public IEnumerator saveJson()
{
try
{
mybody.port = port.text;
mybody.portCode = portCode.text;
mybody.portName = portName.text;
mybody.portType = portType.text;
//mybody.deviceId = deviceId.options[deviceId.value].text;
//mybody.portModel = portModel;
mybody.status = status.value;
mybody.conDevice = conDevice.options[conDevice.value].text;
mybody.conPort = conPort.options.Count != 0 ? conPort.options[conPort.value].text : null;
mybody.remark = remark.text;
}
catch (Exception e)
{
Debug.Log("新增端口错误:" + e.Message);
gameObject.SetActive(false);
yield break;
}
var newData = JsonConvert.SerializeObject(mybody);
//var jsonResult = await CombineJSON.UpdateJson_POST(GameManager.Inst.Jk_URL.dk_xz, GameManager.Inst.token, newData);
//URlreturn = JsonConvert.DeserializeObject(jsonResult);
yield return StartCoroutine(
CombineJSON.UpdateJson_POST(GameManager.Inst.Jk_URL.dk_xz, GameManager.Inst.arguments.token, newData, (jsonResult) =>
{
try
{
URlreturn = JsonConvert.DeserializeObject(jsonResult);
}
catch (Exception e)
{
Debug.Log("新增端口接口错误:" + e.Message);
}
})
);
}
#region JSON
[System.Serializable]
public class Body
{
///
/// 端口
///
public string port;
///
/// 编号
///
public string portCode;
///
/// 名称
///
public string portName;
///
/// 类型
///
public string portType;
///
/// 端口位置
///
public string portPosition;
///
/// 所属设备
///
public string deviceId;
///
/// 型号
///
public string portModel;
///
/// 状态:1-正常;0-禁用
///
public int status;
///
/// 对联设备
///
public string conDevice;
///
/// 对联端口
///
public string conPort;
///
/// 备注
///
public string remark;
}
[System.Serializable]
public class Root
{
///
///
///
public string code;
///
/// 反馈结果
///
public string message;
///
/// 返回内容(ID)
///
public string data;
///
///
///
public string serverTime;
}
#endregion
}