maven
2025-10-10 173f44a1f9a59509996192e3446cbd26f2613b5e
yys  新增关键煤种锁仓模块
已添加8个文件
已修改1个文件
352 ■■■■■ 文件已修改
main-business/src/main/java/com/ruoyi/business/controller/KeyCoalLocksController.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/entity/KeyCoalLocks.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/mapper/KeyCoalLocksMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/KeyCoalLocksService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/KeyCoalLocksServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/utils/OrderUtils.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/resources/db/migration/postgresql/V20250624092100__create_table_key_coal_locks.sql 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/resources/mapper/KeyCoalLocksMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/controller/KeyCoalLocksController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.business.dto.InspectionTaskDto;
import com.ruoyi.business.entity.InspectionTask;
import com.ruoyi.business.entity.KeyCoalLocks;
import com.ruoyi.business.mapper.KeyCoalLocksMapper;
import com.ruoyi.business.service.KeyCoalLocksService;
import com.ruoyi.business.utils.OrderUtils;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * @author :yys
 * @date : 2025/10/10 10:18
 */
@RestController
@RequestMapping("/keyCoalLocks")
public class KeyCoalLocksController extends BaseController{
    @Autowired
    private KeyCoalLocksService keyCoalLocksService;
    @Autowired
    private KeyCoalLocksMapper keyCoalLocksMapper;
    /**
     * å…³é”®ç…¤ç§é”ä»“表查询
     */
    @GetMapping("/list")
    public R<IPage<KeyCoalLocks>> list(Page<KeyCoalLocks> page, KeyCoalLocks keyCoalLocks) {
        IPage<KeyCoalLocks> list = keyCoalLocksService.getListPage(page,keyCoalLocks);
        return R.ok(list);
    }
    /**
     * æ·»åŠ å…³é”®ç…¤ç§é”ä»“è¡¨
     */
    @PostMapping("/add")
    public R add(@RequestBody KeyCoalLocks keyCoalLocks) {
        String code = OrderUtils.countTodayByCreateTime(keyCoalLocksMapper, "LK");
        keyCoalLocks.setLockUser(getLoginUser().getUsername());
        keyCoalLocks.setLockCode(code);
        return R.ok(keyCoalLocksService.save(keyCoalLocks));
    }
    /**
     * ä¿®æ”¹å…³é”®ç…¤ç§é”ä»“表
     */
    @PostMapping("/edit")
    public R update(@RequestBody KeyCoalLocks keyCoalLocks) {
        return R.ok(keyCoalLocksService.updateById(keyCoalLocks));
    }
    /**
     * åˆ é™¤å…³é”®ç…¤ç§é”ä»“表
     */
    @DeleteMapping("/del")
    public R delete(@RequestBody List<Long> ids) {
        return R.ok(keyCoalLocksService.removeByIds(ids));
    }
}
main-business/src/main/java/com/ruoyi/business/entity/KeyCoalLocks.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package com.ruoyi.business.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.MyBaseEntity;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
/**
 * ç…¤ä»“实体类
 */
@Data
@TableName("key_coal_locks")
public class KeyCoalLocks extends MyBaseEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * é”ä»“编号
     */
    @TableField("lock_code")
    private String lockCode;
    /**
     * ç…¤ç§åç§°
     */
    @TableField("coal_name")
    private String coalName;
    /**
     * ä¾›åº”商
     */
    @TableField("supplier_name")
    private String supplierName;
    /**
     * æ€»åº“存量(吨)
     */
    @TableField("total_inventory")
    private Double totalInventory;
    /**
     * é”ä»“数量(吨)
     */
    @TableField("lock_quantity")
    private Double lockQuantity;
    /**
     * å¯ç”¨æ•°é‡(吨)
     */
    @TableField("available_quantity")
    private Double availableQuantity;
    /**
     * é”ä»“状态
     */
    @TableField("lock_status")
    private String lockStatus;
    /**
     * é”ä»“原因
     */
    @TableField("lock_reason")
    private String lockReason;
    /**
     * é”ä»“人
     */
    @TableField("lock_user")
    private String lockUser;
    /**
     * é”ä»“æ—¶é—´
     */
    @TableField("lock_time")
    private String lockTime;
    /**
     * è§£é”æ—¶é—´
     */
    @TableField("expected_unlock_time")
    private String expectedUnlockTime;
    /**
     * å¤‡æ³¨
     */
    @TableField("remarks")
    private String remarks;
}
main-business/src/main/java/com/ruoyi/business/mapper/KeyCoalLocksMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.business.entity.KeyCoalLocks;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author :yys
 * @date : 2025/10/10 10:14
 */
@Mapper
public interface KeyCoalLocksMapper extends BaseMapper<KeyCoalLocks> {
}
main-business/src/main/java/com/ruoyi/business/service/KeyCoalLocksService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.business.entity.InspectionTask;
import com.ruoyi.business.entity.KeyCoalLocks;
/**
 * @author :yys
 * @date : 2025/10/10 10:16
 */
public interface KeyCoalLocksService extends IService<KeyCoalLocks> {
    /**
     * èŽ·å–åˆ—è¡¨
     * @param page
     * @param keyCoalLocks
     * @return
     */
    IPage<KeyCoalLocks> getListPage(Page<KeyCoalLocks> page, KeyCoalLocks keyCoalLocks);
}
main-business/src/main/java/com/ruoyi/business/service/impl/KeyCoalLocksServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.entity.InspectionTask;
import com.ruoyi.business.entity.KeyCoalLocks;
import com.ruoyi.business.mapper.KeyCoalLocksMapper;
import com.ruoyi.business.service.KeyCoalLocksService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * @author :yys
 * @date : 2025/10/10 10:17
 */
@Service
@Slf4j
public class KeyCoalLocksServiceImpl extends ServiceImpl<KeyCoalLocksMapper, KeyCoalLocks> implements KeyCoalLocksService {
    @Autowired
    private KeyCoalLocksMapper keyCoalLocksMapper;
    @Override
    public IPage<KeyCoalLocks> getListPage(Page<KeyCoalLocks> page, KeyCoalLocks keyCoalLocks) {
        LambdaQueryWrapper<KeyCoalLocks> keyCoalLocksLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(keyCoalLocks != null){
            if(!StringUtils.isEmpty(keyCoalLocks.getCoalName())){
                keyCoalLocksLambdaQueryWrapper.like(KeyCoalLocks::getCoalName,keyCoalLocks.getCoalName());
            }
            if(!StringUtils.isEmpty(keyCoalLocks.getLockStatus())){
                keyCoalLocksLambdaQueryWrapper.eq(KeyCoalLocks::getLockStatus,keyCoalLocks.getLockStatus());
            }
            if(!StringUtils.isEmpty(keyCoalLocks.getSupplierName())){
                keyCoalLocksLambdaQueryWrapper.like(KeyCoalLocks::getSupplierName,keyCoalLocks.getSupplierName());
            }
            if(!StringUtils.isEmpty(keyCoalLocks.getLockTime())){
                keyCoalLocksLambdaQueryWrapper.like(KeyCoalLocks::getLockTime,keyCoalLocks.getLockTime());
            }
        }
        return keyCoalLocksMapper.selectPage(page,keyCoalLocksLambdaQueryWrapper);}
}
main-business/src/main/java/com/ruoyi/business/utils/OrderUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.ruoyi.business.utils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
 * @author :yys
 * @date : 2025/9/15 15:31
 */
public class OrderUtils {
    /**
     * æŸ¥è¯¢å½“天(基于createTime字段)的记录数量
     * @param mapper å®žä½“类对应的BaseMapper
     * @param <T> å®žä½“类泛型
     * @return å½“天记录数量
     */
    public static <T> String countTodayByCreateTime(BaseMapper<T> mapper,String preFix) {
        // èŽ·å–å½“å¤©å¼€å§‹æ—¶é—´ï¼ˆ00:00:00)
        LocalDateTime todayStart = LocalDateTime.of(
                LocalDateTime.now().toLocalDate(),
                LocalTime.MIN
        );
        // èŽ·å–å½“å¤©ç»“æŸæ—¶é—´ï¼ˆ23:59:59.999)
        LocalDateTime todayEnd = LocalDateTime.of(
                LocalDateTime.now().toLocalDate(),
                LocalTime.MAX
        );
        // è½¬æ¢ä¸ºDate类型(如果实体类中createTime是LocalDateTime可直接使用)
        Date startDate = Date.from(todayStart.atZone(ZoneId.systemDefault()).toInstant());
        Date endDate = Date.from(todayEnd.atZone(ZoneId.systemDefault()).toInstant());
        // æž„建查询条件
        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("create_time", startDate)  // å¤§äºŽç­‰äºŽå½“天开始
                .lt("create_time", endDate);   // å°äºŽå½“天结束(避免毫秒精度问题)
        // æ‰§è¡ŒæŸ¥è¯¢
        Long aLong = mapper.selectCount(queryWrapper);
        // æ‹¼æŽ¥è®¢å•编号 preFix + æ—¶é—´ï¼ˆyyyyMMdd) + è®¢å•数量(001)
        return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1));}
}
main-business/src/main/resources/db/migration/postgresql/V20250624092100__create_table_key_coal_locks.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
DROP TABLE IF EXISTS coal_lock;
-- åˆ›å»ºé”ä»“表
CREATE TABLE coal_lock
(
    id                 int4 PRIMARY KEY,          -- id
    lock_code          varchar(255),              -- é”ä»“编号
    coal_name          varchar(255),              -- ç…¤ç§åç§°
    supplier_name      varchar(255),              -- ä¾›åº”商
    total_inventory    varchar(255),              -- æ€»åº“存量(吨)
    lock_quantity      varchar(255),              -- é”ä»“数量(吨)
    available_quantity varchar(255),              -- å¯ç”¨æ•°é‡(吨)
    lock_status        varchar(255),              -- é”ä»“状态
    lock_reason        varchar(255),              -- é”ä»“原因
    lock_user          varchar(255),              -- é”ä»“人
    lock_time          varchar(255),              -- é”ä»“æ—¶é—´
    expected_unlock_time varchar(255),           -- è§£é”æ—¶é—´
    remarks            varchar(255),              -- å¤‡æ³¨
    create_by          varchar(255),              -- åˆ›å»ºè€…
    create_time        timestamp(6),              -- åˆ›å»ºæ—¶é—´
    update_by          varchar(255),              -- ä¿®æ”¹è€…
    update_time        timestamp(6),              -- ä¿®æ”¹æ—¶é—´
    deleted            int4                        -- é€»è¾‘删除
);
-- æ·»åŠ è¡¨æ³¨é‡Š
COMMENT ON TABLE coal_lock IS '锁仓表';
-- æ·»åŠ å­—æ®µæ³¨é‡Š
COMMENT ON COLUMN coal_lock.id IS 'id';
COMMENT ON COLUMN coal_lock.lock_code IS '锁仓编号';
COMMENT ON COLUMN coal_lock.coal_name IS '煤种名称';
COMMENT ON COLUMN coal_lock.supplier_name IS '供应商';
COMMENT ON COLUMN coal_lock.total_inventory IS '总库存量(吨)';
COMMENT ON COLUMN coal_lock.lock_quantity IS '锁仓数量(吨)';
COMMENT ON COLUMN coal_lock.available_quantity IS '可用数量(吨)';
COMMENT ON COLUMN coal_lock.lock_status IS '锁仓状态';
COMMENT ON COLUMN coal_lock.lock_reason IS '锁仓原因';
COMMENT ON COLUMN coal_lock.lock_user IS '锁仓人';
COMMENT ON COLUMN coal_lock.lock_time IS '锁仓时间';
COMMENT ON COLUMN coal_lock.expected_unlock_time IS '解锁时间';
COMMENT ON COLUMN coal_lock.remarks IS '备注';
COMMENT ON COLUMN coal_lock.create_by IS '创建者';
COMMENT ON COLUMN coal_lock.create_time IS '创建时间';
COMMENT ON COLUMN coal_lock.update_by IS '修改者';
COMMENT ON COLUMN coal_lock.update_time IS '修改时间';
COMMENT ON COLUMN coal_lock.deleted IS '逻辑删除';
main-business/src/main/resources/mapper/KeyCoalLocksMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.business.mapper.KeyCoalLocksMapper">
</mapper>
ruoyi-admin/src/main/resources/application-druid.yml
@@ -87,7 +87,7 @@
        # redis é…ç½®
        redis:
            # åœ°å€
            host: 127.0.0.1
            host: 192.168.1.185
            # ç«¯å£ï¼Œé»˜è®¤ä¸º6379
            port: 6379
            # æ•°æ®åº“索引