From ff361539e3ffd6e62100e392ddda2f4ab9dfee62 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 27 五月 2026 13:15:42 +0800
Subject: [PATCH] 工序调整, 报工反改订单数量,判断是最后一道工序才修改订单完成数量
---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 100 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 83 insertions(+), 17 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 2b069af..c2d2292 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -15,13 +15,11 @@
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.production.dto.ProductionProductMainDto;
-import com.ruoyi.production.dto.ProductionReportDailySummaryDto;
-import com.ruoyi.production.dto.ProductionReportStateDto;
-import com.ruoyi.production.enums.ProductProcessEnum;
+import com.ruoyi.production.dto.*;
import com.ruoyi.production.mapper.ProductionProductReportDailyMapper;
import com.ruoyi.production.pojo.ProductionProductReportDaily;
import com.ruoyi.production.mapper.*;
@@ -101,6 +99,58 @@
IPage<ProductionProductMainDto> result = productionProductMainMapper.listPageProductionProductMainDetailDto(page, productionProductMainDto);
fillHourDefaults(result.getRecords());
return result;
+ }
+
+ @Override
+ public List<ProductionProductMainSummaryExportDto> listSummaryExportData(ProductionProductMainDto productionProductMainDto) {
+ return listPageProductionProductMainDto(new Page<>(1, -1), productionProductMainDto)
+ .getRecords()
+ .stream()
+ .map(item -> {
+ ProductionProductMainSummaryExportDto exportDto = new ProductionProductMainSummaryExportDto();
+ exportDto.setProcess(item.getProcess());
+ exportDto.setWorkOrderNo(item.getWorkOrderNo());
+ exportDto.setSalesContractNo(item.getSalesContractNo());
+ exportDto.setProductOrderNpsNo(item.getProductOrderNpsNo());
+ exportDto.setProductName(item.getProductName());
+ exportDto.setProductModelName(item.getProductModelName());
+ exportDto.setUnit(item.getUnit());
+ exportDto.setProjectTotalHours(item.getProjectTotalHours());
+ exportDto.setProcessStandardHours(item.getProcessStandardHours());
+ exportDto.setActualReportHours(item.getActualReportHours());
+ exportDto.setDailyPersonHours(item.getDailyPersonHours());
+ exportDto.setOutputTotalQuantity(item.getOutputTotalQuantity());
+ exportDto.setScrapTotalQuantity(item.getScrapTotalQuantity());
+ return exportDto;
+ })
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<ProductionProductMainDetailExportDto> listDetailExportData(ProductionProductMainDto productionProductMainDto) {
+ return listPageProductionProductMainDetailDto(new Page<>(1, -1), productionProductMainDto)
+ .getRecords()
+ .stream()
+ .map(item -> {
+ ProductionProductMainDetailExportDto exportDto = new ProductionProductMainDetailExportDto();
+ exportDto.setProductNo(item.getProductNo());
+ exportDto.setNickName(item.getNickName());
+ exportDto.setProcess(item.getProcess());
+ exportDto.setWorkOrderNo(item.getWorkOrderNo());
+ exportDto.setSalesContractNo(item.getSalesContractNo());
+ exportDto.setProductOrderNpsNo(item.getProductOrderNpsNo());
+ exportDto.setProductName(item.getProductName());
+ exportDto.setProductModelName(item.getProductModelName());
+ exportDto.setQuantity(item.getQuantity());
+ exportDto.setScrapQty(item.getScrapQty());
+ exportDto.setUnit(item.getUnit());
+ exportDto.setProcessStandardHours(item.getProcessStandardHours());
+ exportDto.setActualReportHours(item.getActualReportHours());
+ exportDto.setDailyPersonHours(item.getDailyPersonHours());
+ exportDto.setCreateTime(item.getCreateTime());
+ return exportDto;
+ })
+ .collect(Collectors.toList());
}
private void fillHourDefaults(List<ProductionProductMainDto> records) {
@@ -189,8 +239,19 @@
@Override
public ProductionReportStateDto reportState(Long workOrderId, Long productProcessRouteItemId) {
- ProductionProductMain running = getRunning(workOrderId, productProcessRouteItemId);
ProductionReportStateDto dto = new ProductionReportStateDto();
+ ProductWorkOrder workOrder = productWorkOrderMapper.selectById(workOrderId);
+ if (workOrder != null) {
+ BigDecimal planQty = workOrder.getPlanQuantity() == null ? BigDecimal.ZERO : workOrder.getPlanQuantity();
+ BigDecimal completeQty = workOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : workOrder.getCompleteQuantity();
+ // 鐢熶骇鎶ュ伐鏁伴噺宸插畬鎴�
+ if (planQty.compareTo(BigDecimal.ZERO) > 0 && completeQty.compareTo(planQty) >= 0) {
+ dto.setState(3);
+ return dto;
+ }
+ }
+
+ ProductionProductMain running = getRunning(workOrderId, productProcessRouteItemId);
if (running == null) {
dto.setState(1);
return dto;
@@ -286,6 +347,7 @@
LocalDateTime endTime = LocalDateTime.now();
long durationSeconds = Duration.between(productionProductMain.getReportStartTime(), endTime).getSeconds();
BigDecimal durationMinutes = secondsToMinutesExact(durationSeconds);
+
int finishRows = productionProductMainMapper.update(
null,
Wrappers.<ProductionProductMain>lambdaUpdate()
@@ -372,18 +434,26 @@
}
// 鏃犲伐鑹鸿矾绾垮満鏅細鎶ュ伐鍗宠鍏ョ敓浜ц鍗曞畬鎴愭暟閲�
+// int poRows = productOrderMapper.addCompleteQtyIfNotExceed(productOrder.getId(), productQty);
+// if (poRows <= 0) {
+// ProductOrder currentOrder = productOrderMapper.selectById(productOrder.getId());
+// throw new ServiceException("鏈鐢熶骇鏁伴噺涓嶈兘澶т簬璁㈠崟鍓╀綑鏁伴噺锛屽墿浣欐暟閲�: "
+// + (currentOrder == null ? "0" : currentOrder.getQuantity().subtract(currentOrder.getCompleteQuantity())));
+// }
+ List<ProductProcessRouteItemDto> productProcessRouteItemDtos = productProcessRouteItemMapper.listItem(productOrder.getId());
+ ProductOrder currentOrder = productOrderMapper.selectById(productOrder.getId());
+ if (productProcessRouteItemDtos.get(productProcessRouteItemDtos.size() - 1).getId().equals(dto.getProductProcessRouteItemId())) {
int poRows = productOrderMapper.addCompleteQtyIfNotExceed(productOrder.getId(), productQty);
if (poRows <= 0) {
- ProductOrder currentOrder = productOrderMapper.selectById(productOrder.getId());
throw new ServiceException("鏈鐢熶骇鏁伴噺涓嶈兘澶т簬璁㈠崟鍓╀綑鏁伴噺锛屽墿浣欐暟閲�: "
+ (currentOrder == null ? "0" : currentOrder.getQuantity().subtract(currentOrder.getCompleteQuantity())));
}
- ProductOrder latestOrder = productOrderMapper.selectById(productOrder.getId());
+ }
if (needQuality
- && latestOrder != null
- && latestOrder.getCompleteQuantity() != null
- && latestOrder.getQuantity() != null
- && latestOrder.getCompleteQuantity().compareTo(latestOrder.getQuantity()) >= 0) {
+ && currentOrder != null
+ && currentOrder.getCompleteQuantity() != null
+ && currentOrder.getQuantity() != null
+ && currentOrder.getCompleteQuantity().compareTo(currentOrder.getQuantity()) >= 0) {
// 璁㈠崟瀹屾垚鏃舵柊澧炲嚭鍘傛
createQualityInspect(productionProductMain.getId(), outputProductModelId, productQty, 2, null);
}
@@ -486,12 +556,8 @@
if (process == null || process.getType() == null) {
return "鍏朵粬";
}
- for (ProductProcessEnum value : ProductProcessEnum.values()) {
- if (value.getCode().equals(process.getType())) {
- return value.getInfo();
- }
- }
- return "鍏朵粬";
+ String dictLabel = DictUtils.getDictLabel("product_process_type", String.valueOf(process.getType()));
+ return (dictLabel == null || dictLabel.isEmpty()) ? "鍏朵粬" : dictLabel;
}
private void saveDailyDurations(ProductionProductMain main, LocalDateTime start, LocalDateTime end) {
--
Gitblit v1.9.3