From 217f2eb09985a80f5d972a6fa1205806756711e1 Mon Sep 17 00:00:00 2001
From: 李林 <z1292839451@163.com>
Date: 星期二, 09 四月 2024 18:05:20 +0800
Subject: [PATCH] 报告生成
---
inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java | 5 +
system-run/src/main/resources/application-dev.yml | 4
inspect-server/src/main/resources/mapper/InsOrderMapper.xml | 26 ++++++--
inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java | 10 ++
inspect-server/src/main/resources/static/report-template.docx | 0
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 129 +++++++++++++++++++++++++++---------------
inspect-server/src/main/resources/static/template-table.docx | 0
7 files changed, 117 insertions(+), 57 deletions(-)
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 c580fc2..e480a74 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 cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.dto.ReportPageDto;
@@ -18,6 +19,8 @@
import javax.annotation.Resource;
import java.io.File;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
@@ -58,7 +61,7 @@
if (!realpath.exists()) {
realpath.mkdirs();
}
- pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
+ pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
urlString = realpath + "/" + pathName;
file.transferTo(new File(urlString));
return Result.success(insReportService.inReport("/word/"+pathName, id));
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
index 5abd147..5c9291d 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java
@@ -7,6 +7,7 @@
import java.math.BigDecimal;
import java.time.LocalDateTime;
+import java.util.List;
@Data
public class CostStatisticsDto extends OrderBy {
@@ -25,13 +26,13 @@
private String model;
@ValueTableShow(value = 5, name = "鏍峰搧鏁伴噺")
- private Integer num = 1;
+ private Integer num;
@ValueTableShow(value = 6, name = "鎬讳环")
private BigDecimal price;
@ValueTableShow(value = 7, name = "璇曢獙椤圭洰")
- private String product;
+ private String inspectionItem;
@ValueTableShow(value = 8, name = "濮旀墭鍗曚綅")
private String company;
@@ -41,4 +42,9 @@
private Integer createUser;
+ private Integer insSampleId;
+
+ public Integer getNum() {
+ return num = 1;
+ }
}
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 eea8eed..b04240e 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
@@ -13,6 +13,10 @@
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.*;
+import com.deepoove.poi.data.style.TableStyle;
+import com.deepoove.poi.render.Render;
+import com.spire.doc.Table;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.InsOrderPlanDTO;
@@ -36,6 +40,8 @@
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -121,50 +127,7 @@
List<SampleProductDto> list = JSON.parseArray(JSON.toJSONString(map.get("sampleProduct")), SampleProductDto.class);
for (SampleProductDto samples : list) {
if (BeanUtil.isEmpty(samples.getInsProduct())) continue;
- for (InsProduct product : samples.getInsProduct()) {
- if (product.getTemplateId() == null) {
- product.setTemplate(new ArrayList<>());
- continue;
- }
- if (set.add(product.getTemplateId())) {
- map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + "");
- }
- String thing = map2.get(product.getTemplateId());
- if (StrUtil.isNotEmpty(thing)) {
- JSONObject sheet = JSON.parseObject(JSON.toJSONString(JSON.parseArray(JSON.toJSONString(JSON.parseObject(thing).get("data"))).get(0)));
- JSONObject config = JSON.parseObject(JSON.toJSONString(sheet.get("config")));
- List<JSONObject> cellData = JSON.parseArray(JSON.toJSONString(sheet.get("celldata")), JSONObject.class);
- List<JSONObject> tableData = new ArrayList<>();
- Map<String, Object> style = new HashMap<>();
-// style.put("borderInfo", config.get("borderInfo"));
- style.put("rowlen", config.get("rowlen"));
- style.put("columnlen", config.get("columnlen"));
- int r = -1;
- if (BeanUtil.isNotEmpty(cellData)) {
- for (JSONObject o : cellData) {
- JSONObject v = JSON.parseObject(JSON.toJSONString(o.get("v")));
- if (BeanUtil.isNotEmpty(v.get("ps"))) {
- JSONObject ps = JSON.parseObject(JSON.toJSONString(v.get("ps")));
- if (ps.get("value").equals("妫�楠岄」") && v.get("v").equals(product.getInspectionItem())) {
- tableData.add(o);
- r = Integer.parseInt(o.get("r") + "");
- continue;
- }
- }
- if (tableData.size() > 0) {
- if ((Integer.parseInt(o.get("r") + "") == r + 1 || Integer.parseInt(o.get("r") + "") == r) && !(o.get("v") + "").equals("{\"ht\":\"0\"}")) {
- r = Integer.parseInt(o.get("r") + "");
- tableData.add(o);
- } else {
- break;
- }
- }
- }
- }
- product.setTemplate(tableData);
- product.setStyle(style);
- }
- }
+ getTemplateThing(set, map2, samples);
}
map.put("sampleProduct", list);
return map;
@@ -263,7 +226,35 @@
InsOrder insOrder = insOrderMapper.selectById(orderId);
Map<String, String> user = insProductMapper.selectUserById(insOrder.getUserId());
List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
- samples.forEach(System.out::println);
+ Set<Integer> set = new HashSet<>();
+ Map<Integer, String> map2 = new HashMap<>();
+ samples.forEach(a->{
+ getTemplateThing(set, map2, a);
+ TableRenderData tableRenderData = new TableRenderData();
+ TableStyle tableStyle = new TableStyle();
+ tableStyle.setWidth("14.63");
+ tableRenderData.setTableStyle(tableStyle);
+ a.getInsProduct().forEach(b->{
+ System.out.println(b.getTemplate());
+ System.out.println(b.getStyle());
+ RowRenderData rowRenderData = new RowRenderData();
+ CellRenderData cellRenderData = new CellRenderData();
+ for (JSONObject jo1 : b.getTemplate()) {
+ ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
+ List<RenderData> contents = new ArrayList<>();
+ /*if(Integer.parseInt(jo1.get("r")+"") == r){
+ if(Integer.parseInt(jo1.get("r")+"") == c){
+ JSONObject jo2 = JSONObject.parseObject(JSONObject.toJSONString(jo1.get("v")));
+ TextRenderData textRenderData = new TextRenderData();
+ textRenderData.setText(jo2.get("v")+"");
+ contents.add(textRenderData);
+ paragraphRenderData.setContents(contents);
+ }
+ }else if (Integer.parseInt(jo1.get("r")+"") > r){
+ }*/
+ }
+ });
+ });
InsReport insReport = new InsReport();
insReport.setCode(giveCode.giveCode("JCZX/TX-", "ins_report", "-", "yyMMdd"));
insReport.setInsOrderId(orderId);
@@ -283,7 +274,7 @@
}});
try {
String name = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yy_MM_dd_HH_mm_ss")) + ".docx";
- template.writeAndClose(new FileOutputStream(wordUrl + "/" + name));
+ template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
insReport.setUrl("/word/"+ name);
insReportMapper.insert(insReport);
} catch (IOException e) {
@@ -293,6 +284,52 @@
return 1;
}
+ private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, SampleProductDto a) {
+ for (InsProduct product : a.getInsProduct()) {
+ if (product.getTemplateId() == null) {
+ product.setTemplate(new ArrayList<>());
+ continue;
+ }
+ if (set.add(product.getTemplateId())) {
+ map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + "");
+ }
+ String thing = map2.get(product.getTemplateId());
+ if (StrUtil.isNotEmpty(thing)) {
+ JSONObject sheet = JSON.parseObject(JSON.toJSONString(JSON.parseArray(JSON.toJSONString(JSON.parseObject(thing).get("data"))).get(0)));
+ JSONObject config = JSON.parseObject(JSON.toJSONString(sheet.get("config")));
+ List<JSONObject> cellData = JSON.parseArray(JSON.toJSONString(sheet.get("celldata")), JSONObject.class);
+ List<JSONObject> tableData = new ArrayList<>();
+ Map<String, Object> style = new HashMap<>();
+ style.put("rowlen", config.get("rowlen"));
+ style.put("columnlen", config.get("columnlen"));
+ int r = -1;
+ if (BeanUtil.isNotEmpty(cellData)) {
+ for (JSONObject o : cellData) {
+ JSONObject v = JSON.parseObject(JSON.toJSONString(o.get("v")));
+ if (BeanUtil.isNotEmpty(v.get("ps"))) {
+ JSONObject ps = JSON.parseObject(JSON.toJSONString(v.get("ps")));
+ if (ps.get("value").equals("妫�楠岄」") && v.get("v").equals(product.getInspectionItem())) {
+ tableData.add(o);
+ r = Integer.parseInt(o.get("r") + "");
+ continue;
+ }
+ }
+ if (tableData.size() > 0) {
+ if ((Integer.parseInt(o.get("r") + "") == r + 1 || Integer.parseInt(o.get("r") + "") == r) && !(o.get("v") + "").equals("{\"ht\":\"0\"}")) {
+ r = Integer.parseInt(o.get("r") + "");
+ tableData.add(o);
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ product.setTemplate(tableData);
+ product.setStyle(style);
+ }
+ }
+ }
+
@Override
public int submitPlan(Integer orderId, String laboratory) {
List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index d168a3a..bb33efa 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -117,13 +117,27 @@
</if>
</select>
<select id="selectCostStatistics" resultType="com.yuanchu.mom.dto.CostStatisticsDto">
- select * from {
- SELECT io.id,io.entrust_code,io.create_time,isa.sample,isa.model,ip.price,ip.inspection_item,u.company,u.`name`,io.create_user from ins_order io
- LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
+ select * from (
+ SELECT
+ i.id,
+ i.entrust_code,
+ i.create_time,
+ isa.sample,
+ isa.model,
+ c.price,
+ ip.inspection_item,
+ u.company,
+ u.`name`,
+ i.create_user,
+ c.ins_sample_id
+ FROM
+ ins_order i
+ LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
- LEFT JOIN `user` u ON u.id = io.user_id
-# where (io.state = 3 OR io.state = 4)
- } a
+ LEFT JOIN `user` u ON u.id = i.user_id
+ LEFT JOIN (select SUM(b.price) price,b.ins_sample_id from (select * from ins_product where state = 1 GROUP BY ins_sample_id,man_hour_group) b GROUP BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
+ where ip.state = 1
+ ) a
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx
index 29a4f45..48fbcd4 100644
--- a/inspect-server/src/main/resources/static/report-template.docx
+++ b/inspect-server/src/main/resources/static/report-template.docx
Binary files differ
diff --git a/inspect-server/src/main/resources/static/template-table.docx b/inspect-server/src/main/resources/static/template-table.docx
new file mode 100644
index 0000000..397c507
--- /dev/null
+++ b/inspect-server/src/main/resources/static/template-table.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 eb33049..2b36d65 100644
--- a/system-run/src/main/resources/application-dev.yml
+++ b/system-run/src/main/resources/application-dev.yml
@@ -18,11 +18,11 @@
# 鐓х墖瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
file:
- path: D:\Download
+ path: D:\Download\鍏徃瀛樺偍鍦板潃
# 涓婁紶鏂囦欢鍏佽鐨勬墿灞曞悕
allowed: png,jpg,jpeg,gif
-wordUrl: D:\Download
+wordUrl: D:\Download\鍏徃瀛樺偍鍦板潃
mybatis-plus:
type-aliases-package: com.yuanchu.mom.pojo
--
Gitblit v1.9.3