Commit d14f5572 authored by qinhu's avatar qinhu

小样管理---存储二维码生成

parent 77a00448
......@@ -38,12 +38,10 @@
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -68,7 +66,6 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--<version>5.1.45</version>-->
<version>8.0.18</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
......@@ -99,7 +96,6 @@
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
......@@ -110,28 +106,28 @@
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java -->
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27.0.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
</dependency>
</dependencies>
......
package cn.wise.sc.cement.business.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.query.SampleManageQuery;
import cn.wise.sc.cement.business.model.query.StandardQuery;
import cn.wise.sc.cement.business.service.ISampleService;
import cn.wise.sc.cement.business.service.ISysDictionaryService;
import io.swagger.annotations.Api;
......@@ -15,104 +15,137 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
/**
* <p>
* 前端控制器
* 前端控制器
* </p>
*
* @author ztw
* @since 2020-09-04
*/
@Api(tags="样品管理")
@Api(tags = "样品管理")
@RestController
@RequestMapping("/business/sample")
public class SampleController {
private static final Logger log = LoggerFactory.getLogger("SampleController");
@Autowired
private ISampleService sampleService;
@Autowired
private ISysDictionaryService dictionaryService;
@ApiOperation(value = "样品分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "sampleName", value = "样品名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "cementCode", value = "样品本所编号", paramType = "query", dataType = "String")
})
@GetMapping("/getPage")
public BaseResponse getPage(PageQuery pageQuery, String sampleName, String cementCode) {
try {
return sampleService.getPage(pageQuery, sampleName, cementCode);
} catch (Exception e) {
log.debug("样品分页列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation("样品列表导出")
@PostMapping("/export")
public void export(String sampleName, String cementCode,
String fileName, HttpServletResponse response) {
try {
sampleService.export(sampleName, cementCode,
fileName, response);
} catch (Exception e) {
log.debug("样品列表导出{}", e);
}
}
@ApiOperation(value = "样品详情")
@GetMapping("/{id}")
public BaseResponse getById(@PathVariable Integer id){
try {
return sampleService.getDetail(id);
}catch (Exception e){
log.debug("样品详情{}",e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "样品登记")
@PostMapping("/register")
public BaseResponse register(@RequestBody SampleManageQuery query) {
try {
return sampleService.register(query);
}catch (Exception e) {
log.debug("样品登记{}",e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "样品销毁")
@PostMapping("/destruction/{id}")
public BaseResponse destruction(@PathVariable Integer id) {
try {
return sampleService.destruction(id);
}catch (Exception e) {
log.debug("样品销毁{}",e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "获取样品状态列表")
@GetMapping("/getSampleFormList")
public BaseResponse getSampleFormList(){
try {
return dictionaryService.getContent("样品状态");
}catch (Exception e){
log.debug("获取样品状态列表{}",e);
}
return BaseResponse.errorMsg("失败!");
}
private static final Logger log = LoggerFactory.getLogger("SampleController");
@Autowired
private ISampleService sampleService;
@Autowired
private ISysDictionaryService dictionaryService;
@ApiOperation(value = "样品分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "sampleName", value = "样品名称", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "cementCode", value = "样品本所编号", paramType = "query", dataType = "String")
})
@GetMapping("/getPage")
public BaseResponse getPage(PageQuery pageQuery, String sampleName, String cementCode) {
try {
return sampleService.getPage(pageQuery, sampleName, cementCode);
} catch (Exception e) {
log.debug("样品分页列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation("样品列表导出")
@PostMapping("/export")
public void export(String sampleName, String cementCode,
String fileName, HttpServletResponse response) {
try {
sampleService.export(sampleName, cementCode,
fileName, response);
} catch (Exception e) {
log.debug("样品列表导出{}", e);
}
}
@ApiOperation(value = "样品详情")
@GetMapping("/{id}")
public BaseResponse getById(@PathVariable Integer id) {
try {
return sampleService.getDetail(id);
} catch (Exception e) {
log.debug("样品详情{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "样品登记")
@PostMapping("/register")
public BaseResponse register(@RequestBody SampleManageQuery query) {
try {
return sampleService.register(query);
} catch (Exception e) {
log.debug("样品登记{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation("绑定样品信息")
@PutMapping("/bind/savePosition")
public BaseResponse<String> bindSavePosition(@RequestBody SampleManageQuery query){
try {
return sampleService.bindSavePosition(query);
}catch (Exception e){
log.debug("样品登记{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation("样品复查")
@PutMapping("/review")
public BaseResponse<Boolean> ampleReview(Integer id){
return sampleService.ampleReview(id);
}
@ApiOperation("获取存储位置二维码")
@PostMapping("/saverq/init")
public void getSaveRQ(String savePosition, HttpServletResponse response) {
if (StrUtil.isBlank(savePosition)) {
log.error("生成存储位置二维码失败!savePosition参数为空!");
}
BufferedImage bufferedImage = QrCodeUtil.generate(savePosition, 200, 200);
try (ServletOutputStream os = response.getOutputStream()) {
ImageIO.write(bufferedImage, "jpg", os);
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
@ApiOperation(value = "样品销毁")
@PostMapping("/destruction/{id}")
public BaseResponse destruction(@PathVariable Integer id) {
try {
return sampleService.destruction(id);
} catch (Exception e) {
log.debug("样品销毁{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "获取样品状态列表")
@GetMapping("/getSampleFormList")
public BaseResponse getSampleFormList() {
try {
return dictionaryService.getContent("样品状态");
} catch (Exception e) {
log.debug("获取样品状态列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}
}
......@@ -3,11 +3,9 @@ package cn.wise.sc.cement.business.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -98,7 +96,7 @@ public class Sample implements Serializable {
@ApiModelProperty("原样位置")
private String originalPosition;
@ApiModelProperty("(0未领用,1已领用,2已销毁)")
@ApiModelProperty("(0未领用,1已领用,2已销毁,3复查)")
private Integer status;
@ApiModelProperty("销毁时间")
......@@ -112,6 +110,4 @@ public class Sample implements Serializable {
@ApiModelProperty("样品是否校核完成(0未检测完成, 1检测完成,)")
private Integer isCheck;
}
package cn.wise.sc.cement.business.model.query;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mysql.cj.xdevapi.JsonArray;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;
/**
......
......@@ -31,4 +31,17 @@ public interface ISampleService extends IService<Sample> {
void export(String sampleName, String cementCode,
String fileName, HttpServletResponse response);
/**
* 绑定位置信息
* @param query 小样绑定位置信息
* @return 成功与否
*/
BaseResponse<String> bindSavePosition(SampleManageQuery query);
/**
* 样品复查
* @param id 样品id
* @return 复查成功与否
*/
BaseResponse<Boolean> ampleReview(Integer id);
}
......@@ -269,8 +269,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
}
}
if(teamNameList.contains("Al2O3")){
if(!teamNameList.contains("Fe2O3")){
return BaseResponse.errorMsg("选择Al2O3必须要选择Fe2O3");
if(!teamNameList.contains("Fe2o3")){
return BaseResponse.errorMsg("选择Al2O3必须要选择Fe2o3");
}
}
}
......
package cn.wise.sc.cement.business.service.impl;
import cn.wise.sc.cement.business.entity.Method;
import cn.wise.sc.cement.business.entity.Sample;
import cn.wise.sc.cement.business.entity.SampleTmp;
import cn.wise.sc.cement.business.entity.Team;
import cn.wise.sc.cement.business.mapper.SampleMapper;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery;
......@@ -12,7 +9,6 @@ import cn.wise.sc.cement.business.model.vo.SampleVo;
import cn.wise.sc.cement.business.service.ISampleService;
import cn.wise.sc.cement.business.service.ISysUserService;
import cn.wise.sc.cement.business.util.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -23,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -31,7 +28,7 @@ import java.util.Map;
/**
* <p>
* 服务实现类
* 服务实现类
* </p>
*
* @author ztw
......@@ -40,138 +37,178 @@ import java.util.Map;
@Service
public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> implements ISampleService {
@Resource
private SampleMapper sampleMapper;
@Autowired
private ISysUserService userService;
@Resource
private SampleMapper sampleMapper;
private final ISysUserService userService;
public SampleServiceImpl(ISysUserService userService) {
this.userService = userService;
}
/**
* 分页列表
*
* @param pageQuery
* @param sampleName
* @param cementCode
* @return
*/
@Override
public BaseResponse<IPage<SampleVo>> getPage(PageQuery pageQuery, String sampleName, String cementCode) {
Map<String, Object> params = new HashMap<>();
params.put("sampleName", sampleName);
params.put("cementCode", cementCode);
Page<SampleVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<SampleVo> pages = sampleMapper.getPage(page, params);
return BaseResponse.okData(pages);
}
/**
* 样品管理详情
*
* @param id
* @return
*/
@Override
public BaseResponse<SampleVo> getDetail(Integer id) {
SampleVo sampleVo = sampleMapper.getDetail(id);
if (sampleVo == null) {
return BaseResponse.errorMsg("信息错误!");
}
return BaseResponse.okData(sampleVo);
}
/**
* 样品登记
*
* @param query
* @return
*/
@Transactional
@Override
public BaseResponse<String> register(SampleManageQuery query) {
if (query.getId() == null) {
return BaseResponse.errorMsg("参数错误!");
}
Sample sample = sampleMapper.selectById(query.getId());
if (sample == null) {
return BaseResponse.errorMsg("信息错误");
}
sample.setOperatorId(userService.getLoginUser().getId())
.setRegisterTime(LocalDateTime.now())
.setHandleDate(query.getHandleDate())
.setLittlePosition(query.getLittlePosition())
.setOriginalPosition(query.getOriginalPosition())
.setRemark(query.getRemark());
sampleMapper.updateById(sample);
return BaseResponse.okData("样品登记成功");
}
/**
* 样品销毁
* @param id
* @return
*/
@Transactional
@Override
public BaseResponse<String> destruction(Integer id) {
if (id == null) {
return BaseResponse.errorMsg("参数错误!");
}
Sample sample = sampleMapper.selectById(id);
if (sample == null) {
return BaseResponse.errorMsg("信息错误");
}
sample.setStatus(2)
.setDestructionTime(LocalDateTime.now());
sampleMapper.updateById(sample);
return BaseResponse.okData("样品已销毁");
}
/**
* 样品列表导出
*
* @param sampleName
* @param cementCode
* @param fileName
* @param response
*/
public void export(String sampleName, String cementCode,
String fileName, HttpServletResponse response) {
Map<String, Object> params = new HashMap<>();
params.put("sampleName", sampleName);
params.put("cementCode", cementCode);
List<Map<String, Object>> list = sampleMapper.exportList(params);
if (!CollectionUtils.isEmpty(list)) {
Map<String, Object> map = list.get(0);
String[] headers = new String[map.size()];
headers[0] = "序号";
headers[1] = "样品名称";
headers[2] = "样品本所编号";
headers[3] = "所属项目";
headers[4] = "小样信息";
headers[5] = "原样存储";
headers[6] = "样品重量(kg)";
headers[7] = "是否为平行样";
headers[8] = "状态";
List<Object[]> datas = new ArrayList<>(headers.length);
for (Map<String, Object> m : list) {
Object[] objects = new Object[headers.length];
for (int j = 0; j < headers.length; j++) {
String obj = m.get(headers[j]).toString();
//如果序号带小数点 去除.0,保留整数
if (j == 0) {
obj = obj.split("\\.")[0];
}
objects[j] = obj;
}
datas.add(objects);
}
ExcelUtil.excelExport(
fileName == null || fileName.trim().length() <= 0 ? "样品列表" : fileName, headers,
datas, response);
}
}
@Override
public BaseResponse<String> bindSavePosition(SampleManageQuery query) {
if (query.getId() == null) {
return BaseResponse.errorMsg("");
}
Sample sample = this.getById(query.getId());
sample.setStatus(1);
sample.setDestructionTime(LocalDateTime.now());
sample.setHandleDate(LocalDate.now());
sample.setLittlePosition(query.getLittlePosition());
sample.setOriginalPosition(query.getOriginalPosition());
/**
* 分页列表
* @param pageQuery
* @param sampleName
* @param cementCode
* @return
*/
@Override
public BaseResponse<IPage<SampleVo>> getPage(PageQuery pageQuery, String sampleName, String cementCode){
Map<String, Object> params = new HashMap<>();
params.put("sampleName", sampleName);
params.put("cementCode", cementCode);
Page<SampleVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<SampleVo> pages = sampleMapper.getPage(page, params);
return BaseResponse.okData(pages);
}
/**
* 样品管理详情
* @param id
* @return
*/
@Override
public BaseResponse<SampleVo> getDetail(Integer id){
SampleVo sampleVo = sampleMapper.getDetail(id);
if(sampleVo == null ){
return BaseResponse.errorMsg("信息错误!");
boolean b = this.updateById(sample);
if (b){
return BaseResponse.okData("更新成功!");
}else {
return BaseResponse.errorMsg("更新失败,可以重新尝试!");
}
return BaseResponse.okData(sampleVo);
}
}
/**
* 样品登记
* @param query
* @return
*/
@Transactional
@Override
public BaseResponse<String> register(SampleManageQuery query) {
if (query.getId() == null) {
return BaseResponse.errorMsg("参数错误!");
}
Sample sample = sampleMapper.selectById(query.getId());
if(sample == null){
return BaseResponse.errorMsg("信息错误");
}
sample.setOperatorId(userService.getLoginUser().getId())
.setRegisterTime(LocalDateTime.now())
.setHandleDate(query.getHandleDate())
.setLittlePosition(query.getLittlePosition())
.setOriginalPosition(query.getOriginalPosition())
.setRemark(query.getRemark());
sampleMapper.updateById(sample);
return BaseResponse.okData("样品登记成功");
}
public BaseResponse<Boolean> ampleReview(Integer id) {
/**
* 样品销毁
* @param id
* @return
*/
@Transactional
@Override
public BaseResponse<String> destruction(Integer id) {
if (id == null) {
return BaseResponse.errorMsg("参数错误!");
}
Sample sample = sampleMapper.selectById(id);
if(sample == null){
return BaseResponse.errorMsg("信息错误");
if (id == null){
log.debug("样品复查失败!没有指定样品id!");
return BaseResponse.errorMsg("请指定样品id");
}
sample.setStatus(2)
.setDestructionTime(LocalDateTime.now());
sampleMapper.updateById(sample);
return BaseResponse.okData("样品已销毁");
}
/**
* 样品列表导出
* @param sampleName
* @param cementCode
* @param fileName
* @param response
*/
public void export(String sampleName, String cementCode,
String fileName, HttpServletResponse response) {
Map<String, Object> params = new HashMap<>();
params.put("sampleName", sampleName);
params.put("cementCode", cementCode);
List<Map<String, Object>> list = sampleMapper.exportList(params);
if (!CollectionUtils.isEmpty(list)) {
Map<String, Object> map = list.get(0);
String[] headers = new String[map.size()];
headers[0] = "序号";
headers[1] = "样品名称";
headers[2] = "样品本所编号";
headers[3] = "所属项目";
headers[4] = "小样信息";
headers[5] = "原样存储";
headers[6] = "样品重量(kg)";
headers[7] = "是否为平行样";
headers[8] = "状态";
List<Object[]> datas = new ArrayList<>(headers.length);
for (Map<String, Object> m : list) {
Object[] objects = new Object[headers.length];
for (int j = 0; j < headers.length; j++) {
String obj = m.get(headers[j]).toString();
//如果序号带小数点 去除.0,保留整数
if (j == 0) {
obj = obj.split("\\.")[0];
}
objects[j] = obj;
}
datas.add(objects);
}
ExcelUtil.excelExport(
fileName == null || fileName.trim().length() <= 0 ? "样品列表" : fileName, headers,
datas, response);
Sample sample = this.getById(id);
sample.setStatus(3);
boolean b = this.updateById(sample);
if (b){
return BaseResponse.okData(true);
}
return BaseResponse.okData(false);
}
}
......@@ -5,12 +5,9 @@ import cn.wise.sc.cement.business.mapper.SysDictionaryMapper;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.service.ISysDictionaryService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mysql.cj.xdevapi.JsonArray;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
......
......@@ -14,7 +14,6 @@
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
......@@ -28,7 +27,6 @@
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
......
......@@ -65,10 +65,55 @@
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.8</version>
</dependency>
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27.0.0</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
<version>8.0.18</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<!--日志-->
<dependency>
......@@ -77,6 +122,11 @@
<version>2.10.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
......
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