1、修改物资按照批次查询的sql

2、增加了质量文件的相关代码
dev
yitonglei 3 years ago
parent cb9a0d4ee9
commit bfe502944d
  1. 33
      lab-service-api/lab-file-api/src/main/java/org/springblade/file/entity/QualityFileAssistent.java
  2. 2
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml
  3. 25
      lab-service/lab-file/src/main/java/org/springblade/file/controller/QualityFileController.java
  4. 37
      lab-service/lab-file/src/main/java/org/springblade/file/controller/StorageFileController.java
  5. 12
      lab-service/lab-file/src/main/java/org/springblade/file/mapper/QualityFileAssistentMapper.java
  6. 11
      lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileAssistentService.java
  7. 4
      lab-service/lab-file/src/main/java/org/springblade/file/service/IQualityFileService.java
  8. 2
      lab-service/lab-file/src/main/java/org/springblade/file/service/IStorageFileService.java
  9. 16
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileAssistentServiceImpl.java
  10. 54
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/QualityFileServiceImpl.java
  11. 18
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/StorageFileServiceImpl.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;
}

@ -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,

@ -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,11 @@
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> {
}

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

@ -0,0 +1,16 @@
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 {
}

@ -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;
}
@ -129,4 +129,42 @@ 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

Loading…
Cancel
Save