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.
 
 
 

256 lines
10 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Tiobon.PublishHelper
{
public partial class Form_Publish : Form
{
#region 初始化
DevServer m_DevServer = null;
Hospital m_Hospital = null;
Hospital m_SelectHospital = null;
public DialogResult m_DialogResult = DialogResult.No;
public Form_Publish(DevServer devServer, Hospital hospital)
{
InitializeComponent();
m_DevServer = devServer;
m_SelectHospital = hospital;
}
private void Form_Publish_Load(object sender, EventArgs e)
{
this.cmb_Dev.Items.AddRange(Utility.m_DevServers.Where(o => o.Ip != Utility.m_TestServerIp).Select(o => o.Ip).ToArray());
this.cmb_Publish.Items.AddRange(Utility.m_PublishServers.Select(o => o.Ip).ToArray());
if (cmb_Publish.Items.Count > 0)
{
if (!string.IsNullOrEmpty(Utility.m_OprateLog.PackPublishIp) && Utility.m_PublishServers.Any(o => o.Ip == Utility.m_OprateLog.PackPublishIp))
{
cmb_Publish.Text = Utility.m_OprateLog.PackPublishIp;
}
else
{
cmb_Publish.Text = cmb_Publish.Items[0].ToString();
}
}
if (cmb_Dev.Items.Count > 0)
{
if (!(m_DevServer is null))
{
cmb_Dev.Text = m_DevServer.Ip;
}
else
{
if (!string.IsNullOrEmpty(Utility.m_OprateLog.PackDevIp) && Utility.m_DevServers.Any(o => o.Ip == Utility.m_OprateLog.PackDevIp))
{
cmb_Dev.Text = Utility.m_OprateLog.PackDevIp;
}
else
{
cmb_Dev.Text = cmb_Dev.Items[0].ToString();
}
}
}
this.cb_Upgrade.Checked = Utility.m_OprateLog.PackUpgrade;
this.cb_TS.Checked = Utility.m_OprateLog.PackUpgradeTS;
this.cb_Git.Checked = Utility.m_OprateLog.PackGit;
this.cb_Download.Checked = Utility.m_OprateLog.PackDownload;
var tspath = AppDomain.CurrentDomain.BaseDirectory.Replace(@"assistant\JianLian.Assistant\JianLian.HDIS.PublishHelper\bin\Debug\", "") + @"adapter\JianLian.Adapter.Center";
this.cmb_TS.Items.AddRange(System.IO.Directory.GetDirectories($"{tspath}\\Custom").Select(d => d.Substring(d.LastIndexOf('.') + 1)).ToArray());
this.cmb_TS.Text = this.cmb_TS.Items[0].ToString();
if (!string.IsNullOrEmpty(Utility.m_OprateLog.PackUpgradeTSCustom))
{
this.cmb_TS.Text = Utility.m_OprateLog.PackUpgradeTSCustom;
}
this.cmb_TS.Visible = cb_TS.Checked;
}
private void cb_TS_CheckedChanged(object sender, EventArgs e)
{
this.cmb_TS.Visible = cb_TS.Checked;
}
#endregion
#region 开发服务器、医院、发布服务器变更
bool b_first = true;
private void cmb_Dev_SelectedIndexChanged(object sender, EventArgs e)
{
//医院
var hospitals = Utility.m_DevServers.Where(o => o.Ip == cmb_Dev.Text).FirstOrDefault()?.Hospitals;
cmb_Hospital.Items.Clear();
if (!(hospitals is null))
{
cmb_Hospital.Items.AddRange(hospitals.Select(o => o.FileName).ToArray());
}
if (cmb_Hospital.Items.Count > 0)
{
cmb_Hospital.Text = cmb_Hospital.Items[0].ToString();
}
if (b_first)
{
b_first = false;
if (!string.IsNullOrEmpty(Utility.m_OprateLog.PackVersion))
{
this.txt_version.Text = Utility.m_OprateLog.PackVersion;
}
if (!string.IsNullOrEmpty(Utility.m_OprateLog.PackHospital) && !(hospitals is null) && hospitals.Any(o => o.FileName == Utility.m_OprateLog.PackHospital))
{
cmb_Hospital.Text = Utility.m_OprateLog.PackHospital;
}
if (!(m_SelectHospital is null) && !(hospitals is null) && hospitals.Any(o => o.FileName == m_SelectHospital.FileName))
{
cmb_Hospital.Text = m_SelectHospital.FileName;
}
this.cb_Publish.Checked = Utility.m_OprateLog.PackPublish;
this.cb_CreateDbFile.Checked = Utility.m_OprateLog.PackDbFile;
}
var mask = this.cmb_Dev.Text.Substring(0, this.cmb_Dev.Text.LastIndexOf('.') + 1);
//发布服务器
foreach (var item in cmb_Publish.Items)
{
if (item.ToString().StartsWith(mask))
{
cmb_Publish.Text = item.ToString();
break;
}
}
}
private void cmb_Hospital_SelectedIndexChanged(object sender, EventArgs e)
{
ChangeVersionText();
}
private void cmb_Publish_SelectedIndexChanged(object sender, EventArgs e)
{
ChangeVersionText();
}
private void ChangeVersionText()
{
m_Hospital = Utility.m_DevServers.Where(o => o.Ip == cmb_Dev.Text).FirstOrDefault()?.Hospitals?.Where(o => o.FileName == cmb_Hospital.Text).FirstOrDefault();
if (m_Hospital is null)
{
return;
}
var lastVersion = Utility.m_PublishServers
.Where(o => o.Ip == this.cmb_Publish.Text)
.FirstOrDefault()
?.Folders
?.Where(o => o.FolderName == m_Hospital?.FileName)
.FirstOrDefault()
?.Files
.OrderByDescending(o => o.CreateTime)
.FirstOrDefault()
?.FileName
.Replace(".zip", "");
if (!string.IsNullOrEmpty(lastVersion))
{
string[] empites = lastVersion.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
if (empites.Length >= 4)
{
var ver = "1";
if (empites[3].Contains("_"))
{
try
{
ver = empites[3].Substring(0, empites[3].IndexOf("_"));
if (DateTime.Now.AddDays(-1).ToString("yyMMdd") == empites[2])
{
ver = (Convert.ToInt32(empites[3].Substring(0, empites[3].IndexOf("_"))) + 1).ToString();
}
}
catch
{
}
}
this.txt_version.Text = $"{empites[0]}.{empites[1]}.{DateTime.Now:yyMMdd}.{ver}_R";
}
}
else
{
this.txt_version.Text = $"3.0.{DateTime.Now:yyMMdd}.1_R";
}
}
#endregion
#region 确定/取消
private void btnOK_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.cmb_Dev.Text)
|| string.IsNullOrEmpty(this.cmb_Hospital.Text)
|| string.IsNullOrEmpty(this.cmb_Publish.Text)
|| string.IsNullOrEmpty(this.txt_version.Text))
{
return;
}
if (this.cmb_Dev.Text.Substring(0, this.cmb_Dev.Text.LastIndexOf('.') + 1) != this.cmb_Publish.Text.Substring(0, this.cmb_Publish.Text.LastIndexOf('.') + 1))
{
if (MessageBox.Show("开发服务器与发布服务器不是一个网段,是否确定?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
}
if (!Utility.m_DevServers.Any(o => o.Ip == cmb_Dev.Text))
{
MessageBox.Show("开发服务器不存在,请先配置", "提示");
return;
}
if (!Utility.m_PublishServers.Any(o => o.Ip == cmb_Publish.Text))
{
MessageBox.Show("发布服务器不存在,请先配置", "提示");
return;
}
if (Utility.m_OprateLog.PackUpgrade && Utility.m_OprateLog.PackUpgradeTS && string.IsNullOrEmpty(Utility.m_OprateLog.PackUpgradeTSCustom))
{
MessageBox.Show("TS升级包,必须包含指定组件", "提示");
return;
}
Utility.m_OprateLog.PackDevIp = this.cmb_Dev.Text;
Utility.m_OprateLog.PackHospital = this.cmb_Hospital.Text;
Utility.m_OprateLog.PackPublishIp = this.cmb_Publish.Text;
Utility.m_OprateLog.PackVersion = this.txt_version.Text;
Utility.m_OprateLog.PackDbFile = this.cb_CreateDbFile.Checked;
Utility.m_OprateLog.PackPublish = this.cb_Publish.Checked;
Utility.m_OprateLog.PackUpgrade = this.cb_Upgrade.Checked;
Utility.m_OprateLog.PackUpgradeTS = this.cb_TS.Checked;
Utility.m_OprateLog.PackUpgradeTSCustom = this.cmb_TS.Text;
Utility.m_OprateLog.PackGit = this.cb_Git.Checked;
Utility.m_OprateLog.PackDownload = this.cb_Download.Checked;
Utility.SaveOprateLog();
m_DialogResult = DialogResult.Yes;
this.Close();
}
private void btn_cancel_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#region 升级包
private void cb_Upgrade_CheckedChanged(object sender, EventArgs e)
{
this.cb_TS.Visible = this.cb_Upgrade.Checked;
this.cmb_TS.Visible = this.cb_Upgrade.Checked;
}
#endregion
}
}