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