Browse Source

feat:工艺每一次喷涂都可以配置参数

master
白凤吉 3 weeks ago
parent
commit
7b36ad760a
  1. 45
      src/main/java/com/qyft/ms/app/controller/MatrixCraftController.java
  2. 2
      src/main/java/com/qyft/ms/app/mapper/MatrixCraftMapper.java
  3. 82
      src/main/java/com/qyft/ms/app/model/bo/SprayTimes.java
  4. 48
      src/main/java/com/qyft/ms/app/model/dto/MatrixCraftDTO.java
  5. 64
      src/main/java/com/qyft/ms/app/model/entity/MatrixCraft.java
  6. 35
      src/main/java/com/qyft/ms/app/model/vo/MatrixCraftListVO.java
  7. 13
      src/main/java/com/qyft/ms/app/model/vo/MatrixCraftResult.java
  8. 35
      src/main/java/com/qyft/ms/app/service/MatrixCraftService.java
  9. 265
      src/main/java/com/qyft/ms/system/common/result/ResultCode.java
  10. 2
      src/main/java/com/qyft/ms/system/common/utils/ResponseUtils.java
  11. 211
      src/main/resources/sql/init.sql

45
src/main/java/com/qyft/ms/app/controller/MatrixCraftController.java

@ -1,13 +1,13 @@
package com.qyft.ms.app.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qyft.ms.app.model.dto.MatrixCraftPageDTO;
import com.qyft.ms.app.model.entity.MatrixCraft;
import com.qyft.ms.app.model.vo.MatrixCraftListVO;
import com.qyft.ms.app.service.MatrixCraftService;
import com.qyft.ms.system.common.result.PageResult;
import com.qyft.ms.system.common.result.Result;
import com.qyft.ms.system.common.result.ResultCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
@ -28,42 +28,37 @@ public class MatrixCraftController {
@Operation(summary = "新增工艺")
@PostMapping("/add")
public Result<Boolean> add(@RequestBody MatrixCraft dto) {
String name = dto.getName();
public Result<Boolean> add(@RequestBody MatrixCraft matrixCraft) {
String name = matrixCraft.getName();
if (matrixCraftService.getBaseMapper().selectOne(new QueryWrapper<MatrixCraft>().eq("name", name)) != null) {
return Result.failed("工艺名称重复");
return Result.failed(ResultCode.DATA_ALREADY_EXISTS);
}
if(matrixCraftService.save(matrixCraft)){
return Result.success();
}else{
return Result.failed();
}
return Result.success(matrixCraftService.save(dto));
}
@Operation(summary = "工艺详情")
@GetMapping("/{id}")
public Result<MatrixCraft> getCraftById(@PathVariable Long id) {
return Result.success(matrixCraftService.getBaseMapper().selectOne(new QueryWrapper<MatrixCraft>().eq("id", id)));
return Result.success(matrixCraftService.getById(id));
}
@Operation(summary = "基质所属工艺")
@GetMapping("/getListByMatrixId/{matrixId}")
public Result<List<MatrixCraft>> getListByMatrixId(@PathVariable Long matrixId) {
return Result.success(matrixCraftService.getBaseMapper().selectList(new QueryWrapper<MatrixCraft>().eq("matrix_id", matrixId)));
@Operation(summary = "根据基质id查询工艺")
@GetMapping("/getListByMatrixId/{id}")
public Result<List<MatrixCraft>> getListByMatrixId(@PathVariable Long id) {
return Result.success(matrixCraftService.getBaseMapper().selectList(new QueryWrapper<MatrixCraft>().eq("matrix_id", id)));
}
@Operation(summary = "所有工艺列表")
@Operation(summary = "工艺列表")
@PostMapping("/list")
public PageResult<MatrixCraft> getAll(@RequestBody MatrixCraftPageDTO dto) {
QueryWrapper<MatrixCraft> queryWrapper = new QueryWrapper<>();
if (dto.getMatrixId() != null) {
queryWrapper.eq("matrix_id", dto.getMatrixId());
}
if (dto.getMatrixCraftName() != null) {
queryWrapper.like("name", dto.getMatrixCraftName());
}
IPage<MatrixCraft> result = matrixCraftService.page(new Page<>(dto.getPageNum(), dto.getPageSize()), queryWrapper);
return PageResult.success(result);
public PageResult<MatrixCraftListVO> getAll(@RequestBody MatrixCraftPageDTO dto) {
return PageResult.success(matrixCraftService.getList(dto));
}
@Operation(summary = "基质工艺更新")
@Operation(summary = "更新工艺")
@PutMapping
public Result<Boolean> update(@RequestBody MatrixCraft matrixCraft) {
// 如果名称和除了当前的重复, 则返回失败
@ -73,7 +68,7 @@ public class MatrixCraftController {
return Result.success(matrixCraftService.updateById(matrixCraft));
}
@Operation(summary = "基质删除")
@Operation(summary = "删除工艺")
@DeleteMapping("/{ids}")
public Result<Boolean> deleteMatrixCraft(@PathVariable String ids) {
return Result.success(matrixCraftService.deleteMatrixCraft(ids));

2
src/main/java/com/qyft/ms/app/mapper/MatrixCraftMapper.java

@ -11,7 +11,5 @@ import java.util.List;
*/
@Mapper
public interface MatrixCraftMapper extends BaseMapper<MatrixCraft> {
List<MatrixCraft> getListByMatrixId(Long matrixId);
Integer add(MatrixCraft dto);
}

82
src/main/java/com/qyft/ms/app/model/bo/SprayTimes.java

@ -0,0 +1,82 @@
package com.qyft.ms.app.model.bo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "多次喷涂每次喷涂的参数")
public class SprayTimes {
/**
* 喷涂路径类型
*/
@Schema(description = "喷涂路径类型")
private String matrixPathType;
/**
* Z轴距离玻片的高度
*/
@Schema(description = "Z轴距离玻片的高度")
private Double motorZHeight;
/**
* 氮气气压
* Mpa兆帕 不处理
*/
@Schema(description = "氮气气压")
private Double gasPressure;
/**
* 单位uL微升 基质流速(控制注射泵速度)
*/
@Schema(description = "单位uL微升 基质流速(控制注射泵速度)")
private Double volume;
/**
* 是否打开高压
*/
@Schema(description = "是否打开高压")
private Boolean highVoltage;
/**
* 高压值
*/
@Schema(description = "高压值")
private Double highVoltageValue;
/**
* 毫米 喷涂间距
*/
@Schema(description = " 喷涂间距(毫米)")
private Double spacing;
/**
* 移动速度 轴速度
*/
@Schema(description = "轴移动速度")
private Double movingSpeed;
/**
* 喷涂左上角x
*/
@Schema(description = "喷涂左上角x")
private Double x1;
/**
* 喷涂左上角y
*/
@Schema(description = "喷涂左上角y")
private Double y1;
/**
* 喷涂右下角x
*/
@Schema(description = "喷涂右下角x")
private Double x2;
/**
* 喷涂右下角y
*/
@Schema(description = "喷涂右下角y")
private Double y2;
}

48
src/main/java/com/qyft/ms/app/model/dto/MatrixCraftDTO.java

@ -1,48 +0,0 @@
package com.qyft.ms.app.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@Data
public class MatrixCraftDTO {
@NotBlank
@Schema(description = "名称")
private String name;
@NotBlank
@Schema(description = "基质id")
private Long matrixId;
@NotBlank
@Schema(description = "路径类型 0 竖向 1 横向")
private Integer routeType;
@NotBlank
@Schema(description = "喷涂高度")
private Integer height;
@Schema(description = "氮气气压")
private Integer nitrogenAirPressure;
@NotBlank
@Schema(description = "基质流速")
private Integer matrixFlowVelocity;
@NotBlank
@Schema(description = "电压")
private Integer voltage;
@NotBlank
@Schema(description = "移速")
private Integer movementSpeed;
@NotBlank
@Schema(description = "行间距")
private Integer space;
@Schema(description = "创建人")
private Long createUser;
}

64
src/main/java/com/qyft/ms/app/model/entity/MatrixCraft.java

@ -1,34 +1,21 @@
package com.qyft.ms.app.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.qyft.ms.app.model.bo.SprayTimes;
import com.qyft.ms.system.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* {
* cmdName:'matrix_spray_start'
* cmdId:'',
* param:{
* matrix_path_type:;//喷涂路径类型
* motor_z_height:;//高度
* gas_pressure://Mpa兆帕
* volume:20//单位uL微升
* high_voltage:true/false;//是否打开高压
* high_voltage_value:4000;//高压值
* spacing:''//毫米
* moving_speed:8mm/s;//移动速度
* times:;//喷涂遍数
* position:[{x1,y1,x2,y2,index}]
* }
* }
*/
@EqualsAndHashCode(callSuper = false)
@Schema(description = "基质工艺")
@TableName("matrix_craft")
@TableName(value = "matrix_craft", autoResultMap = true)
@Data
public class MatrixCraft extends BaseEntity {
@ -40,43 +27,10 @@ public class MatrixCraft extends BaseEntity {
@Schema(description = "基质id")
private Long matrixId;
@NotBlank
@Schema(description = "路径类型 0 竖向 1 横向")
private String matrixPathType;
@NotBlank
@Schema(description = "喷涂高度")
private Double motorZHeight;
@NotBlank
@Schema(description = "氮气气压")
private Double gasPressure;
@NotBlank
@Schema(description = "基质流速")
private Double volume;
@NotBlank
@Schema(description = "是否电压")
private Boolean highVoltage;
@TableField(typeHandler = JacksonTypeHandler.class)
@Schema(description = "每次喷涂的参数")
private List<SprayTimes> times;
@NotBlank
@Schema(description = "电压")
private Double highVoltageValue;
@NotBlank
@Schema(description = "移速")
private Double movingSpeed;
@NotBlank
@Schema(description = "行间距")
private Double spacing;
@NotBlank
@Schema(description = "喷涂遍数")
private Integer times;
@NotBlank
@Schema(description = "创建人")
private Long createUser;
}

35
src/main/java/com/qyft/ms/app/model/vo/MatrixCraftListVO.java

@ -0,0 +1,35 @@
package com.qyft.ms.app.model.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class MatrixCraftListVO {
private Long id;
@Schema(description = "名称")
private String name;
@Schema(description = "基质id")
private Long matrixId;
@Schema(description = "基质名称")
private String matrixName;
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

13
src/main/java/com/qyft/ms/app/model/vo/MatrixCraftResult.java

@ -1,13 +0,0 @@
package com.qyft.ms.app.model.vo;
import com.qyft.ms.app.model.entity.MatrixCraft;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class MatrixCraftResult extends MatrixCraft {
private String matrixName;
}

35
src/main/java/com/qyft/ms/app/service/MatrixCraftService.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.mapper.MatrixMapper;
import com.qyft.ms.app.model.dto.MatrixCraftPageDTO;
import com.qyft.ms.app.model.entity.Matrix;
import com.qyft.ms.app.model.entity.MatrixCraft;
import com.qyft.ms.app.model.vo.MatrixCraftResult;
import com.qyft.ms.app.model.vo.MatrixCraftListVO;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -29,22 +29,6 @@ public class MatrixCraftService extends ServiceImpl<MatrixCraftMapper, MatrixCra
private final MatrixCraftMapper matrixCraftMapper;
private final MatrixMapper matrixMapper;
public Integer add(MatrixCraft dto) {
return matrixCraftMapper.add(dto);
}
public MatrixCraft getCraftById(Long id) {
return matrixCraftMapper.selectById(id);
}
public List<MatrixCraft> getListByMatrixId(Long matrixId) {
return matrixCraftMapper.getListByMatrixId(matrixId);
}
public Boolean updateMatrixCraft(MatrixCraft matrixCraft) {
return matrixCraftMapper.updateById(matrixCraft) > 0;
}
public Boolean deleteMatrixCraft(String ids) {
List<Long> idsArr = Arrays.stream(ids.split(","))
.map(Long::parseLong)
@ -52,24 +36,23 @@ public class MatrixCraftService extends ServiceImpl<MatrixCraftMapper, MatrixCra
return this.removeByIds(idsArr);
}
public IPage<MatrixCraftResult> getAll(MatrixCraftPageDTO dto) {
public IPage<MatrixCraftListVO> getList(MatrixCraftPageDTO dto) {
// 构建分页对象
Page<MatrixCraftResult> page = new Page<>(dto.getPageNum(), dto.getPageSize());
ArrayList<MatrixCraftResult> matrixCraftResultList = new ArrayList<>();
Page<MatrixCraftListVO> page = new Page<>(dto.getPageNum(), dto.getPageSize());
ArrayList<MatrixCraftListVO> matrixCraftResultList = new ArrayList<>();
// 查询所有工艺
List<MatrixCraft> matrixCrafts = matrixCraftMapper.selectList(new LambdaQueryWrapper<MatrixCraft>()
.like(dto.getMatrixCraftName() != null, MatrixCraft::getName, "%" + dto.getMatrixCraftName() + "%")
.like(dto.getMatrixCraftName() != null, MatrixCraft::getName, dto.getMatrixCraftName())
.eq(dto.getMatrixId() != null, MatrixCraft::getMatrixId, dto.getMatrixId())
);
for (MatrixCraft matrixCraft : matrixCrafts) {
Long matrixId = matrixCraft.getMatrixId();
Matrix matrix = matrixMapper.selectOne(new QueryWrapper<Matrix>().eq("id", matrixId));
MatrixCraftResult matrixCraftResult = new MatrixCraftResult();
BeanUtils.copyProperties(matrixCraft, matrixCraftResult);
matrixCraftResult.setMatrixName(matrix != null ? matrix.getName() : "");
MatrixCraftListVO matrixCraftListVO = new MatrixCraftListVO();
BeanUtils.copyProperties(matrixCraft, matrixCraftListVO);
matrixCraftListVO.setMatrixName(matrix != null ? matrix.getName() : "");
matrixCraftResultList.add((matrixCraftResult));
matrixCraftResultList.add((matrixCraftListVO));
}
page.setRecords(matrixCraftResultList);
return page;

265
src/main/java/com/qyft/ms/system/common/result/ResultCode.java

@ -14,287 +14,24 @@ public enum ResultCode implements IResultCode, Serializable {
SUCCESS("00000", "ok"),
/**
* 一级宏观错误码
*/
USER_ERROR("A0001", "用户端错误"),
/**
* 二级宏观错误码
*/
USER_REGISTRATION_ERROR("A0100", "用户注册错误"),
USER_NOT_AGREE_PRIVACY_AGREEMENT("A0101", "用户未同意隐私协议"),
REGISTRATION_COUNTRY_OR_REGION_RESTRICTED("A0102", "注册国家或地区受限"),
USERNAME_VERIFICATION_FAILED("A0110", "用户名校验失败"),
USERNAME_ALREADY_EXISTS("A0111", "用户名已存在"),
USERNAME_CONTAINS_SENSITIVE_WORDS("A0112", "用户名包含敏感词"),
USERNAME_CONTAINS_SPECIAL_CHARACTERS("A0113", "用户名包含特殊字符"),
PASSWORD_VERIFICATION_FAILED("A0120", "密码校验失败"),
PASSWORD_LENGTH_NOT_ENOUGH("A0121", "密码长度不够"),
PASSWORD_STRENGTH_NOT_ENOUGH("A0122", "密码强度不够"),
VERIFICATION_CODE_INPUT_ERROR("A0130", "校验码输入错误"),
SMS_VERIFICATION_CODE_INPUT_ERROR("A0131", "短信校验码输入错误"),
EMAIL_VERIFICATION_CODE_INPUT_ERROR("A0132", "邮件校验码输入错误"),
VOICE_VERIFICATION_CODE_INPUT_ERROR("A0133", "语音校验码输入错误"),
USER_CERTIFICATE_EXCEPTION("A0140", "用户证件异常"),
USER_CERTIFICATE_TYPE_NOT_SELECTED("A0141", "用户证件类型未选择"),
MAINLAND_ID_NUMBER_VERIFICATION_ILLEGAL("A0142", "大陆身份证编号校验非法"),
USER_BASIC_INFORMATION_VERIFICATION_FAILED("A0150", "用户基本信息校验失败"),
PHONE_FORMAT_VERIFICATION_FAILED("A0151", "手机格式校验失败"),
ADDRESS_FORMAT_VERIFICATION_FAILED("A0152", "地址格式校验失败"),
EMAIL_FORMAT_VERIFICATION_FAILED("A0153", "邮箱格式校验失败"),
/**
* 二级宏观错误码
*/
USER_LOGIN_EXCEPTION("A0200", "用户登录异常"),
USER_ACCOUNT_FROZEN("A0201", "用户账户被冻结"),
USER_ACCOUNT_ABOLISHED("A0202", "用户账户已作废"),
USER_PASSWORD_ERROR("A0210", "用户名或密码错误"),
USER_INPUT_PASSWORD_ERROR_LIMIT_EXCEEDED("A0211", "用户输入密码错误次数超限"),
USER_IDENTITY_VERIFICATION_FAILED("A0220", "用户身份校验失败"),
USER_FINGERPRINT_RECOGNITION_FAILED("A0221", "用户指纹识别失败"),
USER_FACE_RECOGNITION_FAILED("A0222", "用户面容识别失败"),
USER_NOT_AUTHORIZED_THIRD_PARTY_LOGIN("A0223", "用户未获得第三方登录授权"),
ACCESS_TOKEN_INVALID("A0230", "访问令牌无效或已过期"),
REFRESH_TOKEN_INVALID("A0231", "刷新令牌无效或已过期"),
// 验证码错误
USER_VERIFICATION_CODE_ERROR("A0240", "用户验证码错误"),
USER_VERIFICATION_CODE_ATTEMPT_LIMIT_EXCEEDED("A0241", "用户验证码尝试次数超限"),
USER_VERIFICATION_CODE_EXPIRED("A0242", "用户验证码过期"),
/**
* 二级宏观错误码
*/
ACCESS_PERMISSION_EXCEPTION("A0300", "访问权限异常"),
ACCESS_UNAUTHORIZED("A0301", "访问未授权"),
AUTHORIZATION_IN_PROGRESS("A0302", "正在授权中"),
USER_AUTHORIZATION_APPLICATION_REJECTED("A0303", "用户授权申请被拒绝"),
ACCESS_OBJECT_PRIVACY_SETTINGS_BLOCKED("A0310", "因访问对象隐私设置被拦截"),
AUTHORIZATION_EXPIRED("A0311", "授权已过期"),
NO_PERMISSION_TO_USE_API("A0312", "无权限使用 API"),
USER_ACCESS_BLOCKED("A0320", "用户访问被拦截"),
BLACKLISTED_USER("A0321", "黑名单用户"),
ACCOUNT_FROZEN("A0322", "账号被冻结"),
ILLEGAL_IP_ADDRESS("A0323", "非法 IP 地址"),
GATEWAY_ACCESS_RESTRICTED("A0324", "网关访问受限"),
REGION_BLACKLIST("A0325", "地域黑名单"),
SERVICE_ARREARS("A0330", "服务已欠费"),
USER_SIGNATURE_EXCEPTION("A0340", "用户签名异常"),
RSA_SIGNATURE_ERROR("A0341", "RSA 签名错误"),
/**
* 二级宏观错误码
*/
USER_REQUEST_PARAMETER_ERROR("A0400", "用户请求参数错误"),
CONTAINS_ILLEGAL_MALICIOUS_REDIRECT_LINK("A0401", "包含非法恶意跳转链接"),
INVALID_USER_INPUT("A0402", "无效的用户输入"),
REQUEST_REQUIRED_PARAMETER_IS_EMPTY("A0410", "请求必填参数为空"),
REQUEST_PARAMETER_VALUE_EXCEEDS_ALLOWED_RANGE("A0420", "请求参数值超出允许的范围"),
PARAMETER_FORMAT_MISMATCH("A0421", "参数格式不匹配"),
USER_INPUT_CONTENT_ILLEGAL("A0430", "用户输入内容非法"),
CONTAINS_PROHIBITED_SENSITIVE_WORDS("A0431", "包含违禁敏感词"),
USER_OPERATION_EXCEPTION("A0440", "用户操作异常"),
DATA_ALREADY_EXISTS("C0450", "数据已存在"),
/**
* 二级宏观错误码
*/
USER_REQUEST_SERVICE_EXCEPTION("A0500", "用户请求服务异常"),
REQUEST_LIMIT_EXCEEDED("A0501", "请求次数超出限制"),
REQUEST_CONCURRENCY_LIMIT_EXCEEDED("A0502", "请求并发数超出限制"),
USER_OPERATION_PLEASE_WAIT("A0503", "用户操作请等待"),
WEBSOCKET_CONNECTION_EXCEPTION("A0504", "WebSocket 连接异常"),
WEBSOCKET_CONNECTION_DISCONNECTED("A0505", "WebSocket 连接断开"),
USER_DUPLICATE_REQUEST("A0506", "请求过于频繁,请稍后再试。"),
/**
* 二级宏观错误码
*/
USER_RESOURCE_EXCEPTION("A0600", "用户资源异常"),
ACCOUNT_BALANCE_INSUFFICIENT("A0601", "账户余额不足"),
USER_DISK_SPACE_INSUFFICIENT("A0602", "用户磁盘空间不足"),
USER_MEMORY_SPACE_INSUFFICIENT("A0603", "用户内存空间不足"),
USER_OSS_CAPACITY_INSUFFICIENT("A0604", "用户 OSS 容量不足"),
USER_QUOTA_EXHAUSTED("A0605", "用户配额已用光"),
USER_RESOURCE_NOT_FOUND("A0606", "用户资源不存在"),
/**
* 二级宏观错误码
*/
UPLOAD_FILE_EXCEPTION("A0700", "上传文件异常"),
UPLOAD_FILE_TYPE_MISMATCH("A0701", "上传文件类型不匹配"),
UPLOAD_FILE_TOO_LARGE("A0702", "上传文件太大"),
UPLOAD_IMAGE_TOO_LARGE("A0703", "上传图片太大"),
UPLOAD_VIDEO_TOO_LARGE("A0704", "上传视频太大"),
UPLOAD_COMPRESSED_FILE_TOO_LARGE("A0705", "上传压缩文件太大"),
DELETE_FILE_EXCEPTION("A0710", "删除文件异常"),
/**
* 二级宏观错误码
*/
USER_CURRENT_VERSION_EXCEPTION("A0800", "用户当前版本异常"),
USER_INSTALLED_VERSION_NOT_MATCH_SYSTEM("A0801", "用户安装版本与系统不匹配"),
USER_INSTALLED_VERSION_TOO_LOW("A0802", "用户安装版本过低"),
USER_INSTALLED_VERSION_TOO_HIGH("A0803", "用户安装版本过高"),
USER_INSTALLED_VERSION_EXPIRED("A0804", "用户安装版本已过期"),
USER_API_REQUEST_VERSION_NOT_MATCH("A0805", "用户 API 请求版本不匹配"),
USER_API_REQUEST_VERSION_TOO_HIGH("A0806", "用户 API 请求版本过高"),
USER_API_REQUEST_VERSION_TOO_LOW("A0807", "用户 API 请求版本过低"),
/**
* 二级宏观错误码
*/
USER_PRIVACY_NOT_AUTHORIZED("A0900", "用户隐私未授权"),
USER_PRIVACY_NOT_SIGNED("A0901", "用户隐私未签署"),
USER_CAMERA_NOT_AUTHORIZED("A0903", "用户相机未授权"),
USER_PHOTO_LIBRARY_NOT_AUTHORIZED("A0904", "用户图片库未授权"),
USER_FILE_NOT_AUTHORIZED("A0905", "用户文件未授权"),
USER_LOCATION_INFORMATION_NOT_AUTHORIZED("A0906", "用户位置信息未授权"),
USER_CONTACTS_NOT_AUTHORIZED("A0907", "用户通讯录未授权"),
/**
* 二级宏观错误码
*/
USER_DEVICE_EXCEPTION("A1000", "用户设备异常"),
USER_CAMERA_EXCEPTION("A1001", "用户相机异常"),
USER_MICROPHONE_EXCEPTION("A1002", "用户麦克风异常"),
USER_EARPIECE_EXCEPTION("A1003", "用户听筒异常"),
USER_SPEAKER_EXCEPTION("A1004", "用户扬声器异常"),
USER_GPS_POSITIONING_EXCEPTION("A1005", "用户 GPS 定位异常"),
/**
* 一级宏观错误码
*/
SYSTEM_ERROR("B0001", "系统执行出错"),
/**
* 二级宏观错误码
*/
SYSTEM_EXECUTION_TIMEOUT("B0100", "系统执行超时"),
/**
* 二级宏观错误码
*/
SYSTEM_DISASTER_RECOVERY_FUNCTION_TRIGGERED("B0200", "系统容灾功能被触发"),
SYSTEM_RATE_LIMITING("B0210", "系统限流"),
SYSTEM_FUNCTION_DEGRADATION("B0220", "系统功能降级"),
/**
* 二级宏观错误码
*/
SYSTEM_RESOURCE_EXCEPTION("B0300", "系统资源异常"),
SYSTEM_RESOURCE_EXHAUSTED("B0310", "系统资源耗尽"),
SYSTEM_DISK_SPACE_EXHAUSTED("B0311", "系统磁盘空间耗尽"),
SYSTEM_MEMORY_EXHAUSTED("B0312", "系统内存耗尽"),
FILE_HANDLE_EXHAUSTED("B0313", "文件句柄耗尽"),
SYSTEM_CONNECTION_POOL_EXHAUSTED("B0314", "系统连接池耗尽"),
SYSTEM_THREAD_POOL_EXHAUSTED("B0315", "系统线程池耗尽"),
SYSTEM_RESOURCE_ACCESS_EXCEPTION("B0320", "系统资源访问异常"),
SYSTEM_READ_DISK_FILE_FAILED("B0321", "系统读取磁盘文件失败"),
/**
* 一级宏观错误码
*/
THIRD_PARTY_SERVICE_ERROR("C0001", "调用第三方服务出错"),
/**
* 二级宏观错误码
*/
MIDDLEWARE_SERVICE_ERROR("C0100", "中间件服务出错"),
RPC_SERVICE_ERROR("C0110", "RPC 服务出错"),
RPC_SERVICE_NOT_FOUND("C0111", "RPC 服务未找到"),
RPC_SERVICE_NOT_REGISTERED("C0112", "RPC 服务未注册"),
INTERFACE_NOT_EXIST("C0113", "接口不存在"),
MESSAGE_SERVICE_ERROR("C0120", "消息服务出错"),
MESSAGE_DELIVERY_ERROR("C0121", "消息投递出错"),
MESSAGE_CONSUMPTION_ERROR("C0122", "消息消费出错"),
MESSAGE_SUBSCRIPTION_ERROR("C0123", "消息订阅出错"),
MESSAGE_GROUP_NOT_FOUND("C0124", "消息分组未查到"),
CACHE_SERVICE_ERROR("C0130", "缓存服务出错"),
KEY_LENGTH_EXCEEDS_LIMIT("C0131", "key 长度超过限制"),
VALUE_LENGTH_EXCEEDS_LIMIT("C0132", "value 长度超过限制"),
STORAGE_CAPACITY_FULL("C0133", "存储容量已满"),
UNSUPPORTED_DATA_FORMAT("C0134", "不支持的数据格式"),
CONFIGURATION_SERVICE_ERROR("C0140", "配置服务出错"),
NETWORK_RESOURCE_SERVICE_ERROR("C0150", "网络资源服务出错"),
VPN_SERVICE_ERROR("C0151", "VPN 服务出错"),
CDN_SERVICE_ERROR("C0152", "CDN 服务出错"),
DOMAIN_NAME_RESOLUTION_SERVICE_ERROR("C0153", "域名解析服务出错"),
GATEWAY_SERVICE_ERROR("C0154", "网关服务出错"),
/**
* 二级宏观错误码
*/
THIRD_PARTY_SYSTEM_EXECUTION_TIMEOUT("C0200", "第三方系统执行超时"),
RPC_EXECUTION_TIMEOUT("C0210", "RPC 执行超时"),
MESSAGE_DELIVERY_TIMEOUT("C0220", "消息投递超时"),
CACHE_SERVICE_TIMEOUT("C0230", "缓存服务超时"),
CONFIGURATION_SERVICE_TIMEOUT("C0240", "配置服务超时"),
DATABASE_SERVICE_TIMEOUT("C0250", "数据库服务超时"),
/**
* 二级宏观错误码
*/
DATABASE_SERVICE_ERROR("C0300", "数据库服务出错"),
TABLE_NOT_EXIST("C0311", "表不存在"),
COLUMN_NOT_EXIST("C0312", "列不存在"),
MULTIPLE_SAME_NAME_COLUMNS_IN_MULTI_TABLE_ASSOCIATION("C0321", "多表关联中存在多个相同名称的列"),
DATABASE_DEADLOCK("C0331", "数据库死锁"),
PRIMARY_KEY_CONFLICT("C0341", "主键冲突"),
/**
* 二级宏观错误码
*/
THIRD_PARTY_DISASTER_RECOVERY_SYSTEM_TRIGGERED("C0400", "第三方容灾系统被触发"),
THIRD_PARTY_SYSTEM_RATE_LIMITING("C0401", "第三方系统限流"),
THIRD_PARTY_FUNCTION_DEGRADATION("C0402", "第三方功能降级"),
/**
* 二级宏观错误码
*/
NOTIFICATION_SERVICE_ERROR("C0500", "通知服务出错"),
SMS_REMINDER_SERVICE_FAILED("C0501", "短信提醒服务失败"),
VOICE_REMINDER_SERVICE_FAILED("C0502", "语音提醒服务失败"),
EMAIL_REMINDER_SERVICE_FAILED("C0503", "邮件提醒服务失败");
SYSTEM_EXECUTION_TIMEOUT("B0100", "系统执行超时");
private String code;
private String msg;

2
src/main/java/com/qyft/ms/system/common/utils/ResponseUtils.java

@ -72,7 +72,7 @@ public class ResponseUtils {
*/
private static int getHttpStatus(ResultCode resultCode) {
return switch (resultCode) {
case ACCESS_UNAUTHORIZED, ACCESS_TOKEN_INVALID, REFRESH_TOKEN_INVALID -> HttpStatus.UNAUTHORIZED.value();
case ACCESS_TOKEN_INVALID -> HttpStatus.UNAUTHORIZED.value();
default -> HttpStatus.BAD_REQUEST.value();
};
}

211
src/main/resources/sql/init.sql

@ -1,177 +1,70 @@
-- 创建 matrix 基质类型表
CREATE TABLE IF NOT EXISTS matrix
(
id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
name
TEXT
NOT
NULL,
create_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
update_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP
CREATE TABLE IF NOT EXISTS matrix (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入 matrix 表数据
INSERT
OR IGNORE INTO matrix (id, name, create_time, update_time)
VALUES (1, 'DHB', null, null);
INSERT OR IGNORE INTO matrix (id, name, create_time, update_time)
VALUES
(1, 'DHB', NULL, NULL);
-- 创建 matrix_craft 基质工艺表
CREATE TABLE IF NOT EXISTS matrix_craft
(
id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
name
TEXT
NOT
NULL,
matrix_id
INTEGER
NOT
NULL,
matrix_path_type
TEXT
NOT
NULL,
motor_z_height
INTEGER,
gas_pressure
INTEGER,
volume
INTEGER,
matrix_flow_velocity
INTEGER,
high_voltage
BOOLEAN,
high_voltage_value
INTEGER,
spacing
INTEGER,
moving_speed
INTEGER,
times
INTEGER,
create_user
INTEGER,
create_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
update_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP
CREATE TABLE IF NOT EXISTS matrix_craft (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
matrix_id INTEGER NOT NULL,
times TEXT,
create_user INTEGER,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建 operation_log 操作记录表
CREATE TABLE IF NOT EXISTS operation_log
(
id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
matrix_id
INTEGER,
matrix_info
TEXT,
status
INTEGER,
create_user
INTEGER,
create_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
update_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP
CREATE TABLE IF NOT EXISTS operation_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
matrix_id INTEGER,
matrix_info TEXT,
status INTEGER,
create_user INTEGER,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建 sys_settings 系统配置表
CREATE TABLE IF NOT EXISTS sys_settings
(
id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
parent_id
INTEGER,
name
TEXT
NOT
NULL,
code
TEXT,
value
TEXT
CREATE TABLE IF NOT EXISTS sys_settings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
parent_id INTEGER,
name TEXT NOT NULL,
code TEXT,
value TEXT
);
-- 插入 sys_settings 表数据
INSERT
OR IGNORE INTO sys_settings (id, parent_id, name, code, value)
VALUES (1, NULL, '玻片高度', 'slide_height', 101.2),
(2, NULL, 'z轴安全高度', 'safe_z_height', 80);
INSERT OR IGNORE INTO sys_settings (id, parent_id, name, code, value)
VALUES
(1, NULL, '玻片高度', 'slide_height', 101.2),
(2, NULL, 'z轴安全高度', 'safe_z_height', 80);
-- 位置表,用来存储设备固定点位
CREATE TABLE IF NOT EXISTS position
(
id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
point_name
TEXT
NOT
NULL,
point_code
TEXT
NOT
NULL,
x
REAL
NOT
NULL,
y
REAL
NOT
NULL,
z
REAL
NOT
NULL,
create_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
update_time
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP
-- 创建 position 位置表,用来存储设备固定点位
CREATE TABLE IF NOT EXISTS position (
id INTEGER PRIMARY KEY AUTOINCREMENT,
point_name TEXT NOT NULL,
point_code TEXT NOT NULL,
x REAL NOT NULL,
y REAL NOT NULL,
z REAL NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT
OR IGNORE INTO position (id, point_name, point_code, x, y, z)
VALUES (1,'玻片1位置', 'slide_position1', 18.08, 0, 101.2),
(2,'玻片2位置', 'slide_position2', 45.08, 0, 101.2),
(3,'玻片3位置', 'slide_position3', 72.08, 0, 101.2),
(4,'玻片4位置', 'slide_position4', 99.08, 0, 101.2),
(5,'废液桶位置', 'waste_liquor', 173.08, 75, 70);
-- 插入 position 表数据
INSERT OR IGNORE INTO position (id, point_name, point_code, x, y, z)
VALUES
(1, '玻片1位置', 'slide_position1', 18.08, 0, 101.2),
(2, '玻片2位置', 'slide_position2', 45.08, 0, 101.2),
(3, '玻片3位置', 'slide_position3', 72.08, 0, 101.2),
(4, '玻片4位置', 'slide_position4', 99.08, 0, 101.2),
(5, '废液桶位置', 'waste_liquor', 173.08, 75, 70);
Loading…
Cancel
Save