From 06dcecb077b6894a4dbc07d8dd6be9e9c5603d79 Mon Sep 17 00:00:00 2001 From: renfan <2206580733@qq.com> Date: Tue, 24 Sep 2024 17:00:30 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90admin&front=E3=80=91=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E&=E4=BC=98=E5=8C=96=20#=201=E3=80=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?excel=E6=8C=89=E6=A8=A1=E7=89=88=E5=AF=BC=E5=87=BA=202=E3=80=81?= =?UTF-8?q?=E6=A3=80=E4=BF=AE=E5=8D=95=E6=96=B0=E5=A2=9E=E5=AE=8C=E5=B7=A5?= =?UTF-8?q?=E7=85=A7=E7=89=87=E5=AD=97=E6=AE=B5=203=E3=80=81=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=BB=B4=E4=BF=AE=E5=8D=95=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=BA=A6=E6=9D=9F=E9=83=A8=E4=BB=B6=E7=BC=96=E7=A0=81=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=92=8C=E6=A8=A1=E5=9D=97=E5=8F=B7=E4=B8=80=E6=A0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/RepairOrderController.java | 11 +- .../service/order/IRepairOrderService.java | 8 + .../admin/service/order/RepairOrderExcel.java | 62 ++++-- .../order/impl/RepairOrderServiceImpl.java | 189 ++++++++++++++++- .../validate/order/MaintenanceOrderParam.java | 1 + .../validate/order/RepairOrderParam.java | 4 + .../vo/excel/ModuleMaintenanceExcel.java | 54 +++++ .../vo/order/MaintenanceOrderDetailVo.java | 1 + .../vo/order/MaintenanceOrderListVo.java | 1 + admin/src/main/resources/application-dev.yml | 5 + admin/src/main/resources/application.yml | 5 + .../excel/ModuleMaintenance-template.xlsx | Bin 0 -> 190853 bytes common/pom.xml | 6 + .../hcy/common/dto/order/RepairOrderDto.java | 3 + .../entity/order/RoutingInspectionOrder.java | 4 + .../java/com/hcy/common/utils/ExcelUtils.java | 24 ++- .../excel/CustomImageModifyStrategy.java | 190 ++++++++++++++++++ .../utils/excel/DownloadUrlConverter.java | 105 ++++++++++ .../hcy/common/utils/excel/EasyExcelUtil.java | 27 +++ .../common/utils/excel/ImageUrlConverter.java | 65 ++++++ .../utils/excel/LocalImageModifyStrategy.java | 154 ++++++++++++++ .../utils/excel/MonthSheetWriteHandler.java | 123 ++++++++++++ .../resources/mapper/RepairOrderMapper.xml | 6 + .../order/impl/RepairOrderServiceImpl.java | 4 + .../RoutingInspectionOrderServiceImpl.java | 2 + front/src/main/resources/application-dev.yml | 5 + front/src/main/resources/application.yml | 7 +- pom.xml | 7 + 28 files changed, 1048 insertions(+), 25 deletions(-) create mode 100644 admin/src/main/java/com/hcy/admin/vo/excel/ModuleMaintenanceExcel.java create mode 100644 admin/src/main/resources/templates/excel/ModuleMaintenance-template.xlsx create mode 100644 common/src/main/java/com/hcy/common/utils/excel/CustomImageModifyStrategy.java create mode 100644 common/src/main/java/com/hcy/common/utils/excel/DownloadUrlConverter.java create mode 100644 common/src/main/java/com/hcy/common/utils/excel/EasyExcelUtil.java create mode 100644 common/src/main/java/com/hcy/common/utils/excel/ImageUrlConverter.java create mode 100644 common/src/main/java/com/hcy/common/utils/excel/LocalImageModifyStrategy.java create mode 100644 common/src/main/java/com/hcy/common/utils/excel/MonthSheetWriteHandler.java diff --git a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java index 5a6bd7a..5ff6ee4 100644 --- a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java +++ b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java @@ -1,14 +1,10 @@ package com.hcy.admin.controller.order; import com.hcy.admin.config.aop.Log; -import com.hcy.admin.service.order.DistributionOrderExcel; import com.hcy.admin.service.order.IRepairOrderService; import com.hcy.admin.service.order.RepairOrderExcel; -import com.hcy.admin.validate.order.MaintenanceOrderParam; -import com.hcy.admin.validate.order.OrderDistributionParam; import com.hcy.admin.validate.order.RepairOrderParam; import com.hcy.admin.validate.common.PageParam; -import com.hcy.admin.validate.order.RoutingInspectionOrderParam; import com.hcy.admin.vo.order.RepairOrderListVo; import com.hcy.admin.vo.order.RepairOrderDetailVo; import com.hcy.common.core.AjaxResult; @@ -23,7 +19,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; -import java.util.Map; /** * 维修订单管理 @@ -158,4 +153,10 @@ public class RepairOrderController { log.error("报表导出异常:", e); } } + + @ApiOperation(value = "模块管理 - 导出模块维修报表 - 按模版导出") + @PostMapping(value="/exportModuleMaintenanceExcelTemplate") + public void exportModuleMaintenanceExcelTemplate(@Validated @RequestBody RepairOrderParam params, HttpServletResponse response) { + iRepairOrderService.getExportModuleMaintenanceExcelTemplate(params,response); + } } diff --git a/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java b/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java index 3432003..6a15e59 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java +++ b/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java @@ -2,6 +2,7 @@ package com.hcy.admin.service.order; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.order.RepairOrderParam; +import com.hcy.admin.vo.excel.ModuleMaintenanceExcel; import com.hcy.admin.vo.order.RepairOrderListVo; import com.hcy.admin.vo.order.RepairOrderDetailVo; import com.hcy.common.core.PageResult; @@ -80,4 +81,11 @@ public interface IRepairOrderService { * @return */ List getExportModuleMaintenanceExcel(RepairOrderParam params); + + /** + * 导出模块维修报表 - 按模版导出 + * @param params + * @return + */ + void getExportModuleMaintenanceExcelTemplate(RepairOrderParam params,HttpServletResponse response); } diff --git a/admin/src/main/java/com/hcy/admin/service/order/RepairOrderExcel.java b/admin/src/main/java/com/hcy/admin/service/order/RepairOrderExcel.java index f2c61e2..6182541 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/RepairOrderExcel.java +++ b/admin/src/main/java/com/hcy/admin/service/order/RepairOrderExcel.java @@ -1,12 +1,21 @@ package com.hcy.admin.service.order; import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; -import com.hcy.common.entity.order.OrderPartCode; +import com.alibaba.excel.annotation.write.style.*; + +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.FillPatternTypeEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.alibaba.excel.enums.poi.VerticalAlignmentEnum; +import com.hcy.common.utils.excel.ImageUrlConverter; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; import java.io.Serializable; +import java.net.URL; import java.util.Date; import java.util.List; @@ -14,6 +23,18 @@ import java.util.List; * RepairOrderExcel */ @Data +@Builder +@NoArgsConstructor +@Accessors(chain = true) +@AllArgsConstructor +// 头背景设置 +//@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, horizontalAlignment = HorizontalAlignmentEnum.CENTER, borderLeft = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN) +//标题高度 +@HeadRowHeight(20) +//内容高度 +@ContentRowHeight(120) +//内容居中,左、上、右、下的边框显示 +@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, borderLeft = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN) public class RepairOrderExcel implements Serializable { @@ -21,27 +42,38 @@ public class RepairOrderExcel implements Serializable { private String orderNo; // 订单编号*/ @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"模块号"}, index = 0) - private String moduleNumber; // 模块号 + @ExcelProperty(value = {"客户名称"}, index = 0) + private String clientName; // 客户名称 + @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"模块代码"}, index = 1) + @ExcelProperty(value = {"模块号"}, index = 1) private String moduleCode; // 模块代码 + @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"发现时间"}, index = 2) + @ExcelProperty(value = {"模块型号"}, index = 2) + private String moduleNumber; // 模块型号 + + @ColumnWidth(20) // 定义列宽 + @ExcelProperty(value = {"发现时间"}, index = 3) private Date createTime; // 创建时间 + @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"维修前(现场图片)"}, index = 3) - private String preMaintenanceImg; // 维修前照片 + @ExcelProperty(value = {"维修前(现场图片)"}, index = 4, converter = ImageUrlConverter.class) + private List preMaintenanceImg; // 维修前照片 + @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"维修中"}, index = 4) - private String inMaintenanceImg; // 维修中照片 + @ExcelProperty(value = {"维修中"}, index = 5, converter = ImageUrlConverter.class) + private List inMaintenanceImg; // 维修中照片 + @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"维修后"}, index = 5) - private String afterRepairImg; // 维修后照片 + @ExcelProperty(value = {"维修后"}, index = 6, converter = ImageUrlConverter.class) + private List afterRepairImg; // 维修后照片 + @ColumnWidth(20) // 定义列宽 - @ExcelProperty(value = {"故障原因"}, index = 6) + @ExcelProperty(value = {"故障原因"}, index = 7) private String faultName; //故障名称 - @ExcelProperty(value = {"是否报废"}, index = 7) + + @ExcelProperty(value = {"是否报废"}, index = 8) private String scrapOrNot; // 是否报废(0=是,1=否) } diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java index 61a3e45..d4e5a2d 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java @@ -1,5 +1,9 @@ package com.hcy.admin.service.order.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -15,6 +19,7 @@ import com.hcy.admin.validate.order.RepairOrderParam; import com.hcy.admin.validate.order.RoutingInspectionOrderParam; import com.hcy.admin.vo.address.UserAddressListVo; import com.hcy.admin.vo.client.EquipmentListVo; +import com.hcy.admin.vo.excel.ModuleMaintenanceExcel; import com.hcy.admin.vo.order.OrderSparePartListVo; import com.hcy.admin.vo.order.RepairOrderListVo; import com.hcy.admin.vo.order.RepairOrderDetailVo; @@ -48,16 +53,26 @@ import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.mapper.warehouse.WarehouseMapper; import com.hcy.common.utils.ArrayUtil; +import com.hcy.common.utils.StringUtil; import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.UrlUtil; import com.hcy.common.config.GlobalConfig; +import com.hcy.common.utils.excel.CustomImageModifyStrategy; +import com.hcy.common.utils.excel.EasyExcelUtil; +import com.hcy.common.utils.excel.LocalImageModifyStrategy; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.math.BigDecimal; +import java.net.URL; import java.text.SimpleDateFormat; import java.util.*; @@ -669,6 +684,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { BeanUtils.copyProperties(params,repairOrderDto); List resultDtoList = repairOrderMapper.getExportModuleMaintenanceExcel(repairOrderDto); + List list = new LinkedList<>(); for (RepairOrderDto item : resultDtoList) { @@ -681,21 +697,55 @@ public class RepairOrderServiceImpl implements IRepairOrderService { .eq(RepairOrderStepData::getRepairOrderId, item.getId()) .eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.PRE_MAINTENANCE_IMG.getStatus())); if(preMaintenanceImg != null){ - repairOrderExcel.setPreMaintenanceImg(preMaintenanceImg.getImg()); + try{ + List imgList1 = new ArrayList<>(); + String[] arr = preMaintenanceImg.getImg().split(","); + for (String s : arr) { + System.out.println(s); + imgList1.add(new URL(s)); + } + + repairOrderExcel.setPreMaintenanceImg(imgList1); + }catch (Exception e) { + System.out.println("导出异常"); + } + } //返回维修中照片 RepairOrderStepData inMaintenanceImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper() .eq(RepairOrderStepData::getRepairOrderId, item.getId()) .eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.IN_MAINTENANCE_IMG.getStatus())); if(inMaintenanceImg != null){ - repairOrderExcel.setInMaintenanceImg(inMaintenanceImg.getImg()); + try{ + List imgList1 = new ArrayList<>(); + String[] arr = inMaintenanceImg.getImg().split(","); + for (String s : arr) { + System.out.println(s); + imgList1.add(new URL(s)); + } + + repairOrderExcel.setInMaintenanceImg(imgList1); + }catch (Exception e) { + System.out.println("导出异常"); + } } //返回维修后照片 RepairOrderStepData afterRepairImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper() .eq(RepairOrderStepData::getRepairOrderId, item.getId()) .eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.AFTER_REPAIR_IMG.getStatus())); if(afterRepairImg != null){ - repairOrderExcel.setAfterRepairImg(afterRepairImg.getImg()); + try{ + List imgList1 = new ArrayList<>(); + String[] arr = afterRepairImg.getImg().split(","); + for (String s : arr) { + System.out.println(s); + imgList1.add(new URL(s)); + } + + repairOrderExcel.setAfterRepairImg(imgList1); + }catch (Exception e) { + System.out.println("导出异常"); + } } //故障类型名称 @@ -722,5 +772,138 @@ public class RepairOrderServiceImpl implements IRepairOrderService { return list; } + /** + * 导出模块维修报表 - 按模版导出 + * + * @param params + * @return + */ + @Override + public void getExportModuleMaintenanceExcelTemplate(RepairOrderParam params, HttpServletResponse response) { + RepairOrderDto repairOrderDto = new RepairOrderDto(); + BeanUtils.copyProperties(params,repairOrderDto); + + List resultDtoList = repairOrderMapper.getExportModuleMaintenanceExcel(repairOrderDto); + + List list = new LinkedList<>(); + + for (RepairOrderDto item : resultDtoList) { + ModuleMaintenanceExcel repairOrderExcel = new ModuleMaintenanceExcel(); + BeanUtils.copyProperties(item, repairOrderExcel); + + //返回前中后照片 + //返回维修前照片 + RepairOrderStepData preMaintenanceImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper() + .eq(RepairOrderStepData::getRepairOrderId, item.getId()) + .eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.PRE_MAINTENANCE_IMG.getStatus())); + if(preMaintenanceImg != null){ + try{ + List imgList1 = new ArrayList<>(); + String[] arr = preMaintenanceImg.getImg().split(","); + for (String s : arr) { + System.out.println(s); + imgList1.add(new URL(s)); + } + + repairOrderExcel.setPreMaintenanceImg(imgList1); + }catch (Exception e) { + System.out.println("导出异常"); + } + + } + //返回维修中照片 + RepairOrderStepData inMaintenanceImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper() + .eq(RepairOrderStepData::getRepairOrderId, item.getId()) + .eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.IN_MAINTENANCE_IMG.getStatus())); + if(inMaintenanceImg != null){ + try{ + List imgList1 = new ArrayList<>(); + String[] arr = inMaintenanceImg.getImg().split(","); + for (String s : arr) { + System.out.println(s); + imgList1.add(new URL(s)); + } + + repairOrderExcel.setInMaintenanceImg(imgList1); + }catch (Exception e) { + System.out.println("导出异常"); + } + } + //返回维修后照片 + RepairOrderStepData afterRepairImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper() + .eq(RepairOrderStepData::getRepairOrderId, item.getId()) + .eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.AFTER_REPAIR_IMG.getStatus())); + if(afterRepairImg != null){ + try{ + List imgList1 = new ArrayList<>(); + String[] arr = afterRepairImg.getImg().split(","); + for (String s : arr) { + System.out.println(s); + imgList1.add(new URL(s)); + } + + repairOrderExcel.setAfterRepairImg(imgList1); + }catch (Exception e) { + System.out.println("导出异常"); + } + } + + //故障类型名称 + Fault faultName = faultMapper.selectOne( + new LambdaQueryWrapper() + .eq(Fault::getId, item.getFaultId())); + if(faultName != null){ + repairOrderExcel.setFaultName(faultName.getName()); + } + + // scrapOrNot 是否报废(0=是,1=否) + if(item.getScrapOrNot() != null){ + if(item.getScrapOrNot() == 0){ + repairOrderExcel.setScrapOrNot("是"); + } else if (item.getScrapOrNot() == 1) { + repairOrderExcel.setScrapOrNot("否"); + } + } + + //制单人、制单时间 + repairOrderExcel.setDocumentationName(String.valueOf(AdminThreadLocal.get("username"))); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + repairOrderExcel.setDocumentationTime(sdf.format(new Date())); + list.add(repairOrderExcel); + } + + try { + ServletOutputStream out = response.getOutputStream(); + + EasyExcelUtil.initResponse(response, "模块维修报表"); + + // 文件模板输入流,将 excel 模板放到 resources 目录下 + InputStream templateFile = new ClassPathResource("templates/excel/ModuleMaintenance-template.xlsx").getInputStream(); + + ExcelWriter writer = EasyExcel + .write(out) + .withTemplate(templateFile) + // 使用图片处理策略 + .registerWriteHandler( + // 设置每张图片的宽度为 200px,转换因子为 32 + new LocalImageModifyStrategy(100, 32)) + .build(); + + WriteSheet sheet = EasyExcel.writerSheet().build(); + + // 填充配置,开启组合填充换行 + FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); + + // 填充列表占位符 + writer.fill(list, fillConfig, sheet); + + //填充完成 + writer.finish(); + } catch (Exception e) { + System.out.println("导出异常:" + e); + } + + } + } diff --git a/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java b/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java index 23c2501..fdc1ae6 100644 --- a/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java @@ -105,6 +105,7 @@ public class MaintenanceOrderParam implements Serializable { private String createTimeStart; //报修开始时间 private String createTimeEnd; //报修结束时间 + private String completeImg; // 完工照片 private String createImg; // 创建照片 } diff --git a/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java b/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java index 99be23f..bb1303b 100644 --- a/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java @@ -9,6 +9,7 @@ import javax.validation.constraints.*; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 维修订单参数 @@ -107,4 +108,7 @@ public class RepairOrderParam implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer timeoutOrNot; // 是否超时(0=是,1=否) + + private List ids; //批量操作 + } diff --git a/admin/src/main/java/com/hcy/admin/vo/excel/ModuleMaintenanceExcel.java b/admin/src/main/java/com/hcy/admin/vo/excel/ModuleMaintenanceExcel.java new file mode 100644 index 0000000..0419b7b --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/excel/ModuleMaintenanceExcel.java @@ -0,0 +1,54 @@ +package com.hcy.admin.vo.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.hcy.common.utils.excel.DownloadUrlConverter; +import com.hcy.common.utils.excel.ImageUrlConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.net.URL; +import java.util.Date; +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModuleMaintenanceExcel { + + @ApiModelProperty(value = "客户名称") + private String clientName; // 客户名称 + + @ApiModelProperty(value = "模块代码") + private String moduleCode; // 模块代码 + + @ApiModelProperty(value = "模块型号") + private String moduleNumber; // 模块型号 + + @ApiModelProperty(value = "创建时间") + private Date createTime; // 创建时间 + + @ApiModelProperty(value = "维修前照片") + @ExcelProperty(value = {"维修前(现场图片)"}, converter = DownloadUrlConverter.class) + private List preMaintenanceImg; // 维修前照片 + + @ApiModelProperty(value = "维修中照片") + @ExcelProperty(value = {"维修中照片"}, converter = DownloadUrlConverter.class) + private List inMaintenanceImg; // 维修中照片 + + @ApiModelProperty(value = "维修后照片") + @ExcelProperty(value = {"维修后照片"}, converter = DownloadUrlConverter.class) + private List afterRepairImg; // 维修后照片 + + @ApiModelProperty(value = "故障名称") + private String faultName; //故障名称 + + @ApiModelProperty(value = "是否报废") + private String scrapOrNot; // 是否报废(0=是,1=否) + + private String documentationTime; // 制单日期 + private String documentationName; // 制单人 +} diff --git a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java index 8bbe532..51f9a16 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java @@ -71,6 +71,7 @@ public class MaintenanceOrderDetailVo implements Serializable { private Date quotationTime; //报价时间 private Integer receiveStatus; // 配件领用状态(0=未审核,1=审核未通过,2=待领取,3=待确认,4=已完成) + private String completeImg; // 完工照片 private String createImg; // 创建照片 } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java index e90b318..407336f 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java @@ -58,6 +58,7 @@ public class MaintenanceOrderListVo implements Serializable { private String shortName; //客户简称 private EquipmentModelDetailVo equipmentModel; //设备模块信息 private Integer receiveStatus; // 配件领用状态(0=未审核,1=审核未通过,2=待领取,3=待确认,4=已完成) + private String completeImg; // 完工照片 private String createImg; // 创建照片 diff --git a/admin/src/main/resources/application-dev.yml b/admin/src/main/resources/application-dev.yml index 8a0743c..e599a5d 100644 --- a/admin/src/main/resources/application-dev.yml +++ b/admin/src/main/resources/application-dev.yml @@ -12,6 +12,11 @@ spring: driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 password: hcy123456 +# url: jdbc:mysql://120.77.216.5:3306/charging-pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false +# type: com.zaxxer.hikari.HikariDataSource # 数据源类型 +# driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 +# username: charging-pile # 数据库账号 +# password: FZcP7eFwN4T5jkXz # Redis配置 redis: host: localhost # Redis服务地址 diff --git a/admin/src/main/resources/application.yml b/admin/src/main/resources/application.yml index 87f3e4f..7f5054e 100644 --- a/admin/src/main/resources/application.yml +++ b/admin/src/main/resources/application.yml @@ -29,6 +29,11 @@ spring: driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 password: hcy123456 +# url: jdbc:mysql://120.77.216.5:3306/charging-pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false +# type: com.zaxxer.hikari.HikariDataSource # 数据源类型 +# driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 +# username: charging-pile # 数据库账号 +# password: FZcP7eFwN4T5jkXz hikari: connection-timeout: 30000 # 等待连接分配连接的最大时长(毫秒),超出时长还没可用连接则发送SQLException,默认30秒 minimum-idle: 5 # 最小连接数 diff --git a/admin/src/main/resources/templates/excel/ModuleMaintenance-template.xlsx b/admin/src/main/resources/templates/excel/ModuleMaintenance-template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4e50be93ad867d65f539c46d389ff5c95939ec5a GIT binary patch literal 190853 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 Lo?2%C8AAC#qS|Hp literal 0 HcmV?d00001 diff --git a/common/pom.xml b/common/pom.xml index 5b18d54..ab74b75 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -268,6 +268,12 @@ org.apache.tomcat.embed tomcat-embed-core + + com.alibaba + easyexcel-core + 3.3.4 + compile + diff --git a/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java b/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java index 9a2eef0..9c4248b 100644 --- a/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java +++ b/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java @@ -88,4 +88,7 @@ public class RepairOrderDto implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer timeoutOrNot; // 是否超时(0=是,1=否) + + private List ids; //批量操作 + } diff --git a/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java b/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java index e1ffc33..7b3a670 100644 --- a/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java +++ b/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java @@ -38,9 +38,13 @@ public class RoutingInspectionOrder implements Serializable { private BigDecimal orderDistance; // 订单距离 private BigDecimal totalAmount; // 总金额 private BigDecimal actualAmount; // 实际金额 + + @TableField(value = "receiver_id",updateStrategy = FieldStrategy.IGNORED) private Long receiverId; // 接单人id private Long repairId; // 返修id + @TableField(value = "receiver_time",updateStrategy = FieldStrategy.IGNORED) private Date receiverTime; // 接单时间 + private Date cancelOrderTime; // 取消订单时间 private String cancelCause; // 取消原因 private String refuseMaintenanceCause; // 拒绝维修原因 diff --git a/common/src/main/java/com/hcy/common/utils/ExcelUtils.java b/common/src/main/java/com/hcy/common/utils/ExcelUtils.java index f6873f8..cdf0eb0 100644 --- a/common/src/main/java/com/hcy/common/utils/ExcelUtils.java +++ b/common/src/main/java/com/hcy/common/utils/ExcelUtils.java @@ -1,8 +1,16 @@ package com.hcy.common.utils; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.metadata.style.WriteFont; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.hcy.common.utils.excel.CustomImageModifyStrategy; +import com.hcy.common.utils.excel.MonthSheetWriteHandler; import lombok.extern.slf4j.Slf4j; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.util.IOUtils; import javax.servlet.ServletOutputStream; @@ -49,7 +57,21 @@ public class ExcelUtils { // 这里URLEncoder.encode可以防止中文乱码 excelName = URLEncoder.encode(excelName, "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue()); - EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(data); + + EasyExcel.write(response.getOutputStream(), clazz) + .autoCloseStream(true) + //设置输出excel版本,不设置默认为xlsx + .excelType(ExcelTypeEnum.XLSX).head(clazz) + //设置拦截器或自定义样式 + .registerWriteHandler(new MonthSheetWriteHandler()) + // 使用图片处理策略 + .registerWriteHandler( + // 设置每张图片的宽度为 200px,转换因子为 32 + new CustomImageModifyStrategy(200, 32)) + .sheet(sheetName) + //设置默认样式及写入头信息开始的行数 + .useDefaultStyle(true).relativeHeadRowIndex(6) + .doWrite(data); } /** diff --git a/common/src/main/java/com/hcy/common/utils/excel/CustomImageModifyStrategy.java b/common/src/main/java/com/hcy/common/utils/excel/CustomImageModifyStrategy.java new file mode 100644 index 0000000..b0caa3d --- /dev/null +++ b/common/src/main/java/com/hcy/common/utils/excel/CustomImageModifyStrategy.java @@ -0,0 +1,190 @@ +package com.hcy.common.utils.excel; + +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.ImageData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.util.Units; +import org.apache.poi.xssf.usermodel.XSSFDrawing; +import org.apache.poi.xssf.usermodel.XSSFPicture; +import org.apache.poi.xssf.usermodel.XSSFShape; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Excel导出单元格中有图片,图片会进行压缩,缩略,插入单元格 + * 注意: + * - 该策略是复制原表格中的图片进行缩放,原图片并没有删除掉,而是将尺寸设置为 0 看不到而已,但是依旧占用空间 + * - 且在多 sheet 的环境下,除第一个 sheet,其余的 sheet 图片会被置 0 + * 目前上述问题并没有得到解决,如果在导出数据较多或者存在多个 sheet 的情况下不建议使用 + */ +public class CustomImageModifyStrategy implements CellWriteHandler { + + /** + * 已经处理的Cell + */ + private final CopyOnWriteArrayList REPEATS = new CopyOnWriteArrayList<>(); + + /** + * 单元格的图片最大张数(每列的单元格图片张数不确定,单元格宽度需按照张数最多的长度来设置) + */ + private final AtomicReference MAX_IMAGE_SIZE = new AtomicReference<>(0); + + /** + * 标记手动添加的图片,用于排除EasyExcel自动添加的图片 + */ + private final CopyOnWriteArrayList CREATE_PIC_INDEX = new CopyOnWriteArrayList<>(); + + /** + * 默认图片宽度(单位像素):60 + */ + private final static int DEFAULT_IMAGE_WIDTH = 60; + + /** + * 默认像素转换因子:32 + */ + private final static int DEFAULT_PIXEL_CONVERSION_FACTOR = 32; + + /** + * 图片宽度,单位像素 + */ + private final int imageWidth; + + /** + * 像素转换因子 + */ + private final int pixelConversionFactor; + + public CustomImageModifyStrategy() { + this.imageWidth = DEFAULT_IMAGE_WIDTH; + this.pixelConversionFactor = DEFAULT_PIXEL_CONVERSION_FACTOR; + } + + public CustomImageModifyStrategy(int imageWidth, int pixelConversionFactor) { + this.imageWidth = imageWidth; + this.pixelConversionFactor = pixelConversionFactor; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, WriteCellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 在数据转换成功后 不是头就把类型设置成空 + if (isHead) { + return; + } + //将要插入图片的单元格的type设置为空,下面再填充图片 + if (!CollectionUtils.isEmpty(cellData.getImageDataList())) { + cellData.setType(CellDataTypeEnum.EMPTY); + } + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 在 单元格写入完毕后 ,自己填充图片 + if (isHead || CollectionUtils.isEmpty(cellDataList)) { + return; + } + boolean listFlag = false; + Sheet sheet = cell.getSheet(); + List imageDataList = cellDataList.get(0).getImageDataList(); + if (!CollectionUtils.isEmpty(imageDataList)) { + listFlag = true; + } + if (!listFlag && imageDataList == null) { + return; + } + String key = cell.getRowIndex() + "_" + cell.getColumnIndex(); + if (REPEATS.contains(key)) { + return; + } + REPEATS.add(key); + if (imageDataList.size() > MAX_IMAGE_SIZE.get()) { + MAX_IMAGE_SIZE.set(imageDataList.size()); + } + + int widthValue = imageWidth * pixelConversionFactor; + sheet.setColumnWidth(cell.getColumnIndex(), listFlag ? widthValue * MAX_IMAGE_SIZE.get() + pixelConversionFactor : widthValue); + + if (listFlag) { + for (int i = 0; i < imageDataList.size(); i++) { + ImageData imageData = imageDataList.get(i); + if (imageData == null) { + continue; + } + byte[] image = imageData.getImage(); + int index = this.insertImage(sheet, cell, image, i); + CREATE_PIC_INDEX.add(index); + } + } else { + this.insertImage(sheet, cell, imageDataList.get(0).getImage(), 0); + } + + // 清除EasyExcel自动添加的没有格式的图片 + XSSFDrawing drawingPatriarch = (XSSFDrawing) sheet.getDrawingPatriarch(); + List shapes = drawingPatriarch.getShapes(); + for (int i = 0; i < shapes.size(); i++) { + XSSFShape shape = shapes.get(i); + if (shape instanceof XSSFPicture && !CREATE_PIC_INDEX.contains(i)) { + CREATE_PIC_INDEX.add(i); + XSSFPicture picture = (XSSFPicture) shape; + // 这里只是将图片的大小设置为 0,所以表格依旧会存放该图片 + picture.resize(0); + } + } + } + + /** + * 重新插入一个图片 + * + * @param sheet Excel页面 + * @param cell 表格元素 + * @param pictureData 图片数据 + * @param i 图片顺序 + */ + public int insertImage(Sheet sheet, Cell cell, byte[] pictureData, int i) { + int picWidth = Units.pixelToEMU(imageWidth); + int index = sheet.getWorkbook().addPicture(pictureData, HSSFWorkbook.PICTURE_TYPE_PNG); + Drawing drawing = sheet.getDrawingPatriarch(); + if (drawing == null) { + drawing = sheet.createDrawingPatriarch(); + } + CreationHelper helper = sheet.getWorkbook().getCreationHelper(); + ClientAnchor anchor = helper.createClientAnchor(); + /* + * 设置图片坐标 + * 为了不让图片遮挡单元格的上边框和右边框,故 x1、x2、y1 这几个坐标点均向后移动了一个像素点 + */ + anchor.setDx1(Units.pixelToEMU(1) + picWidth * i); + anchor.setDx2(Units.pixelToEMU(1) + picWidth + picWidth * i); + anchor.setDy1(Units.pixelToEMU(1)); + anchor.setDy2(0); + //设置图片位置 + int columnIndex = cell.getColumnIndex(); + anchor.setCol1(columnIndex); + anchor.setCol2(columnIndex); + int rowIndex = cell.getRowIndex(); + anchor.setRow1(rowIndex); + anchor.setRow2(rowIndex + 1); + anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE); + drawing.createPicture(anchor, index); + return index; + } + +} diff --git a/common/src/main/java/com/hcy/common/utils/excel/DownloadUrlConverter.java b/common/src/main/java/com/hcy/common/utils/excel/DownloadUrlConverter.java new file mode 100644 index 0000000..0485f4f --- /dev/null +++ b/common/src/main/java/com/hcy/common/utils/excel/DownloadUrlConverter.java @@ -0,0 +1,105 @@ +package com.hcy.common.utils.excel; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.alibaba.excel.util.ListUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; + +import java.io.*; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; + +/** + * 该类主要是将 URL 资源下载到本地磁盘,需要配合 LocalImageModifyStrategy 使用 + */ +@Slf4j +public class DownloadUrlConverter implements Converter> { + + + @Override + public Class supportJavaTypeKey() { + return List.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.EMPTY; + } + + @Override + public List convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + return null; + } + + @Override + public WriteCellData convertToExcelData(List value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + // 这里进行对数据实体类URL集合处理 + List filePaths = ListUtils.newArrayList(); + // 下载文件存放地址 + String folder = System.getProperty("java.io.tmpdir") + File.separator + "excel-temp" + File.separator; + // for 循环一次读取 + for (URL url : value) { + String path = url.getPath(); + String suffix = path.substring(path.indexOf(".")); + long millis = System.currentTimeMillis(); + String fileName = millis + suffix; + String filePath = folder + fileName; + // 下载文件到本地 + try { + this.downloadURL(url, filePath); + filePaths.add(filePath); + log.info("The temporary file storage path: " + filePath); + } catch (Exception e) { + e.printStackTrace(); + } + } + WriteCellData cellData = new WriteCellData<>(); + if (!CollectionUtils.isEmpty(filePaths)) { + // 图片返回图片列表 + cellData.setStringValue("Files:" + String.join(",", filePaths)); + cellData.setType(CellDataTypeEnum.EMPTY); + } else { + cellData.setType(CellDataTypeEnum.STRING); + } + return cellData; + } + + /** + * 从 URL 中下载文件到指定路径 + * @param url 统一资源定位符 + * @param savePath 存放路径 + */ + private void downloadURL(URL url, String savePath) throws IOException { + + URLConnection connection = url.openConnection(); + connection.connect(); + InputStream inputStream = new BufferedInputStream(connection.getInputStream()); + + File file = new File(savePath); + if (!file.getParentFile().exists()) { + if (file.getParentFile().mkdirs()) { + log.info("parent file had created."); + } + } + + OutputStream outputStream = new FileOutputStream(savePath); + + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + + inputStream.close(); + outputStream.close(); + + log.info("Image downloaded successfully!"); + } + +} diff --git a/common/src/main/java/com/hcy/common/utils/excel/EasyExcelUtil.java b/common/src/main/java/com/hcy/common/utils/excel/EasyExcelUtil.java new file mode 100644 index 0000000..fd8cbfd --- /dev/null +++ b/common/src/main/java/com/hcy/common/utils/excel/EasyExcelUtil.java @@ -0,0 +1,27 @@ +package com.hcy.common.utils.excel; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +public class EasyExcelUtil { + + /** + * 初始化响应体 + * @param response 请求头 + * @param fileName 导出名称 + */ + public static void initResponse(HttpServletResponse response, String fileName) { + // 设置content—type 响应类型 + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + try { + // 这里URLEncoder.encode可以防止中文乱码 + fileName = URLEncoder.encode(fileName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + } +} + diff --git a/common/src/main/java/com/hcy/common/utils/excel/ImageUrlConverter.java b/common/src/main/java/com/hcy/common/utils/excel/ImageUrlConverter.java new file mode 100644 index 0000000..2c69d59 --- /dev/null +++ b/common/src/main/java/com/hcy/common/utils/excel/ImageUrlConverter.java @@ -0,0 +1,65 @@ +package com.hcy.common.utils.excel; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ImageData; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.alibaba.excel.util.IoUtils; +import com.alibaba.excel.util.ListUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; +import java.io.InputStream; +import java.net.URL; +import java.util.List; + +@Slf4j +public class ImageUrlConverter implements Converter> { + + @Override + public Class supportJavaTypeKey() { + return List.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.EMPTY; + } + + @Override + public List convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + return null; + } + + @Override + public WriteCellData convertToExcelData(List value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + // 这里进行对数据实体类URL集合处理 + List data = ListUtils.newArrayList(); + ImageData imageData; + // for 循环一次读取 + for (URL url : value) { + try (InputStream inputStream = url.openStream();) { + byte[] bytes = IoUtils.toByteArray(inputStream); + imageData = new ImageData(); + imageData.setImage(bytes); + data.add(imageData); + } catch (Exception e) { + log.error("导出临时记录图片异常:", e); + } + } + WriteCellData cellData = new WriteCellData<>(); + if (!CollectionUtils.isEmpty(data)) { + // 图片返回图片列表 + cellData.setImageDataList(data); + cellData.setType(CellDataTypeEnum.EMPTY); + } else { + // 没有图片使用汉字表示 + cellData.setStringValue("无图"); + cellData.setType(CellDataTypeEnum.STRING); + } + return cellData; + } +} + diff --git a/common/src/main/java/com/hcy/common/utils/excel/LocalImageModifyStrategy.java b/common/src/main/java/com/hcy/common/utils/excel/LocalImageModifyStrategy.java new file mode 100644 index 0000000..59e06ae --- /dev/null +++ b/common/src/main/java/com/hcy/common/utils/excel/LocalImageModifyStrategy.java @@ -0,0 +1,154 @@ +package com.hcy.common.utils.excel; + +import cn.hutool.core.io.FileUtil; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.util.Units; +import org.springframework.util.CollectionUtils; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Excel导出单元格中有图片,图片会进行压缩,缩略,插入单元格(通过读取本地文件的方式) + * 需要搭配 DownloadUrlConverter 使用 + */ +public class LocalImageModifyStrategy implements CellWriteHandler { + + /** + * 单元格的图片最大张数(每列的单元格图片张数不确定,单元格宽度需按照张数最多的长度来设置) + */ + private final AtomicReference MAX_IMAGE_SIZE = new AtomicReference<>(0); + + /** + * 默认图片宽度(单位像素):60 + */ + private final static int DEFAULT_IMAGE_WIDTH = 60; + + /** + * 默认像素转换因子:32 + */ + private final static int DEFAULT_PIXEL_CONVERSION_FACTOR = 32; + + /** + * 图片宽度,单位像素 + */ + private final int imageWidth; + + /** + * 像素转换因子 + */ + private final int pixelConversionFactor; + + public LocalImageModifyStrategy() { + this.imageWidth = DEFAULT_IMAGE_WIDTH; + this.pixelConversionFactor = DEFAULT_PIXEL_CONVERSION_FACTOR; + } + + public LocalImageModifyStrategy(int imageWidth, int pixelConversionFactor) { + this.imageWidth = imageWidth; + this.pixelConversionFactor = pixelConversionFactor; + } + + @Override + public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, WriteCellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 在数据转换成功后 不是头就把类型设置成空 + if (isHead) { + return; + } + //将要插入图片的单元格的type设置为空,下面再填充图片 + if (!CollectionUtils.isEmpty(cellData.getImageDataList())) { + cellData.setType(CellDataTypeEnum.EMPTY); + } + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 在单元格写入完毕后 ,自己填充图片 + if (isHead || CollectionUtils.isEmpty(cellDataList)) { + return; + } + boolean imgFlag = false; + Sheet sheet = cell.getSheet(); + WriteCellData writeCellData = cellDataList.get(0); + CellDataTypeEnum type = writeCellData.getType(); + if (type != CellDataTypeEnum.EMPTY) { + return; + } + String stringValue = writeCellData.getStringValue(); + if (stringValue == null) { + return; + } + // 判断是否属于文件 + if (stringValue.startsWith("Files:")) { + imgFlag = true; + stringValue = stringValue.replace("Files:", ""); + } + if (!imgFlag) { + return; + } + List filePaths = Arrays.asList(stringValue.split(",")); + + if (filePaths.size() > MAX_IMAGE_SIZE.get()) { + MAX_IMAGE_SIZE.set(filePaths.size()); + } + + int widthValue = imageWidth * pixelConversionFactor; + sheet.setColumnWidth(cell.getColumnIndex(), widthValue * MAX_IMAGE_SIZE.get() + pixelConversionFactor); + + for (int i = 0; i < filePaths.size(); i++) { + String filePath = filePaths.get(i); + // todo 这里可以对图片作一些处理,比如说压缩 + // ... + // 读取文件 + byte[] image = FileUtil.readBytes(filePath); + this.insertImage(sheet, cell, image, i); + } + } + + + /** + * 重新插入一个图片 + * + * @param sheet Excel页面 + * @param cell 表格元素 + * @param pictureData 图片数据 + * @param i 图片顺序 + */ + public int insertImage(Sheet sheet, Cell cell, byte[] pictureData, int i) { + int picWidth = Units.pixelToEMU(imageWidth); + int index = sheet.getWorkbook().addPicture(pictureData, HSSFWorkbook.PICTURE_TYPE_PNG); + Drawing drawing = sheet.getDrawingPatriarch(); + if (drawing == null) { + drawing = sheet.createDrawingPatriarch(); + } + CreationHelper helper = sheet.getWorkbook().getCreationHelper(); + ClientAnchor anchor = helper.createClientAnchor(); + /* + * 设置图片坐标 + * 为了不让图片遮挡单元格的上边框和右边框,故 x1、x2、y1 这几个坐标点均向后移动了一个像素点 + */ + anchor.setDx1(Units.pixelToEMU(1) + picWidth * i); + anchor.setDx2(Units.pixelToEMU(1) + picWidth + picWidth * i); + anchor.setDy1(Units.pixelToEMU(1)); + anchor.setDy2(0); + //设置图片位置 + int columnIndex = cell.getColumnIndex(); + anchor.setCol1(columnIndex); + anchor.setCol2(columnIndex); + int rowIndex = cell.getRowIndex(); + anchor.setRow1(rowIndex); + anchor.setRow2(rowIndex + 1); + anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE); + drawing.createPicture(anchor, index); + return index; + } +} + diff --git a/common/src/main/java/com/hcy/common/utils/excel/MonthSheetWriteHandler.java b/common/src/main/java/com/hcy/common/utils/excel/MonthSheetWriteHandler.java new file mode 100644 index 0000000..a1dd6dd --- /dev/null +++ b/common/src/main/java/com/hcy/common/utils/excel/MonthSheetWriteHandler.java @@ -0,0 +1,123 @@ +package com.hcy.common.utils.excel; + +import com.alibaba.excel.write.handler.SheetWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; + +public class MonthSheetWriteHandler implements SheetWriteHandler { + @Override + public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { + + } + + @Override + public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { + Workbook workbook = writeWorkbookHolder.getWorkbook(); + Sheet sheet = workbook.getSheetAt(0); + + Row row = sheet.createRow(0); + Cell cell = row.createCell(0); + //标题1,设置单元格内容 + cell.setCellValue("深圳创先捷智能科技有限公司"); + CellStyle cellStyleTitle = workbook.createCellStyle(); + cellStyleTitle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置居中 + cellStyleTitle.setAlignment(HorizontalAlignment.CENTER); // 设置居中 + Font fontTitle = workbook.createFont(); + fontTitle.setFontName("宋体"); // 设置字体 + fontTitle.setBold(true); // 设置字体加粗 + fontTitle.setFontHeightInPoints((short)18);// 设置字体大小 +// fontTitle.setFontHeight((short) 360); + cellStyleTitle.setFont(fontTitle); + cell.setCellStyle(cellStyleTitle); + //合并单元格,起始行,结束行,起始列,结束列 + sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 0, 0, 8)); + + //设置标题 + Row row1 = sheet.createRow(1); + Cell cell1 = row1.createCell(0); + cell1.setCellValue("地址:深圳市宝安区石岩街道塘头第三工业区二栋"); + CellStyle cellStyle = workbook.createCellStyle(); + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Font font = workbook.createFont(); + font.setFontName("宋体"); // 设置字体 + font.setBold(true); + font.setFontHeightInPoints((short)11);// 设置字体大小 +// font.setFontHeight((short) 220); + cellStyle.setFont(font); + cell1.setCellStyle(cellStyle); + //合并单元格,起始行,结束行,起始列,结束列 + sheet.addMergedRegionUnsafe(new CellRangeAddress(1, 1, 0, 8)); + + //设置标题 + Row row2 = sheet.createRow(2); + Cell cell2 = row2.createCell(0); + cell2.setCellValue("电话:0755-26009122 26009366 传真:26009133"); + CellStyle cellStyle2 = workbook.createCellStyle(); + cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER); + cellStyle2.setAlignment(HorizontalAlignment.CENTER); + Font font2 = workbook.createFont(); + font2.setFontName("宋体"); // 设置字体 + font2.setBold(true); + font2.setFontHeightInPoints((short)11);// 设置字体大小 +// font2.setFontHeight((short) 220); + cellStyle2.setFont(font2); + cell2.setCellStyle(cellStyle2); + //合并单元格,起始行,结束行,起始列,结束列 + sheet.addMergedRegionUnsafe(new CellRangeAddress(2, 2, 0, 8)); + + //设置标题 + Row row3 = sheet.createRow(3); + Cell cell3 = row3.createCell(0); + cell3.setCellValue("模块维修报表"); + CellStyle cellStyle3 = workbook.createCellStyle(); + cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER); + cellStyle3.setAlignment(HorizontalAlignment.CENTER); + Font font3 = workbook.createFont(); + font3.setFontName("宋体"); // 设置字体 + font3.setFontHeightInPoints((short)20);// 设置字体大小 +// font3.setFontHeight((short) 400); + cellStyle3.setFont(font3); + cell3.setCellStyle(cellStyle3); + //合并单元格,起始行,结束行,起始列,结束列 + sheet.addMergedRegionUnsafe(new CellRangeAddress(3, 3, 0, 8)); + + //设置客户名称、单据编号、制单日期 + Row row4 = sheet.createRow(4); + Cell cell4 = row4.createCell(7); + cell4.setCellValue("单据编号:"); + CellStyle cellStyle4 = workbook.createCellStyle(); + Font font4 = workbook.createFont(); + font4.setFontName("宋体"); // 设置字体 + font4.setFontHeightInPoints((short) 11); // 设置字体大小 + cellStyle4.setFont(font4); + cell4.setCellStyle(cellStyle4); + //合并单元格,起始行,结束行,起始列,结束列 + sheet.addMergedRegionUnsafe(new CellRangeAddress(4, 4, 7, 8)); + + Row row5 = sheet.createRow(5); + Cell cell5 = row5.createCell(0); + cell5.setCellValue("客户名称:"); + CellStyle cellStyle5 = workbook.createCellStyle(); + Font font5 = workbook.createFont(); + font5.setFontName("宋体"); // 设置字体 + font5.setFontHeightInPoints((short) 11); + cellStyle5.setFont(font5); + cell5.setCellStyle(cellStyle5); + sheet.addMergedRegionUnsafe(new CellRangeAddress(5, 5, 0, 2)); + + Cell cell51 = row5.createCell(7); + cell51.setCellValue(" 制单日期:"); + CellStyle cellStyle51 = workbook.createCellStyle(); + Font font51 = workbook.createFont(); + font51.setFontName("宋体"); // 设置字体 + font51.setFontHeightInPoints((short) 11); + cellStyle51.setFont(font51); + cell51.setCellStyle(cellStyle51); + //合并单元格,起始行,结束行,起始列,结束列 + sheet.addMergedRegionUnsafe(new CellRangeAddress(5, 5, 7, 8)); + + } +} \ No newline at end of file diff --git a/common/src/main/resources/mapper/RepairOrderMapper.xml b/common/src/main/resources/mapper/RepairOrderMapper.xml index 78011ab..0934ee5 100644 --- a/common/src/main/resources/mapper/RepairOrderMapper.xml +++ b/common/src/main/resources/mapper/RepairOrderMapper.xml @@ -131,6 +131,12 @@ and ro.id = #{form.id} + + and ro.id in + + #{id} + + and ro.order_no like concat('%', #{form.orderNo}, '%') diff --git a/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java index 767772c..5128cc6 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java @@ -950,6 +950,10 @@ public class RepairOrderServiceImpl implements IRepairOrderService { //批量添加配件编码 List orderPartCodeList = repairOrderParam.getOrderPartCodeList(); for (OrderPartCode orderPartCode : orderPartCodeList) { + //部件编码不能和模块号一样 + if(Objects.equals(orderPartCode.getPartCode(), repairOrder.getModuleNumber())){ + throw new OperateException("部件编码不能和模块号一样!"); + } orderPartCode.setRepairOrderId(repairOrder.getId()); // 维修单号 orderPartCodeMapper.insert(orderPartCode); } diff --git a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java index 4814237..132ac44 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java @@ -457,6 +457,8 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde if(model.getOrderStatus() == OrderStateEnum.PENDING_ORDER.getStatus() || model.getOrderStatus() == OrderStateEnum.TO_BE_INSPECTED.getStatus()){ + model.setReceiverId(null); // 清空接单人 + model.setReceiverTime(null); // 清空接单时间 model.setCancelOrderTime(new Date()); //退单时间 model.setCancelCause(routingInspectionOrderParam.getCancelCause()); //取消原因 //如果工单去向是工单池的话,退单后工单状态为待抢单,如果是检修员,工单状态是 5=已退单 diff --git a/front/src/main/resources/application-dev.yml b/front/src/main/resources/application-dev.yml index b7edb76..e61b05d 100644 --- a/front/src/main/resources/application-dev.yml +++ b/front/src/main/resources/application-dev.yml @@ -11,6 +11,11 @@ spring: driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 password: hcy123456 +# url: jdbc:mysql://120.77.216.5:3306/charging-pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false +# type: com.zaxxer.hikari.HikariDataSource # 数据源类型 +# driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 +# username: charging-pile # 数据库账号 +# password: FZcP7eFwN4T5jkXz # Redis配置 redis: host: localhost # Redis服务地址 diff --git a/front/src/main/resources/application.yml b/front/src/main/resources/application.yml index 5275913..f72721b 100644 --- a/front/src/main/resources/application.yml +++ b/front/src/main/resources/application.yml @@ -25,6 +25,11 @@ spring: driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 password: hcy123456 +# url: jdbc:mysql://120.77.216.5:3306/charging-pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false +# type: com.zaxxer.hikari.HikariDataSource # 数据源类型 +# driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 +# username: charging-pile # 数据库账号 +# password: FZcP7eFwN4T5jkXz hikari: connection-timeout: 30000 # 等待连接分配连接的最大时长(毫秒),超出时长还没可用连接则发送SQLException,默认30秒 minimum-idle: 5 # 最小连接数 @@ -94,4 +99,4 @@ netty: #adnin服务地址 adminService: - sendLargeScreenUrl : http://localhost:8082/api/system/notification/sendLargeScreen \ No newline at end of file + sendLargeScreenUrl : http://120.77.216.5:8082/api/system/notification/sendLargeScreen \ No newline at end of file diff --git a/pom.xml b/pom.xml index 38c9d20..5dc3ee8 100644 --- a/pom.xml +++ b/pom.xml @@ -168,6 +168,13 @@ like-common ${like.version} --> + + + com.alibaba + easyexcel + 3.3.4 + +