From 1f418616dbab8feb1f1f432045fb4645949e1c1c Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Thu, 3 Apr 2025 18:20:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E5=A4=B4bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++ .../ContractorMonthlyDetailController.java | 22 ++++++- .../baotou/entity/AnticorrosionEntrust.java | 19 +++++- .../entity/AnticorrosionPlanApplication.java | 59 ++++++++++++------- .../mapper/xml/AnticorrosionEntrustMapper.xml | 12 ++++ .../AnticorrosionPlanApplicationMapper.xml | 12 ++++ .../impl/AnticorrosionEntrustServiceImpl.java | 6 +- ...ticorrosionPlanApplicationServiceImpl.java | 23 ++++---- .../ContractorMonthlyDetailServiceImpl.java | 4 +- .../impl/LiftingOperationServiceImpl.java | 6 +- .../java/com/zhgd/xmgl/util/WordUtils.java | 37 ++++++++++++ 11 files changed, 167 insertions(+), 39 deletions(-) diff --git a/pom.xml b/pom.xml index 5b04f3f8b..b417f2105 100644 --- a/pom.xml +++ b/pom.xml @@ -356,6 +356,12 @@ poi-ooxml 4.0.1 + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + + cn.afterturn diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ContractorMonthlyDetailController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ContractorMonthlyDetailController.java index 699d13c80..1b40a6876 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ContractorMonthlyDetailController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ContractorMonthlyDetailController.java @@ -4,23 +4,29 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.xmgl.modules.baotou.entity.ContractorMonthlyDetail; -import com.zhgd.xmgl.modules.baotou.entity.ContractorMonthlyPeriod; import com.zhgd.xmgl.modules.baotou.service.*; import com.zhgd.xmgl.modules.project.service.IProjectEnterpriseService; import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl; +import com.zhgd.xmgl.util.WordUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; +import org.apache.commons.io.IOUtils; import org.simpleframework.xml.core.Validate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; @@ -213,4 +219,18 @@ public class ContractorMonthlyDetailController { return Result.success(contractorMonthlyDetailService.countQuantityExcel(param)); } + @ApiOperation(value = "月报周报html转word", notes = "月报周报html转word", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "file", value = "file", paramType = "body", required = true, dataType = "String"), + }) + @PostMapping(value = "/html2Word") + public void html2Word(HttpServletResponse response, MultipartFile file) { + try { + String html = IOUtils.toString(file.getInputStream(), StandardCharsets.UTF_8); + WordUtils.html2Word(response, html); + } catch (IOException e) { + log.error("", e); + } + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionEntrust.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionEntrust.java index e73194820..192fc348f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionEntrust.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionEntrust.java @@ -149,10 +149,25 @@ public class AnticorrosionEntrust implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss") private java.util.Date updateTime; - @ApiModelProperty(value="时间级别:1月2周") - private java.lang.Integer levelType ; + @ApiModelProperty(value = "时间级别:1月2周") + private java.lang.Integer levelType; @ApiModelProperty(value = "编号") private java.lang.String num; + @ApiModelProperty(value = "项目组") + private java.lang.Long projectGroup; + @ApiModelProperty(value = "监理") + private java.lang.Long supervision; + @ApiModelProperty(value = "EPC承包商") + private java.lang.Long epcContractor; + @TableField(exist = false) + @ApiModelProperty(value = "项目组名称") + private java.lang.String projectGroupName; + @TableField(exist = false) + @ApiModelProperty(value = "监理名称") + private java.lang.String supervisionName; + @TableField(exist = false) + @ApiModelProperty(value = "EPC承包商名称") + private java.lang.String epcContractorName; @TableField(exist = false) @ApiModelProperty(value = "装置/单元名称") private java.lang.String deviceUnitName; diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionPlanApplication.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionPlanApplication.java index df6bdd0d4..ceec4b210 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionPlanApplication.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/AnticorrosionPlanApplication.java @@ -97,26 +97,45 @@ public class AnticorrosionPlanApplication implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value="创建时间 yyyy-MM-dd HH:mm:ss") private java.util.Date createTime ; - /**更新时间 yyyy-MM-dd HH:mm:ss*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value="更新时间 yyyy-MM-dd HH:mm:ss") - private java.util.Date updateTime ; - /**时间级别:1月2周*/ - @ApiModelProperty(value="时间级别:1月2周") - private java.lang.Integer levelType ; - @ApiModelProperty(value = "编号") - private java.lang.String num; - @TableField(exist = false) - @ApiModelProperty(value="装置/单元名称") - private java.lang.String deviceUnitName ; - @TableField(exist = false) - @ApiModelProperty(value="承包商名称") - private java.lang.String contractorName ; - @TableField(exist = false) - @ApiModelProperty(value="填报人名称") - private java.lang.String reportingPersonName ; - @TableField(exist = false) + /** + * 更新时间 yyyy-MM-dd HH:mm:ss + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss") + private java.util.Date updateTime; + /** + * 时间级别:1月2周 + */ + @ApiModelProperty(value = "时间级别:1月2周") + private java.lang.Integer levelType; + @ApiModelProperty(value = "编号") + private java.lang.String num; + @ApiModelProperty(value = "项目组") + private java.lang.Long projectGroup; + @ApiModelProperty(value = "监理") + private java.lang.Long supervision; + @ApiModelProperty(value = "EPC承包商") + private java.lang.Long epcContractor; + @TableField(exist = false) + @ApiModelProperty(value = "项目组名称") + private java.lang.String projectGroupName; + @TableField(exist = false) + @ApiModelProperty(value = "监理名称") + private java.lang.String supervisionName; + @TableField(exist = false) + @ApiModelProperty(value = "EPC承包商名称") + private java.lang.String epcContractorName; + @TableField(exist = false) + @ApiModelProperty(value = "装置/单元名称") + private java.lang.String deviceUnitName; + @TableField(exist = false) + @ApiModelProperty(value = "承包商名称") + private java.lang.String contractorName; + @TableField(exist = false) + @ApiModelProperty(value = "填报人名称") + private java.lang.String reportingPersonName; + @TableField(exist = false) @ApiModelProperty(value="承包商项目经理名称") private java.lang.String contractorProjectManagerName ; @TableField(exist = false) diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionEntrustMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionEntrustMapper.xml index 760f8e498..1e9fed8b4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionEntrustMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionEntrustMapper.xml @@ -11,7 +11,13 @@ ,su3.real_name as supervising_engineer_name ,su4.real_name as project_team_professional_engineer_name ,su5.real_name as anti_corrosion_contractor_responsible_person_name + ,pg.project_group_name as project_group_name + ,ei1.enterprise_name as supervision_name + ,ei2.enterprise_name as epc_contractor_name from anticorrosion_entrust t + left join project_group pg on pg.id=t.project_group + left join enterprise_info ei1 on ei1.id=t.supervision + left join enterprise_info ei2 on ei2.id=t.epc_contractor left join device_unit du on du.id=t.device_unit_id left join enterprise_info ei on ei.id=t.contractor left join system_user su1 on su1.user_id=t.reporting_person @@ -32,7 +38,13 @@ ,su3.real_name as supervising_engineer_name ,su4.real_name as project_team_professional_engineer_name ,su5.real_name as anti_corrosion_contractor_responsible_person_name + ,pg.project_group_name as project_group_name + ,ei1.enterprise_name as supervision_name + ,ei2.enterprise_name as epc_contractor_name from anticorrosion_entrust t + left join project_group pg on pg.id=t.project_group + left join enterprise_info ei1 on ei1.id=t.supervision + left join enterprise_info ei2 on ei2.id=t.epc_contractor left join device_unit du on du.id=t.device_unit_id left join enterprise_info ei on ei.id=t.contractor left join system_user su1 on su1.user_id=t.reporting_person diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionPlanApplicationMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionPlanApplicationMapper.xml index 9a8d8a486..59297ecac 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionPlanApplicationMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/AnticorrosionPlanApplicationMapper.xml @@ -11,7 +11,13 @@ ,su3.real_name as supervising_engineer_name ,su4.real_name as project_team_professional_engineer_name ,su5.real_name as centralized_anti_corrosion_contractor_person_name + ,pg.project_group_name as project_group_name + ,ei1.enterprise_name as supervision_name + ,ei2.enterprise_name as epc_contractor_name from anticorrosion_plan_application t + left join project_group pg on pg.id=t.project_group + left join enterprise_info ei1 on ei1.id=t.supervision + left join enterprise_info ei2 on ei2.id=t.epc_contractor left join device_unit du on du.id=t.device_unit_id left join enterprise_info ei on ei.id=t.contractor left join system_user su1 on su1.user_id=t.reporting_person @@ -32,7 +38,13 @@ ,su3.real_name as supervising_engineer_name ,su4.real_name as project_team_professional_engineer_name ,su5.real_name as centralized_anti_corrosion_contractor_person_name + ,pg.project_group_name as project_group_name + ,ei1.enterprise_name as supervision_name + ,ei2.enterprise_name as epc_contractor_name from anticorrosion_plan_application t + left join project_group pg on pg.id=t.project_group + left join enterprise_info ei1 on ei1.id=t.supervision + left join enterprise_info ei2 on ei2.id=t.epc_contractor left join device_unit du on du.id=t.device_unit_id left join enterprise_info ei on ei.id=t.contractor left join system_user su1 on su1.user_id=t.reporting_person diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/AnticorrosionEntrustServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/AnticorrosionEntrustServiceImpl.java index c23e4a189..3e1594345 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/AnticorrosionEntrustServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/AnticorrosionEntrustServiceImpl.java @@ -101,7 +101,8 @@ public class AnticorrosionEntrustServiceImpl extends ServiceImpl map) { AnticorrosionEntrust e = new AnticorrosionEntrust(); e.setProjectSn(MapUtils.getString(map, "projectSn")); - e.setIsUrgent(FlowUtil.getPullDownInteger(map, "isUrgent")); + List isUrgent = Arrays.asList("否", "是"); + e.setIsUrgent(isUrgent.indexOf(FlowUtil.getString(map, "isUrgent"))); e.setDeviceUnitId(FlowUtil.getPullDownLong(map, "deviceUnitId")); e.setContractor(FlowUtil.getPullDownLong(map, "contractor")); e.setReportingTime(FlowUtil.getDate(map, "reportingTime")); @@ -121,6 +122,9 @@ public class AnticorrosionEntrustServiceImpl extends ServiceImpl Convert.toInt(((List) o).get(0))).orElse(null); String operationLocation = MapUtils.getString(map, "operationLocation"); String operationContent = MapUtils.getString(map, "operationContent"); String craneTypeLicensePlateNumber = MapUtils.getString(map, "craneTypeLicensePlateNumber"); @@ -227,7 +226,8 @@ public class LiftingOperationServiceImpl extends ServiceImpl level = Arrays.asList("一级(M>100吨)", "二级(40吨≤M≤100吨)", "三级(M<40吨)"); + operation.setLevel(level.indexOf(FlowUtil.getString(map, "level") + 1)); operation.setOperatorLicenseNumber(operatorLicenseNumber); operation.setSafetyMeasuresList(safetyMeasuresList); operation.setOperationUnitConstructionApplicant(operationUnitConstructionApplicant); diff --git a/src/main/java/com/zhgd/xmgl/util/WordUtils.java b/src/main/java/com/zhgd/xmgl/util/WordUtils.java index 36dc025e9..b766882b8 100644 --- a/src/main/java/com/zhgd/xmgl/util/WordUtils.java +++ b/src/main/java/com/zhgd/xmgl/util/WordUtils.java @@ -2,11 +2,14 @@ package com.zhgd.xmgl.util; import cn.afterturn.easypoi.word.WordExportUtil; import cn.afterturn.easypoi.word.parse.ParseWord07; +import org.apache.poi.poifs.filesystem.DirectoryEntry; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.URLEncoder; import java.util.List; @@ -32,6 +35,40 @@ public class WordUtils { } } + /** + * word下载 + * + * @param fileName 下载时的文件名称 + * @param response + */ + private static void downLoadWord(String fileName, HttpServletResponse response, POIFSFileSystem poifsFileSystem) throws IOException { + try { + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-Type", "application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".docx", "UTF-8")); + poifsFileSystem.writeFilesystem(response.getOutputStream()); + } catch (Exception e) { + throw new IOException(e.getMessage()); + } + } + + /** + * html转word + * + * @param response + * @param html + * @throws IOException + */ + public static void html2Word(HttpServletResponse response, String html) throws IOException { + // String html = FileUtil.readString("C:\\Users\\Administrator\\Desktop\\t\\文档.html", StandardCharsets.UTF_8 ); + byte by[] = html.getBytes("UTF-8"); + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(by); + POIFSFileSystem poifsFileSystem = new POIFSFileSystem(); + DirectoryEntry directoryEntry = poifsFileSystem.getRoot(); + directoryEntry.createDocument("WordDocument", byteArrayInputStream); + WordUtils.downLoadWord("导出word", response, poifsFileSystem); + } + /** * word模板导出 *