Commit 6769ef02 by ghxdhr

检测委托书打印

parent 6c7d3932
......@@ -2,27 +2,18 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.kisso.annotation.Action;
import com.baomidou.kisso.annotation.Login;
import com.patzn.cloud.service.hmhj.entity.EntrustAnnex;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.entity.EntrustAnnex;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustAnnexService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
......@@ -115,4 +106,12 @@ public class EntrustAnnexController extends ServiceController {
public void view(String objectKey) {
entrustAnnexService.view(response, objectKey);
}
@ApiOperation(value = "根据委托id获取ObjectKey", notes = "获取key")
@Login(action = Action.Skip)
@PostMapping("/get_key_by_businessId")
RestResult<String> getKeyByBusinessId(@RequestBody String businessId){
return success(entrustAnnexService.getLastKey(businessId));
}
}
......@@ -785,8 +785,8 @@ public class EntrustController extends ServiceController {
@ApiOperation("导出检测委托书")
@GetMapping("/export")
public void exportEntrust(@RequestParam("ids") List<Long> ids) {
entrustService.exportEntrust(ids,response);
public RestResult<Boolean> exportEntrust(@RequestParam("ids") List<Long> ids) {
return success(entrustService.exportEntrust(ids,response));
}
}
......@@ -29,4 +29,7 @@ public interface IEntrustAnnexService extends IBaseService<EntrustAnnex> {
void view(HttpServletResponse response, String objectKey);
boolean uploadBath(MultipartHttpServletRequest httpServletRequest, Long entrustId, Account account);
/* 获取最近时间的附件的key */
String getLastKey(String businessId);
}
......@@ -80,5 +80,5 @@ public interface IEntrustService extends IBaseService<Entrust> {
boolean cloneEntrust(Long[] ids, Account account);
void exportEntrust(List<Long> ids, HttpServletResponse response);
Boolean exportEntrust(List<Long> ids, HttpServletResponse response);
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.oss.starter.OssClient;
......@@ -21,6 +23,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
......@@ -103,4 +106,23 @@ public class EntrustAnnexServiceImpl extends BaseServiceImpl<EntrustAnnexMapper,
return true;
}
@Override
public String getLastKey(String businessId) {
if (StringUtils.isNotBlank(businessId)) {
List<EntrustAnnex> entrustAnnexes = new ArrayList<>();
String[] entrustIdAndType = businessId.split("#");
if (entrustIdAndType.length == 2) {
entrustAnnexes = this.list(Condition.create().eq("entrust_id", Long.parseLong(entrustIdAndType[0]))
.eq("type",entrustIdAndType[1].equals("word") ? "docx" : "")
/* 这个remark写死,保证取到是生成的检测委托书,不是用户自己上传的 */
.eq("remark","打印检测委托书时上传生成的文件")
.orderBy("ctime", false));
if (CollectionUtils.isNotEmpty(entrustAnnexes)) {
return entrustAnnexes.get(0).getObjectKey();
}
}
}
return null;
}
}
......@@ -8,6 +8,8 @@ import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.*;
import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.base.entity.SysOrg;
import com.patzn.cloud.service.hmhj.dto.EntrustDTO;
import com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO;
......@@ -81,6 +83,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
@Autowired
private LmsChemicalCategoryClient lmsChemicalCategoryClient;
@Autowired
private IEntrustAnnexService entrustAnnexService;
@Autowired
private OssClient ossClient;
@Override
public Page<Entrust> page(Page<Entrust> page, Entrust entrust) {
......@@ -1048,24 +1056,33 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
List<EntrustSampleDTO> sampleDTOList = baseMapper.listByContractId(entrustId);
return sampleDTOList.stream().filter(t -> (null == t.getType() ? 0 : t.getType().intValue()) == type).collect(Collectors.toList());
}
/* 导出检测委托书 */
@Override
public void exportEntrust(List<Long> ids, HttpServletResponse response) {
public Boolean exportEntrust(List<Long> ids, HttpServletResponse response) {
RestAssert.fail(CollectionUtils.isEmpty(ids),"请选择至少一个委托");
ByteArrayOutputStream baos = getEntrustBaos();
List<File> files = null;
try {
List<File> files = getFiles(ids, baos);
files = getFiles(ids, baos);
// 不需要下载,可能需要先留着
// if (CollectionUtils.isNotEmpty(files)) {
// if (files.size() == 1) {
// FileUtils.download(new FileInputStream(files.get(0)),files.get(0).getName(),response);
// }
// else {
// FileUtils.downLoadFiles(files,"检测委托书.zip",response);
// }
// }
if (CollectionUtils.isNotEmpty(files)) {
if (files.size() == 1) {
FileUtils.download(new FileInputStream(files.get(0)),files.get(0).getName(),response);
}
else {
FileUtils.downLoadFiles(files,"检测委托书.zip",response);
}
return true;
}
} catch (IOException e) {
RestAssert.fail("检测委托书导出异常");
} finally {
FileUtils.deleteFiles(files);
}
return false;
}
private ByteArrayOutputStream getEntrustBaos() {
......@@ -1138,6 +1155,16 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
FileOutputStream fos = new FileOutputStream(file);
template.write(fos);
/* 上传文件 */
OssFileResult result = ossClient.upload(file);
EntrustAnnex annex = new EntrustAnnex();
annex.setEntrustId(entrust.getId());
annex.setFileName(result.getName());
annex.setObjectKey(result.getObjectKey());
annex.setType(result.getType());
annex.setRemark("打印检测委托书时上传生成的文件");
entrustAnnexService.save(annex);
files.add(file);
IoUtils.close(fos,template.getXWPFDocument());
}
......
......@@ -37,7 +37,16 @@ spring:
equip-check-msg: dev.topic.equip.check.msg
report-make-msg: dev.topic.report.make.msg
hmhj-work-msg: dev.topic.hmhj.work.msg
# Mongodb GridFS
data:
mongodb:
uri: mongodb://limsAdmin:devpt12!mg@cn-zz-bgp-4.natfrp.cloud:18563/lims
grid-fs-database: lims
# Mongodb GridFS 存储
oss:
grid-fs: true
bucket-name: base
### jobs
jobs:
......@@ -45,11 +54,11 @@ jobs:
# 对象存储配置
oss:
bucket-name: pt-web-sys
aliyun:
endpoint: http://oss.test.patzn.com
folder: dev/hmhj
#oss:
# bucket-name: pt-web-sys
# aliyun:
# endpoint: http://oss.test.patzn.com
# folder: dev/hmhj
#libreOffice 安装信息
libreOffice:
url: C:/Program Files/LibreOffice
......
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