using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using KPlan.Util;
using Teamcenter.Soa.Client.Model;
using KPlan.Forms.Bean;
using System.Collections.ObjectModel;
using System.Windows.Forms;
using System.ComponentModel;
using Eplan.EplApi.DataModel;
using Eplan.EplApi.MasterData;
using Eplan.EplApi.Base;
namespace KPlan.Forms {
///
/// Interaction logic for CreateProject.xaml
///
public partial class CreateProject : Window {
public const double W_NO_TEMPLATE = 400;
public const double W_TEMPLATE = 640;
private ModelObject[] templates;
private ObservableCollection templatesListData = new ObservableCollection();
private ModelObjectBean selectedTemplateBean;
string projCode = "";
string projName = "";
string savePosition = "";
string templateName = "";
DateTime? creation_date = null;
string creator = "";
public bool create = false;
public CreateProject() {
InitializeComponent();
KUtil.SetOwnerWindow(this);
list_TCTemplate.ItemsSource = templatesListData;
try {
loadTCTemplate();
}
catch (System.Exception ex) {
KUtil.LogErr(ex);
}
}
private void CreateProj_Button_Click(object sender, RoutedEventArgs e) {
create = true;
projCode = tb_ProjCode.Text;
projName = tb_ProjName.Text;
savePosition = tb_SavePosition.Text;
templateName = tb_Template.Text;
if (cb_CreationDate.IsChecked.Value) {
creation_date = dp_CreationDate.Value;
}
if (cb_Creator.IsChecked.Value) {
creator = tb_Creator.Text;
}
if (KUtil.IsEmpty(projCode) || KUtil.IsEmpty(projName) || KUtil.IsEmpty(savePosition) || KUtil.IsEmpty(templateName)) {
KUtil.DispatcherShow(this, "请填写项目信息");
return;
}
Close();
}
public void DoCreateProject() {
System.IO.FileInfo fileInfo;
if (selectedTemplateBean != null && templateName.Equals(selectedTemplateBean.objectString)) {
List imanFiles = TCUtil.GetDatasetFile(selectedTemplateBean.mo, null);
if (imanFiles == null || imanFiles.Count == 0) {
throw new Exception("数据集<" + templateName + ">不存在文件引用");
}
if (imanFiles.Count > 1) {
throw new Exception("数据集<" + templateName + ">存在多个文件引用");
}
fileInfo = TCUtil.GetFileInfo(imanFiles[0]);
if (fileInfo == null) {
throw new Exception("从数据集<" + templateName + ">下载文件引用失败");
}
}
else {
fileInfo = new System.IO.FileInfo(templateName);
}
if (fileInfo == null || !fileInfo.Exists) {
throw new Exception("获取模板异常,文件不存在:" + templateName);
}
KUtil.Log("项目模板:" + fileInfo.FullName);
if (!System.IO.Directory.Exists(savePosition)) {
System.IO.Directory.CreateDirectory(savePosition);
}
KUtil.Log(savePosition + "\\" + projName + ".elk|" + fileInfo.FullName);
Progress progress = new Progress("SimpleProgress");
progress.BeginPart(100.0, "");
progress.ShowImmediately();
progress.SetAllowCancel(true);
try {
string projPath = savePosition + "\\" + projName + ".elk";
string tempPath = fileInfo.FullName;
KUtil.Log("创建项目:" + projPath);
KUtil.Log("使用模板:" + tempPath);
Project proj = EplanUtil.Create(projPath, tempPath, true);
proj.Properties.PROJ_DRAWINGNUMBER = projCode;
proj.Properties.PROJ_CUSTOM_SUPPLEMENTARYFIELD100 = projCode;//item_id
if (!KUtil.IsEmpty(creator)) {
KUtil.Log("设置创建者:" + creator);
proj.Properties.PROJ_CREATOR = creator;
}
if (creation_date != null) {
KUtil.Log("设置创建时间:" + creation_date.Value);
proj.Properties.PROJ_CREATIONDATE = creation_date.Value;
}
//去掉感叹号
proj.Close();
proj = EplanUtil.OpenProject(projPath);
KUtil.Log("创建完成");
}
finally {
progress.EndPart(true);
}
}
private void loadTCTemplate() {
string itemId = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION, KConfigure.EPLAN_TEMPLATE_ITEM_ID);
string dsType = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION, KConfigure.EPLAN_TEMPLATE_DATASET_TYPE);
if (TCUtil.user == null || KUtil.IsEmpty(itemId) || KUtil.IsEmpty(dsType)) {
colDef_TCTemplate.Width = new GridLength(0);
this.Width = W_NO_TEMPLATE;
this.MinWidth = W_NO_TEMPLATE;
return;
}
this.Width = W_TEMPLATE;
this.MinWidth = W_TEMPLATE;
KUtil.Log("加载TC中项目模板:" + itemId);
Teamcenter.Soa.Client.Model.Strong.ItemRevision rev = TCUtil.Query_LatestRev(itemId);
if (rev == null) {
KUtil.Log("配置对象不存在:" + itemId);
return;
}
templates = TCUtil.GetChild(rev, TCUtil.REL_REV_EPLAN, dsType);
int len = templates == null ? 0 : templates.Length;
if (len > 0) {
TCUtil.dmService.RefreshObjects(templates);
TCUtil.GetProperties(false, templates, "object_string");
for (int i = 0; i < len; i++) {
Teamcenter.Soa.Client.Model.Strong.Dataset ds = (Teamcenter.Soa.Client.Model.Strong.Dataset)templates[i];
templatesListData.Add(new ModelObjectBean(ds, ds.Object_string));
}
}
KUtil.Log("加载完成");
}
private void CreationDate_CheckBox_SelectionChanged(object sender, RoutedEventArgs e) {
dp_CreationDate.IsEnabled = cb_CreationDate.IsChecked.Value;
if (cb_CreationDate.IsChecked.Value) {
dp_CreationDate.Text = DateTime.Now.ToString(dp_CreationDate.FormatString);
}
}
private void Cb_Creator_SelectionChanged(object sender, RoutedEventArgs e) {
tb_Creator.IsEnabled = cb_Creator.IsChecked.Value;
}
private void Close_Button_Click(object sender, RoutedEventArgs e) {
Close();
}
private void SavePosition_Button_Click(object sender, RoutedEventArgs e) {
FolderBrowserDialog fb = new FolderBrowserDialog();
fb.RootFolder = Environment.SpecialFolder.Desktop;
fb.Description = "选择项目保存位置";
if (fb.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
tb_SavePosition.Text = fb.SelectedPath;
}
}
private void Template_Button_Click(object sender, RoutedEventArgs e) {
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "选择项目模板";
fd.Filter = "模板文件|*.ept";
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
tb_Template.Text = fd.FileName;
}
}
private void List_TCTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e) {
selectedTemplateBean = list_TCTemplate.SelectedItem as ModelObjectBean;
if (selectedTemplateBean == null) {
return;
}
tb_Template.Text = selectedTemplateBean.objectString;
}
}
}