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