gongchunyi
2026-04-29 e3799b9d987596de79ae7607a205d547c8060340
feat: 工序修改为字典,首页产品部件统计调整
已修改8个文件
已删除1个文件
124 ■■■■■ 文件已修改
src/main/java/com/ruoyi/home/controller/HomeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/dto/processDataProductionStatisticsDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/service/HomeService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/enums/ProductProcessEnum.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductProcessMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -173,8 +173,8 @@
    @GetMapping("/processDataProductionStatistics")
    @ApiOperation("工序数据生产统计数据")
    public AjaxResult processDataProductionStatistics(@DefaultType Integer type,@RequestParam(required = false) List<Long> processIds) {
        List<processDataProductionStatisticsDto> list = homeService.processDataProductionStatistics(type, processIds);
    public AjaxResult processDataProductionStatistics(@DefaultType Integer type,@RequestParam(required = false) List<Long> processTypes) {
        List<processDataProductionStatisticsDto> list = homeService.processDataProductionStatistics(type, processTypes);
        return AjaxResult.success(list);
    }
src/main/java/com/ruoyi/home/dto/processDataProductionStatisticsDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.home.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.math.BigDecimal;
@@ -23,6 +24,12 @@
    private String processName;
    /**
     * å·¥åºç±»åž‹
     */
    @JsonIgnore
    private Integer processType;
    /**
     * ç´¯è®¡æ€»æŠ•å…¥
     */
    private BigDecimal totalInput;
src/main/java/com/ruoyi/home/service/HomeService.java
@@ -94,5 +94,5 @@
    QualityStatisticsDto qualityInspectionStatistics(Integer type);
    List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type, List<Long> processIds);
    List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type, List<Long> processTypes);
}
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -20,6 +20,7 @@
import com.ruoyi.collaborativeApproval.mapper.NoticeMapper;
import com.ruoyi.collaborativeApproval.pojo.Notice;
import com.ruoyi.common.enums.ApproveTypeEnum;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.device.mapper.DeviceRepairMapper;
@@ -2481,7 +2482,7 @@
    }
    @Override
    public List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type, List<Long> processIds) {
    public List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type, List<Long> processTypes) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        Long userId = SecurityUtils.isAdmin(loginUser.getUserId()) ? null : loginUser.getUserId();
@@ -2510,6 +2511,24 @@
        LocalDateTime startDateTime = startDate.atStartOfDay();
        LocalDateTime endDateTime = endDate.atTime(LocalTime.MAX);
        return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
        List<processDataProductionStatisticsDto> result = productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processTypes);
        if (!ObjectUtils.isEmpty(result)) {
            result.forEach(dto -> {
                if (dto == null) {
                    return;
                }
                Integer processType = dto.getProcessType();
                String dictLabel = null;
                if (processType != null) {
                    dictLabel = DictUtils.getDictLabel("product_process_type", String.valueOf(processType));
                }
                if (StringUtils.isEmpty(dictLabel)) {
                    dictLabel = "其他";
                }
                dto.setProcessName(dictLabel);
            });
        }
        return result;
    }
}
src/main/java/com/ruoyi/production/enums/ProductProcessEnum.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java
@@ -17,5 +17,5 @@
    
    IPage<ProductProcessDto> listPage(Page page, @Param("productProcessDto") ProductProcessDto productProcessDto);
    List<processDataProductionStatisticsDto> calculateProductionStatistics(LocalDateTime startDateTime, LocalDateTime endDateTime, Long userId, List<Long> processIds);
    List<processDataProductionStatisticsDto> calculateProductionStatistics(LocalDateTime startDateTime, LocalDateTime endDateTime, Long userId, List<Long> processTypes);
}
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -11,11 +11,11 @@
import com.ruoyi.basic.service.IProductModelService;
import com.ruoyi.basic.service.IProductService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.production.dto.ProductProcessDto;
import com.ruoyi.production.dto.ProductProcessImportDto;
import com.ruoyi.production.enums.ProductProcessEnum;
import com.ruoyi.production.mapper.ProcessRouteItemMapper;
import com.ruoyi.production.mapper.ProductProcessMapper;
import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
@@ -187,10 +187,10 @@
                if (ObjectUtils.isEmpty(importDto.getProductProcessType())) {
                    throw new ServiceException("第" + rowNum + "行:部件【" + importDto.getName() + "】的类型不能为空");
                }
                ProductProcessEnum enumByInfo = ProductProcessEnum.getEnumByInfo(importDto.getProductProcessType());
                if (ObjectUtils.isEmpty(enumByInfo)) {
                String dictValue = DictUtils.getDictValue("product_process_type", importDto.getProductProcessType());
                if (StringUtils.isEmpty(dictValue)) {
                    throw new ServiceException("第" + rowNum + "行:部件【" + importDto.getName() + "】的类型【"
                            + importDto.getProductProcessType() + "】不存在,请填写正确的类型:加工、刮板冷芯制作、管路组对、罐体连接及调试、测试打压、其他");
                            + importDto.getProductProcessType() + "】不存在,请填写正确的类型:" + DictUtils.getDictLabels("product_process_type"));
                }
                // æ£€éªŒè®¡åˆ’工时
                if (importDto.getSalaryQuota() == null || importDto.getSalaryQuota().compareTo(BigDecimal.ZERO) < 0) {
@@ -207,7 +207,7 @@
                ProductProcess productProcess = new ProductProcess();
                BeanUtils.copyProperties(importDto, productProcess);
                productProcess.setProductModelId(productModel.getId());
                productProcess.setType(enumByInfo.getCode());
                productProcess.setType(Integer.valueOf(dictValue));
                if (sysUser != null) {
                    productProcess.setPlannerId(sysUser.getUserId());
                    productProcess.setPlannerName(sysUser.getNickName());
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -15,6 +15,7 @@
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;
@@ -23,7 +24,6 @@
import com.ruoyi.production.dto.ProductionProductMainSummaryExportDto;
import com.ruoyi.production.dto.ProductionReportDailySummaryDto;
import com.ruoyi.production.dto.ProductionReportStateDto;
import com.ruoyi.production.enums.ProductProcessEnum;
import com.ruoyi.production.mapper.ProductionProductReportDailyMapper;
import com.ruoyi.production.pojo.ProductionProductReportDaily;
import com.ruoyi.production.mapper.*;
@@ -551,12 +551,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) {
src/main/resources/mapper/production/ProductProcessMapper.xml
@@ -35,7 +35,7 @@
    <select id="calculateProductionStatistics" resultType="com.ruoyi.home.dto.processDataProductionStatisticsDto">
        SELECT
        pp.name AS processName,
        pp.type AS processType,
        SUM(pi.quantity) AS totalInput,
        SUM(distinct ppo.scrap_qty) AS totalScrap,
        SUM(distinct (ppo.quantity - ppo.scrap_qty)) AS totalOutput
@@ -55,15 +55,14 @@
            <if test="userId != null">
                AND ppm.user_id = #{userId}
            </if>
            <if test="processIds != null and processIds.size() > 0">
                AND pp.id IN
                <foreach collection="processIds" item="id" open="(" separator="," close=")">
            <if test="processTypes != null and processTypes.size() > 0">
                AND pp.type IN
                <foreach collection="processTypes" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
        </where>
        GROUP BY
        pp.id,
        pp.name
        pp.type
    </select>
</mapper>