From f19813677afaf7b9218a6ed2dee7381a395c3ad5 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 02 六月 2026 15:50:16 +0800
Subject: [PATCH] fix: 下载检查报告,时间格式化
---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 92 +++++++++++++++++++++++++++++-----------------
1 files changed, 58 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index b09e03d..cc5b1cf 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -42,11 +42,10 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
+
+import static cn.hutool.core.date.LocalDateTimeUtil.between;
@Service
@AllArgsConstructor
@@ -54,6 +53,7 @@
public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
private final SalesLedgerMapper salesLedgerMapper;
+ private final ProductionMachineRecordMapper productionMachineRecordMapper;
private IQualityInspectService qualityInspectService;
private ProductionProductMainMapper productionProductMainMapper;
@@ -115,7 +115,7 @@
//宸ヨ壓璺嚎涓綋鍓嶅伐搴忓搴旂殑浜у嚭瑙勬牸鍨嬪彿
ProductModel productModel = productModelMapper.selectById(productProcessRouteItem.getProductModelId());
//鏌ヨ璇ョ敓浜ц鍗曞搴旂殑bom
- ProductProcessRoute productProcessRoute = productProcessRouteMapper.selectById(productProcessRouteItem.getProductRouteId());
+ ProductProcessRoute productProcessRoute = Optional.ofNullable(productProcessRouteMapper.selectById(productProcessRouteItem.getProductRouteId())).orElse(new ProductProcessRoute());
/*鏂板鎶ュ伐涓昏〃*/
//鏌ヨ鏈�澶ф姤宸ョ紪鍙�
String datePrefix = "BG" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
@@ -158,8 +158,8 @@
productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
productionProductMain.setWorkOrderId(dto.getWorkOrderId());
- productionProductMain.setAuditUserId(dto.getAuditUserId());
- productionProductMain.setAuditUserName(dto.getAuditUserName());
+// productionProductMain.setAuditUserId(dto.getAuditUserId());
+// productionProductMain.setAuditUserName(dto.getAuditUserName());
productionProductMain.setStatus(0);
if (ObjectUtils.isNotEmpty(dto.getStartTime()) && ObjectUtils.isNotEmpty(dto.getEndTime())) {
productionProductMain.setStartTime(dto.getStartTime());
@@ -170,9 +170,14 @@
}
productionProductMain.setDeviceId(dto.getDeviceId());
productionProductMain.setDeviceName(dto.getDeviceName());
+
+ // 瀹℃壒浜轰负鑷繁 鐩存帴閫氳繃瀹℃壒
+ productionProductMain.setAuditUserName(SecurityUtils.getUsername());
+ productionProductMain.setAuditUserId(SecurityUtils.getUserId());
+
productionProductMainMapper.insert(productionProductMain);
/*鏂板鎶ュ伐鎶曞叆琛�*/
- List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId());
+ List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(Optional.ofNullable(productProcessRoute.getBomId()).orElse(0), productProcess.getId());
if (productStructureDtos.isEmpty()) {
//濡傛灉璇ュ伐搴忔病鏈変骇鍝佺粨鏋勭殑鎶曞叆鍝�,閭h繖涓姇鍏ュ搧鍜屼骇鍑哄搧鏄悓涓�涓�
ProductStructureDto productStructureDto = new ProductStructureDto();
@@ -181,14 +186,12 @@
productStructureDtos.add(productStructureDto);
}
for (ProductStructureDto productStructureDto : productStructureDtos) {
-
ProductionProductInput productionProductInput = new ProductionProductInput();
productionProductInput.setProductModelId(productStructureDto.getProductModelId());
productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
productionProductInput.setProductMainId(productionProductMain.getId());
productionProductInputMapper.insert(productionProductInput);
// stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
-
}
/*鏂板鎶ュ伐浜у嚭琛�*/
ProductionProductOutput productionProductOutput = new ProductionProductOutput();
@@ -197,6 +200,7 @@
productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO);
productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO);
productionProductOutput.setReplenishQty(dto.getReplenishQty());
+ productionProductOutput.setAddQty(dto.getAddQty() != null ? dto.getAddQty() : BigDecimal.ZERO);
productionProductOutputMapper.insert(productionProductOutput);
//鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
@@ -206,10 +210,10 @@
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(productQty));
if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())) {
- productWorkOrder.setActualStartTime(LocalDate.now());//瀹為檯寮�濮嬫椂闂�
+ productWorkOrder.setActualStartTime(LocalDateTime.now());//瀹為檯寮�濮嬫椂闂�
}
- if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) == 0) {
- productWorkOrder.setActualEndTime(LocalDate.now());//瀹為檯缁撴潫鏃堕棿
+ if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) >= 0) {
+ productWorkOrder.setActualEndTime(LocalDateTime.now());//瀹為檯缁撴潫鏃堕棿
}
productWorkOrder.setEndProductTime(now);
productWorkOrderMapper.updateById(productWorkOrder);
@@ -218,17 +222,21 @@
if (ObjectUtils.isNull(productOrder.getStartTime())) {
productOrder.setStartTime(now);//寮�濮嬫椂闂�
}
- if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+ if (productProcessRouteItem.getDragSort() >= productProcessRouteItems.size() -1 ) {
//濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(productQty));
- if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
+ if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) >= 0) {
productOrder.setEndTime(now);//缁撴潫鏃堕棿
}
}
productOrderMapper.updateById(productOrder);
}
-
- //nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
+ ProductAuditVo productAuditVo = new ProductAuditVo();
+ productAuditVo.setId(productionProductMain.getId());
+ productAuditVo.setAuditStatus(AuditEnum.AUDIT_SUCCESS);
+ productAuditVo.setAuditOpinion("");
+ ((ProductionProductMainService) AopContext.currentProxy()).auditProductMain(productAuditVo);
+// nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
return true;
}
@@ -329,7 +337,7 @@
//瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
int inspectType = 1;
String process = productProcess.getName();//宸ュ簭
- if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+ if (productProcessRouteItem.getDragSort() == (productProcessRouteItems.size()-1)) {
//鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
inspectType = 2;
process = null;
@@ -363,26 +371,42 @@
}
} else {
//鐩存帴鍏ュ簱
- stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), "-", "-", "-");
+ if (productProcessRouteItem.getDragSort() == (productProcessRouteItems.size()-1)) {
+ //鏈�鍚庝竴閬撳伐搴忔墠浼氬叆搴�
+ stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), "-", "-", "-");
+ }
}
/*娣诲姞鐢熶骇鏍哥畻 鍖哄垎宸ュ簭鏄浠惰繕鏄鏃�*/
BigDecimal workHours = productProcess.getSalaryQuota();
- ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
- String userIds = productWorkOrder.getUserIds();
- if (ObjectUtils.isNotEmpty(userIds)) {
- for (String s : userIds.split(",")) {
- SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
- .productMainId(productionProductMain.getId())
- .schedulingUserId(Long.parseLong(s))
- .schedulingUserName(userMapper.selectUserById(Long.parseLong(s)).getNickName())
- .finishedNum(productQty)
- .workHours(workHours)
- .process(productProcess.getName())
- .schedulingDate(LocalDate.now())
- .tenantId(productionProductOutput.getTenantId())
- .build();
- salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
+ List<ProductionMachineRecord> productionMachineRecords = productionMachineRecordMapper.selectList(Wrappers.<ProductionMachineRecord>lambdaQuery().eq(ProductionMachineRecord::getWorkOrderId, productionProductMain.getWorkOrderId()));
+ if (ObjectUtils.isNotEmpty(productionMachineRecords)) {
+ for (ProductionMachineRecord productionMachineRecord : productionMachineRecords) {
+ //璇存槑宸茬粡娣诲姞杩囦簡锛屼笉娣诲姞浜�
+ if (productionMachineRecord.getReportStatus()) {
+ continue;
+ }
+ for (String s : productionMachineRecord.getOperatorId().split(",")) {
+ Long minutes = 0L;
+ if (productionMachineRecord.getMachineStartTime() != null) {
+ minutes = between(productionMachineRecord.getMachineStartTime(), LocalDateTime.now()).toMinutes();
+ }
+ SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
+ .productMainId(productionProductMain.getId())
+ .schedulingUserId(Long.parseLong(s))
+ .schedulingUserName(Optional.of(userMapper.selectUserById(Long.parseLong(s))).orElse(new SysUser()).getNickName())
+ .finishedNum(productQty)
+ .workHours(workHours)
+ .process(productProcess.getName())
+ .schedulingDate(LocalDate.now())
+ .tenantId(productionProductOutput.getTenantId())
+ .deviceId(productionMachineRecord.getMachineId())
+ .workHour(minutes)
+ .build();
+ salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
+ }
+ productionMachineRecord.setReportStatus(true);
+ productionMachineRecordMapper.updateById(productionMachineRecord);
}
}
}
--
Gitblit v1.9.3