Browse Source

2023-12-12 质量子明细导入判断

java8
fengyuan_yang 2 years ago
parent
commit
d2493e1cfa
  1. 244
      src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java

244
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> 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> 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> 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> 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> 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> 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> 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() + " 行项目编码不在本次检验单中");
}
// 新增子明细

Loading…
Cancel
Save