李林
2024-04-09 217f2eb09985a80f5d972a6fa1205806756711e1
报告生成
已修改6个文件
已添加1个文件
174 ■■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/CostStatisticsDto.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderMapper.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/report-template.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/template-table.docx 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/resources/application-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
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;
    }
}
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));
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>
inspect-server/src/main/resources/static/report-template.docx
Binary files differ
inspect-server/src/main/resources/static/template-table.docx
Binary files differ
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