维修建议库接口完成

This commit is contained in:
gaoxiong 2025-07-07 23:31:52 +08:00
parent b1bb6dac97
commit 4f23f68a26
10 changed files with 337 additions and 0 deletions

View File

@ -64,4 +64,6 @@ public class Message implements Serializable {
public static final String WORK_SHIFT_NOT_EXIST = "班次不存在"; public static final String WORK_SHIFT_NOT_EXIST = "班次不存在";
public static final String WORK_SHIFT_IS_NOT_UNPUBLISH = "班次的状态不是未发布"; public static final String WORK_SHIFT_IS_NOT_UNPUBLISH = "班次的状态不是未发布";
public static final String IMAGE_AUTO_MARK_ERROR = "自动标注出错:"; public static final String IMAGE_AUTO_MARK_ERROR = "自动标注出错:";
public static final String SUGGESTION_ID_IS_NOT_EXIST = "维修建议id不存在";
public static final String SUGGESTION_LEVEL_TYPE_FORBID_REPEAT = "存在缺陷级别为[{}]缺陷类型为[{}]的维修建议";
} }

View File

@ -97,5 +97,11 @@ public interface Converts {
WorkShiftResp toWorkShiftResp(WorkShiftEntity entity); WorkShiftResp toWorkShiftResp(WorkShiftEntity entity);
WorkShiftEntity toWorkShiftEntity(WorkShiftReq req); WorkShiftEntity toWorkShiftEntity(WorkShiftReq req);
List<MaintainSuggestionResp> toMaintainSuggestionResp(List<MaintainSuggestionEntity> list);
MaintainSuggestionResp toMaintainSuggestionResp(MaintainSuggestionEntity entity);
MaintainSuggestionEntity toMaintainSuggestionEntity(MaintainSuggestionReq req);
} }

View File

@ -0,0 +1,46 @@
package com.dite.znpt.domain.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.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:18
* @Description:
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("maintain_suggestion")
@ApiModel(value="MaintainSuggestionEntity对象", description="维修建议库")
public class MaintainSuggestionEntity extends AuditableEntity implements Serializable {
@Serial
private static final long serialVersionUID = -5774159362861473940L;
@ApiModelProperty("建议id")
@TableId(value = "suggestion_id", type = IdType.ASSIGN_UUID)
private String suggestionId;
@ApiModelProperty("建议类容")
@TableField("suggestion_content")
private String suggestionContent;
@ApiModelProperty("缺陷级别")
@TableField("defect_level")
private String defectLevel;
@ApiModelProperty("缺陷类型")
@TableField("defect_type")
private String defectType;
}

View File

@ -0,0 +1,37 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:25
* @Description:
*/
@Data
@Accessors(chain = true)
@ApiModel("维修建议请求实体")
public class MaintainSuggestionReq implements Serializable {
@Serial
private static final long serialVersionUID = 6390137746113715095L;
@NotBlank(message = "建议内容不能为空")
@Size(max = 200, message = "建议内容不能超过200个字符")
@ApiModelProperty("建议内容")
private String suggestionContent;
@NotBlank(message = "缺陷类型不能为空")
@ApiModelProperty("缺陷类型枚举DefectTypeEnum")
private String defectType;
@NotBlank(message = "缺陷级别不能为空")
@ApiModelProperty("缺陷级别枚举DefectLevelEnum")
private String defectLevel;
}

View File

@ -0,0 +1,40 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:26
* @Description:
*/
@Data
@Accessors(chain = true)
@ApiModel("维修建议响应实体")
public class MaintainSuggestionResp implements Serializable {
@Serial
private static final long serialVersionUID = -5835303002016693551L;
@ApiModelProperty("建议id")
private String suggestionId;
@ApiModelProperty("建议内容")
private String suggestionContent;
@ApiModelProperty("缺陷类型枚举DefectTypeEnum")
private String defectType;
@ApiModelProperty("缺陷类型描述")
private String defectTypeLabel;
@ApiModelProperty("缺陷级别枚举DefectLevelEnum")
private String defectLevel;
@ApiModelProperty("缺陷级别描述")
private String defectLevelLabel;
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.MaintainSuggestionEntity;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:22
* @Description:
*/
public interface MaintainSuggestionMapper extends BaseMapper<MaintainSuggestionEntity> {
}

View File

@ -0,0 +1,23 @@
package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.MaintainSuggestionEntity;
import com.dite.znpt.domain.vo.MaintainSuggestionReq;
import com.dite.znpt.domain.vo.MaintainSuggestionResp;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:24
* @Description:
*/
public interface MaintainSuggestionService extends IService<MaintainSuggestionEntity> {
List<MaintainSuggestionResp> page(String defectLevel, String defectType);
List<MaintainSuggestionResp> list(String defectLevel, String defectType);
MaintainSuggestionResp detail(String suggestionId);
void save(MaintainSuggestionReq req);
void update(String suggestionId, MaintainSuggestionReq req);
void deleteById(String suggestionId);
}

View File

@ -0,0 +1,99 @@
package com.dite.znpt.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message;
import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.MaintainSuggestionEntity;
import com.dite.znpt.domain.vo.MaintainSuggestionReq;
import com.dite.znpt.domain.vo.MaintainSuggestionResp;
import com.dite.znpt.enums.DefectLevelEnum;
import com.dite.znpt.enums.DefectTypeEnum;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.MaintainSuggestionMapper;
import com.dite.znpt.service.MaintainSuggestionService;
import com.dite.znpt.util.PageUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:25
* @Description:
*/
@Service
public class MaintainSuggestionServiceImpl extends ServiceImpl<MaintainSuggestionMapper, MaintainSuggestionEntity> implements MaintainSuggestionService {
@Override
public List<MaintainSuggestionResp> page(String defectLevel, String defectType) {
PageUtil.startPage();
return this.list(defectLevel, defectType);
}
@Override
public List<MaintainSuggestionResp> list(String defectLevel, String defectType) {
List<MaintainSuggestionResp> result = Converts.INSTANCE.toMaintainSuggestionResp(
this.list(Wrappers.lambdaQuery(MaintainSuggestionEntity.class)
.eq(StrUtil.isNotEmpty(defectLevel), MaintainSuggestionEntity::getDefectLevel, defectLevel)
.eq(StrUtil.isNotEmpty(defectType), MaintainSuggestionEntity::getDefectType, defectType)
));
result.forEach(resp -> {
resp.setDefectLevelLabel(DefectLevelEnum.getDescByCode(resp.getDefectLevel()));
resp.setDefectTypeLabel(DefectTypeEnum.getDescByCode(resp.getDefectType()));
});
return result;
}
@Override
public MaintainSuggestionResp detail(String suggestionId) {
MaintainSuggestionResp result = Converts.INSTANCE.toMaintainSuggestionResp(this.getById(suggestionId));
result.setDefectLevelLabel(DefectLevelEnum.getDescByCode(result.getDefectLevel()));
result.setDefectTypeLabel(DefectTypeEnum.getDescByCode(result.getDefectType()));
return result;
}
@Transactional(rollbackFor = Exception.class)
@Override
public void save(MaintainSuggestionReq req) {
if(!validDefectLevelAndType(req.getDefectLevel(), req.getDefectType())){
throw new ServiceException(StrUtil.format(Message.SUGGESTION_LEVEL_TYPE_FORBID_REPEAT, req.getDefectLevel(), req.getDefectType()));
}
this.save(Converts.INSTANCE.toMaintainSuggestionEntity(req));
}
@Transactional(rollbackFor = Exception.class)
@Override
public void update(String suggestionId, MaintainSuggestionReq req) {
MaintainSuggestionEntity maintainSuggestion = this.getById(suggestionId);
if(null == maintainSuggestion){
throw new ServiceException(Message.SUGGESTION_ID_IS_NOT_EXIST);
}
if(!req.getDefectLevel().equals(maintainSuggestion.getDefectLevel()) || !req.getDefectType().equals(maintainSuggestion.getDefectType())){
if(!validDefectLevelAndType(req.getDefectLevel(), req.getDefectType())){
throw new ServiceException(StrUtil.format(Message.SUGGESTION_LEVEL_TYPE_FORBID_REPEAT, req.getDefectLevel(), req.getDefectType()));
}
}
MaintainSuggestionEntity entity = Converts.INSTANCE.toMaintainSuggestionEntity(req);
entity.setSuggestionId(suggestionId);
this.updateById(entity);
}
private Boolean validDefectLevelAndType(String defectLevel, String defectType){
return this.list(
Wrappers.lambdaQuery(MaintainSuggestionEntity.class)
.eq(MaintainSuggestionEntity::getDefectLevel, defectLevel)
.eq(MaintainSuggestionEntity::getDefectType, defectType)
).size() == 0 ;
};
@Transactional(rollbackFor = Exception.class)
@Override
public void deleteById(String suggestionId) {
if(null == this.getById(suggestionId)){
throw new ServiceException(Message.SUGGESTION_ID_IS_NOT_EXIST);
}
this.removeById(suggestionId);
}
}

View File

@ -0,0 +1,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.MaintainSuggestionMapper">
</mapper>

View File

@ -0,0 +1,67 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.MaintainSuggestionReq;
import com.dite.znpt.domain.vo.MaintainSuggestionResp;
import com.dite.znpt.service.MaintainSuggestionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/7/7 22:31
* @Description:
*/
@Api(tags = "维修建议库")
@RestController
@RequestMapping("/maintain_suggestion")
public class MaintainSuggestionController {
@Resource
private MaintainSuggestionService maintainSuggestionService;
@ApiOperation(value = "分页查询维修建议列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<MaintainSuggestionResp> page(@RequestParam(required = false) String defectLevel, @RequestParam(required = false) String defectType){
return PageResult.ok(maintainSuggestionService.page(defectLevel, defectType));
}
@ApiOperation(value = "查询维修建议列表", httpMethod = "GET")
@GetMapping("/list")
public Result<List<MaintainSuggestionResp>> list(@RequestParam(required = false) String defectLevel, @RequestParam(required = false) String defectType){
return Result.ok(maintainSuggestionService.list(defectLevel, defectType));
}
@ApiOperation(value = "查询维修建议详情", httpMethod = "GET")
@GetMapping("/detail/{suggestionId}")
public Result<MaintainSuggestionResp> detail(@PathVariable String suggestionId){
return Result.ok(maintainSuggestionService.detail(suggestionId));
}
@ApiOperation(value = "新增维修建议", httpMethod = "POST")
@PostMapping
public Result<?> add(@Validated @RequestBody MaintainSuggestionReq req){
maintainSuggestionService.save(req);
return Result.ok();
}
@ApiOperation(value = "修改维修建议", httpMethod = "PUT")
@PutMapping
public Result<?> edit(@PathVariable String suggestionId, @Validated @RequestBody MaintainSuggestionReq req){
maintainSuggestionService.update(suggestionId, req);
return Result.ok();
}
@ApiOperation(value = "删除维修建议", httpMethod = "DELETE")
@DeleteMapping("/{suggestionId}")
public Result<?> remove(@PathVariable String suggestionId){
maintainSuggestionService.deleteById(suggestionId);
return Result.ok();
}
}