Merge remote-tracking branch 'origin/dev' into dev

pull/1/head
litao 4 years ago
commit ff18f8baef
  1. 30
      lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerification.java
  2. 20
      lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/EquipVerificationLog.java
  3. 33
      lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityFileAssistent.java
  4. 4
      lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityStorageFileRel.java
  5. 3
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResult.java
  6. 62
      lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/CommandController.java
  7. 22
      lab-service/lab-capital/src/main/java/org/springblade/lims/commands/Command.java
  8. 27
      lab-service/lab-capital/src/main/java/org/springblade/lims/commands/commandutils/CommandTest.java
  9. 4
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml
  10. 2
      lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationController.java
  11. 2
      lab-service/lab-file/src/main/java/org/springblade/file/controller/EquipVerificationLogController.java
  12. 39
      lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileAssistentController.java
  13. 25
      lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileController.java
  14. 37
      lab-service/lab-file/src/main/java/org/springblade/file/controller/StorageFileController.java
  15. 12
      lab-service/lab-file/src/main/java/org/springblade/file/mapper/QualityFileAssistentMapper.java
  16. 12
      lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileAssistentService.java
  17. 4
      lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileService.java
  18. 2
      lab-service/lab-file/src/main/java/org/springblade/file/service/IStorageFileService.java
  19. 12
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java
  20. 26
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileAssistentServiceImpl.java
  21. 62
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileServiceImpl.java
  22. 18
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/StorageFileServiceImpl.java
  23. 50
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java
  24. 6
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.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;
}

@ -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;
}

@ -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;
}

@ -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;
/**
* 排序号
*/

@ -159,4 +159,7 @@ public class ExamineResult extends BaseEntity implements Serializable {
// 结果判定方法和依据
private String examineBasisContent;
// 如果是口蹄疫,1单板,2多版,3非兰所
private String lansuo;
}

@ -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<String,Object> 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<String,Object> s){
return c.execute(s);
}
private Map<String,Object> commandAnalysis(String s){
Map<String,Object> map = new ConcurrentHashMap<>();
//通过某种格式解析指令
map.put("name","test");
return map;
}
}

@ -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<String,Object> params);
}

@ -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<String,Object> params){
return true;
}
}

@ -4,7 +4,7 @@
<select id="listByPnum" parameterType="org.springblade.lims.goods.entity.Goods" resultType="org.springblade.lims.goods.entity.Goods">
SELECT
A.id,A.big_class_id AS bigClassId,A.big_class AS bigClass,A.name,
B.id,A.big_class_id AS bigClassId,A.big_class AS bigClass,A.name,
A.code,A.xh,A.rule,B.num,A.brand,A.company,A.company_id AS companyId,
A.type,A.unit,A.location,A.ccfs,A.yt,A.danger,A.warn_num AS warnNum,
A.warn_time AS warnTime,A.deactivate,A.beyond_time AS beyondTime,
@ -38,6 +38,6 @@
</if>
</where>
ORDER BY
A.create_time desc,B.num asc
A.name,B.p_num asc
</select>
</mapper>

@ -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("检定成功");
}

@ -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));
}

@ -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));
}
}

@ -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<List<QualityFileAssistent>> assistentList(Long id){
LambdaQueryWrapper<QualityFileAssistent> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(QualityFileAssistent::getQualityFileId, id).orderByAsc(QualityFileAssistent::getVersion);
List<QualityFileAssistent> list = qualityFileAssistentService.list(wrapper);
return R.data(list);
}
}

@ -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<QualityFile> fileQueryWrapper = new LambdaQueryWrapper<>();
fileQueryWrapper.eq(QualityFile::getId, id);
QualityFile file = qualityFileService.getOne(fileQueryWrapper);
//根据主体中激活的版本查找子文件
LambdaQueryWrapper<QualityFileAssistent> fileAssQueryWrapper = new LambdaQueryWrapper<>();
fileAssQueryWrapper.eq(QualityFileAssistent::getQualityFileId ,id ).eq(QualityFileAssistent::getVersion, file.getVersion());
QualityFileAssistent assisFile = qualityFileAssistentService.getOne(fileAssQueryWrapper);
//根据子文件id查找文件真正的保存的文件id
LambdaQueryWrapper<QualityStorageFileRel> 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");
}

@ -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<QualityFileAssistent> {
}

@ -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<QualityFileAssistent> {
boolean addOrUpdate(QualityFileAssistent file);
}

@ -42,4 +42,8 @@ public interface IQualityFileService extends BaseService<QualityFile> {
void addRelInfo(QualityFileVO qualityFileVO);
boolean saveOrUpdateDTO(QualityFileDTO dto);
boolean updateFile(QualityFile file);
boolean removeFiles(String ids);
}

@ -45,7 +45,7 @@ public interface IStorageFileService extends BaseService<StorageFile> {
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<Long> ids);
}

@ -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<EquipVerifi
log.setVerificationUser(e.getVerificationUser());
User userR = userClient.userInfoById(e.getVerificationUser()).getData();
log.setVerificationUserName(userR.getName());
log.setManufacturerOrBrand(e.getManufacturerOrBrand());
//当前日期
LocalDate localDate = LocalDate.now();
@ -100,7 +92,7 @@ public class EquipVerificationLogServiceImpl extends BaseServiceImpl<EquipVerifi
}else{
verificationDay = enableDate.plusDays(((between / e.getCycle())) * e.getCycle());
}
e.setStatus(1);
e.setLastVerificationTime(verificationDay.atTime(0, 0,0));
equipVerificationMapper.updateById(e);
}

@ -0,0 +1,26 @@
package org.springblade.file.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.file.entity.QualityFileAssistent;
import org.springblade.file.mapper.QualityFileAssistentMapper;
import org.springblade.file.service.IQualityFileAssistentService;
import org.springframework.stereotype.Service;
/**
* @Description
* @Author ytl
* @Date 2022/9/22 0022 18:16
*/
@Service
public class QualityFileAssistentServiceImpl extends BaseServiceImpl<QualityFileAssistentMapper, QualityFileAssistent> implements IQualityFileAssistentService {
@Override
public boolean addOrUpdate(QualityFileAssistent file) {
if (file.getId() != null) {
this.updateById(file);
}else{
this.save(file);
}
return true;
}
}

@ -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<QualityFileMapper, Q
private final IStorageFileService storageFileService;
private final IQualityFileAssistentService qualityFileAssistentService;
private final ISysClient sysClient;
public QualityFileServiceImpl(@Lazy IQualityFileService qualityFileService,
IQualityStorageFileRelService qualityStorageFileRelService,
IQualityFileDeptRelService qualityFileDeptRelService,
IStorageFileService storageFileService, ISysClient sysClient) {
IStorageFileService storageFileService, IQualityFileAssistentService qualityFileAssistentService, ISysClient sysClient) {
this.qualityFileService = qualityFileService;
this.qualityStorageFileRelService = qualityStorageFileRelService;
this.qualityFileDeptRelService = qualityFileDeptRelService;
this.storageFileService = storageFileService;
this.qualityFileAssistentService = qualityFileAssistentService;
this.sysClient = sysClient;
}
@ -105,22 +105,26 @@ public class QualityFileServiceImpl extends BaseServiceImpl<QualityFileMapper, Q
}
qualityFile.setActiveDeptIds(resultDeptStr);
// 新增修改质量文件主表
// 新增修改质量文件主表
qualityFileService.saveOrUpdate(qualityFile);
Long qualityFileId = qualityFile.getId();
//移除质量文件主表与部门关联表中的相关记录
qualityFileDeptRelService.removeByQualityFileId(qualityFileId);
//将新的部门关系加入到质量文件主表与部门关联表中
Set<String> deptIds = qualityFile.getDeptIds();
qualityFileDeptRelService.saveBatch(deptIds.stream().map(deptId -> QualityFileDeptRel.builder().qualityFileId(qualityFileId).deptId(deptId).build()).collect(Collectors.toList()));
Set<QualityStorageFileRelDTO> 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<QualityFileMapper, Q
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateFile(QualityFile qualityFile) {
//先更新主表信息
qualityFileService.updateById(qualityFile);
LambdaUpdateWrapper<QualityFileAssistent> 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<Long> longs = Func.toLongList(ids);
for(Long l : longs){
//逻辑删除主表
LambdaUpdateWrapper<QualityFile> qualityWrapper = new LambdaUpdateWrapper<>();
qualityWrapper.eq(QualityFile::getId , l).set(QualityFile::getIsDeleted , 1);
qualityFileService.update(qualityWrapper);
//逻辑删除从表
LambdaUpdateWrapper<QualityFileAssistent> assWrapper = new LambdaUpdateWrapper<>();
assWrapper.eq(QualityFileAssistent::getQualityFileId , l).set(QualityFileAssistent::getIsDeleted , 1);
qualityFileAssistentService.update(assWrapper);
}
return true;
}
}

@ -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<StorageFileMapper, S
@Value("${oss.local.base-path:/lims/file}")
private String basePath;
private QualityStorageFileRelMapper qualityStorageFileRelMapper;
@Override
public IPage<StorageFileVO> selectStorageFilePage(IPage<StorageFileVO> page, StorageFileVO storageFile) {
@ -65,6 +72,7 @@ public class StorageFileServiceImpl extends BaseServiceImpl<StorageFileMapper, S
@Override
@SneakyThrows
public InputStream getInputStreamById(Long id) {
StorageFile storageFile = this.getById(id);
InputStream inputStream;
if (storageFile == null) {
@ -80,7 +88,8 @@ public class StorageFileServiceImpl extends BaseServiceImpl<StorageFileMapper, S
}
@Override
public StorageFile storageFileAndSave(String originalFilename, InputStream inputStream) throws IOException {
@Transactional(rollbackFor = Exception.class)
public StorageFile storageFileAndSave(String originalFilename, InputStream inputStream, Long assistentFileId) throws IOException {
String path = UUID.randomUUID().toString().replaceAll("-", "");
File localFile = Paths.get(basePath, path).toFile();
FileOutputStream outputStream = new FileOutputStream(localFile);
@ -92,7 +101,12 @@ public class StorageFileServiceImpl extends BaseServiceImpl<StorageFileMapper, S
storageFile.setFilename(originalFilename);
storageFile.setPath(path);
this.save(storageFile);
return storageFile;
StorageFile file = this.getOne(Condition.getQueryWrapper(storageFile));
// QualityStorageFileRel rel = new QualityStorageFileRel();
// rel.setQualityFileId(assistentFileId);
// rel.setStorageFileId(file.getId());
// qualityStorageFileRelMapper.insert(rel);
return file;
}
@Override

@ -1,6 +1,7 @@
package org.springblade.lims.controller;
import cn.afterturn.easypoi.entity.ImageEntity;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.afterturn.easypoi.word.WordExportUtil;
@ -9,6 +10,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils;
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.binarywang.utils.qrcode.QrcodeUtils;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.spire.doc.Document;
import com.spire.doc.FieldType;
@ -37,12 +39,17 @@ import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.web.bind.annotation.*;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.file.Files;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
/**
@ -1674,12 +1681,47 @@ public class EntrustController extends BladeController {
/**
* 24.二维码生成
*/
@PostMapping("/QrcodeUtils")
public void QrcodeUtils() {
@GetMapping("/QrcodeUtils")
public void QrcodeUtils(String content) throws Exception {
BufferedImage img = QrcodeUtils.generateQRCodeImage(content, 400, ClassLoader.getSystemResourceAsStream("logo.png"));
// File outFile = Files.createTempFile("qrcode_with_logo_", ".png").toFile();
Map<String, Object> 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.获取委托单
*/

@ -1324,9 +1324,11 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
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);

Loading…
Cancel
Save