chr
2024-08-20 b62a2f5ad99995ec01da71b9f93be7284023171b
优化插件;
1 文件已重命名
2个文件已删除
2个文件已添加
12个文件已修改
793 ■■■■■ 已修改文件
.vs/SwPlugin/v17/DocumentLayout.json 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
InnoSetupScript/PdmSwPlugin.iss 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSw/Settings/PluginSetting.xml 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/BomIniter/YwtBomIniter.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/Entity/DrawAudit/DrawAuditOrder.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/Entity/Pdm/PdmBom.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/PdmSwPlugin.Common.csproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/Util/NumberUtil.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.DrawApprove/DrawApprove.xaml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Main/Constant/PluginConst.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.PDM/Model/PdmControlModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.PDM/PdmControl.xaml 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.PDM/PdmControl.xaml.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SetupScript/.vs/SetupScript.csproj.dtbcache.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SetupScript/SetupScript.csproj 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/SwPlugin/v17/DocumentLayout.json
@@ -3,36 +3,28 @@
  "WorkspaceRootPath": "C:\\Workspace\\PdmSwPlugin2\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|c:\\workspace\\pdmswplugin2\\pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.common\\entity\\drawaudit\\drawaudit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\entity\\drawaudit\\drawaudit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\control\\richhiswindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\control\\richhiswindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\bominiter\\ywtbominiter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\bominiter\\ywtbominiter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\bominiter\\bominiter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\bominiter\\bominiter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.common\\entity\\drawaudit\\drawauditorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\entity\\drawaudit\\drawauditorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmsw\\prodsettings\\pluginsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
      "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\prodsettings\\pluginsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmsw\\settings\\pluginsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
      "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\settings\\pluginsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -42,103 +34,84 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 0,
          "SelectedChildIndex": 5,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "SwAddin.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs",
              "RelativeDocumentMoniker": "PdmSw\\SwAddin.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs",
              "RelativeToolTip": "PdmSw\\SwAddin.cs",
              "ViewState": "AQIAAAcAAAAAAAAAAAAAABIAAAAnAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-16T02:28:52.727Z",
              "DocumentIndex": 1,
              "Title": "DrawApprove.xaml",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
              "WhenOpened": "2024-08-20T03:02:33.757Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "RichHisWindow.xaml",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Control\\RichHisWindow.xaml",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Control\\RichHisWindow.xaml",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Control\\RichHisWindow.xaml",
              "RelativeToolTip": "PdmSwPlugin.Common\\Control\\RichHisWindow.xaml",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
              "WhenOpened": "2024-08-16T02:26:26.745Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "YwtBomIniter.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\BomIniter\\YwtBomIniter.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\BomIniter\\YwtBomIniter.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\BomIniter\\YwtBomIniter.cs",
              "RelativeToolTip": "PdmSwPlugin.Common\\BomIniter\\YwtBomIniter.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAABLAAAA",
              "DocumentIndex": 4,
              "Title": "DrawAuditOrder.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
              "RelativeToolTip": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAFAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-15T08:33:54.519Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "BomIniter.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\BomIniter\\BomIniter.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\BomIniter\\BomIniter.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\BomIniter\\BomIniter.cs",
              "RelativeToolTip": "PdmSwPlugin.Common\\BomIniter\\BomIniter.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-15T08:33:51.192Z"
              "WhenOpened": "2024-08-20T02:13:49.926Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "Title": "PluginSetting.xml",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSw\\ProdSettings\\PluginSetting.xml",
              "RelativeDocumentMoniker": "PdmSw\\ProdSettings\\PluginSetting.xml",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSw\\ProdSettings\\PluginSetting.xml",
              "RelativeToolTip": "PdmSw\\ProdSettings\\PluginSetting.xml",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAAA0AAAAPAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
              "WhenOpened": "2024-08-12T10:16:18.735Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "PluginSetting.xml",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSw\\Settings\\PluginSetting.xml",
              "RelativeDocumentMoniker": "PdmSw\\Settings\\PluginSetting.xml",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSw\\Settings\\PluginSetting.xml",
              "RelativeToolTip": "PdmSw\\Settings\\PluginSetting.xml",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAABEAAAAXAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
              "WhenOpened": "2024-08-12T10:16:06.032Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "MainControl.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainControl.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.Main\\MainControl.xaml.cs",
              "ViewState": "AQIAAIUAAAAAAAAAAAAAAJAAAAANAAAA",
              "Title": "PluginConst.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Main\\Constant\\PluginConst.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs",
              "RelativeToolTip": "PdmSwPlugin.Main\\Constant\\PluginConst.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-12T10:08:35.904Z"
              "WhenOpened": "2024-08-18T12:05:54.617Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "MainControl.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "RelativeToolTip": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "ViewState": "AQIAADcAAAAAAAAAAAAkwG0AAAANAAAA",
              "DocumentIndex": 3,
              "Title": "PdmControl.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "ViewState": "AQIAAMoEAAAAAAAAAAApwNoEAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-12T09:19:59.648Z"
              "WhenOpened": "2024-08-18T08:40:17.518Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "DrawApprove.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "ViewState": "AQIAABoBAAAAAAAAAAAcwCUBAAAdAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-18T08:30:42.283Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "DrawAudit.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "RelativeToolTip": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "ViewState": "AQIAAAYAAAAAAAAAAAAAABAAAAAfAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-18T08:28:05.337Z",
              "EditorCaption": ""
            }
          ]
        }
InnoSetupScript/PdmSwPlugin.iss
File was renamed from SetupScript/SetupScript.iss
@@ -3,14 +3,14 @@
; AppName
#define AppName = "PdmSwPlugin"
; 打包的应用文件夹路径
#define AppDir = "C:\Users\cheng\Documents\Workspace\PdmSw\bin\x64\Debug\"
#define AppDir = "C:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\"
; 自动更新程序路径
#define AutoUpdaterDir = "C:\Users\cheng\Documents\Workspace\PdmSw\bin\x64\Debug\AutoUpdater\"
#define AutoUpdaterDir = "C:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\Release\AutoUpdater\"
; 版本
#define Version = "0.1"
#define Version = "0.0.0.35"
; 生成的Installer存放路径
#define OutPutDir = "C:\temp\Test"
#define OutPutDir = "Z:\Main\Workspace\Output"
#define DllName = "PdmSwPlugin.dll"
@@ -22,14 +22,14 @@
AppVersion={#Version}
;AppVerName=Test 1.0
; 安装路径 C:\Program Files (x86)\LHJ\PdmSwPlugin
DefaultDirName={autopf}\LHJ\PdmSwPlugin
DefaultDirName={autopf}\HengXin\PdmSwPlugin
DisableDirPage=yes
DefaultGroupName=PdmSwPlugin
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir={#OutputDir}
OutputBaseFilename=PdmSwPluginInstaller
OutputBaseFilename=PdmSwPluginInstaller_V{#Version}
Compression=lzma
SolidCompression=yes
WizardStyle=modern
@@ -61,12 +61,12 @@
; 32
Root: HKLM; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: dword; ValueName: ""; ValueData: 0; Flags: deletevalue
Root: HKLM; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Description"; ValueData: "LHJ插件"; Flags: deletevalue
Root: HKLM; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Description"; ValueData: "PDM插件"; Flags: deletevalue
Root: HKLM; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Title"; ValueData: "PdmSw"; Flags: deletevalue
; 64
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; Flags: uninsdeletekey
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: dword; ValueName: ""; ValueData: 0; Flags: deletevalue
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Description"; ValueData: "LHJ插件"; Flags: deletevalue
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Description"; ValueData: "PDM插件"; Flags: deletevalue
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Title"; ValueData: "PdmSw"; Flags: deletevalue
[Icons]
PdmSw/Settings/PluginSetting.xml
Binary files differ
PdmSwPlugin.Common/BomIniter/YwtBomIniter.cs
@@ -29,7 +29,9 @@
            if (Regex.IsMatch(childName, jgjNameRegx))
            {
                bom.historyData = NameUtil.IsHistoryDoc(childName);
                if (bom._drawInfo != null) {
                    bom._drawInfo.HistoryData = NameUtil.IsHistoryDoc(childName);
                }
                string docType = bom.properties.Get("文件格式");
                if (string.IsNullOrEmpty(docType))
PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs
@@ -12,6 +12,15 @@
            set { _id = value; }
        }
        private string _orderCode;
        public string orderCode
        {
            get => _orderCode;
            set => RaiseAndSetIfChanged(ref _orderCode, value);
        }
        private string _materialCode;
        public string materialCode
@@ -107,5 +116,32 @@
            set => RaiseAndSetIfChanged(ref _count, value);
        }
        private string _fileName;
        public string fileName
        {
            get => _fileName;
            set => RaiseAndSetIfChanged(ref _fileName, value);
        }
        private double? _volume;
        public double? volume
        {
            get => _volume;
            set => RaiseAndSetIfChanged(ref _volume, value);
        }
        private double? _surfaceArea;
        public double? surfaceArea
        {
            get => _surfaceArea;
            set => RaiseAndSetIfChanged(ref _surfaceArea, value);
        }
        private double? _mass;
        public double? mass
        {
            get => _mass;
            set => RaiseAndSetIfChanged(ref _mass, value);
        }
    }
}
PdmSwPlugin.Common/Entity/DrawAudit/DrawAuditOrder.cs
New file
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PdmSwPlugin.Common.Entity.DrawAudit
{
    public class DrawAuditOrder
    {
        public string id { get; set; }
        public string code { get; set; }
        public string requestUserId { get; set; }
        public string requestUser { get; set; }
    }
}
PdmSwPlugin.Common/Entity/Pdm/PdmBom.cs
@@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Windows.Interop;
namespace PdmSwPlugin.Common.Entity.Pdm
{
@@ -35,6 +36,8 @@
        public string filePath { get; set; }
        public int level { get; set; }
        public int drawingType { get; set; }
        public bool HistoryData = false;
        public ModelDoc2 doc { get; set; }
        public Component2 component { get; set; }
@@ -152,6 +155,14 @@
        public bool checkRuleOk => checkRuleResult == 1 || checkRuleResult == 3;
        private bool _HistoryData = false;
        public bool HistoryData
        {
            get => _HistoryData;
            set => RaiseAndSetIfChanged(ref _HistoryData, value);
        }
        public List<string> errMessages { get; set; }
        public Dictionary<string, string> allProperties { get; set; }
@@ -216,15 +227,101 @@
        public string auditUserId => BomInfo?.auditUserId;
        public string auditUser => BomInfo?.auditUser;
        public bool inBom
        /// <summary>
        /// 是否是历史图纸
        /// </summary>
        public bool IsHistoryData => _drawInfo?.HistoryData == true;
        /// <summary>
        /// 是否跳过规则检查
        /// </summary>
        public bool skipCheck => produceWay == "模组" || ExcludeFromBOM || component?.IsVirtual == true;
        /// <summary>
        /// 图纸是否发生变更 非历史图纸看2D图MD5 历史图纸看一致性检查没通过
        /// </summary>
        public bool localDocChanged => (!IsHistoryData && localD2Md5 != _drawInfo?.d2Md5)
            || (IsHistoryData && _drawInfo?.checkRuleResult == 2); //localD3Md5 != _drawInfo?.d3Md5;
        /// <summary>
        /// 规则检查结果
        /// </summary>
        public int? checkRuleResult => (IsHistoryData || skipCheck) ? 3 : _drawInfo?.checkRuleResult;
        /// <summary>
        /// 检查是否OK
        /// </summary>
        public bool checkRuleOk => _drawInfo != null && _drawInfo.checkRuleOk;
        /// <summary>
        /// 是否不在物料明细表中
        /// </summary>
        public bool ExcludeFromBOM
        {
            get => component == null ? false : component.ExcludeFromBOM;
            set
            {
                InBomChanged?.Invoke(this, value);
                // RaiseAndSetIfChanged(ref _inBom, value);
            }
        }
        /// <summary>
        /// 是否需要审核
        /// </summary>
        public bool NeedAudit
        {
            get
            {
                // 找不到文档的不审核
                if (lost) return false;
                // 不在物料明细表中不审核
                if (ExcludeFromBOM) return false;
                if (IsHistoryData)
                {
                    // 历史图纸只审核一致性不通过的
                    return _drawInfo.checkRuleResult == 2;
                }
                else
                {
                    // 非历史图纸只审核 允许审核的加工件
                    return produceWay == "加工件"
                            && (drawStatus != "submitted" && drawStatus != "resubmitted")
                            && (drawStatus != "completed" || localDocChanged);
                }
            }
        }
        /// <summary>
        /// 是否需要终止检入/导入
        /// </summary>
        /// <returns></returns>
        public string NeedStopCheckIn()
        {
            if (produceWay == "模组") return null;
            if (ExcludeFromBOM) return null;
            if (IsHistoryData && localDocChanged)
            {
                return $"历史图纸【{partModel}】变更后未重新审核";
            }
            if (!IsHistoryData)
            {
                bool error = false;
                string msg = $"【{partModel}】";
                if (!skipCheck && !checkRuleOk)
                {
                    error = true;
                    msg += "未通过规则检查";
                }
                if (produceWay == "加工件" && drawStatus != "completed")
                {
                    error = true;
                    msg += "未通过审核;";
                }
                if (produceWay == "加工件" && drawStatus == "completed" && localDocChanged)
                {
                    error = true;
                    msg += "图纸变更后未重新审核";
                }
                return error ? msg : null;
            }
            return null;
        }
        public void UpdateInBom(bool value)
        {
@@ -430,15 +527,13 @@
            if (e.PropertyName == "checkRuleResult")
            {
                RaisePropertyChanged("checkRuleResult");
                RaisePropertyChanged("localDocChanged");
            }
            else if (e.PropertyName == "HistoryData")
            {
                RaisePropertyChanged("IsHistoryData");
            }
        }
        // 模组 不在物料明细表 巡检跳过检查
        public bool historyData { get; set; } = false;
        public bool skipCheck => historyData || produceWay == "模组" || inBom || component?.IsVirtual == true;
        public int? checkRuleResult => skipCheck ? 3 : _drawInfo?.checkRuleResult;
        public bool checkRuleOk => _drawInfo != null && _drawInfo.checkRuleOk;
        public string d3Md5 => _drawInfo == null ? null : _drawInfo.d3Md5;
        public string d2Md5 => _drawInfo == null ? null : _drawInfo.d2Md5;
@@ -459,14 +554,13 @@
        public bool checkBoxEnabled => !(xcChild || (lost == true) ||
            produceWay == "标准件"
            || (produceWay == "模组" && drawingType == (int)swDocumentTypes_e.swDocPART)
            || (inBom && drawingType == (int)swDocumentTypes_e.swDocPART)
            || (ExcludeFromBOM && drawingType == (int)swDocumentTypes_e.swDocPART)
            // BomInfo.jgj == "标准件"
            //|| component?.IsVirtual == true
            );
        public bool d3Changed => localD3Md5 != _drawInfo?.d3Md5;
        public bool auditedMd5Changed => localD2Md5 != _drawInfo?.d2Md5; //localD3Md5 != _drawInfo?.d3Md5;
        public int order { get; set; }
PdmSwPlugin.Common/PdmSwPlugin.Common.csproj
@@ -76,6 +76,7 @@
    <Compile Include="Entity\BusinessType.cs" />
    <Compile Include="Entity\DrawAudit\DrawAudit.cs" />
    <Compile Include="Entity\DrawAudit\DrawAuditHis.cs" />
    <Compile Include="Entity\DrawAudit\DrawAuditOrder.cs" />
    <Compile Include="Entity\NoteAndPos.cs" />
    <Compile Include="Entity\NotifyBase.cs" />
    <Compile Include="Entity\Page.cs" />
@@ -102,6 +103,7 @@
    <Compile Include="Setting\YwtUserSetting.cs" />
    <Compile Include="Util\DictionaryUtil.cs" />
    <Compile Include="Util\LimitedConcurrencyLevelTaskScheduler.cs" />
    <Compile Include="Util\NumberUtil.cs" />
    <Compile Include="Util\OpenDocContext.cs" />
    <Compile Include="Util\Pdm\ComponentAndTask.cs" />
    <Compile Include="Util\Pdm\BomTreeReader.cs" />
PdmSwPlugin.Common/Util/NumberUtil.cs
New file
@@ -0,0 +1,16 @@
using SolidWorks.Interop.sldworks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PdmSwPlugin.Common.Util
{
    public class NumberUtil
    {
        public static double HandleMass(double mass) {
            return Math.Round(mass, 6);
        }
    }
}
PdmSwPlugin.DrawApprove/DrawApprove.xaml
@@ -84,7 +84,7 @@
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <CheckBox DataContext="{Binding Data}"
                      IsChecked="{Binding selected}"/>
                      IsChecked="{Binding selected}" Checked="SingleCheckBox_Event" Unchecked="SingleCheckBox_Event"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
@@ -100,6 +100,7 @@
                        </DataGridTemplateColumn>
                        <DataGridTextColumn Header="申请人" Width="80" IsReadOnly="True" Binding="{Binding Data.requestUser}"/>
                        <DataGridTextColumn Header="流水单号" Width="80" IsReadOnly="True" Binding="{Binding Data.orderCode}"/>
                        <DataGridTextColumn Header="前一审核人" Width="80" IsReadOnly="True" Binding="{Binding Data.auditUser}"/>
                        <DataGridTextColumn Header="提交时间" Width="130" IsReadOnly="True" Binding="{Binding Data.updateTime}"/>
@@ -131,7 +132,7 @@
                <StatusBar DockPanel.Dock="Bottom" Height="20">
                    <StatusBarItem >
                        <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding ActiveDocPath}"/>
                        <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding SelectBomText}"/>
                    </StatusBarItem>
                    <Separator/>
                    <StatusBarItem>
PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs
@@ -64,8 +64,36 @@
        public ObservableCollection<DrawAudit> dataSource
        {
            get => _dataSource;
            set => RaiseAndSetIfChanged(ref _dataSource, value);
            set
            {
                RaiseAndSetIfChanged(ref _dataSource, value);
                if (value == null)
                {
                    StatusBarText = $"共 0 条";
                }
                else
                {
                    StatusBarText = $"共 {value.Count} 条";
                }
                RefreshSelectedCount();
            }
        }
        private string _SelectBomText = "已选中 0 条";
        public string SelectBomText
        {
            get => _SelectBomText;
            set => RaiseAndSetIfChanged(ref _SelectBomText, value);
        }
        private string _StatusBarText = "共 0 条";
        public string StatusBarText
        {
            get { return _StatusBarText; }
            set => RaiseAndSetIfChanged(ref _StatusBarText, value);
        }
        public DrawApproveControl() : this(null)
@@ -100,7 +128,32 @@
            {
                data.selected = cb.IsChecked.Value;
            }
            int count = cb.IsChecked.Value ? (dataSource == null ? 0 : dataSource.Count) : 0;
            SelectBomText = $"已选中 {count} 条";
        }
        private void RefreshSelectedCount()
        {
            if (dataSource == null || dataSource.Count <= 0)
            {
                SelectBomText = "已选中 0 条";
                return;
            }
            int count = dataSource.Where(e => e.selected).Count();
            SelectBomText = $"已选中 {count} 条";
        }
        /// <summary>
        /// 单个点选事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SingleCheckBox_Event(object sender, RoutedEventArgs e)
        {
            RefreshSelectedCount();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
@@ -207,39 +260,34 @@
        {
            Button btn = sender as Button;
            DrawAudit da = btn.DataContext as DrawAudit;
            string fileName = Path.GetFileName(da.d2RelativePath);
            if (string.IsNullOrEmpty(fileName))
            string filePath = GetRealFilePath(da.d2RelativePath);
            if (!File.Exists(filePath))
            {
                this.Error("无效文件名");
                this.Error($"服务器中未找到工程图文件,路径:{filePath}");
                return;
            }
            fileName = Path.Combine(PluginSetting.Instance.SwFilePath, fileName);
            if (!File.Exists(fileName))
            {
                this.Error($"服务器中未找到工程图文件,路径:{fileName}");
                return;
            }
            OpenDocMayError(fileName, (int)swDocumentTypes_e.swDocDRAWING, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly,
            OpenDocMayError(filePath, (int)swDocumentTypes_e.swDocDRAWING, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly,
                "");
        }
        private string GetRealFilePath(string dbPath)
        {
            string fileName = Path.GetFileName(dbPath);
            string filePath = Path.Combine(PluginSetting.Instance.SwFilePath, fileName);
            return filePath;
        }
        private void OpenDoc_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            DrawAudit da = btn.DataContext as DrawAudit;
            string fileName = Path.GetFileName(da.d3RelativePath);
            if (string.IsNullOrEmpty(fileName))
            string filePath = GetRealFilePath(da.d3RelativePath);
            if (!File.Exists(filePath))
            {
                this.Error("无效文件名");
                this.Error($"服务器中未找到图纸文件,路径:{filePath}");
                return;
            }
            fileName = Path.Combine(PluginSetting.Instance.SwFilePath, fileName);
            if (!File.Exists(fileName))
            {
                this.Error($"服务器中未找到工程图文件,路径:{fileName}");
                return;
            }
            OpenDocMayError(fileName, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly,
            OpenDocMayError(filePath, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly,
                 "");
        }
@@ -295,6 +343,23 @@
                {
                    try
                    {
                        string filePath = GetRealFilePath(da.d3RelativePath);
                        if (!File.Exists(filePath))
                        {
                            this.Error($"服务器中未找到图纸文件,路径:{filePath}");
                            return;
                        }
                        double[] massData = SwDMUtil.GetMassProperty(filePath, out string errMsg);
                        if (massData == null)
                        {
                            this.Error($"获取图纸一致性数据失败!{errMsg}");
                            return;
                        }
                        da.fileName = Path.GetFileName(filePath);
                        da.volume = NumberUtil.HandleMass(massData[3]);
                        da.surfaceArea = NumberUtil.HandleMass(massData[4]);
                        da.mass = NumberUtil.HandleMass(massData[5]);
                        da.pass = true;
                        Result<object> res = Client.PostSyncAction<object>(da, "drawAudit/complete");
                        object obj = res.HandleResult();
@@ -307,6 +372,7 @@
                    catch (Exception ex)
                    {
                        Logger.Error("Draw complete failed.", ex);
                        this.Error($"审核失败!{ex.Message}");
                    }
                    finally
                    {
PdmSwPlugin.Main/Constant/PluginConst.cs
@@ -3,6 +3,6 @@
    public class PluginConst
    {
        public static readonly string AppId = "DF23E96F-A469-4302-8367-7FA2F798CD09";
        public static readonly string Version = "0.0.0.34";
        public static readonly string Version = "0.0.0.36";
    }
}
PdmSwPlugin.PDM/Model/PdmControlModel.cs
@@ -13,6 +13,27 @@
{
    public partial class PdmControlModel : NotifyBase
    {
        private string _SelectedBomCount = "已选中 0 条";
        public string SelectedBomCount
        {
            get => _SelectedBomCount;
            set
            {
                RaiseAndSetIfChanged(ref _SelectedBomCount, value);
            }
        }
        private string _AllBomCount = "共 0 条";
        public string AllBomCount
        {
            get => _AllBomCount;
            set
            {
                RaiseAndSetIfChanged(ref _AllBomCount, value);
            }
        }
        public BomTreeReader bomTreeReader { get; private set; } = new BomTreeReader();
@@ -23,7 +44,17 @@
        public ObservableCollection<PdmBom> BomTree
        {
            get => _bomTree;
            set => RaiseAndSetIfChanged(ref _bomTree, value);
            set {
                RaiseAndSetIfChanged(ref _bomTree, value);
                int count = CacheList != null ? CacheList.Count : 0;
                AllBomCount = $"共 {count} 条";
                RefreshSelectedBomCount();
            }
        }
        public void RefreshSelectedBomCount() {
            int count = CacheList != null ? CacheList.Where(e=>e.selected).Count() : 0;
            SelectedBomCount = $"已选中 {count} 条";
        }
        public List<PdmBom> CacheList => bomTreeReader?.CacheList.ToList();
@@ -167,6 +198,7 @@
                    drawInfos.Add(partModel, drawInfo);
                }
                bom.drawInfo = drawInfo;
                bom.Init();
                ICollection<PdmBom> children = bom.modules;
                if (children != null && children.Count > 0)
PdmSwPlugin.PDM/PdmControl.xaml
@@ -111,6 +111,12 @@
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Gray"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsHistoryData}" Value="true">
                        <Setter Property="Text" Value="无需检查"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Gray"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
@@ -119,42 +125,6 @@
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="Background" Value="White"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding BomInfo.status}" Value="submitted">
                        <Setter Property="Text" Value="审核中"/>
                        <Setter Property="Background" Value="Orange"/>
                    </DataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding BomInfo.status}" Value="completed"/>
                            <Condition Binding="{Binding auditedMd5Changed}" Value="false"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Text" Value="已通过"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Green"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding BomInfo.status}" Value="completed"/>
                            <Condition Binding="{Binding auditedMd5Changed}" Value="true"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Text" Value="文档变更"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Blue"/>
                    </MultiDataTrigger>
                    <DataTrigger Binding="{Binding BomInfo.status}" Value="resubmitted">
                        <Setter Property="Text" Value="重新审核"/>
                        <Setter Property="Background" Value="Orange"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding BomInfo.status}" Value="rejected">
                        <Setter Property="Text" Value="未通过"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Red"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding produceWay}" Value="模组">
                        <Setter Property="Text" Value="无需审核"/>
                        <Setter Property="Foreground" Value="White"/>
@@ -165,6 +135,62 @@
                        <Setter Property="Text" Value="无需审核"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Gray"/>
                    </DataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding drawInfo.HistoryData}" Value="true"/>
                            <Condition Binding="{Binding localDocChanged}" Value="false"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Text" Value="无需审核"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Gray"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding drawInfo.HistoryData}" Value="true"/>
                            <Condition Binding="{Binding localDocChanged}" Value="true"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Text" Value="历史图纸变更"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Blue"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding BomInfo.status}" Value="completed"/>
                            <Condition Binding="{Binding localDocChanged}" Value="false"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Text" Value="已通过"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Green"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding BomInfo.status}" Value="completed"/>
                            <Condition Binding="{Binding localDocChanged}" Value="true"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Text" Value="文档变更"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Blue"/>
                    </MultiDataTrigger>
                    <DataTrigger Binding="{Binding BomInfo.status}" Value="submitted">
                        <Setter Property="Text" Value="审核中"/>
                        <Setter Property="Background" Value="Orange"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding BomInfo.status}" Value="resubmitted">
                        <Setter Property="Text" Value="重新审核"/>
                        <Setter Property="Background" Value="Orange"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding BomInfo.status}" Value="rejected">
                        <Setter Property="Text" Value="未通过"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Red"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
@@ -308,6 +334,7 @@
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox DataContext="{Binding Data}" 
                                          Checked="SingleCheckBox_Event" Unchecked="SingleCheckBox_Event"
                                          IsEnabled="{Binding checkBoxEnabled}"
                                          IsChecked="{Binding selected}"/>
                            </DataTemplate>
@@ -330,7 +357,7 @@
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox DataContext="{Binding Data}"
                                    IsChecked="{Binding inBom}"/>
                                    IsChecked="{Binding ExcludeFromBOM}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
@@ -394,7 +421,7 @@
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="审批状态" Width="60" IsReadOnly="True" pm:PermissionUtil.HasPermission="PDM:PLUGIN:CONTROL:PDM:RuleCheckAndApprove">
                    <DataGridTemplateColumn Header="审批状态" Width="80" IsReadOnly="True" pm:PermissionUtil.HasPermission="PDM:PLUGIN:CONTROL:PDM:RuleCheckAndApprove">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Style="{StaticResource drawStatusSlot}" DataContext="{Binding Data}"
@@ -411,11 +438,11 @@
            <StatusBar Grid.Row="2" >
                <StatusBarItem >
                    <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding ActiveDocPath}"/>
                    <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding SelectedBomCount}"/>
                </StatusBarItem>
                <Separator/>
                <StatusBarItem>
                    <TextBox x:Name="statusBarText" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding StatusBarText}"/>
                    <TextBox x:Name="statusBarText" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding AllBomCount}"/>
                </StatusBarItem>
            </StatusBar>
        </Grid>
PdmSwPlugin.PDM/PdmControl.xaml.cs
@@ -34,6 +34,7 @@
using static PdmSwPlugin.PDM.Event.PdmEvent;
using System.Windows.Interop;
using PdmSwPlugin.Commmon.Control;
using PdmSwPlugin.Common.Entity.System;
namespace PdmSwPlugin.PDM
{
@@ -856,6 +857,12 @@
            List<PdmBom> treeBoms = model.bomTreeReader.TreeList.ToList();
            if (treeBoms == null || treeBoms.Count <= 0) return;
            treeBoms[0].selected = cb.IsChecked.Value;
            model.RefreshSelectedBomCount();
        }
        private void SingleCheckBox_Event(object sender, RoutedEventArgs e)
        {
            model.RefreshSelectedBomCount();
        }
        /// <summary>
@@ -898,6 +905,11 @@
            return result;
        }
        /// <summary>
        /// 处理质量,保留6位小数
        /// </summary>
        /// <param name="number"></param>
        /// <returns></returns>
        public static string HandleMass(double number)
        {
            return Math.Round(number, 6).ToString("0.000000");
@@ -925,6 +937,7 @@
            allProperties["文件后缀"] = Path.GetExtension(filepath);
            // 文件路径
            allProperties["文件路径"] = filepath;
            allProperties["历史图纸"] = drawInfo.HistoryData.ToString();
            string drawFilePath = filepath.Replace(Path.GetExtension(filepath), ".slddrw");
            bool drawExists = File.Exists(drawFilePath);
            // 工程图一致性检查
@@ -988,6 +1001,10 @@
            return drawInfo;
        }
        /// <summary>
        /// 获取全部属性
        /// </summary>
        /// <param name="param"></param>
        public void GetAll(object param)
        {
            object[] datas = param as object[];
@@ -1055,14 +1072,16 @@
            Dictionary<string, DrawInfo> checkResult = result.HandleResult();
            foreach (string key in properties.Keys)
            {
                if (!checkResult[key].checkRuleOk)
                {
                    allSuccess = false;
                }
                properties[key].checkRuleResult = checkResult[key].checkRuleResult;
                properties[key].errMessages = checkResult[key].errMessages;
                var msgs = checkResult[key].errMessages;
                if (msgs != null && msgs.Count > 0)
                if (!properties[key].HistoryData && !checkResult[key].checkRuleOk)
                {
                    // 不是历史数据并且有未通过的,标记为false
                    allSuccess = false;
                }
                if (!properties[key].HistoryData && msgs != null && msgs.Count > 0)
                {
                    foreach (string msg in msgs)
                    {
@@ -1148,6 +1167,8 @@
            {
                try
                {
                    // 对所有的BOM做规则检查
                    bool allSuccess = DoCheckRule(out _);
                    // 先获取所有的BOM
                    HashSet<string> cache = new HashSet<string>();
                    // 然后筛选选中的BOM
@@ -1156,20 +1177,13 @@
                    {   // 如果没有选中的BOM,那就是所有BOM
                        boms = model.bomTreeReader.CacheList.ToList();
                    }
                    // 筛选有图纸的,未提交的,零件体加工件进行上传
                    // 筛选有图纸的,在物料明细中,未提交的,在物料明细表中的零件体加工件进行上传
                    boms = boms.Where(b =>
                    {
                        if (!cache.Contains(b.partModel))
                        {
                            cache.Add(b.partModel);
                            // 文档存在的
                            return b.lost != true
                            // && b.drawingType == (int)swDocumentTypes_e.swDocPART
                            // 是加工件的
                            && b.produceWay == "加工件"
                            // 未被提交的
                            && (b.drawStatus != "submitted" && b.drawStatus != "resubmitted")
                            && (b.drawStatus != "completed" || b.auditedMd5Changed);
                            return b.NeedAudit;
                        }
                        return false;
                    }).ToList();
@@ -1179,12 +1193,11 @@
                        this.Warning("只有未提交过或发生变更的加工件图纸可以进行审核");
                        return;
                    }
                    // 对所有的BOM做规则检查
                    bool allSuccess = DoCheckRule(out _);
                    if (!allSuccess)
                    {
                        // 如果有未通过的图纸,需要提示
                        var err = boms.Where(b => !b.checkRuleOk).ToList();
                        var err = boms.Where(b => !b.IsHistoryData && !b.checkRuleOk).ToList();
                        if (err != null && err.Count > 0)
                        {
                            List<string> msgs = new List<string>();
@@ -1192,6 +1205,7 @@
                            {
                                if (ee.drawInfo.errMessages == null)
                                {
                                    msgs.Add($"物料【{ee.partNo}】未通过规则检查!");
                                    continue;
                                }
                                foreach (string msg in ee.drawInfo.errMessages)
@@ -1207,18 +1221,28 @@
                            });
                            return;
                        }
                        // 不相关的规则检查不通过就无所谓了
                        /*int res = SwApp.SendMsgToUser2("有未通过规则检查的图纸,是否继续?", (int)swMessageBoxIcon_e.swMbWarning,
                            (int)swMessageBoxBtn_e.swMbOkCancel);
                        if (res == (int)swMessageBoxResult_e.swMbHitCancel)
                        {
                            return;
                        }*/
                    }
                    // 都通过了,再进行审批
                    // 先申请单号
                    DrawAuditOrder daOrder = new DrawAuditOrder
                    {
                        requestUserId = PdmUser.LoginUser.id,
                        requestUser = PdmUser.LoginUser.realname
                    };
                    try
                    {
                        Result<DrawAuditOrder> res = Client.PostSyncAction<DrawAuditOrder>(daOrder, "drawAudit/order/create");
                        daOrder = res.HandleResult();
                    }
                    catch (Exception ex)
                    {
                        Logger.Error($"请求审批单号失败", ex);
                        this.Error($"请求审批单号失败! {ex.Message}");
                        return;
                    }
                    ConcurrentQueue<string> errs = new ConcurrentQueue<string>();
                    CountdownEvent counter = new CountdownEvent(boms.Count);
                    foreach (PdmBom bom in boms)
@@ -1243,6 +1267,7 @@
                                MultipartFormDataContent httpContent = new MultipartFormDataContent();
                                httpContent.Add(new StringContent(bom.partNo), "materialCode");
                                httpContent.Add(new StringContent(bom.partNo), "materialModel");
                                httpContent.Add(new StringContent(daOrder.id), "orderId");
                                fileInfo = new FileInfo(d3FilePath);
                                FileInfo file2Info = new FileInfo(d2FilePath);
                                httpContent.Add(new ByteArrayContent(FileUtil.toByteArray(d3FilePath)), "d3File", fileInfo.Name);
@@ -1387,11 +1412,11 @@
                if (bom.checkRuleResult == 3)
                {
                    string title = string.Empty;
                    if (bom.historyData)
                    if (bom.IsHistoryData)
                    {
                        title = "历史图纸无需检查";
                    }
                    else if (bom.inBom)
                    else if (bom.ExcludeFromBOM)
                    {
                        title = "不在物料明细表中的物料无需检查";
                    }
@@ -1432,6 +1457,16 @@
                    if (bom.produceWay == "模组" || bom.produceWay == "标准件")
                    {
                        this.Info($"{bom.produceWay}无需审核");
                        return;
                    }
                    if (bom.IsHistoryData && !bom.localDocChanged)
                    {
                        this.Info("历史图纸无需审核");
                        return;
                    }
                    if (bom.IsHistoryData && bom.localDocChanged)
                    {
                        this.Info("历史图纸一致性变更,需审核");
                        return;
                    }
                    this.Warning("该图纸未审核");
@@ -1593,31 +1628,8 @@
                        RefreshBomList(SwApp.IActiveDoc2);
                        DoCheckRule(out _);
                        // 筛选所有在物料明细表中,不跳过检查并且检查未通过的,类型是加工件的未通过审核的,加工件审核通过的但图纸变更的
                        List<string> errs = model.bomTreeReader.CacheList.Where(b =>
                            !b.inBom
                            && (
                                (!b.skipCheck && !b.checkRuleOk)
                                || (b.produceWay == "加工件" && b.drawStatus != "completed")
                                || (b.produceWay == "加工件" && b.drawStatus == "completed" && b.auditedMd5Changed)
                            )
                        ).Select(b =>
                        {
                            string msg = $"【{b.partModel}】";
                            if (!b.skipCheck && !b.checkRuleOk)
                            {
                                msg += "未通过规则检查;";
                            }
                            if (b.produceWay == "加工件" && b.drawStatus != "completed")
                            {
                                msg += "未通过审核;";
                            }
                            if (b.produceWay == "加工件" && b.drawStatus == "completed" && b.auditedMd5Changed)
                            {
                                msg += "图纸变更后未重新审核";
                            }
                            return msg;
                        }
                        ).ToList();
                        List<string> errs = model.bomTreeReader.CacheList.Select(b => b.NeedStopCheckIn())
                        .Where(s => s != null).ToList();
                        if (errs != null && errs.Count > 0)
                        {
SetupScript/.vs/SetupScript.csproj.dtbcache.json
File was deleted
SetupScript/SetupScript.csproj
File was deleted