buhuazhen
2026-05-08 a40e2a665a077625deb18560ba5a02a303049374
feat: 新增车间管理模块的基础功能

添加车间管理相关的实体类、数据访问层、业务层和控制层
实现车间的增删查改功能,包括分页查询和逻辑删除
已添加9个文件
360 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/bean/dto/WorkshopDto.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/bean/vo/SaveWorkshopVo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/bean/vo/SearchWorkshopVo.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/WorkshopController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/WorkshopMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/Workshop.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/WorkshopService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/WorkshopServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/WorkshopMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/bean/dto/WorkshopDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.ruoyi.production.bean.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * @author buhuazhen
 * @date 2026/5/8
 * @email 3038525872@qq.com
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WorkshopDto implements Serializable {
    private Long id;
    // è½¦é—´åç§°
    private String name;
    // è´Ÿè´£äºº
    private String principal;
    // è”系方式
    private String contactPhone;
    // å¤‡æ³¨
    private String remark;
    // åˆ›å»ºæ—¶é—´
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    // åˆ›å»ºè€…
    private String createUserName;
}
src/main/java/com/ruoyi/production/bean/vo/SaveWorkshopVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.production.bean.vo;
import com.ruoyi.production.bean.dto.WorkshopDto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @author buhuazhen
 * @date 2026/5/8
 * @email 3038525872@qq.com
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SaveWorkshopVo extends WorkshopDto implements Serializable {
    // å†—ä½™
    private String xxx;
}
src/main/java/com/ruoyi/production/bean/vo/SearchWorkshopVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.production.bean.vo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @author buhuazhen
 * @date 2026/5/8
 * @email 3038525872@qq.com
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SearchWorkshopVo extends Page implements Serializable {
    // è½¦é—´åç§°
    private String name;
    // è´Ÿè´£äºº
    private String principal;
    // è”系方式
    private String contactPhone;
}
src/main/java/com/ruoyi/production/controller/WorkshopController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.ruoyi.production.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.bean.dto.WorkshopDto;
import com.ruoyi.production.bean.vo.SaveWorkshopVo;
import com.ruoyi.production.bean.vo.SearchWorkshopVo;
import com.ruoyi.production.service.WorkshopService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
 * @author buhuazhen
 * @date 2026/5/8
 * @email 3038525872@qq.com
 */
@AllArgsConstructor
@RequestMapping("/workshop")
@RestController
public class WorkshopController {
    private final WorkshopService workshopService;
    @PostMapping("/save")
    public R<Void> save(@RequestBody SaveWorkshopVo saveWorkshopVo){
        workshopService.save(saveWorkshopVo);
        return R.ok();
    }
    @PostMapping("/deleteById/{id}")
    public R<Void> deleteById(@PathVariable Long id){
        workshopService.deleteById(id);
        return R.ok();
    }
    @PostMapping("/page")
    public R<Page<WorkshopDto>> page(@RequestBody SearchWorkshopVo searchWorkshopVo){
        Page<WorkshopDto> workshopDtoPage = workshopService.pageList(searchWorkshopVo);
        return R.ok(workshopDtoPage);
    }
}
src/main/java/com/ruoyi/production/mapper/WorkshopMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.production.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.production.bean.dto.WorkshopDto;
import com.ruoyi.production.bean.vo.SearchWorkshopVo;
import com.ruoyi.production.pojo.Workshop;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import jakarta.validation.constraints.NotNull;
import org.apache.ibatis.annotations.Param;
/**
* @author buhuazhen
* @description é’ˆå¯¹è¡¨ã€workshop(车间表)】的数据库操作Mapper
* @createDate 2026-05-08 09:11:49
* @Entity com.ruoyi.production.pojo.Workshop
*/
public interface WorkshopMapper extends BaseMapper<Workshop> {
    Page<WorkshopDto> pageList(@NotNull @Param("vo") SearchWorkshopVo searchWorkshopVo);
}
src/main/java/com/ruoyi/production/pojo/Workshop.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.ruoyi.production.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
 * è½¦é—´è¡¨
 * @TableName workshop
 */
@TableName(value ="workshop")
@Data
public class Workshop implements Serializable {
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * è½¦é—´åç§°
     */
    @TableField(value = "name")
    private String name;
    /**
     * è´Ÿè´£äºº
     */
    @TableField(value = "principal")
    private String principal;
    /**
     * è”系方式
     */
    @TableField(value = "contact_phone")
    private String contactPhone;
    /**
     * å¤‡æ³¨
     */
    @TableField(value = "remark")
    private String remark;
    /**
     *
     */
    @TableField(value = "is_delete")
    private Integer isDelete;
    /**
     *
     */
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     *
     */
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     *
     */
    @TableField(value = "create_user",fill = FieldFill.INSERT)
    private Long createUser;
    /**
     *
     */
    @TableField(value = "create_user_name",fill = FieldFill.INSERT)
    private String createUserName;
    /**
     *
     */
    @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
    /**
     *
     */
    @TableField(value = "update_user_name",fill = FieldFill.INSERT_UPDATE)
    private String updateUserName;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
src/main/java/com/ruoyi/production/service/WorkshopService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.production.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.production.bean.dto.WorkshopDto;
import com.ruoyi.production.bean.vo.SaveWorkshopVo;
import com.ruoyi.production.bean.vo.SearchWorkshopVo;
import com.ruoyi.production.pojo.Workshop;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.constraints.NotNull;
/**
* @author buhuazhen
* @description é’ˆå¯¹è¡¨ã€workshop(车间表)】的数据库操作Service
* @createDate 2026-05-08 09:11:49
*/
public interface WorkshopService extends IService<Workshop> {
    void save(@NotNull SaveWorkshopVo saveWorkshopVo);
    void deleteById(@NotNull Long id);
    Page<WorkshopDto> pageList(@NotNull SearchWorkshopVo searchWorkshopVo);
}
src/main/java/com/ruoyi/production/service/impl/WorkshopServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.production.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.IsDeleteEnum;
import com.ruoyi.production.bean.dto.WorkshopDto;
import com.ruoyi.production.bean.vo.SaveWorkshopVo;
import com.ruoyi.production.bean.vo.SearchWorkshopVo;
import com.ruoyi.production.mapper.WorkshopMapper;
import com.ruoyi.production.pojo.Workshop;
import com.ruoyi.production.service.WorkshopService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * @author buhuazhen
 * @description é’ˆå¯¹è¡¨ã€workshop(车间表)】的数据库操作Service实现
 * @createDate 2026-05-08 09:11:49
 */
@Service
@RequiredArgsConstructor
public class WorkshopServiceImpl extends ServiceImpl<WorkshopMapper, Workshop>
        implements WorkshopService {
    private final WorkshopMapper workshopMapper;
    @Override
    @Transactional
    public void save(SaveWorkshopVo saveWorkshopVo) {
        Workshop workshop = BeanUtil.copyProperties(saveWorkshopVo, Workshop.class);
        workshopMapper.insertOrUpdate(workshop);
    }
    @Override
    @Transactional
    public void deleteById(Long id) {
        Assert.notNull(id,"workshop æ²¡æœ‰ä¼ å…¥Id");
        Workshop workshop = new Workshop();
        workshop.setId(id);
        workshop.setIsDelete(IsDeleteEnum.DELETED.getCode());
        workshopMapper.updateById(workshop);
    }
    @Override
    public Page<WorkshopDto> pageList(SearchWorkshopVo searchWorkshopVo) {
        return workshopMapper.pageList(searchWorkshopVo);
    }
}
src/main/resources/mapper/production/WorkshopMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
<?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.production.mapper.WorkshopMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.Workshop">
            <id property="id" column="id" jdbcType="BIGINT"/>
            <result property="name" column="name" jdbcType="VARCHAR"/>
            <result property="principal" column="principal" jdbcType="VARCHAR"/>
            <result property="contactPhone" column="contact_phone" jdbcType="VARCHAR"/>
            <result property="remark" column="remark" jdbcType="VARCHAR"/>
            <result property="isDelete" column="is_delete" jdbcType="INTEGER"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
            <result property="createUser" column="create_user" jdbcType="BIGINT"/>
            <result property="createUserName" column="create_user_name" jdbcType="VARCHAR"/>
            <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
            <result property="updateUserName" column="update_user_name" jdbcType="VARCHAR"/>
    </resultMap>
    <sql id="Base_Column_List">
        id,name,principal,
        contact_phone,remark,is_delete,
        create_time,update_time,create_user,
        create_user_name,update_user,update_user_name
    </sql>
    <select id="pageList" resultType="com.ruoyi.production.bean.dto.WorkshopDto">
        select <include refid="Base_Column_List"/>
        from workshop as t1
        <where>
            <if test="vo.name != null and vo.name != ''">
                and t1.name like concat('%', #{vo.name}, '%')
            </if>
            <if test="vo.principal != null and vo.principal != '' ">
                and t1.principal like concat('%',#{vo.principal},'%')
            </if>
            <if test="vo.contactPhone != null and vo.principal != ''">
                and t1.contact_phone like concat('%',#{vo.contactPhone},'%')
            </if>
            and t1.is_delete = 0
        </where>
    </select>
</mapper>