From ae1cdc86891552b48a5d07bcde69801e980497de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=9B=84?= Date: Thu, 24 Jul 2025 17:18:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E8=AE=BE=E5=A4=87=E5=80=9F=E7=94=A8=E5=BD=92=E8=BF=98?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dite/znpt/constant/Message.java | 7 + .../java/com/dite/znpt/converts/Converts.java | 4 + .../znpt/domain/entity/EquipmentEntity.java | 17 ++- .../entity/EquipmentUseRecordEntity.java | 5 +- .../dite/znpt/domain/vo/EquipmentListReq.java | 3 - .../com/dite/znpt/domain/vo/EquipmentReq.java | 7 +- .../dite/znpt/domain/vo/EquipmentResp.java | 26 +++- .../domain/vo/EquipmentUseRecordListReq.java | 8 +- .../znpt/domain/vo/EquipmentUseRecordReq.java | 8 -- .../domain/vo/EquipmentUseRecordResp.java | 8 +- .../dite/znpt/enums/EquipmentStatusEnum.java | 54 ++++++++ .../dite/znpt/enums/EquipmentTypeEnum.java | 54 ++++++++ .../com/dite/znpt/mapper/EquipmentMapper.java | 9 ++ .../znpt/mapper/EquipmentUseRecordMapper.java | 8 ++ .../dite/znpt/service/EquipmentService.java | 12 ++ .../service/EquipmentUseRecordService.java | 10 ++ .../service/impl/EquipmentServiceImpl.java | 92 ++++++++++++++ .../impl/EquipmentUseRecordServiceImpl.java | 120 ++++++++++++++++++ .../main/resources/mapper/EquipmentMapper.xml | 31 +++++ .../mapper/EquipmentUseRecordMapper.xml | 34 +++++ .../znpt/web/controller/CommonController.java | 6 + .../web/controller/EquipmentController.java | 58 +++++++-- .../EquipmentUseRecordController.java | 49 ++++++- 23 files changed, 581 insertions(+), 49 deletions(-) create mode 100644 core/src/main/java/com/dite/znpt/enums/EquipmentStatusEnum.java create mode 100644 core/src/main/java/com/dite/znpt/enums/EquipmentTypeEnum.java create mode 100644 core/src/main/resources/mapper/EquipmentMapper.xml create mode 100644 core/src/main/resources/mapper/EquipmentUseRecordMapper.xml diff --git a/core/src/main/java/com/dite/znpt/constant/Message.java b/core/src/main/java/com/dite/znpt/constant/Message.java index ef93a73..842c55e 100644 --- a/core/src/main/java/com/dite/znpt/constant/Message.java +++ b/core/src/main/java/com/dite/znpt/constant/Message.java @@ -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 = "设备已归还"; } diff --git a/core/src/main/java/com/dite/znpt/converts/Converts.java b/core/src/main/java/com/dite/znpt/converts/Converts.java index 9c20029..b373e0f 100644 --- a/core/src/main/java/com/dite/znpt/converts/Converts.java +++ b/core/src/main/java/com/dite/znpt/converts/Converts.java @@ -120,5 +120,9 @@ public interface Converts { AttendanceRecordEntity toAttendanceRecordEntity(AttendanceRecordReq req); List toAttendanceRecordResp(List list); + + EquipmentEntity toEquipmentUseRecordEntity(EquipmentReq req); + + EquipmentUseRecordEntity toEquipmentUseRecordEntity(EquipmentUseRecordReq req); } diff --git a/core/src/main/java/com/dite/znpt/domain/entity/EquipmentEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/EquipmentEntity.java index 3d1657d..098ae58 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/EquipmentEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/EquipmentEntity.java @@ -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; } diff --git a/core/src/main/java/com/dite/znpt/domain/entity/EquipmentUseRecordEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/EquipmentUseRecordEntity.java index 9611f0f..a22e003 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/EquipmentUseRecordEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/EquipmentUseRecordEntity.java @@ -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; } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentListReq.java b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentListReq.java index e5e1fe6..36d9cfc 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentListReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentListReq.java @@ -21,9 +21,6 @@ public class EquipmentListReq implements Serializable { @ApiModelProperty("设备名称") private String equipmentName; - @ApiModelProperty("设备编码") - private String equipmentCode; - @ApiModelProperty("设备类型") private String equipmentType; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentReq.java b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentReq.java index 2a742d6..db16ba9 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentReq.java @@ -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; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentResp.java b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentResp.java index b113bb2..335a532 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentResp.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentResp.java @@ -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; } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordListReq.java b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordListReq.java index 4111a3a..6784358 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordListReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordListReq.java @@ -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; } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordReq.java b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordReq.java index a074095..ae61f0e 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordReq.java @@ -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; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordResp.java b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordResp.java index 63e1a6a..e458823 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordResp.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/EquipmentUseRecordResp.java @@ -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; diff --git a/core/src/main/java/com/dite/znpt/enums/EquipmentStatusEnum.java b/core/src/main/java/com/dite/znpt/enums/EquipmentStatusEnum.java new file mode 100644 index 0000000..481f448 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/enums/EquipmentStatusEnum.java @@ -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 listAll(){ + List 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; + } +} diff --git a/core/src/main/java/com/dite/znpt/enums/EquipmentTypeEnum.java b/core/src/main/java/com/dite/znpt/enums/EquipmentTypeEnum.java new file mode 100644 index 0000000..a9c3b09 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/enums/EquipmentTypeEnum.java @@ -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 listAll(){ + List 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; + } +} diff --git a/core/src/main/java/com/dite/znpt/mapper/EquipmentMapper.java b/core/src/main/java/com/dite/znpt/mapper/EquipmentMapper.java index e3ca8fc..a0d170f 100644 --- a/core/src/main/java/com/dite/znpt/mapper/EquipmentMapper.java +++ b/core/src/main/java/com/dite/znpt/mapper/EquipmentMapper.java @@ -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 { + + List selectEquipmentResp(@Param("req") EquipmentListReq req); + + EquipmentResp getEquipmentRespByEquipmentId(@Param("equipmentId") String equipmentId); } diff --git a/core/src/main/java/com/dite/znpt/mapper/EquipmentUseRecordMapper.java b/core/src/main/java/com/dite/znpt/mapper/EquipmentUseRecordMapper.java index d6f2bb8..b4ea5c9 100644 --- a/core/src/main/java/com/dite/znpt/mapper/EquipmentUseRecordMapper.java +++ b/core/src/main/java/com/dite/znpt/mapper/EquipmentUseRecordMapper.java @@ -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 { + + List selectEquipmentUseRecordResp(@Param("req") EquipmentUseRecordListReq req); + List getEquipmentUseRecordResp(@Param("equipmentId") String equipmentId); } diff --git a/core/src/main/java/com/dite/znpt/service/EquipmentService.java b/core/src/main/java/com/dite/znpt/service/EquipmentService.java index 7d37550..5c21c21 100644 --- a/core/src/main/java/com/dite/znpt/service/EquipmentService.java +++ b/core/src/main/java/com/dite/znpt/service/EquipmentService.java @@ -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 { + List page(EquipmentListReq req); + List list(EquipmentListReq req); + EquipmentResp detail(String equipmentId); + void save(EquipmentReq req); + void update(String equipmentId, EquipmentReq req); + void deleteById(String equipmentId); } diff --git a/core/src/main/java/com/dite/znpt/service/EquipmentUseRecordService.java b/core/src/main/java/com/dite/znpt/service/EquipmentUseRecordService.java index 2c59514..261bb1c 100644 --- a/core/src/main/java/com/dite/znpt/service/EquipmentUseRecordService.java +++ b/core/src/main/java/com/dite/znpt/service/EquipmentUseRecordService.java @@ -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 { + List page(EquipmentUseRecordListReq req); + List list(EquipmentUseRecordListReq req); + List detail(String equipmentId); + void borrowEquipment(String equipmentId, EquipmentUseRecordReq req); + void returnEquipment(String userRecordId, EquipmentUseRecordReq req); } diff --git a/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java index ef0b1a2..8b6b013 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/EquipmentServiceImpl.java @@ -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 implements EquipmentService { + + @Resource + private EquipmentUseRecordService equipmentUseRecordService; + + @Resource + private UserService userService; + + @Resource + private ProjectService projectService; + + @Override + public List page(EquipmentListReq req) { + PageUtil.startPage(); + return this.list(req); + } + + @Override + public List list(EquipmentListReq req) { + List 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); + } } diff --git a/core/src/main/java/com/dite/znpt/service/impl/EquipmentUseRecordServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/EquipmentUseRecordServiceImpl.java index b2ce01f..2db0c74 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/EquipmentUseRecordServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/EquipmentUseRecordServiceImpl.java @@ -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 implements EquipmentUseRecordService { + @Resource + private EquipmentService equipmentService; + + @Resource + private ProjectService projectService; + + @Resource + private UserService userService; + + @Override + public List page(EquipmentUseRecordListReq req) { + PageUtil.startPage(); + return this.list(req); + } + + @Override + public List list(EquipmentUseRecordListReq req) { + return this.baseMapper.selectEquipmentUseRecordResp(req); + } + + @Override + public List 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.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); + } } diff --git a/core/src/main/resources/mapper/EquipmentMapper.xml b/core/src/main/resources/mapper/EquipmentMapper.xml new file mode 100644 index 0000000..cf8beda --- /dev/null +++ b/core/src/main/resources/mapper/EquipmentMapper.xml @@ -0,0 +1,31 @@ + + + + + + \ No newline at end of file diff --git a/core/src/main/resources/mapper/EquipmentUseRecordMapper.xml b/core/src/main/resources/mapper/EquipmentUseRecordMapper.xml new file mode 100644 index 0000000..5cdca38 --- /dev/null +++ b/core/src/main/resources/mapper/EquipmentUseRecordMapper.xml @@ -0,0 +1,34 @@ + + + + + + \ No newline at end of file diff --git a/web/src/main/java/com/dite/znpt/web/controller/CommonController.java b/web/src/main/java/com/dite/znpt/web/controller/CommonController.java index 62a9c8a..5371ed3 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/CommonController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/CommonController.java @@ -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()); + } + } diff --git a/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java b/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java index 3ea1abd..b3318b5 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/EquipmentController.java @@ -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 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(EquipmentListReq req) { + return Result.ok(equipmentService.list(req)); + } + + @ApiOperation(value = "查询设备信息详情", httpMethod = "GET") + @GetMapping("/detail/{equipmentId}") + public Result 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(); } } diff --git a/web/src/main/java/com/dite/znpt/web/controller/EquipmentUseRecordController.java b/web/src/main/java/com/dite/znpt/web/controller/EquipmentUseRecordController.java index c58c408..1fb1774 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/EquipmentUseRecordController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/EquipmentUseRecordController.java @@ -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 page(EquipmentUseRecordListReq req) { + return PageResult.ok(equipmentUseRecordService.page(req)); + } + + @ApiOperation(value = "查询设备使用记录列表", httpMethod = "GET") + @GetMapping("/list") + public Result> list(EquipmentUseRecordListReq req) { + return Result.ok(equipmentUseRecordService.list(req)); + } + + @ApiOperation(value = "查询设备使用记录详情", httpMethod = "GET") + @GetMapping("/detail/{equipmentId}") + public Result> 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(); + } }