Commit ddf21198 by ghxdhr

导出检测委托书

parent 71465f8d
...@@ -775,4 +775,10 @@ public class EntrustController extends ServiceController { ...@@ -775,4 +775,10 @@ public class EntrustController extends ServiceController {
return success(EntrustFlowEnum.values()); return success(EntrustFlowEnum.values());
} }
@ApiOperation("导出检测委托书")
@GetMapping("/export")
public void exportEntrust(@RequestParam("ids") List<Long> ids) {
entrustService.exportEntrust(ids,response);
}
} }
...@@ -7,6 +7,7 @@ import com.patzn.cloud.service.hmhj.dto.EntrustDTO; ...@@ -7,6 +7,7 @@ import com.patzn.cloud.service.hmhj.dto.EntrustDTO;
import com.patzn.cloud.service.hmhj.entity.Entrust; import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.vo.EntrustVO; import com.patzn.cloud.service.hmhj.vo.EntrustVO;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
...@@ -76,4 +77,6 @@ public interface IEntrustService extends IBaseService<Entrust> { ...@@ -76,4 +77,6 @@ public interface IEntrustService extends IBaseService<Entrust> {
boolean rejectToPrevNode(Long id,String reason, Account account); boolean rejectToPrevNode(Long id,String reason, Account account);
boolean rejectToPrevNode(Entrust entrust,String reason, Account account); boolean rejectToPrevNode(Entrust entrust,String reason, Account account);
void exportEntrust(List<Long> ids, HttpServletResponse response);
} }
...@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.toolkit.IdWorker; ...@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.toolkit.IdWorker;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper; import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.StringHandleUtils; import com.patzn.cloud.commons.toolkit.*;
import com.patzn.cloud.feign.base.client.SysOrgClient; import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient; import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.service.base.entity.SysOrg; import com.patzn.cloud.service.base.entity.SysOrg;
...@@ -22,6 +22,8 @@ import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils; ...@@ -22,6 +22,8 @@ import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper;
import com.patzn.cloud.service.lims.hmhj.service.*; import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.poibox.utils.TableUtils;
import com.patzn.poibox.xwpf.XWPFTemplate;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -32,6 +34,8 @@ import com.baomidou.mybatisplus.mapper.Wrapper; ...@@ -32,6 +34,8 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -969,4 +973,94 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -969,4 +973,94 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return true; return true;
} }
/* 导出检测委托书 */
@Override
public void exportEntrust(List<Long> ids, HttpServletResponse response) {
RestAssert.fail(CollectionUtils.isEmpty(ids),"请选择至少一个委托");
ByteArrayOutputStream baos = getEntrustBaos();
try {
List<File> 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);
}
}
} catch (IOException e) {
RestAssert.fail("检测委托书导出异常");
}
}
private ByteArrayOutputStream getEntrustBaos() {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("\\templates.\\word.\\entrust.\\EntrustExportTemplate.docx");
RestAssert.fail(null == inputStream,"委托检测书模板获取失败");
byte[] buffer = new byte[1024];
int len;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
while ((len = inputStream.read(buffer)) != -1) {
baos.write(buffer,0,len);
}
} catch (IOException e) {
logger.error("读取inputStream异常:{}",e);
} finally {
IoUtils.close(inputStream);
}
return baos;
}
private List<File> getFiles(List<Long> ids, ByteArrayOutputStream baos) throws IOException {
String gangCode = "/";
ArrayList<File> files = new ArrayList<>(ids.size());
String filePathPrefix = System.getProperty("java.io.tmpdir") + File.separator;
Map<String, Object> dataMap = new HashMap<>();
List<Entrust> entrustList = this.list(Condition.create().in("id", ids));
List<EntrustSample> entrustSamples = entrustSampleService.list(Condition.create().in("entrust_id", ids));
Set<Long> sampleIds = entrustSamples.stream().map(sample -> sample.getId()).collect(Collectors.toSet());
List<EntrustSampleItem> items = entrustSampleItemService.list(Condition.create().in("entrust_sample_id", sampleIds));
/*每个委托一个文件*/
for (Entrust entrust : entrustList) {
/* 样品 */
List<EntrustSample> samples = entrustSamples.stream().
filter(s -> entrust.getId().equals(s.getEntrustId())).
collect(Collectors.toList());
/* 项目 */
Set<String> itemNames = items.stream().map(i -> i.getName()).collect(Collectors.toSet());
Set<String> standards = items.stream()
.filter(i -> StringUtils.isNotEmpty(i.getStandard()))
.map(i -> i.getStandard()).collect(Collectors.toSet());
dataMap.put("entrust",entrust);
/* 委托时间和样品收受时间 */
dataMap.put("entrustTimeStr", StringHandleUtils.parse(DateUtils.toYearMonthDay(entrust.getEntrustTime()),gangCode));
dataMap.put("entrustTimeStrCn", StringHandleUtils.parse(DateUtils.toYearMonthDayChinese(entrust.getEntrustTime()),gangCode));
dataMap.put("entrustTimeStrPoint", StringHandleUtils.parse(DateUtils.toYearMonthDayPoint(entrust.getEntrustTime()),gangCode));
dataMap.put("receiveTimeStr",StringHandleUtils.parse(DateUtils.toYearMonthDay(entrust.getReceiveTime()),gangCode));
dataMap.put("receiveTimeStrCn",StringHandleUtils.parse(DateUtils.toYearMonthDayChinese(entrust.getReceiveTime()),gangCode));
dataMap.put("receiveTimeStrPoint",StringHandleUtils.parse(DateUtils.toYearMonthDayPoint(entrust.getReceiveTime()),gangCode));
dataMap.put("sample",samples.get(0));
dataMap.put("itemNames", ListToStringUtils.listToString(itemNames,"、",gangCode));
dataMap.put("standards",ListToStringUtils.listToString(standards,"、",gangCode));
XWPFTemplate template = XWPFTemplate.compile(new ByteArrayInputStream(baos.toByteArray())).setDefaultValue("/").render(dataMap);
String filePath = filePathPrefix + entrust.getCode() + "检测委托书.docx";
File file = new File(filePath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
FileOutputStream fos = new FileOutputStream(file);
template.write(fos);
files.add(file);
IoUtils.close(fos,template.getXWPFDocument());
}
return files;
}
} }
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