using connor_zwcadm.dialog; using connor_zwcadm.model; using connor_zwcadm.util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ZwmToolKitLib; namespace connor_zwcadm.commands { class SyncBomLineCommand : AbstractCADCommand { private KBackgroundWorker bgWorker { get; } public TCUtil TCUtil { get; } public SyncBomLineCommand(string file_path) : base(file_path) { bgWorker = new KBackgroundWorker(); bgWorker.backgroundWorker.DoWork += DoSync; TCUtil = new TCUtil(bgWorker); } public void DoSync(object sender, DoWorkEventArgs e) { String err = ""; bgWorker.Progress("初始化", "", 0); InitCommand(); //读取图纸数据 bgWorker.Progress("读取图纸Bom", 30); Dictionary bomlineMap = KCADUtil.ReadCADBomLine(TCUtil); KUtil.Log("BOM数量:" + (bomlineMap == null ? 0 : bomlineMap.Count)); if (bomlineMap == null || bomlineMap.Count == 0) { throw new Exception("图纸中无有效BOM信息,取消更新"); } bgWorker.Progress("读取BOM数据", 50); Dictionary> propMap = new Dictionary>(); foreach (int row in bomlineMap.Keys) { TCData data = bomlineMap[row]; Dictionary props = TCUtil.ReadTCData(data); propMap.Add(row, props); } //更新图纸数据 bgWorker.Progress("更新图纸", 90); bgWorker.pbDialog.Dispatcher.Invoke(new Action(delegate { err = KCADUtil.WriteBomLine(propMap); })); bgWorker.Progress("更新完成", "", 100); System.Threading.Thread.Sleep(800); if (!("".Equals(err.Trim()))) { MessageBox.Show("明细栏更新成功,但第" + err + "行数据更新失败,在TC系统中未找到对应的对象!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); } } protected override void InitCommand() { } protected override void ExecuteCommand() { bgWorker.Start(null); } } }