From 1e123568c2f561013f5636e45dc0db30b17a3517 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 10 九月 2026 16:39:26 +0800
Subject: [PATCH] feat(basic): 添加产品条码功能并完善生产统计报表

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 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 2bd4923..7154c0e 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -15,12 +15,17 @@
 import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.device.mapper.DeviceLedgerMapper;
+import com.ruoyi.device.pojo.DeviceLedger;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.production.bean.dto.ProductStructureDto;
 import com.ruoyi.production.bean.dto.ProductionProductMainDto;
+import com.ruoyi.production.bean.vo.DeviceOutputStatVo;
+import com.ruoyi.production.bean.vo.PieceWageSummaryVo;
 import com.ruoyi.production.enums.ProductOrderStatusEnum;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.service.PieceRateConfigService;
 import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -43,6 +48,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -81,6 +87,8 @@
     private final StockUtils stockUtils;
     private final StockInRecordService stockInRecordService;
     private final StockInventoryService stockInventoryService;
+    private final DeviceLedgerMapper deviceLedgerMapper;
+    private final PieceRateConfigService pieceRateConfigService;
 
     @Override
     public IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto) {
@@ -275,6 +283,14 @@
         productionProductMain.setProductNo(generateProductNo());
         productionProductMain.setUserId(user == null ? dto.getUserId() : user.getUserId());
         productionProductMain.setUserName(user == null ? dto.getUserName() : user.getNickName());
+        if (dto.getDeviceId() != null) {
+            DeviceLedger device = deviceLedgerMapper.selectById(dto.getDeviceId());
+            if (device == null) {
+                throw new ServiceException("璁惧涓嶅瓨鍦紝ID=" + dto.getDeviceId());
+            }
+            productionProductMain.setDeviceId(device.getId());
+            productionProductMain.setDeviceName(device.getDeviceName());
+        }
         productionProductMain.setProductionOperationTaskId(taskId);
         productionProductMain.setStatus(0);
         productionProductMain.setWorkHour(dto.getWorkHour());
@@ -687,4 +703,18 @@
         // 鏌ヨ涓昏〃ID闆嗗悎
         return productionProductMainMapper.listMain(idList);
     }
+
+    @Override
+    public List<PieceWageSummaryVo> wageSummary(LocalDate startDate, LocalDate endDate, String userName) {
+        return productionProductMainMapper.wageSummary(startDate, endDate, userName);
+    }
+
+    @Override
+    public List<DeviceOutputStatVo> outputStat(String dimension, LocalDate startDate, LocalDate endDate, Long deviceId) {
+        String dim = dimension == null || dimension.isEmpty() ? "device" : dimension;
+        if (!Arrays.asList("device", "operation", "product").contains(dim)) {
+            throw new ServiceException("缁熻缁村害涓嶅悎娉曪紝浠呮敮鎸� device/operation/product");
+        }
+        return productionProductMainMapper.outputStat(dim, startDate, endDate, deviceId);
+    }
 }

--
Gitblit v1.9.3