parent
5eff7ea7b9
commit
7e5de36bd0
|
|
@ -84,7 +84,11 @@ public class QmsPdiComponentBindingControllerService {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (QmsPdiComponentBindingSaveQO.ComponentBindingQO component : item.getComponents()) {
|
for (QmsPdiComponentBindingSaveQO.ComponentBindingQO component : item.getComponents()) {
|
||||||
List<QmsPdiComponentAnagement> matchedComponents = componentMap.get(component.getComponentName());
|
String componentName = appendNewlineIfMixedChineseEnglishEndsWithEnglish(component.getComponentName());
|
||||||
|
List<QmsPdiComponentAnagement> matchedComponents = componentMap.get(componentName);
|
||||||
|
if (CollectionUtil.isEmpty(matchedComponents)) {
|
||||||
|
matchedComponents = componentMap.get(component.getComponentName());
|
||||||
|
}
|
||||||
if (CollectionUtil.isEmpty(matchedComponents)) {
|
if (CollectionUtil.isEmpty(matchedComponents)) {
|
||||||
throw new NflgException(STATE.BusinessError, "部件名称不存在:" + component.getComponentName());
|
throw new NflgException(STATE.BusinessError, "部件名称不存在:" + component.getComponentName());
|
||||||
}
|
}
|
||||||
|
|
@ -190,7 +194,7 @@ public class QmsPdiComponentBindingControllerService {
|
||||||
|
|
||||||
Map<String, Integer> sortMap = new LinkedHashMap<>();
|
Map<String, Integer> sortMap = new LinkedHashMap<>();
|
||||||
for (QmsPdiComponentAnagement component : components) {
|
for (QmsPdiComponentAnagement component : components) {
|
||||||
String componentName = component.getComponentName();
|
String componentName = appendNewlineIfMixedChineseEnglishEndsWithEnglish(component.getComponentName());
|
||||||
Integer currentSort = sortMap.get(componentName);
|
Integer currentSort = sortMap.get(componentName);
|
||||||
if (!sortMap.containsKey(componentName)
|
if (!sortMap.containsKey(componentName)
|
||||||
|| currentSort == null
|
|| currentSort == null
|
||||||
|
|
@ -260,13 +264,26 @@ public class QmsPdiComponentBindingControllerService {
|
||||||
if (CollectionUtil.isEmpty(componentIds)) {
|
if (CollectionUtil.isEmpty(componentIds)) {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
return componentService.lambdaQuery()
|
Set<String> queryNames = componentNames.stream()
|
||||||
|
.filter(StrUtil::isNotBlank)
|
||||||
|
.flatMap(componentName -> List.of(
|
||||||
|
componentName,
|
||||||
|
appendNewlineIfMixedChineseEnglishEndsWithEnglish(componentName)
|
||||||
|
).stream())
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
Map<String, List<QmsPdiComponentAnagement>> componentMap = new LinkedHashMap<>();
|
||||||
|
componentService.lambdaQuery()
|
||||||
.eq(QmsPdiComponentAnagement::getDetectionRulesId, detectionRulesId)
|
.eq(QmsPdiComponentAnagement::getDetectionRulesId, detectionRulesId)
|
||||||
.in(QmsPdiComponentAnagement::getId, componentIds)
|
.in(QmsPdiComponentAnagement::getId, componentIds)
|
||||||
.in(QmsPdiComponentAnagement::getComponentName, componentNames)
|
.in(QmsPdiComponentAnagement::getComponentName, queryNames)
|
||||||
.list()
|
.list()
|
||||||
.stream()
|
.forEach(component -> {
|
||||||
.collect(Collectors.groupingBy(QmsPdiComponentAnagement::getComponentName, LinkedHashMap::new, Collectors.toList()));
|
addComponentAlias(componentMap, component.getComponentName(), component);
|
||||||
|
addComponentAlias(componentMap,
|
||||||
|
appendNewlineIfMixedChineseEnglishEndsWithEnglish(component.getComponentName()),
|
||||||
|
component);
|
||||||
|
});
|
||||||
|
return componentMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Long> getUsedComponentIds(Long detectionRulesId) {
|
private List<Long> getUsedComponentIds(Long detectionRulesId) {
|
||||||
|
|
@ -337,7 +354,8 @@ public class QmsPdiComponentBindingControllerService {
|
||||||
List<QmsPdiComponentBindingSearchVO.InspectionItemVO> inspectionItems) {
|
List<QmsPdiComponentBindingSearchVO.InspectionItemVO> inspectionItems) {
|
||||||
QmsPdiComponentBindingSearchVO.ComponentBindingVO componentVO = new QmsPdiComponentBindingSearchVO.ComponentBindingVO();
|
QmsPdiComponentBindingSearchVO.ComponentBindingVO componentVO = new QmsPdiComponentBindingSearchVO.ComponentBindingVO();
|
||||||
componentVO.setPdiComponentId(componentId);
|
componentVO.setPdiComponentId(componentId);
|
||||||
componentVO.setPdiComponentName(component == null ? null : component.getComponentName());
|
componentVO.setPdiComponentName(component == null ? null
|
||||||
|
: appendNewlineIfMixedChineseEnglishEndsWithEnglish(component.getComponentName()));
|
||||||
componentVO.setStatus(status);
|
componentVO.setStatus(status);
|
||||||
componentVO.setInspectionItems(inspectionItems == null ? new ArrayList<>() : new ArrayList<>(inspectionItems));
|
componentVO.setInspectionItems(inspectionItems == null ? new ArrayList<>() : new ArrayList<>(inspectionItems));
|
||||||
return componentVO;
|
return componentVO;
|
||||||
|
|
@ -385,6 +403,44 @@ public class QmsPdiComponentBindingControllerService {
|
||||||
return new ComponentStatus(Long.valueOf(parts[0]), Short.valueOf(parts[1]));
|
return new ComponentStatus(Long.valueOf(parts[0]), Short.valueOf(parts[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addComponentAlias(Map<String, List<QmsPdiComponentAnagement>> componentMap,
|
||||||
|
String componentName,
|
||||||
|
QmsPdiComponentAnagement component) {
|
||||||
|
if (StrUtil.isBlank(componentName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
componentMap.computeIfAbsent(componentName, ignored -> new ArrayList<>()).add(component);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String appendNewlineIfMixedChineseEnglishEndsWithEnglish(String text) {
|
||||||
|
if (StrUtil.isBlank(text)) {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
String value = text.replaceAll("\\s+$", "");
|
||||||
|
boolean hasChinese = false;
|
||||||
|
boolean hasEnglish = false;
|
||||||
|
for (int i = 0; i < value.length(); i++) {
|
||||||
|
char c = value.charAt(i);
|
||||||
|
if (isChinese(c)) {
|
||||||
|
hasChinese = true;
|
||||||
|
} else if (isEnglishLetter(c)) {
|
||||||
|
hasEnglish = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasChinese && hasEnglish && isEnglishLetter(value.charAt(value.length() - 1))) {
|
||||||
|
return value + "\n";
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isChinese(char c) {
|
||||||
|
return c >= '\u4e00' && c <= '\u9fff';
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEnglishLetter(char c) {
|
||||||
|
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
|
||||||
|
}
|
||||||
|
|
||||||
private static class ComponentStatus {
|
private static class ComponentStatus {
|
||||||
private final Long componentId;
|
private final Long componentId;
|
||||||
private final Short status;
|
private final Short status;
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public class QmsPdiComponentControllerService {
|
||||||
@Transactional
|
@Transactional
|
||||||
public void add(QmsPdiComponentAddQO request) {
|
public void add(QmsPdiComponentAddQO request) {
|
||||||
QmsPdiComponentAnagement entity = new QmsPdiComponentAnagement()
|
QmsPdiComponentAnagement entity = new QmsPdiComponentAnagement()
|
||||||
.setComponentName(request.getComponentName())
|
.setComponentName(appendNewlineIfMixedChineseEnglishEndsWithEnglish(request.getComponentName()))
|
||||||
.setDetectionRulesId(request.getDetectionRulesId())
|
.setDetectionRulesId(request.getDetectionRulesId())
|
||||||
.setCreateBy(UserUtil.getUserName())
|
.setCreateBy(UserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
|
|
@ -71,7 +71,8 @@ public class QmsPdiComponentControllerService {
|
||||||
var updateChain = componentService.lambdaUpdate()
|
var updateChain = componentService.lambdaUpdate()
|
||||||
.eq(QmsPdiComponentAnagement::getId, request.getId());
|
.eq(QmsPdiComponentAnagement::getId, request.getId());
|
||||||
if (StrUtil.isNotBlank(request.getComponentName())) {
|
if (StrUtil.isNotBlank(request.getComponentName())) {
|
||||||
updateChain.set(QmsPdiComponentAnagement::getComponentName, request.getComponentName());
|
updateChain.set(QmsPdiComponentAnagement::getComponentName,
|
||||||
|
appendNewlineIfMixedChineseEnglishEndsWithEnglish(request.getComponentName()));
|
||||||
}
|
}
|
||||||
updateChain.update();
|
updateChain.update();
|
||||||
}
|
}
|
||||||
|
|
@ -97,7 +98,39 @@ public class QmsPdiComponentControllerService {
|
||||||
*/
|
*/
|
||||||
public IPage<QmsPdiComponentAnagement> search(QmsPdiComponentSearchQO request) {
|
public IPage<QmsPdiComponentAnagement> search(QmsPdiComponentSearchQO request) {
|
||||||
Page<QmsPdiComponentAnagement> page = new Page<>(request.getPage(), request.getPageSize());
|
Page<QmsPdiComponentAnagement> page = new Page<>(request.getPage(), request.getPageSize());
|
||||||
return componentMapper.search(request, page);
|
IPage<QmsPdiComponentAnagement> result = componentMapper.search(request, page);
|
||||||
|
result.getRecords().forEach(component ->
|
||||||
|
component.setComponentName(appendNewlineIfMixedChineseEnglishEndsWithEnglish(component.getComponentName())));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String appendNewlineIfMixedChineseEnglishEndsWithEnglish(String text) {
|
||||||
|
if (StrUtil.isBlank(text)) {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
String value = text.replaceAll("\\s+$", "");
|
||||||
|
boolean hasChinese = false;
|
||||||
|
boolean hasEnglish = false;
|
||||||
|
for (int i = 0; i < value.length(); i++) {
|
||||||
|
char c = value.charAt(i);
|
||||||
|
if (isChinese(c)) {
|
||||||
|
hasChinese = true;
|
||||||
|
} else if (isEnglishLetter(c)) {
|
||||||
|
hasEnglish = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasChinese && hasEnglish && isEnglishLetter(value.charAt(value.length() - 1))) {
|
||||||
|
return value + "\n";
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isChinese(char c) {
|
||||||
|
return c >= '\u4e00' && c <= '\u9fff';
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEnglishLetter(char c) {
|
||||||
|
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================= 查询部件检测项 =========================
|
// ========================= 查询部件检测项 =========================
|
||||||
|
|
|
||||||
|
|
@ -80,8 +80,9 @@ public class QmsPdiStatusItemControllerService {
|
||||||
// 处理部件(部件状态复用检测项的status)
|
// 处理部件(部件状态复用检测项的status)
|
||||||
if (!isSpecialStatus(request.getStatus()) && StrUtil.isNotBlank(request.getComponentsDes())) {
|
if (!isSpecialStatus(request.getStatus()) && StrUtil.isNotBlank(request.getComponentsDes())) {
|
||||||
// 检查部件是否已存在(按检测规则ID + 名称 + 状态查询)
|
// 检查部件是否已存在(按检测规则ID + 名称 + 状态查询)
|
||||||
|
String componentName = appendNewlineIfMixedChineseEnglishEndsWithEnglish(request.getComponentsDes());
|
||||||
QmsPdiComponentAnagement existingComponent = componentAnagementService.lambdaQuery()
|
QmsPdiComponentAnagement existingComponent = componentAnagementService.lambdaQuery()
|
||||||
.eq(QmsPdiComponentAnagement::getComponentName, request.getComponentsDes())
|
.in(QmsPdiComponentAnagement::getComponentName, request.getComponentsDes(), componentName)
|
||||||
.eq(QmsPdiComponentAnagement::getDetectionRulesId, request.getDetectionRulesId())
|
.eq(QmsPdiComponentAnagement::getDetectionRulesId, request.getDetectionRulesId())
|
||||||
.eq(QmsPdiComponentAnagement::getStatus, request.getStatus())
|
.eq(QmsPdiComponentAnagement::getStatus, request.getStatus())
|
||||||
.one();
|
.one();
|
||||||
|
|
@ -93,7 +94,7 @@ public class QmsPdiStatusItemControllerService {
|
||||||
QmsPdiComponentAnagement component = createComponent(
|
QmsPdiComponentAnagement component = createComponent(
|
||||||
request.getDetectionRulesId(),
|
request.getDetectionRulesId(),
|
||||||
request.getStatus(),
|
request.getStatus(),
|
||||||
request.getComponentsDes(),
|
componentName,
|
||||||
operator,
|
operator,
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
|
|
@ -360,20 +361,21 @@ public class QmsPdiStatusItemControllerService {
|
||||||
|
|
||||||
// 处理部件
|
// 处理部件
|
||||||
if (!isSpecialStatus(status) && StrUtil.isNotBlank(dto.getComponentsDes())) {
|
if (!isSpecialStatus(status) && StrUtil.isNotBlank(dto.getComponentsDes())) {
|
||||||
if (componentNameToIdMap.containsKey(dto.getComponentsDes())) {
|
String componentName = appendNewlineIfMixedChineseEnglishEndsWithEnglish(dto.getComponentsDes());
|
||||||
|
if (componentNameToIdMap.containsKey(componentName)) {
|
||||||
// 部件已存在,直接使用
|
// 部件已存在,直接使用
|
||||||
componentsId = componentNameToIdMap.get(dto.getComponentsDes());
|
componentsId = componentNameToIdMap.get(componentName);
|
||||||
} else {
|
} else {
|
||||||
QmsPdiComponentAnagement component = componentAnagementService.lambdaQuery()
|
QmsPdiComponentAnagement component = componentAnagementService.lambdaQuery()
|
||||||
.eq(QmsPdiComponentAnagement::getDetectionRulesId, detectionRulesId)
|
.eq(QmsPdiComponentAnagement::getDetectionRulesId, detectionRulesId)
|
||||||
.eq(QmsPdiComponentAnagement::getStatus, status)
|
.eq(QmsPdiComponentAnagement::getStatus, status)
|
||||||
.eq(QmsPdiComponentAnagement::getComponentName, dto.getComponentsDes())
|
.in(QmsPdiComponentAnagement::getComponentName, dto.getComponentsDes(), componentName)
|
||||||
.one();
|
.one();
|
||||||
if (component == null) {
|
if (component == null) {
|
||||||
component = createComponent(detectionRulesId, status, dto.getComponentsDes(), operator, now);
|
component = createComponent(detectionRulesId, status, componentName, operator, now);
|
||||||
}
|
}
|
||||||
componentsId = component.getId();
|
componentsId = component.getId();
|
||||||
componentNameToIdMap.put(dto.getComponentsDes(), componentsId);
|
componentNameToIdMap.put(componentName, componentsId);
|
||||||
componentItemCountMap.put(componentsId, getMaxItemSort(detectionRulesId, status, componentsId));
|
componentItemCountMap.put(componentsId, getMaxItemSort(detectionRulesId, status, componentsId));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -381,7 +383,7 @@ public class QmsPdiStatusItemControllerService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理检查核实内容:如果以英文字母结束,追加换行符
|
// 处理检查核实内容:如果以英文字母结束,追加换行符
|
||||||
dto.setInspectionContent(appendNewlineIfEndsWithEnglish(dto.getInspectionContent()));
|
dto.setInspectionContent(appendNewlineIfMixedChineseEnglishEndsWithEnglish(dto.getInspectionContent()));
|
||||||
|
|
||||||
// 插入检测项
|
// 插入检测项
|
||||||
int itemSort = componentItemCountMap.getOrDefault(componentsId, 0) + 1;
|
int itemSort = componentItemCountMap.getOrDefault(componentsId, 0) + 1;
|
||||||
|
|
@ -405,15 +407,33 @@ public class QmsPdiStatusItemControllerService {
|
||||||
/**
|
/**
|
||||||
* 如果文本以英文字母结尾,则追加换行符
|
* 如果文本以英文字母结尾,则追加换行符
|
||||||
*/
|
*/
|
||||||
private String appendNewlineIfEndsWithEnglish(String text) {
|
private String appendNewlineIfMixedChineseEnglishEndsWithEnglish(String text) {
|
||||||
if (StrUtil.isBlank(text)) {
|
if (StrUtil.isBlank(text)) {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
char lastChar = text.charAt(text.length() - 1);
|
String value = text.replaceAll("\\s+$", "");
|
||||||
if ((lastChar >= 'a' && lastChar <= 'z') || (lastChar >= 'A' && lastChar <= 'Z')) {
|
boolean hasChinese = false;
|
||||||
return text + "\n";
|
boolean hasEnglish = false;
|
||||||
|
for (int i = 0; i < value.length(); i++) {
|
||||||
|
char c = value.charAt(i);
|
||||||
|
if (isChinese(c)) {
|
||||||
|
hasChinese = true;
|
||||||
|
} else if (isEnglishLetter(c)) {
|
||||||
|
hasEnglish = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return text;
|
if (hasChinese && hasEnglish && isEnglishLetter(value.charAt(value.length() - 1))) {
|
||||||
|
return value + "\n";
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isChinese(char c) {
|
||||||
|
return c >= '\u4e00' && c <= '\u9fff';
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEnglishLetter(char c) {
|
||||||
|
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================= 分页查询 =========================
|
// ========================= 分页查询 =========================
|
||||||
|
|
@ -472,7 +492,7 @@ public class QmsPdiStatusItemControllerService {
|
||||||
QmsPdiStatusItemGroupVO groupVO = new QmsPdiStatusItemGroupVO();
|
QmsPdiStatusItemGroupVO groupVO = new QmsPdiStatusItemGroupVO();
|
||||||
groupVO.setDetectionRulesId(request.getDetectionRulesId());
|
groupVO.setDetectionRulesId(request.getDetectionRulesId());
|
||||||
groupVO.setComponentsId(component.getId());
|
groupVO.setComponentsId(component.getId());
|
||||||
groupVO.setComponentName(component.getComponentName());
|
groupVO.setComponentName(appendNewlineIfMixedChineseEnglishEndsWithEnglish(component.getComponentName()));
|
||||||
groupVO.setSort(component.getSort());
|
groupVO.setSort(component.getSort());
|
||||||
|
|
||||||
// 获取该部件下的检测项
|
// 获取该部件下的检测项
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonAlias;
|
import com.fasterxml.jackson.annotation.JsonAlias;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
@ -57,6 +58,7 @@ public class QmsPdiComponentBindingSaveQO {
|
||||||
* x轴坐标
|
* x轴坐标
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "x轴坐标不能为空")
|
@NotBlank(message = "x轴坐标不能为空")
|
||||||
|
@JsonProperty("xCoordinatePoint")
|
||||||
@JsonAlias({"x_coordinate_point", "XCoordinatePoint"})
|
@JsonAlias({"x_coordinate_point", "XCoordinatePoint"})
|
||||||
private String xCoordinatePoint;
|
private String xCoordinatePoint;
|
||||||
|
|
||||||
|
|
@ -64,6 +66,7 @@ public class QmsPdiComponentBindingSaveQO {
|
||||||
* y轴坐标
|
* y轴坐标
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "y轴坐标不能为空")
|
@NotBlank(message = "y轴坐标不能为空")
|
||||||
|
@JsonProperty("yCoordinatePoint")
|
||||||
@JsonAlias({"y_coordinate_point", "YCoordinatePoint"})
|
@JsonAlias({"y_coordinate_point", "YCoordinatePoint"})
|
||||||
private String yCoordinatePoint;
|
private String yCoordinatePoint;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue