using System;
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.Forms.Bean;
using KPlan.Util;
using System.Collections.ObjectModel;
using ModelObject = Teamcenter.Soa.Client.Model.ModelObject;
using Eplan.EplApi.MasterData;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using MessageBox = System.Windows.MessageBox;
using Eplan.EplApi.DataModel.EObjects;
namespace KPlan.Forms {
///
/// Interaction logic for KPartSync.xaml
///
public partial class KPartSync : Window {
public KPartSync(MDPartsDatabase mdPartsDatabase)
{
InitializeComponent();
KUtil.SetOwnerWindow(this);
this.mdPartsDatabase = mdPartsDatabase;
bgWorker_Parts = new KBackgroundWorker(this);
bgWorker_Parts.backgroundWorker.DoWork += Async_LoadParts;
bgWorker_AddAll = new KBackgroundWorker(this);
bgWorker_AddAll.backgroundWorker.DoWork += Async_AddAllUnsyncedParts;
bgWorker_Apply = new KBackgroundWorker(this);
bgWorker_Apply.backgroundWorker.DoWork += Async_Apply;
bgWorker_Query = new KBackgroundWorker(this);
bgWorker_Query.backgroundWorker.DoWork += Async_QueryParts;
bgWorker_EPlan_to_TC = new KBackgroundWorker(this);
bgWorker_EPlan_to_TC.backgroundWorker.DoWork += Async_EPlan_to_TC;
bgWorker_EPlan_to_TC.backgroundWorker.RunWorkerCompleted += bgWorker_EPlan_to_TC_RunWorkerCompleted;
bgWorker_TC_to_EPlan = new KBackgroundWorker(this);
bgWorker_TC_to_EPlan.backgroundWorker.DoWork += Async_TC_to_EPlan;
bgWorker_TC_to_EPlan.backgroundWorker.RunWorkerCompleted += bgWorker_EPlan_to_TC_RunWorkerCompleted;
bgWorker_Revise = new KBackgroundWorker(this);
bgWorker_Revise.backgroundWorker.DoWork += Async_Revise;
bgWorker_Query_TC = new KBackgroundWorker(this);
bgWorker_Query_TC.backgroundWorker.DoWork += Async_QueryTCParts;
bgWorker_UploadPartsDB = new KBackgroundWorker(this);
bgWorker_UploadPartsDB.backgroundWorker.DoWork += Async_UploadPartsDB;
bgWorker_SyncErpCode = new KBackgroundWorker(this);
bgWorker_SyncErpCode.backgroundWorker.DoWork += Async_SyncErpCode;
bgWorker_AddGroup = new KBackgroundWorker(this);
bgWorker_AddGroup.backgroundWorker.DoWork += Async_AddGroup;
table_Sync_To_TC.ItemsSource = ePlanToTCData;
TCUtil.DO_NOTHING();
}
public const string NOT_RELEASEED = "未发布";
public const string NOT_SYNCED = "未同步";
public const string PART_NOT_EXIST = "部件不存在";
public const string APPLYING = "申请中";
public const string SAP_NEED_ID = "SAP未分配ID";
private List duplicateOrderNrBeans = new List();
private MDPartsDatabase mdPartsDatabase;
private KBackgroundWorker bgWorker_Parts;
private KBackgroundWorker bgWorker_AddAll;
private KBackgroundWorker bgWorker_Apply;
private KBackgroundWorker bgWorker_Query;
private KBackgroundWorker bgWorker_Query_TC;
private KBackgroundWorker bgWorker_EPlan_to_TC;
private KBackgroundWorker bgWorker_TC_to_EPlan;
private KBackgroundWorker bgWorker_Revise;
private KBackgroundWorker bgWorker_UploadPartsDB;
private KBackgroundWorker bgWorker_SyncErpCode;
private KBackgroundWorker bgWorker_AddGroup;
private int sync_Success = 0;
//private MDPart[] allParts;
private Dictionary topGroupMap = new Dictionary();
private ObservableCollection ePlanToTCData = new ObservableCollection();
private ObservableCollection errData = new ObservableCollection();
private class EPlanGroup {
public EPlanTreeItem topGroup { get; set; }
public EPlanGroup(EPlanTreeItem topGroup) {
this.topGroup = topGroup;
}
public Dictionary productGroupMap = new Dictionary();
}
private void Async_SyncErpCode(object sender, DoWorkEventArgs e) {
KUtil.Log("开始执行:同步ERP编码");
duplicateOrderNrBeans.Clear();
bgWorker_SyncErpCode.Progress("查询EPLAN数据...", 0);
MDPart[] parts = EplanUtil.QueryParts(mdPartsDatabase, "");
int len = parts == null ? 0 : parts.Length;
// MessageBox.Show(len + "");
KUtil.Log("查询结果数量:" + len);
if (len == 0) {
return;
}
Dictionary orderNr_itemId = new Dictionary();
for (int i = 0; i < len; i++) {
if (bgWorker_SyncErpCode.IsCancel()) {
e.Cancel = true;
break;
}
MDPart part = parts[i];
//string orderNr = KUtil.RemoveSpace(EplanUtil.GetMDPropValue(part.Properties.ARTICLE_PARTNR));
//20241120 以EPLAN的ERP编码作为与TC的唯一识别;
string orderNr = KUtil.RemoveSpace(EplanUtil.GetMDPropValue(part.Properties.ARTICLE_ERPNR));
//MessageBox.Show(orderNr);
KUtil.Log((i + 1) + ". 检查部件:" + part.PartNr + "|" + orderNr);
bgWorker_SyncErpCode.Progress("同步数据...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
if (!KUtil.IsEmpty(orderNr)) {
string itemId = "";
if (orderNr_itemId.ContainsKey(orderNr)) {
itemId = orderNr_itemId[orderNr];
}
else {
ModelObject[] revs= TCUtil.Query_LatestRevByOrderNr(orderNr);
int revCnt = revs == null ? 0 : revs.Length;
// MessageBox.Show(revCnt+"");
if (revCnt==1) {
Teamcenter.Soa.Client.Model.Strong.ItemRevision rev = revs[0] as Teamcenter.Soa.Client.Model.Strong.ItemRevision;
if (rev != null) {
ModelObject[] mos = TCUtil.Refresh(rev);
TCUtil.GetProperties(false, mos, "item_id");
itemId = rev.Item_id;
}
}
else {
string manufacturer = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_MANUFACTURER).Trim();
DuplicateOrderNrBean duplicate = new DuplicateOrderNrBean() { orderNr=orderNr,partNr= part.PartNr,manufacturer=manufacturer};
if (revCnt == 0) {
duplicate.reason = "TC中不存在物料";
}
duplicateOrderNrBeans.Add(duplicate);
}
orderNr_itemId.Add(orderNr, itemId);
}
KUtil.Log(">> 设置ERPNumber = " + itemId);
//写入ERPNumber
MDPartsDatabaseTransaction trans = mdPartsDatabase.CreateTransaction();
part.Properties.ARTICLE_ORDERNR = itemId;
if (!KUtil.IsEmpty(itemId)) {
KUtil.Log(">> 设置为已同步");
part.Properties.ARTICLE_CERTIFICATE_ATEX = "已同步";
}
trans.Commit();
trans.Dispose();
}
}
KUtil.Log("执行结束");
if (duplicateOrderNrBeans.Count > 0) {
ExportDuplicate(duplicateOrderNrBeans);
}
else {
KUtil.DispatcherShow(this, "同步完成");
}
}
public const string EXPORT_FILE_NAME = "TC存在重复的订单号";
public const string EXPORT_FILE_EXT = "xlsx";
private void ExportDuplicate(List duplicateOrderNrBeans) {
int rowCnt = duplicateOrderNrBeans.Count;
if (rowCnt == 0) {
return;
}
string targetPath = null;
this.Dispatcher.Invoke(new Action(delegate {
using (var fbd = new FolderBrowserDialog()) {
fbd.Description = "导出完成,TC中存在重复订单号,选择文件导出位置";
DialogResult result = fbd.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK) {
targetPath = fbd.SelectedPath;
}
}
}));
if (string.IsNullOrWhiteSpace(targetPath)) {
return;
}
KUtil.Log("导出重复订单号...");
KUtil.Log("导出路径:" + targetPath);
string filePath = KUtil.GetFilePath(targetPath, EXPORT_FILE_NAME, EXPORT_FILE_EXT);
KUtil.Log("导出文件:" + filePath);
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null) {
KUtil.DispatcherShow(this, "Excel 未正确安装");
return;
}
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "订货号";
xlWorkSheet.Cells[1, 2] = "部件号";
xlWorkSheet.Cells[1, 3] = "制造商";
xlWorkSheet.Cells[1, 4] = "问题原因";
for (int i = 0; i < rowCnt; i++) {
int r = i + 2;
DuplicateOrderNrBean bean = duplicateOrderNrBeans[i];
xlWorkSheet.Cells[r, 1] = bean.orderNr;
xlWorkSheet.Cells[r, 2] = bean.partNr;
xlWorkSheet.Cells[r, 3] = bean.manufacturer;
xlWorkSheet.Cells[r, 4] = bean.reason;
}
//Here saving the file in xlsx
xlWorkBook.SaveAs(filePath, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, misValue,
misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(xlApp);
KUtil.DispatcherShow(this,"导出完成");
}
private void Async_UploadPartsDB(object sender, DoWorkEventArgs e) {
bgWorker_UploadPartsDB.Progress("准备上传EPLAN数据...", 0);
string fmsHome = Environment.GetEnvironmentVariable("FMS_HOME");
string zipFile = fmsHome + "\\EPlan\\" + "EPLAN_PARTS.zip";
string eplanDataFolderPath = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION, KConfigure.EPLAN_DATA_FOLDER);
string skipFolders = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION, KConfigure.EPLAN_DATA_SKIP_FOLDER);
string dsUid = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION, KConfigure.EPLAN_DATASET_UID);
if (KUtil.IsEmpty(eplanDataFolderPath)) {
throw new Exception("未配置EPLAN数据文件夹");
}
if (KUtil.IsEmpty(dsUid)) {
throw new Exception("未配置TC数据集UID");
}
if (!System.IO.Directory.Exists(eplanDataFolderPath)) {
throw new Exception("EPLAN数据文件夹不存在,请检查配置:" + eplanDataFolderPath);
}
KUtil.Log("准备上传EPLAN数据文件夹:" + eplanDataFolderPath);
ModelObject mo = TCUtil.StringToComponent(dsUid);
if (mo == null) {
throw new Exception("未查询到数据集 uid = " + dsUid + ",请检查配置");
}
ModelObject[] mos = TCUtil.Refresh(mo);
TCUtil.GetProperties(false, mos, "object_string");
string dsName = mo.GetPropertyDisplayableValue("object_string");
KUtil.Log("找到数据集:" + dsName);
if (!TCUtil.IsType(mo.SoaType, "Zip")) {
throw new Exception("配置的数据集<" + dsName + ">不是Zip数据集,uid = " + dsUid);
}
this.bgWorker_UploadPartsDB.Progress("压缩目录...", 30);
if (!KUtil.ZipDirectory(eplanDataFolderPath, zipFile, null, skipFolders)) {
throw new Exception("压缩EPLAN部件库失败");
}
KUtil.Log("压缩完成");
this.bgWorker_UploadPartsDB.Progress("上传文件...", 70);
TCUtil.UploadFile((Teamcenter.Soa.Client.Model.Strong.Dataset)mo, zipFile, "ZIPFILE");
KUtil.Log("上传成功");
this.Dispatcher.Invoke(new Action(delegate {
MessageBox.Show(this, "上传成功");
}));
}
private void Async_Revise(object sender, DoWorkEventArgs e) {
List reviseList = e.Argument as List;
if (reviseList.Count == 0) {
return;
}
bgWorker_Revise.Progress("正在升版...", 0);
int len = reviseList.Count;
for (int i = 0; i < len; i++) {
if (bgWorker_Revise.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_Revise.Progress("正在升版...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
KPartSyncDataRow bean = reviseList[i];
Teamcenter.Soa.Client.Model.Strong.ItemRevision newRev = TCUtil.Revise(bean.rev);
if (newRev == null) {
throw new Exception("对象升版失败:" + bean.tc_itemid);
}
Teamcenter.Soa.Client.Model.ModelObject[] mo = TCUtil.Refresh(newRev);
TCUtil.GetProperties(false, mo, "item_revision_id");
MDPartsDatabaseTransaction trans = mdPartsDatabase.CreateTransaction();
bean.part.Properties.ARTICLE_CERTIFICATE_ATEX = "";
trans.Commit();
trans.Dispose();
this.Dispatcher.Invoke(new Action(delegate {
bean.tc_revid = newRev.Item_revision_id;
bean.tc_releasestatus = NOT_RELEASEED;
bean.sync_status = NOT_SYNCED;
bean.rev = newRev;
bean.tc_desc = TCUtil.GetRevConfigProp(newRev, KUtil.GetConfigValue(KConfigure.UI_SOME_SECTION, KConfigure.UI_PROP_DESC));
bean.tc_manufacturer = TCUtil.GetRevConfigProp(newRev, KUtil.GetConfigValue(KConfigure.UI_SOME_SECTION, KConfigure.UI_PROP_MANUFACTURER));
table_Sync_To_TC.Items.Refresh();
}));
}
}
private void Async_TC_to_EPlan(object sender, DoWorkEventArgs e) {
sync_Success = 0;
this.Dispatcher.Invoke(new Action(delegate {
errData.Clear();
}));
bgWorker_TC_to_EPlan.Progress("执行中...", 0);
int len = 0;
this.Dispatcher.Invoke(new Action(delegate {
len = ePlanToTCData.Count;
}));
for (int i = 0; i < len; i++) {
if (bgWorker_TC_to_EPlan.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_TC_to_EPlan.Progress("执行中...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
KPartSyncDataRow bean = ePlanToTCData[i];
if (bean.rev == null) {
continue;
}
string errMsg = null;
try {
errMsg = Item_to_EPlan(bean);
}
catch (System.Exception ex) {
KUtil.LogErr(ex);
errMsg = ex.Message;
}
if (KUtil.IsEmpty(errMsg)) {
sync_Success++;
}
else {
if (!"已同步".Equals(errMsg)) {
this.Dispatcher.Invoke(new Action(delegate {
errData.Add(GetSyncResultBean(bean,errMsg));
}));
}
}
}
}
private void Async_EPlan_to_TC(object sender, DoWorkEventArgs e) {
sync_Success = 0;
this.Dispatcher.Invoke(new Action(delegate {
errData.Clear();
}));
bgWorker_EPlan_to_TC.Progress("执行中...", 0);
int len = 0;
this.Dispatcher.Invoke(new Action(delegate {
len = ePlanToTCData.Count;
}));
for (int i = 0; i < len; i++) {
if (bgWorker_EPlan_to_TC.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_EPlan_to_TC.Progress("执行中...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
KPartSyncDataRow bean = ePlanToTCData[i];
if (bean.part == null) {
continue;
}
string errMsg = null;
try {
errMsg = Part_to_TC(bean);
}
catch (System.Exception ex) {
KUtil.LogErr(ex);
errMsg = ex.Message;
}
if (KUtil.IsEmpty(errMsg)) {
sync_Success++;
}
else {
if (!"已同步".Equals(errMsg)) {
this.Dispatcher.Invoke(new Action(delegate {
string jldw = "";
string desc_cn = "";
string desc_en = "";
if (bean.part != null) {
jldw = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_QUANTITYUNIT, Eplan.EplApi.Base.ISOCode.Language.L___);
desc_cn = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_NOTE, EplanUtil.Language_CN);
desc_en = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_NOTE, EplanUtil.Language);
}
errData.Add(new SyncResult(bean) { partNr = bean.eplan_partno, orderNr = bean.eplan_orderno, name = bean.eplan_name, jldw = jldw, desc_cn = desc_cn, desc_en = desc_en, reason = errMsg });
}));
}
}
}
//this.Dispatcher.Invoke(new Action(delegate{
// new PartSyncResult(this, sync_Success, ePlanToTCData.Count - sync_Success - errData.Count, errData).ShowDialog();
//}));
}
private void bgWorker_EPlan_to_TC_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
if (e.Error == null) {
new PartSyncResult(mdPartsDatabase, this, sync_Success, ePlanToTCData.Count - sync_Success - errData.Count, errData).ShowDialog();
this.table_Sync_To_TC.Items.Refresh();
//else {
// MessageBox.Show(parent, "操作完成");
//}
}
}
private String Item_to_EPlan(KPartSyncDataRow bean) {
Teamcenter.Soa.Client.Model.Strong.ItemRevision rev = bean.rev;
MDPart part = bean.part;
bool isNew = false;
if (part == null) {
string orderNrProp = KUtil.GetConfigValue(KConfigure.PART_SYNC_SECTION, KConfigure.PART_SYNC_OrderNr_TC);
if (KUtil.IsEmpty(orderNrProp)) {
throw new Exception("未配置订货号在TC中的属性");
}
string orderNr = KUtil.RemoveSpace( TCUtil.GetRevConfigProp(bean.rev, orderNrProp));
string partNr = "";
this.Dispatcher.Invoke(new Action(delegate {
NewPartNr newPartNrDialog = new NewPartNr(this, orderNr);
newPartNrDialog.ShowDialog();
partNr = newPartNrDialog.partNr;
}));
if (KUtil.IsEmpty(partNr)) {
return "部件不存在";
}
KUtil.Log("新建部件:"+partNr);
part = EplanUtil.NewPart(mdPartsDatabase, rev, partNr);
if (part == null) {
throw new Exception("新建Part失败:"+partNr);
}
//写入订货号
isNew = true;
MDPartsDatabaseTransaction trans = mdPartsDatabase.CreateTransaction();
part.Properties.ARTICLE_PARTNR = orderNr;
trans.Commit();
trans.Dispose();
bean.part = part;
}
//同步属性到EPlan
KUtil.Sync_Property_to_EPlan(mdPartsDatabase, rev, bean.part);
if (isNew) {
MDPartsDatabaseTransaction trans = mdPartsDatabase.CreateTransaction();
bean.part.Properties.ARTICLE_ERPNR = rev.Item_id;
bean.part.Properties.ARTICLE_CERTIFICATE_ATEX = "已同步";
trans.Commit();
trans.Dispose();
}
string eplan_partno = EplanUtil.GetMDPropValue(part.PartNr);
string eplan_orderno = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_ORDERNR);
string erpNr = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_ERPNR);
string manufacturer = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_MANUFACTURER).Trim();
string eplan_name = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_DESCR1,EplanUtil.Language_CN);
string eplan_desc = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_NOTE,EplanUtil.Language_CN);
this.Dispatcher.Invoke(new Action(delegate {
bean.eplan_orderno = rev.Item_id;
bean.eplan_partno = eplan_partno;
bean.eplan_erpno = erpNr;
bean.eplan_name = eplan_name;
bean.eplan_desc = eplan_desc;
if (isNew) {
bean.sync_status = "已同步";
}
table_Sync_To_TC.Items.Refresh();
}));
return "";
}
private bool checkOrderNr(KPartSyncDataRow bean) {
string orderNr = bean.eplan_orderno == null ? "" : bean.eplan_orderno;
foreach(KPartSyncDataRow r in ePlanToTCData) {
if (orderNr.Equals(r.eplan_orderno) && !bean.Equals(r)) {//订货号重复行
return false;
}
}
return true;
}
private string Part_to_TC(KPartSyncDataRow bean) {
if (bean.part == null) {
return "部件不存在";
}
if (!checkOrderNr(bean)) {
return "订货号相同";
}
string errMsg = null;
string releaseStatus = bean.tc_releasestatus;
string syncStatus = bean.sync_status;
Teamcenter.Soa.Client.Model.Strong.ItemRevision rev = null;
switch (syncStatus) {
case NOT_SYNCED:
if (NOT_RELEASEED.Equals(releaseStatus)) {
//通过item获取对象
rev = TCUtil.Query_LatestRev(bean.tc_itemid);
if (rev == null) {
errMsg = "未查询到对象:" + bean.tc_itemid;
}
}
else {
//失败:未升版
errMsg = "未升版";
}
break;
case "新增":
errMsg = "请在TC中进行元器件创建";
//新建对象 反写ID
//string tcItemType = KUtil.GetConfigValue(KConfigure.PART_SYNC_SECTION, KConfigure.PART_SYNC_TC_ITEM_TYPE);
//if (KUtil.IsEmpty(tcItemType)) {
// throw new Exception("未配置TC数据类型");
//}
//rev = TCUtil.CreateNewRev(tcItemType);
//if (rev == null) {
// errMsg = "新建对象失败";
//}
break;
case SAP_NEED_ID:
//失败:
errMsg = SAP_NEED_ID;
break;
case "已同步":
if (!NOT_RELEASEED.Equals(releaseStatus)) {
return "未升版";
}
if (NOT_RELEASEED.Equals(releaseStatus)) {
//通过item获取对象
rev = TCUtil.Query_LatestRev(bean.tc_itemid);
if (rev == null) {
errMsg = "未查询到对象:" + bean.tc_itemid;
}
}
else {
//失败:未升版
errMsg = "未升版";
}
break;
//return "已同步";
case "申请中":
return "申请中";
default:
//失败:未知状态
errMsg = "未知同步状态:" + syncStatus;
break;
}
if (KUtil.IsEmpty(errMsg)) {
if (rev == null) {
errMsg = "获取TC对象异常";
}
else {
{
string ordernr = bean.part.Properties.ARTICLE_PARTNR;
string ordernr2 = KUtil.RemoveSpace(ordernr);
if (ordernr != null && !ordernr.Equals(ordernr2)) {
MDPartsDatabaseTransaction trans1 = mdPartsDatabase.CreateTransaction();
KUtil.Log("订货号去空格:" + ordernr + " -> " + ordernr2);
bean.part.Properties.ARTICLE_PARTNR = ordernr2;
trans1.Commit();
trans1.Dispose();
}
}
//属性同步 发送分类
KUtil.Sync_Property_to_TC(rev, bean.part);
Teamcenter.Soa.Client.Model.ModelObject[] mo = TCUtil.Refresh(rev);
TCUtil.GetProperties(false, mo, "item_id", "item_revision_id", "object_name");
MDPartsDatabaseTransaction trans = mdPartsDatabase.CreateTransaction();
//EPLAN测试问题反馈-20241217 5.EPLAN同步到TC的属性对应关系有问题,修改了EPLAN中的属性
//bean.part.Properties.ARTICLE_ERPNR = rev.Item_id;
bean.part.Properties.ARTICLE_ORDERNR = rev.Item_id;
bean.part.Properties.ARTICLE_CERTIFICATE_ATEX = "已同步";
trans.Commit();
trans.Dispose();
this.Dispatcher.Invoke(new Action(delegate {
//bean.eplan_orderno = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_PARTNR);
bean.eplan_orderno = rev.Item_id;
//bean.eplan_erpno = rev.Item_id;
bean.tc_itemid = rev.Item_id;
bean.tc_revid = rev.Item_revision_id;
bean.tc_name = rev.Object_name;
bean.sync_status = "已同步";
bean.tc_desc = TCUtil.GetRevConfigProp(rev, KUtil.GetConfigValue(KConfigure.UI_SOME_SECTION, KConfigure.UI_PROP_DESC));
bean.tc_manufacturer = TCUtil.GetRevConfigProp(rev, KUtil.GetConfigValue(KConfigure.UI_SOME_SECTION, KConfigure.UI_PROP_MANUFACTURER));
bean.rev = rev;
table_Sync_To_TC.Items.Refresh();
}));
}
}
return errMsg;
}
private void Async_QueryTCParts(object sender, DoWorkEventArgs e)
{
this.Dispatcher.Invoke(new Action(delegate {
ePlanToTCData.Clear();
}));
string partNr = "";
string itemId = "";
this.Dispatcher.Invoke(new Action(delegate {
partNr = tb_PartNr.Text;
itemId = tb_ERPNr.Text;
}));
string queryName = KUtil.GetConfigValue(KConfigure.PART_QUERY_SECTION, KConfigure.PART_QUERY_NAME);
string itemField = KUtil.GetConfigValue(KConfigure.PART_QUERY_SECTION, KConfigure.PART_QUERY_ITEM_ID);
string partField = KUtil.GetConfigValue(KConfigure.PART_QUERY_SECTION, KConfigure.PART_QUERY_ORDERNR);
if (KUtil.IsEmpty(queryName) || KUtil.IsEmpty(itemField) || KUtil.IsEmpty(partField)) {
throw new Exception("TC部件查询配置缺失,请检查设置");
}
string orderNrProp = KUtil.GetConfigValue(KConfigure.PART_SYNC_SECTION, KConfigure.PART_SYNC_OrderNr_TC);
if (KUtil.IsEmpty(orderNrProp)) {
throw new Exception("未配置订货号在TC中的属性");
}
Dictionary fields = new Dictionary();
if (!KUtil.IsEmpty(itemId)) {
fields.Add(itemField, itemId);
}
if (!KUtil.IsEmpty(partNr)) {
fields.Add(partField, partNr);
}
if (fields.Count == 0) {
KUtil.DispatcherShow(this, "请输入查询条件");
//MessageBox.Show(this, "请输入查询条件");
return;
}
KUtil.Log("查询部件:PartNR = " + partNr + ", ErpNR = " + itemId);
bgWorker_Query_TC.Progress("查询中...", 0);
ModelObject[] unsyncItems = TCUtil.query(queryName, fields);
int len = unsyncItems == null ? 0 : unsyncItems.Length;
// MessageBox.Show(len + " 1");
KUtil.Log("查询结果数量:" + len);
for (int i = 0; i < len; i++) {
if (bgWorker_Query_TC.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_Query_TC.Progress("加载数据...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
ModelObject rev = unsyncItems[i];
ModelObject[] mo = TCUtil.Refresh(rev);
TCUtil.GetProperties(false, mo, "object_string");
if (!TCUtil.IsType(rev.SoaType, "ItemRevision")) {
throw new Exception("获取配置属性失败,对象不是版本类型:" + rev.GetPropertyDisplayableValue("object_string"));
}
Add_Sync_Data((Teamcenter.Soa.Client.Model.Strong.ItemRevision)rev, orderNrProp);
}
}
private void Async_QueryParts(object sender, DoWorkEventArgs e) {
this.Dispatcher.Invoke(new Action(delegate {
ePlanToTCData.Clear();
}));
string partNr = "";
string erpNr = "";
this.Dispatcher.Invoke(new Action(delegate {
partNr = tb_PartNr.Text;
erpNr = tb_ERPNr.Text;
}));
KUtil.Log("查询部件:OrderNr = " + partNr + ", ErpNR = " + erpNr);
bgWorker_Query.Progress("查询中...", 0);
MDPart[] unsyncParts = EplanUtil.QueryParts(mdPartsDatabase, partNr, erpNr);
int len = unsyncParts == null ? 0 : unsyncParts.Length;
KUtil.Log("查询结果数量:" + len);
for (int i = 0; i < len; i++) {
if (bgWorker_Query.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_Query.Progress("加载数据...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
Add_Sync_Data(unsyncParts[i], false);
}
}
public static bool NeedApply(KPartSyncDataRow bean) {
return bean != null && SAP_NEED_ID.Equals(bean.sync_status);
}
public static SyncResult GetSyncResultBean(KPartSyncDataRow bean, string errMsg) {
string jldw = "";
string desc_cn = "";
string desc_en = "";
if (bean.part != null) {
jldw = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_QUANTITYUNIT, Eplan.EplApi.Base.ISOCode.Language.L___);
desc_cn = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_NOTE, EplanUtil.Language_CN);
desc_en = EplanUtil.GetMDPropValue(bean.part.Properties.ARTICLE_NOTE, EplanUtil.Language);
}
return new SyncResult(bean) { partNr = bean.eplan_partno, orderNr = bean.eplan_orderno, name = bean.eplan_name, jldw = jldw, desc_cn = desc_cn, desc_en = desc_en, reason = errMsg };
}
private void Async_Apply(object sender, DoWorkEventArgs e) {
System.Collections.IList selectedItems = null;
bgWorker_Apply.Progress("检查数据...", 0);
this.Dispatcher.Invoke(new Action(delegate {
selectedItems = table_Sync_To_TC.SelectedItems;
}));
if (selectedItems == null || selectedItems.Count == 0) {
KUtil.DispatcherShow(this, "请选择要发起编码申请的部件");
return;
}
KUtil.Log("发起编码申请...");
bool descEmpty = false;
List applyData = new List();
for(int i = 0; i < selectedItems.Count; i++) {
KPartSyncDataRow dataRow = (KPartSyncDataRow)selectedItems[i];
if (!NeedApply(dataRow)) {
continue;
}
SyncResult bean = GetSyncResultBean(dataRow, SAP_NEED_ID);
if (KUtil.IsEmpty(bean.desc_en)) {
KUtil.Log("描述缺失:" + bean.partNr);
descEmpty = true;
//break;
}
else {
applyData.Add(bean);
}
}
if(descEmpty) {
KUtil.Log("缺少英文描述,请填写后重新申请");
KUtil.DispatcherShow(this, "缺少英文描述,请填写后重新申请");
return;
}
bgWorker_Apply.Progress("发起申请...", 0);
PartSyncResult.DoApply(this, applyData, mdPartsDatabase);
this.Dispatcher.Invoke(new Action(delegate {
this.table_Sync_To_TC.Items.Refresh();
}));
}
private void Async_AddAllUnsyncedParts(object sender, DoWorkEventArgs e) {
string partNr = "";
string erpNr = "";
this.Dispatcher.Invoke(new Action(delegate {
partNr = tb_PartNr.Text;
erpNr = tb_ERPNr.Text;
}));
KUtil.Log("查询未同步部件:OrderNr = " + partNr + ", ErpNR = " + erpNr);
bgWorker_AddAll.Progress("查询中...", 0);
List unsyncParts = EplanUtil.GetUnsyncedParts(mdPartsDatabase, partNr, erpNr);
int len = unsyncParts == null ? 0 : unsyncParts.Count;
KUtil.Log("查询全部未同步部件数量:" + len);
for (int i = 0; i < len; i++) {
if (bgWorker_AddAll.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_AddAll.Progress("加载数据...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
Add_Sync_Data(unsyncParts[i], false);
}
}
private void Async_LoadParts(object sender, DoWorkEventArgs e) {
EPlanTreeItem parent = (EPlanTreeItem)e.Argument;
if (parent != null) {
Cycle_Home(parent, e);
return;
}
//TreeViewItem node_home = null;
bgWorker_Parts.Progress("加载数据...", 0);
EPlanTreeItem tree_home = null;
this.Dispatcher.Invoke(new Action(delegate {
tree_home = new EPlanTreeItem("Parts");
tree_Parts.Items.Add(tree_home);
}));
/*int len = allParts.Length;
for (int i = 0; i < len; i++) {
if (bgWorkder_Parts.IsCancel()) {
e.Cancel = true;
return;
}
bgWorkder_Parts.Progress("加载数据...( "+(i+1)+" / "+len+" )", (i + 1) * 100 / len);
MDPart p = allParts[i];
EPlanTreeItem groupItem = FindTreeItem(p.GenericProductGroup, p.ProductGroup, tree_home);
if (groupItem == null) {
throw new Exception("获取组节点异常");
}
this.Dispatcher.Invoke(new Action(delegate {
groupItem.Items.Add(new EPlanTreeItem(p));
}));
}
this.Dispatcher.Invoke(new Action(delegate {
foreach (EPlanGroup g in topGroupMap.Values) {
g.topGroup.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));
g.topGroup.Items.Refresh();
}
}));*/
//加载TOPGROUP
Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup.Electric, tree_home);
Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup.Mechanic, tree_home);
Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup.Fluid, tree_home);
Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup.Process, tree_home);
Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup.Invaild, tree_home);
Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup.Undefined, tree_home);
this.Dispatcher.Invoke(new Action(delegate {
tree_home.IsExpanded = true;
}));
}
private EPlanTreeItem FindTreeItem(MDPartsDatabaseItem.Enums.ProductTopGroup topGroup, MDPartsDatabaseItem.Enums.ProductGroup group, EPlanTreeItem root) {
EPlanGroup ePlanGroup = null;
if (topGroupMap.ContainsKey(topGroup)) {
ePlanGroup = topGroupMap[topGroup];
}
else {
this.Dispatcher.Invoke(new Action(delegate {
//string topGroupName = MDPartsDatabaseItem.GetProductTopGroupName(topGroup);
EPlanTreeItem topGroupItem = new EPlanTreeItem(topGroup);
ePlanGroup = new EPlanGroup(topGroupItem);
root.Items.Add(topGroupItem);
topGroupMap.Add(topGroup, ePlanGroup);
}));
}
if (ePlanGroup == null) { return null; }
if (ePlanGroup.productGroupMap.ContainsKey(group)) {
return ePlanGroup.productGroupMap[group];
}
else {
EPlanTreeItem groupItem = null;
this.Dispatcher.Invoke(new Action(delegate {
//string groupName = MDPartsDatabaseItem.GetProductGroupName(group);
groupItem = new EPlanTreeItem(topGroup,group);
ePlanGroup.topGroup.Items.Add(groupItem);
ePlanGroup.productGroupMap.Add(group, groupItem);
}));
return groupItem;
}
}
private void Init_TopGroup(MDPartsDatabaseItem.Enums.ProductTopGroup topGroup, EPlanTreeItem tree_home) {
//if (!EplanUtil.TopGroupHasPart(topGroup)) {
// return;
//}
//string topGroupName = MDPartsDatabaseItem.GetProductTopGroupName(topGroup);
EPlanTreeItem tree_TopGroup = null;
this.Dispatcher.Invoke(new Action(delegate {
tree_TopGroup = new EPlanTreeItem(topGroup);
//KUtil.Log(tree_TopGroup.Header.ToString());
tree_home.Items.Add(tree_TopGroup);
}));
//加载Group
MDPartsDatabaseItem.Enums.ProductGroup[] groups = MDPartsDatabaseItem.GetAvailableProductGroups(topGroup);
for (int i = 0; i < groups.Length; i++) {
MDPartsDatabaseItem.Enums.ProductGroup group = groups[i];
//if (!EplanUtil.GroupHasPart(topGroup, group)) {
// continue;
//}
this.Dispatcher.Invoke(new Action(delegate {
EPlanTreeItem tree_Group = new EPlanTreeItem(topGroup,group);
//KUtil.Log(">> " + tree_Group.Header.ToString());
tree_TopGroup.Items.Add(tree_Group);
tree_Group.Items.Add(new EPlanTreeItem());//展开加载标记
}));
}
this.Dispatcher.Invoke(new Action(delegate {
tree_TopGroup.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));
tree_TopGroup.Items.Refresh();
}));
}
private void Cycle_Home(EPlanTreeItem treeItem, DoWorkEventArgs e) {
DateTime t1,t2;
bool flag = false;
this.Dispatcher.Invoke(new Action(delegate {
if (!(treeItem.Items.Count == 1 && ((EPlanTreeItem)treeItem.Items.GetItemAt(0)).isLoadMark)) {
flag = true;
}
}));
if (flag) { return; }
int topGroupId = -404;
int groupId = -404;
string groupName = "";
this.Dispatcher.Invoke(new Action(delegate {
treeItem.Items.Clear();
EPlanTreeItem topGroupItem = (EPlanTreeItem)treeItem.Parent;
KUtil.Log("查询:" + topGroupItem.Header + "|" + treeItem.Header);
topGroupId = topGroupItem.groupId;
groupId = treeItem.groupId;
groupName = treeItem.Header.ToString();
}));
if (topGroupId == -404 && groupId == -404) {
return;
}
bgWorker_Parts.Progress("查询中...", 0);
t1 = DateTime.Now;
MDPart[] parts = EplanUtil.GetParts(mdPartsDatabase, topGroupId, groupId);
t2 = DateTime.Now;
//KUtil.DispatcherShow(this, "查询耗时:" + (t2 - t1).TotalSeconds + "毫秒");
KUtil.Log("查询耗时:" + (t2 - t1).TotalSeconds + "秒");
int len = parts == null ? 0 : parts.Length;
for (int i = 0; i < len; i++) {
if (bgWorker_Parts.IsCancel()) {
e.Cancel = true;
return;
}
bgWorker_Parts.Progress("加载数据...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
this.Dispatcher.Invoke(new Action(delegate {
treeItem.Items.Add(new EPlanTreeItem(parts[i], groupName));
}));
}
//string group = treeItem.Header as string;
//MDPartsDatabaseItem.GetAvailableProductGroups
//ModelObject parent = treeItem.mo;
//ModelObject[] children = null;
////var t = parent.GetType();
//SoaType soaType = parent.SoaType;
//ModelObject[] mo = TCUtil.Refresh(parent);
//if (TCUtil.IsType(soaType, "Folder")) {
// TCUtil.GetProperties(false, mo, "contents");
// children = ((Folder)parent).Contents;
//}
//else if (TCUtil.IsType(soaType, "Item") || TCUtil.IsType(soaType, "ItemRevision")) {
// children = TCUtil.GetChildFromPref(parent);
//}
//else if (TCUtil.IsType(soaType, "Dataset")) {
// children = null;
//}
//else {
// return;
//}
//if (children == null) {
// return;
//}
//if (bgWorker_Query.IsCancel()) {
// e.Cancel = true;
// return;
//}
//ItemCollection node_children = null;
//this.Dispatcher.Invoke(new Action(delegate {
// node_children = treeItem.Items;
//}));
//int len = children.Length;
//for (int i = 0; i < len; i++) {
// if (bgWorker_Query.IsCancel()) {
// e.Cancel = true;
// return;
// }
// bgWorker_Homer.Progress("加载中...( " + (i + 1) + " / " + len + " )", (i + 1) * 100 / len);
// ModelObject c = children[i];
// EPlanTreeItem node_child = null;
// this.Dispatcher.Invoke(new Action(delegate {
// node_child = new EPlanTreeItem(c);
// node_children.Add(node_child);
// node_child.Items.Add(new EPlanTreeItem(null));
// }));
//}
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
bgWorker_Parts.Start(null,true);
}
private void Tree_Parts_Expanded(object sender, RoutedEventArgs e) {
EPlanTreeItem item = e.OriginalSource as EPlanTreeItem;
bgWorker_Parts.Start(item,true);
}
private void Table_Sync_To_TC_Loaded(object sender, RoutedEventArgs e) {
}
///
/// 元器件库添加按钮
///
///
///
private void Add_Button_Click(object sender, RoutedEventArgs e) {
EPlanTreeItem selectedItem = tree_Parts.SelectedItem as EPlanTreeItem;
if (selectedItem == null) {
return;
}
if(selectedItem.part == null) {
this.bgWorker_AddGroup.Start(null);
return;
}
try {
Add_Sync_Data(selectedItem.part, true);
}
catch (System.Exception ex) {
KUtil.LogErr(ex);
MessageBox.Show(this, "添加数据出错:" + ex.Message);
}
}
private void Async_AddGroup(object sender, DoWorkEventArgs e) {
EPlanTreeItem selectedItem = null;
this.Dispatcher.Invoke(new Action(delegate {
selectedItem = tree_Parts.SelectedItem as EPlanTreeItem;
}));
if (selectedItem == null) {
return;
}
if (selectedItem.part == null) {
ItemCollection items = null;
this.Dispatcher.Invoke(new Action(delegate {
items = selectedItem.Items;
}));
int len = items==null?0:items.Count;
for (int i = 0; i < len; i++) {
if (bgWorker_AddGroup.IsCancel()) {
e.Cancel = true;
return;
}
EPlanTreeItem child = items[i] as EPlanTreeItem;
//this.Dispatcher.Invoke(new Action(delegate {
// child = selectedItem.ItemContainerGenerator.ContainerFromItem(items[i]) as EPlanTreeItem;
//}));
if (child == null || child.part == null) {
continue;
}
bgWorker_AddGroup.Progress("添加数据...( "+(i+1)+" / "+len+" )", (i + 1) * 100 / len);
Add_Sync_Data(child.part, false);
}
return;
}
Add_Sync_Data(selectedItem.part, true);
}
private KPartSyncDataRow AddDataRow(bool select,Teamcenter.Soa.Client.Model.Strong.ItemRevision tcRev,MDPart part) {
string partNr = "";
string orderNr = "";
string itemID = "";
string itemRev = "";
string itemName = "";
string releaseStatus = "";
string manufacturer = "";
string atex = "";
string eplan_name = "";
string eplan_desc = "";
string eplan_erpNo = "";
if (part != null) {
partNr = part.PartNr;
//orderNr = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_PARTNR);
orderNr = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_ORDERNR);
orderNr = KUtil.RemoveSpace(orderNr);
eplan_erpNo = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_ERPNR);
manufacturer = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_MANUFACTURER).Trim();
atex = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_CERTIFICATE_ATEX);
eplan_name = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_DESCR1,EplanUtil.Language_CN);
eplan_desc = EplanUtil.GetMDPropValue(part.Properties.ARTICLE_NOTE,EplanUtil.Language_CN);
}
if (tcRev != null) {
Teamcenter.Soa.Client.Model.ModelObject[] mo = TCUtil.Refresh(tcRev);
TCUtil.GetProperties(false, mo, "item_id", "item_revision_id", "object_name", "release_status_list");
itemID = tcRev.Item_id;
itemRev = tcRev.Item_revision_id;
itemName = tcRev.Object_name;
Teamcenter.Soa.Client.Model.Strong.ReleaseStatus[] releaseList = tcRev.Release_status_list;
TCUtil.GetProperties(false, releaseList, "name");
for (int i = 0; i < releaseList.Length; i++) {
releaseStatus += releaseList[i].Name;
if (i != releaseList.Length - 1) {
releaseStatus += ", ";
}
}
}
if (KUtil.IsEmpty(releaseStatus)) {
releaseStatus = NOT_RELEASEED;
}
string syncStatus = GetSyncStatus(partNr,atex, manufacturer, itemID);
KPartSyncDataRow b = new KPartSyncDataRow();
b.index = ePlanToTCData.Count + 1;
b.eplan_orderno = orderNr;
b.eplan_partno = partNr;
b.eplan_erpno = eplan_erpNo;
b.eplan_name = eplan_name;
b.eplan_desc = eplan_desc;
b.eplan_manufacturer = manufacturer;
b.tc_itemid = itemID;
b.tc_name = itemName;
b.tc_revid = itemRev;
b.tc_desc = TCUtil.GetRevConfigProp(tcRev,KUtil.GetConfigValue(KConfigure.UI_SOME_SECTION,KConfigure.UI_PROP_DESC));
b.tc_manufacturer = TCUtil.GetRevConfigProp(tcRev, KUtil.GetConfigValue(KConfigure.UI_SOME_SECTION, KConfigure.UI_PROP_MANUFACTURER));
b.tc_releasestatus = releaseStatus;
b.sync_status = syncStatus;
b.part = part;
b.rev = tcRev;
this.Dispatcher.Invoke(new Action(delegate {
if (ePlanToTCData.Contains(b)) {
if (select) {
table_Sync_To_TC.SelectedItem = b;
table_Sync_To_TC.ScrollIntoView(b);
}
}
else {
ePlanToTCData.Add(b);
table_Sync_To_TC.ScrollIntoView(b);
}
}));
return b;
}
private void Add_Sync_Data(MDPart part, bool select) {
string orderNr = KUtil.RemoveSpace(EplanUtil.GetMDPropValue(part.Properties.ARTICLE_ERPNR));
ModelObject[] tcRevs = TCUtil.Query_LatestRevByOrderNr(orderNr);
int len = tcRevs == null ? 0 : tcRevs.Length;
if (len>0) {
for (int k = 0; k < len; k++) {
Teamcenter.Soa.Client.Model.Strong.ItemRevision tcRev = tcRevs[k] as Teamcenter.Soa.Client.Model.Strong.ItemRevision;
if (tcRev == null) {
continue;
}
AddDataRow(select,tcRev, part);
}
}
else {
AddDataRow(select,null, part);
}
}
private void Add_Sync_Data(Teamcenter.Soa.Client.Model.Strong.ItemRevision rev, string orderNrConfig) {
ModelObject[] mo = TCUtil.Refresh(rev);
TCUtil.GetProperties(false, mo, "item_id", "item_revision_id", "release_status_list", "object_string");
string orderNr = TCUtil.GetRevConfigProp(rev, orderNrConfig);
KUtil.Log("查询部件:OrderNr = " + orderNr);
MDPart[] unsyncParts = EplanUtil.QueryParts2(mdPartsDatabase, orderNr, "");
int len = unsyncParts == null ? 0 : unsyncParts.Length;
//MessageBox.Show(len + " 2");
KUtil.Log("查询结果数量:" + len);
if (len > 0) {
for(int k = 0; k < len; k++) {
AddDataRow(false, rev, unsyncParts[k]);
}
}
else {
AddDataRow(false, rev, null);
}
}
private string GetSyncStatus(string partNr,string syncStatus, string type, string itemID) {
if (KUtil.IsEmpty(partNr)) {
return PART_NOT_EXIST;
}
if (!"已同步".Equals(syncStatus)) {
if (KUtil.IsEmpty(itemID)) {
return "新增";
//if (type == null) {
// type = "";
//}
//type = type.Trim().ToUpper();
//if ("SIEMENS".Equals(type)||"SIE".Equals(type)) {
// if (APPLYING.Equals(syncStatus)){
// return syncStatus;
// }
// return SAP_NEED_ID;
//}
//else {
// return "新增";
//}
}
else {
return NOT_SYNCED;
}
}
return syncStatus;
}
private void Remove_Button_Click(object sender, RoutedEventArgs e) {
try {
System.Collections.IList selectedItems = table_Sync_To_TC.SelectedItems;
if (selectedItems == null || selectedItems.Count == 0) {
return;
}
while (selectedItems.Count > 0) {
ePlanToTCData.Remove((KPartSyncDataRow)selectedItems[0]);
table_Sync_To_TC.Items.Refresh();
}
for (int i = 0; i < ePlanToTCData.Count; i++) {
ePlanToTCData[i].index = (i + 1);
}
table_Sync_To_TC.Items.Refresh();
}
catch (System.Exception ex) {
KUtil.LogErr(ex);
MessageBox.Show(this, ex.Message);
}
}
private void Add_All_Button_Click(object sender, RoutedEventArgs e) {
this.bgWorker_AddAll.Start(null);
}
private void Apply_Button_Click(object sender, RoutedEventArgs e) {
this.bgWorker_Apply.Start(null);
}
private void Query_Button_Click(object sender, RoutedEventArgs e) {
this.bgWorker_Query.Start(null);
}
private void EPlan_to_TC_Button_Click(object sender, RoutedEventArgs e) {
this.bgWorker_EPlan_to_TC.Start(null);
}
private void Close_Button_Click(object sender, RoutedEventArgs e) {
Close();
}
private void Revise_Button_Click(object sender, RoutedEventArgs e) {
System.Collections.IList selectedItems = table_Sync_To_TC.SelectedItems;
if (selectedItems == null || selectedItems.Count == 0) {
return;
}
List reviseList = new List();
for (int i = 0; i < selectedItems.Count; i++) {
KPartSyncDataRow bean = selectedItems[i] as KPartSyncDataRow;
if (bean.rev != null) {
reviseList.Add(bean);
}
}
if (reviseList.Count == 0) {
MessageBox.Show(this, "没有可升版的数据");
return;
}
bgWorker_Revise.Start(reviseList);
}
private void TC_to_EPLAN_Button_Click(object sender, RoutedEventArgs e) {
this.bgWorker_TC_to_EPlan.Start(null);
}
private void TC_Query_Button_Click(object sender, RoutedEventArgs e) {
bgWorker_Query_TC.Start(null);
}
private void Tree_Parts_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
Add_Button_Click(sender, e);
}
private void Upload_PartsDB(object sender, RoutedEventArgs e) {
bgWorker_UploadPartsDB.Start(null);
}
private void SyncErpCode_Button_Click(object sender, RoutedEventArgs e) {
bgWorker_SyncErpCode.Start(null);
}
private void Button_Click(object sender, RoutedEventArgs e) {
}
}
}