设备管理以及设备借用归还完成

This commit is contained in:
高雄 2025-07-24 17:18:54 +08:00
parent 748067961f
commit ae1cdc8689
23 changed files with 581 additions and 49 deletions

View File

@ -72,4 +72,11 @@ public class Message implements Serializable {
public static final String INSPECTION_REPORT_ID_IS_NOT_EXIST = "检查报告id不存在";
public static final String UTIL_EXEC_ERROR = "工具执行出错:";
public static final String REPORT_GENERATOR_ERROR = "报告生成出错";
public static final String EQUIPMENT_ID_NOT_EXIST = "设备id不存在";
public static final String EQUIPMENT_SN_EXIST = "设备序列号已经存在";
public static final String EQUIPMENT_STATUS_ERROR_FORBIDDEN_USE = "设备状态不合法,禁止使用";
public static final String EQUIPMENT_USE_RECORD_ID_NOT_EXIST = "设备使用记录id不存在";
public static final String EQUIPMENT_USE_RECORD_STATUS_ERROR = "设备使用记录状态不合法";
public static final String EQUIPMENT_IS_USED = "设备已被使用";
public static final String EQUIPMENT_IS_RETURN = "设备已归还";
}

View File

@ -120,5 +120,9 @@ public interface Converts {
AttendanceRecordEntity toAttendanceRecordEntity(AttendanceRecordReq req);
List<AttendanceRecordResp> toAttendanceRecordResp(List<AttendanceRecordEntity> list);
EquipmentEntity toEquipmentUseRecordEntity(EquipmentReq req);
EquipmentUseRecordEntity toEquipmentUseRecordEntity(EquipmentUseRecordReq req);
}

View File

@ -1,8 +1,6 @@
package com.dite.znpt.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -35,18 +33,23 @@ public class EquipmentEntity extends AuditableEntity implements Serializable {
@ApiModelProperty("设备型号")
private String equipmentModel;
@ApiModelProperty("设备编码")
private String equipmentCode;
@ApiModelProperty("设备类型")
private String equipmentType;
@ApiModelProperty("设备状态,0-空闲中1-使用3-保养中4-维修中5-已报废")
@ApiModelProperty("设备状态,枚举EquipmentStatusEnum")
private String equipmentStatus;
@ApiModelProperty("使用状态0-空闲中1-使用中")
private String useStatus;
@ApiModelProperty("设备序列号")
private String equipmentSn;
@ApiModelProperty("当前使用记录id")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String useRecordId;
@ApiModelProperty("删除标志0代表存在 1代表删除")
@TableLogic(value = "0", delval = "1")
private String delFlag;
}

View File

@ -28,7 +28,7 @@ public class EquipmentUseRecordEntity extends AuditableEntity implements Seriali
@ApiModelProperty("设备使用记录id")
@TableId(type = IdType.ASSIGN_UUID)
private String recordId;
private String useRecordId;
@ApiModelProperty("设备id")
private String equipmentId;
@ -45,6 +45,9 @@ public class EquipmentUseRecordEntity extends AuditableEntity implements Seriali
@ApiModelProperty("操作时间")
private LocalDateTime operateTime;
@ApiModelProperty("批次id")
private String batchId;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -21,9 +21,6 @@ public class EquipmentListReq implements Serializable {
@ApiModelProperty("设备名称")
private String equipmentName;
@ApiModelProperty("设备编码")
private String equipmentCode;
@ApiModelProperty("设备类型")
private String equipmentType;

View File

@ -25,12 +25,7 @@ public class EquipmentReq implements Serializable {
@Size(max = 100, message = "设备名称长度不能超过100个字")
private String equipmentName;
@ApiModelProperty("设备编码")
@NotBlank(message = "设备编码不能为空")
@Size(max = 50, message = "设备编码长度不能超过50个字")
private String equipmentCode;
@ApiModelProperty("设备类型")
@ApiModelProperty("设备类型, 枚举:EquipmentTypeEnum")
@NotBlank(message = "设备类型不能为空")
private String equipmentType;

View File

@ -24,18 +24,36 @@ public class EquipmentResp implements Serializable {
@ApiModelProperty("设备名称")
private String equipmentName;
@ApiModelProperty("设备编码")
private String equipmentCode;
@ApiModelProperty("设备类型")
private String equipmentType;
@ApiModelProperty("设备类型描述")
private String equipmentTypeLabel;
@ApiModelProperty("设备型号")
private String equipmentModel;
@ApiModelProperty("设备SN")
private String equipmentSn;
@ApiModelProperty("设备状态0-空闲中1-使用3-保养中4-维修中5-已报废")
@ApiModelProperty("设备状态, 枚举:EquipmentStatusEnum")
private String equipmentStatus;
@ApiModelProperty("设备状态描述")
private String equipmentStatusLabel;
@ApiModelProperty("设备使用状态0-空闲中1-使用中")
private String useStatus;
@ApiModelProperty("项目id")
private String projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("使用人id")
private String userId;
@ApiModelProperty("使用人")
private String name;
}

View File

@ -6,7 +6,6 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author Bear.G
@ -28,10 +27,7 @@ public class EquipmentUseRecordListReq implements Serializable {
@ApiModelProperty("项目ID")
private String projectId;
@ApiModelProperty("操作类型0-借用1-归还")
private String operateType;
@ApiModelProperty("操作时间")
private LocalDateTime operateTime;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -20,10 +20,6 @@ public class EquipmentUseRecordReq implements Serializable {
@Serial
private static final long serialVersionUID = -6615316964696995428L;
@ApiModelProperty("设备ID")
@NotBlank(message = "设备ID不能为空")
private String equipmentId;
@ApiModelProperty("用户ID")
@NotBlank(message = "用户ID不能为空")
private String userId;
@ -32,10 +28,6 @@ public class EquipmentUseRecordReq implements Serializable {
@NotBlank(message = "项目ID不能为空")
private String projectId;
@ApiModelProperty("操作类型0-借用1-归还")
@NotBlank(message = "操作类型不能为空")
private String operateType;
@Size(max = 200, message = "备注长度不能超过200")
@ApiModelProperty("备注")
private String remark;

View File

@ -20,7 +20,7 @@ public class EquipmentUseRecordResp implements Serializable {
private static final long serialVersionUID = -6673311877391209692L;
@ApiModelProperty("记录ID")
private String recordId;
private String useRecordId;
@ApiModelProperty("设备ID")
private String equipmentId;
@ -28,12 +28,12 @@ public class EquipmentUseRecordResp implements Serializable {
@ApiModelProperty("设备名称")
private String equipmentName;
@ApiModelProperty("设备编码")
private String equipmentCode;
@ApiModelProperty("设备类型")
private String equipmentType;
@ApiModelProperty("设备类型描述")
private String equipmentTypeLabel;
@ApiModelProperty("设备型号")
private String equipmentModel;

View File

@ -0,0 +1,54 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @author Bear.G
* @date 2025/7/24/周四 14:35
* @description
*/
@Getter
public enum EquipmentStatusEnum {
NORMAL("normal","正常"),
REPAIR("repair","维修中"),
MAINTAIN(" maintain","保养中"),
SCRAP("scrap","报废");
private final String code;
private final String desc;
EquipmentStatusEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static EquipmentStatusEnum getByCode(String code){
for (EquipmentStatusEnum e : EquipmentStatusEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
EquipmentStatusEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(EquipmentStatusEnum.values().length);
for (EquipmentStatusEnum e : EquipmentStatusEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -0,0 +1,54 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @author Bear.G
* @date 2025/7/24/周四 9:33
* @description
*/
@Getter
public enum EquipmentTypeEnum {
DETECTION("detection","检测设备"),
MAINTAIN("maintain","维修设备"),
SECURITY("security","安全设备"),
OFFICE(" office","办公设备"),
CAR("car","车辆");
private final String code;
private final String desc;
EquipmentTypeEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static EquipmentTypeEnum getByCode(String code){
for (EquipmentTypeEnum e : EquipmentTypeEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
EquipmentTypeEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(EquipmentTypeEnum.values().length);
for (EquipmentTypeEnum e : EquipmentTypeEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -2,6 +2,11 @@ package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.EquipmentEntity;
import com.dite.znpt.domain.vo.EquipmentListReq;
import com.dite.znpt.domain.vo.EquipmentResp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Bear.G
@ -9,4 +14,8 @@ import com.dite.znpt.domain.entity.EquipmentEntity;
* @description
*/
public interface EquipmentMapper extends BaseMapper<EquipmentEntity> {
List<EquipmentResp> selectEquipmentResp(@Param("req") EquipmentListReq req);
EquipmentResp getEquipmentRespByEquipmentId(@Param("equipmentId") String equipmentId);
}

View File

@ -2,6 +2,11 @@ package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.EquipmentUseRecordEntity;
import com.dite.znpt.domain.vo.EquipmentUseRecordListReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordResp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Bear.G
@ -9,4 +14,7 @@ import com.dite.znpt.domain.entity.EquipmentUseRecordEntity;
* @description
*/
public interface EquipmentUseRecordMapper extends BaseMapper<EquipmentUseRecordEntity> {
List<EquipmentUseRecordResp> selectEquipmentUseRecordResp(@Param("req") EquipmentUseRecordListReq req);
List<EquipmentUseRecordResp> getEquipmentUseRecordResp(@Param("equipmentId") String equipmentId);
}

View File

@ -2,6 +2,12 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.EquipmentEntity;
import com.dite.znpt.domain.vo.EquipmentListReq;
import com.dite.znpt.domain.vo.EquipmentReq;
import com.dite.znpt.domain.vo.EquipmentResp;
import com.dite.znpt.domain.vo.EquipmentUseRecordReq;
import java.util.List;
/**
* @author Bear.G
@ -9,4 +15,10 @@ import com.dite.znpt.domain.entity.EquipmentEntity;
* @description
*/
public interface EquipmentService extends IService<EquipmentEntity> {
List<EquipmentResp> page(EquipmentListReq req);
List<EquipmentResp> list(EquipmentListReq req);
EquipmentResp detail(String equipmentId);
void save(EquipmentReq req);
void update(String equipmentId, EquipmentReq req);
void deleteById(String equipmentId);
}

View File

@ -2,6 +2,11 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.EquipmentUseRecordEntity;
import com.dite.znpt.domain.vo.EquipmentUseRecordListReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordResp;
import java.util.List;
/**
* @author Bear.G
@ -9,4 +14,9 @@ import com.dite.znpt.domain.entity.EquipmentUseRecordEntity;
* @description
*/
public interface EquipmentUseRecordService extends IService<EquipmentUseRecordEntity> {
List<EquipmentUseRecordResp> page(EquipmentUseRecordListReq req);
List<EquipmentUseRecordResp> list(EquipmentUseRecordListReq req);
List<EquipmentUseRecordResp> detail(String equipmentId);
void borrowEquipment(String equipmentId, EquipmentUseRecordReq req);
void returnEquipment(String userRecordId, EquipmentUseRecordReq req);
}

View File

@ -1,10 +1,30 @@
package com.dite.znpt.service.impl;
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.EquipmentEntity;
import com.dite.znpt.domain.entity.EquipmentUseRecordEntity;
import com.dite.znpt.domain.vo.EquipmentListReq;
import com.dite.znpt.domain.vo.EquipmentReq;
import com.dite.znpt.domain.vo.EquipmentResp;
import com.dite.znpt.domain.vo.EquipmentUseRecordReq;
import com.dite.znpt.enums.EquipmentStatusEnum;
import com.dite.znpt.enums.EquipmentTypeEnum;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.EquipmentMapper;
import com.dite.znpt.service.EquipmentService;
import com.dite.znpt.service.EquipmentUseRecordService;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.service.UserService;
import com.dite.znpt.util.PageUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author Bear.G
@ -13,4 +33,76 @@ import org.springframework.stereotype.Service;
*/
@Service
public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, EquipmentEntity> implements EquipmentService {
@Resource
private EquipmentUseRecordService equipmentUseRecordService;
@Resource
private UserService userService;
@Resource
private ProjectService projectService;
@Override
public List<EquipmentResp> page(EquipmentListReq req) {
PageUtil.startPage();
return this.list(req);
}
@Override
public List<EquipmentResp> list(EquipmentListReq req) {
List<EquipmentResp> list = this.baseMapper.selectEquipmentResp(req);
list.forEach(resp -> {
resp.setEquipmentTypeLabel(EquipmentTypeEnum.getDescByCode(resp.getEquipmentType()));
resp.setEquipmentStatusLabel(EquipmentStatusEnum.getDescByCode(resp.getEquipmentStatus()));
});
return list;
}
@Override
public EquipmentResp detail(String equipmentId) {
EquipmentResp resp = this.baseMapper.getEquipmentRespByEquipmentId(equipmentId);
resp.setEquipmentTypeLabel(EquipmentTypeEnum.getDescByCode(resp.getEquipmentType()));
resp.setEquipmentStatusLabel(EquipmentStatusEnum.getDescByCode(resp.getEquipmentStatus()));
return resp;
}
@Transactional(rollbackFor = Exception.class)
@Override
public void save(EquipmentReq req) {
EquipmentEntity entity = Converts.INSTANCE.toEquipmentUseRecordEntity(req);
if(null != getByEquipmentSn(entity.getEquipmentSn())){
throw new ServiceException(Message.EQUIPMENT_SN_EXIST);
}
this.save(entity);
}
private EquipmentEntity getByEquipmentSn(String equipmentSn){
return this.getOne(Wrappers.lambdaQuery(EquipmentEntity.class).eq(EquipmentEntity::getEquipmentSn, equipmentSn));
}
@Transactional(rollbackFor = Exception.class)
@Override
public void update(String equipmentId, EquipmentReq req) {
EquipmentEntity equipment = this.getById(equipmentId);
if(null == equipment){
throw new ServiceException(Message.EQUIPMENT_ID_NOT_EXIST);
}
if(!equipment.getEquipmentSn().equals(req.getEquipmentSn()) && null != getByEquipmentSn(req.getEquipmentSn())){
throw new ServiceException(Message.EQUIPMENT_SN_EXIST);
}
EquipmentEntity entity = Converts.INSTANCE.toEquipmentUseRecordEntity(req);
entity.setEquipmentId(equipmentId);
this.updateById(entity);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void deleteById(String equipmentId) {
EquipmentEntity equipment = this.getById(equipmentId);
if(null == equipment){
throw new ServiceException(Message.EQUIPMENT_ID_NOT_EXIST);
}
this.removeById(equipmentId);
}
}

View File

@ -1,10 +1,35 @@
package com.dite.znpt.service.impl;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.lang.generator.SnowflakeGenerator;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Constants;
import com.dite.znpt.constant.Message;
import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.EquipmentEntity;
import com.dite.znpt.domain.entity.EquipmentUseRecordEntity;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.UserEntity;
import com.dite.znpt.domain.vo.EquipmentReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordListReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordResp;
import com.dite.znpt.enums.EquipmentStatusEnum;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.EquipmentUseRecordMapper;
import com.dite.znpt.service.EquipmentService;
import com.dite.znpt.service.EquipmentUseRecordService;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.service.UserService;
import com.dite.znpt.util.PageUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
/**
* @author Bear.G
@ -14,4 +39,99 @@ import org.springframework.stereotype.Service;
@Service
public class EquipmentUseRecordServiceImpl extends ServiceImpl<EquipmentUseRecordMapper, EquipmentUseRecordEntity> implements EquipmentUseRecordService {
@Resource
private EquipmentService equipmentService;
@Resource
private ProjectService projectService;
@Resource
private UserService userService;
@Override
public List<EquipmentUseRecordResp> page(EquipmentUseRecordListReq req) {
PageUtil.startPage();
return this.list(req);
}
@Override
public List<EquipmentUseRecordResp> list(EquipmentUseRecordListReq req) {
return this.baseMapper.selectEquipmentUseRecordResp(req);
}
@Override
public List<EquipmentUseRecordResp> detail(String equipmentId) {
return this.baseMapper.getEquipmentUseRecordResp(equipmentId);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void borrowEquipment(String equipmentId, EquipmentUseRecordReq req) {
EquipmentEntity equipment = equipmentService.getById(equipmentId);
if(null == equipment || !EquipmentStatusEnum.NORMAL.getCode().equals(equipment.getEquipmentStatus())){
throw new ServiceException(Message.EQUIPMENT_STATUS_ERROR_FORBIDDEN_USE);
}
if("1".equals(equipment.getUseStatus())){
throw new ServiceException(Message.EQUIPMENT_IS_USED);
}
UserEntity user = userService.getById(req.getUserId());
if(null == user || !Constants.DEL_FLAG_0.equals(user.getDelFlag())){
throw new ServiceException(Message.USER_ID_NOT_EXIST);
}
ProjectEntity project = projectService.getById(req.getProjectId());
if(null == project){
throw new ServiceException(Message.PROJECT_ID_IS_NOT_EXIST);
}
EquipmentUseRecordEntity equipmentUseRecordEntity = Converts.INSTANCE.toEquipmentUseRecordEntity(req);
equipmentUseRecordEntity.setEquipmentId(equipmentId);
equipmentUseRecordEntity.setOperateTime(LocalDateTime.now());
equipmentUseRecordEntity.setOperateType("0");
equipmentUseRecordEntity.setBatchId(new SnowflakeGenerator().next().toString());
this.save(equipmentUseRecordEntity);
equipment.setUseStatus("1");
equipment.setUseRecordId(equipmentUseRecordEntity.getUseRecordId());
equipmentService.updateById(equipment);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void returnEquipment(String userRecordId, EquipmentUseRecordReq req) {
EquipmentUseRecordEntity equipmentUseRecord = this.getById(userRecordId);
if(null == equipmentUseRecord){
throw new ServiceException(Message.EQUIPMENT_USE_RECORD_ID_NOT_EXIST);
}
EquipmentEntity equipment = equipmentService.getById(equipmentUseRecord.getEquipmentId());
if(null == equipment){
throw new ServiceException(Message.EQUIPMENT_ID_NOT_EXIST);
}
if("0".equals(equipment.getUseStatus())){
throw new ServiceException(Message.EQUIPMENT_IS_RETURN);
}
this.getOneOpt(
Wrappers.<EquipmentUseRecordEntity>lambdaQuery()
.eq(EquipmentUseRecordEntity::getBatchId, equipmentUseRecord.getBatchId())
.eq(EquipmentUseRecordEntity::getOperateType, "1")
).ifPresent(equipmentUseRecordEntity -> {throw new ServiceException(Message.EQUIPMENT_IS_RETURN);});
UserEntity user = userService.getById(req.getUserId());
if(null == user || !Constants.DEL_FLAG_0.equals(user.getDelFlag())){
throw new ServiceException(Message.USER_ID_NOT_EXIST);
}
ProjectEntity project = projectService.getById(req.getProjectId());
if(null == project){
throw new ServiceException(Message.PROJECT_ID_IS_NOT_EXIST);
}
EquipmentUseRecordEntity equipmentUseRecordEntity = Converts.INSTANCE.toEquipmentUseRecordEntity(req);
equipmentUseRecordEntity.setEquipmentId(equipmentUseRecord.getEquipmentId());
equipmentUseRecordEntity.setOperateTime(LocalDateTime.now());
equipmentUseRecordEntity.setOperateType("1");
equipmentUseRecordEntity.setBatchId(equipmentUseRecord.getBatchId());
this.save(equipmentUseRecordEntity);
equipment.setUseRecordId(null);
equipment.setUseStatus("0");
equipmentService.updateById(equipment);
}
}

View File

@ -0,0 +1,31 @@
<?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.dite.znpt.mapper.EquipmentMapper">
<select id="selectEquipmentResp" resultType="com.dite.znpt.domain.vo.EquipmentResp">
SELECT eq.equipment_id, eq.equipment_name, eq.equipment_type, eq.equipment_model, eq.equipment_sn, eq.equipment_status, eq.use_status,
equr.user_id, u.`name`, equr.project_id, p.project_name
FROM equipment eq
LEFT JOIN equipment_use_record equr ON eq.use_record_id = equr.use_record_id
LEFT JOIN project p ON p.project_id = equr.project_id
LEFT JOIN user u ON u.user_id = equr.user_id
WHERE eq.del_flag = '0'
<if test="req.equipmentName != null and req.equipmentName != ''">
AND eq.equipment_name LIKE CONCAT('%', #{req.equipmentName}, '%')
</if>
<if test="req.equipmentType != null and req.equipmentType != ''">
AND eq.equipment_type = #{req.equipmentType}
</if>
<if test="req.equipmentStatus != null and req.equipmentStatus != ''">
AND eq.req.equipment_status = #{req.equipmentStatus}
</if>
</select>
<select id="getEquipmentRespByEquipmentId" resultType="com.dite.znpt.domain.vo.EquipmentResp">
SELECT eq.equipment_id, eq.equipment_name, eq.equipment_type, eq.equipment_model, eq.equipment_sn, eq.equipment_status, eq.use_status,
equr.user_id, u.`name`, equr.project_id, p.project_name
FROM equipment eq
LEFT JOIN equipment_use_record equr ON eq.use_record_id = equr.use_record_id
LEFT JOIN project p ON p.project_id = equr.project_id
LEFT JOIN user u ON u.user_id = equr.user_id
WHERE eq.equipment_id = #{equipmentId} AND eq.del_flag = '0'
</select>
</mapper>

View File

@ -0,0 +1,34 @@
<?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.dite.znpt.mapper.EquipmentUseRecordMapper">
<select id="selectEquipmentUseRecordResp" resultType="com.dite.znpt.domain.vo.EquipmentUseRecordResp">
SELECT equr.use_record_id, eq.equipment_id, eq.equipment_name, eq.equipment_type, eq.equipment_model, eq.equipment_sn,
equr.user_id, u.`name`, equr.project_id, p.project_name, equr.operate_type, equr.operate_time
FROM equipment_use_record equr
LEFT JOIN equipment eq ON eq.equipment_id = equr.equipment_id
LEFT JOIN project p ON p.project_id = equr.project_id
LEFT JOIN user u ON u.user_id = equr.user_id
<where>
<if test = "req.equipmentId != null and req.equipmentId != ''">
AND eq.equipment_id = #{req.equipmentId}
</if>
<if test = "req.userId != null and req.userId != ''">
AND equr.user_id = #{req.userId}
</if>
<if test = "req.projectId != null and req.projectId != ''">
AND equr.project_id = #{req.projectId}
</if>
</where>
</select>
<select id="getEquipmentUseRecordResp" resultType="com.dite.znpt.domain.vo.EquipmentUseRecordResp">
SELECT equr.use_record_id, eq.equipment_id, eq.equipment_name, eq.equipment_type, eq.equipment_model, eq.equipment_sn,
equr.user_id, u.`name`, equr.project_id, p.project_name, equr.operate_type, equr.operate_time
FROM equipment_use_record equr
LEFT JOIN equipment eq ON eq.equipment_id = equr.equipment_id
LEFT JOIN project p ON p.project_id = equr.project_id
LEFT JOIN user u ON u.user_id = equr.user_id
WHERE equr.equipment_id = #{equipmentId}
ORDER BY equr.batch_id DESC, equr.operate_time ASC
</select>
</mapper>

View File

@ -169,5 +169,11 @@ public class CommonController {
return Result.ok(InspectionReportStatusEnum.listAll());
}
@ApiOperation(value = "查询设备类型", httpMethod = "GET")
@GetMapping("/list/equipment-type")
public Result<?> listEquipmentType(){
return Result.ok(EquipmentTypeEnum.listAll());
}
}

View File

@ -1,8 +1,18 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.EquipmentListReq;
import com.dite.znpt.domain.vo.EquipmentReq;
import com.dite.znpt.domain.vo.EquipmentResp;
import com.dite.znpt.service.EquipmentService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
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 Bear.G
@ -14,13 +24,45 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/equipment")
public class EquipmentController {
@RequestMapping("/list")
public String list() {
return "equipment/list";
@Resource
private EquipmentService equipmentService;
@ApiOperation(value = "分页查询设备信息列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<EquipmentResp> page(EquipmentListReq req) {
return PageResult.ok(equipmentService.page(req));
}
@RequestMapping("/detail")
public String detail() {
return "equipment/detail";
@ApiOperation(value = "查询设备信息列表", httpMethod = "GET")
@GetMapping("/list")
public Result<List<EquipmentResp>> list(EquipmentListReq req) {
return Result.ok(equipmentService.list(req));
}
@ApiOperation(value = "查询设备信息详情", httpMethod = "GET")
@GetMapping("/detail/{equipmentId}")
public Result<EquipmentResp> detail(@PathVariable String equipmentId) {
return Result.ok(equipmentService.detail(equipmentId));
}
@ApiOperation(value = "新增设备信息", httpMethod = "POST")
@PostMapping
public Result<?> add(@Validated @RequestBody EquipmentReq req){
equipmentService.save(req);
return Result.ok();
}
@ApiOperation(value = "修改设备信息", httpMethod = "PUT")
@PutMapping("/{equipmentId}")
public Result<?> edit(@PathVariable String equipmentId, @Validated @RequestBody EquipmentReq req){
equipmentService.update(equipmentId, req);
return Result.ok();
}
@ApiOperation(value = "删除设备信息", httpMethod = "DELETE")
@DeleteMapping("/{equipmentId}")
public Result<?> remove(@PathVariable String equipmentId){
equipmentService.deleteById(equipmentId);
return Result.ok();
}
}

View File

@ -1,8 +1,18 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.EquipmentUseRecordListReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordReq;
import com.dite.znpt.domain.vo.EquipmentUseRecordResp;
import com.dite.znpt.service.EquipmentUseRecordService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
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 Bear.G
@ -13,5 +23,40 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/equipment-use-record")
public class EquipmentUseRecordController {
@Resource
private EquipmentUseRecordService equipmentUseRecordService;
@ApiOperation(value = "分页查询设备使用记录列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<EquipmentUseRecordResp> page(EquipmentUseRecordListReq req) {
return PageResult.ok(equipmentUseRecordService.page(req));
}
@ApiOperation(value = "查询设备使用记录列表", httpMethod = "GET")
@GetMapping("/list")
public Result<List<EquipmentUseRecordResp>> list(EquipmentUseRecordListReq req) {
return Result.ok(equipmentUseRecordService.list(req));
}
@ApiOperation(value = "查询设备使用记录详情", httpMethod = "GET")
@GetMapping("/detail/{equipmentId}")
public Result<List<EquipmentUseRecordResp>> detail(@PathVariable String equipmentId) {
return Result.ok(equipmentUseRecordService.detail(equipmentId));
}
@ApiOperation(value = "借用设备", httpMethod = "PUT")
@PutMapping("/borrow/{equipmentId}")
public Result<?> borrowEquipment(@PathVariable String equipmentId, @Validated @RequestBody EquipmentUseRecordReq req){
equipmentUseRecordService.borrowEquipment(equipmentId,req);
return Result.ok();
}
@ApiOperation(value = "归还设备", httpMethod = "PUT")
@PutMapping("/return/{userRecordId}")
public Result<?> returnEquipment(@PathVariable String userRecordId, @Validated @RequestBody EquipmentUseRecordReq req){
equipmentUseRecordService.returnEquipment(userRecordId, req);
return Result.ok();
}
}