From 422a5676c2d96dd37c1be62935a314d70fef79b5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 15 七月 2026 15:28:04 +0800
Subject: [PATCH] 修改不合格管理
---
src/main/java/com/ruoyi/production/service/impl/ProductionAccountServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 82 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionAccountServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionAccountServiceImpl.java
index cd9e476..2b6cb27 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionAccountServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionAccountServiceImpl.java
@@ -33,6 +33,8 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.format.DateTimeParseException;
+import java.util.Arrays;
import java.util.List;
@Service
@@ -62,9 +64,6 @@
if (queryDto.getAuditStatus() == null) {
queryDto.setAuditStatus(1);
}
- if (queryDto.getReportType() == null) {
- queryDto.setReportType(0);
- }
return productionProductMainMapper.listProductionDetails(queryDto, page);
}
@@ -74,7 +73,7 @@
ProductionAccountDto queryDto = normalizeDateQuery(dto);
LambdaQueryWrapper<ProductionProductMain> queryWrapper = Wrappers.<ProductionProductMain>lambdaQuery()
.eq(ProductionProductMain::getAuditStatus, 1)
- .eq(ProductionProductMain::getReportType, 0);
+ .in(ProductionProductMain::getReportType, Arrays.asList(0, 1));
if (queryDto.getSchedulingUserId() != null) {
queryWrapper.eq(ProductionProductMain::getUserId, queryDto.getSchedulingUserId());
}
@@ -100,26 +99,60 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean singleAdjust(ProductionAccountDto dto) {
- if (dto == null || dto.getSchedulingUserId() == null) {
+ if (dto == null || (dto.getProductionProductMainId() == null && dto.getSchedulingUserId() == null)) {
throw new ServiceException("璇烽�夋嫨闇�瑕佷慨姝g殑浜哄憳");
}
BigDecimal adjustAmount = dto.getAdjustAmount();
if (adjustAmount == null || adjustAmount.compareTo(BigDecimal.ZERO) == 0) {
throw new ServiceException("淇閲戦涓嶈兘涓虹┖");
}
- ProductionAccount account = new ProductionAccount();
- account.setSchedulingUserId(dto.getSchedulingUserId());
- account.setSchedulingUserName(dto.getSchedulingUserName());
- account.setTechnologyOperationName("宸ヨ祫淇");
- account.setAdjustAmount(adjustAmount);
- account.setAdjustRemark(dto.getAdjustRemark());
- account.setAdjustUser(dto.getAdjustUser());
- account.setAdjustTime(LocalDateTime.now());
- account.setSchedulingDate(LocalDateTime.now());
- account.setWorkHours(BigDecimal.ZERO);
- account.setFinishedNum(BigDecimal.ZERO);
- account.setAccountingBatchNo("ADJ-" + LocalDate.now());
- baseMapper.insert(account);
+ if (dto.getProductionProductMainId() != null) {
+ ProductionAccount account = new ProductionAccount();
+ account.setAdjustAmount(adjustAmount);
+ account.setAdjustRemark(dto.getAdjustRemark());
+ account.setAdjustUser(dto.getAdjustUser());
+ account.setAdjustTime(LocalDateTime.now());
+ baseMapper.update(account, new LambdaQueryWrapper<ProductionAccount>()
+ .eq(ProductionAccount::getProductionProductMainId, dto.getProductionProductMainId()));
+ } else {
+ ProductionAccount account = new ProductionAccount();
+ account.setSchedulingUserId(dto.getSchedulingUserId());
+ account.setSchedulingUserName(dto.getSchedulingUserName());
+ account.setTechnologyOperationName("宸ヨ祫淇");
+ account.setAdjustAmount(adjustAmount);
+ account.setAdjustRemark(dto.getAdjustRemark());
+ account.setAdjustUser(dto.getAdjustUser());
+ account.setAdjustTime(LocalDateTime.now());
+ account.setSchedulingDate(LocalDateTime.now());
+ account.setWorkHours(BigDecimal.ZERO);
+ account.setFinishedNum(BigDecimal.ZERO);
+ account.setAccountingBatchNo("ADJ-" + LocalDate.now());
+ baseMapper.insert(account);
+ }
+ return Boolean.TRUE;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean rebuildByProductionProductMainId(Long productionProductMainId) {
+ if (productionProductMainId == null) {
+ return Boolean.FALSE;
+ }
+ ProductionProductMain productionProductMain = productionProductMainMapper.selectById(productionProductMainId);
+ if (productionProductMain == null) {
+ return Boolean.FALSE;
+ }
+ if (productionProductMain.getAuditStatus() == null || productionProductMain.getAuditStatus() != 1) {
+ productionAccountDelete(productionProductMainId);
+ return Boolean.FALSE;
+ }
+ if (productionProductMain.getReportType() == null
+ || (!Integer.valueOf(0).equals(productionProductMain.getReportType())
+ && !Integer.valueOf(1).equals(productionProductMain.getReportType()))) {
+ productionAccountDelete(productionProductMainId);
+ return Boolean.FALSE;
+ }
+ rebuildAccount(productionProductMain);
return Boolean.TRUE;
}
@@ -127,6 +160,14 @@
if (productionProductMain == null || productionProductMain.getId() == null) {
return;
}
+ ProductionAccount existedAccount = baseMapper.selectOne(Wrappers.<ProductionAccount>lambdaQuery()
+ .eq(ProductionAccount::getProductionProductMainId, productionProductMain.getId())
+ .last("limit 1"));
+ BigDecimal existedAdjustAmount = existedAccount == null ? null : existedAccount.getAdjustAmount();
+ String existedAdjustRemark = existedAccount == null ? null : existedAccount.getAdjustRemark();
+ Long existedAdjustUser = existedAccount == null ? null : existedAccount.getAdjustUser();
+ LocalDateTime existedAdjustTime = existedAccount == null ? null : existedAccount.getAdjustTime();
+
productionAccountDelete(productionProductMain.getId());
ProductionProductOutput output = productionProductOutputMapper.selectOne(
Wrappers.<ProductionProductOutput>lambdaQuery()
@@ -157,6 +198,10 @@
account.setTechnologyOperationName(technologyOperation == null ? null : technologyOperation.getName());
account.setSchedulingDate(LocalDateTime.now());
account.setAccountingBatchNo("BATCH-" + LocalDate.now());
+ account.setAdjustAmount(existedAdjustAmount);
+ account.setAdjustRemark(existedAdjustRemark);
+ account.setAdjustUser(existedAdjustUser);
+ account.setAdjustTime(existedAdjustTime);
baseMapper.insert(account);
}
@@ -173,22 +218,23 @@
if (dto == null) {
return new ProductionAccountDto();
}
- LocalDate[] dateRange = dto.getDateRange();
if ((dto.getEntryDateStart() == null || dto.getEntryDateEnd() == null)
- && dateRange != null
- && dateRange.length > 0) {
+ && dto.getDateRange() != null
+ && dto.getDateRange().length > 0) {
+ LocalDate rangeStart = parseDate(dto.getDateRange()[0]);
+ LocalDate rangeEnd = dto.getDateRange().length > 1 ? parseDate(dto.getDateRange()[1]) : rangeStart;
if (dto.getEntryDateStart() == null) {
- dto.setEntryDateStart(dateRange[0]);
+ dto.setEntryDateStart(rangeStart);
}
if (dto.getEntryDateEnd() == null) {
- dto.setEntryDateEnd(dateRange.length > 1 ? dateRange[1] : dateRange[0]);
+ dto.setEntryDateEnd(rangeEnd);
}
}
String dateType = dto.getDateType();
if ("day".equalsIgnoreCase(dateType)) {
- if (dto.getEntryDate() == null && dateRange != null && dateRange.length > 0) {
- dto.setEntryDate(dateRange[0]);
+ if (dto.getEntryDate() == null && dto.getDateRange() != null && dto.getDateRange().length > 0) {
+ dto.setEntryDate(parseDate(dto.getDateRange()[0]));
}
if (dto.getEntryDate() == null) {
dto.setEntryDate(dto.getEntryDateStart());
@@ -206,4 +252,15 @@
return dto;
}
+ private LocalDate parseDate(String dateValue) {
+ if (dateValue == null || dateValue.isEmpty()) {
+ return null;
+ }
+ try {
+ return LocalDate.parse(dateValue);
+ } catch (DateTimeParseException e) {
+ throw new ServiceException("鏃ユ湡鏍煎紡閿欒锛岃浣跨敤 yyyy-MM-dd");
+ }
+ }
+
}
--
Gitblit v1.9.3