From 3bd27d6f6892e60658ca39763d9200743932ee36 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期三, 03 四月 2024 17:03:53 +0800
Subject: [PATCH] 检验报告
---
framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java | 4 +
wordToHtml_styles.css | 2
system-run/src/main/resources/application.yml | 2
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 27 ++++++++
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 69 +++++++++++++++++------
inspect-server/src/main/resources/mapper/InsProductMapper.xml | 3 +
framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java | 2
inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java | 8 ++
system-run/src/main/resources/application-dev.yml | 4 +
wordToHtml.html | 1
inspect-server/src/main/resources/static/report-template.docx | 0
inspect-server/pom.xml | 11 +++
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java | 4 +
inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java | 2
14 files changed, 115 insertions(+), 24 deletions(-)
diff --git a/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java b/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
index 6d32457..329eeed 100644
--- a/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
+++ b/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
@@ -27,7 +27,8 @@
@Value("${outPath}")
private String outPath;
-
+ @Value("${wordUrl}")
+ private String wordUrl;
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//閰嶇疆鎷︽埅鍣ㄨ闂潤鎬佽祫婧�
@@ -38,6 +39,7 @@
//璁剧疆鏂囦欢铏氭嫙璺緞鏄犲皠
registry.addResourceHandler("/img/**").addResourceLocations("file:"+filePath+"/");
registry.addResourceHandler("/outPath/**").addResourceLocations("file:"+outPath);
+ registry.addResourceHandler("/word/**").addResourceLocations("file:"+wordUrl+"/");
}
@Override
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
index bf88a10..62a181b 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
+++ b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
@@ -21,7 +21,7 @@
String nums = num + "";
if(nums.length() == 1) nums = "00" + num;
else if(nums.length() == 2) nums = "0" + num;
- return code + date2 + symbol + nums;
+ return code + (date2==null?date:date2) + symbol + nums;
}
}
diff --git a/inspect-server/pom.xml b/inspect-server/pom.xml
index ef062e2..63ab229 100644
--- a/inspect-server/pom.xml
+++ b/inspect-server/pom.xml
@@ -32,6 +32,15 @@
<artifactId>poi-tl</artifactId>
<version>1.12.2</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-expression</artifactId>
+ <version>5.3.18</version>
+ </dependency>
+ <dependency>
+ <groupId>e-iceblue</groupId>
+ <artifactId>spire.doc.free</artifactId>
+ <version>5.2.0</version>
+ </dependency>
</dependencies>
-
</project>
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
index 718bf4a..7532034 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.dto.ReportPageDto;
import com.yuanchu.mom.dto.SampleOrderDto;
import com.yuanchu.mom.service.InsReportService;
@@ -32,4 +33,11 @@
return Result.success(insReportService.pageInsReport(page, reportPageDto));
}
+ @ApiOperation(value = "Word杞琀TML")
+ @PostMapping("/wordToHtml")
+ @ValueAuth
+ public Result wordToHtml(String path) {
+ return Result.success("杞崲鎴愬姛", insReportService.wordToHtml(path));
+ }
+
}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
index 314fd99..baf4a89 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
@@ -3,6 +3,8 @@
import com.yuanchu.mom.pojo.InsProduct;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import java.util.Map;
+
/**
* @author Administrator
* @description 閽堝琛ㄣ�恑ns_product(妫�楠岄」鐩�)銆戠殑鏁版嵁搴撴搷浣淢apper
@@ -13,6 +15,8 @@
int selectOrderManDay(Integer orderId);
+ Map<String, String> selectUserById(Integer userId);
+
}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
index 28b1ea8..0d0e283 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
@@ -17,4 +17,6 @@
Map<String,Object> pageInsReport(Page page, ReportPageDto reportPageDto);
+ String wordToHtml(String path);
+
}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 4f74f80..b370cb7 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -11,24 +11,33 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.InsOrderPlanDTO;
import com.yuanchu.mom.dto.SampleProductDto;
+import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.InsOrderPlanService;
import com.yuanchu.mom.service.InsOrderService;
import com.yuanchu.mom.service.StandardTemplateService;
+import com.yuanchu.mom.utils.GiveCode;
import com.yuanchu.mom.utils.QueryWrappers;
import com.yuanchu.mom.vo.InsOrderPlanVO;
import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ResourceUtils;
+import javax.annotation.Resource;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -36,24 +45,34 @@
* 妫�楠屼换鍔�-涓氬姟瀹炵幇灞�
*/
@Service
-@AllArgsConstructor
+//@AllArgsConstructor
public class InsOrderPlanServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder> implements InsOrderPlanService {
+ @Resource
private InsSampleMapper insSampleMapper;
-
+ @Resource
private InsSampleUserMapper insSampleUserMapper;
-
+ @Resource
private GetLook getLook;
-
+ @Resource
private InsOrderMapper insOrderMapper;
-
+ @Resource
private InsOrderService insOrderService;
-
+ @Resource
private StandardTemplateService standardTemplateService;
-
+ @Resource
private InsOrderStateMapper insOrderStateMapper;
-
+ @Resource
private InsProductMapper insProductMapper;
+
+ @Value("${wordUrl}")
+ private String wordUrl;
+
+ @Resource
+ private GiveCode giveCode;
+
+ @Resource
+ private InsReportMapper insReportMapper;
@Override
public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
@@ -162,22 +181,36 @@
insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId).eq(InsOrderState::getLaboratory, laboratory).set(InsOrderState::getInsTime, LocalDateTime.now()).set(InsOrderState::getInsState, num).set(InsOrderState::getVerifyTell, tell).set(InsOrderState::getVerifyUser, getLook.selectPowerByMethodAndUserId(null).get("userId")));
List<InsOrderState> insOrderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, orderId));
long count = insOrderStates.stream().filter(a -> a.getInsState() == 5).count();
- if (count == insOrderStates.size()) {
- XWPFTemplate template = XWPFTemplate.compile("template.docx").render(
+ if (count == insOrderStates.size() && num == 5) {
+ InsOrder insOrder = insOrderMapper.selectById(orderId);
+ Map<String, String> user = insProductMapper.selectUserById(insOrder.getUserId());
+ List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
+ samples.forEach(System.out::println);
+ InsReport insReport = new InsReport();
+ insReport.setCode(giveCode.giveCode("JCZX/TX-", "ins_report", "-", "yyMMdd"));
+ insReport.setInsOrderId(orderId);
+ String url;
+ try {
+ url = ResourceUtils.getURL("classpath:static/report-template.docx").getPath();
+ } catch (FileNotFoundException e) {
+ throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�");
+ }
+ XWPFTemplate template = XWPFTemplate.compile(url).render(
new HashMap<String, Object>() {{
- put("title", "Hi, poi-tl Word妯℃澘寮曟搸");
+ put("order", insOrder);
+ put("report", insReport);
+ put("user", user);
+ put("samples", samples);
+ put("sampleSize", samples.size() + samples.get(0).getUnit());
}});
try {
- template.writeAndClose(new FileOutputStream("output.docx"));
+ String name = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yy_MM_dd_HH_mm_ss")) + ".docx";
+ template.writeAndClose(new FileOutputStream(wordUrl + "/" + name));
+ insReport.setUrl("/word/"+ name);
+ insReportMapper.insert(insReport);
} catch (IOException e) {
throw new RuntimeException(e);
}
- List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
- insSamples.forEach(a -> {
- System.out.println(a);
- List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, a.getId()));
- insProducts.forEach(System.out::println);
- });
}
return 1;
}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
index 67f7ef2..c211dfd 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
@@ -1,19 +1,28 @@
package com.yuanchu.mom.service.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.spire.doc.Document;
+import com.spire.doc.FileFormat;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.InsOrderPlanDTO;
import com.yuanchu.mom.dto.ReportPageDto;
import com.yuanchu.mom.dto.SampleOrderDto;
+import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.pojo.InsReport;
import com.yuanchu.mom.service.InsReportService;
import com.yuanchu.mom.mapper.InsReportMapper;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -23,13 +32,17 @@
* @createDate 2024-03-17 22:10:02
*/
@Service
-@AllArgsConstructor
public class InsReportServiceImpl extends ServiceImpl<InsReportMapper, InsReport>
implements InsReportService{
+ @Resource
private GetLook getLook;
+ @Resource
private InsReportMapper insReportMapper;
+
+ @Value("${wordUrl}")
+ private String wordUrl;
@Override
public Map<String, Object> pageInsReport(Page page, ReportPageDto reportPageDto) {
@@ -40,6 +53,18 @@
map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto)));
return map;
}
+
+ @Override
+ public String wordToHtml(String path) {
+ try(ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ Document document = new Document();
+ document.loadFromFile(path.replace("/word", wordUrl));
+ document.saveToFile(outputStream, FileFormat.Html);
+ return outputStream.toString();
+ } catch (Exception e) {
+ throw new ErrorException("杞崲澶辫触");
+ }
+ }
}
diff --git a/inspect-server/src/main/resources/mapper/InsProductMapper.xml b/inspect-server/src/main/resources/mapper/InsProductMapper.xml
index c51b9d4..608bf85 100644
--- a/inspect-server/src/main/resources/mapper/InsProductMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsProductMapper.xml
@@ -46,4 +46,7 @@
left join ins_product ip on isa.id = ip.ins_sample_id
where io.id = #{orderId}
</select>
+ <select id="selectUserById" resultType="java.util.Map">
+ select name,company,phone,address from user where id = #{userId}
+ </select>
</mapper>
diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx
new file mode 100644
index 0000000..29a4f45
--- /dev/null
+++ b/inspect-server/src/main/resources/static/report-template.docx
Binary files differ
diff --git a/system-run/src/main/resources/application-dev.yml b/system-run/src/main/resources/application-dev.yml
index 46a906f..e09f7a1 100644
--- a/system-run/src/main/resources/application-dev.yml
+++ b/system-run/src/main/resources/application-dev.yml
@@ -18,10 +18,12 @@
# 鐓х墖瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
file:
- path: D:\Download
+ path: D:\椤圭洰鏂囦欢瀛樺偍\image
# 涓婁紶鏂囦欢鍏佽鐨勬墿灞曞悕
allowed: png,jpg,jpeg,gif
+wordUrl: D:\椤圭洰鏂囦欢瀛樺偍\word
+
mybatis-plus:
type-aliases-package: com.yuanchu.mom.pojo
mapper-locations: classpath*:/mapper/*.xml
diff --git a/system-run/src/main/resources/application.yml b/system-run/src/main/resources/application.yml
index e9ee9ae..648b09f 100644
--- a/system-run/src/main/resources/application.yml
+++ b/system-run/src/main/resources/application.yml
@@ -26,4 +26,4 @@
okhttp:
enabled: true # 寮�鍚� okhttp
-outPath: D:/Download/
\ No newline at end of file
+outPath: D:\椤圭洰鏂囦欢瀛樺偍\image
\ No newline at end of file
diff --git a/wordToHtml.html b/wordToHtml.html
new file mode 100644
index 0000000..85e3df6
--- /dev/null
+++ b/wordToHtml.html
@@ -0,0 +1 @@
+锘�<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /><title></title><link href="wordToHtml_styles.css" type="text/css" rel="stylesheet"/></head><body /></html>
\ No newline at end of file
diff --git a/wordToHtml_styles.css b/wordToHtml_styles.css
new file mode 100644
index 0000000..be27dab
--- /dev/null
+++ b/wordToHtml_styles.css
@@ -0,0 +1,2 @@
+body{ font-family:'Times New Roman'; font-size:1em; }
+ul, ol{ margin-top: 0; margin-bottom: 0; }
--
Gitblit v1.9.3