From 781c5f73033ad1ae8c350210c46b4e24925d427b Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 17 九月 2026 17:29:16 +0800
Subject: [PATCH] fix:委托编号更改
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 92 +++++++++++++++++++++++++++++++++++-----------
1 files changed, 70 insertions(+), 22 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index c62c2ce..d7c0021 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -84,6 +84,8 @@
public class InsOrderServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder>
implements InsOrderService {
+ private static final String DIRECT_TEMPLATE_LABORATORY = "鏂拌仛";
+
private InsOrderMapper insOrderMapper;
private InsSampleService insSampleService;
private InsSampleMapper insSampleMapper;
@@ -137,36 +139,52 @@
insOrderMapper.updateById(insOrder);
List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
List<Integer> ids = insSamples.stream().map(InsSample::getId).collect(Collectors.toList());
- List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
- .in(InsProduct::getInsSampleId, ids)
- .eq(InsProduct::getState, 1)
- .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory));
+ List<InsProduct> insProducts = ids.isEmpty()
+ ? Collections.emptyList()
+ : insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .in(InsProduct::getInsSampleId, ids)
+ .eq(InsProduct::getState, 1)
+ .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory));
+
+ InsOrder order = insOrderMapper.selectById(orderId);
+ boolean directTemplateOrder = isDirectTemplateOrder(order, insSamples);
+ Set<String> taskLaboratories = directTemplateOrder
+ ? Collections.singleton(DIRECT_TEMPLATE_LABORATORY)
+ : insProducts.stream()
+ .map(InsProduct::getSonLaboratory)
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toCollection(LinkedHashSet::new));
+ if (!directTemplateOrder && taskLaboratories.size() != insProducts.size()) {
+ throw new ErrorException("璇ユ楠屽崟鏈夋湭缁存姢瀹為獙瀹ょ殑妫�楠岄」鐩�");
+ }
// 鎵归噺娣诲姞妫�楠屼换鍔$姸鎬佽〃
- List<InsOrderState> insOrderStateList = insProducts.stream().map(insProduct -> {
+ List<InsOrderState> insOrderStateList = taskLaboratories.stream()
+ .filter(laboratory -> insOrderStateService.count(Wrappers.<InsOrderState>lambdaQuery()
+ .eq(InsOrderState::getInsOrderId, orderId)
+ .eq(InsOrderState::getLaboratory, laboratory)) == 0)
+ .map(laboratory -> {
InsOrderState insOrderState = new InsOrderState();
insOrderState.setInsOrderId(orderId);
- try {
- insOrderState.setLaboratory(insProduct.getSonLaboratory());
- } catch (NullPointerException e) {
- throw new ErrorException("璇ユ楠屽崟鏈夋湭缁存姢瀹為獙瀹ょ殑妫�楠岄」鐩�");
- }
+ insOrderState.setLaboratory(laboratory);
insOrderState.setInsState(0);
return insOrderState;
}).collect(Collectors.toList());
- insOrderStateService.saveBatch(insOrderStateList);
+ if (!insOrderStateList.isEmpty()) {
+ insOrderStateService.saveBatch(insOrderStateList);
+ }
if (userId != null) {
InsSampleUser insSampleUser = new InsSampleUser();
insSampleUser.setState(0);
insSampleUser.setUserId(userId);
insSampleUser.setInsSampleId(orderId);
- insSampleUser.setSonLaboratory(sonLaboratory);
+ insSampleUser.setSonLaboratory(directTemplateOrder
+ ? DIRECT_TEMPLATE_LABORATORY : sonLaboratory);
insSampleUserMapper.insert(insSampleUser);
}
// 鍒ゆ柇璁㈠崟鏈夋病鏈夌粦瀹氭娊鏍疯鍒�
- InsOrder order = insOrderMapper.selectById(orderId);
if (order.getQuarterItemId() != null) {
// 闇�瑕佹坊鍔犱笅鍙戞椂闂村埌鎶芥牱鏃堕棿, 鍙栨牱浜哄憳灏辨槸妫�娴嬩汉
SpotCheckQuarterItem spotCheckQuarterItem = spotCheckQuarterItemMapper.selectById(order.getQuarterItemId());
@@ -177,6 +195,22 @@
}
return 1;
+ }
+
+ private boolean isDirectTemplateOrder(InsOrder order, List<InsSample> samples) {
+ if (order == null || CollectionUtils.isEmpty(samples)) {
+ return false;
+ }
+ Long snapshotCount = insOrderStandardTemplateMapper.selectCount(
+ Wrappers.<InsOrderStandardTemplate>lambdaQuery()
+ .eq(InsOrderStandardTemplate::getInsOrderId, order.getId()));
+ return snapshotCount > 0 && samples.stream().anyMatch(sample ->
+ sample.getStandardMethodListId() == null
+ && StringUtils.isBlank(sample.getFactory())
+ && StringUtils.isBlank(sample.getSampleType())
+ && StringUtils.isBlank(sample.getModel())
+ && StringUtils.isBlank(order.getFactory())
+ && StringUtils.isBlank(order.getSampleType()));
}
@@ -430,6 +464,10 @@
if (dto == null || dto.getInsOrder() == null || dto.getStandardTreeId() == null) {
throw new ErrorException("涓嬪崟淇℃伅鎴栨爣鍑嗕笉鑳戒负绌�");
}
+ String sampleCode = StringUtils.trim(dto.getSampleCode());
+ if (StringUtils.isBlank(sampleCode) || sampleCode.length() < 2) {
+ throw new ErrorException("鏍峰搧缂栧彿涓嶈兘涓虹┖涓斾笉鑳藉皯浜�2浣�");
+ }
StandardTree standard = standardTreeService.getById(dto.getStandardTreeId());
if (standard == null || StringUtils.isBlank(standard.getSample())
|| standard.getSampleType() != null || standard.getModel() != null) {
@@ -506,7 +544,7 @@
InsSample sample = new InsSample();
sample.setInsOrderId(order.getId());
- sample.setSampleCode(dto.getSampleCode());
+ sample.setSampleCode(sampleCode);
sample.setFactory(null);
sample.setLaboratory(standard.getLaboratory());
sample.setSampleType(null);
@@ -530,7 +568,7 @@
product.setModel(null);
product.setTemplateId(item.getTemplateId());
product.setTemplateRowIndex(item.getTemplateRowIndex());
- product.setSonLaboratory("鏂拌仛");
+ product.setSonLaboratory(DIRECT_TEMPLATE_LABORATORY);
product.setState(1);
product.setSort(productSort++);
insProductMapper.insert(product);
@@ -639,15 +677,28 @@
if (insOrder.getState() == 1) {
//瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿
InsOrder order = this.getById(insOrder.getId());
- // 濮旀墭缂栧彿鎸夐�佹牱鏃ユ湡鐙珛娴佹按锛屼緥濡傦細LMSY-20260909-01銆�
+ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getInsOrderId, insOrder.getId())
+ .orderByAsc(InsSample::getId));
+ // 濮旀墭缂栧彿鎸夐�佹牱鏃ユ湡鐢熸垚锛涙柊鑱氬崟鏍峰搧璁㈠崟鐨勬湯涓や綅鍙栨牱鍝佺紪鍙锋湯涓や綅銆�
// 鍘嗗彶/澶栭儴璁㈠崟鏈~鍐欓�佹牱鏃ユ湡鏃跺洖閫�鍒板綋澶╋紝閬垮厤褰卞搷鍘熸湁娴佺▼銆�
LocalDate entrustDate = order.getSampleDate() == null ? LocalDate.now() : order.getSampleDate();
String entrustCodePrefix = "LMSY-"
+ entrustDate.format(DateTimeFormatter.BASIC_ISO_DATE)
+ "-";
- String no = numberGenerator.generateNumberWithPrefix(2,
- entrustCodePrefix,
- InsOrder::getEntrustCode);
+ String no;
+ if (isDirectTemplateOrder(order, insSamples)) {
+ String sampleCode = insSamples.get(0).getSampleCode();
+ if (StringUtils.isBlank(sampleCode) || sampleCode.trim().length() < 2) {
+ throw new ErrorException("鏍峰搧缂栧彿涓嶈兘涓虹┖涓斾笉鑳藉皯浜�2浣�");
+ }
+ sampleCode = sampleCode.trim();
+ no = entrustCodePrefix + sampleCode.substring(sampleCode.length() - 2);
+ } else {
+ no = numberGenerator.generateNumberWithPrefix(2,
+ entrustCodePrefix,
+ InsOrder::getEntrustCode);
+ }
// 鍒ゆ柇鏄惁鏄搴︽楠�, 鏄搴︽楠屽彇娑堝師鏉愭枡瀛e害妫�楠屼笅鍗�
if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) {
ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
@@ -665,9 +716,6 @@
}
int count = 1;
- // 鏌ヨ鏍峰搧琛�
- List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
- .eq(InsSample::getInsOrderId, insOrder.getId()));
for (InsSample insSample : insSamples) {
if (StringUtils.isBlank(insSample.getSampleCode())) {
// 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
--
Gitblit v1.9.3