diff --git a/com.sq.customization/src/com/sq/customization/dialogs/AutoTransToolDialog.java b/com.sq.customization/src/com/sq/customization/dialogs/AutoTransToolDialog.java index 7bbe02b..05257ad 100644 --- a/com.sq.customization/src/com/sq/customization/dialogs/AutoTransToolDialog.java +++ b/com.sq.customization/src/com/sq/customization/dialogs/AutoTransToolDialog.java @@ -86,6 +86,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { private PropertyTextField FCCDEStext; private PropertyTextField dongtaitext; private PropertyTextField KCDStext; + private PropertyTextField operationTypetext; private JButton ok; private JButton cancel; @@ -178,26 +179,32 @@ public class AutoTransToolDialog extends AbstractAIFDialog { KCDStext.setRequired(true); northPane.add("6.2",KCDStext); + northPane.add("7.1.left",new JLabel("操作类型:")); + operationTypetext = new PropertyTextField(); + operationTypetext.setColumns(30); + operationTypetext.setRequired(true); + northPane.add("7.2",operationTypetext); - northPane.add("7.1.left",new JLabel("数据文件:")); + + northPane.add("8.1.left",new JLabel("数据文件:")); text = new PropertyTextField(); text.setColumns(30); text.setRequired(true); text.setEnabled(false); - northPane.add("7.2",text); + northPane.add("8.2",text); directory = new JButton("..."); - northPane.add("7.3",directory); + northPane.add("8.3",directory); - northPane.add("8.1.left",new JLabel("导出路径:")); + northPane.add("9.1.left",new JLabel("导出路径:")); dirtext = new PropertyTextField(); dirtext.setColumns(30); dirtext.setRequired(true); dirtext.setEnabled(false); - northPane.add("8.2",dirtext); + northPane.add("9.2",dirtext); directory2 = new JButton("..."); - northPane.add("8.3",directory2); + northPane.add("9.3",directory2); JPanel southpanel = new JPanel(new ButtonLayout()); ok = new JButton("确定"); @@ -262,6 +269,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String fccdescol = FCCDEStext.getText(); String dongtaicol = dongtaitext.getText(); String kcdscol = KCDStext.getText(); + String operationTypecol = operationTypetext.getText(); final File excel = new File(path); if(!excel.exists()) { @@ -361,7 +369,9 @@ public class AutoTransToolDialog extends AbstractAIFDialog { final File standardpartfile = cust_standardpart_excelfiles[0]; final File sleevefile = cust_sleeve_excelfiles[0]; if(isValidExcelColumn(idcol) && isValidExcelColumn(svppscol) && isValidExcelColumn(fcccol) - && isValidExcelColumn(fccdescol) && isValidExcelColumn(dongtaicol) && isValidExcelColumn(kcdscol)) { + && isValidExcelColumn(fccdescol) && isValidExcelColumn(dongtaicol) && isValidExcelColumn(kcdscol) + && isValidExcelColumn(operationTypecol) + ) { op_nodesignmap.clear(); no_load.clear(); DesignPartBeanMap.clear(); @@ -383,6 +393,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { final int fccdescol2 = columnToNumber(fccdescol.toUpperCase()); final int dongtaicol2 = columnToNumber(dongtaicol.toUpperCase()); final int kcdscol2 = columnToNumber(kcdscol.toUpperCase()); + final int operationTypecol2 = columnToNumber(operationTypecol.toUpperCase()); Thread thread = new Thread(){ public void run(){ ProgressCustomDialog.lbStatus.setText("正在创建 ...."); @@ -406,7 +417,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { headerRow.createCell(6).setCellValue("头部尺寸"); headerRow.createCell(7).setCellValue("工具组合"); headerRow.createCell(8).setCellValue("工具"); - headerRow.createCell(9).setCellValue("工具套筒"); + headerRow.createCell(9).setCellValue("套筒"); //读取自定义的表 readRuleExcel(excelfile); readElectricfile(electricfile,1); @@ -417,7 +428,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { readsleevefile(sleevefile,1); row_num = 1; //读取EXCEL - readExcel(excel,2,idcol2,svppscol2,fcccol2,fccdescol2,dongtaicol2,kcdscol2); + readExcel(excel,2,idcol2,svppscol2,fcccol2,fccdescol2,dongtaicol2,kcdscol2,operationTypecol2); //先处理选中对象层级有design的工序,获取没有design的工序 @@ -480,7 +491,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { } }; - ProgressCustomDialog.show(thread, "执行中", null, null, null); + ProgressCustomDialog.show(thread, "执行中", "执行结束", null, null); AutoTransToolDialog.this.dispose(); } @@ -594,12 +605,22 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String niuju = ""; String dongtai = bean.getDongtai(); if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// niuju = split[0]; +// } +// } + System.out.println("dongtai:"+dongtai); + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + System.out.println("使用正则表达式分隔符 NM, N.M, N·M(不区分大小写)"); + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length ==2) { niuju = split[0]; + System.out.println("BOM 扭矩:"+niuju); } - } + } } Cell svpps_cell = row.createCell(2); svpps_cell.setCellValue(bean.getSVPPS()); @@ -630,15 +651,24 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String rule_dongtai = rulebean.getDongtai(); if(rule_dongtai != null && rule_dongtai.length() > 0) { if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - niuju = split[0]; +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// niuju = split[0]; +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); if(!result) is_ok = false; } - } + } else { boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) @@ -736,288 +766,331 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String resourceType = rulebean.getResourceType(); System.out.println("匹配上电动工具,资源型号:"+resourceType); if(eleTool.containsKey(resourceType)) { + System.out.println("后续和套筒匹配"); List tools = eleTool.get(resourceType); for(ToolBean tool:tools) { String range = tool.getRange(); String outSize = tool.getOutSize(); - boolean isWithinRange = false; - if(range!= null && range.length() > 0 && niuju != null && niuju.length() > 0) { - range = range.replace("|", "-"); - String newrange = RangeCalculator.adjustRange(range); - - String newniuju = niuju; - if(bl_rev_object_name.contains("预紧")) { - newniuju = RangeAdjuster.adjustRange(niuju); - } - System.out.print("判断BOM表中扭矩是否符合:"+niuju+"新扭矩:"+newniuju+" 扭矩范围:"+range+" 新扭矩范围:"+newrange+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" "); - isWithinRange = RangChecker.isWithinRange(newniuju, newrange); - if(isWithinRange) { - System.out.println("新扭矩和新扭矩范围匹配"); - } - else { - System.out.println("新扭矩和新扭矩范围不匹配"); - } - } - else if((range == null || range.length() == 0) && (niuju == null || niuju.length() == 0)) { - System.out.print("判断BOM表中扭矩是否符合:"+niuju+" 扭矩范围:"+range+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" 匹配扭矩"); - isWithinRange = true; - } - if(isWithinRange) { - System.out.println("后续和套筒匹配"); - Tool.computeIfAbsent(resourceType, key2 -> new ArrayList<>()).add(tool); - } + + Tool.computeIfAbsent(resourceType, key2 -> new ArrayList<>()).add(tool); +// boolean isWithinRange = false; +// if(range!= null && range.length() > 0 && niuju != null && niuju.length() > 0) { +// range = range.replace("|", "-"); +// String newrange = RangeCalculator.adjustRange(range); +// +// String newniuju = niuju; +// if(bl_rev_object_name.contains("预紧")) { +// newniuju = RangeAdjuster.adjustRange(niuju); +// } +// System.out.print("判断BOM表中扭矩是否符合:"+niuju+"新扭矩:"+newniuju+" 扭矩范围:"+range+" 新扭矩范围:"+newrange+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" "); +// isWithinRange = RangChecker.isWithinRange(newniuju, newrange); +// if(isWithinRange) { +// System.out.println("新扭矩和新扭矩范围匹配"); +// } +// else { +// System.out.println("新扭矩和新扭矩范围不匹配"); +// } +// } +// else if((range == null || range.length() == 0) && (niuju == null || niuju.length() == 0)) { +// System.out.print("判断BOM表中扭矩是否符合:"+niuju+" 扭矩范围:"+range+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" 匹配扭矩"); +// isWithinRange = true; +// } +// if(isWithinRange) { +// System.out.println("后续和套筒匹配"); +// Tool.computeIfAbsent(resourceType, key2 -> new ArrayList<>()).add(tool); +// } + } } + else { + System.out.println("没有电动工具和套筒匹配"); + } } } } if(!autotoolrule) { - + Set commonKeys = null; Map resourcename = new HashMap<>(); - //拧紧性质规则 - //看读取哪个表 - Map Tightenexcelname = new HashMap<>(); - for(int i = 0; i< Tightenrules.size(); i++) { - CustRuleBean rulebean = Tightenrules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; - } + if(bl_rev_object_name.contains("预紧")) { + commonKeys= new HashSet<>(); + commonKeys.add("电池工具"); + resourcename.put("枪式电池枪", "枪式电池枪"); + } + else { - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; - } - String rule_dongtai = rulebean.getDongtai(); - if(rule_dongtai != null && rule_dongtai.length() > 0) { + //拧紧性质规则 + //看读取哪个表 + Map Tightenexcelname = new HashMap<>(); + for(int i = 0; i< Tightenrules.size(); i++) { + CustRuleBean rulebean = Tightenrules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } - if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_dongtai = rulebean.getDongtai(); + if(rule_dongtai != null && rule_dongtai.length() > 0) { + + if(dongtai.length() > 0) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + if(!result) + is_ok = false; + } + } + else { + boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) is_ok = false; } + + } else { - boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); - if(!result) - is_ok = false; + is_ok = false; } - - } - else { - is_ok = false; - } - } - if(is_ok) { - //获取资源名称 - String resourceType = rulebean.getResourceType(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(Tightenexcelname.containsKey(re)) { -// - } - else { - Tightenexcelname.put(re, 1); + if(is_ok) { + //获取资源名称 + String resourceType = rulebean.getResourceType(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(Tightenexcelname.containsKey(re)) { +// + } + else { + Tightenexcelname.put(re, 1); + } + } - } + System.out.println("拧紧性质规则匹配"+resourceType); + break; } - System.out.println("拧紧性质规则匹配"+resourceType); - break; } - } - //KCDS - //看读取哪个表 - Map KCDSexcelname = new HashMap<>(); - for(int i = 0; i< KCDSrules.size(); i++) { - CustRuleBean rulebean = KCDSrules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; - } - - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; - } - String rule_KCDS = rulebean.getKCDS(); - if(rule_KCDS != null && rule_KCDS.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_KCDS, bean.getKCDS()); - if(!result) - is_ok = false; - } - if(is_ok) { - //获取资源类型 - String resourceType = rulebean.getResourceType(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(KCDSexcelname.containsKey(re)) { - } - else { - KCDSexcelname.put(re, 1); + //KCDS + //看读取哪个表 + Map KCDSexcelname = new HashMap<>(); + for(int i = 0; i< KCDSrules.size(); i++) { + CustRuleBean rulebean = KCDSrules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } + + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_KCDS = rulebean.getKCDS(); + if(rule_KCDS != null && rule_KCDS.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_KCDS, bean.getKCDS()); + if(!result) + is_ok = false; + } + if(is_ok) { + //获取资源类型 + String resourceType = rulebean.getResourceType(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(KCDSexcelname.containsKey(re)) { + } + else { + KCDSexcelname.put(re, 1); + } + } - } + System.out.println("KCDS匹配"+resourceType); + break; } - System.out.println("KCDS匹配"+resourceType); - break; - } - } - //拧紧方式 - Map TightenMethodexcelname = new HashMap<>(); - for(int i = 0; i< TightenMethodrules.size(); i++) { - CustRuleBean rulebean = TightenMethodrules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; - } - - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; } - String rule_dongtai = rulebean.getDongtai(); - if(rule_dongtai != null && rule_dongtai.length() > 0) { - if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + //拧紧方式 + Map TightenMethodexcelname = new HashMap<>(); + for(int i = 0; i< TightenMethodrules.size(); i++) { + CustRuleBean rulebean = TightenMethodrules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } + + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_dongtai = rulebean.getDongtai(); + if(rule_dongtai != null && rule_dongtai.length() > 0) { + if(dongtai.length() > 0) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + if(!result) + is_ok = false; + } + } + else { + boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) is_ok = false; } + + } else { - boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); - if(!result) - is_ok = false; + is_ok = false; } - - } - else { - is_ok = false; - } - } - if(is_ok) { - //获取资源类型 - String resourceType = rulebean.getResourceType(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(TightenMethodexcelname.containsKey(re)) { - } - else { - TightenMethodexcelname.put(re, 1); + if(is_ok) { + //获取资源类型 + String resourceType = rulebean.getResourceType(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(TightenMethodexcelname.containsKey(re)) { + } + else { + TightenMethodexcelname.put(re, 1); + } + } - } + System.out.println("拧紧方式匹配"+resourceType); + break; } - System.out.println("拧紧方式匹配"+resourceType); - break; - } - } - //扭矩值 - Map Torqueexcelname = new HashMap<>(); - for(int i = 0; i< Torquerules.size(); i++) { - CustRuleBean rulebean = Torquerules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; } - - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; - } - String rule_dongtai = rulebean.getDongtai(); - if(rule_dongtai != null && rule_dongtai.length() > 0) { - if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + //扭矩值 + Map Torqueexcelname = new HashMap<>(); + for(int i = 0; i< Torquerules.size(); i++) { + CustRuleBean rulebean = Torquerules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } + + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_dongtai = rulebean.getDongtai(); + if(rule_dongtai != null && rule_dongtai.length() > 0) { + if(dongtai.length() > 0) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + if(!result) + is_ok = false; + } + } + else { + boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) is_ok = false; } + + } else { - boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); - if(!result) - is_ok = false; + is_ok = false; } - - - } - else { - is_ok = false; } - } - if(is_ok) { - //获取资源类型 - String resourceType = rulebean.getResourceType(); - String resourceName = rulebean.getResourceName(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(Torqueexcelname.containsKey(re)) { - } - else { - Torqueexcelname.put(re, 1); + if(is_ok) { + //获取资源类型 + String resourceType = rulebean.getResourceType(); + String resourceName = rulebean.getResourceName(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(Torqueexcelname.containsKey(re)) { + } + else { + Torqueexcelname.put(re, 1); + } } } - } - if(resourceName != null && resourceName.length() > 0) { - String[] res = resourceName.split("\\|", -1); - for(String re:res) { - if(resourcename.containsKey(re)) { + if(resourceName != null && resourceName.length() > 0) { + String[] res = resourceName.split("\\|", -1); + for(String re:res) { + if(resourcename.containsKey(re)) { + + } + else { + resourcename.put(re, re); + } } - else { - resourcename.put(re, re); - } - } + System.out.println("扭矩值匹配"+resourceType); + break; } - System.out.println("扭矩值匹配"+resourceType); - break; } + // 将所有 Map 放入一个列表 +// List> maps = Arrays.asList(Tightenexcelname, KCDSexcelname, TightenMethodexcelname, Torqueexcelname); + commonKeys = new HashSet<>(Tightenexcelname.keySet()); + + // 保留 map2、map3、map4 中也有的键 + commonKeys.retainAll(KCDSexcelname.keySet()); + commonKeys.retainAll(TightenMethodexcelname.keySet()); + commonKeys.retainAll(Torqueexcelname.keySet()); } - // 将所有 Map 放入一个列表 -// List> maps = Arrays.asList(Tightenexcelname, KCDSexcelname, TightenMethodexcelname, Torqueexcelname); - Set commonKeys = new HashSet<>(Tightenexcelname.keySet()); - - // 保留 map2、map3、map4 中也有的键 - commonKeys.retainAll(KCDSexcelname.keySet()); - commonKeys.retainAll(TightenMethodexcelname.keySet()); - commonKeys.retainAll(Torqueexcelname.keySet()); + System.out.println("四个 Map 都有的 key: " + commonKeys); //读取工具excel数据 for(String name:commonKeys) { @@ -1195,6 +1268,8 @@ public class AutoTransToolDialog extends AbstractAIFDialog { if(SleeveMap.containsKey(key2)) { System.out.println("找到匹配"); Cell all_cell = row.createCell(7); + Cell tool_cell = row.createCell(8); + Cell tong_cell = row.createCell(9); String all = ""; List SleeveBeans = SleeveMap.get(key2); for(SleeveBean sleevebean:SleeveBeans) { @@ -1219,6 +1294,8 @@ public class AutoTransToolDialog extends AbstractAIFDialog { System.out.println("工具匹配上套筒,工具的输出尺寸:"+outsize+" 套筒输入尺寸:"+inputsize+" 长度:"+length +" 资源类型:"+resourceType); has = true; all = all+resourcetype+"+"+resourceType; + tool_cell.setCellValue(resourcetype); + tong_cell.setCellValue(resourceType); break; } } @@ -1226,6 +1303,8 @@ public class AutoTransToolDialog extends AbstractAIFDialog { System.out.println("工具匹配上套筒,工具的输出尺寸:"+outsize+" 套筒输入尺寸:"+inputsize+" 长度:"+length +" 资源类型:"+resourceType); all = all+resourcetype+"+"+resourceType; + tool_cell.setCellValue(resourcetype); + tong_cell.setCellValue(resourceType); has = true; break; } @@ -1495,12 +1574,22 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String niuju = ""; String dongtai = bean.getDongtai(); if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// niuju = split[0]; +// } +// } + System.out.println("dongtai:"+dongtai); + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + System.out.println("使用正则表达式分隔符 NM, N.M, N·M(不区分大小写)"); + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { niuju = split[0]; + System.out.println("BOM 扭矩:"+niuju); } - } + } } Cell svpps_cell = row.createCell(2); svpps_cell.setCellValue(bean.getSVPPS()); @@ -1531,15 +1620,24 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String rule_dongtai = rulebean.getDongtai(); if(rule_dongtai != null && rule_dongtai.length() > 0) { if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - niuju = split[0]; +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// niuju = split[0]; +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); if(!result) is_ok = false; } - } + } else { boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) @@ -1637,288 +1735,331 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String resourceType = rulebean.getResourceType(); System.out.println("匹配上电动工具,资源型号:"+resourceType); if(eleTool.containsKey(resourceType)) { + System.out.println("后续和套筒匹配"); List tools = eleTool.get(resourceType); for(ToolBean tool:tools) { String range = tool.getRange(); String outSize = tool.getOutSize(); - boolean isWithinRange = false; - if(range!= null && range.length() > 0 && niuju != null && niuju.length() > 0) { - range = range.replace("|", "-"); - String newrange = RangeCalculator.adjustRange(range); - - String newniuju = niuju; - if(bl_rev_object_name.contains("预紧")) { - newniuju = RangeAdjuster.adjustRange(niuju); - } - System.out.print("判断BOM表中扭矩是否符合:"+niuju+"新扭矩:"+newniuju+" 扭矩范围:"+range+" 新扭矩范围:"+newrange+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" "); - isWithinRange = RangChecker.isWithinRange(newniuju, newrange); - if(isWithinRange) { - System.out.println("新扭矩和新扭矩范围匹配"); - } - else { - System.out.println("新扭矩和新扭矩范围不匹配"); - } - } - else if((range == null || range.length() == 0) && (niuju == null || niuju.length() == 0)) { - System.out.print("判断BOM表中扭矩是否符合:"+niuju+" 扭矩范围:"+range+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" 匹配扭矩"); - isWithinRange = true; - } - if(isWithinRange) { - System.out.println("后续和套筒匹配"); - Tool.computeIfAbsent(resourceType, key2 -> new ArrayList<>()).add(tool); - } + + Tool.computeIfAbsent(resourceType, key2 -> new ArrayList<>()).add(tool); +// boolean isWithinRange = false; +// if(range!= null && range.length() > 0 && niuju != null && niuju.length() > 0) { +// range = range.replace("|", "-"); +// String newrange = RangeCalculator.adjustRange(range); +// +// String newniuju = niuju; +// if(bl_rev_object_name.contains("预紧")) { +// newniuju = RangeAdjuster.adjustRange(niuju); +// } +// System.out.print("判断BOM表中扭矩是否符合:"+niuju+"新扭矩:"+newniuju+" 扭矩范围:"+range+" 新扭矩范围:"+newrange+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" "); +// isWithinRange = RangChecker.isWithinRange(newniuju, newrange); +// if(isWithinRange) { +// System.out.println("新扭矩和新扭矩范围匹配"); +// } +// else { +// System.out.println("新扭矩和新扭矩范围不匹配"); +// } +// } +// else if((range == null || range.length() == 0) && (niuju == null || niuju.length() == 0)) { +// System.out.print("判断BOM表中扭矩是否符合:"+niuju+" 扭矩范围:"+range+" 资源型号:"+resourceType+" 输出尺寸:"+outSize+" 匹配扭矩"); +// isWithinRange = true; +// } +// if(isWithinRange) { +// System.out.println("后续和套筒匹配"); +// Tool.computeIfAbsent(resourceType, key2 -> new ArrayList<>()).add(tool); +// } + } } + else { + System.out.println("没有电动工具和套筒匹配"); + } } } } if(!autotoolrule) { - + Set commonKeys = null; Map resourcename = new HashMap<>(); - //拧紧性质规则 - //看读取哪个表 - Map Tightenexcelname = new HashMap<>(); - for(int i = 0; i< Tightenrules.size(); i++) { - CustRuleBean rulebean = Tightenrules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; - } + if(bl_rev_object_name.contains("预紧")) { + commonKeys= new HashSet<>(); + commonKeys.add("电池工具"); + resourcename.put("枪式电池枪", "枪式电池枪"); + } + else { - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; - } - String rule_dongtai = rulebean.getDongtai(); - if(rule_dongtai != null && rule_dongtai.length() > 0) { + //拧紧性质规则 + //看读取哪个表 + Map Tightenexcelname = new HashMap<>(); + for(int i = 0; i< Tightenrules.size(); i++) { + CustRuleBean rulebean = Tightenrules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } - if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_dongtai = rulebean.getDongtai(); + if(rule_dongtai != null && rule_dongtai.length() > 0) { + + if(dongtai.length() > 0) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + if(!result) + is_ok = false; + } + } + else { + boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) is_ok = false; } + + } else { - boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); - if(!result) - is_ok = false; + is_ok = false; } - - - } - else { - is_ok = false; } - } - if(is_ok) { - //获取资源名称 - String resourceType = rulebean.getResourceType(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(Tightenexcelname.containsKey(re)) { -// - } - else { - Tightenexcelname.put(re, 1); + if(is_ok) { + //获取资源名称 + String resourceType = rulebean.getResourceType(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(Tightenexcelname.containsKey(re)) { +// + } + else { + Tightenexcelname.put(re, 1); + } + } - } + System.out.println("拧紧性质规则匹配"+resourceType); + break; } - System.out.println("拧紧性质规则匹配"+resourceType); - break; - } - } - //KCDS - //看读取哪个表 - Map KCDSexcelname = new HashMap<>(); - for(int i = 0; i< KCDSrules.size(); i++) { - CustRuleBean rulebean = KCDSrules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; - } - - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; } - String rule_KCDS = rulebean.getKCDS(); - if(rule_KCDS != null && rule_KCDS.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_KCDS, bean.getKCDS()); - if(!result) - is_ok = false; - } - if(is_ok) { - //获取资源类型 - String resourceType = rulebean.getResourceType(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(KCDSexcelname.containsKey(re)) { - } - else { - KCDSexcelname.put(re, 1); + //KCDS + //看读取哪个表 + Map KCDSexcelname = new HashMap<>(); + for(int i = 0; i< KCDSrules.size(); i++) { + CustRuleBean rulebean = KCDSrules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } + + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_KCDS = rulebean.getKCDS(); + if(rule_KCDS != null && rule_KCDS.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_KCDS, bean.getKCDS()); + if(!result) + is_ok = false; + } + if(is_ok) { + //获取资源类型 + String resourceType = rulebean.getResourceType(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(KCDSexcelname.containsKey(re)) { + } + else { + KCDSexcelname.put(re, 1); + } + } - } + System.out.println("KCDS匹配"+resourceType); + break; } - System.out.println("KCDS匹配"+resourceType); - break; - } - } - //拧紧方式 - Map TightenMethodexcelname = new HashMap<>(); - for(int i = 0; i< TightenMethodrules.size(); i++) { - CustRuleBean rulebean = TightenMethodrules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; - } - - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; } - String rule_dongtai = rulebean.getDongtai(); - if(rule_dongtai != null && rule_dongtai.length() > 0) { - if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + //拧紧方式 + Map TightenMethodexcelname = new HashMap<>(); + for(int i = 0; i< TightenMethodrules.size(); i++) { + CustRuleBean rulebean = TightenMethodrules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } + + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_dongtai = rulebean.getDongtai(); + if(rule_dongtai != null && rule_dongtai.length() > 0) { + if(dongtai.length() > 0) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + if(!result) + is_ok = false; + } + } + else { + boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) is_ok = false; } + + } else { - boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); - if(!result) - is_ok = false; + is_ok = false; } - - } - else { - is_ok = false; - } - } - if(is_ok) { - //获取资源类型 - String resourceType = rulebean.getResourceType(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(TightenMethodexcelname.containsKey(re)) { - } - else { - TightenMethodexcelname.put(re, 1); + if(is_ok) { + //获取资源类型 + String resourceType = rulebean.getResourceType(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(TightenMethodexcelname.containsKey(re)) { + } + else { + TightenMethodexcelname.put(re, 1); + } + } - } + System.out.println("拧紧方式匹配"+resourceType); + break; } - System.out.println("拧紧方式匹配"+resourceType); - break; - } - } - //扭矩值 - Map Torqueexcelname = new HashMap<>(); - for(int i = 0; i< Torquerules.size(); i++) { - CustRuleBean rulebean = Torquerules.get(i); - String rule_svpps = rulebean.getSVPPS(); - boolean is_ok = true; - if(rule_svpps != null && rule_svpps.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); - if(!result) - is_ok = false; } - - String rule_FCCDESC = rulebean.getFCCDES(); - if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { - boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); - if(!result) - is_ok = false; - } - String rule_dongtai = rulebean.getDongtai(); - if(rule_dongtai != null && rule_dongtai.length() > 0) { - if(dongtai.length() > 0) { - if(dongtai.contains("N.M")) { - String[] split = dongtai.split("N.M", -1); - if(split!= null && split.length == 2) { - boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + //扭矩值 + Map Torqueexcelname = new HashMap<>(); + for(int i = 0; i< Torquerules.size(); i++) { + CustRuleBean rulebean = Torquerules.get(i); + String rule_svpps = rulebean.getSVPPS(); + boolean is_ok = true; + if(rule_svpps != null && rule_svpps.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_svpps, bean.getSVPPS()); + if(!result) + is_ok = false; + } + + String rule_FCCDESC = rulebean.getFCCDES(); + if(rule_FCCDESC != null && rule_FCCDESC.length() > 0) { + boolean result = StringConditionChecker.checkCondition(rule_FCCDESC, bl_rev_object_name); + if(!result) + is_ok = false; + } + String rule_dongtai = rulebean.getDongtai(); + if(rule_dongtai != null && rule_dongtai.length() > 0) { + if(dongtai.length() > 0) { +// if(dongtai.contains("N.M")) { +// String[] split = dongtai.split("N.M", -1); +// if(split!= null && split.length == 2) { +// boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); +// if(!result) +// is_ok = false; +// } +// } + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + boolean result = ConditionChecker.checkCondition(rule_dongtai, split[1], split[0]); + if(!result) + is_ok = false; + } + } + else { + boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); if(!result) is_ok = false; } + + } else { - boolean result = ConditionChecker.checkCondition(rule_dongtai, dongtai,""); - if(!result) - is_ok = false; + is_ok = false; } - - - } - else { - is_ok = false; } - } - if(is_ok) { - //获取资源类型 - String resourceType = rulebean.getResourceType(); - String resourceName = rulebean.getResourceName(); - if(resourceType != null && resourceType.length() > 0) { - String[] res = resourceType.split("\\|", -1); - for(String re:res) { - if(Torqueexcelname.containsKey(re)) { - } - else { - Torqueexcelname.put(re, 1); + if(is_ok) { + //获取资源类型 + String resourceType = rulebean.getResourceType(); + String resourceName = rulebean.getResourceName(); + if(resourceType != null && resourceType.length() > 0) { + String[] res = resourceType.split("\\|", -1); + for(String re:res) { + if(Torqueexcelname.containsKey(re)) { + } + else { + Torqueexcelname.put(re, 1); + } } } - } - if(resourceName != null && resourceName.length() > 0) { - String[] res = resourceName.split("\\|", -1); - for(String re:res) { - if(resourcename.containsKey(re)) { + if(resourceName != null && resourceName.length() > 0) { + String[] res = resourceName.split("\\|", -1); + for(String re:res) { + if(resourcename.containsKey(re)) { + + } + else { + resourcename.put(re, re); + } } - else { - resourcename.put(re, re); - } - } + System.out.println("扭矩值匹配"+resourceType); + break; } - System.out.println("扭矩值匹配"+resourceType); - break; } + // 将所有 Map 放入一个列表 +// List> maps = Arrays.asList(Tightenexcelname, KCDSexcelname, TightenMethodexcelname, Torqueexcelname); + commonKeys = new HashSet<>(Tightenexcelname.keySet()); + + // 保留 map2、map3、map4 中也有的键 + commonKeys.retainAll(KCDSexcelname.keySet()); + commonKeys.retainAll(TightenMethodexcelname.keySet()); + commonKeys.retainAll(Torqueexcelname.keySet()); } - // 将所有 Map 放入一个列表 -// List> maps = Arrays.asList(Tightenexcelname, KCDSexcelname, TightenMethodexcelname, Torqueexcelname); - Set commonKeys = new HashSet<>(Tightenexcelname.keySet()); - - // 保留 map2、map3、map4 中也有的键 - commonKeys.retainAll(KCDSexcelname.keySet()); - commonKeys.retainAll(TightenMethodexcelname.keySet()); - commonKeys.retainAll(Torqueexcelname.keySet()); + System.out.println("四个 Map 都有的 key: " + commonKeys); //读取工具excel数据 for(String name:commonKeys) { @@ -2096,6 +2237,8 @@ public class AutoTransToolDialog extends AbstractAIFDialog { if(SleeveMap.containsKey(key2)) { System.out.println("找到匹配"); Cell all_cell = row.createCell(7); + Cell tool_cell = row.createCell(8); + Cell tong_cell = row.createCell(9); String all = ""; List SleeveBeans = SleeveMap.get(key2); for(SleeveBean sleevebean:SleeveBeans) { @@ -2120,6 +2263,8 @@ public class AutoTransToolDialog extends AbstractAIFDialog { System.out.println("工具匹配上套筒,工具的输出尺寸:"+outsize+" 套筒输入尺寸:"+inputsize+" 长度:"+length +" 资源类型:"+resourceType); has = true; all = all+resourcetype+"+"+resourceType; + tool_cell.setCellValue(resourcetype); + tong_cell.setCellValue(resourceType); break; } } @@ -2127,6 +2272,8 @@ public class AutoTransToolDialog extends AbstractAIFDialog { System.out.println("工具匹配上套筒,工具的输出尺寸:"+outsize+" 套筒输入尺寸:"+inputsize+" 长度:"+length +" 资源类型:"+resourceType); all = all+resourcetype+"+"+resourceType; + tool_cell.setCellValue(resourcetype); + tong_cell.setCellValue(resourceType); has = true; break; } @@ -2371,7 +2518,7 @@ public class AutoTransToolDialog extends AbstractAIFDialog { // } // } private void readExcel(File excelfile,int start_rownum,int idcol2,int svppscol2,int fcccol2 - ,int fccdescol2,int dongtaicol,int kcdscol2) { + ,int fccdescol2,int dongtaicol,int kcdscol2,int operationTypecol2) { // 自定义监听器 AnalysisEventListener> listener = new AnalysisEventListener>() { @@ -2383,13 +2530,16 @@ public class AutoTransToolDialog extends AbstractAIFDialog { String fccdes = rowData.get(fccdescol2-1) != null ? rowData.get(fccdescol2-1) : ""; String kcds = rowData.get(kcdscol2-1) != null ? rowData.get(kcdscol2-1) : ""; String svpps = rowData.get(svppscol2-1) != null ? rowData.get(svppscol2-1) : ""; - + String operationType = rowData.get(operationTypecol2-1) != null ? rowData.get(operationTypecol2-1) : ""; String key = id; - if (!DesignPartBeanMap.containsKey(key)) { + if (!"D".equalsIgnoreCase(operationType.trim()) && !DesignPartBeanMap.containsKey(key)) { DesignPartBean bean = new DesignPartBean(); // 设置值,确保不会为 null bean.setDongtai(dongtai); bean.setFCC(fcc); + if(fccdes.contains("-")) { + fccdes = fccdes.substring(fccdes.indexOf("-")+1); + } bean.setFCCDES(fccdes); bean.setKCDS(kcds); bean.setSVPPS(svpps); diff --git a/com.sq.customization/src/com/sq/customization/util/ConditionChecker.java b/com.sq.customization/src/com/sq/customization/util/ConditionChecker.java index 25e20ae..728cbbf 100644 --- a/com.sq.customization/src/com/sq/customization/util/ConditionChecker.java +++ b/com.sq.customization/src/com/sq/customization/util/ConditionChecker.java @@ -97,9 +97,11 @@ public class ConditionChecker { double end = Double.parseDouble(parts[1].trim()); return new double[]{start, end}; } else if (range.contains("±")) { + String[] parts = range.split("±"); double center = Double.parseDouble(parts[0].trim()); - double delta = Double.parseDouble(parts[1].trim()); +// double delta = Double.parseDouble(parts[1].trim()); + double delta = 0; return new double[]{center - delta, center + delta}; } } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { diff --git a/com.sq.customization/src/com/sq/customization/util/RangeAdjuster.java b/com.sq.customization/src/com/sq/customization/util/RangeAdjuster.java index f2ab5f0..a83287e 100644 --- a/com.sq.customization/src/com/sq/customization/util/RangeAdjuster.java +++ b/com.sq.customization/src/com/sq/customization/util/RangeAdjuster.java @@ -1,5 +1,14 @@ package com.sq.customization.util; +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.sq.customization.bean.DesignPartBean; + public class RangeAdjuster { public static String adjustRange(String range) { if (range == null || range.trim().isEmpty()) { @@ -75,12 +84,61 @@ public class RangeAdjuster { return range; // 不支持的格式,返回原字符串 } } + private static void readExcel(File excelfile,int start_rownum,int idcol2,int dongtaicol) { + + // 自定义监听器 + AnalysisEventListener> listener = new AnalysisEventListener>() { + @Override + public void invoke(Map rowData, AnalysisContext context) { + String id = rowData.get(idcol2-1) != null ? rowData.get(idcol2-1) : ""; + String dongtai = rowData.get(dongtaicol-1) != null ? rowData.get(dongtaicol-1) : ""; + String key = id; + System.out.println(id+dongtai); + if (!DesignPartBeanMap.containsKey(key)) { + DesignPartBean bean = new DesignPartBean(); + // 设置值,确保不会为 null + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + System.out.println(dongtai); + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + System.out.println(split.length); + } + DesignPartBeanMap.put(key, bean); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + System.out.println("读取完成,共 " + DesignPartBeanMap.size() + " 行数据"); + } + }; + // 执行读取 + EasyExcel.read(excelfile, listener) + .sheet(0) // 指定 sheet 索引 + .headRowNumber(start_rownum) // 从第0行开始读取(包含标题行则设为1) + .doRead(); + } + private static Map DesignPartBeanMap = new HashMap<>(); public static void main(String[] args) { // 测试用例 - String[] tests = {"3±1", "1-4", "1-", "-4", ""}; - for (String test : tests) { - System.out.println("Input: " + test + " -> Output: " + adjustRange(test)); +// String[] tests = {"3±1", "1-4", "1-", "-4", ""}; +// for (String test : tests) { +// System.out.println("Input: " + test + " -> Output: " + adjustRange(test)); +// } + DesignPartBeanMap.clear(); + File file = new File("C:\\Users\\Administrator\\Desktop\\123.xlsx"); + readExcel(file,2,13,682); +// for(String id:DesignPartBeanMap.keySet()) { +// +// } + String dongtai = "123±1N.M"; + if (dongtai.matches(".*(?i)(NM|N.M|N·M).*")) { + // 使用正则表达式分隔符 NM, N.M, N·M(不区分大小写) + String[] split = dongtai.split("(?i)NM|N.M|N·M",-1); + if(split!= null && split.length == 2) { + System.out.println(split[0]); + } } } }