Commit 1900ea9b authored by renchao's avatar renchao

送验单模块代码编写

parent 02b3b0eb
......@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
* 前端控制器
......@@ -81,6 +83,16 @@ public class TSampleLaboratorysheetController {
return tSampleLaboratorysheetService.insertTSampleLaboratorysheet(tSampleLaboratorysheetQuery);
}
/**
* 二维码下载
*
* @param tSampleLaboratorysheetQuery
* @return
*/
@ApiOperation(value = "二维码下载")
@RequestMapping(value = "/getImage", method = RequestMethod.POST)
public R getImage(TSampleLaboratorysheetQuery tSampleLaboratorysheetQuery,final HttpServletResponse response) {
return tSampleLaboratorysheetService.getImage(tSampleLaboratorysheetQuery,response);
}
}
......@@ -5,6 +5,8 @@ import cn.wise.sc.acquisition.business.model.query.TSampleLaboratorysheetQuery;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
* 服务类
......@@ -22,4 +24,6 @@ public interface ITSampleLaboratorysheetService extends IService<TSampleLaborato
R deleteByYh(TSampleLaboratorysheetQuery tSampleLaboratorysheetQuery);
R insertTSampleLaboratorysheet(TSampleLaboratorysheetQuery tSampleLaboratorysheetQuery);
R getImage(TSampleLaboratorysheetQuery query, final HttpServletResponse response);
}
......@@ -2,10 +2,12 @@ package cn.wise.sc.acquisition.business.service.impl;
import cn.wise.sc.acquisition.business.constant.Rcode;
import cn.wise.sc.acquisition.business.entity.TSampleLaboratorysheet;
import cn.wise.sc.acquisition.business.enumation.ProjectEnum;
import cn.wise.sc.acquisition.business.mapper.TSampleLaboratorysheetMapper;
import cn.wise.sc.acquisition.business.model.query.TSampleLaboratorysheetQuery;
import cn.wise.sc.acquisition.business.model.query.TSampleListQuery;
import cn.wise.sc.acquisition.business.service.ITSampleLaboratorysheetService;
import cn.wise.sc.acquisition.business.util.ImageUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -13,6 +15,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
......@@ -98,6 +104,9 @@ public class TSampleLaboratorysheetServiceImpl extends ServiceImpl<TSampleLabora
//封装
TSampleLaboratorysheet tSampleLaboratorysheet = new TSampleLaboratorysheet();
BeanUtils.copyProperties(tSampleLaboratorysheetQuery, tSampleLaboratorysheet);
//生成二维码 并且保存
tSampleLaboratorysheet.setQRCode(ImageUtil.QRCodeGenerator(JSON.toJSONString(tSampleLaboratorysheet)));
//保存
int insert = baseMapper.insert(tSampleLaboratorysheet);
if (insert > 0) {
return R.ok("添加成功");
......@@ -106,4 +115,25 @@ public class TSampleLaboratorysheetServiceImpl extends ServiceImpl<TSampleLabora
return R.failed("添加失败");
}
}
/**
* 获取图片二维码
*
* @param query
* @param response
*/
@Override
@Transactional
public R getImage(TSampleLaboratorysheetQuery query, final HttpServletResponse response) {
log.info(JSON.toJSONString(query));
//参加校验
Rcode.NOT_PARAM.assertNotNull(query);
Rcode.NOT_PARAM.assertNotEmpty(query.getYh());
TSampleLaboratorysheet tSampleLaboratorysheet = baseMapper.selectById(query.getYh());
//获取二维码或者记录形式
ImageUtil.getImage(ProjectEnum.ImageType.QR_CODE.getValue(), tSampleLaboratorysheet, response);
//如果下载失败才会执行return
return R.failed("该条数据没有图片");
}
}
......@@ -154,7 +154,7 @@ public class TSampleListServiceImpl extends ServiceImpl<TSampleListMapper, TSamp
TSampleList tSampleList = new TSampleList();
BeanUtils.copyProperties(query, tSampleList);
//转化图片
setImage(query, tSampleList, file);
ImageUtil.setImage(query.getImageType(), tSampleList, file);
//保存
int update = baseMapper.updateById(tSampleList);
if (update > 0) {
......@@ -165,22 +165,6 @@ public class TSampleListServiceImpl extends ServiceImpl<TSampleListMapper, TSamp
}
/**
* 私有方法,根据类型保存并转化文件为图片 需要请求参数ImageType 保存的实体TSampleList 以及file
*/
private void setImage(TSampleListQuery query, TSampleList tSampleList, MultipartFile file) {
//判断保存二维码还是记录形式
Optional<Integer> ofNullable = Optional.ofNullable(query.getImageType());
ofNullable.ifPresent(e -> {
if (ProjectEnum.ImageType.getLabel(query.getImageType()).equals(ProjectEnum.ImageType.RECORD_CODE.getLabel())) {
tSampleList.setRecordCode(ImageUtil.transformByte(file));
}
if (ProjectEnum.ImageType.getLabel(query.getImageType()).equals(ProjectEnum.ImageType.QR_CODE.getLabel())) {
tSampleList.setQRCode(ImageUtil.transformByte(file));
}
});
}
/**
* 获取图片二维码
*
......@@ -196,22 +180,9 @@ public class TSampleListServiceImpl extends ServiceImpl<TSampleListMapper, TSamp
Rcode.NOT_PARAM.assertNotEmpty(query.getYh());
Rcode.NOT_PARAM.assertNotNull(query.getImageType());
TSampleList tSampleList = baseMapper.selectById(query.getYh());
//判断获取二维码还是记录形式
Optional<Integer> ofNullable = Optional.ofNullable(query.getImageType());
ofNullable.ifPresent(e -> {
byte[] data = null;
if (ProjectEnum.ImageType.getLabel(query.getImageType()).equals(ProjectEnum.ImageType.RECORD_CODE.getLabel())) {
data = tSampleList.getRecordCode();
}
if (ProjectEnum.ImageType.getLabel(query.getImageType()).equals(ProjectEnum.ImageType.QR_CODE.getLabel())) {
data = tSampleList.getQRCode();
}
if (data != null) {
//下载图片
ImageUtil.transformImage(data, response);
}
});
//获取二维码或者记录形式
ImageUtil.getImage(query.getImageType(), tSampleList, response);
//如果下载失败才会执行return
return R.failed("该条数据没有图片");
}
......
package cn.wise.sc.acquisition.business.util;
import cn.hutool.core.codec.Base64;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.wise.sc.acquisition.business.entity.TSampleLaboratorysheet;
import cn.wise.sc.acquisition.business.entity.TSampleList;
import cn.wise.sc.acquisition.business.enumation.ProjectEnum;
import cn.wise.sc.acquisition.business.model.query.TSampleListQuery;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* Author renchao
* 文件上传下载转化工具类
* 文件上传下载转化工具类,二维码生成
*/
public class ImageUtil {
......@@ -92,13 +102,14 @@ public class ImageUtil {
response.setCharacterEncoding("UTF-8");
OutputStream outputSream = null;
try {
List<byte[]> bytes = JSON.parseObject(new String(data), new TypeReference<List<byte[]>>() {});
List<byte[]> bytes = JSON.parseObject(new String(data), new TypeReference<List<byte[]>>() {
});
outputSream = response.getOutputStream();
for (byte[] picture:bytes){
for (byte[] picture : bytes) {
outputSream.write(picture);
}
outputSream.flush();
if (outputSream!=null){
if (outputSream != null) {
outputSream.close();
}
} catch (IOException e) {
......@@ -107,4 +118,72 @@ public class ImageUtil {
}
}
/**
* 根据obj类型获取图片
*/
public static void getImage(Integer imageType, Object obj, final HttpServletResponse response) {
if (imageType == null || imageType.intValue() == 0) throw new RuntimeException("下载图片时imageType为空");
if (obj == null) throw new RuntimeException("下载图片时obj为空");
if (response == null) throw new RuntimeException("下载图片时response为空");
byte[] data = null;
if (obj instanceof TSampleList) {
TSampleList tSampleList = (TSampleList) obj;
//判断获取二维码还是记录形式
if (ProjectEnum.ImageType.getLabel(imageType).equals(ProjectEnum.ImageType.RECORD_CODE.getLabel())) {
data = tSampleList.getRecordCode();
}
if (ProjectEnum.ImageType.getLabel(imageType).equals(ProjectEnum.ImageType.QR_CODE.getLabel())) {
data = tSampleList.getQRCode();
}
} else if (obj instanceof TSampleLaboratorysheet) {
TSampleLaboratorysheet tSampleLaboratorysheet = (TSampleLaboratorysheet) obj;
data = tSampleLaboratorysheet.getQRCode();
}
if (data != null) {
//下载图片
ImageUtil.transformImage(data, response);
}
return;
}
/**
* 根据类型保存并转化文件为图片 需要请求参数ImageType 保存的实体TSampleList 以及file
*/
public static void setImage(Integer imageType, Object obj, MultipartFile file) {
if (obj instanceof TSampleList) {
TSampleList tSampleList = (TSampleList) obj;
//判断保存二维码还是记录形式
if (ProjectEnum.ImageType.getLabel(imageType).equals(ProjectEnum.ImageType.RECORD_CODE.getLabel())) {
tSampleList.setRecordCode(transformByte(file));
}
if (ProjectEnum.ImageType.getLabel(imageType).equals(ProjectEnum.ImageType.QR_CODE.getLabel())) {
tSampleList.setQRCode(transformByte(file));
}
} else if (obj instanceof TSampleLaboratorysheet) {
TSampleLaboratorysheet tSampleLaboratorysheet = (TSampleLaboratorysheet) obj;
tSampleLaboratorysheet.setQRCode(transformByte(file));
}
}
/**
* 二维码生成工具类
*
* @param content
*/
public static byte[] QRCodeGenerator(String content) {
if (StringUtils.isEmpty(content)) throw new RuntimeException("二维码转化内容为空");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
BufferedImage bufferedImage = QrCodeUtil.generate(content, 200, 200);
try {
ImageIO.write(bufferedImage, "png", stream);
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
//String encode = Base64.encode(stream.toByteArray());
return stream.toByteArray();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment