zss
16 小时以前 1c54d0af79a533ecadff702e7dca92d9a136758d
安全生产--危险物料管控
已添加7个文件
已修改1个文件
383 ■■■■■ 文件已修改
src/main/java/com/ruoyi/safe/controller/SafeHazardController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/controller/SafeHazardRecordController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/dto/SafeHazardRecordDto.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/mapper/SafeHazardRecordMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/pojo/SafeHazardRecord.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/service/SafeHazardRecordService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/service/impl/SafeHazardRecordServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/safe/SafeHazardRecordMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/safe/controller/SafeHazardController.java
@@ -40,11 +40,13 @@
    public R add(@RequestBody SafeHazard safeHazard) {
        return R.ok(safeHazardService.save(safeHazard));
    }
    @ApiOperation("修改危险源台账")
    @PutMapping ()
    public R update(@RequestBody  SafeHazard safeHazard) {
        return R.ok(safeHazardService.updateById(safeHazard));
    }
    @ApiOperation("删除危险源台账")
    @DeleteMapping("/{ids}")
    public R delSafeHazard(@RequestBody List<Integer> ids) {
src/main/java/com/ruoyi/safe/controller/SafeHazardRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.ruoyi.safe.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.safe.dto.SafeHazardRecordDto;
import com.ruoyi.safe.pojo.SafeHazard;
import com.ruoyi.safe.pojo.SafeHazardRecord;
import com.ruoyi.safe.service.SafeHazardRecordService;
import com.ruoyi.safe.service.SafeHazardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * <p>
 * å®‰å…¨ç”Ÿäº§--危险物料管控 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-28 01:13:40
 */
@RestController
@RequestMapping("/safeHazardRecord")
@Api(tags = "安全生产--危险物料管控")
public class SafeHazardRecordController {
    @Autowired
    private SafeHazardRecordService safeHazardRecordService;
    @GetMapping("/page")
    @ApiOperation("分页查询")
    public R page(Page page, SafeHazardRecordDto safeHazardRecordDto) {
        return R.ok(safeHazardRecordService.pageSafeHazardRecord(page, safeHazardRecordDto));
    }
    @ApiOperation("领用")
    @PostMapping("/borrow")
    public R borrow(@RequestBody SafeHazardRecord safeHazardRecord) {
        return R.ok(safeHazardRecordService.borrow(safeHazardRecord));
    }
    @ApiOperation("归还")
    @PutMapping("/return")
    public R returnSafeHazardRecord(@RequestBody  SafeHazardRecord safeHazardRecord) {
        return R.ok(safeHazardRecordService.returnSafeHazardRecord(safeHazardRecord));
    }
    @ApiOperation("删除")
    @DeleteMapping("/{ids}")
    public R delSafeHazardRecord(@RequestBody List<Integer> ids) {
        return R.ok(safeHazardRecordService.delSafeHazardRecord(ids));
    }
}
src/main/java/com/ruoyi/safe/dto/SafeHazardRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.ruoyi.safe.dto;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.safe.pojo.SafeHazardRecord;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class SafeHazardRecordDto extends SafeHazardRecord {
    @ApiModelProperty("领用人")
    private String applyUserName;
    @ApiModelProperty("归还人")
    private String returnUserName;
    @ApiModelProperty("危险源名称")
    private String name;
    @ApiModelProperty("危险源编码")
    private String code;
    @ApiModelProperty("危险源类型")
    private String type;
    @ApiModelProperty("风险等级")
    private String riskLevel;
    @ApiModelProperty("所在位置")
    private String location;
}
src/main/java/com/ruoyi/safe/mapper/SafeHazardRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.safe.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.safe.dto.SafeHazardRecordDto;
import com.ruoyi.safe.pojo.SafeHazardRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å®‰å…¨ç”Ÿäº§--危险物料管控 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-28 01:13:40
 */
@Mapper
public interface SafeHazardRecordMapper extends BaseMapper<SafeHazardRecord> {
    IPage<SafeHazardRecordDto> pageSafeHazardRecord(Page page, @Param("c") SafeHazardRecordDto safeHazardRecordDto);
}
src/main/java/com/ruoyi/safe/pojo/SafeHazardRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.ruoyi.safe.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
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 java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * å®‰å…¨ç”Ÿäº§--危险物料管控
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-28 01:13:40
 */
@Getter
@Setter
@TableName("safe_hazard_record")
@ApiModel(value = "SafeHazardRecord对象", description = "安全生产--危险物料管控")
public class SafeHazardRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("单号")
    private String materialRecordCode;
    @ApiModelProperty("关联危险源台账 ID")
    private Integer safeHazardId;
    @ApiModelProperty("领用人 ID")
    private Integer applyUserId;
    @ApiModelProperty("领用时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate applyTime;
    @ApiModelProperty("领用数量")
    private BigDecimal applyQty;
    @ApiModelProperty("领用用途")
    private String applyPurpose;
    @ApiModelProperty("归还人 ID")
    private Integer returnUserId;
    @ApiModelProperty("归还时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate returnTime;
    @ApiModelProperty("归还情况说明")
    private String returnRemark;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private Integer tenantId;
}
src/main/java/com/ruoyi/safe/service/SafeHazardRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.safe.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.safe.dto.SafeHazardRecordDto;
import com.ruoyi.safe.pojo.SafeHazardRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * å®‰å…¨ç”Ÿäº§--危险物料管控 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-28 01:13:40
 */
public interface SafeHazardRecordService extends IService<SafeHazardRecord> {
    IPage<SafeHazardRecordDto> pageSafeHazardRecord(Page page, SafeHazardRecordDto safeHazardRecordDto);
    int borrow(SafeHazardRecord safeHazardRecord);
    int returnSafeHazardRecord(SafeHazardRecord safeHazardRecord);
    int delSafeHazardRecord(List<Integer> ids);
}
src/main/java/com/ruoyi/safe/service/impl/SafeHazardRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.ruoyi.safe.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.safe.dto.SafeHazardRecordDto;
import com.ruoyi.safe.mapper.SafeHazardMapper;
import com.ruoyi.safe.pojo.SafeHazard;
import com.ruoyi.safe.pojo.SafeHazardRecord;
import com.ruoyi.safe.mapper.SafeHazardRecordMapper;
import com.ruoyi.safe.service.SafeHazardRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.List;
/**
 * <p>
 * å®‰å…¨ç”Ÿäº§--危险物料管控 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-28 01:13:40
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class SafeHazardRecordServiceImpl extends ServiceImpl<SafeHazardRecordMapper, SafeHazardRecord> implements SafeHazardRecordService {
    @Autowired
    private SafeHazardRecordMapper safeHazardRecordMapper;
    @Autowired
    private SafeHazardMapper safeHazardMapper;
    @Override
    public IPage<SafeHazardRecordDto> pageSafeHazardRecord(Page page, SafeHazardRecordDto safeHazardRecordDto) {
        return safeHazardRecordMapper.pageSafeHazardRecord(page, safeHazardRecordDto);
    }
    @Override
    public int borrow(SafeHazardRecord safeHazardRecord) {
        //判断数量是否满足
        SafeHazard safeHazard = safeHazardMapper.selectById(safeHazardRecord.getSafeHazardId());
        if (safeHazard.getStockQty().compareTo(safeHazardRecord.getApplyQty())<0) {
            throw new RuntimeException("库存数量不足");
        }
        //领用
        safeHazardRecord.setApplyUserId(SecurityUtils.getUserId().intValue());
        safeHazardRecord.setApplyTime(LocalDate.now());
        safeHazardRecordMapper.insert(safeHazardRecord);
        //减库存
        safeHazard.setStockQty(safeHazard.getStockQty().subtract(safeHazardRecord.getApplyQty()));
        safeHazardMapper.updateById(safeHazard);
        return 0;
    }
    @Override
    public int returnSafeHazardRecord(SafeHazardRecord safeHazardRecord) {
        SafeHazard safeHazard = safeHazardMapper.selectById(safeHazardRecord.getSafeHazardId());
        //归还
        safeHazardRecord.setReturnUserId(SecurityUtils.getUserId().intValue());
        safeHazardRecord.setReturnTime(LocalDate.now());
        safeHazardRecordMapper.updateById(safeHazardRecord);
        //增库存
        safeHazard.setStockQty(safeHazard.getStockQty().add(safeHazardRecord.getApplyQty()));
        safeHazardMapper.updateById(safeHazard);
        return 0;
    }
    @Override
    public int delSafeHazardRecord(List<Integer> ids) {
        List<SafeHazardRecord> safeHazardRecords = safeHazardRecordMapper.selectBatchIds(ids);
        for (SafeHazardRecord safeHazardRecord : safeHazardRecords) {
            //判断是否有归还
            if (ObjectUtils.isNull(safeHazardRecord.getReturnUserId())){
                //没有归还,删除领用记录需要增加库存
                SafeHazard safeHazard = safeHazardMapper.selectById(safeHazardRecord.getSafeHazardId());
                safeHazard.setStockQty(safeHazard.getStockQty().add(safeHazardRecord.getApplyQty()));
                safeHazardMapper.updateById(safeHazard);
            }
        }
        safeHazardRecordMapper.deleteBatchIds(ids);
        return 0;
    }
}
src/main/resources/mapper/safe/SafeHazardRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
<?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.safe.mapper.SafeHazardRecordMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.safe.pojo.SafeHazardRecord">
        <id column="id" property="id" />
        <result column="material_record_code" property="materialRecordCode" />
        <result column="safe_hazard_id" property="safeHazardId" />
        <result column="apply_user_id" property="applyUserId" />
        <result column="apply_time" property="applyTime" />
        <result column="apply_qty" property="applyQty" />
        <result column="apply_purpose" property="applyPurpose" />
        <result column="return_user_id" property="returnUserId" />
        <result column="return_time" property="returnTime" />
        <result column="return_remark" property="returnRemark" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="update_time" property="updateTime" />
        <result column="update_user" property="updateUser" />
        <result column="tenant_id" property="tenantId" />
    </resultMap>
    <select id="pageSafeHazardRecord" resultType="com.ruoyi.safe.dto.SafeHazardRecordDto">
        select shr.*,
               su1.nick_name applyUserName,
               su2.nick_name returnUserName,
               sh.name,
               sh.code,
               sh.type,
               sh.risk_level,
               sh.location
               from safe_hazard_record shr
        left join sys_user su1 on shr.apply_user_id = su1.user_id
        left join sys_user su2 on shr.return_user_id = su2.user_id
        left join safe_hazard sh on shr.safe_hazard_id = sh.id
        where 1=1
        <if test="c.materialRecordCode != null and c.materialRecordCode != ''">
            and shr.material_record_code like concat('%', #{c.materialRecordCode}, '%')
        </if>
         <if test="c.name != null and c.name != ''">
            and sh.name like concat('%', #{c.name}, '%')
        </if>
        <if test="c.code != null and c.code != ''">
            and sh.code like concat('%', #{c.code}, '%')
        </if>
        <if test="c.type != null and c.type != ''">
            and sh.type like concat('%', #{c.type}, '%')
        </if>
        <if test="c.riskLevel != null and c.riskLevel != ''">
            and sh.risk_level like concat('%', #{c.riskLevel}, '%')
        </if>
    </select>
</mapper>