diff --git a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerification.java b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerification.java index ede60f8..a274aa6 100644 --- a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerification.java +++ b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerification.java @@ -16,6 +16,7 @@ */ package org.springblade.file.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import org.springblade.core.mp.base.BaseEntity; @@ -51,11 +52,33 @@ public class EquipVerification extends BaseEntity { * 设备id */ private String instrumentId; + /** + * 设备id + */ + private String code; /** * 设备名称 */ @ApiModelProperty(value = "设备名称") private String equipName; + /** + * 设备情况 + */ + @TableField(exist = false) + private String equipStatus; + /** + * 检定情况 + */ + @TableField(exist = false) + private String verificationInfo; + /** + * 检定时间(仅给记录表用) + */ + @ApiModelProperty(value = "检定时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private LocalDateTime verificationTime; /** * 规格型号 */ @@ -95,4 +118,11 @@ public class EquipVerification extends BaseEntity { // private Integer status; @ApiModelProperty(value = "检定提前提示的天数") private Integer warnBefore; + + /** + * 检定人 + */ + @ApiModelProperty(value = "检定人") + @TableField(exist = false) + private long verificationUser; } diff --git a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerificationLog.java b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerificationLog.java index c3bce29..6ae227b 100644 --- a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerificationLog.java +++ b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerificationLog.java @@ -78,7 +78,7 @@ public class EquipVerificationLog extends BaseEntity { @ApiModelProperty(value = "检定时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime verification_time; + private LocalDateTime verificationTime; /** * 检定周期(天) */ @@ -93,8 +93,20 @@ public class EquipVerificationLog extends BaseEntity { @ApiModelProperty(value = "检定轮数") private Integer cicleNum; - //设备情况 + /** + * 设备id + */ + private String code; + /** + * 设备情况 + */ private String equipStatus; - //检定情况 - private String verification_info; + /** + * 检定情况 + */ + private String verificationInfo; + /** + * 检定人姓名 + */ + private String verificationUserName; } diff --git a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityFileAssistent.java b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityFileAssistent.java new file mode 100644 index 0000000..2dbbdb9 --- /dev/null +++ b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityFileAssistent.java @@ -0,0 +1,33 @@ +package org.springblade.file.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serializable; + +/** + * 质量文件实体类副表 + * @Description + * @Author ytl + * @Date 2022/9/22 0022 17:51 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("t_quality_file_assistant") +@ApiModel(value = "QualityFile对象的子类", description = "质量文件子类") +public class QualityFileAssistent extends BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + private Long qualityFileId; + + private String version; + + private String versionContent; + + private String name; + + private Integer status; +} diff --git a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityStorageFileRel.java b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityStorageFileRel.java index 0e94dd3..4ae492e 100644 --- a/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityStorageFileRel.java +++ b/lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityStorageFileRel.java @@ -59,6 +59,10 @@ public class QualityStorageFileRel extends BaseEntity implements Serializable { @ApiModelProperty(value = "文件id") @NotNull private Long storageFileId; + + @ApiModelProperty(value = "文件附表id") + @NotNull + private Long qualityFileAssistantId; /** * 排序号 */ diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResult.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResult.java index dc1dab3..80db963 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResult.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResult.java @@ -159,4 +159,7 @@ public class ExamineResult extends BaseEntity implements Serializable { // 结果判定方法和依据 private String examineBasisContent; + + // 如果是口蹄疫,1单板,2多版,3非兰所 + private String lansuo; } \ No newline at end of file diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/CommandController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/CommandController.java new file mode 100644 index 0000000..59432a0 --- /dev/null +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/CommandController.java @@ -0,0 +1,62 @@ +package org.springblade.lims.capital.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.apache.poi.ss.formula.functions.T; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.SpringUtil; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.lims.commands.Command; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Description 扫描枪扫描执行命令相关 + * @Author ytl + * @Date 2022/9/23 0023 14:29 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/command") +@Api(value = "扫描枪扫描执行命令相关", tags = "扫描枪扫描执行命令相关") +public class CommandController extends BladeController { + + + @GetMapping("/execute") + @ApiOperation(value = "执行命令", notes = "传入扫描枪扫描的命令字符串,里面必然携带要执行的命令的名称") + public R execute(String commandStr){ + boolean result = false; + //解析commandStr + Map params = this.commandAnalysis(commandStr); + + Object bean = SpringUtil.getBean("command_" + String.valueOf(params.get("name"))); + if(bean instanceof Command){ + result = executeCommand((Command) bean, params); + } + + if(result){ + return R.success("命令执行成功"); + }else{ + return R.fail("命令执行失败,没有找到相关命令"); + } + } + + private boolean executeCommand(Command c, Map s){ + return c.execute(s); + } + + private Map commandAnalysis(String s){ + Map map = new ConcurrentHashMap<>(); + + //通过某种格式解析指令 + + map.put("name","test"); + return map; + } +} diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/commands/Command.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/commands/Command.java new file mode 100644 index 0000000..d06a7ee --- /dev/null +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/commands/Command.java @@ -0,0 +1,22 @@ +package org.springblade.lims.commands; + +import java.util.Map; + +/** + * @Description 命令的抽象类 + * @Author ytl + * @Date 2022/9/23 0023 14:16 + */ +public abstract class Command { + /** + * 命令的名称 + */ + String name; + + /** + * 命令的执行 + * @param params 命令的参数 + * @return true命令执行成功,false命令执行失败 + */ + public abstract boolean execute(Map params); +} diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/commands/commandutils/CommandTest.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/commands/commandutils/CommandTest.java new file mode 100644 index 0000000..08fa46d --- /dev/null +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/commands/commandutils/CommandTest.java @@ -0,0 +1,27 @@ +package org.springblade.lims.commands.commandutils; + +import org.springblade.lims.commands.Command; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @Description 测试命令 + * @Author ytl + * @Date 2022/9/23 0023 14:24 + */ +@Component("command_test") +public class CommandTest extends Command { + + private String name; + + public CommandTest(){ + this.name = "CommandTest"; + } + + + @Override + public boolean execute(Map params){ + return true; + } +} diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml index 1f7ed10..0851427 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml @@ -4,7 +4,7 @@ \ No newline at end of file diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationController.java b/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationController.java index 721d5cb..bec9bef 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationController.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationController.java @@ -105,7 +105,7 @@ public class EquipVerificationController extends BladeController { */ @PostMapping("/verification") @ApiOperation(value="保存检定记录") - public R verification(@RequestBody EquipVerificationVO e){ + public R verification(@RequestBody EquipVerification e){ equipVerificationLogService.insertLog(e); return R.success("检定成功"); } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationLogController.java b/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationLogController.java index 9e814ba..5adf1f4 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationLogController.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationLogController.java @@ -50,7 +50,7 @@ public class EquipVerificationLogController extends BladeController { .like(EquipVerificationLog::getEquipModel,equipVerificationLog.getEquipName()).or() .like(EquipVerificationLog::getManufacturerOrBrand,equipVerificationLog.getEquipName()); } - wrapper.orderByDesc(EquipVerificationLog::getCreateTime); + wrapper.orderByDesc(EquipVerificationLog::getVerificationTime); return R.data(equipVerificationLogService.page(Condition.getPage(query), wrapper)); } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileAssistentController.java b/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileAssistentController.java new file mode 100644 index 0000000..8d70958 --- /dev/null +++ b/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileAssistentController.java @@ -0,0 +1,39 @@ +package org.springblade.file.controller; + +import io.swagger.annotations.Api; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.tool.api.R; +import org.springblade.file.entity.QualityFileAssistent; +import org.springblade.file.mapper.QualityStorageFileRelMapper; +import org.springblade.file.service.IQualityFileAssistentService; +import org.springblade.file.service.impl.QualityFileAssistentServiceImpl; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 质量文件版本管理 + * @Description + * @Author ytl + * @Date 2022/9/23 0023 16:28 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/qualityfileassistent") +@Api(value = "质量文件版本") +public class QualityFileAssistentController extends BladeController { + + private final IQualityFileAssistentService qualityFileAssistentService; + + @PutMapping("/update") + public R update(QualityFileAssistent file){ + return R.data(qualityFileAssistentService.addOrUpdate(file)) ; + } + + @DeleteMapping("/delete") + public R delete(QualityFileAssistent file){ + return R.data(qualityFileAssistentService.removeById(file)); + } +} diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileController.java b/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileController.java index 6262aed..8504cc4 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileController.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileController.java @@ -16,6 +16,9 @@ */ package org.springblade.file.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -29,6 +32,8 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.file.dto.QualityFileDTO; +import org.springblade.file.entity.QualityFileAssistent; +import org.springblade.file.service.IQualityFileAssistentService; import org.springblade.file.wrapper.QualityFileWrapper; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -37,6 +42,8 @@ import org.springblade.file.vo.QualityFileVO; import org.springblade.file.service.IQualityFileService; import org.springblade.core.boot.ctrl.BladeController; +import java.util.List; + /** * 质量文件 控制器 * @@ -50,6 +57,9 @@ import org.springblade.core.boot.ctrl.BladeController; public class QualityFileController extends BladeController { private final IQualityFileService qualityFileService; + + private final IQualityFileAssistentService qualityFileAssistentService; + /** * 详情 */ @@ -103,7 +113,7 @@ public class QualityFileController extends BladeController { @ApiOperation(value = "修改", notes = "传入qualityFile") public R update(@Valid @RequestBody QualityFile qualityFile) { - return R.status(qualityFileService.updateById(qualityFile)); + return R.status(qualityFileService.updateFile(qualityFile)); } /** @@ -124,8 +134,19 @@ public class QualityFileController extends BladeController { @ApiOperationSupport(order = 8) @ApiOperation(value = "删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { - return R.status(qualityFileService.removeByIds(Func.toLongList(ids))); + //return R.status(qualityFileService.removeByIds(Func.toLongList(ids))); + + return R.status(qualityFileService.removeFiles(ids)); } + @GetMapping("/assistentList") + @ApiOperation(value = "根据主文件id查询版本信息") + public R> assistentList(Long id){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(QualityFileAssistent::getQualityFileId, id).orderByAsc(QualityFileAssistent::getVersion); + List list = qualityFileAssistentService.list(wrapper); + + return R.data(list); + } } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/controller/StorageFileController.java b/lab-service/lab-file/src/main/java/org/springblade/file/controller/StorageFileController.java index a6e52fa..cb8aa10 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/controller/StorageFileController.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/controller/StorageFileController.java @@ -16,6 +16,8 @@ */ package org.springblade.file.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; @@ -29,7 +31,13 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.IoUtil; +import org.springblade.file.entity.QualityFile; +import org.springblade.file.entity.QualityFileAssistent; +import org.springblade.file.entity.QualityStorageFileRel; import org.springblade.file.entity.StorageFile; +import org.springblade.file.service.IQualityFileAssistentService; +import org.springblade.file.service.IQualityFileService; +import org.springblade.file.service.IQualityStorageFileRelService; import org.springblade.file.service.IStorageFileService; import org.springblade.file.util.ResponseUtil; import org.springblade.file.vo.StorageFileVO; @@ -61,6 +69,12 @@ public class StorageFileController extends BladeController { private final IStorageFileService storageFileService; + private final IQualityFileService qualityFileService; + + private final IQualityFileAssistentService qualityFileAssistentService; + + private final IQualityStorageFileRelService qualityStorageFileRelService; + /** * 详情 */ @@ -145,13 +159,13 @@ public class StorageFileController extends BladeController { @ApiOperation(value = "上传文件", notes = "上传文件") public R upload(@ApiParam(value = "上传的文件", required = true) @Valid @NotNull - @RequestParam("file") MultipartFile file) { + @RequestParam("file") MultipartFile file,Long assistentFileId) { if (file.isEmpty()) { return R.fail("文件不能为空"); } String originalFilename = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); - StorageFile storageFile = storageFileService.storageFileAndSave(originalFilename, inputStream); + StorageFile storageFile = storageFileService.storageFileAndSave(originalFilename, inputStream, assistentFileId); return R.data(storageFile); } @@ -162,6 +176,7 @@ public class StorageFileController extends BladeController { /** * 下载文件 + * id:t_quality_file表的id */ @SneakyThrows @GetMapping("/download/{id}") @@ -170,7 +185,23 @@ public class StorageFileController extends BladeController { public void download(@ApiParam(value = "下载的文件id", required = true) @Valid @NotNull @PathVariable("id") Long id) { - InputStream inputStream = storageFileService.getInputStreamById(id); + //获取文件主体 + LambdaQueryWrapper fileQueryWrapper = new LambdaQueryWrapper<>(); + fileQueryWrapper.eq(QualityFile::getId, id); + QualityFile file = qualityFileService.getOne(fileQueryWrapper); + + //根据主体中激活的版本查找子文件 + LambdaQueryWrapper fileAssQueryWrapper = new LambdaQueryWrapper<>(); + fileAssQueryWrapper.eq(QualityFileAssistent::getQualityFileId ,id ).eq(QualityFileAssistent::getVersion, file.getVersion()); + QualityFileAssistent assisFile = qualityFileAssistentService.getOne(fileAssQueryWrapper); + + //根据子文件id查找文件真正的保存的文件id + LambdaQueryWrapper qualityStorageFileRelLambdaQueryWrapper = new LambdaQueryWrapper<>(); + qualityStorageFileRelLambdaQueryWrapper.eq(QualityStorageFileRel::getQualityFileId, assisFile.getId()); + QualityStorageFileRel storageFileRel = qualityStorageFileRelService.getOne(qualityStorageFileRelLambdaQueryWrapper); + + //查询 + InputStream inputStream = storageFileService.getInputStreamById(storageFileRel.getStorageFileId()); ResponseUtil.download(response, null, inputStream, "application/pdf"); } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/mapper/QualityFileAssistentMapper.java b/lab-service/lab-file/src/main/java/org/springblade/file/mapper/QualityFileAssistentMapper.java new file mode 100644 index 0000000..4a6dc7c --- /dev/null +++ b/lab-service/lab-file/src/main/java/org/springblade/file/mapper/QualityFileAssistentMapper.java @@ -0,0 +1,12 @@ +package org.springblade.file.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.file.entity.QualityFileAssistent; + +/** + * @Description + * @Author ytl + * @Date 2022/9/22 0022 18:12 + */ +public interface QualityFileAssistentMapper extends BaseMapper { +} diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileAssistentService.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileAssistentService.java new file mode 100644 index 0000000..b9b0300 --- /dev/null +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileAssistentService.java @@ -0,0 +1,12 @@ +package org.springblade.file.service; + +import org.springblade.file.entity.QualityFileAssistent; +import org.springblade.core.mp.base.BaseService; +/** + * @Description + * @Author ytl + * @Date 2022/9/22 0022 18:14 + */ +public interface IQualityFileAssistentService extends BaseService { + boolean addOrUpdate(QualityFileAssistent file); +} diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileService.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileService.java index b52a62e..5378274 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileService.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileService.java @@ -42,4 +42,8 @@ public interface IQualityFileService extends BaseService { void addRelInfo(QualityFileVO qualityFileVO); boolean saveOrUpdateDTO(QualityFileDTO dto); + + boolean updateFile(QualityFile file); + + boolean removeFiles(String ids); } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/IStorageFileService.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/IStorageFileService.java index 78e2b89..71cbb42 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/IStorageFileService.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/IStorageFileService.java @@ -45,7 +45,7 @@ public interface IStorageFileService extends BaseService { InputStream getInputStreamById(Long id); - StorageFile storageFileAndSave(String originalFilename, InputStream inputStream) throws IOException; + StorageFile storageFileAndSave(String originalFilename, InputStream inputStream, Long id) throws IOException; int countPageCount(Collection ids); } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java index a088f3e..131459a 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java @@ -17,18 +17,11 @@ package org.springblade.file.service.impl; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.utils.AuthUtil; -import org.springblade.core.tool.api.R; -import org.springblade.core.tool.utils.StringUtil; import org.springblade.file.entity.EquipVerification; import org.springblade.file.entity.EquipVerificationLog; -import org.springblade.file.enums.EquipVerificationEnum; import org.springblade.file.mapper.EquipVerificationLogMapper; import org.springblade.file.mapper.EquipVerificationMapper; import org.springblade.file.service.IEquipVerificationLogService; -import org.springblade.file.service.IEquipVerificationService; -import org.springblade.file.vo.EquipVerificationVO; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; import org.springframework.beans.factory.annotation.Autowired; @@ -38,8 +31,6 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; -import java.util.List; -import java.util.Optional; /** * 仪器检定管理 服务实现类 @@ -79,6 +70,7 @@ public class EquipVerificationLogServiceImpl extends BaseServiceImpl implements IQualityFileAssistentService { + @Override + public boolean addOrUpdate(QualityFileAssistent file) { + + if (file.getId() != null) { + this.updateById(file); + }else{ + this.save(file); + } + return true; + } +} diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileServiceImpl.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileServiceImpl.java index 30e884c..0dce65c 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileServiceImpl.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileServiceImpl.java @@ -16,20 +16,19 @@ */ package org.springblade.file.service.impl; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.file.dto.QualityFileDTO; import org.springblade.file.dto.QualityStorageFileRelDTO; import org.springblade.file.entity.QualityFile; +import org.springblade.file.entity.QualityFileAssistent; import org.springblade.file.entity.QualityFileDeptRel; import org.springblade.file.entity.QualityStorageFileRel; -import org.springblade.file.service.IQualityFileDeptRelService; -import org.springblade.file.service.IQualityStorageFileRelService; -import org.springblade.file.service.IStorageFileService; +import org.springblade.file.service.*; import org.springblade.file.vo.QualityFileVO; import org.springblade.file.mapper.QualityFileMapper; -import org.springblade.file.service.IQualityFileService; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.system.feign.ISysClient; import org.springframework.context.annotation.Lazy; @@ -37,8 +36,6 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.transaction.annotation.Transactional; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -61,16 +58,19 @@ public class QualityFileServiceImpl extends BaseServiceImpl deptIds = qualityFile.getDeptIds(); qualityFileDeptRelService.saveBatch(deptIds.stream().map(deptId -> QualityFileDeptRel.builder().qualityFileId(qualityFileId).deptId(deptId).build()).collect(Collectors.toList())); Set fileRels = qualityFile.getFiles(); + //根据主表ID删除文件与存储关联的相关记录 qualityStorageFileRelService.removeByQualityFileId(qualityFileId); fileRels.forEach(dto -> dto.setQualityFileId(qualityFileId)); int pageCount = storageFileService.countPageCount(fileRels.stream().map(QualityStorageFileRel::getStorageFileId).collect(Collectors.toSet())); + //重新保存文件与存储关联关系 qualityStorageFileRelService.saveBatch(new ArrayList<>(fileRels)); qualityFile.setPageCount(pageCount); @@ -129,4 +133,44 @@ public class QualityFileServiceImpl extends BaseServiceImpl ass = new LambdaUpdateWrapper<>(); + ass.eq(QualityFileAssistent::getQualityFileId, qualityFile.getId()).set(QualityFileAssistent::getStatus ,0); + + //更新子表信息 + //先将所有符合条件的状态赋值为0,未激活 + qualityFileAssistentService.update(ass); + + //然后将当前激活版本的状态赋值1 + ass.eq(QualityFileAssistent::getVersion, qualityFile.getVersion()).set(QualityFileAssistent::getStatus ,1); + qualityFileAssistentService.update(ass); + + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean removeFiles(String ids) { + List longs = Func.toLongList(ids); + for(Long l : longs){ + //逻辑删除主表 + LambdaUpdateWrapper qualityWrapper = new LambdaUpdateWrapper<>(); + qualityWrapper.eq(QualityFile::getId , l).set(QualityFile::getIsDeleted , 1); + qualityFileService.update(qualityWrapper); + + //逻辑删除从表 + LambdaUpdateWrapper assWrapper = new LambdaUpdateWrapper<>(); + assWrapper.eq(QualityFileAssistent::getQualityFileId , l).set(QualityFileAssistent::getIsDeleted , 1); + qualityFileAssistentService.update(assWrapper); + } + + return true; + } + } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/StorageFileServiceImpl.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/StorageFileServiceImpl.java index 02501f3..b88c73c 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/StorageFileServiceImpl.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/StorageFileServiceImpl.java @@ -16,11 +16,15 @@ */ package org.springblade.file.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.SneakyThrows; import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.mp.support.Condition; import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.IoUtil; +import org.springblade.file.entity.QualityStorageFileRel; import org.springblade.file.entity.StorageFile; +import org.springblade.file.mapper.QualityStorageFileRelMapper; import org.springblade.file.util.PdfUtil; import org.springblade.file.vo.StorageFileVO; import org.springblade.file.mapper.StorageFileMapper; @@ -30,6 +34,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.transaction.annotation.Transactional; import java.io.*; import java.nio.file.Paths; @@ -49,6 +54,8 @@ public class StorageFileServiceImpl extends BaseServiceImpl selectStorageFilePage(IPage page, StorageFileVO storageFile) { @@ -65,6 +72,7 @@ public class StorageFileServiceImpl extends BaseServiceImpl result = new HashMap<>(); + + ImageEntity farView = new ImageEntity(); + farView.setHeight(50);//设置高度 + farView.setWidth(90);//设置宽度 + farView.setType(ImageEntity.Data);//类型 + + FileInputStream fis = null; + try { +// fis = new FileInputStream(new File(s1)); +// byte[] bytes = readInputStream(fis); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ImageIO.write(img, "png",bos ); + byte[] bytes = bos.toByteArray(); + farView.setData(bytes); + //farView.setData(bytes); + } catch (Exception e) { + e.printStackTrace(); + } + result.put("img", farView); + //ImageIO.write(img, "png", outFile); + // Desktop.getDesktop().open(outFile); } - + /** + * 读输入流 + */ + private static byte[] readInputStream(InputStream inStream) throws Exception { + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len = 0; + while ((len = inStream.read(buffer)) != -1) { + outStream.write(buffer, 0, len); + } + inStream.close(); + return outStream.toByteArray(); + } /** * 24.获取委托单 */ diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java index 3f670cb..10c4e42 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java @@ -1324,9 +1324,11 @@ public class EntrustServiceImpl extends BaseServiceImpl PCR2Excel pcr2Excel1 = new PCR2Excel(); PCR2Excel pcr2Excel2 = new PCR2Excel(); pcr2Excel1.setExperieNum("阴性数量"); - pcr2Excel1.setCtValue(String.valueOf(yin)); + // 减1是因为,不能把阴性对照的阴性结果当做样品计算 + pcr2Excel1.setCtValue(String.valueOf(yin - 1)); pcr2Excel2.setExperieNum("阳性数量"); - pcr2Excel2.setCtValue(String.valueOf(yang)); + // 减1是因为,不能把阳性对照的阳性结果当做样品计算 + pcr2Excel2.setCtValue(String.valueOf(yang - 1)); list.add(pcr2Excel1); list.add(pcr2Excel2);