diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java index 4beae189..93790ebe 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java @@ -27,6 +27,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.*; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -1853,7 +1854,7 @@ public class QcServiceImpl implements QcService { List subDetailValues = data.getSubDetailValues(); // 删除子明细的老数据 qcMapper.delFAISubDetailedRecord(data); - if (subDetailValues.size() <= 0){ + if (subDetailValues.isEmpty()){ return null; } // 统计是否有不符合上下限得值 @@ -1864,25 +1865,30 @@ public class QcServiceImpl implements QcService { subDetailValues.get(i).setItemNo(data.getItemNo()); // 如果该项目维护了上下限且实测值类型为数值 if ("N".equals(data.getValueTypeDb())) { - // 实测值 - BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); - // 只维护上限 - if (data.getMaxValue() != null && data.getMinValue() == null) { - if (value.compareTo(data.getMaxValue()) > 0) { - count ++; + // 如果实际填入值为数值 + if (isNumberString(subDetailValues.get(i).getSubDetailValue())) { + // 实测值 + BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); + // 只维护上限 + if (data.getMaxValue() != null && data.getMinValue() == null) { + if (value.compareTo(data.getMaxValue()) > 0) { + count ++; + } } - } - // 只维护下限 - if (data.getMaxValue() == null && data.getMinValue() != null) { - if (value.compareTo(data.getMinValue()) < 0) { - count ++; + // 只维护下限 + if (data.getMaxValue() == null && data.getMinValue() != null) { + if (value.compareTo(data.getMinValue()) < 0) { + count ++; + } } - } - // 同时维护上下限 - if (data.getMaxValue() != null && data.getMinValue() != null) { - if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { - count ++; + // 同时维护上下限 + if (data.getMaxValue() != null && data.getMinValue() != null) { + if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { + count ++; + } } + } else { + count ++; } } } @@ -1891,6 +1897,17 @@ public class QcServiceImpl implements QcService { return count; } + /** + * 正则表达式判断是否是数字字符串(可判断正数,负数和小数) + * @param str + * @return + */ + public boolean isNumberString(String str) { + Pattern pattern = Pattern.compile("-?[0-9]+(\\.[0-9]+)?"); + return pattern.matcher(str).matches(); + } + + /** * @description: 查询FAI的子明细 * @author: fengyuan_yang @@ -2254,21 +2271,6 @@ public class QcServiceImpl implements QcService { @Override @Transactional public Integer saveFQCSubDetailed(QcSubDetailInformationData data) { -// List subDetailValues = data.getSubDetailValues(); -// // 删除子明细的老数据 -// qcMapper.delFQCSubDetailedRecord(data); -// if (subDetailValues.size() <= 0){ -// return; -// } -// for (int i = 0; i < subDetailValues.size(); i++) { -// subDetailValues.get(i).setSite(data.getSite()); -// subDetailValues.get(i).setInspectionNo(data.getInspectionNo()); -// subDetailValues.get(i).setItemNo(data.getItemNo()); -// } -// // 新增子明细新数据 -// qcMapper.saveFQCSubDetailed(subDetailValues); - - List subDetailValues = data.getSubDetailValues(); // 删除子明细的老数据 qcMapper.delFQCSubDetailedRecord(data); @@ -2283,25 +2285,29 @@ public class QcServiceImpl implements QcService { subDetailValues.get(i).setItemNo(data.getItemNo()); // 如果该项目维护了上下限且实测值类型为数值 if ("N".equals(data.getValueTypeDb())) { - // 实测值 - BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); - // 只维护上限 - if (data.getMaxValue() != null && data.getMinValue() == null) { - if (value.compareTo(data.getMaxValue()) > 0) { - count ++; + // 如果实际填入值为数值 + if (isNumberString(subDetailValues.get(i).getSubDetailValue())) { + BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); + // 只维护上限 + if (data.getMaxValue() != null && data.getMinValue() == null) { + if (value.compareTo(data.getMaxValue()) > 0) { + count ++; + } } - } - // 只维护下限 - if (data.getMaxValue() == null && data.getMinValue() != null) { - if (value.compareTo(data.getMinValue()) < 0) { - count ++; + // 只维护下限 + if (data.getMaxValue() == null && data.getMinValue() != null) { + if (value.compareTo(data.getMinValue()) < 0) { + count ++; + } } - } - // 同时维护上下限 - if (data.getMaxValue() != null && data.getMinValue() != null) { - if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { - count ++; + // 同时维护上下限 + if (data.getMaxValue() != null && data.getMinValue() != null) { + if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { + count ++; + } } + } else { + count ++; } } } @@ -2723,21 +2729,6 @@ public class QcServiceImpl implements QcService { @Override @Transactional public Integer saveIPQCSubDetailed(QcSubDetailInformationData data) { -// List subDetailValues = data.getSubDetailValues(); -// for (int i = 0; i < subDetailValues.size(); i++) { -// subDetailValues.get(i).setSite(data.getSite()); -// subDetailValues.get(i).setInspectionNo(data.getInspectionNo()); -// subDetailValues.get(i).setItemNo(data.getItemNo()); -// } -// // 删除子明细的老数据 -// qcMapper.delIPQCSubDetailedRecord(data); -// if (subDetailValues.size() <= 0){ -// return; -// } -// // 新增子明细新数据 -// qcMapper.saveIPQCSubDetailed(subDetailValues); - - List subDetailValues = data.getSubDetailValues(); // 删除子明细的老数据 qcMapper.delIPQCSubDetailedRecord(data); @@ -2752,26 +2743,31 @@ public class QcServiceImpl implements QcService { subDetailValues.get(i).setItemNo(data.getItemNo()); // 如果该项目维护了上下限且实测值类型为数值 if ("N".equals(data.getValueTypeDb())) { - // 实测值 - BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); - // 只维护上限 - if (data.getMaxValue() != null && data.getMinValue() == null) { - if (value.compareTo(data.getMaxValue()) > 0) { - count ++; + // 如果实际填入值为数值 + if (isNumberString(subDetailValues.get(i).getSubDetailValue())) { + BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); + // 只维护上限 + if (data.getMaxValue() != null && data.getMinValue() == null) { + if (value.compareTo(data.getMaxValue()) > 0) { + count ++; + } } - } - // 只维护下限 - if (data.getMaxValue() == null && data.getMinValue() != null) { - if (value.compareTo(data.getMinValue()) < 0) { - count ++; + // 只维护下限 + if (data.getMaxValue() == null && data.getMinValue() != null) { + if (value.compareTo(data.getMinValue()) < 0) { + count ++; + } } - } - // 同时维护上下限 - if (data.getMaxValue() != null && data.getMinValue() != null) { - if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { - count ++; + // 同时维护上下限 + if (data.getMaxValue() != null && data.getMinValue() != null) { + if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { + count ++; + } } + } else { + count ++; } + } } // 新增子明细新数据 @@ -3142,21 +3138,6 @@ public class QcServiceImpl implements QcService { @Override @Transactional public Integer saveIQCSubDetailed(QcSubDetailInformationData data) { -// List subDetailValues = data.getSubDetailValues(); -// // 删除子明细的老数据 -// qcMapper.delIQCSubDetailedRecord(data); -// if (subDetailValues.size() <= 0){ -// return; -// } -// for (int i = 0; i < subDetailValues.size(); i++) { -// subDetailValues.get(i).setSite(data.getSite()); -// subDetailValues.get(i).setInspectionNo(data.getInspectionNo()); -// subDetailValues.get(i).setItemNo(data.getItemNo()); -// } -// // 新增子明细新数据 -// qcMapper.saveIQCSubDetailed(subDetailValues); - - List subDetailValues = data.getSubDetailValues(); // 删除子明细的老数据 qcMapper.delIQCSubDetailedRecord(data); @@ -3171,25 +3152,29 @@ public class QcServiceImpl implements QcService { subDetailValues.get(i).setItemNo(data.getItemNo()); // 如果该项目维护了上下限且实测值类型为数值 if ("N".equals(data.getValueTypeDb())) { - // 实测值 - BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); - // 只维护上限 - if (data.getMaxValue() != null && data.getMinValue() == null) { - if (value.compareTo(data.getMaxValue()) > 0) { - count ++; + // 如果实际填入值为数值 + if (isNumberString(subDetailValues.get(i).getSubDetailValue())) { + BigDecimal value = new BigDecimal(subDetailValues.get(i).getSubDetailValue()); + // 只维护上限 + if (data.getMaxValue() != null && data.getMinValue() == null) { + if (value.compareTo(data.getMaxValue()) > 0) { + count ++; + } } - } - // 只维护下限 - if (data.getMaxValue() == null && data.getMinValue() != null) { - if (value.compareTo(data.getMinValue()) < 0) { - count ++; + // 只维护下限 + if (data.getMaxValue() == null && data.getMinValue() != null) { + if (value.compareTo(data.getMinValue()) < 0) { + count ++; + } } - } - // 同时维护上下限 - if (data.getMaxValue() != null && data.getMinValue() != null) { - if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { - count ++; + // 同时维护上下限 + if (data.getMaxValue() != null && data.getMinValue() != null) { + if (value.compareTo(data.getMaxValue()) > 0 || value.compareTo(data.getMinValue()) < 0) { + count ++; + } } + } else { + count ++; } } } @@ -3490,18 +3475,21 @@ public class QcServiceImpl implements QcService { if (itemDataList.isEmpty()) { // 明细中不存在该项目 errInfo2.add(j + 1); } else { + // 第二列 if (row.getCell(1) == null) { task.setSamplingLocation(null); } else { row.getCell(1).setCellType(CellType.STRING); task.setSamplingLocation(row.getCell(1).getStringCellValue()); } + // 第三列 if (row.getCell(2) == null) { task.setSamplingLocationB(null); } else { row.getCell(2).setCellType(CellType.STRING); task.setSamplingLocationB(row.getCell(2).getStringCellValue()); } + // 第四列 if (row.getCell(3) == null) { task.setSubDetailValue(null); } else { @@ -3513,37 +3501,33 @@ public class QcServiceImpl implements QcService { } // 如果该项目的实测值类型为数值 if ("N".equals(itemDataList.get(0).getValueTypeDb())) { - // 实测值 - BigDecimal value = new BigDecimal(task.getSubDetailValue()); - // 只维护上限 - if (itemDataList.get(0).getMaxValue() != null && itemDataList.get(0).getMinValue() == null) { - if (value.compareTo(itemDataList.get(0).getMaxValue()) > 0) { - // map中是否已存在该key - if (countMap.containsKey(task.getItemNo())) { // 有 + // 如果实际填入值为数值 + if (isNumberString(task.getSubDetailValue())) { + BigDecimal value = new BigDecimal(task.getSubDetailValue()); + // 只维护上限 + if (itemDataList.get(0).getMaxValue() != null && itemDataList.get(0).getMinValue() == null) { + if (value.compareTo(itemDataList.get(0).getMaxValue()) > 0) { Integer i = countMap.get(task.getItemNo()); countMap.put(task.getItemNo(), ++i); } } - } - // 只维护下限 - if (itemDataList.get(0).getMaxValue() == null && itemDataList.get(0).getMinValue() != null) { - if (value.compareTo(itemDataList.get(0).getMinValue()) < 0) { - // map中是否已存在该key - if (countMap.containsKey(task.getItemNo())) { // 有 + // 只维护下限 + if (itemDataList.get(0).getMaxValue() == null && itemDataList.get(0).getMinValue() != null) { + if (value.compareTo(itemDataList.get(0).getMinValue()) < 0) { Integer i = countMap.get(task.getItemNo()); countMap.put(task.getItemNo(), ++i); } } - } - // 同时维护上下限 - if (itemDataList.get(0).getMaxValue() != null && itemDataList.get(0).getMinValue() != null) { - if (value.compareTo(itemDataList.get(0).getMaxValue()) > 0 || value.compareTo(itemDataList.get(0).getMinValue()) < 0) { - // map中是否已存在该key - if (countMap.containsKey(task.getItemNo())) { // 有 + // 同时维护上下限 + if (itemDataList.get(0).getMaxValue() != null && itemDataList.get(0).getMinValue() != null) { + if (value.compareTo(itemDataList.get(0).getMaxValue()) > 0 || value.compareTo(itemDataList.get(0).getMinValue()) < 0) { Integer i = countMap.get(task.getItemNo()); countMap.put(task.getItemNo(), ++i); } } + } else { // 实际填入值不是数值,判断为不合格 + Integer i = countMap.get(task.getItemNo()); + countMap.put(task.getItemNo(), ++i); } } } @@ -3552,7 +3536,7 @@ public class QcServiceImpl implements QcService { } } // 查看错误信息 - if (errInfo1.size() > 0 || errInfo2.size() > 0) { + if (!errInfo1.isEmpty() || !errInfo2.isEmpty()) { throw new RuntimeException("请检查:导入模板中的第 " + errInfo1.toString() + " 行项目编码为空;请检查:导入模板中的第 " + errInfo2.toString() + " 行项目编码不在本次检验单中"); } // 新增子明细