| src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/logback.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/sales/SalesLedgerMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/static/work-order-template.docx | 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -588,8 +588,8 @@ public ProductionTurnoverDto workInProcessTurnover() { ProductionTurnoverDto productionTurnoverDto = new ProductionTurnoverDto(); ProductWorkOrderDto workOrder = new ProductWorkOrderDto(); workOrder.setPlanStartTime(LocalDate.now().minusMonths(1)); workOrder.setPlanEndTime(LocalDate.now()); workOrder.setPlanStartTime(LocalDateTime.now().minusMonths(1)); workOrder.setPlanEndTime(LocalDateTime.now()); List<ProductWorkOrderDto> productWorkOrders = productWorkOrderMapper .pageProductWorkOrder(new Page<>(1, -1), workOrder).getRecords(); long sum = productWorkOrders.stream() @@ -1594,23 +1594,23 @@ @Override public List<MapDto> processOutputAnalysis(Integer type) { LocalDate today = LocalDate.now(); LocalDate startDate; LocalDate endDate = today; LocalDateTime startDate; LocalDateTime endDate = today.atTime(23, 59, 59); switch (type) { case 1: // 周 startDate = today.with(DayOfWeek.MONDAY); startDate = today.with(DayOfWeek.MONDAY).atStartOfDay(); break; case 2: // 月 startDate = today.withDayOfMonth(1); startDate = today.withDayOfMonth(1).atStartOfDay(); break; case 3: // 季度 int currentMonth = today.getMonthValue(); int startMonth = ((currentMonth - 1) / 3) * 3 + 1; startDate = LocalDate.of(today.getYear(), startMonth, 1); startDate = LocalDate.of(today.getYear(), startMonth, 1).atStartOfDay(); break; default: startDate = today.with(DayOfWeek.MONDAY); startDate = today.with(DayOfWeek.MONDAY).atStartOfDay(); break; } src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -8,7 +8,6 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -80,33 +79,33 @@ * 计划开始时间 */ @ApiModelProperty(value = "计划开始时间") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate planStartTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime planStartTime; /** * 计划结束时间 */ @ApiModelProperty(value = "计划结束时间") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate planEndTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime planEndTime; /** * 实际开始时间 */ @ApiModelProperty(value = "实际开始时间") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate actualStartTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime actualStartTime; /** * 实际结束时间 */ @ApiModelProperty(value = "实际结束时间") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate actualEndTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime actualEndTime; /** * 需求量 src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -28,6 +28,8 @@ 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; @@ -76,6 +78,16 @@ }); } 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()); @@ -86,10 +98,10 @@ 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); @@ -128,4 +140,14 @@ 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); } } src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -210,10 +210,10 @@ /*更新工单和生产订单*/ productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(productQty)); if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())) { productWorkOrder.setActualStartTime(LocalDate.now());//实际开始时间 productWorkOrder.setActualStartTime(LocalDateTime.now());//实际开始时间 } if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) >= 0) { productWorkOrder.setActualEndTime(LocalDate.now());//实际结束时间 productWorkOrder.setActualEndTime(LocalDateTime.now());//实际结束时间 } productWorkOrder.setEndProductTime(now); productWorkOrderMapper.updateById(productWorkOrder); src/main/resources/logback.xml
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 日志存放路径 --> <property name="log.path" value="/home/ruoyi/logs" /> <property name="log.path" value="./logs" /> <!-- 日志输出格式 --> <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -96,6 +96,9 @@ <if test="salesLedgerDto.entryDateEnd != null and salesLedgerDto.entryDateEnd != '' "> AND T1.entry_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d') </if> <if test="salesLedgerDto.salesman != null and salesLedgerDto.salesman != '' "> AND T1.salesman LIKE CONCAT('%',#{salesLedgerDto.salesman},'%') </if> </where> order by T1.entry_date desc </select> src/main/resources/static/work-order-template.docxBinary files differ