liding
13 小时以前 c8fbeff3b07f96ffb4624dd64344ac00ec0c8ef8
1.优化正式库 2.yml设置
已修改10个文件
已添加2个文件
238 ■■■■■ 文件已修改
main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/entity/EquipmentUsageRecord.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/entity/OfficialInventory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/resources/db/migration/postgresql/V20250701142700__create_table_equipment_management.sql 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/PlusCodeGenerator.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml.example1 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-prod.yml.example 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java
@@ -8,6 +8,7 @@
import com.ruoyi.business.vo.OfficialInventoryVo;
import com.ruoyi.common.core.domain.R;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -23,6 +24,7 @@
@RestController
@AllArgsConstructor
@Slf4j
@RequestMapping("/officialInventory")
public class OfficialInventoryController {
@@ -61,6 +63,7 @@
        return R.ok(officialInventoryService.editOfficial(officialInventoryDto));
    }
    /**
     * åˆå¹¶
     */
main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
@@ -22,6 +22,6 @@
    private String supplierCoal; //供应商 + ç…¤ç§
    private List<CoalValue> coalValues; //媒质方案字段值
    private List<Map<String, String>> coalValues; //媒质方案字段值
}
main-business/src/main/java/com/ruoyi/business/entity/EquipmentUsageRecord.java
@@ -44,7 +44,7 @@
    @TableField(value = "department_id")
    private Long departmentId;
    /**
     * è®¾å¤‡çŠ¶æ€ï¼ˆæ­£å¸¸/故障/维修中)
     * è®¾å¤‡çŠ¶æ€ï¼ˆä½¿ç”¨ä¸­ï¼Œå·²å½’è¿˜ï¼‰
     */
    @TableField(value = "equipment_status")
    private String equipmentStatus;
main-business/src/main/java/com/ruoyi/business/entity/OfficialInventory.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.MyBaseEntity;
import lombok.Data;
@@ -19,8 +20,6 @@
@Data
@TableName("official_inventory")
public class OfficialInventory extends MyBaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
@@ -88,6 +87,7 @@
     * ç™»è®°æ—¥æœŸ
     */
    @TableField(value = "registration_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate registrationDate;
    /**
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
@@ -11,11 +11,15 @@
import com.ruoyi.business.service.EquipmentManagementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.vo.EquipmentManagementVo;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import java.beans.Transient;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -109,7 +113,18 @@
    }
    @Override
    @Transactional(isolation = Isolation.REPEATABLE_READ)
    public int delByIds(Long[] ids) {
        // 1. æ£€æŸ¥è®¾å¤‡æ˜¯å¦æ­£åœ¨ä½¿ç”¨ï¼ˆæ·»åŠ è¡Œé” for update)
        List<EquipmentUsageRecord> records = equipmentUsageRecordMapper.selectList(
                new LambdaQueryWrapper<EquipmentUsageRecord>()
                        .in(EquipmentUsageRecord::getEquipmentId, Arrays.asList(ids))
                        .last("FOR UPDATE") // æ·»åŠ è¡Œé”ï¼Œé”å®šæŸ¥è¯¢ç»“æžœ
        );
        if (!records.isEmpty()) {
            throw new BaseException("设备正在使用中,请核对!");
        } else {
        return equipmentManagementMapper.deleteByIds(Arrays.asList(ids));
    }
}
}
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
@@ -20,6 +20,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -92,6 +93,12 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addOrEditUsageRecord(EquipmentUsageRecordDto equipmentUsageRecordDto) {
        // å‚数校验
        if (equipmentUsageRecordDto == null) {
            throw new IllegalArgumentException("设备使用记录参数不能为空");
        }
        // å¤åˆ¶å±žæ€§åˆ°å®žä½“对象
        EquipmentUsageRecord equipmentUsageRecord = new EquipmentUsageRecord();
        BeanUtils.copyProperties(equipmentUsageRecordDto, equipmentUsageRecord);
@@ -99,12 +106,13 @@
        Long equipmentId = equipmentUsageRecordDto.getEquipmentId();
        Integer newUsageQuantity = equipmentUsageRecordDto.getUsageQuantity();
        // æŸ¥è¯¢è®¾å¤‡ä¿¡æ¯ï¼ˆå¸¦ä¹è§‚锁版本号)
        // æŸ¥è¯¢è®¾å¤‡ä¿¡æ¯
        EquipmentManagement equipment = equipmentManagementMapper.selectById(equipmentId);
        if (equipment == null) {
            throw new RuntimeException("设备不存在");
        }
        // æ–°å¢žè®°å½•逻辑
        if (Objects.isNull(equipmentUsageRecordDto.getId())) {
            // æ£€æŸ¥åº“存是否充足
            if (equipment.getQuantity() < newUsageQuantity) {
@@ -115,9 +123,18 @@
            equipment.setQuantity(equipment.getQuantity() - newUsageQuantity);
            equipmentManagementMapper.updateById(equipment);
            // åˆ›å»ºé¢†ç”¨è®°å½•
            // è®¾ç½®ä½¿ç”¨å¼€å§‹æ—¶é—´ä¸ºå½“前时间
            equipmentUsageRecord.setUsageStartTime(LocalDate.now());
            // å¦‚果状态为1(已归还),则设置结束时间
            if ("1".equals(equipmentUsageRecordDto.getEquipmentStatus())) {
                equipmentUsageRecord.setUsageEndTime(LocalDate.now());
            }
            return equipmentUsageRecordMapper.insert(equipmentUsageRecord);
        } else {
        }
        // æ›´æ–°è®°å½•逻辑
        else {
            // 1. æŸ¥è¯¢åŽŸé¢†ç”¨è®°å½•
            EquipmentUsageRecord originalRecord = equipmentUsageRecordMapper.selectById(equipmentUsageRecordDto.getId());
            if (originalRecord == null) {
@@ -128,7 +145,7 @@
            int quantityDelta = newUsageQuantity - originalRecord.getUsageQuantity();
            if (quantityDelta != 0) {
                // 3. æ£€æŸ¥è°ƒæ•´åŽåº“存是否充足(考虑增加和减少两种情况)
                // 3. æ£€æŸ¥è°ƒæ•´åŽåº“存是否充足
                int newInventory = equipment.getQuantity() - quantityDelta;
                if (newInventory < 0) {
                    throw new RuntimeException("库存不足,调整后库存将为:" + newInventory);
@@ -141,7 +158,13 @@
                }
            }
            // 5. æ›´æ–°é¢†ç”¨è®°å½•
            // 5. å¦‚果状态变为1(已归还),则设置结束时间为当前时间
            if ("1".equals(equipmentUsageRecordDto.getEquipmentStatus()) &&
                    (originalRecord.getEquipmentStatus() == null || !"1".equals(originalRecord.getEquipmentStatus()))) {
                equipmentUsageRecord.setUsageEndTime(LocalDate.now());
            }
            // 6. æ›´æ–°é¢†ç”¨è®°å½•
            return equipmentUsageRecordMapper.updateById(equipmentUsageRecord);
        }
    }
main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
@@ -391,7 +391,15 @@
                        dto.setSupplierCoal(supply.getSupplierName() + " - " + coalInfo.getCoal());
                    }
                    // è®¾ç½®ç…¤è´¨æ•°æ®
                    dto.setCoalValues(coalValuesMap.getOrDefault(inventory.getCoalPlanId(), Collections.emptyList()));
                    dto.setCoalValues(coalValuesMap.getOrDefault(inventory.getCoalPlanId(), Collections.emptyList())
                            .stream()
                            .map(coalValue -> {
                                Map<String, String> map = new HashMap<>();
                                map.put("fieldName", coalValue.getFieldName());
                                map.put("coalValue", coalValue.getCoalValue());
                                return map;
                            })
                            .collect(Collectors.toList()));
                    return dto;
                })
                .collect(Collectors.toList());
main-business/src/main/resources/db/migration/postgresql/V20250701142700__create_table_equipment_management.sql
@@ -7,7 +7,7 @@
    equipment_name   VARCHAR(100) NOT NULL,           -- è®¾å¤‡åç§°
    quantity         INT          NOT NULL DEFAULT 0, -- æ•°é‡
    specification    VARCHAR(50)  NOT NULL,           -- è§„格型号
    usage_status     VARCHAR(20)  NOT NULL,           -- ä½¿ç”¨çŠ¶æ€
    usage_status     VARCHAR(20),                     -- ä½¿ç”¨çŠ¶æ€
    using_department VARCHAR(50)  NOT NULL,           -- ä½¿ç”¨éƒ¨é—¨
    user_id          BIGINT,                          -- ä½¿ç”¨äºº
    storage_location VARCHAR(100) NOT NULL,           -- å­˜æ”¾ä½ç½®
pom.xml
@@ -272,12 +272,6 @@
            <version>${freemarker.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.38</version> <!-- é€‰ç”¨æœ€æ–°ç¨³å®šç‰ˆæœ¬ -->
        </dependency>
    </dependencies>
    <modules>
ruoyi-admin/src/main/java/com/ruoyi/PlusCodeGenerator.java
@@ -24,7 +24,6 @@
 * åŠŸèƒ½ï¼šæ ¹æ®æ•°æ®åº“è¡¨ç»“æž„è‡ªåŠ¨ç”ŸæˆEntity、Mapper、Service、Controller等代码
 * ä¿®å¤ï¼šè§£å†³Freemarker模板中generateService变量缺失的问题
 */
@SpringBootApplication
public class PlusCodeGenerator {
    // æ•°æ®åº“配置
ruoyi-admin/src/main/resources/application-druid.yml.example1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
# æ•°æ®æºé…ç½®
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
#        driverClassName: com.mysql.cj.jdbc.Driver     # mysql驱动
        driverClassName: org.postgresql.Driver
        druid:
            # ä¸»åº“数据源
            master:
#                mysql
#                url: jdbc:mysql://124.220.0.228:3300/ruoyi-java?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#                pg
#                url: jdbc:postgresql://localhost:5433/ruoyi-zd
                url: jdbc:postgresql://localhost:5433/zd-01
                username: postgres
                password: 123456
            # ä»Žåº“数据源
            slave:
                # ä»Žæ•°æ®æºå¼€å…³/默认关闭
                enabled: false
                url:
                username:
                password:
            # åˆå§‹è¿žæŽ¥æ•°
            initialSize: 5
            # æœ€å°è¿žæŽ¥æ± æ•°é‡
            minIdle: 10
            # æœ€å¤§è¿žæŽ¥æ± æ•°é‡
            maxActive: 20
            # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´
            maxWait: 60000
            # é…ç½®è¿žæŽ¥è¶…æ—¶æ—¶é—´
            connectTimeout: 30000
            # é…ç½®ç½‘络超时时间
            socketTimeout: 60000
            # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
            minEvictableIdleTimeMillis: 300000
            # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å¤§ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # é…ç½®æ£€æµ‹è¿žæŽ¥æ˜¯å¦æœ‰æ•ˆ
            validationQuery: SELECT VERSION()
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter:
                enabled: true
            statViewServlet:
                enabled: true
                # è®¾ç½®ç™½åå•,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # æŽ§åˆ¶å°ç®¡ç†ç”¨æˆ·åå’Œå¯†ç 
                login-username: ruoyi
                login-password: 123456
            filter:
                stat:
                    enabled: true
                    # æ…¢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true
# å…¬å¸æœåС噍 minio
minio:
#    endpoint: http://114.132.189.42/
#    port: 7019
#    secure: false
#    accessKey: admin
#    secretKey: 12345678
#    preview-expiry: 24 # é¢„览地址默认24小时
#    default-bucket: ruoyi-zd #  é»˜è®¤å­˜å‚¨æ¡¶
    endpoint: 127.0.0.1
    port: 9002
    secure: false
    accessKey: admin
    secretKey: 12345678
    preview-expiry: 24 # é¢„览地址默认24小时
    default-bucket: ruoyi-zd #  é»˜è®¤å­˜å‚¨æ¡¶
ruoyi-admin/src/main/resources/application-prod.yml.example
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
# æ•°æ®æºé…ç½®
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
#        driverClassName: com.mysql.cj.jdbc.Driver     # mysql驱动
        driverClassName: org.postgresql.Driver
        druid:
            # ä¸»åº“数据源
            master:
#                mysql
#                url: jdbc:mysql://124.220.0.228:3300/ruoyi-java?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#                pg
                url: jdbc:postgresql://114.132.189.42:5432/zd-test
                username: postgres
                password: bYD#nM+-BiLb
            # ä»Žåº“数据源
            slave:
                # ä»Žæ•°æ®æºå¼€å…³/默认关闭
                enabled: false
                url:
                username:
                password:
            # åˆå§‹è¿žæŽ¥æ•°
            initialSize: 5
            # æœ€å°è¿žæŽ¥æ± æ•°é‡
            minIdle: 10
            # æœ€å¤§è¿žæŽ¥æ± æ•°é‡
            maxActive: 20
            # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´
            maxWait: 60000
            # é…ç½®è¿žæŽ¥è¶…æ—¶æ—¶é—´
            connectTimeout: 30000
            # é…ç½®ç½‘络超时时间
            socketTimeout: 60000
            # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
            minEvictableIdleTimeMillis: 300000
            # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å¤§ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # é…ç½®æ£€æµ‹è¿žæŽ¥æ˜¯å¦æœ‰æ•ˆ
            validationQuery: SELECT VERSION()
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter:
                enabled: true
            statViewServlet:
                enabled: true
                # è®¾ç½®ç™½åå•,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # æŽ§åˆ¶å°ç®¡ç†ç”¨æˆ·åå’Œå¯†ç 
                login-username: ruoyi
                login-password: 123456
            filter:
                stat:
                    enabled: true
                    # æ…¢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true
# å…¬å¸æœåС噍 minio
minio:
    endpoint: http://114.132.189.42/
    port: 7019
    secure: false
    accessKey: admin
    secretKey: 12345678
    preview-expiry: 24 # é¢„览地址默认24小时
    default-bucket: ruoyi-zd #  é»˜è®¤å­˜å‚¨æ¡¶