cnas-device/src/main/java/com/ruoyi/device/controller/DeviceAcceptanceController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,133 @@ package com.ruoyi.device.controller; import com.baomidou.mybatisplus.core.metadata.IPage; 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.device.pojo.DeviceAcceptance; import com.ruoyi.device.pojo.DeviceAcceptanceFile; import com.ruoyi.device.service.DeviceAcceptanceFileService; import com.ruoyi.device.service.DeviceAcceptanceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; /** * <p> * 设å¤éªæ¶(è£ å¤) å端æ§å¶å¨ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:14 */ @Api(tags = "设å¤éªæ¶(è£ å¤)") @AllArgsConstructor @RestController @RequestMapping("/deviceAcceptance") public class DeviceAcceptanceController { private DeviceAcceptanceService deviceAcceptanceService; private DeviceAcceptanceFileService deviceAcceptanceFileService; /** * 设å¤éªæ¶å表 * @return */ @ApiOperation(value = "设å¤éªæ¶å表") @GetMapping("/pageDeviceAcceptance") public Result<IPage<DeviceAcceptance>> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance) { return Result.success(deviceAcceptanceService.pageDeviceAcceptance(page, deviceAcceptance)); } /** * æ¥è¯¢è®¾å¤éªæ¶ * @return */ @ApiOperation(value = "æ¥è¯¢è®¾å¤éªæ¶") @GetMapping("/getDeviceAcceptance") public Result getDeviceAcceptance(Integer acceptanceId){ return Result.success(deviceAcceptanceService.getById(acceptanceId)); } /** * å é¤è®¾å¤éªæ¶ * @return */ @ApiOperation(value = "å é¤è®¾å¤éªæ¶") @GetMapping("/delDeviceAcceptance") public Result delDeviceAcceptance(Integer acceptanceId){ return Result.success(deviceAcceptanceService.removeById(acceptanceId)); } /** * æ°å¢è®¾å¤éªæ¶ * @return */ @ApiOperation(value = "æ°å¢è®¾å¤éªæ¶") @PostMapping("/addDeviceAcceptance") public Result addDeviceAcceptance(@RequestBody DeviceAcceptance deviceAcceptance){ return Result.success(deviceAcceptanceService.save(deviceAcceptance)); } /** * æ°å¢è®¾å¤éªæ¶ * @return */ @ApiOperation(value = "ç¼è¾è®¾å¤éªæ¶") @PostMapping("/updateDeviceAcceptance") public Result updateDeviceAcceptance(@RequestBody DeviceAcceptance deviceAcceptance){ return Result.success(deviceAcceptanceService.updateById(deviceAcceptance)); } /** * 设å¤éªæ¶å¯¼åº * @param acceptanceId 设å¤éªæ¶id * @param response ååºä½ * @return */ @ApiOperation(value = "设å¤éªæ¶å¯¼åº") @GetMapping("/exportDeviceAcceptance") public void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response){ deviceAcceptanceService.exportDeviceAcceptance(acceptanceId, response); } /** * 设å¤éªæ¶éä»¶æ°å¢ * @param acceptanceId * @param file * @return */ @ApiOperation(value = "设å¤éªæ¶éä»¶æ°å¢") @PostMapping("/uploadDeviceAcceptanceFile") public Result<?> uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file) { return Result.success(deviceAcceptanceService.uploadDeviceAcceptanceFile(acceptanceId, file)); } /** * 设å¤éªæ¶éä»¶å表 * @return */ @ApiOperation(value = "设å¤éªæ¶éä»¶å表") @GetMapping("/getDeviceAcceptanceFileList") public Result<List<DeviceAcceptanceFile>> getVerifyMethodFileList(Integer acceptanceId){ return Result.success(deviceAcceptanceFileService.list(Wrappers.<DeviceAcceptanceFile>lambdaQuery() .eq(DeviceAcceptanceFile::getAcceptanceId, acceptanceId))); } /** * 设å¤éªæ¶éä»¶å é¤ * @return */ @ApiOperation(value = "设å¤éªæ¶éä»¶å é¤") @GetMapping("/delDeviceAcceptanceFileList") public Result delDeviceAcceptanceFileList(Integer acceptanceFileId){ return Result.success(deviceAcceptanceFileService.removeById(acceptanceFileId)); } } cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ package com.ruoyi.device.controller; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 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.numgen.NumberGenerator; import com.ruoyi.common.utils.FileSaveUtil; import com.ruoyi.device.dto.DeviceMetricRecordDto; import com.ruoyi.device.pojo.DeviceMetricRecord; import com.ruoyi.device.pojo.DeviceMetricsCopy; import com.ruoyi.device.service.DeviceMetricRecordService; import com.ruoyi.device.service.DeviceMetricsCopyService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * <p> * è®¾å¤æ ¡å - æ ¡åè®°å½ å端æ§å¶å¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2024-09-27 10:20:01 */ @Api(tags = "è®¾å¤ - è®¾å¤æ ¡å") @RestController @RequestMapping("/deviceMetricRecord") public class DeviceMetricRecordController { @Autowired private DeviceMetricRecordService deviceMetricRecordService; @Autowired private DeviceMetricsCopyService deviceMetricsCopyService; @Autowired private NumberGenerator<DeviceMetricRecord> numberGenerator; @ApiOperation("è®¾å¤æ ¡åå页æ¥è¯¢") @GetMapping("/deviceMetricRecordPage") public Result deviceMetricRecordPage(@RequestParam("deviceId") Integer deviceId, Page page, @RequestParam("type") String type) { return Result.success(deviceMetricRecordService.page(page, Wrappers.<DeviceMetricRecord>lambdaQuery() .eq(DeviceMetricRecord::getDeviceId, deviceId) .eq(DeviceMetricRecord::getType, type))); } @ApiOperation("è®¾å¤æ ¡å æ°å¢ æ´æ°") @PostMapping("/addOrUpdateDeviceMetricRecord") public Result addOrUpdateDeviceMetricRecord(@RequestBody DeviceMetricRecordDto deviceMetricRecordDto) { if (ObjectUtils.isEmpty(deviceMetricRecordDto.getProcessNumber())) { String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date()); String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date()); String processNumber = numberGenerator.generateNumberWithPrefix(5, "SBJZ" + year + month, DeviceMetricRecord::getProcessNumber); deviceMetricRecordDto.setProcessNumber(processNumber); } deviceMetricRecordService.saveOrUpdate(deviceMetricRecordDto); if (CollectionUtils.isNotEmpty(deviceMetricRecordDto.getDeviceMetricsCopyList())) { deviceMetricRecordDto.getDeviceMetricsCopyList().forEach(i -> i.setDeviceMetricsId(deviceMetricRecordDto.getId())); deviceMetricsCopyService.saveOrUpdateBatch(deviceMetricRecordDto.getDeviceMetricsCopyList()); } return Result.success(); } @ApiOperation("è®¾å¤æ ¡å å é¤") @DeleteMapping("/deleteDeviceMetricRecord") public Result deleteDeviceMetricRecord(@RequestParam("id") Integer id) { DeviceMetricRecord deviceMetricRecord = deviceMetricRecordService.getById(id); deviceMetricsCopyService.remove(Wrappers.<DeviceMetricsCopy>lambdaQuery() .eq(DeviceMetricsCopy::getDeviceMetricsId, id)); // å 餿件 FileSaveUtil.DeleteFile(deviceMetricRecord.getSystemFileName()); return Result.success(deviceMetricRecordService.removeById(id)); } @ApiOperation("è®¾å¤æ ¡å æ ¡åæ¡ç®æ¥è¯¢") @GetMapping("/showDeviceMetricsCopy") public Result showDeviceMetricsCopy(@RequestParam("id") Integer id, @RequestParam("type") String type) { return Result.success(deviceMetricsCopyService.list(Wrappers.<DeviceMetricsCopy>lambdaQuery() .eq(DeviceMetricsCopy::getDeviceMetricsId, id) .eq(DeviceMetricsCopy::getType, type))); } } cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMetricRecordDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.ruoyi.device.dto; import com.ruoyi.device.pojo.DeviceMetricRecord; import com.ruoyi.device.pojo.DeviceMetricsCopy; import lombok.Data; import java.util.List; @Data public class DeviceMetricRecordDto extends DeviceMetricRecord { private List<DeviceMetricsCopy> deviceMetricsCopyList; } cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAcceptanceFileMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.device.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.device.pojo.DeviceAcceptanceFile; /** * <p> * 设å¤éªæ¶(è£ å¤)é件表 Mapper æ¥å£ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:26 */ public interface DeviceAcceptanceFileMapper extends BaseMapper<DeviceAcceptanceFile> { } cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAcceptanceMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.device.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.device.pojo.DeviceAcceptance; import org.apache.ibatis.annotations.Param; /** * <p> * 设å¤éªæ¶(è£ å¤) Mapper æ¥å£ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:14 */ public interface DeviceAcceptanceMapper extends BaseMapper<DeviceAcceptance> { /** * 设å¤éªæ¶å表 * @param page * @param ew * @return */ IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, @Param("ew") QueryWrapper<DeviceAcceptance> ew); } cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricsCopyMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.device.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.device.pojo.DeviceMetricsCopy; /** * <p> * è®¾å¤æ ¡å - æ ¡åè®°å½ - æ ¡åæ¡ç® Mapper æ¥å£ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2024-09-27 10:20:11 */ public interface DeviceMetricsCopyMapper extends BaseMapper<DeviceMetricsCopy> { } cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceAcceptance.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,77 @@ package com.ruoyi.device.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> * 设å¤éªæ¶(è£ å¤) * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:14 */ @Getter @Setter @TableName("device_acceptance") @ApiModel(value = "DeviceAcceptance对象", description = "设å¤éªæ¶(è£ å¤)") public class DeviceAcceptance { @TableId(value = "acceptance_id", type = IdType.AUTO) private Integer acceptanceId; @ApiModelProperty("设å¤id") private Integer deviceId; @ApiModelProperty("å°è´§æ¥æ") private LocalDate arrivalDate; @ApiModelProperty("éé¢") private String goldAmount; @ApiModelProperty("ç»´ä¿®åä½") private String maintenanceunit; @ApiModelProperty("æ¶è®¾å¤ä¸»æºåå¤ä»½æ åµ") private String spareParts; @ApiModelProperty("å®è£ åè°è¯æ åµ") private String installationDebugging; @ApiModelProperty("éªæ¶æ åµ") private String checkSituation; @ApiModelProperty("æ¥æ¶ç¾å") private String receivingSignature; @ApiModelProperty("å家代表") private String producer; @ApiModelProperty("æ¥æ¶äºº") private String recipient; @ApiModelProperty("æ¥æ¶æ¶é´") private String recipientDate; @ApiModelProperty("å建人") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty("å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty("ä¿®æ¹äºº") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty("ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; } cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceAcceptanceFile.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ package com.ruoyi.device.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-20 01:45:26 */ @Getter @Setter @TableName("device_acceptance_file") @ApiModel(value = "DeviceAcceptanceFile对象", description = "设å¤éªæ¶(è£ å¤)é件表") public class DeviceAcceptanceFile implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "acceptance_file_id", type = IdType.AUTO) private Integer acceptanceFileId; @ApiModelProperty("设å¤éªæ¶id") private Integer acceptanceId; @ApiModelProperty("ç±»å:1å¾ç/2æä»¶") private Integer type; @ApiModelProperty("éä»¶è·¯å¾") private String fileUrl; @ApiModelProperty("éä»¶åç§°") private String fileName; @ApiModelProperty("å建人") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty("å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty("ä¿®æ¹äºº") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty("ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; } cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMetricsCopy.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,66 @@ package com.ruoyi.device.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; 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-09-27 10:20:11 */ @Getter @Setter @TableName("device_metrics_copy") @ApiModel(value = "DeviceMetricsCopy对象", description = "è®¾å¤æ ¡å - æ ¡åè®°å½ - æ ¡åæ¡ç®") public class DeviceMetricsCopy implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("id") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty("è®¾å¤æ ¡å - æ ¡åè®°å½id") private Integer deviceMetricsId; @ApiModelProperty("计éåæ°") private String measurementParameter; @ApiModelProperty("éç¨èå´") private String rangeOfMeasurement; @ApiModelProperty("æå¤§å 许误差") private String maxPermissibleError; @ApiModelProperty("å¤å®æ å") private String judgmentCriteria; @ApiModelProperty("å建人") private String createdBy; @ApiModelProperty("å建æ¶é´") private LocalDateTime creationTime; @ApiModelProperty("æ¯å¦æ ¡å") private String isCalibration; @ApiModelProperty("å¤å®ç»æ") private String result; @ApiModelProperty("åé¡¹ç»æè¯´æ") private String singleResultStatement; @ApiModelProperty("calibrateï¼æ ¡åï¼examineï¼æ ¸æ¥") private String type; } cnas-device/src/main/java/com/ruoyi/device/service/DeviceAcceptanceFileService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.ruoyi.device.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.pojo.DeviceAcceptanceFile; /** * <p> * 设å¤éªæ¶(è£ å¤)é件表 æå¡ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:26 */ public interface DeviceAcceptanceFileService extends IService<DeviceAcceptanceFile> { } cnas-device/src/main/java/com/ruoyi/device/service/DeviceAcceptanceService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package com.ruoyi.device.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.device.pojo.DeviceAcceptance; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; /** * <p> * 设å¤éªæ¶(è£ å¤) æå¡ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:14 */ public interface DeviceAcceptanceService extends IService<DeviceAcceptance> { /** * 设å¤éªæ¶å表 * @param page * @param deviceAcceptance * @return */ IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance); boolean uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file); /** * 设å¤éªæ¶å¯¼åº * @param acceptanceId 设å¤éªæ¶id * @param response ååºä½ * @return */ void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response); } cnas-device/src/main/java/com/ruoyi/device/service/DeviceMetricRecordService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.device.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.pojo.DeviceMetricRecord; /** * <p> * è®¾å¤æ ¡å - æ ¡åè®°å½ æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2024-09-27 10:20:01 */ public interface DeviceMetricRecordService extends IService<DeviceMetricRecord> { } cnas-device/src/main/java/com/ruoyi/device/service/DeviceMetricsCopyService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.device.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.pojo.DeviceMetricsCopy; /** * <p> * è®¾å¤æ ¡å - æ ¡åè®°å½ - æ ¡åæ¡ç® æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2024-09-27 10:20:11 */ public interface DeviceMetricsCopyService extends IService<DeviceMetricsCopy> { } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAcceptanceFileServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.device.mapper.DeviceAcceptanceFileMapper; import com.ruoyi.device.pojo.DeviceAcceptanceFile; import com.ruoyi.device.service.DeviceAcceptanceFileService; import org.springframework.stereotype.Service; /** * <p> * 设å¤éªæ¶(è£ å¤)é件表 æå¡å®ç°ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:26 */ @Service public class DeviceAcceptanceFileServiceImpl extends ServiceImpl<DeviceAcceptanceFileMapper, DeviceAcceptanceFile> implements DeviceAcceptanceFileService { } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAcceptanceServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,159 @@ package com.ruoyi.device.service.impl; 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.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.device.mapper.DeviceAcceptanceFileMapper; import com.ruoyi.device.mapper.DeviceAcceptanceMapper; import com.ruoyi.device.mapper.DeviceMapper; import com.ruoyi.device.pojo.Device; import com.ruoyi.device.pojo.DeviceAcceptance; import com.ruoyi.device.pojo.DeviceAcceptanceFile; import com.ruoyi.device.service.DeviceAcceptanceService; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; /** * <p> * 设å¤éªæ¶(è£ å¤) æå¡å®ç°ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-20 01:45:14 */ @Service public class DeviceAcceptanceServiceImpl extends ServiceImpl<DeviceAcceptanceMapper, DeviceAcceptance> implements DeviceAcceptanceService { @Resource private DeviceAcceptanceFileMapper deviceAcceptanceFileMapper; @Resource private DeviceMapper deviceMapper; @Value("${file.path}") private String imgUrl; @Value("${wordUrl}") private String wordUrl; /** * 设å¤éªæ¶å表 * @param page * @param deviceAcceptance * @return */ @Override public IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance) { return baseMapper.pageDeviceAcceptance(page, QueryWrappers.queryWrappers(deviceAcceptance)); } /** * 设å¤éªæ¶éä»¶ * @param acceptanceId * @param file * @return */ @Override public boolean uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file) { if (acceptanceId == null) { throw new ErrorException("缺å°éªæ¶id"); } String urlString; String pathName; String path; String filename = file.getOriginalFilename(); String contentType = file.getContentType(); DeviceAcceptanceFile acceptanceFile = new DeviceAcceptanceFile(); acceptanceFile.setAcceptanceId(acceptanceId); acceptanceFile.setFileName(filename); if (contentType != null && contentType.startsWith("image/")) { // æ¯å¾ç path = imgUrl; acceptanceFile.setType(1); } else { // æ¯æä»¶ path = wordUrl; acceptanceFile.setType(2); } try { File realpath = new File(path); if (!realpath.exists()) { realpath.mkdirs(); } pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename(); urlString = realpath + "/" + pathName; file.transferTo(new File(urlString)); acceptanceFile.setFileUrl(pathName); deviceAcceptanceFileMapper.insert(acceptanceFile); return true; } catch (Exception e) { e.printStackTrace(); System.err.println("éä»¶ä¸ä¼ é误"); return false; } } /** * 设å¤éªæ¶å¯¼åº * @param acceptanceId 设å¤éªæ¶id * @param response ååºä½ * @return */ @Override public void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response) { DeviceAcceptance deviceAcceptance = baseMapper.selectById(acceptanceId); if (deviceAcceptance == null) { throw new ErrorException("设å¤éªæ¶ä¸åå¨"); } Device device = null; if (deviceAcceptance.getDeviceId() != null) { device = deviceMapper.selectById(deviceAcceptance.getDeviceId()); } // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/acceptance-certificate.docx"); Configure configure = Configure.builder() .bind("deviceInspectionRecordDetailsList", new HackLoopTableRenderPolicy()) .build(); Device finalDevice = device; String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName(); XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("deviceAcceptance", deviceAcceptance); put("device", finalDevice); }}); try { response.setContentType("application/msword"); String fileName = URLEncoder.encode( deviceName+ "éªæ¶å", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx"); OutputStream os = response.getOutputStream(); template.write(os); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("导åºå¤±è´¥"); } } } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.device.mapper.DeviceMetricRecordMapper; import com.ruoyi.device.pojo.DeviceMetricRecord; import com.ruoyi.device.service.DeviceMetricRecordService; import org.springframework.stereotype.Service; /** * <p> * è®¾å¤æ ¡å - æ ¡åè®°å½ æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2024-09-27 10:20:01 */ @Service public class DeviceMetricRecordServiceImpl extends ServiceImpl<DeviceMetricRecordMapper, DeviceMetricRecord> implements DeviceMetricRecordService { } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricsCopyServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.device.mapper.DeviceMetricsCopyMapper; import com.ruoyi.device.pojo.DeviceMetricsCopy; import com.ruoyi.device.service.DeviceMetricsCopyService; import org.springframework.stereotype.Service; /** * <p> * è®¾å¤æ ¡å - æ ¡åè®°å½ - æ ¡åæ¡ç® æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2024-09-27 10:20:11 */ @Service public class DeviceMetricsCopyServiceImpl extends ServiceImpl<DeviceMetricsCopyMapper, DeviceMetricsCopy> implements DeviceMetricsCopyService { } cnas-device/src/main/resources/mapper/DeviceAcceptanceMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ <?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.device.mapper.DeviceAcceptanceMapper"> <!-- 设å¤éªæ¶å表 --> <select id="pageDeviceAcceptance" resultType="com.ruoyi.device.pojo.DeviceAcceptance"> select * from ( select * from device_acceptance order by create_time desc ) a <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> </select> </mapper> ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,179 @@ package com.ruoyi.common.utils; import com.alibaba.excel.util.IoUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.FileSystemUtils; import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.PostConstruct; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Random; /** * ä¿åæä»¶å·¥å · */ @Slf4j @Component public class FileSaveUtil { // åymlä¸çè·¯å¾ + / private static String FILE_PATH; private static String WORD_URL_PATH; private static String[] ALLOWED; @Value("${file.path}") private String file; @Value("${wordUrl}") private String wordUrl; @Value("${file.allowed}") private String[] allowed; @PostConstruct public void getFile() { FILE_PATH = this.file; } @PostConstruct public void getWordUrl(){ WORD_URL_PATH = this.wordUrl; } @PostConstruct public void getAllowed(){ ALLOWED = this.allowed; } /** * å卿件䏻彿° * @param file æä»¶äºè¿å¶æµ * @return è¿åæä»¶åç§°ç¨äºå卿°æ®åº */ public static String StoreFile(MultipartFile file) { String originalFilename = file.getOriginalFilename(); // çæéæºåç§°ï¼æ¶é´_éæº6使°å String FileName = System.currentTimeMillis() + "_" + getNumber(6); String suffix = null; if (originalFilename != null) { suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 妿åç¼åä¸éè¿æåºå¼å¸¸ if (!isFileAllowed(suffix)){ throw new RuntimeException(suffix); } } // åç§°æ¼æ¥ String fileName = FileName + suffix; // è¿è¡åå¨ try { storeFileWithFileName(file.getBytes(), fileName); } catch (IOException e) { throw new RuntimeException(e); } return fileName; } public static Boolean DeleteFile(String fileName) { if (ObjectUtils.isEmpty(fileName)) { return false; } return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName)); } /** * å卿件彿° * @param content æä»¶äºè¿å¶æµ * @param fileName æä»¶åç§° */ private static void storeFileWithFileName(byte[] content, String fileName) { // åå¨è·¯å¾ String path = FILE_PATH + File.separatorChar; // ç®å½ä¸åå¨åå建 File file = new File(path); if (!file.exists()) { file.mkdirs(); } // å¼å§åå¨ try (FileOutputStream os = new FileOutputStream(path + fileName); ByteArrayInputStream is = new ByteArrayInputStream(content)) { IoUtils.copy(is, os); } catch (IOException e) { throw new RuntimeException("æä»¶å卿 ¼å¼å¼å¸¸"); } } /** * 夿æä»¶æ¯å¦è¢«å 许ä¸ä¼ * * @param fileName æä»¶å * @return å 许true, å¦åfalse */ private static boolean isFileAllowed(String fileName) { // è·ååç¼å String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); for (String allow : ALLOWED) { if (allow.equals(suffixName)) { return true; } } return false; } /** * ä¿åæä»¶å°wordæä»¶å¤¹é * @param file * @return */ public static String uploadWordFile(MultipartFile file) { String urlString; String pathName; String path; try { String contentType = file.getContentType(); if (contentType != null && contentType.startsWith("image/")) { // æ¯å¾ç path = FILE_PATH; } else { // æ¯æä»¶ path = WORD_URL_PATH; } File realpath = new File(path); if (!realpath.exists()) { realpath.mkdirs(); } pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "-" + file.getOriginalFilename(); urlString = realpath + "/" + pathName; file.transferTo(new File(urlString)); return pathName; } catch (Exception e) { e.printStackTrace(); return null; } } /** * è·åéæºæ°å * @param n 使° * @return è¿åéæºå¼ */ public static String getNumber(int n) { char[] chars = "1234567890".toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < n; i++) { char c = chars[new Random().nextInt(chars.length)]; sb.append(c); } return sb.toString(); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/MyUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.ruoyi.common.utils; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; @Component public class MyUtil<T> { }