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.
204 lines
6.6 KiB
204 lines
6.6 KiB
using Eplan.EplApi.Base;
|
|
using KPlan.Util;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Xml;
|
|
using Teamcenter.Services.Strong.Cad._2007_01.StructureManagement;
|
|
|
|
namespace KPlan.Forms.Bean {
|
|
|
|
public class CheckTableRowData {
|
|
public const string INDEX = "INDEX";
|
|
public const string CHECK = "CHECK";
|
|
public const string COUNT = "P_ARTICLEREF_COUNT";
|
|
public const string ITEMID = "P_ARTICLE_ERPNR";
|
|
public const string ORDERNR = "P_ARTICLE_ORDERNR";
|
|
public const string DEVICETAG = "P_FUNC_IDENTDEVICETAG";
|
|
|
|
private string title = "";
|
|
private XmlNode node2;
|
|
public bool checkOK = false;
|
|
public object[] rowData;
|
|
public string itemId;
|
|
public string orderNo;
|
|
public string itemUid;
|
|
public string deviceTag;
|
|
private List<XmlNode> nodeToCombine = new List<XmlNode>();
|
|
private bool itemExist;
|
|
|
|
public CheckTableRowData(string itemId,string orderNo, XmlNode node, bool itemExist, string itemUid) {
|
|
this.node2 = node;
|
|
if (!string.IsNullOrWhiteSpace(itemId)) {
|
|
this.itemId = itemId;
|
|
}
|
|
else {
|
|
this.itemId = GetPropValue(ITEMID, -1)?.ToString();
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(orderNo)) {
|
|
this.orderNo = orderNo;
|
|
}
|
|
else {
|
|
this.orderNo = GetPropValue(ORDERNR, -1)?.ToString();
|
|
}
|
|
this.deviceTag = GetPropValue(DEVICETAG, -1)?.ToString();
|
|
this.itemExist = itemExist;
|
|
this.itemUid = itemUid;
|
|
}
|
|
|
|
public void addCombineNode(CheckTableRowData bean) {
|
|
if (bean.node2 != null) {
|
|
nodeToCombine.Add(bean.node2);
|
|
}
|
|
}
|
|
|
|
public bool CheckOK() {
|
|
return checkOK;
|
|
}
|
|
|
|
public override bool Equals(object obj) {
|
|
CheckTableRowData bean = obj as CheckTableRowData;
|
|
if (bean == null) { return false; }
|
|
if (!this.itemId.Equals(bean.itemId)){
|
|
return false;
|
|
}
|
|
if (this.deviceTag == null) {
|
|
return bean.deviceTag == null;
|
|
}
|
|
else {
|
|
return this.deviceTag.Equals(bean.deviceTag);
|
|
}
|
|
}
|
|
|
|
|
|
public object[] GetRowData(int index, List<string> config) {
|
|
int len = config.Count;
|
|
object[] res = new object[len];
|
|
/*if (len > 0) {
|
|
title = GetPropValue(config[0], index);
|
|
res[0] = this;
|
|
}*/
|
|
for (int i = 0; i < len; i++) {
|
|
|
|
res[i] = GetPropValue(config[i], index);
|
|
// KUtil.DispatcherShow(kCheckProject_Ex, "i:" + i + "config[i]:"+ config[i] + " res[i]:" + res[i]);
|
|
}
|
|
rowData = res;
|
|
|
|
return res;
|
|
}
|
|
|
|
public AttributesInfo[] GetBomProp(Dictionary<string, string> saveConfig) {
|
|
if (saveConfig == null) {
|
|
return null;
|
|
}
|
|
List<AttributesInfo> res = new List<AttributesInfo>();
|
|
foreach (string tc in saveConfig.Keys) {
|
|
string eplan = saveConfig[tc];
|
|
string val = GetPropValue(eplan,-1)?.ToString();
|
|
AttributesInfo info = new AttributesInfo();
|
|
info.Name = tc;
|
|
info.Value = val == null ? "" : val;
|
|
res.Add(info);
|
|
}
|
|
return res.ToArray();
|
|
}
|
|
|
|
private object GetPropValue(string config, int index) {
|
|
if (INDEX.Equals(config)) {
|
|
return index;
|
|
}
|
|
if (CHECK.Equals(config)) {
|
|
return Check();
|
|
}
|
|
if (COUNT.Equals(config)) {
|
|
return Count();
|
|
}
|
|
if (ITEMID.Equals(config)) {
|
|
return itemId;
|
|
}
|
|
if (ORDERNR.Equals(config)) {
|
|
return orderNo;
|
|
}
|
|
int ind = config.IndexOf('@');
|
|
string language = null;
|
|
if (ind > 0) {
|
|
language = config.Substring(ind + 1);
|
|
config = config.Substring(0, ind);
|
|
}
|
|
string val = null;
|
|
if (node2 != null) {
|
|
val = node2.Attributes[config]?.InnerText;
|
|
if (!KUtil.IsEmpty(val) && !KUtil.IsEmpty(language)) {
|
|
MultiLangString multiLangString = new MultiLangString();
|
|
multiLangString.SetAsString(val);
|
|
val = multiLangString.GetString((ISOCode.Language)Enum.Parse(typeof(ISOCode.Language), language));
|
|
}
|
|
}
|
|
//XmlAttribute attr = node.Attributes[config];
|
|
return val == null ? "" : val;
|
|
}
|
|
|
|
private string Count() {
|
|
if (node2 == null) {
|
|
return "";
|
|
}
|
|
double total = 0;
|
|
string refCount = node2.Attributes["P_ARTICLEREF_COUNT"]?.InnerText;
|
|
string lenth = node2.Attributes["P_ARTICLE_PARTIAL_LENGTH_VALUE"]?.InnerText;
|
|
if (KUtil.IsEmpty(lenth)) {
|
|
lenth = "1";
|
|
}
|
|
if (!KUtil.IsEmpty(refCount) && !KUtil.IsEmpty(lenth)) {
|
|
double dwire_length = Convert.ToDouble(lenth);
|
|
if (dwire_length != 0.0) {
|
|
double drecord_num = Convert.ToDouble(refCount);
|
|
drecord_num = dwire_length * drecord_num;
|
|
total += drecord_num;
|
|
}
|
|
}
|
|
foreach(XmlNode node in nodeToCombine) {
|
|
refCount = node.Attributes["P_ARTICLEREF_COUNT"]?.InnerText;
|
|
lenth = node.Attributes["P_ARTICLE_PARTIAL_LENGTH_VALUE"]?.InnerText;
|
|
if (KUtil.IsEmpty(lenth)) {
|
|
lenth = "1";
|
|
}
|
|
if (!KUtil.IsEmpty(refCount) && !KUtil.IsEmpty(lenth)) {
|
|
double dwire_length = Convert.ToDouble(lenth);
|
|
if (dwire_length != 0.0) {
|
|
double drecord_num = Convert.ToDouble(refCount);
|
|
drecord_num = dwire_length * drecord_num;
|
|
total += drecord_num;
|
|
}
|
|
}
|
|
}
|
|
return total.ToString();
|
|
}
|
|
|
|
|
|
private string Check() {
|
|
if (node2 != null) {
|
|
XmlAttribute discontinue = node2.Attributes["P_ARTICLE_DISCONTINUED"];//?.InnerText;
|
|
if (discontinue != null && !"0".Equals(discontinue.InnerText)) {
|
|
return "停产部件";
|
|
}
|
|
}
|
|
//string itemId = node.Attributes["P_ARTICLE_ERPNR"]?.InnerText;
|
|
//string itemId = erpAttr == null ? "" : erpAttr.Value;
|
|
if (itemExist) {
|
|
//if (TCUtil.ItemExist(itemId)) {
|
|
checkOK = true;
|
|
return "TC存在";
|
|
}
|
|
return "TC不存在";
|
|
}
|
|
|
|
public override string ToString() {
|
|
return title;
|
|
}
|
|
}
|
|
}
|