From bf2026a38d4d36371060673d4651b6e05ca90632 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 01 九月 2026 17:07:30 +0800
Subject: [PATCH] feat(device): 1.更新设备导入验证逻辑和检验任务功能 2.报告编制
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 75 +++++++++++++++++++++++++++++++------
1 files changed, 63 insertions(+), 12 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 ed72ea8..cb1f287 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
@@ -16,6 +16,7 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.InventoryDetailDTO;
import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.mapper.StructureItemParameterMapper;
@@ -647,13 +648,6 @@
if(isSplitOrder){
ifsInventoryQuantity.setIsSplitOrder(1);
}
- //todo:涓嶆竻妤氱敤閫旓紝鏆傛椂灞忚斀鎺�
- // 鏌ヨ浜т笟閾炬娴嬫暟鎹�
-// String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
-// ifsInventoryQuantity.getLineNo(),
-// ifsInventoryQuantity.getReleaseNo());
-// ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
-
ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
}
}
@@ -801,6 +795,9 @@
ifsInventoryQuantity.setIsCopper(1);
ifsInventoryQuantity.setIsQuarter(0);
ifsInventoryQuantity.setInspectStatus(0);
+ //閾滄潗鏂欎笅鍗曢粯璁ゅ��
+ ifsInventoryQuantity.setOrderType(OrderType.RAW.getValue());
+ ifsInventoryQuantity.setMaterialProp("01Cu");
ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived());
ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas());
@@ -810,10 +807,8 @@
ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
-
insOrder.setIfsInventoryId(ifsInventoryQuantity.getId());
insOrder.setState(1);
-
upInsOrderOfState(insOrder);
upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
@@ -879,6 +874,19 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateInsOrder(InsOrderUpdateDto insOrderUpdateDto) {
+ InsOrder currentOrder = insOrderMapper.selectById(insOrderUpdateDto.getInsOrder().getId());
+ if (currentOrder == null || !Objects.equals(currentOrder.getState(), 2)) {
+ throw new ErrorException("鍙湁閫�鍥炵殑妫�楠屽崟鍙互淇敼");
+ }
+ boolean hasSelectedProduct = CollectionUtils.isNotEmpty(insOrderUpdateDto.getSampleProduct())
+ && insOrderUpdateDto.getSampleProduct().stream()
+ .filter(sample -> CollectionUtils.isNotEmpty(sample.getInsProduct()))
+ .flatMap(sample -> sample.getInsProduct().stream())
+ .anyMatch(product -> Objects.equals(product.getState(), 1));
+ if (!hasSelectedProduct) {
+ throw new ErrorException("璇疯嚦灏戦�夋嫨涓�涓楠岄」");
+ }
+
// 淇敼璁㈠崟
insOrderUpdateDto.getInsOrder().setState(0);
insOrderUpdateDto.getInsOrder().setTell("");
@@ -886,11 +894,50 @@
// 淇敼妫�楠岄」
for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) {
+ Long sampleCount = insSampleMapper.selectCount(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getId, sampleProductDto.getId())
+ .eq(InsSample::getInsOrderId, insOrderUpdateDto.getInsOrder().getId()));
+ if (sampleCount == 0) {
+ throw new ErrorException("妫�楠屾牱鍝佹暟鎹紓甯�");
+ }
+
insSampleService.update(Wrappers.<InsSample>lambdaUpdate()
.eq(InsSample::getId, sampleProductDto.getId())
.set(InsSample::getSpecialStandardMethod, sampleProductDto.getSpecialStandardMethod()));
- insProductService.updateBatchById(sampleProductDto.getInsProduct());
+ List<InsProduct> products = sampleProductDto.getInsProduct();
+ if (CollectionUtils.isEmpty(products)) {
+ continue;
+ }
+
+ Set<Integer> productIds = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleProductDto.getId()))
+ .stream()
+ .map(InsProduct::getId)
+ .collect(Collectors.toSet());
+ if (products.stream().anyMatch(product -> product.getId() != null && !productIds.contains(product.getId()))) {
+ throw new ErrorException("妫�楠岄」鏁版嵁寮傚父");
+ }
+
+ List<Integer> removedIds = products.stream()
+ .filter(product -> product.getId() != null && !Objects.equals(product.getState(), 1))
+ .map(InsProduct::getId)
+ .collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(removedIds)) {
+ insProductService.removeByIds(removedIds);
+ }
+
+ List<InsProduct> existingProducts = products.stream()
+ .filter(product -> product.getId() != null && Objects.equals(product.getState(), 1))
+ .collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(existingProducts)) {
+ insProductService.updateBatchById(existingProducts);
+ }
+
+ List<InsProduct> newProducts = products.stream()
+ .filter(product -> product.getId() == null && Objects.equals(product.getState(), 1))
+ .collect(Collectors.toList());
+ addInsProductMethod(sampleProductDto.getId(), newProducts);
}
return true;
@@ -904,6 +951,11 @@
@Override
public List<InsOrderPrintingVo> labelOrderPrinting(List<Integer> ids) {
return insOrderMapper.labelOrderPrinting(ids);
+ }
+
+ @Override
+ public List<InventoryDetailDTO> labelOutsideOrderPrinting(List<Integer> ids) {
+ return insOrderMapper.labelOutsideOrderPrinting(ids);
}
/**
@@ -1216,8 +1268,7 @@
// 妫�楠屽悗绉诲簱
//1301:鍘熸潗鏂欏悎鏍煎簱锛孋P-02-001:鎴愬搧搴�
if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue())){
- //濡傛灉璁㈠崟涓哄師鏉愭枡鐨勬媶鍒嗚鍗曪紝鍒欑Щ鍒板璐師鏉愭枡搴撲綅W03
- toLocation = one.getIsSplitOrder().equals(1)?"W03":"1301";
+ toLocation = "1301";
}else if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.WG.getValue())){
toLocation = "CP-02-001";
}else{
--
Gitblit v1.9.3