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