From 3fdea1ab6ab545de0a25573318ecd838de3be576 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 17 九月 2026 15:54:13 +0800
Subject: [PATCH] feat: 1.检验任务查询优化 2.模板时间和地点保存
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java | 91 ++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 85 insertions(+), 6 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
index 397c0c5..b5d0e0f 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
@@ -7,12 +7,18 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.pojo.StandardProductList;
+import com.ruoyi.basic.utils.StandardTreePathParser;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.InsProductBindingDto;
+import com.ruoyi.inspect.dto.WriteInspectionConditionDto;
import com.ruoyi.inspect.mapper.InsOrderMapper;
+import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper;
+import com.ruoyi.inspect.mapper.InsOrderTemplateDeviceMapper;
import com.ruoyi.inspect.mapper.InsProductMapper;
import com.ruoyi.inspect.mapper.InsSampleMapper;
import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.pojo.InsOrderStandardTemplate;
+import com.ruoyi.inspect.pojo.InsOrderTemplateDevice;
import com.ruoyi.inspect.pojo.InsProduct;
import com.ruoyi.inspect.pojo.InsSample;
import com.ruoyi.inspect.service.InsProductService;
@@ -39,6 +45,10 @@
private StandardProductListMapper standardProductListMapper;
+ private InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
+
+ private InsOrderTemplateDeviceMapper insOrderTemplateDeviceMapper;
+
@Override
public int selectOrderManDay(Integer orderId) {
return insProductMapper.selectOrderManDay(orderId);
@@ -54,7 +64,69 @@
}
@Override
- public boolean write(InsOrder insOrder) {
+ public boolean write(WriteInspectionConditionDto dto) {
+ if (dto == null || dto.getId() == null) {
+ throw new ErrorException("璁㈠崟ID涓嶈兘涓虹┖");
+ }
+ if (dto.getTemplateId() != null) {
+ InsOrderStandardTemplate snapshot = insOrderStandardTemplateMapper.selectOne(
+ Wrappers.<InsOrderStandardTemplate>lambdaQuery()
+ .eq(InsOrderStandardTemplate::getInsOrderId, dto.getId())
+ .eq(InsOrderStandardTemplate::getTemplateId, dto.getTemplateId())
+ .last("limit 1"));
+ if (snapshot == null) {
+ throw new ErrorException("鏈壘鍒板綋鍓嶆ā鏉跨殑鍘熷璁板綍蹇収");
+ }
+ boolean hasSnapshotField = dto.isTemperaturePresent() || dto.isHumidityPresent()
+ || dto.isDetectionTimePresent() || dto.isDetectionPlacePresent()
+ || dto.isInsResultPresent();
+ if (hasSnapshotField) {
+ insOrderStandardTemplateMapper.update(null,
+ Wrappers.<InsOrderStandardTemplate>lambdaUpdate()
+ .eq(InsOrderStandardTemplate::getId, snapshot.getId())
+ .set(dto.isTemperaturePresent(),
+ InsOrderStandardTemplate::getTemperature, dto.getTemperature())
+ .set(dto.isHumidityPresent(),
+ InsOrderStandardTemplate::getHumidity, dto.getHumidity())
+ .set(dto.isDetectionTimePresent(),
+ InsOrderStandardTemplate::getDetectionTime, dto.getDetectionTime())
+ .set(dto.isDetectionPlacePresent(),
+ InsOrderStandardTemplate::getDetectionPlace, dto.getDetectionPlace())
+ .set(dto.isInsResultPresent(),
+ InsOrderStandardTemplate::getInsResult, dto.getInsResult()));
+ }
+ if (dto.isDeviceIdsPresent()) {
+ insOrderTemplateDeviceMapper.delete(
+ Wrappers.<InsOrderTemplateDevice>lambdaQuery()
+ .eq(InsOrderTemplateDevice::getInsOrderId, dto.getId())
+ .eq(InsOrderTemplateDevice::getTemplateId, dto.getTemplateId()));
+ List<Integer> deviceIds = dto.getDeviceIds() == null
+ ? Collections.emptyList()
+ : dto.getDeviceIds().stream()
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+ if (!deviceIds.isEmpty()
+ && insOrderTemplateDeviceMapper.selectExistingDeviceIds(deviceIds).size() != deviceIds.size()) {
+ throw new ErrorException("鎵�閫夎澶囦笉瀛樺湪锛岃鍒锋柊璁惧鍒楄〃鍚庨噸璇�");
+ }
+ for (int index = 0; index < deviceIds.size(); index++) {
+ InsOrderTemplateDevice relation = new InsOrderTemplateDevice();
+ relation.setInsOrderId(dto.getId());
+ relation.setTemplateId(dto.getTemplateId());
+ relation.setDeviceId(deviceIds.get(index));
+ relation.setSort(index);
+ insOrderTemplateDeviceMapper.insert(relation);
+ }
+ }
+ if (!hasSnapshotField && !dto.isDeviceIdsPresent()) {
+ throw new ErrorException("娌℃湁闇�瑕佷繚瀛樼殑妯℃澘妫�楠屾潯浠�");
+ }
+ return true;
+ }
+ InsOrder insOrder = new InsOrder();
+ insOrder.setId(dto.getId());
+ insOrder.setRemark(dto.getRemark());
insOrderMapper.updateById(insOrder);
return true;
}
@@ -118,11 +190,18 @@
public List<InsProduct> getProductTreeByProductId(Integer productId) {
// 鏌ヨ妫�楠岄」淇℃伅
InsProduct insProduct = insProductMapper.selectById(productId);
- String tree = insProduct.getFactory() + " - " +
- insProduct.getLaboratory() + " - " +
- insProduct.getSampleType() + " - " +
- insProduct.getSample() + " - " +
- insProduct.getModel();
+ String tree;
+ if (insProduct.getSampleType() == null && insProduct.getModel() == null
+ && StringUtils.isNotBlank(insProduct.getLaboratory())
+ && StringUtils.isNotBlank(insProduct.getSample())) {
+ tree = StandardTreePathParser.canonical(insProduct.getLaboratory(), insProduct.getSample());
+ } else {
+ tree = insProduct.getFactory() + " - " +
+ insProduct.getLaboratory() + " - " +
+ insProduct.getSampleType() + " - " +
+ insProduct.getSample() + " - " +
+ insProduct.getModel();
+ }
// 鏌ヨ鏍囧噯鏍�
List<StandardProductList> standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
.eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId())
--
Gitblit v1.9.3