From e04a3cfe29914cc7418504e78701dd512fed0d3a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 27 四月 2026 11:50:00 +0800
Subject: [PATCH] feat: 计划时间格式调整为年月日+时分秒;多选报工人;生产报工只能看指定报告人
---
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 47 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
index d742268..60f5788 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -25,7 +25,6 @@
import com.ruoyi.production.service.ProductProcessService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
-import com.ruoyi.project.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +36,7 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
@Slf4j
@Service
@@ -91,6 +91,7 @@
if (productModel == null) {
throw new ServiceException("鏂板澶辫触,璇ラ儴浠朵笉瀛樺湪");
}
+ validateDuplicateTypeForSameProduct(productModel.getId(), productProcessDto.getType(), null);
ProductProcess productProcess = new ProductProcess();
BeanUtils.copyProperties(productProcessDto, productProcess);
@@ -109,6 +110,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ProductProcessDto productProcessDto) {
+ if (ObjectUtils.isEmpty(productProcessDto.getId())) {
+ throw new ServiceException("淇敼澶辫触锛屽伐搴廔D涓嶈兘涓虹┖");
+ }
if (ObjectUtils.isEmpty(productProcessDto.getName())) {
throw new ServiceException("閮ㄤ欢鍚嶇О涓嶈兘涓虹┖");
}
@@ -121,13 +125,21 @@
}
}
- // 鍒ゆ柇鍏宠仈浜у搧鏄惁瀛樺湪
- if (ObjectUtils.isNotEmpty(productProcessDto.getProductModelId())) {
- ProductModel productModel = productModelService.getById(productProcessDto.getProductModelId());
- if (productModel == null) {
- throw new ServiceException("淇敼澶辫触锛屽叧鑱旈儴浠朵笉瀛樺湪");
- }
+ ProductProcess oldProductProcess = this.getById(productProcessDto.getId());
+ if (oldProductProcess == null) {
+ throw new ServiceException("淇敼澶辫触锛屽伐搴忎笉瀛樺湪");
}
+ Long finalProductModelId = ObjectUtils.isNotEmpty(productProcessDto.getProductModelId())
+ ? productProcessDto.getProductModelId() : oldProductProcess.getProductModelId();
+ Integer finalType = ObjectUtils.isNotEmpty(productProcessDto.getType())
+ ? productProcessDto.getType() : oldProductProcess.getType();
+
+ // 鍒ゆ柇鍏宠仈浜у搧鏄惁瀛樺湪
+ ProductModel productModel = productModelService.getById(finalProductModelId);
+ if (productModel == null) {
+ throw new ServiceException("淇敼澶辫触锛屽叧鑱旈儴浠朵笉瀛樺湪");
+ }
+ validateDuplicateTypeForSameProduct(productModel.getId(), finalType, productProcessDto.getId());
// 鏍¢獙璁″垝浜哄憳
validatePlanner(productProcessDto.getPlannerId(), productProcessDto.getPlannerName(), null);
@@ -232,6 +244,34 @@
}
}
+ /**
+ * 鏍¢獙鍚屼竴浜у搧涓嬪伐搴忕被鍨嬩笉鑳介噸澶�
+ */
+ private void validateDuplicateTypeForSameProduct(Long productModelId, Integer type, Long excludeId) {
+ if (productModelId == null || type == null) {
+ return;
+ }
+ ProductModel currentModel = productModelService.getById(productModelId);
+ if (currentModel == null || currentModel.getProductId() == null) {
+ return;
+ }
+ List<ProductModel> productModels = productModelService.list(
+ Wrappers.<ProductModel>lambdaQuery().eq(ProductModel::getProductId, currentModel.getProductId()));
+ if (CollectionUtils.isEmpty(productModels)) {
+ return;
+ }
+ List<Long> productModelIds = productModels.stream().map(ProductModel::getId).collect(Collectors.toList());
+ LambdaQueryWrapper<ProductProcess> queryWrapper = Wrappers.<ProductProcess>lambdaQuery()
+ .in(ProductProcess::getProductModelId, productModelIds)
+ .eq(ProductProcess::getType, type);
+ if (excludeId != null) {
+ queryWrapper.ne(ProductProcess::getId, excludeId);
+ }
+ if (this.count(queryWrapper) > 0) {
+ throw new ServiceException("鎿嶄綔澶辫触锛屽悓涓�浜у搧涓嶈兘瀛樺湪閲嶅鐨勯儴浠剁被鍨�");
+ }
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public void batchDelete(List<Integer> ids) {
--
Gitblit v1.9.3