新增物料用户修改

This commit is contained in:
2026-03-03 11:35:19 +08:00
parent 23844ee4dd
commit c7547e27e6
16 changed files with 342 additions and 29 deletions

View File

@@ -0,0 +1,16 @@
package top.wms.admin.material.mapper;
import top.continew.starter.data.mp.base.BaseMapper;
import top.wms.admin.material.model.entity.MaterialInfoDO;
import org.springframework.stereotype.Repository;
/**
* 物料信息 Mapper
*
* @author lz
* @since 2026/02/27 14:19
*/
@Repository
public interface MaterialInfoMapper extends BaseMapper<MaterialInfoDO> {
}

View File

@@ -0,0 +1,49 @@
package top.wms.admin.material.model.entity;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
import top.wms.admin.common.model.entity.BaseDO;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 物料信息实体
*
* @author lz
* @since 2026/02/27 14:19
*/
@Data
@TableName("sys_material_info")
public class MaterialInfoDO extends BaseDO {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料名称
*/
private String materialName;
/**
* 物料编码
*/
private String encoding;
/**
* 物料单位重量(g)
*/
private BigDecimal unitWeight;
/**
* 物料单次可称量最大重量(kg)
*/
private BigDecimal maxWeight;
/**
* 物料照片地址
*/
private String photoUrl;
}

View File

@@ -0,0 +1,39 @@
package top.wms.admin.material.model.query;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import top.continew.starter.data.core.annotation.Query;
import top.continew.starter.data.core.enums.QueryType;
import java.io.Serial;
import java.io.Serializable;
/**
* 物料信息查询条件
*
* @author lz
* @since 2026/02/27 14:19
*/
@Data
@Schema(description = "物料信息查询条件")
public class MaterialInfoQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料名称
*/
@Schema(description = "物料名称")
@Query(type = QueryType.LIKE)
private String materialName;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@Query(type = QueryType.EQ)
private String encoding;
}

View File

@@ -0,0 +1,61 @@
package top.wms.admin.material.model.req;
import jakarta.validation.constraints.*;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
import java.io.Serial;
import java.io.Serializable;
/**
* 创建或修改物料信息参数
*
* @author lz
* @since 2026/02/27 14:19
*/
@Data
@Schema(description = "创建或修改物料信息参数")
public class MaterialInfoReq implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料名称
*/
@Schema(description = "物料名称")
@NotBlank(message = "物料名称不能为空")
@Length(max = 255, message = "物料名称长度不能超过 {max} 个字符")
private String materialName;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@NotBlank(message = "物料编码不能为空")
@Length(max = 255, message = "物料编码长度不能超过 {max} 个字符")
private String encoding;
/**
* 物料单位重量(g)
*/
@Schema(description = "物料单位重量(g)")
private Double unitWeight;
/**
* 物料单次可称量最大重量(kg)
*/
@Schema(description = "物料单次可称量最大重量(kg)")
private Double maxWeight;
/**
* 物料照片地址
*/
@Schema(description = "物料照片地址")
@Length(max = 255, message = "物料照片地址长度不能超过 {max} 个字符")
private String photoUrl;
}

View File

@@ -0,0 +1,60 @@
package top.wms.admin.material.model.resp;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import top.wms.admin.common.model.resp.BaseDetailResp;
import java.io.Serial;
/**
* 物料信息信息
*
* @author lz
* @since 2026/02/27 14:19
*/
@Data
@Schema(description = "物料信息信息")
public class MaterialInfoResp extends BaseDetailResp {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料名称
*/
@Schema(description = "物料名称")
@ExcelProperty(value = "物料名称")
private String materialName;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@ExcelProperty(value = "物料编码")
private String encoding;
/**
* 物料单位重量(g)
*/
@Schema(description = "物料单位重量(g)")
@ExcelProperty(value = "物料单位重量(g)")
private Double unitWeight;
/**
* 物料单次可称量最大重量(kg)
*/
@Schema(description = "物料单次可称量最大重量(kg)")
@ExcelProperty(value = "物料单次可称量最大重量(kg)")
private Double maxWeight;
/**
* 物料照片地址
*/
@Schema(description = "物料照片地址")
@ExcelIgnore
private String photoUrl;
}

View File

@@ -0,0 +1,16 @@
package top.wms.admin.material.service;
import top.continew.starter.extension.crud.service.BaseService;
import top.wms.admin.material.model.query.MaterialInfoQuery;
import top.wms.admin.material.model.req.MaterialInfoReq;
import top.wms.admin.material.model.resp.MaterialInfoResp;
/**
* 物料信息业务接口
*
* @author lz
* @since 2026/02/27 14:19
*/
public interface MaterialInfoService extends BaseService<MaterialInfoResp, MaterialInfoResp, MaterialInfoQuery, MaterialInfoReq> {
}

View File

@@ -0,0 +1,25 @@
package top.wms.admin.material.service.impl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import top.continew.starter.extension.crud.service.BaseServiceImpl;
import top.wms.admin.material.mapper.MaterialInfoMapper;
import top.wms.admin.material.model.entity.MaterialInfoDO;
import top.wms.admin.material.model.query.MaterialInfoQuery;
import top.wms.admin.material.model.req.MaterialInfoReq;
import top.wms.admin.material.model.resp.MaterialInfoResp;
import top.wms.admin.material.service.MaterialInfoService;
/**
* 物料信息业务实现
*
* @author lz
* @since 2026/02/27 14:19
*/
@Service
@RequiredArgsConstructor
public class MaterialInfoServiceImpl extends BaseServiceImpl<MaterialInfoMapper, MaterialInfoDO, MaterialInfoResp, MaterialInfoResp, MaterialInfoQuery, MaterialInfoReq> implements MaterialInfoService {
}

View File

@@ -32,17 +32,18 @@ public class UserDO extends BaseDO {
*/ */
private String username; private String username;
/**
* 昵称
*/
private String nickname;
/** /**
* 密码 * 密码
*/ */
// @FieldEncrypt(encryptor = BCryptEncryptor.class) // @FieldEncrypt(encryptor = BCryptEncryptor.class)
private String password; private String password;
/*
* 卡号
* */
private String cardNo;
/** /**
* 性别 * 性别
*/ */
@@ -87,11 +88,6 @@ public class UserDO extends BaseDO {
*/ */
private LocalDateTime pwdResetTime; private LocalDateTime pwdResetTime;
/**
* 部门 ID
*/
private Long deptId;
/** /**
* 设备ID * 设备ID
*/ */

View File

@@ -69,4 +69,7 @@ public class UserQuery implements Serializable {
*/ */
@Schema(description = "设备ID") @Schema(description = "设备ID")
private Long equipmentId; private Long equipmentId;
@Schema(description = "卡号")
private String cardNo;
} }

View File

@@ -38,13 +38,6 @@ public class UserReq implements Serializable {
@Pattern(regexp = RegexConstants.USERNAME, message = "用户名长度为 4-64 个字符,支持大小写字母、数字、下划线,以字母开头") @Pattern(regexp = RegexConstants.USERNAME, message = "用户名长度为 4-64 个字符,支持大小写字母、数字、下划线,以字母开头")
private String username; private String username;
/**
* 昵称
*/
@Schema(description = "昵称", example = "张三")
@NotBlank(message = "昵称不能为空")
@Pattern(regexp = RegexConstants.GENERAL_NAME, message = "昵称长度为 2-30 个字符,支持中文、字母、数字、下划线,短横线")
private String nickname;
/** /**
* 密码(加密) * 密码(加密)
@@ -53,6 +46,12 @@ public class UserReq implements Serializable {
@NotBlank(message = "密码不能为空", groups = CrudValidationGroup.Add.class) @NotBlank(message = "密码不能为空", groups = CrudValidationGroup.Add.class)
private String password; private String password;
/*
* 卡号
* */
@Schema(description = "卡号")
private String cardNo;
/** /**
* 邮箱 * 邮箱
*/ */
@@ -75,13 +74,6 @@ public class UserReq implements Serializable {
@NotNull(message = "性别非法") @NotNull(message = "性别非法")
private GenderEnum gender; private GenderEnum gender;
/**
* 所属部门
*/
@Schema(description = "所属部门", example = "5")
@NotNull(message = "所属部门不能为空")
private Long deptId;
/** /**
* 所属角色 * 所属角色
*/ */

View File

@@ -108,11 +108,15 @@ public class UserDetailResp extends BaseDetailResp {
@FieldEncrypt @FieldEncrypt
private String phone; private String phone;
@Schema(description = "卡号")
@ExcelProperty(value = "卡号", order = 11)
private String cardNo;
/** /**
* 邮箱 * 邮箱
*/ */
@Schema(description = "邮箱", example = "123456789@qq.com") @Schema(description = "邮箱", example = "123456789@qq.com")
@ExcelProperty(value = "邮箱", order = 11) @ExcelProperty(value = "邮箱", order = 12)
@FieldEncrypt @FieldEncrypt
private String email; private String email;
@@ -120,21 +124,21 @@ public class UserDetailResp extends BaseDetailResp {
* 是否为系统内置数据 * 是否为系统内置数据
*/ */
@Schema(description = "系统内置", example = "false") @Schema(description = "系统内置", example = "false")
@ExcelProperty(value = "系统内置", order = 12) @ExcelProperty(value = "系统内置", order = 13)
private Boolean isSystem; private Boolean isSystem;
/** /**
* 描述 * 描述
*/ */
@Schema(description = "描述", example = "张三描述信息") @Schema(description = "描述", example = "张三描述信息")
@ExcelProperty(value = "描述", order = 13) @ExcelProperty(value = "描述", order = 14)
private String description; private String description;
/** /**
* 头像地址 * 头像地址
*/ */
@Schema(description = "头像地址", example = "https://himg.bdimg.com/sys/portrait/item/public.1.81ac9a9e.rf1ix17UfughLQjNo7XQ_w.jpg") @Schema(description = "头像地址", example = "https://himg.bdimg.com/sys/portrait/item/public.1.81ac9a9e.rf1ix17UfughLQjNo7XQ_w.jpg")
@ExcelProperty(value = "头像地址", order = 14) @ExcelProperty(value = "头像地址", order = 15)
private String avatar; private String avatar;
/** /**

View File

@@ -2,8 +2,11 @@ package top.wms.admin.system.model.resp.user;
import cn.crane4j.annotation.Assemble; import cn.crane4j.annotation.Assemble;
import cn.crane4j.core.executor.handler.ManyToManyAssembleOperationHandler; import cn.crane4j.core.executor.handler.ManyToManyAssembleOperationHandler;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.Value;
import top.wms.admin.common.model.resp.BaseDetailResp; import top.wms.admin.common.model.resp.BaseDetailResp;
import top.wms.admin.common.constant.ContainerConstants; import top.wms.admin.common.constant.ContainerConstants;
import top.wms.admin.common.context.UserContextHolder; import top.wms.admin.common.context.UserContextHolder;
@@ -34,12 +37,19 @@ public class UserResp extends BaseDetailResp {
* 用户名 * 用户名
*/ */
@Schema(description = "用户名", example = "zhangsan") @Schema(description = "用户名", example = "zhangsan")
@ExcelProperty(value = "用户名")
private String username; private String username;
@Schema(description = "卡号")
@ExcelProperty(value = "卡号")
private String cardNo;
/** /**
* 昵称 * 昵称
*/ */
@Schema(description = "昵称", example = "张三") @Schema(description = "昵称", example = "张三")
@ExcelIgnore
private String nickname; private String nickname;
/** /**
@@ -52,6 +62,7 @@ public class UserResp extends BaseDetailResp {
* 头像地址 * 头像地址
*/ */
@Schema(description = "头像地址", example = "https://himg.bdimg.com/sys/portrait/item/public.1.81ac9a9e.rf1ix17UfughLQjNo7XQ_w.jpg") @Schema(description = "头像地址", example = "https://himg.bdimg.com/sys/portrait/item/public.1.81ac9a9e.rf1ix17UfughLQjNo7XQ_w.jpg")
@ExcelIgnore
private String avatar; private String avatar;
/** /**
@@ -59,6 +70,7 @@ public class UserResp extends BaseDetailResp {
*/ */
@Schema(description = "邮箱", example = "c*******@126.com") @Schema(description = "邮箱", example = "c*******@126.com")
@JsonMask(MaskType.EMAIL) @JsonMask(MaskType.EMAIL)
@ExcelIgnore
private String email; private String email;
/** /**
@@ -78,6 +90,7 @@ public class UserResp extends BaseDetailResp {
* 是否为系统内置数据 * 是否为系统内置数据
*/ */
@Schema(description = "是否为系统内置数据", example = "false") @Schema(description = "是否为系统内置数据", example = "false")
@ExcelIgnore
private Boolean isSystem; private Boolean isSystem;
/** /**
@@ -90,12 +103,14 @@ public class UserResp extends BaseDetailResp {
* 部门 ID * 部门 ID
*/ */
@Schema(description = "部门 ID", example = "5") @Schema(description = "部门 ID", example = "5")
@ExcelIgnore
private Long deptId; private Long deptId;
/** /**
* 所属部门 * 所属部门
*/ */
@Schema(description = "所属部门", example = "测试部") @Schema(description = "所属部门", example = "测试部")
@ExcelIgnore
private String deptName; private String deptName;
/** /**

View File

@@ -736,4 +736,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
UserDO userDO = baseMapper.lambdaQuery().eq(UserDO::getId, id).one(); UserDO userDO = baseMapper.lambdaQuery().eq(UserDO::getId, id).one();
return null == userDO ? "" : userDO.getUsername(); return null == userDO ? "" : userDO.getUsername();
} }
} }

View File

@@ -0,0 +1,4 @@
<?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="top.wms.admin.material.mapper.MaterialInfoMapper">
</mapper>

View File

@@ -5,6 +5,7 @@
<sql id="selectUser"> <sql id="selectUser">
SELECT SELECT
t1.id, t1.id,
t1.card_no,
t1.create_user, t1.create_user,
t1.create_time, t1.create_time,
t1.update_user, t1.update_user,
@@ -53,4 +54,4 @@
AND id != #{id} AND id != #{id}
</if> </if>
</select> </select>
</mapper> </mapper>

View File

@@ -0,0 +1,29 @@
package top.wms.admin.controller.meterial;
import top.continew.starter.extension.crud.enums.Api;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
import top.wms.admin.common.controller.BaseController;
import top.wms.admin.material.model.query.MaterialInfoQuery;
import top.wms.admin.material.model.req.MaterialInfoReq;
import top.wms.admin.material.model.resp.MaterialInfoResp;
import top.wms.admin.material.service.MaterialInfoService;
/**
* 物料信息管理 API
*
* @author lz
* @since 2026/02/27 14:19
*/
@Tag(name = "物料信息管理 API")
@RestController
@RequiredArgsConstructor
@CrudRequestMapping(value = "/admin/meterialInfo", api = {Api.PAGE, Api.DETAIL, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
public class MaterialInfoController extends BaseController<MaterialInfoService, MaterialInfoResp, MaterialInfoResp, MaterialInfoQuery, MaterialInfoReq> {
}