chenrui
2025-03-11 bbccd7a81e92267f7ec98beb2adb3a6646fe4b4b
lims检测中心设备联调
已修改2个文件
已添加30个文件
1345 ■■■■■ 文件已修改
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/controller/DeviceFaultController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/controller/InstructionController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/controller/ReservationController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/dto/DeviceFaultOneDto.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/dto/InstructionDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/dto/OperationInstructionDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/dto/ReservationDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/mapper/DeviceFaultOneMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/mapper/InstructionMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/mapper/OperationInstructionMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/mapper/ReservationMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFault.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/pojo/DeviceFaultOne.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/pojo/Instruction.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/pojo/OperationInstruction.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/pojo/Reservation.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/DeviceFaultService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/InstructionService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/OperationInstructionService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/ReservationService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/impl/InstructionServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/impl/OperationInstructionServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/impl/ReservationServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/vo/OperationInstructionVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/DeviceFaultOneMapper.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/InstructionMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/OperationInstructionMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/ReservationMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
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);
}
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));
    }
}
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));
        // é‚£ä¹ˆå°±åˆ é™¤çˆ¶è¡¨æ•°æ®
        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();
    }
}
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();
    }
}
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;
}
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;
}
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("责任人")
    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;
}
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;
}
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> {
}
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);
}
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);
}
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);
}
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);
}
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;
}
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下环节负责人")
    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设备管理员-下环节负责人")
    private String adminNextPesponsible;
    @ApiModelProperty("2管理员-操作人")
    private String adminOperatingPersonnel;
    @ApiModelProperty("2管理员-日期")
    private LocalDateTime adminDate;
    @ApiModelProperty("3 æŠ€æœ¯è´Ÿè´£äºº å®¡æ ¸æ„è§")
    private String technicalAuditOption;
    @ApiModelProperty("3技术负责人 ä¸‹çŽ¯èŠ‚è´Ÿè´£äºº")
    private String technicalNextPesponsible;
    @ApiModelProperty("3 æŠ€æœ¯è´Ÿè´£äºº æ“ä½œäºº")
    private String technicalOperatingPersonnel;
    @ApiModelProperty("3 æŠ€æœ¯è´Ÿè´£äºº æ—¥æœŸ")
    private LocalDateTime technicalDate;
    @ApiModelProperty("4维修情况")
    private String maintainSituation;
    @ApiModelProperty("4 ç»´ä¿® ä¸‹çŽ¯èŠ‚è´Ÿè´£äºº")
    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("当前责任人")
    private String currentResponsible;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("故障日期")
    private LocalDate faultDate;
    @ApiModelProperty("要求修复日期")
    private LocalDate requestRepairDate;
}
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("责任人")
    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;
}
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("作业指导书id")
    private Integer instructionId;
    @ApiModelProperty("上传人id")
    private Integer uploader;
    @ApiModelProperty("审批人id")
    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("更新人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
}
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;
}
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);
}
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);
}
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);
}
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);
}
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;
    }
}
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());
        }
    }
}
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);
    }
}
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);
    }
}
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;
}
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>
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>
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>
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>