From bbccd7a81e92267f7ec98beb2adb3a6646fe4b4b Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期二, 11 三月 2025 13:48:01 +0800
Subject: [PATCH] lims检测中心设备联调
---
cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFaultOne.java | 125 +++++
cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java | 100 ++++
cnas-require/src/main/java/com/ruoyi/requier/controller/InstructionController.java | 102 ++++
cnas-require/src/main/java/com/ruoyi/requier/pojo/OperationInstruction.java | 92 ++++
cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultOneMapper.java | 20
cnas-require/src/main/java/com/ruoyi/requier/vo/OperationInstructionVo.java | 17
cnas-require/src/main/java/com/ruoyi/requier/service/InstructionService.java | 22
cnas-require/src/main/java/com/ruoyi/requier/service/OperationInstructionService.java | 20
cnas-require/src/main/java/com/ruoyi/requier/pojo/Instruction.java | 64 ++
cnas-require/src/main/java/com/ruoyi/requier/service/ReservationService.java | 29 +
cnas-require/src/main/java/com/ruoyi/requier/service/impl/ReservationServiceImpl.java | 110 ++++
cnas-require/src/main/java/com/ruoyi/requier/dto/ReservationDto.java | 10
cnas-require/src/main/java/com/ruoyi/requier/mapper/InstructionMapper.java | 19
cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultMapper.java | 9
cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFault.java | 39 +
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java | 2
cnas-require/src/main/java/com/ruoyi/requier/pojo/Reservation.java | 84 +++
cnas-require/src/main/resources/mapper/OperationInstructionMapper.xml | 26 +
cnas-require/src/main/java/com/ruoyi/requier/service/impl/InstructionServiceImpl.java | 66 ++
cnas-require/src/main/java/com/ruoyi/requier/controller/ReservationController.java | 74 +++
cnas-require/src/main/java/com/ruoyi/requier/dto/DeviceFaultOneDto.java | 17
cnas-require/src/main/java/com/ruoyi/requier/service/DeviceFaultService.java | 10
cnas-require/src/main/resources/mapper/ReservationMapper.xml | 40 +
cnas-require/src/main/java/com/ruoyi/requier/controller/DeviceFaultController.java | 50 ++
cnas-require/src/main/java/com/ruoyi/requier/service/impl/OperationInstructionServiceImpl.java | 27 +
cnas-require/src/main/java/com/ruoyi/requier/dto/OperationInstructionDto.java | 35 +
cnas-require/src/main/java/com/ruoyi/requier/mapper/OperationInstructionMapper.java | 20
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java | 3
cnas-require/src/main/java/com/ruoyi/requier/dto/InstructionDto.java | 13
cnas-require/src/main/java/com/ruoyi/requier/mapper/ReservationMapper.java | 23 +
cnas-require/src/main/resources/mapper/InstructionMapper.xml | 27 +
cnas-require/src/main/resources/mapper/DeviceFaultOneMapper.xml | 50 ++
32 files changed, 1,343 insertions(+), 2 deletions(-)
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
index 015621a..34eee58 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
@@ -63,7 +63,7 @@
@ApiOperation(value = "浜哄憳鏄庣粏鍒嗛〉鏌ヨ")
@GetMapping("basicInformationOfPersonnelSelectPage")
- public Result<IPage<Map<String, Object>>> basicInformationOfPersonnelSelectPage(Page<List<PersonBasicInfoDetailsDto>> page, String name, Integer departmentId) {
+ public Result<IPage<Map<String, Object>>> basicInformationOfPersonnelSelectPage(Page page, String name, Integer departmentId) {
return Result.success(personBasicInfoService.basicInformationOfPersonnelSelectPage(page, name, departmentId));
}
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
index adb5fb7..aeff449 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
@@ -6,6 +6,7 @@
import com.ruoyi.common.core.dto.DepartmentDto;
import com.ruoyi.personnel.dto.PersonBasicInfoDto;
import com.ruoyi.personnel.pojo.PersonBasicInfo;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@@ -33,5 +34,5 @@
* @param departmentId
* @return
*/
- IPage<Map<String, Object>> selectPersonBasecInfoAndUser(Page page, String name, Integer departmentId);
+ IPage<Map<String, Object>> selectPersonBasecInfoAndUser(Page page, @Param("name") String name, @Param("departmentId") Integer departmentId);
}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/DeviceFaultController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/DeviceFaultController.java
new file mode 100644
index 0000000..ff7edea
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/DeviceFaultController.java
@@ -0,0 +1,50 @@
+package com.ruoyi.requier.controller;
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.pojo.DeviceFault;
+import com.ruoyi.requier.service.DeviceFaultService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/deviceFaults")
+public class DeviceFaultController {
+
+ private final DeviceFaultService deviceFaultService;
+
+ @Autowired
+ public DeviceFaultController(DeviceFaultService deviceFaultService) {
+ this.deviceFaultService = deviceFaultService;
+ }
+
+ @GetMapping
+ public List<DeviceFault> getAllDeviceFaults() {
+ return deviceFaultService.list();
+ }
+
+ @PostMapping
+ public DeviceFault createDeviceFault(@RequestBody DeviceFault deviceFault) {
+ deviceFaultService.save(deviceFault);
+ return deviceFault;
+ }
+
+ @PutMapping("/{id}")
+ public DeviceFault updateDeviceFault(@PathVariable Integer id, @RequestBody DeviceFault deviceFault) {
+ deviceFault.setId(id);
+ deviceFaultService.updateById(deviceFault);
+ return deviceFault;
+ }
+
+ @DeleteMapping("/{id}")
+ public void deleteDeviceFault(@PathVariable Integer id) {
+ deviceFaultService.removeById(id);
+ }
+
+ @GetMapping("/device/{deviceId}")
+ public Result<Map<String,Object>> getDeviceFaultsByDeviceId(@PathVariable Integer deviceId) {
+ return Result.success(deviceFaultService.findByDeviceId(deviceId));
+ }
+}
\ No newline at end of file
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/InstructionController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/InstructionController.java
new file mode 100644
index 0000000..d67ec17
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/InstructionController.java
@@ -0,0 +1,102 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.requier.dto.InstructionDto;
+import com.ruoyi.requier.pojo.Instruction;
+import com.ruoyi.requier.pojo.OperationInstruction;
+import com.ruoyi.requier.service.InstructionService;
+import com.ruoyi.requier.service.OperationInstructionService;
+import com.ruoyi.requier.vo.OperationInstructionVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+@RestController
+@RequestMapping("/instruction")
+public class InstructionController {
+
+ @Autowired
+ private InstructionService instructionService;
+
+ @Autowired
+ private OperationInstructionService operationInstructionService;
+
+ @ApiOperation(value = "浣滀笟鎸囧涔� 鍒嗛〉")
+ @GetMapping("/pageByPageQueryOfHomeworkInstructions")
+ public Result<IPage<Instruction>> pageByPageQueryOfHomeworkInstructions(Page page){
+ return Result.success(instructionService.pageByPageQueryOfHomeworkInstructions(page));
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔︽柊澧�")
+ @PostMapping("/newHomeworkGuidebookAdded")
+ public Result newHomeworkGuidebookAdded(@RequestBody InstructionDto instructionDto){
+ instructionService.newHomeworkGuidebookAdded(instructionDto);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔︾紪杈�")
+ @GetMapping("/homeworkGuidebookEditor")
+ public Result<Map<String, Object>> homeworkGuidebookEditor(Integer instructionId){
+ Instruction instruction = instructionService.getById(instructionId);
+ List<OperationInstructionVo> list = operationInstructionService.homeworkGuidebookEditor(instructionId);
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("list", list);
+ map.put("instruction", instruction);
+ return Result.success(map);
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔﹀彈鎺ф枃浠跺垹闄�")
+ @GetMapping("/deleteHomeworkGuidebook")
+ public Result deleteHomeworkGuidebook(String ids){
+ if (ObjectUtils.isNotEmpty(ids)) {
+ String[] idArray = ids.split(",");
+ operationInstructionService.removeBatchByIds(Arrays.asList(idArray));
+ }
+ return Result.success();
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔﹀垹闄�")
+ @DeleteMapping("/homeworkGuidebook")
+ public Result homeworkGuidebook(String id, String instructionId){
+ // 鍒犻櫎瀛愯〃鏁版嵁
+ operationInstructionService.removeById(id);
+ // 濡傛灉瀛愯〃鏁版嵁涓虹┖
+ long count = operationInstructionService.count(Wrappers.<OperationInstruction>lambdaQuery()
+ .eq(OperationInstruction::getInstructionId, instructionId));
+ // 閭d箞灏卞垹闄ょ埗琛ㄦ暟鎹�
+ if (count < 1) {
+ instructionService.removeById(id);
+ }
+ return Result.success();
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔﹀鎵�")
+ @PostMapping("/approvalOfHomeworkInstructionManual")
+ public Result approvalOfHomeworkInstructionManual(String id, Boolean status){
+ operationInstructionService.update(Wrappers.<OperationInstruction>lambdaUpdate()
+ .eq(OperationInstruction::getId, id)
+ .set(OperationInstruction::getStatus, status)
+ .set(OperationInstruction::getApproverId, SecurityUtils.getUserId())
+ .set(OperationInstruction::getEntryIntoForceTime, LocalDateTime.now()));
+ return Result.success();
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/ReservationController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/ReservationController.java
new file mode 100644
index 0000000..85e691f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/ReservationController.java
@@ -0,0 +1,74 @@
+package com.ruoyi.requier.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.JackSonUtil;
+import com.ruoyi.requier.dto.DeviceDto;
+import com.ruoyi.requier.pojo.Reservation;
+import com.ruoyi.requier.service.DeviceService;
+import com.ruoyi.requier.service.ReservationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+@RestController
+@RequestMapping("/reservation")
+public class ReservationController {
+ @Autowired
+ private ReservationService reservationService;
+
+ @Resource
+ private DeviceService deviceService;
+
+ @GetMapping("/selectDeviceParameter")
+ public Result selectDeviceParameter(Page page,DeviceDto itemParameter,
+ @RequestParam(value = "laboratoryNameIsNull", required = false) Boolean laboratoryNameIsNull,
+ @RequestParam(value = "starttime", required = false)String starttime,
+ @RequestParam(value = "endtime", required = false) String endtime) {
+ ArrayList<JSONObject> jsonObjects = reservationService.selectDeviceParameter(page, itemParameter, laboratoryNameIsNull, starttime, endtime);
+ return Result.success(jsonObjects);
+ }
+
+ @GetMapping("/selectReservationParameterPage")
+ public Result selectReservationParameterPage(@RequestParam String deviceId,@RequestParam String reservationTime,@RequestParam String specificTime){
+ return Result.success(reservationService.selectReservationParameterPage(deviceId,reservationTime,specificTime));
+ }
+
+ @GetMapping("/{id}")
+ public Result getList(@PathVariable Integer id) {
+ LambdaQueryWrapper<Reservation> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(Reservation::getDeviceId,id);
+ return Result.success(reservationService.list(lambdaQueryWrapper));
+ }
+
+ @PostMapping("save")
+ public Result save(@RequestBody Reservation reservation){
+ reservation.setCreateDate(LocalDateTime.now());
+ reservationService.save(reservation);
+ return Result.success();
+ }
+
+
+ @DeleteMapping("/delete")
+ public Result deleteReservation(String ids) {
+ String[] idArray = ids.split(",");
+ reservationService.removeBatchByIds(Arrays.asList(idArray));
+ return Result.success();
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/DeviceFaultOneDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/DeviceFaultOneDto.java
new file mode 100644
index 0000000..442893f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/DeviceFaultOneDto.java
@@ -0,0 +1,17 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.DeviceFaultOne;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceFaultOneDto extends DeviceFaultOne {
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty(value = "绠$悊缂栧彿")
+ private String managementNumber;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/InstructionDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/InstructionDto.java
new file mode 100644
index 0000000..66c9c93
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/InstructionDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.Instruction;
+import com.ruoyi.requier.pojo.OperationInstruction;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InstructionDto extends Instruction {
+
+ private List<OperationInstruction> feTempHumRecordList;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/OperationInstructionDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/OperationInstructionDto.java
new file mode 100644
index 0000000..18c2e72
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/OperationInstructionDto.java
@@ -0,0 +1,35 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.OperationInstruction;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class OperationInstructionDto extends OperationInstruction {
+ @ApiModelProperty("鐢宠缂栧彿")
+ private String applicationNumber;
+
+ @ApiModelProperty("鐢宠閮ㄩ棬")
+ private String applicationDepartment;
+
+ @ApiModelProperty("璐d换浜�")
+ private String personLiable;
+
+ @ApiModelProperty("鍙楁帶鐢宠璇存槑")
+ private String controlledApplicationDescription;
+
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("鍨嬪彿")
+ private String deviceModel;
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("涓婁紶浜�")
+ private String uploaderName;
+
+ @ApiModelProperty("瀹℃壒浜�")
+ private String approverName;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/ReservationDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/ReservationDto.java
new file mode 100644
index 0000000..d9e9712
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/ReservationDto.java
@@ -0,0 +1,10 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.Reservation;
+import lombok.Data;
+
+@Data
+public class ReservationDto extends Reservation {
+
+ private String name;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultMapper.java
new file mode 100644
index 0000000..117c5d8
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.DeviceFault;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceFaultMapper extends BaseMapper<DeviceFault> {
+}
\ No newline at end of file
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultOneMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultOneMapper.java
new file mode 100644
index 0000000..4da3db7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultOneMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.DeviceFaultOneDto;
+import com.ruoyi.requier.pojo.DeviceFaultOne;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+public interface DeviceFaultOneMapper extends BaseMapper<DeviceFaultOne> {
+
+ IPage<DeviceFaultOneDto> deviceFaultOnePage(Integer deviceId, Page page, String processNumber);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/InstructionMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/InstructionMapper.java
new file mode 100644
index 0000000..8fe8276
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/InstructionMapper.java
@@ -0,0 +1,19 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.pojo.Instruction;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+public interface InstructionMapper extends BaseMapper<Instruction> {
+
+ IPage<Instruction> pageByPageQueryOfHomeworkInstructions(Page page);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/OperationInstructionMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/OperationInstructionMapper.java
new file mode 100644
index 0000000..a39c08f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/OperationInstructionMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.OperationInstruction;
+import com.ruoyi.requier.vo.OperationInstructionVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+public interface OperationInstructionMapper extends BaseMapper<OperationInstruction> {
+
+ List<OperationInstructionVo> homeworkGuidebookEditor(Integer instructionId);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/ReservationMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ReservationMapper.java
new file mode 100644
index 0000000..07bb465
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ReservationMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.dto.ReservationDto;
+import com.ruoyi.requier.pojo.Reservation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+public interface ReservationMapper extends BaseMapper<Reservation> {
+
+
+ List<ReservationDto> selectReservationParameterPage(@Param("deviceId") Integer deviceId, @Param("reservationTime") String reservationTime, @Param("specificTime") String specificTime);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFault.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFault.java
new file mode 100644
index 0000000..2b79202
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFault.java
@@ -0,0 +1,39 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+@TableName("device_faults")
+public class DeviceFault {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ //璁惧di
+ private Integer deviceId;
+ //鏁呴殰娆℃暟
+ private Integer faultCount;
+ //鏈�杩戞晠闅滄棩鏈�
+ private LocalDate recentFaultDate;
+ //鏈�杩戞牎鍑嗘棩鏈�
+ private LocalDate recentCalibrationDate;
+ // 鏈�杩戞牎鍑嗙粨璁�
+ private String calibrationConclusion;
+ // 鏈�杩戞鏌ユ棩鏈�
+ private LocalDate recentCheckDate;
+ // 涓嬩竴娆℃鏌ユ棩鏈�
+ private LocalDate nextCheckDate;
+//妫�鏌ョ粨璁�
+ private String checkConclusion;
+//缁存姢绫诲瀷
+ private String maintenanceType;
+//缁存姢浜哄憳
+ private String maintenancePerson;
+//澶囨敞
+ private String comments;
+
+}
\ No newline at end of file
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFaultOne.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFaultOne.java
new file mode 100644
index 0000000..8da38f5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFaultOne.java
@@ -0,0 +1,125 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+@Getter
+@Setter
+@TableName("device_fault_one")
+@ApiModel(value = "DeviceFaultOne瀵硅薄", description = "璁惧鏁呴殰琛�")
+public class DeviceFaultOne implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("1娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty("1鍑嗙‘搴﹂噺鍊�")
+ private String measureOfAccuracy;
+
+ @ApiModelProperty("1鏁呴殰鎯呭喌")
+ private String faultSituation;
+
+ @ApiModelProperty("1鏂囦欢鍘熷悕")
+ private String fileName;
+
+ @ApiModelProperty("1绯荤粺鏂囦欢鍚�")
+ private String systemFileName;
+
+ @ApiModelProperty("1涓嬬幆鑺傝礋璐d汉")
+ private String submitNextPesponsible;
+
+ @ApiModelProperty("1鎿嶄綔浜�")
+ private String submitOperatingPersonnel;
+
+ @ApiModelProperty("1鏃ユ湡")
+ private LocalDateTime submitDate;
+
+ @ApiModelProperty("2缁翠慨鏂瑰紡鍙婅垂鐢�")
+ private String methodCost;
+
+ @ApiModelProperty("2瀹℃牳鎰忚")
+ private String adminAuditOption;
+
+ @ApiModelProperty("2璁惧绠$悊鍛�-涓嬬幆鑺傝礋璐d汉")
+ private String adminNextPesponsible;
+
+ @ApiModelProperty("2绠$悊鍛�-鎿嶄綔浜�")
+ private String adminOperatingPersonnel;
+
+ @ApiModelProperty("2绠$悊鍛�-鏃ユ湡")
+ private LocalDateTime adminDate;
+
+ @ApiModelProperty("3 鎶�鏈礋璐d汉 瀹℃牳鎰忚")
+ private String technicalAuditOption;
+
+ @ApiModelProperty("3鎶�鏈礋璐d汉 涓嬬幆鑺傝礋璐d汉")
+ private String technicalNextPesponsible;
+
+ @ApiModelProperty("3 鎶�鏈礋璐d汉 鎿嶄綔浜�")
+ private String technicalOperatingPersonnel;
+
+ @ApiModelProperty("3 鎶�鏈礋璐d汉 鏃ユ湡")
+ private LocalDateTime technicalDate;
+
+ @ApiModelProperty("4缁翠慨鎯呭喌")
+ private String maintainSituation;
+
+ @ApiModelProperty("4 缁翠慨 涓嬬幆鑺傝礋璐d汉")
+ private String maintainNextPesponsible;
+
+ @ApiModelProperty("4 缁翠慨 鎿嶄綔浜�")
+ private String maintainOperatingPersonnel;
+
+ @ApiModelProperty("4 缁翠慨 鏃ユ湡")
+ private LocalDateTime maintainDate;
+
+ @ApiModelProperty("5楠屾敹纭鏍″噯鎯呭喌")
+ private String checkCalSituation;
+
+ @ApiModelProperty("5 缁翠慨鍚� 鎿嶄綔浜�")
+ private String afterMaintenanceOperatingPersonnel;
+
+ @ApiModelProperty("5 缁翠慨鍚� 鏃ユ湡")
+ private LocalDateTime afterMaintenanceDate;
+
+ @ApiModelProperty("褰撳墠鐘舵��")
+ private String currentState;
+
+ @ApiModelProperty("鎻愪氦浜�")
+ private String submitPerson;
+
+ @ApiModelProperty("褰撳墠璐d换浜�")
+ private String currentResponsible;
+
+ @ApiModelProperty("鍒涘缓鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏁呴殰鏃ユ湡")
+ private LocalDate faultDate;
+
+ @ApiModelProperty("瑕佹眰淇鏃ユ湡")
+ private LocalDate requestRepairDate;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/Instruction.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/Instruction.java
new file mode 100644
index 0000000..ddb199f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/Instruction.java
@@ -0,0 +1,64 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+@Getter
+@Setter
+@TableName("device_instruction")
+@ApiModel(value = "Instruction瀵硅薄", description = "浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃")
+public class Instruction implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("鐢宠缂栧彿")
+ private String applicationNumber;
+
+ @ApiModelProperty("鐢宠閮ㄩ棬")
+ private String applicationDepartment;
+
+ @ApiModelProperty("璐d换浜�")
+ private String personLiable;
+
+ @ApiModelProperty("鍙楁帶鐢宠璇存槑")
+ private String controlledApplicationDescription;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileSystemName;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鏇存柊浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/OperationInstruction.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/OperationInstruction.java
new file mode 100644
index 0000000..2993ccf
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/OperationInstruction.java
@@ -0,0 +1,92 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+@Getter
+@Setter
+@TableName("device_operation_instruction")
+@ApiModel(value = "OperationInstruction瀵硅薄", description = "璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛�")
+public class OperationInstruction implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("璁惧涓婚敭id")
+ private String deviceId;
+
+ @ApiModelProperty("鏂囦欢绫诲瀷")
+ private String documentType;
+
+ @ApiModelProperty("鏂囨。缂栧彿")
+ private String documentNumber;
+
+ @ApiModelProperty("鏂囦欢鐗堟湰")
+ private String documentVersion;
+
+ @ApiModelProperty("浣滆��")
+ private String author;
+
+ @ApiModelProperty("鎻愪氦鏃ユ湡")
+ private LocalDate submitDate;
+
+ @ApiModelProperty("鏂囨。璇存槑")
+ private String documentNote;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileSystemName;
+
+ @ApiModelProperty("浣滀笟鎸囧涔d")
+ private Integer instructionId;
+
+ @ApiModelProperty("涓婁紶浜篿d")
+ private Integer uploader;
+
+ @ApiModelProperty("瀹℃壒浜篿d")
+ private Integer approverId;
+
+ @ApiModelProperty("瀹℃壒鐘舵��")
+ private Boolean status;
+
+ @ApiModelProperty("鐢熸晥鏃堕棿")
+ private LocalDateTime entryIntoForceTime;
+
+ @ApiModelProperty("涓婁紶鏃堕棿")
+ private LocalDateTime uploadTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊浜篿d")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/Reservation.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/Reservation.java
new file mode 100644
index 0000000..8eb9865
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/Reservation.java
@@ -0,0 +1,84 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+@Getter
+@Setter
+@TableName("device_reservation")
+public class Reservation implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 璁惧id
+ */
+ private Integer deviceId;
+
+ /**
+ * 棰勫畾璁惧
+ */
+ private String deviceName;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ private String customerName;
+
+ /**
+ * 棰勫畾鏃堕棿
+ */
+
+ private String reservationTime;
+
+ /**
+ * 鍏蜂綋鏃堕棿
+ */
+ private String specificTime;
+
+
+
+ /**
+ * 鑱旂郴浜�
+ */
+ private String linkPerson;
+
+ /**
+ * 鑱旂郴鐢佃瘽
+ */
+ private String phone;
+
+ /**
+ * 娴佺▼缂栧彿
+ */
+ private String deviceNumber;
+
+ /**
+ * 棰勫畾璇存槑
+ */
+ private String reservationSpecification;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDateTime createDate;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/DeviceFaultService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/DeviceFaultService.java
new file mode 100644
index 0000000..0071f2f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/DeviceFaultService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.DeviceFault;
+
+import java.util.Map;
+
+public interface DeviceFaultService extends IService<DeviceFault> {
+ Map<String,Object> findByDeviceId(Integer deviceId);
+}
\ No newline at end of file
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/InstructionService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/InstructionService.java
new file mode 100644
index 0000000..10e200f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/InstructionService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.InstructionDto;
+import com.ruoyi.requier.pojo.Instruction;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+public interface InstructionService extends IService<Instruction> {
+
+ IPage<Instruction> pageByPageQueryOfHomeworkInstructions(Page page);
+
+ void newHomeworkGuidebookAdded(InstructionDto instructionDto);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/OperationInstructionService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/OperationInstructionService.java
new file mode 100644
index 0000000..9d1bf23
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/OperationInstructionService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.OperationInstruction;
+import com.ruoyi.requier.vo.OperationInstructionVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+public interface OperationInstructionService extends IService<OperationInstruction> {
+
+ List<OperationInstructionVo> homeworkGuidebookEditor(Integer instructionId);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/ReservationService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ReservationService.java
new file mode 100644
index 0000000..0bd2cb3
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ReservationService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.requier.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.DeviceDto;
+import com.ruoyi.requier.dto.ReservationDto;
+import com.ruoyi.requier.pojo.Reservation;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+public interface ReservationService extends IService<Reservation> {
+
+ ArrayList<JSONObject> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull, String starttime, String endtime);
+
+ List<ReservationDto> selectReservationParameterPage(String deviceId, String reservationTime, String specificTime);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java
new file mode 100644
index 0000000..503b005
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java
@@ -0,0 +1,100 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.StructureItemParameterMapper;
+import com.ruoyi.basic.pojo.StructureItemParameter;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.requier.mapper.DeviceFaultMapper;
+import com.ruoyi.requier.mapper.DeviceFaultOneMapper;
+import com.ruoyi.requier.mapper.DeviceMaintenanceMapper;
+import com.ruoyi.requier.mapper.DeviceMapper;
+import com.ruoyi.requier.pojo.*;
+import com.ruoyi.requier.service.DeviceFaultService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class DeviceFaultServiceImpl extends ServiceImpl<DeviceFaultMapper, DeviceFault> implements DeviceFaultService {
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private QrShowServiceImpl qrShowService;
+
+ @Autowired
+ private DeviceMaintenanceMapper deviceMaintenanceMapper;
+
+ @Autowired
+ private StructureItemParameterMapper structureItemParameterMapper;
+
+ @Autowired
+ private DeviceFaultOneMapper deviceFaultOneMapper;
+
+ @Override
+ public Map<String,Object> findByDeviceId(Integer deviceId) {
+ Map<String,Object> map = new HashMap<>();
+ if(Objects.isNull(deviceId)){
+ return map;
+ }
+ //鏌ヨ璁惧涓昏〃淇℃伅
+ Device device = deviceMapper.selectById(deviceId);
+ if(!Objects.isNull(device)){
+ //鏌ヨ璁惧鏍″噯淇℃伅
+ DeviceMetricRecord calibrate = qrShowService.getDeviceMetricRecord(device.getId(), "calibrate");
+ //鏌ヨ璁惧鏍告煡淇℃伅
+ DeviceMetricRecord examine = qrShowService.getDeviceMetricRecord(device.getId(), "examine");
+ //鏌ヨ璁惧缁存姢璁板綍
+ DeviceMaintenance deviceMaintenance = Optional.ofNullable(deviceMaintenanceMapper.selectOne(Wrappers.<DeviceMaintenance>lambdaQuery()
+ .eq(DeviceMaintenance::getDeviceId, device.getId())
+ .orderByDesc(DeviceMaintenance::getId)
+ .last("limit 1"))).orElse(new DeviceMaintenance());
+ //鏌ヨ璁惧鏁呴殰淇℃伅
+ List<DeviceFaultOne> deviceFaultOneList = Optional.ofNullable(deviceFaultOneMapper.selectList(Wrappers.<DeviceFaultOne>lambdaQuery()
+ .eq(DeviceFaultOne::getDeviceId, device.getId())
+ .orderByDesc(DeviceFaultOne::getId))).orElse(new ArrayList<>());
+ //鏌ヨ璁惧鐘舵�佸瓧鍏�
+ List<SysDictData> sysDictDataList = DictUtils.getDictCache("璁惧鐘舵��");
+ SysDictData findEnum = sysDictDataList.stream().filter(e-> Integer.parseInt(e.getDictValue()) ==device.getDeviceStatus()).findFirst().orElse(new SysDictData());
+ map.put("progress",qrShowService.calcDeviceNextCheckRatio(calibrate.getCalibrationDate(),calibrate.getNextCalibrationDate()));//璺濈涓嬫鏍″噯鏃ユ湡鐨勫ぉ鏁扮櫨鍒嗘瘮
+ map.put("deviceName",device.getDeviceName());//璁惧鍚嶇О
+ map.put("deviceCode",device.getManagementNumber());//璁惧缂栧彿
+ map.put("usedYears",qrShowService.calcUsedYears(device.getActivationDate()));//鍚敤鏃堕暱(骞�)
+ map.put("deviceStatus",findEnum.getDictLabel());//璁惧杩愯鐘舵��
+ map.put("faultCount",deviceFaultOneList.size());//鏁呴殰娆℃暟
+ String faultDate = !deviceFaultOneList.isEmpty() ?qrShowService.formatDate(deviceFaultOneList.get(0).getFaultDate(),"yyyy-MM-dd"):"";
+ map.put("faultDate",faultDate);//鏈�杩戞晠闅滄棩鏈�
+ map.put("lastCalibrationDate",qrShowService.formatDate(calibrate.getCalibrationDate(),"yyyy-MM-dd"));//鏈�杩戞牎鍑嗘棩鏈�
+ map.put("nextCalibrationDate",qrShowService.formatDate(calibrate.getNextCalibrationDate(),"yyyy-MM-dd"));//涓嬫鏍″噯鏃ユ湡
+ String calibrateStatus = "0yes".equals(calibrate.getStatus())?"鍚堟牸":"1no".equals(calibrate.getStatus())?"涓嶅悎鏍�":"鍏朵粬";
+ map.put("calibrateStatus",Objects.isNull(calibrate.getCalibrationDate())?"":calibrateStatus);//鏍″噯鎬荤粨璁�
+ map.put("lastExamineDate",examine.getCalibrationDate());//鏈�杩戞牳鏌ユ棩鏈�
+ map.put("nextExamineDate",examine.getNextCalibrationDate());//涓嬫鏍告煡鏃ユ湡
+ String examineStatus = "0yes".equals(examine.getStatus())?"鍚堟牸":"1no".equals(examine.getStatus())?"涓嶅悎鏍�":"鍏朵粬";
+ map.put("examineStatus",Objects.isNull(examine.getCalibrationDate())?"":examineStatus);//鏍告煡鎬荤粨璁�
+ map.put("maintenanceDate",deviceMaintenance.getDate());//鏈�杩戠淮鎶ゆ棩鏈�
+ map.put("nextMaintenanceDate",deviceMaintenance.getNextDate());//涓嬫缁存姢鏃ユ湡
+ String maintenanceType = "";
+ if(!Objects.isNull(deviceMaintenance.getMaintenanceType())){
+ maintenanceType = 0==deviceMaintenance.getMaintenanceType()?"浣跨敤鍓嶇淮鎶�":"浣跨敤鍚庣淮鎶�";
+ }
+ map.put("maintenanceType",maintenanceType);//缁存姢鎬荤粨璁�
+ //娴嬮噺椤圭洰
+ String insProduct = "";
+ if(StringUtils.isNotBlank(device.getInsProductIds())){
+ String[] ids = device.getInsProductIds().split(",");
+ List<StructureItemParameter> parameters = structureItemParameterMapper.selectBatchIds(Arrays.asList(ids));
+ List<String> itemList = parameters.stream().map(StructureItemParameter::getInspectionItem).distinct().collect(Collectors.toList());
+ insProduct = String.join(",",itemList);
+ }
+ map.put("insProduct",insProduct);//娴嬮噺椤圭洰
+ }
+ return map;
+ }
+}
\ No newline at end of file
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InstructionServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InstructionServiceImpl.java
new file mode 100644
index 0000000..3a1554f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InstructionServiceImpl.java
@@ -0,0 +1,66 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.numgen.NumberGenerator;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.requier.dto.InstructionDto;
+import com.ruoyi.requier.mapper.InstructionMapper;
+import com.ruoyi.requier.pojo.Instruction;
+import com.ruoyi.requier.service.InstructionService;
+import com.ruoyi.requier.service.OperationInstructionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class InstructionServiceImpl extends ServiceImpl<InstructionMapper, Instruction> implements InstructionService {
+
+ @Autowired
+ private OperationInstructionService operationInstructionService;
+
+ @Autowired
+ private NumberGenerator<Instruction> numberGenerator;
+
+ @Override
+ public IPage<Instruction> pageByPageQueryOfHomeworkInstructions(Page page) {
+ return baseMapper.pageByPageQueryOfHomeworkInstructions(page);
+ }
+
+ @Override
+ public void newHomeworkGuidebookAdded(InstructionDto instructionDto) {
+ if (ObjectUtils.isEmpty(instructionDto.getApplicationNumber())) {
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String day = new SimpleDateFormat("dd", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "WJSK" + year + month + day, Instruction::getApplicationNumber);
+ instructionDto.setApplicationNumber(processNumber);
+ }
+ saveOrUpdate(instructionDto);
+ if (ObjectUtils.isNotEmpty(instructionDto.getFeTempHumRecordList())) {
+ instructionDto.getFeTempHumRecordList().forEach(i -> {
+ i.setInstructionId(instructionDto.getId());
+ i.setUploader(SecurityUtils.getUserId().intValue());
+ i.setUpdateTime(LocalDateTime.now());
+ });
+ operationInstructionService.saveOrUpdateBatch(instructionDto.getFeTempHumRecordList());
+ }
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/OperationInstructionServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/OperationInstructionServiceImpl.java
new file mode 100644
index 0000000..c26e7c5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/OperationInstructionServiceImpl.java
@@ -0,0 +1,27 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.OperationInstructionMapper;
+import com.ruoyi.requier.pojo.OperationInstruction;
+import com.ruoyi.requier.service.OperationInstructionService;
+import com.ruoyi.requier.vo.OperationInstructionVo;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+@Service
+public class OperationInstructionServiceImpl extends ServiceImpl<OperationInstructionMapper, OperationInstruction> implements OperationInstructionService {
+
+ @Override
+ public List<OperationInstructionVo> homeworkGuidebookEditor(Integer instructionId) {
+ return baseMapper.homeworkGuidebookEditor(instructionId);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ReservationServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ReservationServiceImpl.java
new file mode 100644
index 0000000..be0efb0
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ReservationServiceImpl.java
@@ -0,0 +1,110 @@
+package com.ruoyi.requier.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.requier.dto.DeviceDto;
+import com.ruoyi.requier.dto.ReservationDto;
+import com.ruoyi.requier.mapper.DeviceMapper;
+import com.ruoyi.requier.mapper.ReservationMapper;
+import com.ruoyi.requier.pojo.Reservation;
+import com.ruoyi.requier.service.DataConfigService;
+import com.ruoyi.requier.service.ReservationService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+@Service
+public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reservation> implements ReservationService {
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private ReservationMapper reservationMapper;
+
+ @Autowired
+ private DataConfigService dataConfigService;
+
+ @Override
+ public ArrayList<JSONObject> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull, String starttime, String endtime) {
+ ArrayList<String> dateTextList = new ArrayList<>();
+ if (StringUtils.isNoneEmpty(starttime)&&StringUtils.isNoneEmpty(endtime)){
+ LocalDate startDate = LocalDate.parse(starttime, DateTimeFormatter.ISO_LOCAL_DATE);
+ LocalDate endDate = LocalDate.parse(endtime, DateTimeFormatter.ISO_LOCAL_DATE);
+ while (!startDate.isAfter(endDate)) {
+ dateTextList.add(startDate.toString());
+ startDate = startDate.plusDays(1);
+ }
+ }
+ LambdaQueryWrapper<Reservation> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.between(Reservation::getReservationTime,starttime,endtime);
+ List<Reservation> reservations = reservationMapper.selectList(lambdaQueryWrapper);
+ HashMap dates = new HashMap<String, Integer>();
+
+ Map<Integer, List<Reservation>> deviceIdcollect = reservations.stream().collect(Collectors.groupingBy(Reservation::getDeviceId));
+ for (Integer deviceId : deviceIdcollect.keySet()) {
+ List<Reservation> deviceIdList = deviceIdcollect.get(deviceId);
+ Map<String, List<Reservation>> collect = deviceIdList.stream().collect(Collectors.groupingBy(Reservation::getReservationTime));
+ for (String date : collect.keySet()) {
+ List<Reservation> reservations1 = collect.get(date);
+ Map<String, List<Reservation>> collect1 = reservations1.stream().collect(Collectors.groupingBy(Reservation::getSpecificTime));
+ for (String s : collect1.keySet()) {
+ if (!(dates.containsKey(deviceId + date + s))) {
+ dates.put(deviceId + date + s, collect1.get(s).size());
+ }
+ }
+ }
+ }
+ Map<String, Object> map = new HashMap<>();
+ IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter), laboratoryNameIsNull);
+ List<DeviceDto> records = iPage.getRecords();
+ ArrayList<JSONObject> datas = new ArrayList<>();
+
+ String [] dateArrays={"09:00-12:00","13:00-18:00", "18:00-22:00"};
+ for (DeviceDto record : records) {
+ for (int i = 0; i < dateArrays.length; i++) {
+ String dateArray = dateArrays[i];
+ JSONObject temp = JSON.parseObject(JSON.toJSONString(record));
+ temp.put("time", dateArray);
+ JSONArray dataArray = new JSONArray();
+ for (String date : dateTextList) {
+ JSONObject dateObject = new JSONObject();
+ dateObject.put("date", date);
+ dateObject.put("value", dates.containsKey(record.getId()+date + dateArray) ? dates.get(record.getId()+date + dateArray) : 0);
+ dataArray.add(dateObject);
+ }
+ temp.put("dateList", dataArray);
+ datas.add(temp);
+ }
+ }
+ return datas;
+ }
+
+
+ @Override
+ public List<ReservationDto> selectReservationParameterPage(String deviceId, String reservationTime, String specificTime) {
+ return reservationMapper.selectReservationParameterPage(Integer.parseInt(deviceId), reservationTime, specificTime);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/vo/OperationInstructionVo.java b/cnas-require/src/main/java/com/ruoyi/requier/vo/OperationInstructionVo.java
new file mode 100644
index 0000000..ab7a6d1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/vo/OperationInstructionVo.java
@@ -0,0 +1,17 @@
+package com.ruoyi.requier.vo;
+
+import com.ruoyi.requier.pojo.OperationInstruction;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class OperationInstructionVo extends OperationInstruction {
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("鍨嬪彿")
+ private String deviceModel;
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+}
diff --git a/cnas-require/src/main/resources/mapper/DeviceFaultOneMapper.xml b/cnas-require/src/main/resources/mapper/DeviceFaultOneMapper.xml
new file mode 100644
index 0000000..d874e55
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/DeviceFaultOneMapper.xml
@@ -0,0 +1,50 @@
+<?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.ruoyi.requier.mapper.DeviceFaultOneMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.DeviceFaultOne">
+ <id column="id" property="id" />
+ <result column="device_id" property="deviceId" />
+ <result column="process_number" property="processNumber" />
+ <result column="measure_of_accuracy" property="measureOfAccuracy" />
+ <result column="fault_situation" property="faultSituation" />
+ <result column="file_name" property="fileName" />
+ <result column="system_file_name" property="systemFileName" />
+ <result column="submit_next_pesponsible" property="submitNextPesponsible" />
+ <result column="submit_operating_personnel" property="submitOperatingPersonnel" />
+ <result column="submit_date" property="submitDate" />
+ <result column="method_cost" property="methodCost" />
+ <result column="admin_audit_option" property="adminAuditOption" />
+ <result column="admin_next_pesponsible" property="adminNextPesponsible" />
+ <result column="admin_operating_personnel" property="adminOperatingPersonnel" />
+ <result column="technical_audit_option" property="technicalAuditOption" />
+ <result column="technical_next_pesponsible" property="technicalNextPesponsible" />
+ <result column="technical_operating_personnel" property="technicalOperatingPersonnel" />
+ <result column="technical_date" property="technicalDate" />
+ <result column="maintain_situation" property="maintainSituation" />
+ <result column="maintain_next_pesponsible" property="maintainNextPesponsible" />
+ <result column="maintain_operating_personnel" property="maintainOperatingPersonnel" />
+ <result column="maintain_date" property="maintainDate" />
+ <result column="check_cal_situation" property="checkCalSituation" />
+ <result column="after_maintenance_operating_personnel" property="afterMaintenanceOperatingPersonnel" />
+ <result column="after_maintenance_date" property="afterMaintenanceDate" />
+ <result column="current_status" property="currentState" />
+ <result column="submit_person" property="submitPerson" />
+ <result column="current_responsible" property="currentResponsible" />
+ <result column="create_time" property="createTime" />
+ </resultMap>
+
+ <select id="deviceFaultOnePage" resultType="com.ruoyi.requier.dto.DeviceFaultOneDto">
+ select dfo.*,
+ d.device_name,
+ d.management_number,
+ d.specification_model
+ from device_fault_one dfo
+ left join device d on d.id = dfo.device_id
+ where dfo.device_id = #{deviceId}
+ <if test="processNumber != '' and processNumber != null">
+ and dfo.process_number like concat('%', #{processNumber}, '%')
+ </if>
+ </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/InstructionMapper.xml b/cnas-require/src/main/resources/mapper/InstructionMapper.xml
new file mode 100644
index 0000000..f669677
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/InstructionMapper.xml
@@ -0,0 +1,27 @@
+<?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.ruoyi.requier.mapper.InstructionMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.Instruction">
+ <id column="id" property="id" />
+ <result column="application_number" property="applicationNumber" />
+ <result column="person_liable" property="personLiable" />
+ <result column="controlled_application_description" property="controlledApplicationDescription" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="create_user" property="createUser" />
+ <result column="update_user" property="updateUser" />
+ </resultMap>
+
+ <select id="pageByPageQueryOfHomeworkInstructions" resultType="com.ruoyi.requier.dto.OperationInstructionDto">
+ SELECT
+ doi.*,di.*,d.device_name, d.management_number device_number, d.specification_model device_model, u.name uploader_name, u1.name approver_name
+ FROM
+ device_operation_instruction doi
+ LEFT JOIN device_instruction di ON di.id = doi.instruction_id
+ left join device d on d.id = doi.device_id
+ left join user u on u.id = doi.uploader
+ left join user u1 on u1.id = doi.approver_id
+ </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/OperationInstructionMapper.xml b/cnas-require/src/main/resources/mapper/OperationInstructionMapper.xml
new file mode 100644
index 0000000..316fe0a
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/OperationInstructionMapper.xml
@@ -0,0 +1,26 @@
+<?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.ruoyi.requier.mapper.OperationInstructionMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.OperationInstruction">
+ <id column="id" property="id" />
+ <result column="device_id" property="deviceId" />
+ <result column="document_number" property="documentNumber" />
+ <result column="author" property="author" />
+ <result column="system_file_name" property="systemFileName" />
+ <result column="update_time" property="updateTime" />
+ <result column="create_time" property="createTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="create_user" property="createUser" />
+ </resultMap>
+
+ <select id="homeworkGuidebookEditor" resultType="com.ruoyi.requier.vo.OperationInstructionVo">
+ SELECT
+ doi.*,d.device_name, d.management_number device_number, d.specification_model device_model
+ FROM
+ device_operation_instruction doi
+ left join device d on d.id = doi.device_id
+ where doi.instruction_id = #{instructionId}
+ </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/ReservationMapper.xml b/cnas-require/src/main/resources/mapper/ReservationMapper.xml
new file mode 100644
index 0000000..1ccb536
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ReservationMapper.xml
@@ -0,0 +1,40 @@
+<?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.ruoyi.requier.mapper.ReservationMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.Reservation">
+ <id column="id" property="id" />
+ <result column="device_id" property="deviceId" />
+ <result column="device_name" property="deviceName" />
+ <result column="customer_name" property="customerName" />
+ <result column="reservation_time" property="reservationTime" />
+ <result column="specific_time" property="specificTime" />
+ <result column="link_person" property="linkPerson" />
+ <result column="phone" property="phone" />
+ <result column="device_number" property="deviceNumber" />
+ <result column="reservation_specification" property="reservationSpecification" />
+ <result column="create_user" property="createUser" />
+ <result column="create_date" property="createDate" />
+ </resultMap>
+
+
+ <select id="selectReservationParameterPage" resultType="com.ruoyi.requier.dto.ReservationDto">
+ SELECT
+ a.id,
+ a.create_date,
+ a.create_user,
+ a.customer_name,
+ a.device_id,
+ a.device_name,
+ a.device_number,
+ a.link_person,
+ a.phone ,
+ a.reservation_specification,
+ b.name
+ FROM
+ device_reservation a
+ INNER JOIN USER b ON a.create_user = b.id
+ where a.device_id = #{deviceId} and a.reservation_time = #{reservationTime} and a.specific_time=#{specificTime}
+ </select>
+</mapper>
--
Gitblit v1.9.3