| | |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.net.URLEncoder; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | |
| | | }); |
| | | } |
| | | InputStream inputStream = this.getClass().getResourceAsStream("/static/work-order-template.docx"); |
| | | |
| | | // 日期时间格式化器 |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); |
| | | |
| | | // 格式化日期时间字段 |
| | | String planStartTimeStr = formatDateTime(productWorkOrderDto.getPlanStartTime(), formatter); |
| | | String planEndTimeStr = formatDateTime(productWorkOrderDto.getPlanEndTime(), formatter); |
| | | String actualStartTimeStr = formatDateTime(productWorkOrderDto.getActualStartTime(), formatter); |
| | | String actualEndTimeStr = formatDateTime(productWorkOrderDto.getActualEndTime(), formatter); |
| | | |
| | | XWPFTemplate template = XWPFTemplate.compile(inputStream).render( |
| | | new HashMap<String, Object>() {{ |
| | | put("process", productWorkOrderDto.getProcessName()); |
| | |
| | | put("model", productWorkOrderDto.getModel()); |
| | | put("completeQuantity", productWorkOrderDto.getCompleteQuantity()); |
| | | put("scrapQty", productWorkOrderDto.getScrapQty()); |
| | | put("planStartTime", productWorkOrderDto.getPlanStartTime()); |
| | | put("planEndTime", productWorkOrderDto.getPlanEndTime()); |
| | | put("actualStartTime", productWorkOrderDto.getActualStartTime()); |
| | | put("actualEndTime", productWorkOrderDto.getActualEndTime()); |
| | | put("planStartTime", planStartTimeStr); |
| | | put("planEndTime", planEndTimeStr); |
| | | put("actualStartTime", actualStartTimeStr); |
| | | put("actualEndTime", actualEndTimeStr); |
| | | put("twoCode", Pictures.ofLocal(codePath).create()); |
| | | put("deviceName", productWorkOrderDto.getDeviceName()); |
| | | put("images", images.isEmpty() ? null : images); |
| | |
| | | return StrUtil.format("{}{}", processPinyin, npsNo, String.format("%03d", sequenceNumber)); |
| | | } |
| | | |
| | | /** |
| | | * 格式化 LocalDateTime 为字符串 |
| | | */ |
| | | private String formatDateTime(LocalDateTime dateTime, DateTimeFormatter formatter) { |
| | | if (dateTime == null) { |
| | | return ""; |
| | | } |
| | | return dateTime.format(formatter); |
| | | } |
| | | |
| | | } |