You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
7.5 KiB
188 lines
7.5 KiB
using System.Data;
|
|
|
|
namespace Tiobon.PublishHelper
|
|
{
|
|
public partial class Form_Hospital : Form
|
|
{
|
|
string devName = string.Empty;
|
|
public Form_Hospital(string name)
|
|
{
|
|
InitializeComponent();
|
|
devName = name;
|
|
}
|
|
|
|
private void Form_Hospital_Load(object sender, EventArgs e)
|
|
{
|
|
this.Text = $"医院管理 - {devName}";
|
|
RefreshView();
|
|
}
|
|
|
|
private void RefreshView()
|
|
{
|
|
listView_Hospital.Items.Clear();
|
|
Utility.m_DevServers.Where(o => o.Name == devName).FirstOrDefault()
|
|
?.Hospitals
|
|
?.ForEach(o =>
|
|
{
|
|
ListViewItem item = new ListViewItem();
|
|
item.SubItems[0].Text = o.Name;
|
|
item.SubItems.Add(o.FileName);
|
|
item.SubItems.Add(o.DefaultFort);
|
|
item.SubItems.Add(o.SCPath);
|
|
item.SubItems.Add(o.WWWPath);
|
|
listView_Hospital.Items.Add(item);
|
|
});
|
|
}
|
|
|
|
|
|
private void tsmi_Insert_Click(object sender, EventArgs e)
|
|
{
|
|
using (Form_Hospital_Item f = new Form_Hospital_Item(devName, "新增"))
|
|
{
|
|
f.ShowDialog();
|
|
}
|
|
Utility.SaveDevServer();
|
|
RefreshView();
|
|
}
|
|
|
|
private void tsmi_Edit_Click(object sender, EventArgs e)
|
|
{
|
|
if (this.listView_Hospital.SelectedItems.Count <= 0)
|
|
return;
|
|
using (Form_Hospital_Item f = new Form_Hospital_Item(devName, $"编辑 - {this.listView_Hospital.SelectedItems[0].Text}"))
|
|
{
|
|
f.ShowDialog();
|
|
}
|
|
Utility.SaveDevServer();
|
|
RefreshView();
|
|
}
|
|
|
|
private void tsmi_Delete_Click(object sender, EventArgs e)
|
|
{
|
|
if (this.listView_Hospital.SelectedItems.Count <= 0)
|
|
{
|
|
return;
|
|
}
|
|
if (MessageBox.Show("是否确认删除?", "提示", MessageBoxButtons.YesNo) != DialogResult.Yes)
|
|
{
|
|
return;
|
|
}
|
|
var server = Utility.m_DevServers.Where(o => o.Name == devName).FirstOrDefault();
|
|
if (!(server is null))
|
|
{
|
|
var item = server.Hospitals.Where(o => o.Name == this.listView_Hospital.SelectedItems[0].Text).FirstOrDefault();
|
|
if (!(item is null))
|
|
{
|
|
server.Hospitals.Remove(item);
|
|
Utility.SaveDevServer();
|
|
RefreshView();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ll_Sync_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
var server = Utility.m_DevServers.Where(o => o.Name == devName).FirstOrDefault();
|
|
if (server is null)
|
|
return;
|
|
if (!Utility.Ping(server.Ip))
|
|
{
|
|
MessageBox.Show("网络连接失败!", "提示");
|
|
return;
|
|
}
|
|
this.Cursor = Cursors.WaitCursor;
|
|
bool b_add = false;
|
|
try
|
|
{
|
|
bool b_dev = SftpHelper.Exists(server, $"/home/{server.UserName}/compose");
|
|
var hospitals = SftpHelper.ListDirectory(server, b_dev ? $"/home/{server.UserName}/compose" : $"/home/{server.UserName}").Select(o => o.Name).ToList();
|
|
hospitals.ForEach(hospitalName =>
|
|
{
|
|
if (hospitalName == (b_dev ? "sample" : "tools"))
|
|
return;
|
|
if (!b_dev)
|
|
{
|
|
if (!SftpHelper.Exists(server, $"/home/{server.UserName}/{hospitalName}/.env"))
|
|
{
|
|
Utility.SendLog("同步", $"发现 文件夹 {hospitalName} 不存在 .env 文件,跳过同步");
|
|
return;
|
|
}
|
|
}
|
|
var item = server.Hospitals.Where(o => o.FileName == hospitalName).FirstOrDefault();
|
|
var path = System.Environment.CurrentDirectory.Replace(@"\backend\src\Assistant\JianLian.HDIS.PublishHelper\bin\Debug", "");
|
|
//获取医院信息
|
|
var fname = Utility.GetTempFileName(".env");
|
|
bool b_suc = SftpHelper.DownloadFile(server, b_dev ? $"/home/{server.UserName}/compose/{hospitalName}/.env" : $"/home/{server.UserName}/{hospitalName}/.env", fname);
|
|
var content = File.ReadAllText(fname);
|
|
var datas = content.Split(new string[] { "\r", "\n", "=" }, StringSplitOptions.RemoveEmptyEntries);
|
|
var hospital = new Hospital
|
|
{
|
|
Name = b_dev ? datas[3] : hospitalName,
|
|
FileName = b_dev ? datas[3] : hospitalName,
|
|
DefaultFort = datas[1],
|
|
SCPath = $"{path}\\backend",
|
|
WWWPath = $""
|
|
};
|
|
|
|
if (item is null)
|
|
{
|
|
if (b_suc)
|
|
{
|
|
server.Hospitals.Add(hospital);
|
|
//新医院
|
|
Utility.SendLog("同步", $"发现新医院 {hospitalName} 端口 {hospital.DefaultFort}");
|
|
b_add = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//已有医院查看端口是否一致
|
|
if (item.DefaultFort != hospital.DefaultFort)
|
|
{
|
|
Utility.SendLog("同步", $"医院 {hospitalName} 端口号不一致 {item.DefaultFort},更新为实际端口号 {hospital.DefaultFort}");
|
|
item.DefaultFort = hospital.DefaultFort;
|
|
}
|
|
else
|
|
{
|
|
Utility.SendLog("同步", $"医院 {hospitalName} 端口号一致 {hospital.DefaultFort}");
|
|
}
|
|
}
|
|
});
|
|
|
|
var notExsit = new List<Hospital>();
|
|
server.Hospitals.ForEach(hospital =>
|
|
{
|
|
if (!hospitals.Contains(hospital.FileName))
|
|
{
|
|
notExsit.Add(hospital);
|
|
}
|
|
});
|
|
notExsit.ForEach(hospital =>
|
|
{
|
|
server.Hospitals.Remove(hospital);
|
|
//医院不存在
|
|
Utility.SendLog("同步", $"医院已经不存在 {hospital.FileName} 端口 {hospital.DefaultFort}");
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Utility.SendLog("同步", $"同步失败:{ex}");
|
|
}
|
|
RefreshView();
|
|
Utility.SendLog("同步", $"同步完毕" + (b_add ? "请完善医院信息" : ""));
|
|
this.Cursor = Cursors.Default;
|
|
}
|
|
|
|
private void listView_Hospital_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (this.listView_Hospital.SelectedItems.Count <= 0)
|
|
return;
|
|
using (Form_Hospital_Item f = new Form_Hospital_Item(devName, $"编辑 - {this.listView_Hospital.SelectedItems[0].Text}"))
|
|
{
|
|
f.ShowDialog();
|
|
}
|
|
Utility.SaveDevServer();
|
|
RefreshView();
|
|
}
|
|
}
|
|
}
|
|
|