From 55a2143a02f93d4605c2341c8d42bdf05292632d Mon Sep 17 00:00:00 2001 From: tzy Date: Fri, 27 Jun 2025 09:35:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E8=89=BA=E6=B5=81=E7=A8=8B=E4=B8=8E=E8=AE=A1=E5=88=92=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=9B=E5=BA=A6=E9=80=BB=E8=BE=91=20-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20commons-io=20=E4=BE=9D=E8=B5=96=20-=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E9=83=A8=E5=88=86=E4=BB=BB=E5=8A=A1=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E8=AE=BE=E7=BD=AE=EF=BC=8C=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=AE=A1=E7=AE=97=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E4=BB=BB=E5=8A=A1=E6=9F=A5=E8=AF=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E4=BB=85=E7=AD=9B=E9=80=89=E6=9C=AA=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E4=BB=BB=E5=8A=A1=20-=20=E6=96=B0=E5=A2=9E=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=A1=B9=E7=9B=AE=E7=BC=96=E5=8F=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8F=8A=E6=9B=B4=E6=96=B0=E8=AE=A1=E5=88=92=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95=20-=20=E4=BC=98=E5=8C=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=9B=E5=BA=A6=E8=AE=A1=E7=AE=97=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=8C=89=E5=A4=A9=E6=95=B0=E6=AF=94=E4=BE=8B=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E8=AE=BE=E7=BD=AE=E8=BF=9B=E5=BA=A6=E5=80=BC=20-=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=B1=BB=E5=9E=8B=E4=B8=BA=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81=E6=9B=B4=E4=B8=B0=E5=AF=8C=E7=9A=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/pom.xml | 6 +++ .../controller/WorkProcedureController.java | 4 +- .../system/domain/bo/ProcessOrderProBo.java | 2 - .../domain/dto/ProductctionPlanGatteDto.java | 2 +- .../system/mapper/ProcessOrderProMapper.java | 13 ++++++- .../service/impl/EleMaterialsServiceImpl.java | 2 + .../service/impl/ProcessRouteServiceImpl.java | 7 ++-- .../impl/WorkProcedureServiceImpl.java | 37 ++++++++++++++----- .../mapper/system/ProcessOrderProMapper.xml | 22 ++++++++++- 9 files changed, 74 insertions(+), 21 deletions(-) diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index ce93df6..013fb23 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -235,6 +235,12 @@ knife4j-springdoc-ui 3.0.3 + + commons-io + commons-io + 2.15.0 + + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/WorkProcedureController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/WorkProcedureController.java index 4489da8..1e5314f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/WorkProcedureController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/WorkProcedureController.java @@ -208,7 +208,7 @@ public class WorkProcedureController extends BaseController { task.setDuration(duration); task.setOpen(true); - task.setProgress(1L); + // task.setProgress(1L); task.setStatus("yellow"); task.setParent(null); // 父任务没有parent @@ -227,7 +227,7 @@ public class WorkProcedureController extends BaseController { subTask.setEnd_date(subTaskItem.getString("FOperPlanFinishTime2")); subTask.setDuration(subTaskItem.getLong("1")); subTask.setOpen(true); - subTask.setProgress(1L); + // subTask.setProgress(1L); subTask.setStatus("yellow"); subTask.setParent(task.getId()); // 设置父任务ID diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java index 4a04a22..6fc62ae 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java @@ -52,13 +52,11 @@ public class ProcessOrderProBo extends BaseEntity { /** * 计划结束时间 */ - @NotNull(message = "计划结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date planEndTime; /** * 计划开始时间 */ - @NotNull(message = "计划开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date planStartTime; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProductctionPlanGatteDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProductctionPlanGatteDto.java index 72d8514..801118b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProductctionPlanGatteDto.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProductctionPlanGatteDto.java @@ -18,7 +18,7 @@ public class ProductctionPlanGatteDto { private Integer type; private Boolean open; private String toolTipsTxt; - private Long progress; + private String progress; private String status; private String level; private String color; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProcessOrderProMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProcessOrderProMapper.java index 9504009..ee47f8d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProcessOrderProMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProcessOrderProMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.system.mapper; import com.ruoyi.system.domain.ProcessOrderPro; +import com.ruoyi.system.domain.bo.ProcessOrderProBo; import com.ruoyi.system.domain.vo.ProcessOrderProVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; @@ -11,5 +12,15 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus; * @date 2024-10-22 */ public interface ProcessOrderProMapper extends BaseMapperPlus { - + /** + * 根据项目编号(routeDescription)查询订单信息 + * @param routeDescription 项目编号 + * @return ProcessOrderProBo 返回相关的订单信息 + */ + ProcessOrderPro selectByProjectNumber(String routeDescription); + /** + * 根据 ProcessOrderProBo 更新记录 + * @param processOrderPro 更新的订单信息 + */ + void updateByBo(ProcessOrderPro processOrderPro); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java index 81f52ef..041bd69 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java @@ -343,8 +343,10 @@ public class EleMaterialsServiceImpl implements IEleMaterialsService { } newMaterialsVo.setMaterialCode(newCode); + log.info("生成新的物料编码======================>: {}", newCode); EleMaterials eleMaterials = BeanUtil.copyProperties(newMaterialsVo, EleMaterials.class); eleMaterials.setMaterialValue("0"); + baseMapper.insert(eleMaterials); // 仅在有编码的情况下添加到插入列表和导出列表 eleMaterialsList.add(eleMaterials); // 添加到插入列表 allMaterialsList.add(newMaterialsVo); // 添加到导出列表 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java index 431511c..95814c7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java @@ -73,6 +73,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { private final MaterialBomMapper materialBomMapper; private final ProcessInfoMapper processInfoMapper; private final ProductionRouteTwoMapper productionRouteTwoMapper; + private final ProcessOrderProMapper iProcessOrderProService; private static final Logger log = LoggerFactory.getLogger(ProcessRouteController.class); private static final Logger logger = LoggerFactory.getLogger(IProcessRouteService.class); @@ -571,15 +572,15 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { .max(Comparator.comparing(ProcessRoute::getXuEndTime)) .map(ProcessRoute::getXuEndTime) .orElse(null); - /* //更新至计划模块中 + //更新至计划模块中 if (earliestStartTime != null && latestEndTime != null) { - ProcessOrderProBo processOrderPro = iProcessOrderProService.selectByProjectNumber(processRoutes.get(0).getRouteDescription()); + ProcessOrderPro processOrderPro = iProcessOrderProService.selectByProjectNumber(processRoutes.get(0).getRouteDescription()); processOrderPro.setPlanStartTime(earliestStartTime); processOrderPro.setPlanEndTime(latestEndTime); processOrderPro.setUpdateTime(new Date()); log.info("更新计划生成令号为:{},计划开始时间:{},计划结束时间:{}",processRoutes.get(0).getRouteDescription(), earliestStartTime, latestEndTime); iProcessOrderProService.updateByBo(processOrderPro); - }*/ + } if (allEmpty && !processRoutes.isEmpty()) { List duplicateWeldingMaterials = processRoutes.stream() diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkProcedureServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkProcedureServiceImpl.java index 912c785..054de3c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkProcedureServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WorkProcedureServiceImpl.java @@ -24,6 +24,7 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; @@ -73,7 +74,7 @@ public class WorkProcedureServiceImpl implements IWorkProcedureService { parentTask.setText(processRoute.getRouteDescription()); parentTask.setOpen(true); parentTask.setToolTipsTxt(processRoute.getRouteDescription()); - parentTask.setProgress(1L); + // parentTask.setProgress(1L); parentTask.setStatus("yellow"); parentTask.setParent(null); @@ -168,7 +169,12 @@ public class WorkProcedureServiceImpl implements IWorkProcedureService { // ================= 1. 查询近2个月的父任务(ProcessOrderPro) ================= LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.between(ProcessOrderPro::getCreateTime, LocalDate.now().minusMonths(2), LocalDate.now()); + //只查询未完成的项目也就是 结束时间大于今天 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime twoMonthsAgo = now.minusMonths(2); + + wrapper.ge(ProcessOrderPro::getPlanEndTime, now) // 未结束(结束时间 > 当前时间) + .ge(ProcessOrderPro::getPlanStartTime, twoMonthsAgo); // 近 List processOrderPros = processOrderProMapper.selectList(wrapper); @@ -202,7 +208,7 @@ public class WorkProcedureServiceImpl implements IWorkProcedureService { parentTask.setText(pro.getProductionOrderNo()); parentTask.setOpen(false); parentTask.setToolTipsTxt(pro.getDrawingNo()); - parentTask.setProgress(1L); + /* parentTask.setProgress(1L);*/ parentTask.setStatus("yellow"); parentTask.setParent(null); parentTask.setStart_date(sdf.format(proBo.getPlanStartTime())); @@ -248,20 +254,31 @@ public class WorkProcedureServiceImpl implements IWorkProcedureService { start.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), end.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() ); + // 计算当前时间与开始时间的差(单位:天) + long elapsedDays = ChronoUnit.DAYS.between( + start.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), + LocalDate.now() // 当前日期 + ); + // 计算进度百分比,确保不超过100% + double progress = 0; + if (duration > 0) { + progress = (double) elapsedDays / duration; + progress = Math.min(progress, 1.0); // 防止进度超过100% + } ProductctionPlanGatteDto subTask = new ProductctionPlanGatteDto(); subTask.setId(route.getId()); subTask.setText( - cleanProcessNo(String.valueOf(route.getProcessNo())) + " " + - route.getMaterialCode() + " " + - route.getMaterialName() + " " + - route.getProcessName() + route.getProcessNo() + " " + route.getProcessName()+ " " + + route.getMaterialCode() ); subTask.setStart_date(sdf.format(start)); subTask.setEnd_date(sdf.format(end)); subTask.setDuration(duration); subTask.setToolTipsTxt(route.getProcessName()); - subTask.setProgress(1L); + /* subTask.setProgress(1L);*/ + //计算进度计算 整体数加上 已经过了的天数百分比保留以为小数 + subTask.setProgress(String.valueOf(progress)); subTask.setStatus("yellow"); // 工序号处理:去除所有0 @@ -406,7 +423,7 @@ public class WorkProcedureServiceImpl implements IWorkProcedureService { parentTask.setOpen(true); // 默认展开 parentTask.setToolTipsTxt(plan.getFigureName()); // 设置工具提示文本 - parentTask.setProgress(1L); // 设置进度 + //parentTask.setProgress(1L); // 设置进度 parentTask.setStatus("yellow"); // 设置状态 parentTask.setParent(null); // 父任务没有parent tasks.add(parentTask); // 添加到任务列表 @@ -467,7 +484,7 @@ public class WorkProcedureServiceImpl implements IWorkProcedureService { } subTask.setToolTipsTxt(procedure.getToolTipsTxt()); // 设置工具提示文本 - subTask.setProgress(1L); // 设置进度 + // subTask.setProgress(1L); // 设置进度 subTask.setStatus(procedure.getStatus()); // 设置状态 subTask.setParent(procedure.getPlanId()); // 设置父任务ID tasks.add(subTask); // 添加到任务列表 diff --git a/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml b/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml index 7dc6e6d..586414e 100644 --- a/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml @@ -17,6 +17,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + + + + UPDATE process_order_pro + SET production_order_no = #{productionOrderNo}, + production_name = #{productionName}, + drawing_no = #{drawingNo}, + drawing_name = #{drawingName}, + plan_end_time = #{planEndTime}, + plan_start_time = #{planStartTime}, + create_by = #{createBy}, + update_by = #{updateBy} + WHERE id = #{id} +