From 7f1a3782f7744e08465575082acc308d2f2ebafe Mon Sep 17 00:00:00 2001 From: yinq Date: Mon, 12 May 2025 09:21:43 +0800 Subject: [PATCH 01/21] =?UTF-8?q?update=20=E7=94=9F=E4=BA=A7=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/mes/domain/bo/ProdPlanInfoBo.java | 4 ++- .../service/impl/ProdPlanInfoServiceImpl.java | 4 +-- .../ProdProductPlanDetailServiceImpl.java | 25 ++++++++----------- .../mes/ProdProductPlanDetailMapper.xml | 15 ++++++----- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java index 646c940..07b5323 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdPlanInfoBo.java @@ -126,13 +126,15 @@ public class ProdPlanInfoBo extends BaseEntity { private Long completeAmount; /** - * 计划时间 + * 计划开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date planBeginTime; /** * 计划结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date planEndTime; /** diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java index a613e11..d66cb76 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java @@ -104,8 +104,8 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { .eq(bo.getPlanAmount() != null, ProdPlanInfo::getPlanAmount, bo.getPlanAmount()) .eq(bo.getDispatchAmount() != null, ProdPlanInfo::getDispatchAmount, bo.getDispatchAmount()) .eq(bo.getCompleteAmount() != null, ProdPlanInfo::getCompleteAmount, bo.getCompleteAmount()) - .eq(bo.getPlanBeginTime() != null, ProdPlanInfo::getPlanBeginTime, bo.getPlanBeginTime()) - .eq(bo.getPlanEndTime() != null, ProdPlanInfo::getPlanEndTime, bo.getPlanEndTime()) + .between(StringUtils.isNotNull(bo.getPlanBeginTime()) && StringUtils.isNotNull(bo.getPlanEndTime()), + ProdPlanInfo::getPlanBeginTime, bo.getPlanBeginTime(), bo.getPlanEndTime()) .eq(bo.getRealBeginTime() != null, ProdPlanInfo::getRealBeginTime, bo.getRealBeginTime()) .eq(bo.getRealEndTime() != null, ProdPlanInfo::getRealEndTime, bo.getRealEndTime()) .eq(StringUtils.isNotBlank(bo.getAttachId()), ProdPlanInfo::getAttachId, bo.getAttachId()) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdProductPlanDetailServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdProductPlanDetailServiceImpl.java index b46d005..9a48f36 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdProductPlanDetailServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdProductPlanDetailServiceImpl.java @@ -84,20 +84,17 @@ public class ProdProductPlanDetailServiceImpl implements IProdProductPlanDetailS Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdProductPlanDetail.class) .selectAll(ProdProductPlanDetail.class) - - //工装连表查询名称 - .select(BaseToolingInfo::getToolingName) - .leftJoin(BaseToolingInfo.class, BaseToolingInfo::getToolingId, ProdProductPlanDetail::getToolingId) - - //班次连表查询名称 - .select(BaseShiftInfo::getShiftName) - .leftJoin(BaseShiftInfo.class, BaseShiftInfo::getShiftId, ProdProductPlanDetail::getShiftId) - - //班组连表查询名称 - .select(BaseClassTeamInfo::getTeamName) - .leftJoin(BaseClassTeamInfo.class, BaseClassTeamInfo::getClassTeamId, ProdProductPlanDetail::getClassTeamId) - - +// //工装连表查询名称 +// .select(BaseToolingInfo::getToolingName) +// .leftJoin(BaseToolingInfo.class, BaseToolingInfo::getToolingId, ProdProductPlanDetail::getToolingId) +// +// //班次连表查询名称 +// .select(BaseShiftInfo::getShiftName) +// .leftJoin(BaseShiftInfo.class, BaseShiftInfo::getShiftId, ProdProductPlanDetail::getShiftId) +// +// //班组连表查询名称 +// .select(BaseClassTeamInfo::getTeamName) +// .leftJoin(BaseClassTeamInfo.class, BaseClassTeamInfo::getClassTeamId, ProdProductPlanDetail::getClassTeamId) //接班 /* .select(ProdShiftChange::) .leftJoin(ProdShiftChange.class, ProdShiftChange::getShiftChangeId, ProdProductPlanDetail::getShiftChangeId)*/ diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdProductPlanDetailMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdProductPlanDetailMapper.xml index e5a47fc..83011fa 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdProductPlanDetailMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdProductPlanDetailMapper.xml @@ -5,14 +5,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" From 888dd9da651c17e8390545a32bc3e2781b93e5f0 Mon Sep 17 00:00:00 2001 From: zch Date: Mon, 12 May 2025 16:01:10 +0800 Subject: [PATCH 02/21] =?UTF-8?q?feat(job):=20=E6=96=B0=E5=A2=9E=20SnailJo?= =?UTF-8?q?b=20=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E5=99=A8=E5=92=8C?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了 DmsInspectStanceExecutor、DmsLubeStanceExecutor 和 DmsMaintStanceExecutor 三个任务执行器 - 新增了 DmsJobEntity 任务实体类 - 实现了 RemoteInspectInstanceService、RemoteLubeInstanceService 和 RemoteMaintInstanceService 接口 - 添加了 RemoteJobService 接口及其实现类 - 新建了相关的 Maven 项目配置文件 --- ruoyi-api/hwmom-api-dms/pom.xml | 42 +++++ .../dms/api/RemoteInspectInstanceService.java | 9 ++ .../dms/api/RemoteLubeInstanceService.java | 13 ++ .../dms/api/RemoteMaintInstanceService.java | 8 + .../dms/api/RemoteRepairStanceService.java | 9 ++ ruoyi-api/ruoyi-api-job/pom.xml | 42 +++++ .../org/dromara/job/api/RemoteJobService.java | 50 ++++++ .../dromara/job/api/model/DmsJobEntity.java | 58 +++++++ .../RemoteInspectInstanceServiceImpl.java | 148 ++++++++++++++++++ .../dubbo/RemoteLubeInstanceServiceImpl.java | 133 ++++++++++++++++ .../dubbo/RemoteMaintInstanceServiceImpl.java | 118 ++++++++++++++ .../dubbo/RemoteRepairStanceServicempl.java | 134 ++++++++++++++++ .../job/service/RemoteJobServiceImpl.java | 147 +++++++++++++++++ .../snailjob/DmsInspectStanceExecutor.java | 44 ++++++ .../job/snailjob/DmsLubeStanceExecutor.java | 45 ++++++ .../job/snailjob/DmsMaintStanceExecutor.java | 43 +++++ 16 files changed, 1043 insertions(+) create mode 100644 ruoyi-api/hwmom-api-dms/pom.xml create mode 100644 ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java create mode 100644 ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java create mode 100644 ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java create mode 100644 ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteRepairStanceService.java create mode 100644 ruoyi-api/ruoyi-api-job/pom.xml create mode 100644 ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/RemoteJobService.java create mode 100644 ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java create mode 100644 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java create mode 100644 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java create mode 100644 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java diff --git a/ruoyi-api/hwmom-api-dms/pom.xml b/ruoyi-api/hwmom-api-dms/pom.xml new file mode 100644 index 0000000..1ddcfbc --- /dev/null +++ b/ruoyi-api/hwmom-api-dms/pom.xml @@ -0,0 +1,42 @@ + + + + org.dromara + ruoyi-api + ${revision} + + 4.0.0 + + hwmom-api-dms + + + hwmom-api-dms dms接口模块 + + + + + + + org.dromara + ruoyi-common-core + + + + org.dromara + ruoyi-common-excel + + + org.projectlombok + lombok + provided + + + com.aizuda + snail-job-client-job-core + + + + + diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java new file mode 100644 index 0000000..a737557 --- /dev/null +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java @@ -0,0 +1,9 @@ +package org.dromara.dms.api; + +import org.dromara.common.core.domain.R; + +public interface RemoteInspectInstanceService { + + public R insertInspectInstance(String planInspectCode); + +} diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java new file mode 100644 index 0000000..52ad696 --- /dev/null +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java @@ -0,0 +1,13 @@ +package org.dromara.dms.api; + + +import org.dromara.common.core.domain.R; + +public interface RemoteLubeInstanceService { + + + public R insertLubeInstance(String lubeInstanceCode); + + + +} diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java new file mode 100644 index 0000000..3fd1c70 --- /dev/null +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java @@ -0,0 +1,8 @@ +package org.dromara.dms.api; + +import org.dromara.common.core.domain.R; + +public interface RemoteMaintInstanceService { + + public R insertDmsBillsMaintInstance(String planMaintCode); +} diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteRepairStanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteRepairStanceService.java new file mode 100644 index 0000000..5b8837f --- /dev/null +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteRepairStanceService.java @@ -0,0 +1,9 @@ +package org.dromara.dms.api; + +import org.dromara.common.core.domain.R; + +public interface RemoteRepairStanceService { + + public R insertDmsRepairInstance(String planRepairCode); + +} diff --git a/ruoyi-api/ruoyi-api-job/pom.xml b/ruoyi-api/ruoyi-api-job/pom.xml new file mode 100644 index 0000000..63dc136 --- /dev/null +++ b/ruoyi-api/ruoyi-api-job/pom.xml @@ -0,0 +1,42 @@ + + + + org.dromara + ruoyi-api + ${revision} + + 4.0.0 + + ruoyi-api-job + + + ruoyi-api-job job接口模块 + + + + + + + org.dromara + ruoyi-common-core + + + + org.dromara + ruoyi-common-excel + + + org.projectlombok + lombok + provided + + + com.aizuda + snail-job-client-job-core + + + + + diff --git a/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/RemoteJobService.java b/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/RemoteJobService.java new file mode 100644 index 0000000..6b8aae1 --- /dev/null +++ b/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/RemoteJobService.java @@ -0,0 +1,50 @@ +package org.dromara.job.api; + +import com.aizuda.snailjob.client.job.core.dto.JobResponseVO; +import org.dromara.common.core.domain.R; +import org.dromara.job.api.model.DmsJobEntity; + +/** + * 物料接口 + * + * @author Yinq + */ +public interface RemoteJobService { + + + /** + * 新增集群模式的任务 + * + * @param dmsJobEntity 实体类 + * @return 任务id + */ + public R addClusterJob(DmsJobEntity dmsJobEntity); + + /** + * 修改集群模式的任务 + */ + public R updateClusterJob(DmsJobEntity dmsJobEntity); + + /** + * 查看任务详情 + * + * @param jobId + * @return 任务详情 + */ + public R queryJob(Long jobId); + + /** + * 更新定时任务状态 + * + * @param jobId 定时任务ID + * @param status + * status NO:0 ; YES:1 + */ + public R updateJobStatus(Long jobId, Long status); + + /** + * 自己写的 删除任务;官网文档的SnailJobOpenApi里没有 + */ +// public Boolean deleteJob(Long jobId); + +} diff --git a/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java b/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java new file mode 100644 index 0000000..cf5c1cd --- /dev/null +++ b/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java @@ -0,0 +1,58 @@ +package org.dromara.job.api.model; + +import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.common.core.enums.JobBlockStrategyEnum; +import lombok.Data; +import lombok.experimental.Accessors; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +/** + * SnailJob任务实体类 + * + * @author zch + * @date 2025-03-25 + */ +@Data +@Accessors(chain = true) +public class DmsJobEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 直接复制com.aizuda.snailjob.client.job.core.dto.JobResponseVO */ + private Long id; + private String groupName; + private String jobName; + + private String argsStr; + private String extAttrs; + + private LocalDateTime nextTriggerAt; + private Integer jobStatus; + + + private AllocationAlgorithmEnum routeKey;//private Integer routeKey;(1:一致性哈希;2:随机;3:LRU;4:轮询;5:第一个;6:最后一个;) + + private Integer executorType; + private String executorInfo; + + private TriggerTypeEnum triggerType;//private Integer triggerType;//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 + + private String triggerInterval; + + private JobBlockStrategyEnum blockStrategy;//private Integer blockStrategy;//阻塞策略:1、丢弃 2、覆盖 3、并行 + private Integer executorTimeout; + + private Integer maxRetryTimes; + private Integer retryInterval; + private Integer taskType; + private Integer parallelNum; + private String description; + private LocalDateTime createDt; + private LocalDateTime updateDt; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java new file mode 100644 index 0000000..ad01b4b --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -0,0 +1,148 @@ +package org.dromara.dms.dubbo; + + +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.constant.DmsConstants; +import org.dromara.common.core.domain.R; +import org.dromara.dms.api.RemoteInspectInstanceService; +import org.dromara.dms.domain.*; +import org.dromara.dms.mapper.*; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceService { + + + private final DmsPlanInspectMapper dmsPlanInspectMapper; + + private final DmsInspectRouteDetailMapper dmsInspectRouteDetailMapper; + + private final DmsBillsInspectInstanceMapper dmsBillsInspectInstanceMapper; + + private final DmsInspectInstanceDetailMapper dmsInspectInstanceDetailMapper; + + private final DmsInspectInstanceDetailProjectMapper dmsInspectInstanceDetailProjectMapper; + + private final DmsInspectProjectDeviceMapper dmsInspectProjectDeviceMapper; + + + @Override + @Transactional( rollbackFor = Exception.class ) + public R insertInspectInstance(String planInspectCode){ + + + // 使用 replaceAll 方法将双引号替换为空字符串 + String result = planInspectCode.replaceAll("\"", ""); + + DmsPlanInspect dmsPlanInspect = dmsPlanInspectMapper.selectPlanInspectJoinJobByInspectCode(result); + Long timeLimit = dmsPlanInspect.getTimeLimit(); + if (timeLimit != null) { + Long days = timeLimit / (24 * 60 * 60l); + Long hours = timeLimit % (24 * 60 * 60l); +// System.out.println(days); +// System.out.println(hours); + dmsPlanInspect.setTimeLimitDays(days); + dmsPlanInspect.setTimeLimitHours(hours / (60 * 60l)); + } + + + DmsBillsInspectInstance dmsBillsInspectInstance = new DmsBillsInspectInstance(); + + + // DmsRepairInstance dmsRepairInstance = dmsRepairInstanceService.selectDmsRepairInstanceByRepairInstanceId(2l); + + dmsBillsInspectInstance.setPlanInspectId(dmsPlanInspect.getPlanInspectId()); +// dmsBillsInspectInstance.setWfProcessId(105l); + dmsBillsInspectInstance.setInspectType(dmsPlanInspect.getInspectType());//检查类型(1巡检 2点检) + dmsBillsInspectInstance.setPlanBeginTime(dmsPlanInspect.getPlanTime()); + dmsBillsInspectInstance.setPlanEndTime(new Date(dmsPlanInspect.getPlanTime().getTime()+dmsPlanInspect.getTimeLimit()*1000l)); + dmsBillsInspectInstance.setInspectRouteId(dmsPlanInspect.getInspectRouteId()); +// dmsBillsInspectInstance.setDeviceAmount(dmsPlanInspect.getDeviceAmount());//设备数量 +// dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 + + + + + //写死105,也可根据传入对象的wfprocessid作为传参。 +/* + Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(105l); + if (dmsBillsInspectInstance.getInspectType().equals("1")) { + dmsBillsInspectInstance.setWfProcessId(105l); + } else if (dmsBillsInspectInstance.getInspectType().equals("2")) { + dmsBillsInspectInstance.setWfProcessId(104l); + } +*/ + +// dmsBillsInspectInstance.setIsFlag("1"); + dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检 + int i = dmsBillsInspectInstanceMapper.insert(dmsBillsInspectInstance); + +// List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); + //新建第一步工单实例节点 +/* + DmsBillsInspectInstanceActivity dmsBillsInspectInstanceActivity = new DmsBillsInspectInstanceActivity(); + dmsBillsInspectInstanceActivity.setInspectInstanceId(dmsBillsInspectInstance.getInspectInstanceId()); + dmsBillsInspectInstanceActivity.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId()); + dmsBillsInspectInstanceActivity.setDeviceAmount(dmsBillsInspectInstance.getDeviceAmount()); + dmsBillsInspectInstanceActivity.setPerformer(dmsBillsInspectInstance.getPerformer()); + dmsBillsInspectInstanceActivity.setProcessStepOrder(1l); + dmsBillsInspectInstanceActivity.setProcessActivityId(aLong); + dmsBillsInspectInstanceActivityMapper.insertDmsBillsInspectInstanceActivity(dmsBillsInspectInstanceActivity); +*/ + + //新建点巡检工单明细 +/* DmsInspectRouteDetail queryInspectRouteDetail = new DmsInspectRouteDetail(); + queryInspectRouteDetail.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId());*/ + MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsInspectRouteDetail.class) + .eq(DmsInspectRouteDetail::getInspectRouteId, dmsBillsInspectInstance.getInspectRouteId()); + List dmsInspectRouteDetails = dmsInspectRouteDetailMapper.selectList(lqw); + + for(DmsInspectRouteDetail dmsInspectRouteDetail:dmsInspectRouteDetails){ + DmsInspectInstanceDetail dmsInspectInstanceDetail = new DmsInspectInstanceDetail(); + Long deviceId = dmsInspectRouteDetail.getMachineId(); + dmsInspectInstanceDetail.setInspectInstanceId(dmsBillsInspectInstance.getInspectInstanceId()); + dmsInspectInstanceDetail.setLineStep(dmsInspectRouteDetail.getLineStep()); + dmsInspectInstanceDetail.setMachineId(deviceId); + dmsInspectInstanceDetail.setInstanceDetailStatus("1");//(1待巡检 2巡检中 3已完成) + dmsInspectInstanceDetail.setInspectStandard(dmsInspectRouteDetail.getInspectStandard()); + dmsInspectInstanceDetail.setInspectStatus("0");//TODO:为什么设置为异常? + +// dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail); + dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail); + + Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard()); +/* + DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); + queryInspectProjectDevice.setTargetType("2"); + queryInspectProjectDevice.setTargetId(deviceId); + List dmsInspectProjectDevices = dmsInspectProjectDeviceMapper.selectDmsInspectProjectDeviceList(queryInspectProjectDevice); +*/ + MPJLambdaWrapper DmsInspectProjectDeviceLQW = JoinWrappers.lambda(DmsInspectProjectDevice.class) + .eq(DmsInspectProjectDevice::getTargetType, "2")//关联类型(1设备类型) + .eq(DmsInspectProjectDevice::getTargetId, deviceId); + List dmsInspectProjectDevices = dmsInspectProjectDeviceMapper.selectList(DmsInspectProjectDeviceLQW); + + + // for(DmsInspectProjectDevice dmsInspectProjectDevice:dmsInspectProjectDevices){ + DmsInspectInstanceDetailProject dmsInspectInstanceDetailProject = new DmsInspectInstanceDetailProject(); + dmsInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId()); + dmsInspectInstanceDetailProject.setInspectProjectId(projectId); +// dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(dmsInspectInstanceDetailProject); + dmsInspectInstanceDetailProjectMapper.insert(dmsInspectInstanceDetailProject); +// } + + } + + return R.ok(i); + + } +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java new file mode 100644 index 0000000..453a22e --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java @@ -0,0 +1,133 @@ +package org.dromara.dms.dubbo; + + +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.constant.DmsConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.uuid.Seq; +import org.dromara.dms.domain.*; +import org.dromara.dms.domain.bo.DmsBillsLubeInstanceBo; +import org.dromara.dms.domain.bo.DmsPlanLubeBo; +import org.dromara.dms.domain.vo.DmsPlanLubeDetailVo; +import org.dromara.dms.mapper.*; +import org.dromara.dms.service.IDmsBillsLubeInstanceService; +import org.dromara.dms.service.IDmsPlanInspectService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.dromara.dms.api.RemoteLubeInstanceService; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService { + private final DmsBillsLubeInstanceMapper dmsBillsLubeInstanceMapper; + + private final DmsBillsLubeDetailMapper dmsBillsLubeDetailMapper; + + private final DmsPlanLubeMapper dmsPlanLubeMapper; + + private final DmsBillsLubeInstanceActivityMapper dmsBillsLubeInstanceActivityMapper; + + private final DmsPlanLubeDetailMapper dmsPlanLubeDetailMapper; + + private final IDmsBillsLubeInstanceService dmsBillsLubeInstanceService; + + private final IDmsPlanInspectService dmsPlanInspectService; + + private final DmsPlanInspectMapper dmsPlanInspectMapper; + + private final DmsInspectRouteDetailMapper dmsInspectRouteDetailMapper; + + + + + @Override + @Transactional(rollbackFor = Exception.class) + public R insertLubeInstance(String planLubeCode) { + // 去除润滑计划编号中的双引号 +// String lubeInstanceCodeS = planLubeCode.replaceAll("\"", ""); + + // 根据润滑计划编号查询润滑计划信息 + DmsPlanLube dmsPlanLube = dmsPlanLubeMapper.selectDmsPlanLubeJoinByPlanLubeCode(planLubeCode); + + DmsPlanLubeDetail dmsPlanLubeDetail = new DmsPlanLubeDetail(); + dmsPlanLubeDetail.setPlanLubeId(dmsPlanLube.getPlanLubeId()); + MPJLambdaWrapper dmsPlanLubeDetailWrapper = JoinWrappers + .lambda(DmsPlanLubeDetail.class) + .eq(DmsPlanLubeDetail::getPlanLubeId, dmsPlanLube.getPlanLubeId()); + List dmsPlanLubeDetailList = dmsPlanLubeDetailMapper.selectVoList(dmsPlanLubeDetailWrapper); + dmsPlanLube.setDmsPlanLubeDetailList(dmsPlanLubeDetailList); + + + // 获取润滑计划详情列表 + List planLubeDetails = dmsPlanLube.getDmsPlanLubeDetailList(); + if (planLubeDetails == null || planLubeDetails.isEmpty()) { + // 如果润滑计划详情为空,返回false + return R.fail(); + } + + // 创建新的润滑工单实例对象 + DmsBillsLubeInstanceBo dmsBillsLubeInstanceBo = new DmsBillsLubeInstanceBo(); + // 设置润滑工单的计划ID + dmsBillsLubeInstanceBo.setPlanLubeId(dmsPlanLube.getPlanLubeId()); + // 设置计划开始时间为润滑时间 + dmsBillsLubeInstanceBo.setPlanBeginTime(dmsPlanLube.getLubeTime()); + // 生成并设置润滑工单编码 + dmsBillsLubeInstanceBo.setBillsLubeCode(Seq.getId(Seq.dmsLubeInstanceSeqType, Seq.dmsLubeInstanceCode)); + // 设置润滑状态为待润滑 + dmsBillsLubeInstanceBo.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE); + // 设置润滑组 + dmsBillsLubeInstanceBo.setLubeGroup(dmsPlanLube.getLubeGroup()); + // 设置润滑监督人 + dmsBillsLubeInstanceBo.setLubeSupervisor(dmsPlanLube.getLubeSupervisor()); + // 设置润滑级别 + dmsBillsLubeInstanceBo.setLubeLevel(dmsPlanLube.getLubeLevel()); + // 获取时间限制 + Long timeLimit = dmsPlanLube.getTimeLimit(); + // 计算并设置计划结束时间 + Date planEndTime = new Date(dmsPlanLube.getLubeTime().getTime() + timeLimit * 1000L); + dmsBillsLubeInstanceBo.setPlanEndTime(planEndTime); + + // 插入润滑工单实例到数据库 + boolean success = dmsBillsLubeInstanceService.insertByBo(dmsBillsLubeInstanceBo); + + DmsPlanLubeBo dmsPlanLubeBo = MapstructUtils.convert(dmsPlanLube, DmsPlanLubeBo.class); + + + // 批量插入润滑工单详情 + List lubeDetails = dmsPlanLubeBo.getDmsPlanLubeDetailList(); + List billsLubeDetails = new ArrayList<>(); + for (DmsPlanLubeDetailVo planLubeDetail : lubeDetails) { + DmsBillsLubeDetail dmsBillsLubeDetail = new DmsBillsLubeDetail(); + dmsBillsLubeDetail.setLubeInstanceId(dmsBillsLubeInstanceBo.getLubeInstanceId()); + dmsBillsLubeDetail.setMachineId(planLubeDetail.getDeviceId()); + dmsBillsLubeDetail.setLubeStationId(planLubeDetail.getLubeStationId()); + dmsBillsLubeDetail.setLubeStandardId(planLubeDetail.getLubeStandardId()); + //dmsBillsLubeDetail.setActiveFlag("Y"); // 假设是否标记字段对应activeFlag + billsLubeDetails.add(dmsBillsLubeDetail); + } + + +/* // 使用mybatis-plus批量保存 + return dmsBillsLubeDetailMapper.insertBatch(billsLubeDetails);*/ + // 修改批量插入方式,避免SQL Server批量插入时获取自动生成主键的问题 + boolean result = true; + for (DmsBillsLubeDetail detail : billsLubeDetails) { + result = result && dmsBillsLubeDetailMapper.insert(detail) > 0; + if (!result) { + break; + } + } + return R.ok(); + } + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java new file mode 100644 index 0000000..5a556eb --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java @@ -0,0 +1,118 @@ +package org.dromara.dms.dubbo; + + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.constant.DmsConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.uuid.Seq; +import org.dromara.dms.api.RemoteMaintInstanceService; +import org.dromara.dms.domain.*; +import org.dromara.dms.mapper.DmsBillsMaintDetailMapper; +import org.dromara.dms.mapper.DmsBillsMaintDetailProjectMapper; +import org.dromara.dms.mapper.DmsBillsMaintInstanceMapper; +import org.dromara.dms.mapper.DmsPlanMaintMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceService { + + private final DmsPlanMaintMapper dmsPlanMaintMapper; + + private final DmsBillsMaintInstanceMapper dmsBillsMaintInstanceMapper; + + private final DmsBillsMaintDetailMapper dmsBillsMaintDetailMapper; + + private final DmsBillsMaintDetailProjectMapper dmsBillsMaintDetailProjectMapper; + + + /** + * 新增保养工单 + * + * @param planMaintCode 保养计划编号 + * @return 结果 + */ + @Override + @Transactional( rollbackFor = Exception.class ) + public R insertDmsBillsMaintInstance(String planMaintCode) { + String planMaintCodeS = planMaintCode.replaceAll("\"", ""); + DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS); + List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); + if (planMaintDetails == null || planMaintDetails.isEmpty()) { + return R.fail(); + } + + DmsBillsMaintInstance dmsBillsMaintInstance = new DmsBillsMaintInstance(); + + + dmsBillsMaintInstance.setPlanBeginTime(dmsPlanMaint.getMaintTime()); + dmsBillsMaintInstance.setPlanMaintId(dmsPlanMaint.getPlanMaintId()); + dmsBillsMaintInstance.setBillsMaintCode(Seq.getId(Seq.maintInstanceSeqType, Seq.maintInstanceCode)); + dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT);//待保养 + dmsBillsMaintInstance.setMaintGroup(dmsPlanMaint.getMaintGroup()); + dmsBillsMaintInstance.setMaintSupervisor(dmsPlanMaint.getMaintSupervisor()); + dmsBillsMaintInstance.setMaintLevel(dmsPlanMaint.getMaintLevel()); + + + Date lubeTime = dmsPlanMaint.getMaintTime(); + Long timeLimit = dmsPlanMaint.getTimeLimit(); +// dmsBillsMaintInstance.setIsFlag(1l); +// dmsBillsMaintInstance.setWfProcessId(103l); + dmsBillsMaintInstance.setPlanEndTime(new Date(lubeTime.getTime() + timeLimit * 1000l)); + int i = dmsBillsMaintInstanceMapper.insert(dmsBillsMaintInstance); + +// DmsMaintInstanceActivity dmsMaintInstanceActivity = new DmsMaintInstanceActivity(); +// dmsMaintInstanceActivity.setMaintInstanceId(dmsBillsMaintInstance.getMaintInstanceId()); +// dmsMaintInstanceActivity.setProcessStepOrder(1L); +// int i1 = dmsMaintInstanceActivityMapper.insertDmsMaintInstanceActivity(dmsMaintInstanceActivity); + + batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId()); + + return R.ok(i); + } + + + public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId) { + List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); + List billsMaintDetails = new ArrayList<>(); + planMaintDetails.forEach(planMaintDetail -> { + DmsBillsMaintDetail dmsBillsMaintDetail = new DmsBillsMaintDetail(); + dmsBillsMaintDetail.setMaintInstanceId(maintInstanceId); + dmsBillsMaintDetail.setMachineId(planMaintDetail.getMachineId()); + dmsBillsMaintDetail.setMaintStationId(planMaintDetail.getMaintStationId()); + dmsBillsMaintDetail.setMaintStandardId(planMaintDetail.getMaintStandardId()); +// dmsBillsMaintDetail.setIsFlag(1L); + dmsBillsMaintDetail.setMaintStatus(1L); + billsMaintDetails.add(dmsBillsMaintDetail); + }); + +// dmsBillsMaintInstanceMapper.batchDmsBillsMaintDetail(billsMaintDetails); + dmsBillsMaintDetailMapper.insertBatch(billsMaintDetails); + ArrayList billsMaintDetailProjectList = new ArrayList<>(); + List list = dmsBillsMaintDetailMapper.selectDetailList(maintInstanceId); + for (DmsBillsMaintDetail detail : list) { + List projects = dmsBillsMaintDetailMapper.selectPrjectIds(detail.getMaintStationId()); + for (DmsBaseMaintProject project : projects) { + DmsBillsMaintDetailProject billsMaintDetailProject = new DmsBillsMaintDetailProject(); + billsMaintDetailProject.setBillsMaintDetailId(detail.getBillsMaintDetailId()); +// DmsBaseMaintStation station = dmsBillsMaintDetailMapper.selectMainStation(detail.getStationId()); + billsMaintDetailProject.setMaintProjectId(project.getMaintProjectId()); + billsMaintDetailProject.setMaintProjectName(project.getMaintProjectName()); + billsMaintDetailProject.setMaintProjectDesc(project.getMaintProjectDesc()); + billsMaintDetailProject.setMaintProjectStatus("2"); + billsMaintDetailProjectList.add(billsMaintDetailProject); + } + + } +// dmsBillsMaintInstanceMapper.batchDmsProject(list1); + dmsBillsMaintDetailProjectMapper.insertOrUpdateBatch(billsMaintDetailProjectList); + + } +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java new file mode 100644 index 0000000..8a1dc8b --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java @@ -0,0 +1,134 @@ +package org.dromara.dms.dubbo; + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.dms.api.RemoteRepairStanceService; +import org.dromara.dms.domain.DmsPlanRepair; +import org.dromara.dms.domain.DmsRepairInstance; +import org.dromara.dms.domain.DmsRepairInstanceActivity; +import org.dromara.dms.mapper.DmsPlanRepairMapper; +import org.dromara.dms.mapper.DmsRepairInstanceActivityMapper; +import org.dromara.dms.mapper.DmsRepairInstanceMapper; +import org.dromara.dms.service.IDmsPlanRepairService; +import org.dromara.system.api.model.LoginUser; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteRepairStanceServicempl implements RemoteRepairStanceService { + + private final DmsPlanRepairMapper dmsPlanRepairMapper; + + private final DmsRepairInstanceMapper dmsRepairInstanceMapper; + + private final DmsRepairInstanceActivityMapper dmsRepairInstanceActivityMapper; + + private final IDmsPlanRepairService dmsPlanRepairService; + + + + public static String lastDate="2000-01-01"; + //流水号 + public static int serialNumber = 0; + + + /** + * 新增检修工单;一是根据检修计划自动创建的检修工单,二是手工创建故障报修工单 + * + */ + @Override + @Transactional( rollbackFor = Exception.class ) + public R insertDmsRepairInstance(String planRepairCode) { + + String repairCode = planRepairCode.replaceAll("\"", ""); + DmsPlanRepair dmsPlanRepair = dmsPlanRepairMapper.selectDmsPlanRepairByPlanRepairCode(repairCode); + + Long timeLimit = dmsPlanRepair.getTimeLimit(); + if (timeLimit !=null){ + Long days = timeLimit / (24 * 60 * 60l); + Long hours = timeLimit % (24 * 60 * 60l); + dmsPlanRepair.setTimeLimitDays(days); + dmsPlanRepair.setTimeLimitHours(hours/(60*60l)); + } + + dmsPlanRepair.setCreateMethod("2");//1:手工创建工单,2:根据计划自动创建工单 + DmsRepairInstance dmsRepairInstance = new DmsRepairInstance(); +// dmsRepairInstance.setWfProcessId(101l); + dmsRepairInstance.setPlanRepairId(dmsPlanRepair.getPlanRepairId()); + dmsRepairInstance.setPlanBeginTime(dmsPlanRepair.getRepairTime()); + dmsRepairInstance.setInstanceType("2"); +// dmsRepairInstance.setRepairType(dmsPlanRepair.getRepairType()); +// dmsRepairInstance.setRepairGroup(dmsPlanRepair.getRepairGroup()); +// dmsRepairInstance.setRepairSupervisor(dmsPlanRepair.getRepairSupervisor()); + + +// WfProcessActivity wfProcessActivity = new WfProcessActivity(); +// wfProcessActivity.setWfProcessId(dmsRepairInstance.getWfProcessId()); +// Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(dmsRepairInstance.getWfProcessId()); + + // 创建一个SimpleDateFormat对象,用于格式化日期为"yyyyMMdd"格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + // 获取当前日期 + Date date = new Date(); + // 将当前日期格式化为字符串 + String format = sdf.format(date); + // 如果格式化后的日期字符串与上次记录的日期不同 + if (!format.equals(lastDate)){ + // 更新上次记录的日期为当前日期 + lastDate = format; + // 重置序列号为0 + serialNumber = 0; + } + // 增加序列号 + serialNumber++; + // 将序列号格式化为6位数,不足部分用0填充 + String serialNumberStr = String.format("%06d", serialNumber); + // 拼接日期和序列号生成每日代码 + String dailyCode = format + serialNumberStr; + // 设置维修单的代码 + dmsRepairInstance.setBillsRepairCode(dailyCode); + +// LoginUser user = SecurityUtils.getLoginUser(); + LoginUser user = LoginHelper.getLoginUser(); + if (dmsRepairInstance.getPlanBeginTime()!=null){ + DmsPlanRepair planRepair = dmsPlanRepairMapper.selectDmsPlanRepairByPlanRepairId(dmsRepairInstance.getPlanRepairId()); + Long limit = planRepair.getTimeLimit(); + Date planBeginTime = dmsRepairInstance.getPlanBeginTime(); + dmsRepairInstance.setPlanEndTime(new Date(planBeginTime.getTime() + limit*1000l)); + } +// dmsRepairInstance.setIsFlag("1"); + dmsRepairInstance.setBillsStatus("1"); + if (dmsRepairInstance.getInstanceType()==null) { + dmsRepairInstance.setInstanceType("1"); + } +// dmsRepairInstance.setApplyBy(user.getUsername()); +// dmsRepairInstance.setApplyTime(DateUtils.getNowDate()); +// dmsRepairInstance.setWfProcessId(101l); + int flag = dmsRepairInstanceMapper.insert(dmsRepairInstance); + //创建工单时新建工单实例节点 + + DmsRepairInstanceActivity dmsRepairInstanceActivity = new DmsRepairInstanceActivity(); + dmsRepairInstanceActivity.setRepairInstanceId(dmsRepairInstance.getRepairInstanceId()); + dmsRepairInstanceActivity.setProcessHandleStatus("1"); + //先写死第一步所对应的步骤,后续通过wfProcessId来查询步骤对应的id +// dmsRepairInstanceActivity.setProcessActivityId(aLong); + dmsRepairInstanceActivity.setProcessStepOrder(1l); + dmsRepairInstanceActivity.setCreateBy(user.getUserId()); + dmsRepairInstanceActivity.setCreateTime(DateUtils.getNowDate()); + dmsRepairInstanceActivity.setStartTime(DateUtils.getNowDate()); +// dmsRepairInstanceActivity.setRepairType(dmsRepairInstance.getRepairType()); +// dmsRepairInstanceActivity.setRepairGroup(dmsRepairInstance.getRepairGroup()); +// dmsRepairInstanceActivity.setRepairSupervisor(dmsRepairInstance.getRepairSupervisor()); + dmsRepairInstanceActivityMapper.insert(dmsRepairInstanceActivity); + return R.ok(flag); + } + +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java new file mode 100644 index 0000000..bc120a7 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java @@ -0,0 +1,147 @@ +package org.dromara.job.service; + +import com.aizuda.snailjob.client.job.core.dto.JobResponseVO; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.common.core.enums.StatusEnum; +//import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.domain.R; +import org.dromara.job.api.RemoteJobService; +import org.dromara.job.api.model.DmsJobEntity; +import org.springframework.stereotype.Service; + +/** + * 定时任务调度信息 服务层 + * + * @author ruoyi + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteJobServiceImpl implements RemoteJobService { + +// private final JobMapper jobMapper; + + /** + * 新增集群模式的任务 + * + * @param dmsJobEntity 实体类 + * @return 包含任务id的R对象 + */ + @Override + public R addClusterJob(DmsJobEntity dmsJobEntity) { + try { + Long jobId = SnailJobOpenApi.addClusterJob() + .setRouteKey(dmsJobEntity.getRouteKey())//执行器路由策略:(1:一致性哈希;2:随机;3:LRU;4:轮询;5:第一个;6:最后一个;) + .setJobName(dmsJobEntity.getJobName())//任务名称 + .setExecutorInfo(dmsJobEntity.getExecutorInfo())//执行器名称 + .setExecutorTimeout(dmsJobEntity.getExecutorTimeout())//任务执行超时时间(秒) + .setDescription(dmsJobEntity.getDescription())//任务描述 + .setBlockStrategy(dmsJobEntity.getBlockStrategy())//阻塞策略:1、丢弃 2、覆盖 3、并行 + .setMaxRetryTimes(dmsJobEntity.getMaxRetryTimes())//最大重试次数 + .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 + .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 + .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 + .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) + .execute(); + if (jobId != null) { + return R.ok(jobId); + } else { + return R.fail("新增集群任务失败"); + } + } catch (Exception e) { + // 根据SnailJob实际的异常类型和错误处理机制,可能需要更具体的异常捕获 + return R.fail("新增集群任务异常: " + e.getMessage()); + } + } + + /** + * 修改集群模式的任务 + * @param dmsJobEntity 实体类 + * @return 表示操作结果的R对象 + */ + @Override + public R updateClusterJob(DmsJobEntity dmsJobEntity) { + try { + boolean success = SnailJobOpenApi.updateClusterJob(dmsJobEntity.getId()) + .setRouteKey(dmsJobEntity.getRouteKey())//执行器路由策略:(1:一致性哈希;2:随机;3:LRU;4:轮询;5:第一个;6:最后一个;) + .setJobName(dmsJobEntity.getJobName())//任务名称 + .setExecutorInfo(dmsJobEntity.getExecutorInfo())//执行器名称 + .setExecutorTimeout(dmsJobEntity.getExecutorTimeout())//任务执行超时时间(秒) + .setDescription(dmsJobEntity.getDescription())//任务描述 + .setBlockStrategy(dmsJobEntity.getBlockStrategy())//阻塞策略:1、丢弃 2、覆盖 3、并行 + .setMaxRetryTimes(dmsJobEntity.getMaxRetryTimes())//最大重试次数 + .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 + .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 + .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 + .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) + .execute(); + return success ? R.ok() : R.fail("修改集群任务失败"); + } catch (Exception e) { + return R.fail("修改集群任务异常: " + e.getMessage()); + } + } + + /** + * 查看任务详情 + * + * @param jobId 任务ID + * @return 包含任务详情的R对象 + */ + @Override + public R queryJob(Long jobId) { + try { + JobResponseVO jobDetail = SnailJobOpenApi.getJobDetail(jobId).execute(); + if (jobDetail != null) { + return R.ok(jobDetail); + } else { + return R.fail("查询任务详情失败或任务不存在"); + } + } catch (Exception e) { + return R.fail("查询任务详情异常: " + e.getMessage()); + } + } + + /** + * 更新定时任务状态 + * + * @param jobId 定时任务ID + * @param status 状态 (NO:0 ; YES:1) + * @return 表示操作结果的R对象 + */ + @Override + public R updateJobStatus(Long jobId, Long status) { + try { + boolean success = SnailJobOpenApi + .updateJobStatus(jobId) + .setStatus(StatusEnum.YES.getStatus().equals(status.intValue()) ? StatusEnum.YES : StatusEnum.NO) + .execute(); + return success ? R.ok() : R.fail("更新任务状态失败"); + } catch (Exception e) { + return R.fail("更新任务状态异常: " + e.getMessage()); + } + } + + /** + * 自己写的 删除任务;官网文档的SnailJobOpenApi里没有 + */ +/* @Override + public Boolean deleteJob(Long jobId) { // 如果需要统一返回R类型,此方法也应修改 + int i = jobMapper.deleteById(jobId); + return i > 0; + }*/ + // 若 deleteJob 方法也需要改造: + /* + @Override + public R deleteJob(Long jobId) { + try { + // 假设 jobMapper.deleteById 成功返回大于0的数,失败则返回0或抛异常 + int i = jobMapper.deleteById(jobId); + return i > 0 ? R.ok() : R.fail("删除任务失败"); + } catch (Exception e) { + return R.fail("删除任务异常: " + e.getMessage()); + } + } + */ +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java new file mode 100644 index 0000000..feb0e06 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java @@ -0,0 +1,44 @@ +package org.dromara.job.snailjob; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; +import org.dromara.dms.api.RemoteInspectInstanceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "stanceInspect") +public class DmsInspectStanceExecutor { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @DubboReference + private final RemoteInspectInstanceService remoteInspectInstanceService; + + // 推荐使用构造函数注入(Spring 4.3+支持隐式@Autowired) + public DmsInspectStanceExecutor(RemoteInspectInstanceService remoteInspectInstanceService) { + this.remoteInspectInstanceService = remoteInspectInstanceService; + } + + + public ExecuteResult jobExecute(JobArgs jobArgs) { + try { + String jsonStr = String.valueOf(jobArgs.getJobParams()); + // 将 JSON 字符串转为 Map + Map paramMap = objectMapper.readValue(jsonStr, Map.class); + String planCode = (String) paramMap.get("planInspectCode"); + + R instance = remoteInspectInstanceService.insertInspectInstance(planCode); + return ExecuteResult.success(instance); + } catch (Exception e) { + return ExecuteResult.failure(e.getMessage()); + } + } + +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java new file mode 100644 index 0000000..54a8975 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java @@ -0,0 +1,45 @@ +package org.dromara.job.snailjob; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; +import org.dromara.dms.api.RemoteLubeInstanceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "stanceLube") +public class DmsLubeStanceExecutor { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + + @DubboReference + private final RemoteLubeInstanceService dmsBillsLubeInstanceService; + + public DmsLubeStanceExecutor(RemoteLubeInstanceService dmsBillsLubeInstanceService) { + this.dmsBillsLubeInstanceService = dmsBillsLubeInstanceService; + } + + + public ExecuteResult jobExecute(JobArgs jobArgs) { + try { + String jsonStr = String.valueOf(jobArgs.getJobParams()); + // 将 JSON 字符串转为 Map + Map paramMap = objectMapper.readValue(jsonStr, Map.class); + String planCode = (String) paramMap.get("planLubeCode"); + + R instance = dmsBillsLubeInstanceService.insertLubeInstance(planCode); + return ExecuteResult.success(instance); + } catch (Exception e) { + return ExecuteResult.failure(e.getMessage()); + } + } + + +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java new file mode 100644 index 0000000..95f53ee --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java @@ -0,0 +1,43 @@ +package org.dromara.job.snailjob; + + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; +import org.dromara.dms.api.RemoteMaintInstanceService; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "stanceMaint") +public class DmsMaintStanceExecutor { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @DubboReference + private final RemoteMaintInstanceService dmsBillsMaintInstanceService; + + public DmsMaintStanceExecutor(RemoteMaintInstanceService dmsBillsMaintInstanceService) { + this.dmsBillsMaintInstanceService = dmsBillsMaintInstanceService; + } + + + public ExecuteResult jobExecute(JobArgs jobArgs) { + try { + String jsonStr = String.valueOf(jobArgs.getJobParams()); + // 将 JSON 字符串转为 Map + Map paramMap = objectMapper.readValue(jsonStr, Map.class); + String planCode = (String) paramMap.get("planMaintCode"); + + R instance = dmsBillsMaintInstanceService.insertDmsBillsMaintInstance(planCode); + return ExecuteResult.success(instance); + } catch (Exception e) { + return ExecuteResult.failure(e.getMessage()); + } + } + +} From 042f1d4e40cbb6225863bc0b819d8494443e94f7 Mon Sep 17 00:00:00 2001 From: zch Date: Mon, 12 May 2025 16:01:48 +0800 Subject: [PATCH 03/21] =?UTF-8?q?build(hwmom):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ruoyi-api/pom.xml 中添加 hwmom-api-dms 和 ruoyi-api-job 模块 - 更新 hwmom-dms 和 ruoyi-job 模块中的依赖 - 在根 pom.xml 中更新 snailjob 版本至1.4.0 --- pom.xml | 2 +- ruoyi-api/pom.xml | 3 +++ ruoyi-modules/hwmom-dms/pom.xml | 36 +++++++++++++++++++++++++++ ruoyi-modules/ruoyi-job/pom.xml | 44 +++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0497cad..b415946 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ 5.8.31 3.37.0 2.2.7 - 1.1.2 + 1.4.0 1.39.0 1.18.34 7.4 diff --git a/ruoyi-api/pom.xml b/ruoyi-api/pom.xml index dd4b4b3..10a5bd0 100644 --- a/ruoyi-api/pom.xml +++ b/ruoyi-api/pom.xml @@ -16,6 +16,9 @@ hwmom-api-mes hwmom-api-pda hwmom-api-workflow + + hwmom-api-dms + ruoyi-api-job ruoyi-api diff --git a/ruoyi-modules/hwmom-dms/pom.xml b/ruoyi-modules/hwmom-dms/pom.xml index 2f2bccd..336a6a4 100644 --- a/ruoyi-modules/hwmom-dms/pom.xml +++ b/ruoyi-modules/hwmom-dms/pom.xml @@ -144,6 +144,42 @@ + + + + + + org.dromara + ruoyi-api-job + ${revision} + compile + + + + org.dromara + hwmom-api-dms + ${revision} + compile + + diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/ruoyi-job/pom.xml index 5de4ab6..20ea971 100644 --- a/ruoyi-modules/ruoyi-job/pom.xml +++ b/ruoyi-modules/ruoyi-job/pom.xml @@ -75,6 +75,50 @@ ruoyi-api-system + + + + + com.aizuda + snail-job-client-retry-core + ${snailjob.version} + + + + + com.aizuda + snail-job-client-job-core + ${snailjob.version} + + + + org.dromara + hwmom-api-dms + 2.2.2 + + + + + org.dromara + ruoyi-api-job + 2.2.2 + compile + + + + + From c776ff3fce30e0d39044881e5b0cc2ce1ddae5a3 Mon Sep 17 00:00:00 2001 From: zch Date: Mon, 12 May 2025 16:02:38 +0800 Subject: [PATCH 04/21] =?UTF-8?q?refactor(dms):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E5=B7=A5=E5=8D=95=E8=AF=A6=E7=BB=86=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -将 selectDetailList 方法的返回类型从 DmsBillsMaintDetailVo 改为 DmsBillsMaintDetail - 将 selectPrjectIds 方法的返回类型从 DmsBaseMaintProjectVo 改为 DmsBaseMaintProject - 更新相应的 XML 文件以匹配新的返回类型- 在 DmsBillsMaintInstanceServiceImpl 中进行相应的类型转换 --- .../org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java | 5 +++-- .../service/impl/DmsBillsMaintInstanceServiceImpl.java | 8 ++++---- .../resources/mapper/dms/DmsBillsMaintDetailMapper.xml | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java index 9b575c2..b50cc64 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java @@ -1,6 +1,7 @@ package org.dromara.dms.mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.dms.domain.DmsBaseMaintProject; import org.dromara.dms.domain.DmsBillsMaintDetail; import org.dromara.dms.domain.DmsBillsMaintInstance; import org.dromara.dms.domain.vo.DmsBaseMaintProjectVo; @@ -25,11 +26,11 @@ public interface DmsBillsMaintDetailMapper extends BaseMapperPlus selectDmsBillsMaintDetailJoinList(DmsBillsMaintDetail dmsBillsMaintDetail); - List selectDetailList(Long maintInstanceId); + List selectDetailList(Long maintInstanceId); DmsBaseMaintStationVo selectMainStation(Long stationId); - List selectPrjectIds(Long stationId); + List selectPrjectIds(Long stationId); /** * 查询最新一条保养工单,Join 第一步节点 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java index 6cfe550..a0efe6b 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java @@ -231,10 +231,10 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS dmsBillsMaintDetailMapper.insertBatch(billsMaintDetails); ArrayList detailprojectList = new ArrayList<>(); - List list = dmsBillsMaintDetailMapper.selectDetailList(maintInstanceId); - for (DmsBillsMaintDetailVo detail : list) { - List projects = dmsBillsMaintDetailMapper.selectPrjectIds(detail.getMaintStationId()); - for (DmsBaseMaintProjectVo project : projects) { + List list = dmsBillsMaintDetailMapper.selectDetailList(maintInstanceId); + for (DmsBillsMaintDetail detail : list) { + List projects = dmsBillsMaintDetailMapper.selectPrjectIds(detail.getMaintStationId()); + for (DmsBaseMaintProject project : projects) { DmsBillsMaintDetailProject detailproject = new DmsBillsMaintDetailProject(); detailproject.setBillsMaintDetailId(detail.getBillsMaintDetailId()); // DmsBaseMaintStation station = dmsBillsMaintDetailMapper.selectMainStation(detail.getStationId()); diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml index 5565270..aa4fa43 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml @@ -93,7 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -103,7 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select * from dms_base_maint_station where maint_station_id = #{stationId} - SELECT x.maint_project_id,a.maint_project_name,a.maint_project_desc FROM dms_base_station_project x left join dms_base_maint_project a on x.maint_project_id = a.maint_project_id From 8c197350db2f2134f080da3650c3609151b3b4ec Mon Sep 17 00:00:00 2001 From: zch Date: Mon, 12 May 2025 16:03:36 +0800 Subject: [PATCH 05/21] =?UTF-8?q?feat(dms):=20=E6=B7=BB=E5=8A=A0=E6=B6=A6?= =?UTF-8?q?=E6=BB=91=E8=AE=A1=E5=88=92=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增润滑计划任务调度相关代码 - 实现润滑计划任务的创建、更新和状态管理 - 优化了任务调度相关的数据结构和接口 - 添加了任务调度的分布式事务管理 --- .../org/dromara/dms/domain/DmsPlanLube.java | 2 - .../dromara/dms/domain/DmsPlanLubeDetail.java | 2 +- .../dromara/dms/domain/bo/DmsPlanLubeBo.java | 2 +- .../impl/DmsPlanLubeDetailServiceImpl.java | 8 +- .../service/impl/DmsPlanLubeServiceImpl.java | 111 +++++++++++++++--- .../mapper/dms/DmsPlanLubeMapper.xml | 10 +- 6 files changed, 105 insertions(+), 30 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java index f700831..6b3be28 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java @@ -99,8 +99,6 @@ public class DmsPlanLube extends TenantEntity { private String cronExpression; - - /** * 润滑计划明细列表 */ diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java index b1b526a..c9181b0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java @@ -35,7 +35,7 @@ public class DmsPlanLubeDetail extends TenantEntity { /** * 设备ID,关联prod_base_machine_info的device_id */ - private Long machineId; + private Long deviceId; /** * 润滑部位,关联润滑部位主键 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java index 942f8f3..b85233e 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java @@ -22,7 +22,7 @@ import java.util.List; */ @Data @EqualsAndHashCode(callSuper = true) -@AutoMapper(target = DmsPlanLube.class, reverseConvertGenerate = false) +@AutoMapper(target = DmsPlanLube.class) public class DmsPlanLubeBo extends BaseEntity { /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java index e3fe697..3d7a430 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java @@ -81,14 +81,14 @@ public class DmsPlanLubeDetailServiceImpl implements IDmsPlanLubeDetailService { .leftJoin(DmsBaseLubeStation.class,DmsBaseLubeStation::getLubeStationId,DmsPlanLubeDetail::getLubeStationId) //关联查询设备 .select(DmsBaseMachineInfo::getMachineName) - .leftJoin(DmsBaseMachineInfo.class,DmsBaseMachineInfo::getMachineId,DmsPlanLubeDetail::getMachineId) + .leftJoin(DmsBaseMachineInfo.class,DmsBaseMachineInfo::getMachineId,DmsPlanLubeDetail::getDeviceId) //关联查询润滑标准 .select(DmsBaseLubeStandard::getLubeStandardCode) .leftJoin(DmsBaseLubeStandard.class,DmsBaseLubeStandard::getLubeStandardId,DmsPlanLubeDetail::getLubeStandardId) .eq(bo.getPlanLubeDetailId() != null, DmsPlanLubeDetail::getPlanLubeDetailId, bo.getPlanLubeDetailId()) .eq(bo.getPlanLubeId() != null, DmsPlanLubeDetail::getPlanLubeId, bo.getPlanLubeId()) - .eq(bo.getDeviceId() != null, DmsPlanLubeDetail::getMachineId, bo.getDeviceId()) + .eq(bo.getDeviceId() != null, DmsPlanLubeDetail::getDeviceId, bo.getDeviceId()) .eq(bo.getLubeStationId() != null, DmsPlanLubeDetail::getLubeStationId, bo.getLubeStationId()) .eq(bo.getLubeStandardId() != null, DmsPlanLubeDetail::getLubeStandardId, bo.getLubeStandardId()) .eq(StringUtils.isNotBlank(bo.getOperationDescription()), DmsPlanLubeDetail::getOperationDescription, bo.getOperationDescription()) @@ -160,14 +160,14 @@ public class DmsPlanLubeDetailServiceImpl implements IDmsPlanLubeDetailService { MPJLambdaWrapper wrapper = JoinWrappers.lambda(DmsPlanLubeDetail.class) .selectAs(DmsPlanLubeDetail::getPlanLubeDetailId, DmsPlanLubeDetail::getPlanLubeDetailId) .selectAs(DmsPlanLubeDetail::getPlanLubeId, DmsPlanLubeDetail::getPlanLubeId) - .selectAs(DmsPlanLubeDetail::getMachineId, DmsPlanLubeDetail::getMachineId) + .selectAs(DmsPlanLubeDetail::getDeviceId, DmsPlanLubeDetail::getDeviceId) .selectAs(DmsPlanLubeDetail::getLubeStationId, DmsPlanLubeDetail::getLubeStationId) .selectAs(DmsPlanLubeDetail::getLubeStandardId, DmsPlanLubeDetail::getLubeStandardId) .selectAs(DmsPlanLubeDetail::getOperationDescription, DmsPlanLubeDetail::getOperationDescription) .selectAs(DmsBaseMachineInfo::getMachineName, DmsPlanLubeDetail::getMachineName) .selectAs(DmsBaseLubeStation::getLubeStationName, DmsPlanLubeDetail::getLubeStationName) .selectAs(DmsBaseLubeStandard::getLubeStandardCode, DmsPlanLubeDetail::getLubeStandardCode) - .leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId, DmsPlanLubeDetail::getMachineId) + .leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId, DmsPlanLubeDetail::getDeviceId) .leftJoin(DmsBaseLubeStation.class, DmsBaseLubeStation::getDeviceTypeId, DmsBaseMachineInfo::getMachineId) .leftJoin(DmsBaseLubeStandard.class, DmsBaseLubeStandard::getLubeStandardId, DmsPlanLubeDetail::getLubeStandardId) .eq(DmsPlanLubeDetail::getPlanLubeId, planLubeId); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java index 23095e8..582e64e 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java @@ -3,7 +3,10 @@ package org.dromara.dms.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.seata.spring.annotation.GlobalTransactional; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; @@ -21,12 +24,20 @@ import org.dromara.dms.utils.CronUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; - import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; +import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.common.core.enums.JobBlockStrategyEnum; +import com.aizuda.snailjob.client.job.core.dto.JobResponseVO; +import com.aizuda.snailjob.common.core.enums.StatusEnum; +import org.dromara.job.api.model.DmsJobEntity; +import org.dromara.job.api.RemoteJobService; + /** * 润滑计划Service业务层处理 * @@ -41,6 +52,9 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { private final DmsBillsLubeInstanceMapper dmsBillsLubeInstanceMapper; + @DubboReference + private final RemoteJobService remoteJobService; + private static final Long SECONDS_PER_DAY = 24 * 60 * 60L; private static final Long SECONDS_PER_HOUR = 60 * 60L; @@ -160,7 +174,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { * @return 是否新增成功 */ @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) public Boolean insertByBo(DmsPlanLubeBo bo) { // 生成新的润滑计划编号 String planLubeCode = Seq.getId(Seq.dmsPlanLubeSeqType, Seq.dmsPlanLubeCode); @@ -179,15 +193,34 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { // 添加任务到远程服务并获取任务ID R jobIdR = remoteJobService.add(SecurityConstants.INNER, job);*/ - // 通过cron表达式获取下一次执行时间 - String cronExpression = bo.getCronExpression(); - if (StringUtils.isNotEmpty(cronExpression)) { - Date nextExecution = CronUtils.getNextExecution(cronExpression); - bo.setLubeTime(nextExecution); + if(bo.getActiveFlag().equals("1")){//激活标识(1是 0否) + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("润滑计划编号" + planLubeCode + "工单任务") + .setExecutorInfo("stanceLube")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planLubeCode") + .setExtAttrs(planLubeCode); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long jobId = longR.getData(); + + + // 通过cron表达式获取下一次执行时间 + String cronExpression = bo.getCronExpression(); + if (StringUtils.isNotEmpty(cronExpression)) { + Date nextExecution = CronUtils.getNextExecution(cronExpression); + bo.setLubeTime(nextExecution); + } + + // 设置润滑计划的任务ID + bo.setJobId(jobId); } - // 设置润滑计划的任务ID -/* bo.setJobId(jobIdR.getData().longValue());*/ // 计算润滑计划的时间限制(天和小时) Long timeLimitDays = bo.getTimeLimitDays() == null ? 0L : bo.getTimeLimitDays(); @@ -214,7 +247,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { @Override @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanLubeBo bo) { -/* Long jobId = bo.getJobId();*/ + Long jobId = bo.getJobId(); String cronExpression = bo.getCronExpression(); if (StringUtils.isNotEmpty(cronExpression)) { @@ -222,9 +255,9 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { Date nextExecution = CronUtils.getNextExecution(cronExpression); bo.setLubeTime(nextExecution); -/* if (jobId == null) { - // 如果没有关联任务,创建新任务 - String planLubeCode = bo.getPlanLubeCode(); + if (bo.getActiveFlag().equals("1")){//激活标识(1是 0否) + if (jobId == null ) {// 如果没有关联任务,创建新任务 +/* String planLubeCode = bo.getPlanLubeCode(); SysJob job = new SysJob(); job.setJobName("润滑计划编号" + planLubeCode + "工单任务"); job.setJobGroup("DEFAULT"); @@ -234,15 +267,59 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { job.setConcurrent("1"); job.setStatus("1"); R jobIdR = remoteJobService.add(SecurityConstants.INNER, job); - bo.setJobId(jobIdR.getData().longValue()); - } else { - // 更新现有任务 + bo.setJobId(jobIdR.getData().longValue());*/ + String planLubeCode = bo.getPlanLubeCode(); + Long newJobId = SnailJobOpenApi.addClusterJob() + .setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("润滑计划编号" + planLubeCode + "工单任务") + .setExecutorInfo("stanceLube")//执行器名称 + .addArgsStr("planLubeCode", planLubeCode)//执行任务参数 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .execute(); + bo.setJobId(newJobId); + } else {// 如果有关联任务,更新状态 +/* // 更新现有任务 SysJob sysJob = remoteJobService.getJobInfo(jobId, SecurityConstants.INNER); if (sysJob != null) { sysJob.setCronExpression(bo.getCronExpression()); remoteJobService.update(SecurityConstants.INNER, sysJob); + }*/ + String planLubeCode = bo.getPlanLubeCode(); + JobResponseVO execute = SnailJobOpenApi.getJobDetail(jobId).execute(); + if (execute != null) { + SnailJobOpenApi + .updateJobStatus(jobId) + .setStatus(StatusEnum.YES) + .execute(); + SnailJobOpenApi.updateClusterJob(jobId) + .setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("润滑计划编号" + planLubeCode + "工单任务") + .setExecutorInfo("stanceLube")//执行器名称 + .addArgsStr("planLubeCode", planLubeCode)//执行任务参数 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .execute(); + } + } - }*/ + }else{//如果激活状态为0(1是 0否) + if (jobId != null) {//如果关联了任务,则任务状态为关闭 + SnailJobOpenApi + .updateJobStatus(jobId) + .setStatus(StatusEnum.NO)//任务状态(0:关闭;1:开启) + .execute(); + } + } + } // 计算润滑计划的时间限制(天和小时) diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml index f53d52f..4039037 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -47,9 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" From cd5cc3de15a743c1f7f714ba0be2ff6b118e6359 Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 13 May 2025 16:49:36 +0800 Subject: [PATCH 06/21] =?UTF-8?q?update=20=E4=BF=9D=E5=85=BB=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DmsBillsMaintInstanceController.java | 8 +-- .../dms/domain/DmsBillsMaintInstance.java | 8 ++- .../domain/bo/DmsBillsMaintInstanceBo.java | 5 ++ .../domain/vo/DmsBillsMaintInstanceVo.java | 5 +- .../IDmsBillsMaintInstanceService.java | 4 +- .../DmsBillsMaintInstanceServiceImpl.java | 54 +++++++++---------- 6 files changed, 48 insertions(+), 36 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java index f631248..3dbdb8d 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java @@ -77,8 +77,8 @@ public class DmsBillsMaintInstanceController extends BaseController { @Log(title = "保养工单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody DmsBillsMaintInstanceBo bo) { - return toAjax(dmsBillsMaintInstanceService.insertByBo(bo)); + public R add(@Validated(AddGroup.class) @RequestBody DmsBillsMaintInstanceBo bo) { + return R.ok(dmsBillsMaintInstanceService.insertByBo(bo)); } /** @@ -88,8 +88,8 @@ public class DmsBillsMaintInstanceController extends BaseController { @Log(title = "保养工单", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsMaintInstanceBo bo) { - return toAjax(dmsBillsMaintInstanceService.updateByBo(bo)); + public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsMaintInstanceBo bo) { + return R.ok(dmsBillsMaintInstanceService.updateByBo(bo)); } /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsMaintInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsMaintInstance.java index 9e9acef..8967ca6 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsMaintInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsMaintInstance.java @@ -30,7 +30,8 @@ public class DmsBillsMaintInstance extends TenantEntity { /** * 主键标识 */ - @TableId(value = "maint_instance_id", type = IdType.AUTO) +// @TableId(value = "maint_instance_id", type = IdType.AUTO) + @TableId(value = "maint_instance_id") private Long maintInstanceId; /** @@ -99,6 +100,11 @@ public class DmsBillsMaintInstance extends TenantEntity { */ private String remark; + /** + * 流程状态 + */ + private String status; + @TableField(exist = false) private String maintStatusStr; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintInstanceBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintInstanceBo.java index 3a037fe..51dd78b 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintInstanceBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintInstanceBo.java @@ -94,4 +94,9 @@ public class DmsBillsMaintInstanceBo extends BaseEntity { private String maintStatusStr; + /** + * 流程状态 + */ + private String status; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java index f00ea46..a05d046 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java @@ -118,5 +118,8 @@ public class DmsBillsMaintInstanceVo implements Serializable { @ExcelProperty(value = "备注") private String remark; - + /** + * 流程状态 + */ + private String status; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java index 1ad73d9..1befd22 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java @@ -49,7 +49,7 @@ public interface IDmsBillsMaintInstanceService { * @param bo 保养工单 * @return 是否新增成功 */ - Boolean insertByBo(DmsBillsMaintInstanceBo bo); + DmsBillsMaintInstanceVo insertByBo(DmsBillsMaintInstanceBo bo); /** * 修改保养工单 @@ -57,7 +57,7 @@ public interface IDmsBillsMaintInstanceService { * @param bo 保养工单 * @return 是否修改成功 */ - Boolean updateByBo(DmsBillsMaintInstanceBo bo); + DmsBillsMaintInstanceVo updateByBo(DmsBillsMaintInstanceBo bo); /** * 校验并批量删除保养工单信息 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java index a0efe6b..c88b909 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java @@ -63,7 +63,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS * @return 保养工单 */ @Override - public DmsBillsMaintInstanceVo queryById(Long maintInstanceId){ + public DmsBillsMaintInstanceVo queryById(Long maintInstanceId) { return baseMapper.selectVoById(maintInstanceId); } @@ -96,26 +96,24 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS private MPJLambdaWrapper buildQueryWrapper(DmsBillsMaintInstanceBo bo) { Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsBillsMaintInstance.class) - .selectAll(DmsBillsMaintInstance.class) - + .selectAll(DmsBillsMaintInstance.class) .select(DmsPlanMaint::getMaintSupervisor) - .selectAs(DmsPlanMaint::getRemark,DmsBillsMaintInstance::getPlanRemark) - .leftJoin(DmsPlanMaint.class,DmsPlanMaint::getPlanMaintId,DmsBillsMaintInstance::getPlanMaintId) - - .eq(bo.getMaintInstanceId() != null, DmsBillsMaintInstance::getMaintInstanceId, bo.getMaintInstanceId()) - .eq(bo.getPlanMaintId() != null, DmsBillsMaintInstance::getPlanMaintId, bo.getPlanMaintId()) - .eq(bo.getWfDefinitionId() != null, DmsBillsMaintInstance::getWfDefinitionId, bo.getWfDefinitionId()) - .eq(StringUtils.isNotBlank(bo.getBillsMaintCode()), DmsBillsMaintInstance::getBillsMaintCode, bo.getBillsMaintCode()) - .eq(StringUtils.isNotBlank(bo.getMaintGroup()), DmsBillsMaintInstance::getMaintGroup, bo.getMaintGroup()) - .eq(StringUtils.isNotBlank(bo.getMaintSupervisor()), DmsBillsMaintInstance::getMaintSupervisor, bo.getMaintSupervisor()) - .eq(bo.getMaintLevel() != null , DmsBillsMaintInstance::getMaintLevel, bo.getMaintLevel()) - .eq(bo.getPlanBeginTime() != null, DmsBillsMaintInstance::getPlanBeginTime, bo.getPlanBeginTime()) - .eq(bo.getRealBeginTime() != null, DmsBillsMaintInstance::getRealBeginTime, bo.getRealBeginTime()) - .eq(bo.getPlanEndTime() != null, DmsBillsMaintInstance::getPlanEndTime, bo.getPlanEndTime()) - .eq(bo.getRealEndTime() != null, DmsBillsMaintInstance::getRealEndTime, bo.getRealEndTime()) - .eq(bo.getMaintStatus() != null, DmsBillsMaintInstance::getMaintStatus, bo.getMaintStatus()) - .eq(bo.getMaintCompRate() != null, DmsBillsMaintInstance::getMaintCompRate, bo.getMaintCompRate()) - .orderByDesc(DmsBillsMaintInstance::getCreateTime); + .selectAs(DmsPlanMaint::getRemark, DmsBillsMaintInstance::getPlanRemark) + .leftJoin(DmsPlanMaint.class, DmsPlanMaint::getPlanMaintId, DmsBillsMaintInstance::getPlanMaintId) + .eq(bo.getMaintInstanceId() != null, DmsBillsMaintInstance::getMaintInstanceId, bo.getMaintInstanceId()) + .eq(bo.getPlanMaintId() != null, DmsBillsMaintInstance::getPlanMaintId, bo.getPlanMaintId()) + .eq(bo.getWfDefinitionId() != null, DmsBillsMaintInstance::getWfDefinitionId, bo.getWfDefinitionId()) + .eq(StringUtils.isNotBlank(bo.getBillsMaintCode()), DmsBillsMaintInstance::getBillsMaintCode, bo.getBillsMaintCode()) + .eq(StringUtils.isNotBlank(bo.getMaintGroup()), DmsBillsMaintInstance::getMaintGroup, bo.getMaintGroup()) + .eq(StringUtils.isNotBlank(bo.getMaintSupervisor()), DmsBillsMaintInstance::getMaintSupervisor, bo.getMaintSupervisor()) + .eq(bo.getMaintLevel() != null, DmsBillsMaintInstance::getMaintLevel, bo.getMaintLevel()) + .eq(bo.getPlanBeginTime() != null, DmsBillsMaintInstance::getPlanBeginTime, bo.getPlanBeginTime()) + .eq(bo.getRealBeginTime() != null, DmsBillsMaintInstance::getRealBeginTime, bo.getRealBeginTime()) + .eq(bo.getPlanEndTime() != null, DmsBillsMaintInstance::getPlanEndTime, bo.getPlanEndTime()) + .eq(bo.getRealEndTime() != null, DmsBillsMaintInstance::getRealEndTime, bo.getRealEndTime()) + .eq(bo.getMaintStatus() != null, DmsBillsMaintInstance::getMaintStatus, bo.getMaintStatus()) + .eq(bo.getMaintCompRate() != null, DmsBillsMaintInstance::getMaintCompRate, bo.getMaintCompRate()) + .orderByDesc(DmsBillsMaintInstance::getCreateTime); return lqw; } @@ -126,14 +124,14 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS * @return 是否新增成功 */ @Override - public Boolean insertByBo(DmsBillsMaintInstanceBo bo) { + public DmsBillsMaintInstanceVo insertByBo(DmsBillsMaintInstanceBo bo) { DmsBillsMaintInstance add = MapstructUtils.convert(bo, DmsBillsMaintInstance.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setMaintInstanceId(add.getMaintInstanceId()); } - return flag; + return MapstructUtils.convert(add, DmsBillsMaintInstanceVo.class); } /** @@ -143,16 +141,16 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS * @return 是否修改成功 */ @Override - public Boolean updateByBo(DmsBillsMaintInstanceBo bo) { + public DmsBillsMaintInstanceVo updateByBo(DmsBillsMaintInstanceBo bo) { DmsBillsMaintInstance update = MapstructUtils.convert(bo, DmsBillsMaintInstance.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + return MapstructUtils.convert(update, DmsBillsMaintInstanceVo.class); } /** * 保存前的数据校验 */ - private void validEntityBeforeSave(DmsBillsMaintInstance entity){ + private void validEntityBeforeSave(DmsBillsMaintInstance entity) { //TODO 做一些数据校验,如唯一约束 } @@ -165,7 +163,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; @@ -178,7 +176,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS * @return 结果 */ @Override - @Transactional( rollbackFor= Exception.class) + @Transactional(rollbackFor = Exception.class) public int insertDmsBillsMaintInstance(String planMaintCode) { String planMaintCodeS = planMaintCode.replaceAll("\"", ""); DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS); @@ -205,7 +203,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS dmsBillsMaintInstance.setPlanEndTime(new Date(lubeTime.getTime() + timeLimit * 1000l)); int insert = baseMapper.insert(dmsBillsMaintInstance); -/* DmsBillMaintInstanceActivity表弃用 */ + /* DmsBillMaintInstanceActivity表弃用 */ /* DmsBillMaintInstanceActivity dmsMaintInstanceActivity = new DmsMaintInstanceActivity(); dmsMaintInstanceActivity.setMaintInstanceId(dmsBillsMaintInstance.getMaintInstanceId()); dmsMaintInstanceActivity.setProcessStepOrder(1L); From 52c730ca42b9b952680e55b4087f1abfd025cdde Mon Sep 17 00:00:00 2001 From: zch Date: Tue, 13 May 2025 16:51:03 +0800 Subject: [PATCH 07/21] =?UTF-8?q?refactor(dms):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=94=9F=E6=88=90=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E4=BB=A3=E7=A0=81=EF=BC=88=E6=9C=AA=E8=83=BD=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E6=B5=8B=E8=AF=95=E6=B5=81=E7=A8=8B,=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=B0=83=E7=94=A8dubbo=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E6=9C=8D=E5=8A=A1=E4=B8=8D=E8=83=BD=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=B6=E8=87=AA=E5=8A=A8=E5=A1=AB=E5=85=85?= =?UTF-8?q?=E7=A7=9F=E6=88=B7id=E7=AD=89=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DmsBillsFaultInstanceController.java | 104 +++++++++--------- .../dms/domain/DmsBillsFaultInstance.java | 2 +- .../domain/bo/DmsBillsFaultInstanceBo.java | 2 +- .../domain/vo/DmsBillsFaultInstanceVo.java | 2 +- .../dromara/dms/domain/vo/DmsPlanMaintVo.java | 6 +- .../RemoteInspectInstanceServiceImpl.java | 7 +- .../dubbo/RemoteMaintInstanceServiceImpl.java | 65 +++++++++-- .../mapper/DmsBillsFaultInstanceMapper.java | 2 +- .../mapper/DmsInspectProjectDeviceMapper.java | 1 + .../dms/mapper/DmsPlanInspectMapper.java | 2 +- .../dms/mapper/DmsPlanMaintMapper.java | 2 +- .../dms/mapper/DmsPlanRepairMapper.java | 4 + .../IDmsBillsFaultInstanceService.java | 24 ++-- .../DmsBillsFaultInstanceServiceImpl.java | 24 ++-- .../impl/DmsPlanInspectServiceImpl.java | 52 ++++++--- .../service/impl/DmsPlanMaintServiceImpl.java | 40 ++++++- .../impl/DmsPlanRepairServiceImpl.java | 6 + .../mapper/dms/DmsPlanInspectMapper.xml | 12 +- .../mapper/dms/DmsPlanMaintMapper.xml | 16 +++ .../mapper/dms/DmsPlanRepairMapper.xml | 58 ++++++++++ 20 files changed, 304 insertions(+), 127 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java index 9781099..f4f84ce 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java @@ -15,8 +15,6 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; -import org.dromara.dms.domain.DmsBillsFaultInstance; -import org.dromara.dms.domain.DmsFaultInstanceActivity; import org.dromara.dms.domain.bo.DmsBillsFaultInstanceBo; import org.dromara.dms.domain.vo.DmsBillsFaultInstanceVo; import org.dromara.dms.service.IDmsBillsFaultInstanceService; @@ -24,13 +22,10 @@ import org.dromara.dms.utils.TemplateExcelUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.text.SimpleDateFormat; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** - * 故障报修工单;手工创建故障报修工单 + * 故障报修工单 * 前端访问路由地址为:/dms/dmsBillsFaultInstance * * @author zch @@ -45,7 +40,7 @@ public class DmsBillsFaultInstanceController extends BaseController { private final IDmsBillsFaultInstanceService dmsBillsFaultInstanceService; /** - * 查询故障报修工单;手工创建故障报修工单列表 + * 查询故障报修工单列表 */ @SaCheckPermission("dms:dmsBillsFaultInstance:list") @GetMapping("/list") @@ -54,18 +49,18 @@ public class DmsBillsFaultInstanceController extends BaseController { } /** - * 导出故障报修工单;手工创建故障报修工单列表 + * 导出故障报修工单列表 */ @SaCheckPermission("dms:dmsBillsFaultInstance:export") - @Log(title = "故障报修工单;手工创建故障报修工单", businessType = BusinessType.EXPORT) + @Log(title = "故障报修工单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(DmsBillsFaultInstanceBo bo, HttpServletResponse response) { List list = dmsBillsFaultInstanceService.queryList(bo); - ExcelUtil.exportExcel(list, "故障报修工单;手工创建故障报修工单", DmsBillsFaultInstanceVo.class, response); + ExcelUtil.exportExcel(list, "故障报修工单", DmsBillsFaultInstanceVo.class, response); } /** - * 获取故障报修工单;手工创建故障报修工单详细信息 + * 获取故障报修工单详细信息 * * @param repairInstanceId 主键 */ @@ -77,10 +72,10 @@ public class DmsBillsFaultInstanceController extends BaseController { } /** - * 新增故障报修工单;手工创建故障报修工单 + * 新增故障报修工单 */ @SaCheckPermission("dms:dmsBillsFaultInstance:add") - @Log(title = "故障报修工单;手工创建故障报修工单", businessType = BusinessType.INSERT) + @Log(title = "故障报修工单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody DmsBillsFaultInstanceBo bo) { @@ -88,10 +83,10 @@ public class DmsBillsFaultInstanceController extends BaseController { } /** - * 修改故障报修工单;手工创建故障报修工单 + * 修改故障报修工单 */ @SaCheckPermission("dms:dmsBillsFaultInstance:edit") - @Log(title = "故障报修工单;手工创建故障报修工单", businessType = BusinessType.UPDATE) + @Log(title = "故障报修工单", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsFaultInstanceBo bo) { @@ -99,12 +94,12 @@ public class DmsBillsFaultInstanceController extends BaseController { } /** - * 删除故障报修工单;手工创建故障报修工单 + * 删除故障报修工单 * * @param repairInstanceIds 主键串 */ @SaCheckPermission("dms:dmsBillsFaultInstance:remove") - @Log(title = "故障报修工单;手工创建故障报修工单", businessType = BusinessType.DELETE) + @Log(title = "故障报修工单", businessType = BusinessType.DELETE) @DeleteMapping("/{repairInstanceIds}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] repairInstanceIds) { @@ -113,7 +108,7 @@ public class DmsBillsFaultInstanceController extends BaseController { /** - * 下拉框查询故障报修工单;手工创建故障报修工单列表 + * 下拉框查询故障报修工单列表 */ @GetMapping("/getDmsBillsFaultInstanceList") @@ -122,41 +117,42 @@ public class DmsBillsFaultInstanceController extends BaseController { return R.ok(list); } - @PostMapping("faultRecordExport") - public void faultRecordExport(DmsBillsFaultInstance dmsBillsFaultInstance, HttpServletResponse response) throws Exception { - Map beanParams = new HashMap<>(); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - DmsFaultInstanceActivity faulsts = dmsBillsFaultInstanceService.selectFaults(dmsBillsFaultInstance.getRepairInstanceId()); - beanParams.put("applyUser",faulsts.getApplyUser()); - beanParams.put("applyTime",format.format(faulsts.getApplyTime())); - beanParams.put("deviceName",faulsts.getDeviceName()); - beanParams.put("deviceLocation",faulsts.getDeviceLocation()); - beanParams.put("deviceCode",faulsts.getDeviceCode()); +// @PostMapping("faultRecordExport") +// public void faultRecordExport(DmsBillsFaultInstance dmsBillsFaultInstance, HttpServletResponse response) throws Exception { +// Map beanParams = new HashMap<>(); +// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); +// DmsFaultInstanceActivity faults = dmsBillsFaultInstanceService.selectFaults(dmsBillsFaultInstance.getRepairInstanceId()); +// beanParams.put("applyUser",faults.getApplyUser()); +// beanParams.put("applyTime",format.format(faults.getApplyTime())); +// beanParams.put("deviceName",faults.getDeviceName()); +// beanParams.put("deviceLocation",faults.getDeviceLocation()); +// beanParams.put("deviceCode",faults.getDeviceCode()); +// +// if (faults.getRealBeginTime()!=null){ +// beanParams.put("realEndTime",format.format(faults.getRealEndTime())); +// } +// if (faults.getRealEndTime()!=null){ +// beanParams.put("realBeginTime",format.format(faults.getRealBeginTime())); +// } +// if (faults.getUpdateTime()!=null){ +// beanParams.put("confirmTime",format.format(faults.getUpdateTime())); +// } +//// beanParams.put("realEndTime",format.format(faults.getRealEndTime())); +// beanParams.put("faultDescription",faults.getFaultDescription()); +// beanParams.put("checkedFault",faults.getCheckedFault()); +// beanParams.put("repairContent",faults.getRepairContent()); +// beanParams.put("protectedMethod",faults.getProtectedMethod()); +// beanParams.put("repairer",faults.getRepairer()); +// String repairConfirm; +// if (faults.getConfirmer()!=null){ +// repairConfirm = faults.getConfirmer(); +// }else { +// repairConfirm = "未完成"; +// } +// beanParams.put("repairConfirm",repairConfirm); +// beanParams.put("list",faults.getParts()); +// +// TemplateExcelUtils.downLoadExcel("维修记录","",beanParams, response); +// } - if (faulsts.getRealBeginTime()!=null){ - beanParams.put("realEndTime",format.format(faulsts.getRealEndTime())); - } - if (faulsts.getRealEndTime()!=null){ - beanParams.put("realBeginTime",format.format(faulsts.getRealBeginTime())); - } - if (faulsts.getUpdateTime()!=null){ - beanParams.put("confirmTime",format.format(faulsts.getUpdateTime())); - } -// beanParams.put("realEndTime",format.format(faulsts.getRealEndTime())); - beanParams.put("faultDescription",faulsts.getFaultDescription()); - beanParams.put("checkedFault",faulsts.getCheckedFault()); - beanParams.put("repairContent",faulsts.getRepairContent()); - beanParams.put("protectedMethod",faulsts.getProtectedMethod()); - beanParams.put("repairer",faulsts.getRepairer()); - String repairConfirm; - if (faulsts.getConfirmer()!=null){ - repairConfirm = faulsts.getConfirmer(); - }else { - repairConfirm = "未完成"; - } - beanParams.put("repairConfirm",repairConfirm); - beanParams.put("list",faulsts.getParts()); - - TemplateExcelUtils.downLoadExcel("维修记录","",beanParams, response); - } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java index bd70816..d3bcde6 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java @@ -11,7 +11,7 @@ import java.util.Date; import java.util.List; /** - * 故障报修工单;手工创建故障报修工单对象 dms_bills_fault_instance + * 故障报修工单对象 dms_bills_fault_instance * * @author zch * @date 2025-04-07 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java index 96aeb8c..4850a02 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java @@ -12,7 +12,7 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; /** - * 故障报修工单;手工创建故障报修工单业务对象 dms_bills_fault_instance + * 故障报修工单业务对象 dms_bills_fault_instance * * @author zch * @date 2025-04-07 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java index f5bf751..05ee563 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java @@ -17,7 +17,7 @@ import java.util.List; /** - * 故障报修工单;手工创建故障报修工单视图对象 dms_bills_fault_instance + * 故障报修工单视图对象 dms_bills_fault_instance * * @author zch * @date 2025-04-07 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsPlanMaintVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsPlanMaintVo.java index 5a417d4..f70b392 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsPlanMaintVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsPlanMaintVo.java @@ -2,16 +2,18 @@ package org.dromara.dms.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.dms.domain.DmsPlanMaint; +import org.dromara.dms.domain.DmsPlanMaintDetail; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -122,4 +124,6 @@ public class DmsPlanMaintVo implements Serializable { private Long timeLimitDays; private Long timeLimitHours; + /** 保养计划明细信息 */ + private List dmsPlanMaintDetailList; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java index ad01b4b..376d05c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -10,6 +10,7 @@ import org.dromara.common.core.domain.R; import org.dromara.dms.api.RemoteInspectInstanceService; import org.dromara.dms.domain.*; import org.dromara.dms.mapper.*; +import org.dromara.dms.service.impl.DmsInspectProjectDeviceServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -120,12 +121,12 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail); Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard()); -/* + DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); queryInspectProjectDevice.setTargetType("2"); queryInspectProjectDevice.setTargetId(deviceId); - List dmsInspectProjectDevices = dmsInspectProjectDeviceMapper.selectDmsInspectProjectDeviceList(queryInspectProjectDevice); -*/ + + MPJLambdaWrapper DmsInspectProjectDeviceLQW = JoinWrappers.lambda(DmsInspectProjectDevice.class) .eq(DmsInspectProjectDevice::getTargetType, "2")//关联类型(1设备类型) .eq(DmsInspectProjectDevice::getTargetId, deviceId); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java index 5a556eb..9b25bc7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java @@ -1,17 +1,20 @@ package org.dromara.dms.dubbo; + import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.constant.DmsConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.uuid.Seq; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.dms.api.RemoteMaintInstanceService; import org.dromara.dms.domain.*; import org.dromara.dms.mapper.DmsBillsMaintDetailMapper; import org.dromara.dms.mapper.DmsBillsMaintDetailProjectMapper; import org.dromara.dms.mapper.DmsBillsMaintInstanceMapper; import org.dromara.dms.mapper.DmsPlanMaintMapper; +import org.dromara.system.api.model.LoginUser; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -33,6 +36,13 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic private final DmsBillsMaintDetailProjectMapper dmsBillsMaintDetailProjectMapper; + + // 预定义系统用户相关常量,实际项目中建议从配置读取或定义在公共常量类中 + private static final Long SYSTEM_USER_ID = 1L; // 假设的系统管理员用户ID + private static final Long SYSTEM_DEPT_ID = 103L; // 假设的系统默认部门ID + private static final String DEFAULT_TENANT_ID_FOR_JOBS = "000000"; // 定时任务使用的默认租户ID + + /** * 新增保养工单 * @@ -50,8 +60,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic } DmsBillsMaintInstance dmsBillsMaintInstance = new DmsBillsMaintInstance(); - - dmsBillsMaintInstance.setPlanBeginTime(dmsPlanMaint.getMaintTime()); dmsBillsMaintInstance.setPlanMaintId(dmsPlanMaint.getPlanMaintId()); dmsBillsMaintInstance.setBillsMaintCode(Seq.getId(Seq.maintInstanceSeqType, Seq.maintInstanceCode)); @@ -66,6 +74,24 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic // dmsBillsMaintInstance.setIsFlag(1l); // dmsBillsMaintInstance.setWfProcessId(103l); dmsBillsMaintInstance.setPlanEndTime(new Date(lubeTime.getTime() + timeLimit * 1000l)); + + //字段没有自动填充,只能代码手动填充 + + // 获取用户信息 +/* SaSession session = StpUtil.getTokenSession(); + if (ObjectUtil.isNull(session)) { + return R.fail("用户会话不存在"); + } + LoginUser loginUser = (LoginUser) session.get("loginUser");*/ + LoginUser loginUser = new LoginUser();//暂时默认系统用户 + loginUser.setTenantId(DEFAULT_TENANT_ID_FOR_JOBS);//暂时默认系统用户 + loginUser.setUserId(SYSTEM_USER_ID);//暂时默认系统用户 + loginUser.setDeptId(SYSTEM_DEPT_ID);//暂时默认系统用户 + + dmsBillsMaintInstance.setCreateBy(SYSTEM_USER_ID);//暂时默认系统用户 + dmsBillsMaintInstance.setCreateDept(SYSTEM_DEPT_ID);//暂时默认系统用户 + dmsBillsMaintInstance.setTenantId(DEFAULT_TENANT_ID_FOR_JOBS);//暂时默认系统用户 + int i = dmsBillsMaintInstanceMapper.insert(dmsBillsMaintInstance); // DmsMaintInstanceActivity dmsMaintInstanceActivity = new DmsMaintInstanceActivity(); @@ -73,13 +99,19 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic // dmsMaintInstanceActivity.setProcessStepOrder(1L); // int i1 = dmsMaintInstanceActivityMapper.insertDmsMaintInstanceActivity(dmsMaintInstanceActivity); - batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId()); + batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId(), loginUser); return R.ok(i); } - public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId) { + @Transactional( rollbackFor = Exception.class ) + public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId, LoginUser loginUser) { + + Long userId = loginUser.getUserId(); + Long deptId = loginUser.getDeptId(); + String tenantId = loginUser.getTenantId(); + List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); List billsMaintDetails = new ArrayList<>(); planMaintDetails.forEach(planMaintDetail -> { @@ -89,12 +121,16 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic dmsBillsMaintDetail.setMaintStationId(planMaintDetail.getMaintStationId()); dmsBillsMaintDetail.setMaintStandardId(planMaintDetail.getMaintStandardId()); // dmsBillsMaintDetail.setIsFlag(1L); - dmsBillsMaintDetail.setMaintStatus(1L); - billsMaintDetails.add(dmsBillsMaintDetail); + dmsBillsMaintDetail.setMaintStatus(1L);//保养状态(1待保养 2保养中 3已完成) + + //字段没有自动填充,只能代码手动填充 + dmsBillsMaintDetail.setCreateBy(userId); + dmsBillsMaintDetail.setCreateDept(deptId); + dmsBillsMaintDetail.setTenantId(tenantId); + + dmsBillsMaintDetailMapper.insert(dmsBillsMaintDetail); }); -// dmsBillsMaintInstanceMapper.batchDmsBillsMaintDetail(billsMaintDetails); - dmsBillsMaintDetailMapper.insertBatch(billsMaintDetails); ArrayList billsMaintDetailProjectList = new ArrayList<>(); List list = dmsBillsMaintDetailMapper.selectDetailList(maintInstanceId); for (DmsBillsMaintDetail detail : list) { @@ -106,13 +142,18 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic billsMaintDetailProject.setMaintProjectId(project.getMaintProjectId()); billsMaintDetailProject.setMaintProjectName(project.getMaintProjectName()); billsMaintDetailProject.setMaintProjectDesc(project.getMaintProjectDesc()); - billsMaintDetailProject.setMaintProjectStatus("2"); - billsMaintDetailProjectList.add(billsMaintDetailProject); + + billsMaintDetailProject.setMaintProjectStatus("2");//保养项目状态(0待保养 1保养完成)TODO:为什么是2?? + + //字段没有自动填充,只能代码手动填充 + billsMaintDetailProject.setCreateBy(userId); + billsMaintDetailProject.setCreateDept(deptId); + billsMaintDetailProject.setTenantId(tenantId); + + dmsBillsMaintDetailProjectMapper.insert(billsMaintDetailProject); } } -// dmsBillsMaintInstanceMapper.batchDmsProject(list1); - dmsBillsMaintDetailProjectMapper.insertOrUpdateBatch(billsMaintDetailProjectList); } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java index a12bf1e..19ee43c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java @@ -10,7 +10,7 @@ import org.dromara.dms.domain.vo.DmsFaultInstanceActivityVo; import java.util.List; /** - * 故障报修工单;手工创建故障报修工单Mapper接口 + * 故障报修工单Mapper接口 * * @author zch * @date 2025-04-07 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectProjectDeviceMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectProjectDeviceMapper.java index 6635e57..a8a62eb 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectProjectDeviceMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectProjectDeviceMapper.java @@ -12,4 +12,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface DmsInspectProjectDeviceMapper extends BaseMapperPlus { + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsPlanInspectMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsPlanInspectMapper.java index 301f2ff..40e102f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsPlanInspectMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsPlanInspectMapper.java @@ -16,6 +16,6 @@ public interface DmsPlanInspectMapper extends BaseMapperPlus { + DmsPlanRepair selectDmsPlanRepairByPlanRepairCode(String planRepairCode); + + DmsPlanRepair selectDmsPlanRepairByPlanRepairId(Long planRepairId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java index d2e3d31..9495849 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java @@ -10,7 +10,7 @@ import java.util.Collection; import java.util.List; /** - * 故障报修工单;手工创建故障报修工单Service接口 + * 故障报修工单Service接口 * * @author zch * @date 2025-04-07 @@ -18,48 +18,48 @@ import java.util.List; public interface IDmsBillsFaultInstanceService { /** - * 查询故障报修工单;手工创建故障报修工单 + * 查询故障报修工单 * * @param repairInstanceId 主键 - * @return 故障报修工单;手工创建故障报修工单 + * @return 故障报修工单 */ DmsBillsFaultInstanceVo queryById(Long repairInstanceId); /** - * 分页查询故障报修工单;手工创建故障报修工单列表 + * 分页查询故障报修工单列表 * * @param bo 查询条件 * @param pageQuery 分页参数 - * @return 故障报修工单;手工创建故障报修工单分页列表 + * @return 故障报修工单分页列表 */ TableDataInfo queryPageList(DmsBillsFaultInstanceBo bo, PageQuery pageQuery); /** - * 查询符合条件的故障报修工单;手工创建故障报修工单列表 + * 查询符合条件的故障报修工单列表 * * @param bo 查询条件 - * @return 故障报修工单;手工创建故障报修工单列表 + * @return 故障报修工单列表 */ List queryList(DmsBillsFaultInstanceBo bo); /** - * 新增故障报修工单;手工创建故障报修工单 + * 新增故障报修工单 * - * @param bo 故障报修工单;手工创建故障报修工单 + * @param bo 故障报修工单 * @return 是否新增成功 */ Boolean insertByBo(DmsBillsFaultInstanceBo bo); /** - * 修改故障报修工单;手工创建故障报修工单 + * 修改故障报修工单 * - * @param bo 故障报修工单;手工创建故障报修工单 + * @param bo 故障报修工单 * @return 是否修改成功 */ Boolean updateByBo(DmsBillsFaultInstanceBo bo); /** - * 校验并批量删除故障报修工单;手工创建故障报修工单信息 + * 校验并批量删除故障报修工单信息 * * @param ids 待删除的主键集合 * @param isValid 是否进行有效性校验 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java index 4c85d29..44a3bf7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java @@ -24,7 +24,7 @@ import java.util.List; import java.util.Map; /** - * 故障报修工单;手工创建故障报修工单Service业务层处理 + * 故障报修工单Service业务层处理 * * @author zch * @date 2025-04-07 @@ -38,10 +38,10 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS private final DmsBillsFaultInstanceMapper dmsBillsFaultInstanceMapper; /** - * 查询故障报修工单;手工创建故障报修工单 + * 查询故障报修工单 * * @param repairInstanceId 主键 - * @return 故障报修工单;手工创建故障报修工单 + * @return 故障报修工单 */ @Override public DmsBillsFaultInstanceVo queryById(Long repairInstanceId){ @@ -49,11 +49,11 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS } /** - * 分页查询故障报修工单;手工创建故障报修工单列表 + * 分页查询故障报修工单列表 * * @param bo 查询条件 * @param pageQuery 分页参数 - * @return 故障报修工单;手工创建故障报修工单分页列表 + * @return 故障报修工单分页列表 */ @Override public TableDataInfo queryPageList(DmsBillsFaultInstanceBo bo, PageQuery pageQuery) { @@ -63,10 +63,10 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS } /** - * 查询符合条件的故障报修工单;手工创建故障报修工单列表 + * 查询符合条件的故障报修工单列表 * * @param bo 查询条件 - * @return 故障报修工单;手工创建故障报修工单列表 + * @return 故障报修工单列表 */ @Override public List queryList(DmsBillsFaultInstanceBo bo) { @@ -100,9 +100,9 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS } /** - * 新增故障报修工单;手工创建故障报修工单 + * 新增故障报修工单 * - * @param bo 故障报修工单;手工创建故障报修工单 + * @param bo 故障报修工单 * @return 是否新增成功 */ @Override @@ -117,9 +117,9 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS } /** - * 修改故障报修工单;手工创建故障报修工单 + * 修改故障报修工单 * - * @param bo 故障报修工单;手工创建故障报修工单 + * @param bo 故障报修工单 * @return 是否修改成功 */ @Override @@ -137,7 +137,7 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS } /** - * 校验并批量删除故障报修工单;手工创建故障报修工单信息 + * 校验并批量删除故障报修工单信息 * * @param ids 待删除的主键集合 * @param isValid 是否进行有效性校验 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java index abe67ac..ca13ca2 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -1,9 +1,15 @@ package org.dromara.dms.service.impl; +import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.common.core.enums.JobBlockStrategyEnum; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.seata.spring.annotation.GlobalTransactional; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; @@ -17,6 +23,8 @@ import org.dromara.dms.mapper.DmsBaseInspectRouteMapper; import org.dromara.dms.mapper.DmsPlanInspectMapper; import org.dromara.dms.service.IDmsPlanInspectService; import org.dromara.dms.utils.CronUtils; +import org.dromara.job.api.RemoteJobService; +import org.dromara.job.api.model.DmsJobEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +47,9 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { private final DmsBaseInspectRouteMapper dmsBaseInspectRouteMapper; + @DubboReference + private final RemoteJobService remoteJobService; + private static final Long SECONDS_PER_DAY = 24 * 60 * 60L; private static final Long SECONDS_PER_HOUR = 60 * 60L; @@ -149,7 +160,7 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { * @return 是否新增成功 */ @Override - @Transactional( rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) public Boolean insertByBo(DmsPlanInspectBo bo) { DmsPlanInspect add = MapstructUtils.convert(bo, DmsPlanInspect.class); String day = "*"; @@ -180,22 +191,31 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { cron = "0 0 "+add.getHour()+" "+day+" "+ month+" ? "+year; } String planInspectCode = Seq.getId(Seq.planInspectSeqType, Seq.planInspectCode); -/* SysJob job = new SysJob(); - job.setJobName("点巡检计划编号" + planInspectCode + "工单任务"); - job.setJobGroup("DEFAULT"); - job.setInvokeTarget("ryTask.getDmsBillsInstance(\"" + planInspectCode + "\")"); - job.setCronExpression(cron); - job.setMisfirePolicy("1"); - job.setConcurrent("1"); - job.setStatus("1"); - R jobIdR = remoteJobService.add(SecurityConstants.INNER, job);*/ - String time = cron; - //通过cron表达式获取下一次执行时间 - Date nextExecution = CronUtils.getNextExecution(time); - add.setPlanTime(nextExecution); - add.setPlanInspectCode(planInspectCode); -// add.setJobId(jobIdR.getData().longValue()); + if(bo.getActiveFlag().equals("1")) {//激活标识(1是 0否) + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("点巡检计划编号" + planInspectCode + "工单任务") + .setExecutorInfo("stanceInspect")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planInspectCode") + .setExtAttrs(planInspectCode); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long jobId = longR.getData(); + + + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + add.setPlanTime(nextExecution); + add.setPlanInspectCode(planInspectCode); + add.setJobId(jobId); + } Long timeLimitDays = add.getTimeLimitDays()==null ? 0L:add.getTimeLimitDays(); Long timeLimitHours = add.getTimeLimitHours() == null ? 0L:add.getTimeLimitHours(); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java index 753ebed..f8706be 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -1,9 +1,15 @@ package org.dromara.dms.service.impl; +import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.common.core.enums.JobBlockStrategyEnum; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.seata.spring.annotation.GlobalTransactional; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; @@ -15,6 +21,8 @@ import org.dromara.dms.domain.vo.DmsPlanMaintVo; import org.dromara.dms.mapper.DmsPlanMaintMapper; import org.dromara.dms.service.IDmsPlanMaintService; import org.dromara.dms.utils.CronUtils; +import org.dromara.job.api.RemoteJobService; +import org.dromara.job.api.model.DmsJobEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,6 +43,9 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { private final DmsPlanMaintMapper baseMapper; + @DubboReference + private final RemoteJobService remoteJobService; + private static final Long SECONDS_PER_DAY = 24 * 60 * 60L; private static final Long SECONDS_PER_HOUR = 60 * 60L; @@ -151,7 +162,7 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { * @return 是否新增成功 */ @Override - @Transactional( rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) public Boolean insertByBo(DmsPlanMaintBo bo) { DmsPlanMaint add = MapstructUtils.convert(bo, DmsPlanMaint.class); validEntityBeforeSave(add); @@ -194,12 +205,29 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { job.setConcurrent("1"); job.setStatus("1"); R jobIdR = remoteJobService.add(SecurityConstants.INNER, job);*/ + if(bo.getActiveFlag().equals("1")) {//激活标识(1是 0否) + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("保养计划编号" + planMaintCode + "工单任务") + .setExecutorInfo("stanceMaint")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planMaintCode") + .setExtAttrs(planMaintCode); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long jobId = longR.getData(); + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + add.setMaintTime(nextExecution); + add.setJobId(jobId); + } + - String time = cron; - //通过cron表达式获取下一次执行时间 - Date nextExecution = CronUtils.getNextExecution(time); - add.setMaintTime(nextExecution); -// add.setJobId(jobIdR.getData().longValue()); add.setPlanMaintCode(planMaintCode); Long timeLimitDays = add.getTimeLimitDays()==null?0L:add.getTimeLimitDays(); Long timeLimitHours = add.getTimeLimitHours() == null?0L:add.getTimeLimitHours(); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanRepairServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanRepairServiceImpl.java index ca58101..5884671 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanRepairServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanRepairServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -15,6 +16,7 @@ import org.dromara.dms.domain.vo.DmsPlanRepairVo; import org.dromara.dms.mapper.DmsPlanRepairDetailMapper; import org.dromara.dms.mapper.DmsPlanRepairMapper; import org.dromara.dms.service.IDmsPlanRepairService; +import org.dromara.job.api.RemoteJobService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -173,6 +175,10 @@ public class DmsPlanRepairServiceImpl implements IDmsPlanRepairService { @Override @Transactional( rollbackFor = Exception.class ) public Boolean insertByBo(DmsPlanRepairBo bo) { + /* + *京源DMS注释掉了定时任务,参考京源暂时不加 + * */ + DmsPlanRepair add = MapstructUtils.convert(bo, DmsPlanRepair.class); validEntityBeforeSave(add); add.setTimeLimit((add.getTimeLimitDays()*SECONDS_PER_DAY) diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanInspectMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanInspectMapper.xml index 69d855b..efb7fe9 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanInspectMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanInspectMapper.xml @@ -36,15 +36,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where a.plan_inspect_id = #{planInspectId} - diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanMaintMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanMaintMapper.xml index 6a1e832..6cd65cc 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanMaintMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanMaintMapper.xml @@ -30,6 +30,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + select a.plan_repair_id, a.plan_repair_code, a.repair_type, a.repair_group, a.repair_supervisor, a.repair_time, a.cycle_period, a.create_method, + /*a.is_flag, */ + a.remark, a.create_by, a.create_time, a.update_by, a.update_time,a.time_limit, + b.plan_repair_detail_id as sub_plan_repair_detail_id, b.plan_repair_id as sub_plan_repair_id, b.repair_detail_target_type as sub_repair_detail_target_type,b.repair_detail_target_id as repair_detail_target_id, b.fault_type as sub_fault_type, b.repair_desc as sub_repair_desc, b.repair_protocol as sub_repair_protocol, b.operation_description as sub_operation_description, b.create_by as sub_create_by, b.create_time as sub_create_time, b.update_by as sub_update_by, b.update_time as sub_update_time + from dms_plan_repair a + left join dms_plan_repair_detail b on b.plan_repair_id = a.plan_repair_id + where a.plan_repair_code = #{planRepairCode} + + + + From f53e48c04dd41724f19b5dc7cf43408f376f2312 Mon Sep 17 00:00:00 2001 From: zch Date: Wed, 14 May 2025 08:43:53 +0800 Subject: [PATCH 08/21] =?UTF-8?q?feat(dms):=20=E5=B7=A1=E6=A3=80=E8=B7=AF?= =?UTF-8?q?=E7=BA=BF=E6=98=8E=E7=BB=86=E6=B7=BB=E5=8A=A0=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DmsInspectRouteDetail 模型中添加 standardName 字段 - 在 DmsInspectRouteDetailServiceImpl服务中加入标准名称的查询 - 在 DmsInspectRouteDetailVo 视图中添加 standardName 字段 --- .../java/org/dromara/dms/domain/DmsInspectRouteDetail.java | 7 +++++++ .../org/dromara/dms/domain/vo/DmsInspectRouteDetailVo.java | 5 +++++ .../dms/service/impl/DmsInspectRouteDetailServiceImpl.java | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectRouteDetail.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectRouteDetail.java index c0d6b72..8c8d058 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectRouteDetail.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectRouteDetail.java @@ -64,4 +64,11 @@ public class DmsInspectRouteDetail extends TenantEntity { @TableField(exist = false) private String machineName;//JOIN + /** + * 标准名称 + */ + @TableField(exist = false) + private String standardName; + + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectRouteDetailVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectRouteDetailVo.java index 34a3290..a13797a 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectRouteDetailVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectRouteDetailVo.java @@ -75,4 +75,9 @@ public class DmsInspectRouteDetailVo implements Serializable { */ private String machineName;//JOIN + /** + * 标准名称 + */ + private String standardName;//JOIN + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectRouteDetailServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectRouteDetailServiceImpl.java index 4a0ab4d..f286503 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectRouteDetailServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectRouteDetailServiceImpl.java @@ -11,6 +11,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.dms.domain.DmsBaseInspectRoute; +import org.dromara.dms.domain.DmsBaseInspectStandard; import org.dromara.dms.domain.DmsBaseMachineInfo; import org.springframework.stereotype.Service; import org.dromara.dms.domain.bo.DmsInspectRouteDetailBo; @@ -83,10 +84,16 @@ public class DmsInspectRouteDetailServiceImpl implements IDmsInspectRouteDetailS .select(DmsBaseMachineInfo::getMachineName) .leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId,DmsInspectRouteDetail::getMachineId) + .select(DmsBaseInspectStandard::getStandardName) + .leftJoin(DmsBaseInspectStandard.class, DmsBaseInspectStandard::getInspectStandardId,DmsInspectRouteDetail::getInspectStandard) + .eq(bo.getRouteDetailId() != null, DmsInspectRouteDetail::getRouteDetailId, bo.getRouteDetailId()) .eq(bo.getInspectRouteId() != null, DmsInspectRouteDetail::getInspectRouteId, bo.getInspectRouteId()) .eq(bo.getLineStep() != null, DmsInspectRouteDetail::getLineStep, bo.getLineStep()) .eq(bo.getMachineId() != null, DmsInspectRouteDetail::getMachineId, bo.getMachineId()) + + .eq(bo.getInspectStandard() != null, DmsInspectRouteDetail::getInspectStandard, bo.getInspectStandard()) + .eq(StringUtils.isNotBlank(bo.getInspectStandard()), DmsInspectRouteDetail::getInspectStandard, bo.getInspectStandard()) .orderByDesc(DmsInspectRouteDetail::getCreateTime); return lqw; From e420eea50787a1d035d9de7b74c1593c88e2d01b Mon Sep 17 00:00:00 2001 From: yinq Date: Wed, 14 May 2025 10:18:03 +0800 Subject: [PATCH 09/21] =?UTF-8?q?update=20add=E5=B7=A5=E4=BD=8D=E5=85=B3?= =?UTF-8?q?=E8=81=94=E7=89=A9=E6=96=99=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/ProdBaseStationMaterialtype.java | 46 ++++++ .../mes/domain/bo/ProdBaseStationInfoBo.java | 5 + .../bo/ProdBaseStationMaterialtypeBo.java | 42 ++++++ .../mes/domain/vo/ProdBaseStationInfoVo.java | 4 + .../vo/ProdBaseStationMaterialtypeVo.java | 51 +++++++ .../ProdBaseStationMaterialtypeMapper.java | 15 ++ .../IProdBaseStationMaterialtypeService.java | 69 +++++++++ .../impl/ProdBaseStationInfoServiceImpl.java | 31 +++- ...rodBaseStationMaterialtypeServiceImpl.java | 134 ++++++++++++++++++ .../mes/ProdBaseStationMaterialtypeMapper.xml | 7 + 10 files changed, 400 insertions(+), 4 deletions(-) create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java new file mode 100644 index 0000000..e3c178b --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationMaterialtype.java @@ -0,0 +1,46 @@ +package org.dromara.mes.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.util.Date; + +/** + * 工位关联物料类型对象 prod_base_station_materialtype + * + * @author Yinq + * @date 2025-05-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("prod_base_station_materialtype") +public class ProdBaseStationMaterialtype extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工位ID + */ + private Long stationId; + + /** + * 物料类型ID + */ + private Long materialTypeId; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + @TableField(exist = false) + private Long updateBy; + + @TableField(exist = false) + private Date updateTime; + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java index c3c2d40..039ec30 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java @@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import org.dromara.mes.domain.ProdBaseStationMaterialtype; + +import java.util.List; /** * 工位信息业务对象 prod_base_station_info @@ -75,4 +78,6 @@ public class ProdBaseStationInfoBo extends BaseEntity { private String remark; private Long machineId; + + private List prodBaseStationMaterialtypeList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java new file mode 100644 index 0000000..c0f3eb2 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationMaterialtypeBo.java @@ -0,0 +1,42 @@ +package org.dromara.mes.domain.bo; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 工位关联物料类型业务对象 prod_base_station_materialtype + * + * @author Yinq + * @date 2025-05-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ProdBaseStationMaterialtype.class, reverseConvertGenerate = false) +public class ProdBaseStationMaterialtypeBo extends BaseEntity { + + /** + * 工位ID + */ + @NotNull(message = "工位ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long stationId; + + /** + * 物料类型ID + */ + @NotNull(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long materialTypeId; + + /** + * 激活标识(1是 0否) + */ + @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String activeFlag; + + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java index 93ed805..b2d2a0d 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java @@ -7,10 +7,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.mes.domain.ProdBaseStationMaterialtype; import java.io.Serial; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -138,4 +140,6 @@ public class ProdBaseStationInfoVo implements Serializable { */ @ExcelProperty(value = "机台名称") private String machineName; + + private List prodBaseStationMaterialtypeList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java new file mode 100644 index 0000000..bf0e34f --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationMaterialtypeVo.java @@ -0,0 +1,51 @@ +package org.dromara.mes.domain.vo; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 工位关联物料类型视图对象 prod_base_station_materialtype + * + * @author Yinq + * @date 2025-05-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ProdBaseStationMaterialtype.class) +public class ProdBaseStationMaterialtypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工位ID + */ + @ExcelProperty(value = "工位ID") + private Long stationId; + + /** + * 物料类型ID + */ + @ExcelProperty(value = "物料类型ID") + private Long materialTypeId; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java new file mode 100644 index 0000000..dba9cfc --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseStationMaterialtypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.mes.mapper; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.mes.domain.vo.ProdBaseStationMaterialtypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 工位关联物料类型Mapper接口 + * + * @author Yinq + * @date 2025-05-13 + */ +public interface ProdBaseStationMaterialtypeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java new file mode 100644 index 0000000..582d40a --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdBaseStationMaterialtypeService.java @@ -0,0 +1,69 @@ +package org.dromara.mes.service; + +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.mes.domain.vo.ProdBaseStationMaterialtypeVo; +import org.dromara.mes.domain.bo.ProdBaseStationMaterialtypeBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 工位关联物料类型Service接口 + * + * @author Yinq + * @date 2025-05-13 + */ +public interface IProdBaseStationMaterialtypeService { + + /** + * 查询工位关联物料类型 + * + * @param stationId 主键 + * @return 工位关联物料类型 + */ + ProdBaseStationMaterialtypeVo queryById(Long stationId); + + /** + * 分页查询工位关联物料类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工位关联物料类型分页列表 + */ + TableDataInfo queryPageList(ProdBaseStationMaterialtypeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的工位关联物料类型列表 + * + * @param bo 查询条件 + * @return 工位关联物料类型列表 + */ + List queryList(ProdBaseStationMaterialtypeBo bo); + + /** + * 新增工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否新增成功 + */ + Boolean insertByBo(ProdBaseStationMaterialtypeBo bo); + + /** + * 修改工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否修改成功 + */ + Boolean updateByBo(ProdBaseStationMaterialtypeBo bo); + + /** + * 校验并批量删除工位关联物料类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java index 6ff215c..6b12305 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.mes.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,12 +10,11 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.dromara.mes.domain.ProdBaseMachineInfo; -import org.dromara.mes.domain.ProdBaseProcessInfo; +import org.dromara.mes.domain.*; +import org.dromara.mes.mapper.ProdBaseStationMaterialtypeMapper; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseStationInfoBo; import org.dromara.mes.domain.vo.ProdBaseStationInfoVo; -import org.dromara.mes.domain.ProdBaseStationInfo; import org.dromara.mes.mapper.ProdBaseStationInfoMapper; import org.dromara.mes.service.IProdBaseStationInfoService; @@ -34,6 +34,9 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi private final ProdBaseStationInfoMapper baseMapper; + private final ProdBaseStationMaterialtypeMapper stationMaterialtypeMapper; + + /** * 查询工位信息 * @@ -42,7 +45,18 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi */ @Override public ProdBaseStationInfoVo queryById(Long stationId) { - return baseMapper.selectVoById(stationId); + ProdBaseStationInfoBo bo = new ProdBaseStationInfoBo(); + bo.setStationId(stationId); + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + ProdBaseStationInfoVo prodBaseStationInfoVo = baseMapper.selectVoOne(lqw); + //机台关联工序 + MPJLambdaWrapper lqwRelation = JoinWrappers.lambda(ProdBaseStationMaterialtype.class) + .selectAll(ProdBaseStationMaterialtype.class) + .eq(bo.getStationId() != null, ProdBaseStationMaterialtype::getStationId, bo.getStationId()) + .orderByAsc(ProdBaseStationMaterialtype::getCreateTime); + List prodBaseStationMaterialtypeList = stationMaterialtypeMapper.selectList(lqwRelation); + prodBaseStationInfoVo.setProdBaseStationMaterialtypeList(prodBaseStationMaterialtypeList); + return prodBaseStationInfoVo; } /** @@ -119,6 +133,15 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi public Boolean updateByBo(ProdBaseStationInfoBo bo) { ProdBaseStationInfo update = MapstructUtils.convert(bo, ProdBaseStationInfo.class); validEntityBeforeSave(update); + List prodBaseStationMaterialtypeList = bo.getProdBaseStationMaterialtypeList(); + if (!prodBaseStationMaterialtypeList.isEmpty()) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotNull(bo.getStationId()), ProdBaseStationMaterialtype::getStationId, bo.getStationId()); + stationMaterialtypeMapper.delete(lqw); + for (ProdBaseStationMaterialtype stationMaterialType : prodBaseStationMaterialtypeList) { + stationMaterialtypeMapper.insert(stationMaterialType); + } + } return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java new file mode 100644 index 0000000..15c5fe1 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationMaterialtypeServiceImpl.java @@ -0,0 +1,134 @@ +package org.dromara.mes.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.mes.domain.bo.ProdBaseStationMaterialtypeBo; +import org.dromara.mes.domain.vo.ProdBaseStationMaterialtypeVo; +import org.dromara.mes.domain.ProdBaseStationMaterialtype; +import org.dromara.mes.mapper.ProdBaseStationMaterialtypeMapper; +import org.dromara.mes.service.IProdBaseStationMaterialtypeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 工位关联物料类型Service业务层处理 + * + * @author Yinq + * @date 2025-05-13 + */ +@RequiredArgsConstructor +@Service +public class ProdBaseStationMaterialtypeServiceImpl implements IProdBaseStationMaterialtypeService { + + private final ProdBaseStationMaterialtypeMapper baseMapper; + + /** + * 查询工位关联物料类型 + * + * @param stationId 主键 + * @return 工位关联物料类型 + */ + @Override + public ProdBaseStationMaterialtypeVo queryById(Long stationId){ + return baseMapper.selectVoById(stationId); + } + + /** + * 分页查询工位关联物料类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工位关联物料类型分页列表 + */ + @Override + public TableDataInfo queryPageList(ProdBaseStationMaterialtypeBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的工位关联物料类型列表 + * + * @param bo 查询条件 + * @return 工位关联物料类型列表 + */ + @Override + public List queryList(ProdBaseStationMaterialtypeBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ProdBaseStationMaterialtypeBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseStationMaterialtype.class) + .selectAll(ProdBaseStationMaterialtype.class) + .eq(bo.getStationId() != null, ProdBaseStationMaterialtype::getStationId, bo.getStationId()) + .eq(bo.getMaterialTypeId() != null, ProdBaseStationMaterialtype::getMaterialTypeId, bo.getMaterialTypeId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseStationMaterialtype::getActiveFlag, bo.getActiveFlag()) + .orderByDesc(ProdBaseStationMaterialtype::getCreateTime); + return lqw; + } + + /** + * 新增工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ProdBaseStationMaterialtypeBo bo) { + ProdBaseStationMaterialtype add = MapstructUtils.convert(bo, ProdBaseStationMaterialtype.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setStationId(add.getStationId()); + } + return flag; + } + + /** + * 修改工位关联物料类型 + * + * @param bo 工位关联物料类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ProdBaseStationMaterialtypeBo bo) { + ProdBaseStationMaterialtype update = MapstructUtils.convert(bo, ProdBaseStationMaterialtype.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ProdBaseStationMaterialtype entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除工位关联物料类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml new file mode 100644 index 0000000..db56a02 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseStationMaterialtypeMapper.xml @@ -0,0 +1,7 @@ + + + + + From cb3ba15c6980ae51be897ff1640b7ef4a70f3fcb Mon Sep 17 00:00:00 2001 From: zch Date: Thu, 15 May 2025 14:15:08 +0800 Subject: [PATCH 10/21] =?UTF-8?q?update(dms):=20=E4=B8=BA=E6=B6=A6?= =?UTF-8?q?=E6=BB=91=E5=92=8C=E7=82=B9=E5=B7=A1=E6=A3=80=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=81=E7=A8=8B=E7=8A=B6=E6=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DmsBillsInspectInstance 和 DmsBillsLubeInstance 模型中添加 status 字段 - 更新相关 BO 和 VO 类以包含流程状态信息 - 修改控制器和服务层方法,支持流程状态的传递和返回 - 优化插入和更新操作,返回完整的工单实例信息 --- .../DmsBillsInspectInstanceController.java | 8 +++---- .../DmsBillsLubeInstanceController.java | 8 +++---- .../dms/domain/DmsBillsInspectInstance.java | 6 ++++++ .../dms/domain/DmsBillsLubeInstance.java | 8 ++++++- .../domain/bo/DmsBillsInspectInstanceBo.java | 5 +++++ .../dms/domain/bo/DmsBillsLubeInstanceBo.java | 5 +++++ .../domain/vo/DmsBillsInspectInstanceVo.java | 5 +++++ .../dms/domain/vo/DmsBillsLubeInstanceVo.java | 21 +++++++++++++++++++ .../dubbo/RemoteLubeInstanceServiceImpl.java | 5 ++++- .../IDmsBillsInspectInstanceService.java | 4 ++-- .../service/IDmsBillsLubeInstanceService.java | 4 ++-- .../DmsBillsInspectInstanceServiceImpl.java | 8 +++---- .../impl/DmsBillsLubeInstanceServiceImpl.java | 13 ++++++------ 13 files changed, 76 insertions(+), 24 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java index f543876..8b7dff8 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java @@ -76,8 +76,8 @@ public class DmsBillsInspectInstanceController extends BaseController { @Log(title = "点巡检工单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody DmsBillsInspectInstanceBo bo) { - return toAjax(dmsBillsInspectInstanceService.insertByBo(bo)); + public R add(@Validated(AddGroup.class) @RequestBody DmsBillsInspectInstanceBo bo) { + return R.ok(dmsBillsInspectInstanceService.insertByBo(bo)); } /** @@ -87,8 +87,8 @@ public class DmsBillsInspectInstanceController extends BaseController { @Log(title = "点巡检工单", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsInspectInstanceBo bo) { - return toAjax(dmsBillsInspectInstanceService.updateByBo(bo)); + public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsInspectInstanceBo bo) { + return R.ok(dmsBillsInspectInstanceService.updateByBo(bo)); } /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsLubeInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsLubeInstanceController.java index 48f64e1..acbc418 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsLubeInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsLubeInstanceController.java @@ -77,8 +77,8 @@ public class DmsBillsLubeInstanceController extends BaseController { @Log(title = "润滑工单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody DmsBillsLubeInstanceBo bo) { - return toAjax(dmsBillsLubeInstanceService.insertByBo(bo)); + public R add(@Validated(AddGroup.class) @RequestBody DmsBillsLubeInstanceBo bo) { + return R.ok(dmsBillsLubeInstanceService.insertByBo(bo)); } /** @@ -88,8 +88,8 @@ public class DmsBillsLubeInstanceController extends BaseController { @Log(title = "润滑工单", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsLubeInstanceBo bo) { - return toAjax(dmsBillsLubeInstanceService.updateByBo(bo)); + public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsLubeInstanceBo bo) { + return R.ok(dmsBillsLubeInstanceService.updateByBo(bo)); } /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java index 95ddb37..d3502ef 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java @@ -86,4 +86,10 @@ public class DmsBillsInspectInstance extends TenantEntity { private String remark; + /** + * 流程状态 + */ + private String status; + + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java index 9e1a290..6e12bb5 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java @@ -30,7 +30,7 @@ public class DmsBillsLubeInstance extends BaseEntity { /** * 主键标识 */ - @TableId(value = "lube_instance_id", type = IdType.AUTO) + @TableId(value = "lube_instance_id") private Long lubeInstanceId; /** @@ -93,6 +93,12 @@ public class DmsBillsLubeInstance extends BaseEntity { */ private String remark; + /** + * 流程状态 + */ + private String status; + + /** * 计划编号 */ diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java index b27a2d7..c002a62 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java @@ -82,5 +82,10 @@ public class DmsBillsInspectInstanceBo extends BaseEntity { */ private String remark; + /** + * 流程状态 + */ + private String status; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeInstanceBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeInstanceBo.java index 7c61545..c652fac 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeInstanceBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeInstanceBo.java @@ -88,6 +88,11 @@ public class DmsBillsLubeInstanceBo extends BaseEntity { */ private String remark; + /** + * 流程状态 + */ + private String status; + private String lubeStatusStr;//常量拼接的状态值 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java index fa1a8c5..a7b6e39 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java @@ -104,5 +104,10 @@ public class DmsBillsInspectInstanceVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * 流程状态 + */ + private String status; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java index 7926d1d..dd1490c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java @@ -1,7 +1,10 @@ package org.dromara.dms.domain.vo; +import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; @@ -109,6 +112,11 @@ public class DmsBillsLubeInstanceVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * 流程状态 + */ + private String status; + /** * 计划编号 */ @@ -119,4 +127,17 @@ public class DmsBillsLubeInstanceVo implements Serializable { */ private List dmsBillsLubeDetailList; + + /** + * 创建者 + */ + @ExcelIgnore + private Long createBy; + + /** + * 创建时间 + */ + @ExcelIgnore + private Date createTime; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java index 453a22e..fa6b084 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java @@ -12,6 +12,7 @@ import org.dromara.common.core.utils.uuid.Seq; import org.dromara.dms.domain.*; import org.dromara.dms.domain.bo.DmsBillsLubeInstanceBo; import org.dromara.dms.domain.bo.DmsPlanLubeBo; +import org.dromara.dms.domain.vo.DmsBillsLubeInstanceVo; import org.dromara.dms.domain.vo.DmsPlanLubeDetailVo; import org.dromara.dms.mapper.*; import org.dromara.dms.service.IDmsBillsLubeInstanceService; @@ -76,6 +77,8 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService // 创建新的润滑工单实例对象 DmsBillsLubeInstanceBo dmsBillsLubeInstanceBo = new DmsBillsLubeInstanceBo(); + // 设置创建人 + dmsBillsLubeInstanceBo.setCreateBy(dmsPlanLube.getCreateBy()); // 设置润滑工单的计划ID dmsBillsLubeInstanceBo.setPlanLubeId(dmsPlanLube.getPlanLubeId()); // 设置计划开始时间为润滑时间 @@ -97,7 +100,7 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService dmsBillsLubeInstanceBo.setPlanEndTime(planEndTime); // 插入润滑工单实例到数据库 - boolean success = dmsBillsLubeInstanceService.insertByBo(dmsBillsLubeInstanceBo); + DmsBillsLubeInstanceVo BillsLubeInstance = dmsBillsLubeInstanceService.insertByBo(dmsBillsLubeInstanceBo); DmsPlanLubeBo dmsPlanLubeBo = MapstructUtils.convert(dmsPlanLube, DmsPlanLubeBo.class); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java index 3b35fc7..3b10759 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java @@ -48,7 +48,7 @@ public interface IDmsBillsInspectInstanceService { * @param bo 点巡检工单 * @return 是否新增成功 */ - Boolean insertByBo(DmsBillsInspectInstanceBo bo); + DmsBillsInspectInstanceVo insertByBo(DmsBillsInspectInstanceBo bo); /** * 修改点巡检工单 @@ -56,7 +56,7 @@ public interface IDmsBillsInspectInstanceService { * @param bo 点巡检工单 * @return 是否修改成功 */ - Boolean updateByBo(DmsBillsInspectInstanceBo bo); + DmsBillsInspectInstanceVo updateByBo(DmsBillsInspectInstanceBo bo); /** * 校验并批量删除点巡检工单信息 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java index ed2f0f4..8cbb3e0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java @@ -48,7 +48,7 @@ public interface IDmsBillsLubeInstanceService { * @param bo 润滑工单 * @return 是否新增成功 */ - Boolean insertByBo(DmsBillsLubeInstanceBo bo); + DmsBillsLubeInstanceVo insertByBo(DmsBillsLubeInstanceBo bo); /** * 修改润滑工单 @@ -56,7 +56,7 @@ public interface IDmsBillsLubeInstanceService { * @param bo 润滑工单 * @return 是否修改成功 */ - Boolean updateByBo(DmsBillsLubeInstanceBo bo); + DmsBillsLubeInstanceVo updateByBo(DmsBillsLubeInstanceBo bo); /** * 校验并批量删除润滑工单信息 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java index a9e6147..2f4db69 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java @@ -108,14 +108,14 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta * @return 是否新增成功 */ @Override - public Boolean insertByBo(DmsBillsInspectInstanceBo bo) { + public DmsBillsInspectInstanceVo insertByBo(DmsBillsInspectInstanceBo bo) { DmsBillsInspectInstance add = MapstructUtils.convert(bo, DmsBillsInspectInstance.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setInspectInstanceId(add.getInspectInstanceId()); } - return flag; + return MapstructUtils.convert(add, DmsBillsInspectInstanceVo.class); } /** @@ -125,10 +125,10 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta * @return 是否修改成功 */ @Override - public Boolean updateByBo(DmsBillsInspectInstanceBo bo) { + public DmsBillsInspectInstanceVo updateByBo(DmsBillsInspectInstanceBo bo) { DmsBillsInspectInstance update = MapstructUtils.convert(bo, DmsBillsInspectInstance.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + return MapstructUtils.convert(update, DmsBillsInspectInstanceVo.class); } /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java index 186a539..d4b00d2 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java @@ -29,6 +29,7 @@ import org.dromara.dms.mapper.*; import org.dromara.dms.service.IDmsBillsLubeInstanceService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.util.*; import java.util.stream.Collectors; @@ -124,14 +125,14 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer * @return 是否新增成功 */ @Override - public Boolean insertByBo(DmsBillsLubeInstanceBo bo) { + public DmsBillsLubeInstanceVo insertByBo(DmsBillsLubeInstanceBo bo) { DmsBillsLubeInstance add = MapstructUtils.convert(bo, DmsBillsLubeInstance.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setLubeInstanceId(add.getLubeInstanceId()); } - return flag; + return MapstructUtils.convert(add, DmsBillsLubeInstanceVo.class); } /** @@ -141,10 +142,10 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer * @return 是否修改成功 */ @Override - public Boolean updateByBo(DmsBillsLubeInstanceBo bo) { + public DmsBillsLubeInstanceVo updateByBo(DmsBillsLubeInstanceBo bo) { DmsBillsLubeInstance update = MapstructUtils.convert(bo, DmsBillsLubeInstance.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + return MapstructUtils.convert(update, DmsBillsLubeInstanceVo.class); } /** @@ -225,13 +226,13 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer dmsBillsLubeInstanceBo.setPlanEndTime(planEndTime); // 插入润滑工单实例到数据库 - boolean success = this.insertByBo(dmsBillsLubeInstanceBo); + DmsBillsLubeInstanceVo billsLubeInstance = this.insertByBo(dmsBillsLubeInstanceBo); DmsPlanLubeBo dmsPlanLubeBo = MapstructUtils.convert(dmsPlanLube, DmsPlanLubeBo.class); // 批量插入润滑工单详情 batchInsertDmsBillsLubeDetail(dmsPlanLubeBo, dmsBillsLubeInstanceBo.getLubeInstanceId()); - return success; + return !ObjectUtils.isEmpty(billsLubeInstance);//不为空返回true } /** From ce11f85c6da5bc198ad4e6b99fe132cd7ad71a3b Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 15 May 2025 16:06:29 +0800 Subject: [PATCH 11/21] =?UTF-8?q?update=20=E6=9C=BA=E5=8F=B0=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=A2=9E=E5=8A=A0=E5=85=A5=E5=BA=93=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/mes/domain/ProdBaseMachineInfo.java | 5 +++++ .../org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java | 5 +++++ .../org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java index f991310..49f9a1b 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseMachineInfo.java @@ -128,6 +128,11 @@ public class ProdBaseMachineInfo extends TenantEntity { @TableLogic private String delFlag; + /** + * 入库类型(1直接入库 2扫描入库) + */ + private String instockType; + /** * 车间名称 */ diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java index c6e36b9..bc7c754 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java @@ -140,5 +140,10 @@ public class ProdBaseMachineInfoBo extends BaseEntity { @ExcelProperty(value = "请求间隔") private Long requestInterval; + /** + * 入库类型(1直接入库 2扫描入库) + */ + private String instockType; + private List baseMachineProcessList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java index a53df78..bdbaae8 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseMachineInfoVo.java @@ -197,6 +197,13 @@ public class ProdBaseMachineInfoVo implements Serializable { @ExcelProperty(value = "设备模型名称") private String deviceModeName; + /** + * 入库类型(1直接入库 2扫描入库) + */ + @ExcelProperty(value = "入库类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_instock_type") + private String instockType; + private List baseMachineProcessList; } From a0a25ec1f90e2689dfb35f703c73daeb85ed1bac Mon Sep 17 00:00:00 2001 From: zch Date: Fri, 16 May 2025 10:04:23 +0800 Subject: [PATCH 12/21] =?UTF-8?q?feat(job):=20=E4=B8=BAjob=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=9A=84Dubbo=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A7=9F=E6=88=B7id=E5=92=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7id=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DmsInspectStanceExecutor、DmsLubeStanceExecutor 和 DmsMaintStanceExecutor 中添加租户id和用户id参数 - 更新 remoteInspectInstanceService 和 dmsBillsLubeInstanceService 的方法以接收额外参数 - 在 DmsMaintStanceExecutor 中添加日志记录和错误处理 - 在 DmsJobEntity 中添加 tenantId 和 userId 字段 --- .../dromara/job/api/model/DmsJobEntity.java | 3 +++ .../snailjob/DmsInspectStanceExecutor.java | 5 +++- .../job/snailjob/DmsLubeStanceExecutor.java | 5 +++- .../job/snailjob/DmsMaintStanceExecutor.java | 27 ++++++++++++++++--- 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java b/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java index cf5c1cd..8affc25 100644 --- a/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java +++ b/ruoyi-api/ruoyi-api-job/src/main/java/org/dromara/job/api/model/DmsJobEntity.java @@ -54,5 +54,8 @@ public class DmsJobEntity implements Serializable { private LocalDateTime createDt; private LocalDateTime updateDt; + //DUBBO穿不了token,手动传参 + private String tenantId; + private String userId; } diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java index feb0e06..38bc986 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java @@ -33,8 +33,11 @@ public class DmsInspectStanceExecutor { // 将 JSON 字符串转为 Map Map paramMap = objectMapper.readValue(jsonStr, Map.class); String planCode = (String) paramMap.get("planInspectCode"); + String tenantId = (String) paramMap.get("tenant"); + String user = (String) paramMap.get("userId"); + Long userId = Long.parseLong(user); - R instance = remoteInspectInstanceService.insertInspectInstance(planCode); + R instance = remoteInspectInstanceService.insertInspectInstance(planCode, tenantId, userId); return ExecuteResult.success(instance); } catch (Exception e) { return ExecuteResult.failure(e.getMessage()); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java index 54a8975..dd0bff4 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java @@ -33,8 +33,11 @@ public class DmsLubeStanceExecutor { // 将 JSON 字符串转为 Map Map paramMap = objectMapper.readValue(jsonStr, Map.class); String planCode = (String) paramMap.get("planLubeCode"); + String tenantId = (String) paramMap.get("tenant"); + String user = (String) paramMap.get("userId"); + Long userId = Long.parseLong(user); - R instance = dmsBillsLubeInstanceService.insertLubeInstance(planCode); + R instance = dmsBillsLubeInstanceService.insertLubeInstance(planCode, tenantId, userId); return ExecuteResult.success(instance); } catch (Exception e) { return ExecuteResult.failure(e.getMessage()); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java index 95f53ee..d7c8c8b 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsMaintStanceExecutor.java @@ -8,6 +8,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.domain.R; import org.dromara.dms.api.RemoteMaintInstanceService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.util.Map; @@ -17,6 +19,7 @@ import java.util.Map; public class DmsMaintStanceExecutor { private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final Logger log = LoggerFactory.getLogger(DmsMaintStanceExecutor.class); @DubboReference private final RemoteMaintInstanceService dmsBillsMaintInstanceService; @@ -32,11 +35,27 @@ public class DmsMaintStanceExecutor { // 将 JSON 字符串转为 Map Map paramMap = objectMapper.readValue(jsonStr, Map.class); String planCode = (String) paramMap.get("planMaintCode"); - - R instance = dmsBillsMaintInstanceService.insertDmsBillsMaintInstance(planCode); - return ExecuteResult.success(instance); + String tenantId = (String) paramMap.get("tenantId"); + String user = (String) paramMap.get("userId"); + Long userId = Long.parseLong(user); + + log.info("开始执行设备保养实例生成任务,计划编码:{},租户ID:{},用户ID:{}", planCode, tenantId, userId); + + R instance = dmsBillsMaintInstanceService.insertDmsBillsMaintInstance(planCode, tenantId, userId); + + // 检查业务调用结果 + if (instance.getCode() == 200) { + log.info("设备保养实例生成成功,计划编码:{},结果:{}", planCode, instance.getData()); + return ExecuteResult.success("设备保养实例生成成功,影响行数:" + instance.getData()); + } else { + String errorMsg = "设备保养实例生成失败,计划编码:" + planCode + ",错误信息:" + instance.getMsg(); + log.error(errorMsg); + return ExecuteResult.failure(errorMsg); + } } catch (Exception e) { - return ExecuteResult.failure(e.getMessage()); + String errorMsg = "设备保养实例生成异常:" + e.getMessage(); + log.error(errorMsg, e); + return ExecuteResult.failure(errorMsg); } } From 489bf797002501a73879466bb6dd23a23371c8f7 Mon Sep 17 00:00:00 2001 From: zch Date: Fri, 16 May 2025 10:08:16 +0800 Subject: [PATCH 13/21] =?UTF-8?q?feat(dms):=20=E6=B7=BB=E5=8A=A0=E7=A7=9F?= =?UTF-8?q?=E6=88=B7ID=E5=92=8C=E7=94=A8=E6=88=B7ID=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 润滑工单dms_bills_lube_instance表新增租户id字段,相应实体类字段更新 - DmsPlanInspectService、DmsPlanLubeService 和 DmsPlanMaintService 中添加租户ID和用户ID传给定时任务job - 更新 RemoteInspectInstanceService、RemoteLubeInstanceService 和 RemoteMaintInstanceService 接口,增加租户ID和用户ID参数 - 在 RemoteInspectInstanceServiceImpl、RemoteLubeInstanceServiceImpl 和 RemoteMaintInstanceServiceImpl 中实现新增参数的传递 - 更新 RemoteJobServiceImpl,将租户ID和用户ID作为任务参数添加到集群任务中 --- .../dms/api/RemoteInspectInstanceService.java | 2 +- .../dms/api/RemoteLubeInstanceService.java | 2 +- .../dms/api/RemoteMaintInstanceService.java | 2 +- .../dms/domain/DmsBillsLubeInstance.java | 3 +- .../RemoteInspectInstanceServiceImpl.java | 17 ++- .../dubbo/RemoteLubeInstanceServiceImpl.java | 49 ++++---- .../dubbo/RemoteMaintInstanceServiceImpl.java | 34 +----- .../impl/DmsPlanInspectServiceImpl.java | 97 ++++++++++++++- .../service/impl/DmsPlanLubeServiceImpl.java | 111 +++++++----------- .../service/impl/DmsPlanMaintServiceImpl.java | 98 +++++++++++++++- .../job/service/RemoteJobServiceImpl.java | 8 ++ 11 files changed, 285 insertions(+), 138 deletions(-) diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java index a737557..f83031b 100644 --- a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java @@ -4,6 +4,6 @@ import org.dromara.common.core.domain.R; public interface RemoteInspectInstanceService { - public R insertInspectInstance(String planInspectCode); + public R insertInspectInstance(String planInspectCode, String tenantId, Long userId); } diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java index 52ad696..f287b3b 100644 --- a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java @@ -6,7 +6,7 @@ import org.dromara.common.core.domain.R; public interface RemoteLubeInstanceService { - public R insertLubeInstance(String lubeInstanceCode); + public R insertLubeInstance(String lubeInstanceCode, String tenantId, Long userId); diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java index 3fd1c70..66bcf1e 100644 --- a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java @@ -4,5 +4,5 @@ import org.dromara.common.core.domain.R; public interface RemoteMaintInstanceService { - public R insertDmsBillsMaintInstance(String planMaintCode); + public R insertDmsBillsMaintInstance(String planMaintCode, String tenantId, Long userId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java index 6e12bb5..560931b 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.tenant.core.TenantEntity; import org.dromara.dms.domain.vo.DmsBillsLubeDetailVo; import java.io.Serial; @@ -22,7 +23,7 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) @TableName("dms_bills_lube_instance") -public class DmsBillsLubeInstance extends BaseEntity { +public class DmsBillsLubeInstance extends TenantEntity { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java index 376d05c..61cd8fa 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -38,7 +38,7 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe @Override @Transactional( rollbackFor = Exception.class ) - public R insertInspectInstance(String planInspectCode){ + public R insertInspectInstance(String planInspectCode, String tenantId, Long userId){ // 使用 replaceAll 方法将双引号替换为空字符串 @@ -71,8 +71,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 - - //写死105,也可根据传入对象的wfprocessid作为传参。 /* Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(105l); @@ -85,6 +83,10 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // dmsBillsInspectInstance.setIsFlag("1"); dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检 + + dmsBillsInspectInstance.setCreateBy(userId); +// dmsBillsInspectInstance.setCreateTime(new Date()); + dmsBillsInspectInstance.setTenantId(tenantId); int i = dmsBillsInspectInstanceMapper.insert(dmsBillsInspectInstance); // List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); @@ -118,6 +120,10 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetail.setInspectStatus("0");//TODO:为什么设置为异常? // dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail); + + dmsInspectInstanceDetail.setTenantId(tenantId); + dmsInspectInstanceDetail.setCreateBy(userId); +// dmsInspectInstanceDetail.setCreateTime(new Date()); dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail); Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard()); @@ -138,6 +144,11 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId()); dmsInspectInstanceDetailProject.setInspectProjectId(projectId); // dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(dmsInspectInstanceDetailProject); + + dmsInspectInstanceDetailProject.setTenantId(tenantId); + dmsInspectInstanceDetailProject.setCreateBy(userId); +// dmsInspectInstanceDetailProject.setCreateTime(new Date()); + dmsInspectInstanceDetailProjectMapper.insert(dmsInspectInstanceDetailProject); // } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java index fa6b084..e1d65d7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java @@ -52,7 +52,7 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService @Override @Transactional(rollbackFor = Exception.class) - public R insertLubeInstance(String planLubeCode) { + public R insertLubeInstance(String planLubeCode, String tenantId, Long userId) { // 去除润滑计划编号中的双引号 // String lubeInstanceCodeS = planLubeCode.replaceAll("\"", ""); @@ -76,32 +76,35 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService } // 创建新的润滑工单实例对象 - DmsBillsLubeInstanceBo dmsBillsLubeInstanceBo = new DmsBillsLubeInstanceBo(); + DmsBillsLubeInstance dmsBillsLubeInstance = new DmsBillsLubeInstance(); // 设置创建人 - dmsBillsLubeInstanceBo.setCreateBy(dmsPlanLube.getCreateBy()); + dmsBillsLubeInstance.setCreateBy(dmsPlanLube.getCreateBy()); // 设置润滑工单的计划ID - dmsBillsLubeInstanceBo.setPlanLubeId(dmsPlanLube.getPlanLubeId()); + dmsBillsLubeInstance.setPlanLubeId(dmsPlanLube.getPlanLubeId()); // 设置计划开始时间为润滑时间 - dmsBillsLubeInstanceBo.setPlanBeginTime(dmsPlanLube.getLubeTime()); + dmsBillsLubeInstance.setPlanBeginTime(dmsPlanLube.getLubeTime()); // 生成并设置润滑工单编码 - dmsBillsLubeInstanceBo.setBillsLubeCode(Seq.getId(Seq.dmsLubeInstanceSeqType, Seq.dmsLubeInstanceCode)); + dmsBillsLubeInstance.setBillsLubeCode(Seq.getId(Seq.dmsLubeInstanceSeqType, Seq.dmsLubeInstanceCode)); // 设置润滑状态为待润滑 - dmsBillsLubeInstanceBo.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE); + dmsBillsLubeInstance.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE); // 设置润滑组 - dmsBillsLubeInstanceBo.setLubeGroup(dmsPlanLube.getLubeGroup()); + dmsBillsLubeInstance.setLubeGroup(dmsPlanLube.getLubeGroup()); // 设置润滑监督人 - dmsBillsLubeInstanceBo.setLubeSupervisor(dmsPlanLube.getLubeSupervisor()); + dmsBillsLubeInstance.setLubeSupervisor(dmsPlanLube.getLubeSupervisor()); // 设置润滑级别 - dmsBillsLubeInstanceBo.setLubeLevel(dmsPlanLube.getLubeLevel()); + dmsBillsLubeInstance.setLubeLevel(dmsPlanLube.getLubeLevel()); // 获取时间限制 Long timeLimit = dmsPlanLube.getTimeLimit(); // 计算并设置计划结束时间 Date planEndTime = new Date(dmsPlanLube.getLubeTime().getTime() + timeLimit * 1000L); - dmsBillsLubeInstanceBo.setPlanEndTime(planEndTime); + dmsBillsLubeInstance.setPlanEndTime(planEndTime); + + dmsBillsLubeInstance.setCreateBy(userId); +// dmsBillsLubeInstance.setCreateTime(new Date()); + dmsBillsLubeInstance.setTenantId(tenantId); // 插入润滑工单实例到数据库 - DmsBillsLubeInstanceVo BillsLubeInstance = dmsBillsLubeInstanceService.insertByBo(dmsBillsLubeInstanceBo); - + int i = dmsBillsLubeInstanceMapper.insert(dmsBillsLubeInstance); DmsPlanLubeBo dmsPlanLubeBo = MapstructUtils.convert(dmsPlanLube, DmsPlanLubeBo.class); @@ -110,25 +113,19 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService List billsLubeDetails = new ArrayList<>(); for (DmsPlanLubeDetailVo planLubeDetail : lubeDetails) { DmsBillsLubeDetail dmsBillsLubeDetail = new DmsBillsLubeDetail(); - dmsBillsLubeDetail.setLubeInstanceId(dmsBillsLubeInstanceBo.getLubeInstanceId()); + dmsBillsLubeDetail.setLubeInstanceId(dmsBillsLubeInstance.getLubeInstanceId()); dmsBillsLubeDetail.setMachineId(planLubeDetail.getDeviceId()); dmsBillsLubeDetail.setLubeStationId(planLubeDetail.getLubeStationId()); dmsBillsLubeDetail.setLubeStandardId(planLubeDetail.getLubeStandardId()); //dmsBillsLubeDetail.setActiveFlag("Y"); // 假设是否标记字段对应activeFlag - billsLubeDetails.add(dmsBillsLubeDetail); + + dmsBillsLubeDetail.setTenantId(tenantId); + dmsBillsLubeDetail.setCreateBy(userId); +// dmsBillsLubeDetail.setCreateTime(new Date()); + + dmsBillsLubeDetailMapper.insert(dmsBillsLubeDetail); } - -/* // 使用mybatis-plus批量保存 - return dmsBillsLubeDetailMapper.insertBatch(billsLubeDetails);*/ - // 修改批量插入方式,避免SQL Server批量插入时获取自动生成主键的问题 - boolean result = true; - for (DmsBillsLubeDetail detail : billsLubeDetails) { - result = result && dmsBillsLubeDetailMapper.insert(detail) > 0; - if (!result) { - break; - } - } return R.ok(); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java index 9b25bc7..2d25377 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java @@ -37,12 +37,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic - // 预定义系统用户相关常量,实际项目中建议从配置读取或定义在公共常量类中 - private static final Long SYSTEM_USER_ID = 1L; // 假设的系统管理员用户ID - private static final Long SYSTEM_DEPT_ID = 103L; // 假设的系统默认部门ID - private static final String DEFAULT_TENANT_ID_FOR_JOBS = "000000"; // 定时任务使用的默认租户ID - - /** * 新增保养工单 * @@ -51,7 +45,7 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic */ @Override @Transactional( rollbackFor = Exception.class ) - public R insertDmsBillsMaintInstance(String planMaintCode) { + public R insertDmsBillsMaintInstance(String planMaintCode , String tenantId, Long userId) { String planMaintCodeS = planMaintCode.replaceAll("\"", ""); DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS); List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); @@ -76,21 +70,8 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic dmsBillsMaintInstance.setPlanEndTime(new Date(lubeTime.getTime() + timeLimit * 1000l)); //字段没有自动填充,只能代码手动填充 - - // 获取用户信息 -/* SaSession session = StpUtil.getTokenSession(); - if (ObjectUtil.isNull(session)) { - return R.fail("用户会话不存在"); - } - LoginUser loginUser = (LoginUser) session.get("loginUser");*/ - LoginUser loginUser = new LoginUser();//暂时默认系统用户 - loginUser.setTenantId(DEFAULT_TENANT_ID_FOR_JOBS);//暂时默认系统用户 - loginUser.setUserId(SYSTEM_USER_ID);//暂时默认系统用户 - loginUser.setDeptId(SYSTEM_DEPT_ID);//暂时默认系统用户 - - dmsBillsMaintInstance.setCreateBy(SYSTEM_USER_ID);//暂时默认系统用户 - dmsBillsMaintInstance.setCreateDept(SYSTEM_DEPT_ID);//暂时默认系统用户 - dmsBillsMaintInstance.setTenantId(DEFAULT_TENANT_ID_FOR_JOBS);//暂时默认系统用户 + dmsBillsMaintInstance.setCreateBy(userId);//暂时默认系统用户 + dmsBillsMaintInstance.setTenantId(tenantId);//暂时默认系统用户 int i = dmsBillsMaintInstanceMapper.insert(dmsBillsMaintInstance); @@ -99,18 +80,15 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic // dmsMaintInstanceActivity.setProcessStepOrder(1L); // int i1 = dmsMaintInstanceActivityMapper.insertDmsMaintInstanceActivity(dmsMaintInstanceActivity); - batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId(), loginUser); + batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId(), tenantId, userId); return R.ok(i); } @Transactional( rollbackFor = Exception.class ) - public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId, LoginUser loginUser) { + public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId, String tenantId, Long userId) { - Long userId = loginUser.getUserId(); - Long deptId = loginUser.getDeptId(); - String tenantId = loginUser.getTenantId(); List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); List billsMaintDetails = new ArrayList<>(); @@ -125,7 +103,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic //字段没有自动填充,只能代码手动填充 dmsBillsMaintDetail.setCreateBy(userId); - dmsBillsMaintDetail.setCreateDept(deptId); dmsBillsMaintDetail.setTenantId(tenantId); dmsBillsMaintDetailMapper.insert(dmsBillsMaintDetail); @@ -147,7 +124,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic //字段没有自动填充,只能代码手动填充 billsMaintDetailProject.setCreateBy(userId); - billsMaintDetailProject.setCreateDept(deptId); billsMaintDetailProject.setTenantId(tenantId); dmsBillsMaintDetailProjectMapper.insert(billsMaintDetailProject); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java index ca13ca2..3ddf8f0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -15,10 +15,12 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.dms.domain.DmsBaseInspectRoute; import org.dromara.dms.domain.DmsPlanInspect; import org.dromara.dms.domain.bo.DmsPlanInspectBo; import org.dromara.dms.domain.vo.DmsPlanInspectVo; +import org.dromara.dms.domain.vo.DmsPlanMaintVo; import org.dromara.dms.mapper.DmsBaseInspectRouteMapper; import org.dromara.dms.mapper.DmsPlanInspectMapper; import org.dromara.dms.service.IDmsPlanInspectService; @@ -204,17 +206,17 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 .setArgsStr("planInspectCode") - .setExtAttrs(planInspectCode); + .setExtAttrs(planInspectCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); R longR = remoteJobService.addClusterJob(dmsJobEntity); - Long jobId = longR.getData(); - - - String time = cron; + Long newJobId = longR.getData(); //通过cron表达式获取下一次执行时间 + String time = cron; Date nextExecution = CronUtils.getNextExecution(time); add.setPlanTime(nextExecution); add.setPlanInspectCode(planInspectCode); - add.setJobId(jobId); + add.setJobId(newJobId); } Long timeLimitDays = add.getTimeLimitDays()==null ? 0L:add.getTimeLimitDays(); @@ -241,9 +243,83 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { * @return 是否修改成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanInspectBo bo) { DmsPlanInspect update = MapstructUtils.convert(bo, DmsPlanInspect.class); + String day = "*"; + String month = "*"; + String week = "*"; + String year = "*"; + String cron = ""; + if (update.getDay()!=null){ + day = update.getDay().toString(); + } + if (update.getMonth()!=null){ + month = update.getMonth().toString(); + } + if (update.getWeek()!=null){ + Long weekDay = update.getWeek() + 1; + week = weekDay.toString(); + } + if (update.getYear()!=null){ + year = update.getYear().toString(); + } + if (update.getInspectLevel().equals(1l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+month+" ?"; + } + if (update.getInspectLevel().equals(2l)){ + cron = "0 0 "+update.getHour()+" ?"+" "+month+" "+week; + } + if (update.getInspectLevel().equals(3l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+ month+" ? "+year; + } + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + update.setPlanTime(nextExecution); + //获取设备总数 + Long aLong = dmsBaseInspectRouteMapper.selectAmountByInspectRouteId(update.getInspectRouteId()); + update.setDeviceAmount(aLong); validEntityBeforeSave(update); + + Long jobId = bo.getJobId(); + String planInspectCode = bo.getPlanInspectCode(); +// String cronExpression = bo.getCronExpression(); + if (bo.getActiveFlag().equals("1")) {//激活标识(1是 0否) + if (StringUtils.isNull(jobId)){//之前没激活创建定时任务,创建定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("点巡检计划编号" + planInspectCode + "工单任务") + .setExecutorInfo("stanceInspect")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planInspectCode") + .setExtAttrs(planInspectCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long newJobId = longR.getData(); + update.setJobId(newJobId); + }else{//之前激活了,修改定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity + .setId(jobId) + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R updateClusterJob = remoteJobService.updateClusterJob(dmsJobEntity); + } + }else{//如果激活状态为0(1是 0否) + if (StringUtils.isNotNull(jobId)) {//之前激活过,创建并关联了任务 + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } + return baseMapper.updateById(update) > 0; } @@ -262,10 +338,19 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { * @return 是否删除成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } + for (Long id : ids){ + DmsPlanInspectVo dmsPlanInspectVo = baseMapper.selectVoById(id); + Long jobId = dmsPlanInspectVo.getJobId(); + if (StringUtils.isNotNull(jobId)){ + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } return baseMapper.deleteByIds(ids) > 0; } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java index 582e64e..86d3cc8 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java @@ -13,6 +13,7 @@ import org.dromara.common.core.utils.uuid.Seq; import org.dromara.common.mybatis.Utils.UniqueCodeUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.dms.domain.DmsBillsLubeInstance; import org.dromara.dms.domain.DmsPlanLube; import org.dromara.dms.domain.bo.DmsPlanLubeBo; @@ -179,19 +180,6 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { // 生成新的润滑计划编号 String planLubeCode = Seq.getId(Seq.dmsPlanLubeSeqType, Seq.dmsPlanLubeCode); bo.setPlanLubeCode(planLubeCode); -/* - // 创建系统任务对象 - SysJob job = new SysJob(); - job.setJobName("润滑计划编号" + planLubeCode + "工单任务"); - job.setJobGroup("DEFAULT"); - job.setInvokeTarget("ryTask.getDmsBillsLube(\"" + planLubeCode + "\")"); - job.setCronExpression(bo.getCronExpression()); - job.setMisfirePolicy("1"); - job.setConcurrent("1"); - job.setStatus("1"); - - // 添加任务到远程服务并获取任务ID - R jobIdR = remoteJobService.add(SecurityConstants.INNER, job);*/ if(bo.getActiveFlag().equals("1")){//激活标识(1是 0否) DmsJobEntity dmsJobEntity = new DmsJobEntity(); @@ -205,23 +193,22 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 .setArgsStr("planLubeCode") - .setExtAttrs(planLubeCode); + .setExtAttrs(planLubeCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); R longR = remoteJobService.addClusterJob(dmsJobEntity); Long jobId = longR.getData(); - // 通过cron表达式获取下一次执行时间 String cronExpression = bo.getCronExpression(); if (StringUtils.isNotEmpty(cronExpression)) { Date nextExecution = CronUtils.getNextExecution(cronExpression); bo.setLubeTime(nextExecution); } - // 设置润滑计划的任务ID bo.setJobId(jobId); } - // 计算润滑计划的时间限制(天和小时) Long timeLimitDays = bo.getTimeLimitDays() == null ? 0L : bo.getTimeLimitDays(); Long timeLimitHours = bo.getTimeLimitHours() == null ? 0L : bo.getTimeLimitHours(); @@ -245,82 +232,65 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { * @return 是否修改成功 */ @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanLubeBo bo) { Long jobId = bo.getJobId(); String cronExpression = bo.getCronExpression(); - if (StringUtils.isNotEmpty(cronExpression)) { - // 通过cron表达式获取下一次执行时间 - Date nextExecution = CronUtils.getNextExecution(cronExpression); - bo.setLubeTime(nextExecution); - if (bo.getActiveFlag().equals("1")){//激活标识(1是 0否) - if (jobId == null ) {// 如果没有关联任务,创建新任务 -/* String planLubeCode = bo.getPlanLubeCode(); - SysJob job = new SysJob(); - job.setJobName("润滑计划编号" + planLubeCode + "工单任务"); - job.setJobGroup("DEFAULT"); - job.setInvokeTarget("ryTask.getDmsBillsLube(\"" + planLubeCode + "\")"); - job.setCronExpression(bo.getCronExpression()); - job.setMisfirePolicy("1"); - job.setConcurrent("1"); - job.setStatus("1"); - R jobIdR = remoteJobService.add(SecurityConstants.INNER, job); - bo.setJobId(jobIdR.getData().longValue());*/ + + // 通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(cronExpression); + bo.setLubeTime(nextExecution); + + if (StringUtils.isNull(jobId)) {// 如果没有关联任务,创建新任务 String planLubeCode = bo.getPlanLubeCode(); - Long newJobId = SnailJobOpenApi.addClusterJob() - .setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 .setJobName("润滑计划编号" + planLubeCode + "工单任务") .setExecutorInfo("stanceLube")//执行器名称 - .addArgsStr("planLubeCode", planLubeCode)//执行任务参数 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 .setMaxRetryTimes(2)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 - .execute(); + .setArgsStr("planLubeCode") + .setExtAttrs(planLubeCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long newJobId = longR.getData(); bo.setJobId(newJobId); + } else {// 如果有关联任务,更新状态 -/* // 更新现有任务 - SysJob sysJob = remoteJobService.getJobInfo(jobId, SecurityConstants.INNER); - if (sysJob != null) { - sysJob.setCronExpression(bo.getCronExpression()); - remoteJobService.update(SecurityConstants.INNER, sysJob); - }*/ + // 更新现有任务 String planLubeCode = bo.getPlanLubeCode(); - JobResponseVO execute = SnailJobOpenApi.getJobDetail(jobId).execute(); - if (execute != null) { - SnailJobOpenApi - .updateJobStatus(jobId) - .setStatus(StatusEnum.YES) - .execute(); - SnailJobOpenApi.updateClusterJob(jobId) - .setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setId(jobId);//任务ID + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 .setJobName("润滑计划编号" + planLubeCode + "工单任务") .setExecutorInfo("stanceLube")//执行器名称 - .addArgsStr("planLubeCode", planLubeCode)//执行任务参数 .setExecutorTimeout(30)//执行超时时间 .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 .setMaxRetryTimes(2)//最大重试次数 .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 - .execute(); - } + .setArgsStr("planLubeCode") + .setExtAttrs(planLubeCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R longR = remoteJobService.updateClusterJob(dmsJobEntity); } }else{//如果激活状态为0(1是 0否) - if (jobId != null) {//如果关联了任务,则任务状态为关闭 - SnailJobOpenApi - .updateJobStatus(jobId) - .setStatus(StatusEnum.NO)//任务状态(0:关闭;1:开启) - .execute(); + if (StringUtils.isNotNull(jobId)) {//如果关联了任务,则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) } } - } // 计算润滑计划的时间限制(天和小时) Long timeLimitDays = bo.getTimeLimitDays() == null ? 0L : bo.getTimeLimitDays(); @@ -357,18 +327,21 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { * @return 是否删除成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ - // 删除前检查是否可以删除 -/* for (Long id : ids) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + // 删除前检查是否可以删除 + for (Long id : ids) { // 查询关联的任务ID DmsPlanLubeVo dmsPlanLube = baseMapper.selectVoById(id); - if (dmsPlanLube != null && dmsPlanLube.getJobId() != null) { - // 删除关联的定时任务 - remoteJobService.remove(dmsPlanLube.getJobId(), SecurityConstants.INNER); + Long jobId = dmsPlanLube.getJobId(); + if (StringUtils.isNotNull(jobId)) { + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) } - }*/ - } + } return baseMapper.deleteByIds(ids) > 0; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java index f8706be..eda8e49 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -15,6 +15,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.dms.domain.DmsPlanMaint; import org.dromara.dms.domain.bo.DmsPlanMaintBo; import org.dromara.dms.domain.vo.DmsPlanMaintVo; @@ -217,7 +218,9 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 .setArgsStr("planMaintCode") - .setExtAttrs(planMaintCode); + .setExtAttrs(planMaintCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); R longR = remoteJobService.addClusterJob(dmsJobEntity); Long jobId = longR.getData(); String time = cron; @@ -248,9 +251,93 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { * @return 是否修改成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanMaintBo bo) { DmsPlanMaint update = MapstructUtils.convert(bo, DmsPlanMaint.class); + String day = "*"; + String month = "*"; + String week = "*"; + String year = "*"; + String cron = ""; + if (update.getDay()!=null){ + day = update.getDay().toString(); + } + if (update.getMonth()!=null){ + month = update.getMonth().toString(); + } + if (update.getWeek()!=null){ + Long weekDay = update.getWeek() + 1; + week = weekDay.toString(); + } + if (update.getYear()!=null){ + year = update.getYear().toString(); + } + if (update.getMaintLevel().equals(1l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+month+" ?"; + } + if (update.getMaintLevel().equals(2l)){ + cron = "0 0 "+update.getHour()+" ?"+" "+month+" "+week; + } + if (update.getMaintLevel().equals(3l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+ month+" ? "+year; + } + + Long timeLimitDays = update.getTimeLimitDays()==null?0L:update.getTimeLimitDays(); + Long timeLimitHours = update.getTimeLimitHours() == null?0L:update.getTimeLimitHours(); + update.setTimeLimit((timeLimitDays * SECONDS_PER_DAY) + + (timeLimitHours * SECONDS_PER_HOUR)); + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + update.setMaintTime(nextExecution); validEntityBeforeSave(update); + + Long jobId = bo.getJobId(); + String planMaintCode = bo.getPlanMaintCode(); + if (bo.getActiveFlag().equals("1")){ + if (StringUtils.isNull(jobId)){//之前没激活创建定时任务,创建定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("保养计划编号" + planMaintCode + "工单任务") + .setExecutorInfo("stanceMaint")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planMaintCode") + .setExtAttrs(planMaintCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long newJobId = longR.getData(); + update.setMaintTime(nextExecution); + update.setJobId(newJobId); + }else{//之前激活了,修改定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setId(jobId); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("保养计划编号" + planMaintCode + "工单任务") + .setExecutorInfo("stanceMaint")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planMaintCode") + .setExtAttrs(planMaintCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R updateClusterJob = remoteJobService.updateClusterJob(dmsJobEntity); + } + }else{//如果激活状态为0(1是 0否) + if (StringUtils.isNotNull(jobId)){//之前激活过,创建并关联了任务 + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } return baseMapper.updateById(update) > 0; } @@ -269,10 +356,19 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { * @return 是否删除成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } + for (Long id : ids){ + DmsPlanMaintVo dmsPlanMaintVo = baseMapper.selectVoById(id); + Long jobId = dmsPlanMaintVo.getJobId(); + if (StringUtils.isNotNull(jobId)){ + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } return baseMapper.deleteByIds(ids) > 0; } } diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java index bc120a7..a182e1a 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java @@ -23,6 +23,10 @@ public class RemoteJobServiceImpl implements RemoteJobService { // private final JobMapper jobMapper; + //常量 + private static final String tenant = "tenantId"; + private static final String user = "userId"; + /** * 新增集群模式的任务 * @@ -43,6 +47,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 + .addArgsStr(tenant, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 + .addArgsStr(user, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) .execute(); if (jobId != null) { @@ -75,6 +81,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 + .addArgsStr(tenant, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 + .addArgsStr(user, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) .execute(); return success ? R.ok() : R.fail("修改集群任务失败"); From 79d393f414a9dcb4f6f4cf8d9d593aafbc787891 Mon Sep 17 00:00:00 2001 From: xs Date: Fri, 16 May 2025 18:05:37 +0800 Subject: [PATCH 14/21] =?UTF-8?q?1.3.3=EF=BC=9A=20=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=EF=BC=9A=E7=89=A9=E6=96=99bom=E5=AE=8C=E5=96=84=EF=BC=8C?= =?UTF-8?q?=E6=A0=91=E4=B8=8D=E6=A0=B9=E6=8D=AEbom=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E9=80=92=E5=BD=92=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/HwMomMesConstants.java | 3 + .../controller/ProdMaterialBomController.java | 24 + .../controller/ProdPlanInfoController.java | 12 + .../mes/domain/vo/ProdMaterialBomVo.java | 4 + .../dromara/mes/domain/vo/ProdPlanInfoVo.java | 5 +- .../org/dromara/mes/domain/vo/TreeSelect.java | 46 ++ .../mes/mapper/ProdMaterialBomMapper.java | 11 + .../mes/service/IProdMaterialBomService.java | 17 + .../mes/service/IProdPlanInfoService.java | 5 + .../impl/ProdMaterialBomServiceImpl.java | 489 +++++++++++++++--- .../service/impl/ProdPlanInfoServiceImpl.java | 85 ++- .../mapper/mes/ProdMaterialBomMapper.xml | 90 +++- 12 files changed, 708 insertions(+), 83 deletions(-) diff --git a/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/HwMomMesConstants.java b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/HwMomMesConstants.java index c44bccf..4d62621 100644 --- a/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/HwMomMesConstants.java +++ b/ruoyi-common/hwmom-common-mom/src/main/java/org/dromara/common/constant/HwMomMesConstants.java @@ -21,4 +21,7 @@ public interface HwMomMesConstants { */ public static final String REDIS_KEY_DEVICE_INFO = "hw_device_info"; + public static final String MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE = "1";//启用 + public static final String MES_MATERIAL_BOM_ACTIVE_FLAG_HISTORY = "2";//历史 + public static final String MES_MATERIAL_BOM_ACTIVE_FLAG_DESIGN = "3";//设计中 } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java index fd87905..ab81121 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java @@ -135,6 +135,19 @@ public class ProdMaterialBomController extends BaseController { return R.ok(list); } + + /** + * 查询物料BOM信息列表 + */ + @SaCheckPermission("mes:materialBom:add") + @GetMapping("/selectNextMaterialBomVersion/{parentId}") + public R selectNextMaterialBomVersion(@NotNull(message = "不能为空") + @PathVariable Long parentId) { + String nextMaterialBomVersion = prodMaterialBomService.selectNextMaterialBomVersion(parentId); + return R.ok("success",nextMaterialBomVersion); + } + + /** * 根据结构BOM批量插入物料清单BOM。 */ @@ -203,4 +216,15 @@ public class ProdMaterialBomController extends BaseController { return R.ok(list); } + + /** + * 发布 + */ + @SaCheckPermission("mes:materialBom:publish") + @Log(title = "物料BOM信息", businessType = BusinessType.PUBLISH) + @RepeatSubmit() + @PostMapping("/publish") + public R publish(@RequestBody ProdMaterialBomBo bo) { + return toAjax(prodMaterialBomService.publishByBo(bo)); + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java index a6fa6f5..3a1b610 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java @@ -20,6 +20,7 @@ import org.dromara.mes.domain.bo.ProdMaterialBomBo; import org.dromara.mes.domain.bo.ProdMaterialBomVersionBo; import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.mes.domain.vo.*; +import org.dromara.mes.enums.PlanEventEnum; import org.dromara.mes.service.IProdBaseRouteProcessService; import org.dromara.mes.service.IProdMaterialBomService; import org.dromara.mes.service.IProdMaterialBomVersionService; @@ -210,4 +211,15 @@ public class ProdPlanInfoController extends BaseController { return R.ok(prodMaterialBomVersionService.queryList(prodMaterialBomBo)); } + + /** + * 修改planstatus状态测试状态机 + * @param planId + * @param event + * @return + */ + @PostMapping("/{planId}/events") + public boolean triggerEvent(@PathVariable Long planId, @RequestParam PlanEventEnum event) { + return prodPlanInfoService.sendEvent(planId, event); + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdMaterialBomVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdMaterialBomVo.java index ff9cdf2..3b08627 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdMaterialBomVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdMaterialBomVo.java @@ -213,4 +213,8 @@ public class ProdMaterialBomVo implements Serializable { && Objects.equals(parentMaterialTypeId, o.getParentMaterialTypeId()) && Objects.equals(materialBomVersion, o.getMaterialBomVersion()) && standardAmount.compareTo(o.getStandardAmount())==0; } + + public String getKey(){ + return this.parentId+"-"+this.materialBomVersion; + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java index 597a1bb..0e9471c 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdPlanInfoVo.java @@ -11,11 +11,13 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.mes.enums.PlanStatusEnum; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import javax.persistence.EnumType; +import javax.persistence.Enumerated; /** @@ -182,6 +184,7 @@ public class ProdPlanInfoVo implements Serializable { */ @ExcelProperty(value = "工单计划状态", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "mes_plan_status") +// @Enumerated(EnumType.ORDINAL) private String planStatus; /** diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/TreeSelect.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/TreeSelect.java index 21001a1..675de65 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/TreeSelect.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/TreeSelect.java @@ -52,6 +52,10 @@ public class TreeSelect implements Serializable { private String treeKey;//作为树的唯一键使用 + private String activeFlag;//状态 + + private boolean isRoot; + public TreeSelect() { } @@ -79,6 +83,27 @@ public class TreeSelect implements Serializable { this.materialTypeId = prodMaterialBomVo.getMaterialTypeId(); this.materialTypeName = prodMaterialBomVo.getMaterialTypeName(); this.materialBomVersion = prodMaterialBomVo.getMaterialBomVersion(); + this.activeFlag = prodMaterialBomVo.getActiveFlag(); + } + + public TreeSelect(ProdMaterialBomVo prodMaterialBomVo,boolean isRoot) { + this.id = prodMaterialBomVo.getMaterialBomId();//树的唯一键,有可能为空,所以不能作为树的ID + this.treeKey = prodMaterialBomVo.getMaterialId() + "-" + prodMaterialBomVo.getMaterialBomVersion(); + if (prodMaterialBomVo.getParentId() == null) { + this.label = prodMaterialBomVo.getMaterialName(); + } else { + this.label = "[" + prodMaterialBomVo.getMaterialBomVersion() + "][" + prodMaterialBomVo.getMaterialTypeName() + "]" + + prodMaterialBomVo.getMaterialName(); + } + this.parentId = prodMaterialBomVo.getParentId(); + this.materialId = prodMaterialBomVo.getMaterialId(); + this.children = prodMaterialBomVo.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + this.materialName = prodMaterialBomVo.getMaterialName(); + this.materialTypeId = prodMaterialBomVo.getMaterialTypeId(); + this.materialTypeName = prodMaterialBomVo.getMaterialTypeName(); + this.materialBomVersion = prodMaterialBomVo.getMaterialBomVersion(); + this.activeFlag = prodMaterialBomVo.getActiveFlag(); + this.isRoot = isRoot; } public Long getId() { @@ -160,4 +185,25 @@ public class TreeSelect implements Serializable { public void setTreeKey(String treeKey) { this.treeKey = treeKey; } + + public String getActiveFlag() { + return activeFlag; + } + + public void setActiveFlag(String activeFlag) { + this.activeFlag = activeFlag; + } + + public boolean isRoot() { + return isRoot; + } + + public void setRoot(boolean root) { + isRoot = root; + } + + // 唯一标识 + public String getUniqueKey() { + return parentId + "|" + materialId + "|" + materialBomVersion; + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdMaterialBomMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdMaterialBomMapper.java index 0b67d90..0799e7d 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdMaterialBomMapper.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdMaterialBomMapper.java @@ -1,5 +1,6 @@ package org.dromara.mes.mapper; +import org.apache.ibatis.annotations.Select; import org.dromara.mes.domain.ProdMaterialBom; import org.dromara.mes.domain.bo.ProdMaterialBomBo; import org.dromara.mes.domain.vo.ProdMaterialBomVo; @@ -57,4 +58,14 @@ public interface ProdMaterialBomMapper extends BaseMapperPlus materialBomBos); + /** + * 根据父级物料ID获取下一个版本号 + * @param parentId + * @return + */ + public String selectNextMaterialBomVersion(Long parentId); + /** * 根据结构BOM批量插入物料清单BOM。 * @param boList 需要插入的物料清单BOM列表。 diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java index c5b3cc0..2dcaa96 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdPlanInfoService.java @@ -6,6 +6,7 @@ import org.dromara.mes.domain.vo.ProdPlanInfoVo; import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.mes.enums.PlanEventEnum; import java.util.Collection; import java.util.List; @@ -107,4 +108,8 @@ public interface IProdPlanInfoService { * @return 生产计划监控列表 */ List queryMoritorList(ProdPlanInfoBo bo); + + + public boolean sendEvent(Long planId, PlanEventEnum event); + } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index 99257c5..5d9fcbf 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -134,6 +134,60 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } + /** + * 发布物料BOM信息 + * + * @param bo 物料BOM信息 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean publishByBo(ProdMaterialBomBo bo) { + String materialBomVersion = bo.getMaterialBomVersion(); + bo.setDeleteFlag(HwMomMesConstants.DELETE_FLAG_NO); + bo.setMaterialBomVersion(null); + + //先获取parentid所有的物料bom信息 + List allVosByParentId = this.queryList(bo); + if (allVosByParentId == null || allVosByParentId.isEmpty()) { + throw new ServiceException("数据已删除"); + } + + //再过滤出当前要发布的版本信息 + List toPublishVos = allVosByParentId.stream(). + filter(e -> e.getMaterialBomVersion().equals(materialBomVersion) && + !e.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE)) + .collect(Collectors.toList()); + if (toPublishVos == null && toPublishVos.isEmpty()) { + throw new ServiceException("无可发布数据,或已发布"); + } + + //再过滤出其他激活版本,需要改为历史版本的数据 + List toHistoryVos = allVosByParentId.stream(). + filter(e -> !e.getMaterialBomVersion().equals(materialBomVersion) && + e.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE)) + .collect(Collectors.toList()); + + //发布 + for (ProdMaterialBomVo toPublishVo : toPublishVos) { + ProdMaterialBom toPublishMaterialBom = MapstructUtils.convert(toPublishVo, ProdMaterialBom.class); + toPublishMaterialBom.setActiveFlag(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE); + + baseMapper.updateById(toPublishMaterialBom); + } + + //改为历史版本 + if (toHistoryVos != null && !toHistoryVos.isEmpty()) { + for (ProdMaterialBomVo toHistoryVo : toHistoryVos) { + ProdMaterialBom toHistoryMaterialBom = MapstructUtils.convert(toHistoryVo, ProdMaterialBom.class); + toHistoryMaterialBom.setActiveFlag(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_HISTORY); + baseMapper.updateById(toHistoryMaterialBom); + } + } + + return true; + } + /** * 校验并批量删除物料BOM信息信息 * @@ -163,7 +217,7 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { * @description 校验并批量删除物料BOM信息信息 */ @Override - @Transactional (rollbackFor = Exception.class) + @Transactional(rollbackFor = Exception.class) public Boolean deleteMaterialBoms(List materialBomBos) { Collection ids = new ArrayList<>(); materialBomBos.forEach(materialBomBo -> { @@ -181,51 +235,65 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { * 更新前的数据校验 */ private void validEntityUsed(@NotNull ProdMaterialBomBo entity) { - Long semiFinishedId = mesProperties.getSemiFinishedId(); - Long modelingId = mesProperties.getModelingId(); - Long vulcanizingId = mesProperties.getVulcanizingId(); - String semiFinishedTableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + semiFinishedId; - String modelingTableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + modelingId; - String vulcanizingTableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + vulcanizingId; - - ProdPlanInfoBo queryBo = new ProdPlanInfoBo(); - queryBo.setMaterialId(entity.getParentId()); - queryBo.setMaterialBomVersion(entity.getMaterialBomVersion()); - MPJLambdaWrapper lqw = buildPlanQueryWrapper(queryBo); - - /** - * 查询半制品计划、成型计划、硫化计划中有没有使用此bom - */ - List semiFinishedPlanInfoVos = prodPlanInfoMapper.selectProdPlanInfoList(semiFinishedTableName, lqw); - if (semiFinishedPlanInfoVos != null && !semiFinishedPlanInfoVos.isEmpty()) { - List planCodes = semiFinishedPlanInfoVos.stream() - .map(ProdPlanInfoVo::getPlanCode) - .toList(); - - throw new ServiceException("半制品计划中计划编号[" + planCodes.toString() + "]已经使用此bom,不能修改"); + if(entity.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE)){ + throw new ServiceException("此物料bom已经发布,不能修改"); } - List modelingPlanInfoVos = prodPlanInfoMapper.selectProdPlanInfoList(modelingTableName, lqw); - if (modelingPlanInfoVos != null && !modelingPlanInfoVos.isEmpty()) { - List planCodes = modelingPlanInfoVos.stream() - .map(ProdPlanInfoVo::getPlanCode) - .toList(); - - throw new ServiceException("成型计划中计划编号[" + planCodes.toString() + "]已经使用此bom,不能修改"); - } - - List vulcanizingPlanInfoVos = prodPlanInfoMapper.selectProdPlanInfoList(vulcanizingTableName, lqw); - if (vulcanizingPlanInfoVos != null && !vulcanizingPlanInfoVos.isEmpty()) { - List planCodes = vulcanizingPlanInfoVos.stream() - .map(ProdPlanInfoVo::getPlanCode) - .toList(); - - throw new ServiceException("硫化计划中计划编号已经使用[" + planCodes.toString() + "已经使用此bom,不能修改"); + if(entity.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_HISTORY)){ + throw new ServiceException("此物料bom为历史版本,不能修改"); } } +// /** +// * 更新前的数据校验 +// */ +// private void validEntityUsed(@NotNull ProdMaterialBomBo entity) { +// Long semiFinishedId = mesProperties.getSemiFinishedId(); +// Long modelingId = mesProperties.getModelingId(); +// Long vulcanizingId = mesProperties.getVulcanizingId(); +// +// String semiFinishedTableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + semiFinishedId; +// String modelingTableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + modelingId; +// String vulcanizingTableName = DatabaseConstants.TABLE_NAME_PROD_PLAN_INFO_PREFIX + "_" + vulcanizingId; +// +// ProdPlanInfoBo queryBo = new ProdPlanInfoBo(); +// queryBo.setMaterialId(entity.getParentId()); +// queryBo.setMaterialBomVersion(entity.getMaterialBomVersion()); +// MPJLambdaWrapper lqw = buildPlanQueryWrapper(queryBo); +// +// /** +// * 查询半制品计划、成型计划、硫化计划中有没有使用此bom +// */ +// List semiFinishedPlanInfoVos = prodPlanInfoMapper.selectProdPlanInfoList(semiFinishedTableName, lqw); +// if (semiFinishedPlanInfoVos != null && !semiFinishedPlanInfoVos.isEmpty()) { +// List planCodes = semiFinishedPlanInfoVos.stream() +// .map(ProdPlanInfoVo::getPlanCode) +// .toList(); +// +// throw new ServiceException("半制品计划中计划编号[" + planCodes.toString() + "]已经使用此bom,不能修改"); +// } +// +// List modelingPlanInfoVos = prodPlanInfoMapper.selectProdPlanInfoList(modelingTableName, lqw); +// if (modelingPlanInfoVos != null && !modelingPlanInfoVos.isEmpty()) { +// List planCodes = modelingPlanInfoVos.stream() +// .map(ProdPlanInfoVo::getPlanCode) +// .toList(); +// +// throw new ServiceException("成型计划中计划编号[" + planCodes.toString() + "]已经使用此bom,不能修改"); +// } +// +// List vulcanizingPlanInfoVos = prodPlanInfoMapper.selectProdPlanInfoList(vulcanizingTableName, lqw); +// if (vulcanizingPlanInfoVos != null && !vulcanizingPlanInfoVos.isEmpty()) { +// List planCodes = vulcanizingPlanInfoVos.stream() +// .map(ProdPlanInfoVo::getPlanCode) +// .toList(); +// +// throw new ServiceException("硫化计划中计划编号已经使用[" + planCodes.toString() + "已经使用此bom,不能修改"); +// } +// +// } /** @@ -244,6 +312,20 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } + /** + * 根据父级物料ID获取下一个版本号 + * + * @param parentId + * @return + */ + @Override + public String selectNextMaterialBomVersion(Long parentId) { + String nextMaterialBomVersion = baseMapper.selectNextMaterialBomVersion(parentId); + System.out.println("nnn:" + nextMaterialBomVersion); + return nextMaterialBomVersion; + } + + /** * 根据结构BOM批量插入物料清单BOM。 * @@ -257,6 +339,9 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { return false; } +// long materialBomId = baseMapper.getNextMaterialBomIdSequence(); +// System.out.println("matbomid:"+materialBomId); + //判断在新建子级时,是否存在在此颗树的父级节点存在此子级节点,根据bom版本找(可以先不加此判断,主要原因是物料类型已经限制了) //获取materialbomid不为空的更新,获取materialbomid为空materialid不为空的保存 for (ProdMaterialBomBo prodMaterialBomBo : boList) { @@ -311,17 +396,295 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { @Override public List selectMaterialBomTreeList(ProdMaterialBomBo bo) { List prodMaterialBomVos = baseMapper.selectMaterialBomJoinList(bo); - return buildMaterialBomTreeSelect(prodMaterialBomVos); + return buildMaterialBomTree(prodMaterialBomVos); } - /** * 构建前端所需要树结构 * + * @param bomList 生产bom结构树列表 + * @return 下拉树结构列表 + */ + private List buildMaterialBomTree(List bomList) { + // 1. 建立索引 + Map> parentVersionGroup = new HashMap<>(); + Map> materialVersions = new HashMap<>(); + Map materialNameMap = new HashMap<>(); + Map materialTypeIdMap = new HashMap<>(); + Map materialTypeNameMap = new HashMap<>(); + Map versionActiveFlagMap = new HashMap<>(); // 新增:存储版本状态 + + for (ProdMaterialBomVo item : bomList) { + // 按parentId+version分组 + String parentKey = item.getParentId() + "_" + item.getMaterialBomVersion(); + parentVersionGroup.computeIfAbsent(parentKey, k -> new ArrayList<>()).add(item); + + // 记录每个material的所有版本 + materialVersions.computeIfAbsent(item.getMaterialId(), k -> new HashSet<>()) + .add(item.getMaterialBomVersion()); + + // 记录物料名称 + if (item.getMaterialName() != null) { + materialNameMap.putIfAbsent(item.getMaterialId(), item.getMaterialName()); + } + if (item.getParentMaterialName() != null) { + materialNameMap.putIfAbsent(item.getParentId(), item.getParentMaterialName()); + } + + // 记录物料类型ID和物料类型名称 + if (item.getMaterialTypeId() != null) { + materialTypeIdMap.putIfAbsent(item.getMaterialId(), item.getMaterialTypeId()); + materialTypeNameMap.putIfAbsent(item.getMaterialId(), item.getMaterialTypeName()); + } + if (item.getParentMaterialTypeId() != null) { + materialTypeIdMap.putIfAbsent(item.getParentId(), item.getParentMaterialTypeId()); + materialTypeNameMap.putIfAbsent(item.getParentId(), item.getParentMaterialTypeName()); + } + + // 记录版本状态(新增) + String versionKey = item.getParentId() + "_" + item.getMaterialBomVersion(); + versionActiveFlagMap.putIfAbsent(versionKey, item.getActiveFlag()); // 假设activeFlag是boolean类型 + + } + + // 2. 找出顶级节点 + Set topLevelParentIds = bomList.stream() + .map(ProdMaterialBomVo::getParentId) + .filter(parentId -> !materialVersions.containsKey(parentId)) + .collect(Collectors.toSet()); + + // 3. 构建树结构 + List tree = new ArrayList<>(); + + for (Long topParentId : topLevelParentIds) { + // 获取该顶级节点的所有版本 + Set parentVersions = bomList.stream() + .filter(item -> item.getParentId().equals(topParentId)) + .map(ProdMaterialBomVo::getMaterialBomVersion) + .collect(Collectors.toSet()); + + for (String version : parentVersions) { + String versionKey = topParentId + "_" + version; + String activeFlag = versionActiveFlagMap.get(versionKey); + TreeSelect versionNode = new TreeSelect(); + versionNode.setTreeKey(versionKey); + versionNode.setLabel(buildLabel(topParentId, version, materialNameMap,materialTypeNameMap)); + versionNode.setMaterialBomVersion(version); + versionNode.setMaterialId(topParentId); + versionNode.setMaterialTypeId(materialTypeIdMap.getOrDefault(topParentId, 0L)); + versionNode.setMaterialTypeName(materialTypeNameMap.getOrDefault(topParentId, "")); + versionNode.setActiveFlag(activeFlag); + versionNode.setChildren(new ArrayList<>()); + + String parentKey = topParentId + "_" + version; + if (parentVersionGroup.containsKey(parentKey)) { + // 获取该父节点下的所有materialId + Set childMaterialIds = parentVersionGroup.get(parentKey).stream() + .map(ProdMaterialBomVo::getMaterialId) + .collect(Collectors.toSet()); + + + for (Long materialId : childMaterialIds) { + // 添加无版本号的基础节点 + versionNode.getChildren().add(createBasicNode(materialId,materialNameMap,materialTypeIdMap,materialTypeNameMap)); + + // 动态添加该material的有子节点的版本 + if (materialVersions.containsKey(materialId)) { + for (String childVersion : materialVersions.get(materialId)) { + TreeSelect versionedNode = createVersionNodeIfHasChildren( + materialId, childVersion, activeFlag,parentVersionGroup,materialNameMap,materialTypeIdMap,materialTypeNameMap); + if (versionedNode != null) { + versionNode.getChildren().add(versionedNode); + } + } + } + } + } + + // 只有当有子节点时才添加父节点 + if (!versionNode.getChildren().isEmpty()) { + tree.add(versionNode); + } + } + } + + return tree; +// return topLevelNodes; +// return rootNodes.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + private static String buildLabel(Long materialId, String version, Map materialNameMap, Map materialTypeNameMap) { + String materialName = materialNameMap.getOrDefault(materialId, ""); + String materialTypeName = materialTypeNameMap.getOrDefault(materialId, ""); + return String.format("[%s][%s]%s", + version, + materialTypeName.isEmpty() ? "" : materialTypeName, + materialName.isEmpty() ? "" : materialName); + + } + + private static TreeSelect createBasicNode(Long materialId, + Map materialNameMap,Map materialTypeIdMap,Map materialTypeNameMap) { + +// this.parentId = prodMaterialBomVo.getParentId(); + TreeSelect node = new TreeSelect(); + node.setTreeKey(materialId.toString()); + String materialName = materialNameMap.getOrDefault(materialId, ""); + String materialTypeName = materialTypeNameMap.getOrDefault(materialId, ""); + String label = String.format("[%s]%s", + materialTypeName.isEmpty() ? "" : materialTypeName, + materialName.isEmpty() ? "" : materialName); + + node.setLabel(label); + node.setMaterialId(materialId); + node.setMaterialTypeId(materialTypeIdMap.getOrDefault(materialId, 0L)); + node.setMaterialTypeName(materialTypeNameMap.getOrDefault(materialId, "")); + node.setMaterialBomVersion(null); + node.setActiveFlag(null); + return node; + } + private static TreeSelect createVersionNodeIfHasChildren(Long materialId, String version,String activeFlag, + Map> parentVersionGroup, + Map materialNameMap,Map materialTypeIdMap,Map materialTypeNameMap) { + String key = materialId + "_" + version; + // 只有当该版本有子节点时才创建 + if (parentVersionGroup.containsKey(key)) { + TreeSelect node = new TreeSelect(); + node.setTreeKey(key); + node.setLabel(buildLabel(materialId, version, materialNameMap,materialTypeNameMap)); + node.setMaterialBomVersion(version); + node.setMaterialBomVersion(version); + node.setMaterialId(materialId); + node.setMaterialTypeId(materialTypeIdMap.getOrDefault(materialId, 0L)); + node.setMaterialTypeName(materialTypeNameMap.getOrDefault(materialId, "")); + node.setActiveFlag(activeFlag); + + node.setChildren(new ArrayList<>()); + + // 添加子节点 + Set childIds = parentVersionGroup.get(key).stream() + .map(ProdMaterialBomVo::getMaterialId) + .collect(Collectors.toSet()); + + for (Long childId : childIds) { + node.getChildren().add(createBasicNode(childId,materialNameMap,materialTypeIdMap,materialTypeNameMap)); + } + + return node; + } + return null; + } + + + private static List buildChildren(Long currentParentId,List items, + Map>> parentVersionMap) { + List children = new ArrayList<>(); + + for (ProdMaterialBomVo item : items) { + // 确保当前item的parentId匹配currentParentId + if (!item.getParentId().equals(currentParentId)) { + continue; + } + + TreeSelect childNode = new TreeSelect(); + childNode.setTreeKey(item.getMaterialId().toString()); + + // 检查是否有子节点 + if (parentVersionMap.containsKey(item.getMaterialId())) { + // 有子节点,需要处理每个版本 + Map> versionMap = parentVersionMap.get(item.getMaterialId()); + + if (versionMap.size() == 1) { + // 只有一个版本 + String version = versionMap.keySet().iterator().next(); + childNode.setLabel(item.getMaterialId() + " (v" + version + ")"); + childNode.setMaterialBomVersion(version); + childNode.setChildren(buildChildren(item.getMaterialId(), versionMap.get(version), parentVersionMap)); + } else { + // 多个版本,需要创建中间节点 + childNode.setLabel(item.getMaterialId().toString()); + childNode.setChildren(new ArrayList<>()); + + for (Map.Entry> versionEntry : versionMap.entrySet()) { + String version = versionEntry.getKey(); + + TreeSelect versionNode = new TreeSelect(); + versionNode.setTreeKey(item.getMaterialId() + "_" + version); + versionNode.setLabel(item.getMaterialId() + " (v" + version + ")"); + versionNode.setMaterialBomVersion(version); + versionNode.setChildren(buildChildren(item.getMaterialId(), versionEntry.getValue(), parentVersionMap)); + + childNode.getChildren().add(versionNode); + } + } + } else { + // 没有子节点,直接创建 + childNode.setLabel(item.getMaterialId().toString()); + } + + children.add(childNode); + } + + return children; + } + + + + +// private static void printTree(List nodes, int indent) { +// for (ProdMaterialBomVo node : nodes) { +// System.out.println(" ".repeat(indent) + node.getParentMaterialName()+"["+node.getMaterialBomVersion()+"]"+node.getMaterialName()); +// printTree(node.getChildren(), indent + 1); +// } +// } + + +// private List buildMaterialBomTree(List prodMaterialBomVos) { +// // 用于存储所有节点 +// Map nodeMap = new HashMap<>(); +// // 用于存储根节点 +// List rootNodes = new ArrayList<>(); +// // 用于识别哪些materialId是父节点 +// Map isParentMap = new HashMap<>(); +// +// // 第一次遍历:创建所有节点并识别父节点 +// for (ProdMaterialBomVo bom : prodMaterialBomVos) { +// // 创建节点 +// TreeSelect node = new TreeSelect(bom); +// String nodeKey = bom.getMaterialId() + "|" + bom.getMaterialBomVersion(); +// nodeMap.put(nodeKey, node); +// +// // 标记此materialId是某个节点的parentId +// isParentMap.put(bom.getParentId(), true); +// } +// +// // 第二次遍历:建立父子关系 +// for (ProdMaterialBomVo bom : prodMaterialBomVos) { +// String nodeKey = bom.getMaterialId() + "|" + bom.getMaterialBomVersion(); +// String parentKey = bom.getParentId() + "|" + bom.getMaterialBomVersion(); +// +// TreeSelect currentNode = nodeMap.get(nodeKey); +// TreeSelect parentNode = nodeMap.get(parentKey); +// +// if (parentNode != null) { +// // 添加到父节点的子列表 +// parentNode.addChild(currentNode); +// } else if (!isParentMap.containsKey(bom.getMaterialId())) { +// // 如果当前节点的materialId从未作为parentId出现过,则是根节点 +// rootNodes.add(currentNode); +// } +// } +// +// return rootNodes; +// } + + /** + * 构建前端所需要树结构(废弃) + * * @param prodMaterialBomVos 部门列表 * @return 树结构列表 */ - private List buildMaterialBomTree(List prodMaterialBomVos) { + private List buildMaterialBomTreeNodesDiscard(List prodMaterialBomVos) { List returnList = new ArrayList(); /** * 由于顶级节点的parent没有父级对象,需要虚拟新增一个 @@ -334,10 +697,10 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { .toList(); - //2、过滤出parentId相同的 + //2、过滤出parentId-materialBomVersion相同的 List distinctParentIdVoList = topMaterialBomVos.stream() .collect(Collectors.toMap( - ProdMaterialBomVo::getParentId, // 以parentId作为key + ProdMaterialBomVo::getKey, // 以parentId-materialBomVersion作为key Function.identity(), // 以对象本身作为value (existing, replacement) -> existing // 如果遇到重复的key,保留已有的对象 )) @@ -355,6 +718,7 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { topProdMaterialBomVo.setMaterialTypeName(prodMaterialBomVo.getParentMaterialTypeName());//设置parent的物料类型名称 topProdMaterialBomVo.setMaterialName(prodMaterialBomVo.getParentMaterialName());//设置parent的物料名称 topProdMaterialBomVo.setMaterialBomVersion(prodMaterialBomVo.getMaterialBomVersion()); + topProdMaterialBomVo.setActiveFlag(prodMaterialBomVo.getActiveFlag()); prodMaterialBomVos.add(topProdMaterialBomVo); recursionFn(prodMaterialBomVos, topProdMaterialBomVo); @@ -379,30 +743,10 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { returnList = prodMaterialBomVos; } return returnList; + } - /** - * 构建前端所需要下拉树结构 - * - * @param prodMaterialBomVos 生产bom结构树列表 - * @return 下拉树结构列表 - */ - private List buildMaterialBomTreeSelect(List prodMaterialBomVos) { - // 根据物料bom版本号group,不能的版本是不同的树。使用 groupingBy 将 List 转换为 Map> - Map> prodMaterialBomVoMap = prodMaterialBomVos.stream() - .collect(Collectors.groupingBy(ProdMaterialBomVo::getMaterialBomVersion)); - - List allMaterialBomTrees = new ArrayList<>(); - // 根据物料版本号build树 - prodMaterialBomVoMap.forEach((materialBomVersion, vos) -> { - List materialBomTrees = buildMaterialBomTree(vos); - allMaterialBomTrees.addAll(materialBomTrees); - }); - - return allMaterialBomTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); - } - /** * 递归列表 @@ -410,14 +754,21 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { private void recursionFn(List list, ProdMaterialBomVo parent) { // 获取子节点 List childList = getChildList(list, parent); + if(childList == null || childList.isEmpty()){ + System.out.println(parent.getMaterialBomId()+"----"); +// parent.setMaterialBomVersion(""); + }else{ + System.out.println(parent.getMaterialBomId()+"****"+childList.get(0).getMaterialBomVersion()); +// parent.setMaterialBomVersion(childList.get(0).getMaterialBomVersion()); + } parent.setChildren(childList); // 递归处理子节点 for (ProdMaterialBomVo child : childList) { - // 确保子节点继承 BOM 版本信息 - if (StringUtils.isBlank(child.getMaterialBomVersion()) && StringUtils.isNotBlank(parent.getMaterialBomVersion())) { - child.setMaterialBomVersion(parent.getMaterialBomVersion()); - } + // 父节点显示bom版本信息(一个父子记录的信息的bom版本),确保子节点继承 BOM 版本信息 +// if (StringUtils.isNotBlank(child.getMaterialBomVersion())) { +// parent.setMaterialBomVersion(child.getMaterialBomVersion()); +// } recursionFn(list, child); } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java index d66cb76..a8011b4 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdPlanInfoServiceImpl.java @@ -17,9 +17,14 @@ import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.mes.domain.vo.MesProductPlanEditVo; import org.dromara.mes.domain.vo.PlanMonitorVo; import org.dromara.mes.domain.vo.ProdPlanInfoVo; +import org.dromara.mes.enums.PlanEventEnum; +import org.dromara.mes.enums.PlanStatusEnum; import org.dromara.mes.mapper.ProdPlanInfoMapper; import org.dromara.mes.service.IProdPlanInfoService; -import org.springframework.stereotype.Service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -27,6 +32,15 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.config.StateMachineFactory; +import org.springframework.stereotype.Service; +import org.springframework.statemachine.support.DefaultStateMachineContext; +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.service.StateMachineService; + /** * 生产工单信息Service业务层处理 * @@ -37,10 +51,20 @@ import java.util.Map; @Service public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { + private final Logger log = LoggerFactory.getLogger(ProdPlanInfoServiceImpl.class); + + + private static final String PLAN_ID_HEADER = "planId"; + private final ProdPlanInfoMapper baseMapper; private final DynamicBaseSqlMapper dynamicBaseSqlMapper; + + @Autowired + private StateMachineFactory stateMachineFactory; + + /** * 查询生产工单信息 * @@ -104,7 +128,7 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { .eq(bo.getPlanAmount() != null, ProdPlanInfo::getPlanAmount, bo.getPlanAmount()) .eq(bo.getDispatchAmount() != null, ProdPlanInfo::getDispatchAmount, bo.getDispatchAmount()) .eq(bo.getCompleteAmount() != null, ProdPlanInfo::getCompleteAmount, bo.getCompleteAmount()) - .between(StringUtils.isNotNull(bo.getPlanBeginTime()) && StringUtils.isNotNull(bo.getPlanEndTime()), + .between(StringUtils.isNotNull(bo.getPlanBeginTime()) && StringUtils.isNotNull(bo.getPlanEndTime()), ProdPlanInfo::getPlanBeginTime, bo.getPlanBeginTime(), bo.getPlanEndTime()) .eq(bo.getRealBeginTime() != null, ProdPlanInfo::getRealBeginTime, bo.getRealBeginTime()) .eq(bo.getRealEndTime() != null, ProdPlanInfo::getRealEndTime, bo.getRealEndTime()) @@ -344,4 +368,61 @@ public class ProdPlanInfoServiceImpl implements IProdPlanInfoService { return lqw; } + + + + + private PlanEventEnum determineEvent(PlanStatusEnum currentStatus, PlanStatusEnum targetStatus) { + // 根据当前状态和目标状态确定需要触发的事件 + if (currentStatus == PlanStatusEnum.CREATED && targetStatus == PlanStatusEnum.PLANNED) { + return PlanEventEnum.PLAN; + } + if (currentStatus == PlanStatusEnum.PLANNED && targetStatus == PlanStatusEnum.IN_PROGRESS) { + return PlanEventEnum.START; + } + // ... 其他状态转换逻辑 + throw new IllegalStateException("No valid event for transition from " + + currentStatus + " to " + targetStatus); + } + + + public boolean sendEvent(Long planId, PlanEventEnum event) { + ProdPlanInfoVo plan = baseMapper.selectVoById(planId); + ProdPlanInfo add = MapstructUtils.convert(plan, ProdPlanInfo.class); + StateMachine sm = build(add); + + Message message = MessageBuilder.withPayload(event) + .setHeader("planId", planId) + .build(); + + boolean result = sm.sendEvent(message); + + if (result) { + + // 保存字符串状态码到数据库 + plan.setPlanStatus(sm.getState().getId().getCode()); + baseMapper.updateById(add); + log.info("Plan {} status changed to {} after event {}", + planId, sm.getState().getId(), event); + } + + return result; + } + + private StateMachine build(ProdPlanInfo plan) { + StateMachine sm = stateMachineFactory.getStateMachine(String.valueOf(plan.getPlanId())); + + sm.stop(); + + sm.getStateMachineAccessor() + .doWithAllRegions(sma -> { + sma.resetStateMachine(new DefaultStateMachineContext<>( + PlanStatusEnum.fromCode(plan.getPlanStatus()), null, null, null)); + }); + + sm.start(); + + return sm; + } + } diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml index 7f12ae4..ea467c7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml @@ -4,43 +4,103 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 7ba5490698b2b3d0453f97f43ce028c1e820081b Mon Sep 17 00:00:00 2001 From: zch Date: Mon, 19 May 2025 10:21:26 +0800 Subject: [PATCH 15/21] =?UTF-8?q?refactor(hwmom-dms=EF=BC=8Cjob):=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=82=B9=E5=B7=A1=E6=A3=80=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DmsInspectProjectDevice 类结构,不继承teant实体类,添加 tenantId 字段 - 移除 DmsInspectProjectDeviceServiceImpl 中的冗余排序 - 统一 RemoteJobServiceImpl 中的租户 ID 和用户 ID 字段名 - 修复 DmsInspectStanceExecutor 和 DmsLubeStanceExecutor 中的 tenantId 参数获取 - 优化 DmsPlanInspect 类结构,添加主键标识 - 更新 DmsPlanInspectServiceImpl 中的 cron 表达式设置逻辑 - 重构 RemoteInspectInstanceServiceImpl 中的巡检实例创建流程 - 更新 RemoteMaintInstanceServiceImpl 中的维护实例创建逻辑 - 修复 RemoteRepairStanceServicempl 中的工单实例创建逻辑 --- .../dms/domain/DmsInspectProjectDevice.java | 10 ++++++-- .../dromara/dms/domain/DmsPlanInspect.java | 3 +++ .../RemoteInspectInstanceServiceImpl.java | 23 ++++--------------- .../dubbo/RemoteMaintInstanceServiceImpl.java | 11 +++------ .../dubbo/RemoteRepairStanceServicempl.java | 16 ++++++------- .../DmsInspectProjectDeviceServiceImpl.java | 3 +-- .../impl/DmsPlanInspectServiceImpl.java | 4 ++++ .../job/service/RemoteJobServiceImpl.java | 12 +++++----- .../snailjob/DmsInspectStanceExecutor.java | 2 +- .../job/snailjob/DmsLubeStanceExecutor.java | 2 +- 10 files changed, 39 insertions(+), 47 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectProjectDevice.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectProjectDevice.java index e99eac5..a590274 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectProjectDevice.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectProjectDevice.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.io.Serializable; /** * 点巡检项目关联设备信息对象 dms_inspect_project_device @@ -14,9 +15,9 @@ import java.io.Serial; * @date 2025-03-24 */ @Data -@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode() @TableName("dms_inspect_project_device") -public class DmsInspectProjectDevice extends TenantEntity { +public class DmsInspectProjectDevice implements Serializable { @Serial private static final long serialVersionUID = 1L; @@ -37,4 +38,9 @@ public class DmsInspectProjectDevice extends TenantEntity { private Long targetId; + /** + * 租户编号 + */ + private String tenantId; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java index 87a0377..6b56d41 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java @@ -1,6 +1,8 @@ package org.dromara.dms.domain; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -26,6 +28,7 @@ public class DmsPlanInspect extends TenantEntity { /** * 主键标识 */ + @TableId(value = "plan_inspect_id", type = IdType.AUTO) private Long planInspectId; /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java index 61cd8fa..5b0607a 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -39,8 +39,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe @Override @Transactional( rollbackFor = Exception.class ) public R insertInspectInstance(String planInspectCode, String tenantId, Long userId){ - - // 使用 replaceAll 方法将双引号替换为空字符串 String result = planInspectCode.replaceAll("\"", ""); @@ -55,12 +53,8 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsPlanInspect.setTimeLimitHours(hours / (60 * 60l)); } - DmsBillsInspectInstance dmsBillsInspectInstance = new DmsBillsInspectInstance(); - - // DmsRepairInstance dmsRepairInstance = dmsRepairInstanceService.selectDmsRepairInstanceByRepairInstanceId(2l); - dmsBillsInspectInstance.setPlanInspectId(dmsPlanInspect.getPlanInspectId()); // dmsBillsInspectInstance.setWfProcessId(105l); dmsBillsInspectInstance.setInspectType(dmsPlanInspect.getInspectType());//检查类型(1巡检 2点检) @@ -70,7 +64,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // dmsBillsInspectInstance.setDeviceAmount(dmsPlanInspect.getDeviceAmount());//设备数量 // dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 - //写死105,也可根据传入对象的wfprocessid作为传参。 /* Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(105l); @@ -83,7 +76,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // dmsBillsInspectInstance.setIsFlag("1"); dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检 - dmsBillsInspectInstance.setCreateBy(userId); // dmsBillsInspectInstance.setCreateTime(new Date()); dmsBillsInspectInstance.setTenantId(tenantId); @@ -108,7 +100,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsInspectRouteDetail.class) .eq(DmsInspectRouteDetail::getInspectRouteId, dmsBillsInspectInstance.getInspectRouteId()); List dmsInspectRouteDetails = dmsInspectRouteDetailMapper.selectList(lqw); - for(DmsInspectRouteDetail dmsInspectRouteDetail:dmsInspectRouteDetails){ DmsInspectInstanceDetail dmsInspectInstanceDetail = new DmsInspectInstanceDetail(); Long deviceId = dmsInspectRouteDetail.getMachineId(); @@ -117,7 +108,7 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetail.setMachineId(deviceId); dmsInspectInstanceDetail.setInstanceDetailStatus("1");//(1待巡检 2巡检中 3已完成) dmsInspectInstanceDetail.setInspectStandard(dmsInspectRouteDetail.getInspectStandard()); - dmsInspectInstanceDetail.setInspectStatus("0");//TODO:为什么设置为异常? + dmsInspectInstanceDetail.setInspectStatus("0");//FIXME:为什么设置为异常?设备状态(1正常 0异常) // dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail); @@ -125,16 +116,13 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetail.setCreateBy(userId); // dmsInspectInstanceDetail.setCreateTime(new Date()); dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail); - Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard()); - DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); - queryInspectProjectDevice.setTargetType("2"); - queryInspectProjectDevice.setTargetId(deviceId); - - +// DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); +// queryInspectProjectDevice.setTargetType("2");//FIXME:关联类型(1设备类型) +// queryInspectProjectDevice.setTargetId(deviceId); MPJLambdaWrapper DmsInspectProjectDeviceLQW = JoinWrappers.lambda(DmsInspectProjectDevice.class) - .eq(DmsInspectProjectDevice::getTargetType, "2")//关联类型(1设备类型) + .eq(DmsInspectProjectDevice::getTargetType, "2")//FIXME:关联类型(1设备类型) .eq(DmsInspectProjectDevice::getTargetId, deviceId); List dmsInspectProjectDevices = dmsInspectProjectDeviceMapper.selectList(DmsInspectProjectDeviceLQW); @@ -148,7 +136,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetailProject.setTenantId(tenantId); dmsInspectInstanceDetailProject.setCreateBy(userId); // dmsInspectInstanceDetailProject.setCreateTime(new Date()); - dmsInspectInstanceDetailProjectMapper.insert(dmsInspectInstanceDetailProject); // } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java index 2d25377..3f78042 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java @@ -70,8 +70,8 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic dmsBillsMaintInstance.setPlanEndTime(new Date(lubeTime.getTime() + timeLimit * 1000l)); //字段没有自动填充,只能代码手动填充 - dmsBillsMaintInstance.setCreateBy(userId);//暂时默认系统用户 - dmsBillsMaintInstance.setTenantId(tenantId);//暂时默认系统用户 + dmsBillsMaintInstance.setCreateBy(userId); + dmsBillsMaintInstance.setTenantId(tenantId); int i = dmsBillsMaintInstanceMapper.insert(dmsBillsMaintInstance); @@ -79,17 +79,13 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic // dmsMaintInstanceActivity.setMaintInstanceId(dmsBillsMaintInstance.getMaintInstanceId()); // dmsMaintInstanceActivity.setProcessStepOrder(1L); // int i1 = dmsMaintInstanceActivityMapper.insertDmsMaintInstanceActivity(dmsMaintInstanceActivity); - batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId(), tenantId, userId); - return R.ok(i); } @Transactional( rollbackFor = Exception.class ) public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId, String tenantId, Long userId) { - - List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); List billsMaintDetails = new ArrayList<>(); planMaintDetails.forEach(planMaintDetail -> { @@ -119,8 +115,7 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic billsMaintDetailProject.setMaintProjectId(project.getMaintProjectId()); billsMaintDetailProject.setMaintProjectName(project.getMaintProjectName()); billsMaintDetailProject.setMaintProjectDesc(project.getMaintProjectDesc()); - - billsMaintDetailProject.setMaintProjectStatus("2");//保养项目状态(0待保养 1保养完成)TODO:为什么是2?? + billsMaintDetailProject.setMaintProjectStatus("2");//保养项目状态(0待保养 1保养完成)FIXME:为什么是2?? //字段没有自动填充,只能代码手动填充 billsMaintDetailProject.setCreateBy(userId); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java index 8a1dc8b..334c5a0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteRepairStanceServicempl.java @@ -33,8 +33,6 @@ public class RemoteRepairStanceServicempl implements RemoteRepairStanceService { private final IDmsPlanRepairService dmsPlanRepairService; - - public static String lastDate="2000-01-01"; //流水号 public static int serialNumber = 0; @@ -64,7 +62,7 @@ public class RemoteRepairStanceServicempl implements RemoteRepairStanceService { // dmsRepairInstance.setWfProcessId(101l); dmsRepairInstance.setPlanRepairId(dmsPlanRepair.getPlanRepairId()); dmsRepairInstance.setPlanBeginTime(dmsPlanRepair.getRepairTime()); - dmsRepairInstance.setInstanceType("2"); + dmsRepairInstance.setInstanceType("2");//工单类型(1手工创建 2自动创建) // dmsRepairInstance.setRepairType(dmsPlanRepair.getRepairType()); // dmsRepairInstance.setRepairGroup(dmsPlanRepair.getRepairGroup()); // dmsRepairInstance.setRepairSupervisor(dmsPlanRepair.getRepairSupervisor()); @@ -105,23 +103,23 @@ public class RemoteRepairStanceServicempl implements RemoteRepairStanceService { dmsRepairInstance.setPlanEndTime(new Date(planBeginTime.getTime() + limit*1000l)); } // dmsRepairInstance.setIsFlag("1"); - dmsRepairInstance.setBillsStatus("1"); + dmsRepairInstance.setBillsStatus("1");//工单状态(0待检修 1检修中 2检修完成) if (dmsRepairInstance.getInstanceType()==null) { - dmsRepairInstance.setInstanceType("1"); + dmsRepairInstance.setInstanceType("1");//工单类型(1手工创建 2自动创建) } // dmsRepairInstance.setApplyBy(user.getUsername()); // dmsRepairInstance.setApplyTime(DateUtils.getNowDate()); // dmsRepairInstance.setWfProcessId(101l); int flag = dmsRepairInstanceMapper.insert(dmsRepairInstance); - //创建工单时新建工单实例节点 + //创建工单时新建工单实例节点 DmsRepairInstanceActivity dmsRepairInstanceActivity = new DmsRepairInstanceActivity(); dmsRepairInstanceActivity.setRepairInstanceId(dmsRepairInstance.getRepairInstanceId()); - dmsRepairInstanceActivity.setProcessHandleStatus("1"); + dmsRepairInstanceActivity.setProcessHandleStatus("1");//状态(0已结束 1执行中 2待接取 3已转发) //先写死第一步所对应的步骤,后续通过wfProcessId来查询步骤对应的id // dmsRepairInstanceActivity.setProcessActivityId(aLong); - dmsRepairInstanceActivity.setProcessStepOrder(1l); - dmsRepairInstanceActivity.setCreateBy(user.getUserId()); + dmsRepairInstanceActivity.setProcessStepOrder(1l);//工单流程步骤顺序 +// dmsRepairInstanceActivity.setCreateBy(); dmsRepairInstanceActivity.setCreateTime(DateUtils.getNowDate()); dmsRepairInstanceActivity.setStartTime(DateUtils.getNowDate()); // dmsRepairInstanceActivity.setRepairType(dmsRepairInstance.getRepairType()); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectProjectDeviceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectProjectDeviceServiceImpl.java index 85dbb2a..e90ba52 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectProjectDeviceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectProjectDeviceServiceImpl.java @@ -75,8 +75,7 @@ public class DmsInspectProjectDeviceServiceImpl implements IDmsInspectProjectDev .selectAll(DmsInspectProjectDevice.class) .eq(bo.getInspectProjectId() != null, DmsInspectProjectDevice::getInspectProjectId, bo.getInspectProjectId()) .eq(StringUtils.isNotBlank(bo.getTargetType()), DmsInspectProjectDevice::getTargetType, bo.getTargetType()) - .eq(bo.getTargetId() != null, DmsInspectProjectDevice::getTargetId, bo.getTargetId()) - .orderByDesc(DmsInspectProjectDevice::getCreateTime); + .eq(bo.getTargetId() != null, DmsInspectProjectDevice::getTargetId, bo.getTargetId()); return lqw; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java index 3ddf8f0..c04d485 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -192,6 +192,8 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { if (add.getInspectLevel().equals(3l)){ cron = "0 0 "+add.getHour()+" "+day+" "+ month+" ? "+year; } + bo.setCronExpression(cron);//cron表达式 + String planInspectCode = Seq.getId(Seq.planInspectSeqType, Seq.planInspectCode); if(bo.getActiveFlag().equals("1")) {//激活标识(1是 0否) @@ -209,6 +211,7 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { .setExtAttrs(planInspectCode) .setUserId(LoginHelper.getUserId().toString()) .setTenantId(LoginHelper.getTenantId()); + System.out.println(LoginHelper.getTenantId()); R longR = remoteJobService.addClusterJob(dmsJobEntity); Long newJobId = longR.getData(); //通过cron表达式获取下一次执行时间 @@ -273,6 +276,7 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { if (update.getInspectLevel().equals(3l)){ cron = "0 0 "+update.getHour()+" "+day+" "+ month+" ? "+year; } + bo.setCronExpression(cron);//cron表达式 String time = cron; //通过cron表达式获取下一次执行时间 Date nextExecution = CronUtils.getNextExecution(time); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java index a182e1a..26672ca 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java @@ -24,8 +24,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { // private final JobMapper jobMapper; //常量 - private static final String tenant = "tenantId"; - private static final String user = "userId"; + private static final String tenantId = "tenantId"; + private static final String userId = "userId"; /** * 新增集群模式的任务 @@ -47,8 +47,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 - .addArgsStr(tenant, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 - .addArgsStr(user, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 + .addArgsStr(tenantId, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 + .addArgsStr(userId, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) .execute(); if (jobId != null) { @@ -81,8 +81,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 - .addArgsStr(tenant, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 - .addArgsStr(user, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 + .addArgsStr(tenantId, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 + .addArgsStr(userId, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) .execute(); return success ? R.ok() : R.fail("修改集群任务失败"); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java index 38bc986..4af18dc 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsInspectStanceExecutor.java @@ -33,7 +33,7 @@ public class DmsInspectStanceExecutor { // 将 JSON 字符串转为 Map Map paramMap = objectMapper.readValue(jsonStr, Map.class); String planCode = (String) paramMap.get("planInspectCode"); - String tenantId = (String) paramMap.get("tenant"); + String tenantId = (String) paramMap.get("tenantId"); String user = (String) paramMap.get("userId"); Long userId = Long.parseLong(user); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java index dd0bff4..a2dee6d 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/DmsLubeStanceExecutor.java @@ -33,7 +33,7 @@ public class DmsLubeStanceExecutor { // 将 JSON 字符串转为 Map Map paramMap = objectMapper.readValue(jsonStr, Map.class); String planCode = (String) paramMap.get("planLubeCode"); - String tenantId = (String) paramMap.get("tenant"); + String tenantId = (String) paramMap.get("tenantId"); String user = (String) paramMap.get("userId"); Long userId = Long.parseLong(user); From 92f08c8a850c6aba94f11396c756251731d2565d Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 19 May 2025 10:37:46 +0800 Subject: [PATCH 16/21] =?UTF-8?q?1.3.4=20=E5=90=8E=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E7=89=A9=E6=96=99bom=E5=AE=8C=E5=96=84=EF=BC=8C=E9=80=92?= =?UTF-8?q?=E5=BD=92=E6=A0=91=E5=88=9B=E5=BB=BA=EF=BC=88=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E5=8A=A0=E8=BD=BD=E5=88=B0=E7=AC=AC3?= =?UTF-8?q?=E5=B1=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProdMaterialBomServiceImpl.java | 137 ++++++++++-------- 1 file changed, 73 insertions(+), 64 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index 5d9fcbf..96ba54f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -236,11 +236,11 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { */ private void validEntityUsed(@NotNull ProdMaterialBomBo entity) { - if(entity.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE)){ + if (entity.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_ACTIVE)) { throw new ServiceException("此物料bom已经发布,不能修改"); } - if(entity.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_HISTORY)){ + if (entity.getActiveFlag().equals(HwMomMesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_HISTORY)) { throw new ServiceException("此物料bom为历史版本,不能修改"); } @@ -407,16 +407,17 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { */ private List buildMaterialBomTree(List bomList) { // 1. 建立索引 - Map> parentVersionGroup = new HashMap<>(); - Map> materialVersions = new HashMap<>(); - Map materialNameMap = new HashMap<>(); - Map materialTypeIdMap = new HashMap<>(); - Map materialTypeNameMap = new HashMap<>(); - Map versionActiveFlagMap = new HashMap<>(); // 新增:存储版本状态 + Map> parentVersionGroup = new HashMap<>();//根据parentid_materialbomversion分组 + Map> materialVersions = new HashMap<>();//根据materialid分组存储materialbomversion + Map materialNameMap = new HashMap<>();//根据materialid存储materialname + Map materialTypeIdMap = new HashMap<>();//根据materialid存储materialtypeid + Map materialTypeNameMap = new HashMap<>();//根据materialid存储materialtypename + Map versionActiveFlagMap = new HashMap<>(); // 根据materialid和version存储版本状态 for (ProdMaterialBomVo item : bomList) { // 按parentId+version分组 String parentKey = item.getParentId() + "_" + item.getMaterialBomVersion(); + //如果不存在则计算添加 parentVersionGroup.computeIfAbsent(parentKey, k -> new ArrayList<>()).add(item); // 记录每个material的所有版本 @@ -443,7 +444,7 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { // 记录版本状态(新增) String versionKey = item.getParentId() + "_" + item.getMaterialBomVersion(); - versionActiveFlagMap.putIfAbsent(versionKey, item.getActiveFlag()); // 假设activeFlag是boolean类型 + versionActiveFlagMap.putIfAbsent(versionKey, item.getActiveFlag()); } @@ -464,41 +465,17 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { .collect(Collectors.toSet()); for (String version : parentVersions) { - String versionKey = topParentId + "_" + version; - String activeFlag = versionActiveFlagMap.get(versionKey); - TreeSelect versionNode = new TreeSelect(); - versionNode.setTreeKey(versionKey); - versionNode.setLabel(buildLabel(topParentId, version, materialNameMap,materialTypeNameMap)); - versionNode.setMaterialBomVersion(version); - versionNode.setMaterialId(topParentId); - versionNode.setMaterialTypeId(materialTypeIdMap.getOrDefault(topParentId, 0L)); - versionNode.setMaterialTypeName(materialTypeNameMap.getOrDefault(topParentId, "")); - versionNode.setActiveFlag(activeFlag); - versionNode.setChildren(new ArrayList<>()); - String parentKey = topParentId + "_" + version; + String activeFlag = versionActiveFlagMap.get(parentKey); + TreeSelect versionNode = createParentNode(topParentId, version, activeFlag, materialNameMap, materialTypeIdMap, materialTypeNameMap, parentKey); + if (parentVersionGroup.containsKey(parentKey)) { // 获取该父节点下的所有materialId Set childMaterialIds = parentVersionGroup.get(parentKey).stream() .map(ProdMaterialBomVo::getMaterialId) .collect(Collectors.toSet()); + buildTree(versionNode,childMaterialIds,materialVersions,parentVersionGroup,materialNameMap,materialTypeIdMap,materialTypeNameMap,versionActiveFlagMap); - - for (Long materialId : childMaterialIds) { - // 添加无版本号的基础节点 - versionNode.getChildren().add(createBasicNode(materialId,materialNameMap,materialTypeIdMap,materialTypeNameMap)); - - // 动态添加该material的有子节点的版本 - if (materialVersions.containsKey(materialId)) { - for (String childVersion : materialVersions.get(materialId)) { - TreeSelect versionedNode = createVersionNodeIfHasChildren( - materialId, childVersion, activeFlag,parentVersionGroup,materialNameMap,materialTypeIdMap,materialTypeNameMap); - if (versionedNode != null) { - versionNode.getChildren().add(versionedNode); - } - } - } - } } // 只有当有子节点时才添加父节点 @@ -513,6 +490,7 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { // return rootNodes.stream().map(TreeSelect::new).collect(Collectors.toList()); } + private static String buildLabel(Long materialId, String version, Map materialNameMap, Map materialTypeNameMap) { String materialName = materialNameMap.getOrDefault(materialId, ""); String materialTypeName = materialTypeNameMap.getOrDefault(materialId, ""); @@ -523,8 +501,30 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } - private static TreeSelect createBasicNode(Long materialId, - Map materialNameMap,Map materialTypeIdMap,Map materialTypeNameMap) { + private static void buildTree(TreeSelect versionNode, + Set childMaterialIds,Map> materialVersions, + Map> parentVersionGroup, + Map materialNameMap, Map materialTypeIdMap, + Map materialTypeNameMap,Map versionActiveFlagMap){ + for (Long materialId : childMaterialIds) { + // 添加无版本号的基础节点 + versionNode.getChildren().add(createChildNode(materialId, materialNameMap, materialTypeIdMap, materialTypeNameMap)); + + // 动态添加该material的有子节点的版本 + if (materialVersions.containsKey(materialId)) { + for (String childVersion : materialVersions.get(materialId)) { + TreeSelect versionedNode = createVersionNodeIfHasChildren( + materialId, childVersion, materialVersions,parentVersionGroup, materialNameMap, materialTypeIdMap, materialTypeNameMap, versionActiveFlagMap); + if (versionedNode != null) { + versionNode.getChildren().add(versionedNode); + } + } + } + } + } + + private static TreeSelect createChildNode(Long materialId, + Map materialNameMap, Map materialTypeIdMap, Map materialTypeNameMap) { // this.parentId = prodMaterialBomVo.getParentId(); TreeSelect node = new TreeSelect(); @@ -543,40 +543,52 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { node.setActiveFlag(null); return node; } - private static TreeSelect createVersionNodeIfHasChildren(Long materialId, String version,String activeFlag, + + private static TreeSelect createVersionNodeIfHasChildren(Long materialId, String version, + Map> materialVersions, Map> parentVersionGroup, - Map materialNameMap,Map materialTypeIdMap,Map materialTypeNameMap) { - String key = materialId + "_" + version; + Map materialNameMap, Map materialTypeIdMap, + Map materialTypeNameMap, Map versionActiveFlagMap) { + + String key = materialId+"_"+version; + String activeFlag = versionActiveFlagMap.getOrDefault(key, ""); + // 只有当该版本有子节点时才创建 if (parentVersionGroup.containsKey(key)) { - TreeSelect node = new TreeSelect(); - node.setTreeKey(key); - node.setLabel(buildLabel(materialId, version, materialNameMap,materialTypeNameMap)); - node.setMaterialBomVersion(version); - node.setMaterialBomVersion(version); - node.setMaterialId(materialId); - node.setMaterialTypeId(materialTypeIdMap.getOrDefault(materialId, 0L)); - node.setMaterialTypeName(materialTypeNameMap.getOrDefault(materialId, "")); - node.setActiveFlag(activeFlag); - - node.setChildren(new ArrayList<>()); + TreeSelect node = createParentNode(materialId, version, activeFlag, materialNameMap, materialTypeIdMap, materialTypeNameMap, key); // 添加子节点 Set childIds = parentVersionGroup.get(key).stream() .map(ProdMaterialBomVo::getMaterialId) .collect(Collectors.toSet()); - for (Long childId : childIds) { - node.getChildren().add(createBasicNode(childId,materialNameMap,materialTypeIdMap,materialTypeNameMap)); - } + buildTree(node,childIds,materialVersions,parentVersionGroup,materialNameMap,materialTypeIdMap,materialTypeNameMap,versionActiveFlagMap); +// for (Long childId : childIds) { +// node.getChildren().add(createChildNode(childId, materialNameMap, materialTypeIdMap, materialTypeNameMap)); +// } return node; } return null; } + private static TreeSelect createParentNode(Long materialId, String version, String activeFlag, Map materialNameMap, Map materialTypeIdMap, Map materialTypeNameMap, String key) { + TreeSelect node = new TreeSelect(); + node.setTreeKey(key); + node.setLabel(buildLabel(materialId, version, materialNameMap, materialTypeNameMap)); + node.setMaterialBomVersion(version); + node.setMaterialId(materialId); + node.setMaterialTypeId(materialTypeIdMap.getOrDefault(materialId, 0L)); + node.setMaterialTypeName(materialTypeNameMap.getOrDefault(materialId, "")); + node.setActiveFlag(activeFlag); - private static List buildChildren(Long currentParentId,List items, + node.setChildren(new ArrayList<>()); + + return node; + } + + + private static List buildChildren(Long currentParentId, List items, Map>> parentVersionMap) { List children = new ArrayList<>(); @@ -629,8 +641,6 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } - - // private static void printTree(List nodes, int indent) { // for (ProdMaterialBomVo node : nodes) { // System.out.println(" ".repeat(indent) + node.getParentMaterialName()+"["+node.getMaterialBomVersion()+"]"+node.getMaterialName()); @@ -747,18 +757,17 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } - /** * 递归列表 */ private void recursionFn(List list, ProdMaterialBomVo parent) { // 获取子节点 List childList = getChildList(list, parent); - if(childList == null || childList.isEmpty()){ - System.out.println(parent.getMaterialBomId()+"----"); + if (childList == null || childList.isEmpty()) { + System.out.println(parent.getMaterialBomId() + "----"); // parent.setMaterialBomVersion(""); - }else{ - System.out.println(parent.getMaterialBomId()+"****"+childList.get(0).getMaterialBomVersion()); + } else { + System.out.println(parent.getMaterialBomId() + "****" + childList.get(0).getMaterialBomVersion()); // parent.setMaterialBomVersion(childList.get(0).getMaterialBomVersion()); } parent.setChildren(childList); From f5429fd58cb41e1e4cea49ca15d0e6f771a9cec2 Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 19 May 2025 11:18:57 +0800 Subject: [PATCH 17/21] =?UTF-8?q?1.3.5=20=E5=90=8E=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=98=E6=8D=A2=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/config/PlanStatusMachineConfig.java | 92 +++++++++++++++++++ .../org/dromara/mes/enums/PlanEventEnum.java | 16 ++++ .../org/dromara/mes/enums/PlanStatusEnum.java | 41 +++++++++ .../mes/listeners/StatusMachineListeners.java | 39 ++++++++ 4 files changed, 188 insertions(+) create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/config/PlanStatusMachineConfig.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanEventEnum.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanStatusEnum.java create mode 100644 ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/listeners/StatusMachineListeners.java diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/config/PlanStatusMachineConfig.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/config/PlanStatusMachineConfig.java new file mode 100644 index 0000000..da9de6b --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/config/PlanStatusMachineConfig.java @@ -0,0 +1,92 @@ +package org.dromara.mes.config; + +import org.dromara.mes.enums.PlanEventEnum; +import org.dromara.mes.enums.PlanStatusEnum; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.StateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +import org.springframework.statemachine.guard.Guard; +import org.springframework.statemachine.action.Action; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory +public class PlanStatusMachineConfig extends StateMachineConfigurerAdapter { + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states + .withStates() + .initial(PlanStatusEnum.CREATED) + .states(EnumSet.allOf(PlanStatusEnum.class)); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(PlanStatusEnum.CREATED) + .target(PlanStatusEnum.PLANNED) + .event(PlanEventEnum.PLAN) + .and() + .withExternal() + .source(PlanStatusEnum.PLANNED) + .target(PlanStatusEnum.IN_PROGRESS) + .event(PlanEventEnum.START) + .action(startAction()) + .and() + .withExternal() + .source(PlanStatusEnum.IN_PROGRESS) + .target(PlanStatusEnum.PAUSED) + .event(PlanEventEnum.PAUSE) + .and() + .withExternal() + .source(PlanStatusEnum.PAUSED) + .target(PlanStatusEnum.IN_PROGRESS) + .event(PlanEventEnum.RESUME) + .and() + .withExternal() + .source(PlanStatusEnum.IN_PROGRESS) + .target(PlanStatusEnum.COMPLETED) + .event(PlanEventEnum.COMPLETE) + .guard(completionGuard()) + .and() + .withExternal() + .source(PlanStatusEnum.CREATED) + .target(PlanStatusEnum.CANCELLED) + .event(PlanEventEnum.CANCEL) + .and() + .withExternal() + .source(PlanStatusEnum.PLANNED) + .target(PlanStatusEnum.CANCELLED) + .event(PlanEventEnum.CANCEL) + .and() + .withExternal() + .source(PlanStatusEnum.IN_PROGRESS) + .target(PlanStatusEnum.CANCELLED) + .event(PlanEventEnum.CANCEL); + } + + @Bean + public Action startAction() { + return context -> { + System.out.println("工单启动,准备资源..."); + // 可注入其他Service + }; + } + + @Bean + public Guard completionGuard() { + return context -> { + // 检查是否允许完成 + System.out.println("检查是否允许完成"); + return true; // 示例:始终允许 + }; + } + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanEventEnum.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanEventEnum.java new file mode 100644 index 0000000..89ffda3 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanEventEnum.java @@ -0,0 +1,16 @@ +package org.dromara.mes.enums; + +/** + * @description 生产工单(pro_plan_info)事件枚举 + * 工单计划状态(0未下发 1已下发 2已开始 3已完成 4已撤回) + * @author xins + * @date 2025/4/15 9:28 + */ +public enum PlanEventEnum { + PLAN, // 计划 + START, // 开始 + PAUSE, // 暂停 + RESUME, // 恢复 + COMPLETE, // 完成 + CANCEL // 取消 +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanStatusEnum.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanStatusEnum.java new file mode 100644 index 0000000..ec36cb6 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/enums/PlanStatusEnum.java @@ -0,0 +1,41 @@ +package org.dromara.mes.enums; + +/** + * @description 生产工单(pro_plan_info)状态枚举 + * 工单计划状态(0未下发 1已下发 2已开始 3已完成 4已撤回) + * @author xins + * @date 2025/4/15 9:28 + */ +public enum PlanStatusEnum { + CREATED("0", "已创建"), + PLANNED("1", "已计划"), + IN_PROGRESS("2", "进行中"), + PAUSED("3", "已暂停"), + COMPLETED("4", "已完成"), + CANCELLED("5", "已取消"); + + private final String code; + private final String description; + + PlanStatusEnum(String code, String description) { + this.code = code; + this.description = description; + } + + public String getCode() { + return code; + } + + public String getDescription() { + return description; + } + + public static PlanStatusEnum fromCode(String code) { + for (PlanStatusEnum status : PlanStatusEnum.values()) { + if (status.getCode().equals(code)) { + return status; + } + } + throw new IllegalArgumentException("Invalid status code: " + code); + } +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/listeners/StatusMachineListeners.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/listeners/StatusMachineListeners.java new file mode 100644 index 0000000..243636d --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/listeners/StatusMachineListeners.java @@ -0,0 +1,39 @@ +package org.dromara.mes.listeners; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.mes.enums.PlanEventEnum; +import org.dromara.mes.enums.PlanStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.listener.StateMachineListener; +import org.springframework.statemachine.listener.StateMachineListenerAdapter; +import org.springframework.statemachine.state.State; +import org.springframework.stereotype.Component; + +/** + * @Author xins + * @Date 2025/4/15 14:07 + * @Description: + */ +@Slf4j +@Component +public class StatusMachineListeners extends StateMachineListenerAdapter{ + + @Override + public void stateChanged(State from, State to) { + System.out.println("State changed from " + (from != null ? from.getId() : "null") + + " to " + to.getId()); + } + + @Override + public void stateEntered(State state) { + System.out.println("Entered state: " + state.getId()); + } + + @Override + public void stateExited(State state) { + System.out.println("Exited state: " + state.getId()); + } +} From 6089f1cf8e57e4b4fc8aec31e042a443a05e864d Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 19 May 2025 11:32:09 +0800 Subject: [PATCH 18/21] =?UTF-8?q?1.3.6=20=E5=90=8E=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=98=E6=8D=A2=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/hwmom-mes/pom.xml | 34 +++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/pom.xml b/ruoyi-modules/hwmom-mes/pom.xml index e049731..099fc32 100644 --- a/ruoyi-modules/hwmom-mes/pom.xml +++ b/ruoyi-modules/hwmom-mes/pom.xml @@ -111,10 +111,6 @@ com.microsoft.sqlserver mssql-jdbc - - com.microsoft.sqlserver - mssql-jdbc - org.dromara hwmom-common-mom @@ -135,6 +131,36 @@ compile + + + org.springframework.statemachine + spring-statemachine-core + 3.2.0 + + + + org.springframework.statemachine + spring-statemachine-starter + 3.2.0 + + + + org.springframework.statemachine + spring-statemachine-autoconfigure + 3.2.0 + + + javax.persistence + javax.persistence-api + 2.2 + + + + org.springframework.statemachine + spring-statemachine-data-jpa + 3.2.0 + + From 80e365b39dcae49ee326a447a43380f548b7b642 Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 19 May 2025 13:46:44 +0800 Subject: [PATCH 19/21] =?UTF-8?q?1.3.7=20=E5=90=8E=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A1=E5=88=92=E9=80=89=E6=8B=A9=E7=89=A9?= =?UTF-8?q?=E6=96=99bom=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProdPlanInfoController.java | 5 ++--- .../mes/service/IProdMaterialBomService.java | 9 ++++++++ .../impl/ProdMaterialBomServiceImpl.java | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java index 3a1b610..178bd97 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdPlanInfoController.java @@ -17,7 +17,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.mes.domain.ProdBaseRouteProcess; import org.dromara.mes.domain.bo.ProdMaterialBomBo; -import org.dromara.mes.domain.bo.ProdMaterialBomVersionBo; import org.dromara.mes.domain.bo.ProdPlanInfoBo; import org.dromara.mes.domain.vo.*; import org.dromara.mes.enums.PlanEventEnum; @@ -207,8 +206,8 @@ public class ProdPlanInfoController extends BaseController { */ @SaCheckPermission("mes:planInfo:list") @GetMapping("/materialBomVersionSelect") - public R> materialBomVersionSelect(ProdMaterialBomVersionBo prodMaterialBomBo) { - return R.ok(prodMaterialBomVersionService.queryList(prodMaterialBomBo)); + public R> materialBomVersionSelect(ProdMaterialBomBo prodMaterialBomBo) { + return R.ok(prodMaterialBomService.queryList4Select(prodMaterialBomBo)); } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java index f6cd314..f1c35f2 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java @@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 物料BOM信息Service接口 @@ -112,4 +113,12 @@ public interface IProdMaterialBomService { * @return 生产bom信息集合 */ public List selectMaterialBomTreeList(ProdMaterialBomBo bo); + + /** + * 查询符合条件的物料BOM版本,供下拉选择 + * + * @param bo 查询条件 + * @return 物料BOM信息列表 + */ + public List queryList4Select(ProdMaterialBomBo bo); } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index 96ba54f..5277c84 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -841,4 +841,25 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { return lqw; } + + /** + * 查询符合条件的物料BOM版本,供下拉选择 + * + * @param bo 查询条件 + * @return 物料BOM信息列表 + */ + @Override + public List queryList4Select(ProdMaterialBomBo bo) { + bo.setDeleteFlag(HwMomMesConstants.DELETE_FLAG_NO); + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + List prodMaterialBomVos = baseMapper.selectVoList(lqw); + + List filteredList = prodMaterialBomVos.stream() + .collect(Collectors.groupingBy(ProdMaterialBomVo::getMaterialBomVersion)) // 按BOM版本分组 + .values().stream() // 获取分组后的值集合 + .map(group -> group.get(0)) // 取每组第一个元素 + .collect(Collectors.toList()); // 收集为列表 + + return filteredList; + } } From bf271be76971bbf312f6f02c82cfdd7f2a34b633 Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 19 May 2025 15:12:38 +0800 Subject: [PATCH 20/21] =?UTF-8?q?1.3.8=20=E5=90=8E=E7=AB=AF=EF=BC=9Abusine?= =?UTF-8?q?sstype=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/hwmom-common-mom/pom.xml | 4 ++++ .../main/java/org/dromara/common/log/enums/BusinessType.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ruoyi-common/hwmom-common-mom/pom.xml b/ruoyi-common/hwmom-common-mom/pom.xml index 61fa401..64ff076 100644 --- a/ruoyi-common/hwmom-common-mom/pom.xml +++ b/ruoyi-common/hwmom-common-mom/pom.xml @@ -42,6 +42,10 @@ 3.5.8 compile + + org.springframework.cloud + spring-cloud-context + diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/enums/BusinessType.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/enums/BusinessType.java index 2cf48cf..40ec0fb 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/enums/BusinessType.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/enums/BusinessType.java @@ -67,4 +67,8 @@ public enum BusinessType { */ COMPLETE, + /** + * 发布 + */ + PUBLISH, } From 0a587d3811fba7030312365d6daa2109d19da692 Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 20 May 2025 17:32:36 +0800 Subject: [PATCH 21/21] =?UTF-8?q?update=20ADD=E5=A4=A7=E5=B1=8F=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=8D=AE=E6=BA=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SysDesignDataSourceController.java | 118 ++++++++++++ .../SysDesignPageConfigController.java | 117 ++++++++++++ .../system/domain/SysDesignDataField.java | 102 ++++++++++ .../system/domain/SysDesignDataSource.java | 112 +++++++++++ .../system/domain/SysDesignPageConfig.java | 97 ++++++++++ .../domain/bo/SysDesignDataSourceBo.java | 114 +++++++++++ .../domain/bo/SysDesignPageConfigBo.java | 102 ++++++++++ .../domain/vo/SysDesignDataSourceVo.java | 133 +++++++++++++ .../domain/vo/SysDesignPageConfigVo.java | 111 +++++++++++ .../mapper/SysDesignDataFieldMapper.java | 15 ++ .../mapper/SysDesignDataSourceMapper.java | 15 ++ .../mapper/SysDesignPageConfigMapper.java | 15 ++ .../service/ISysDesignDataSourceService.java | 68 +++++++ .../service/ISysDesignPageConfigService.java | 69 +++++++ .../impl/SysDesignDataSourceServiceImpl.java | 177 ++++++++++++++++++ .../impl/SysDesignPageConfigServiceImpl.java | 142 ++++++++++++++ .../system/SysDesignDataFieldMapper.xml | 7 + .../system/SysDesignDataSourceMapper.xml | 7 + .../system/SysDesignPageConfigMapper.xml | 7 + 19 files changed, 1528 insertions(+) create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignDataSourceController.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignPageConfigController.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataField.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataSource.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignPageConfig.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignDataSourceBo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignPageConfigBo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignDataSourceVo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignPageConfigVo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataFieldMapper.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataSourceMapper.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignPageConfigMapper.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignDataSourceService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignPageConfigService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignDataSourceServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataFieldMapper.xml create mode 100644 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataSourceMapper.xml create mode 100644 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignPageConfigMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignDataSourceController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignDataSourceController.java new file mode 100644 index 0000000..c6aca27 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignDataSourceController.java @@ -0,0 +1,118 @@ +package org.dromara.system.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.system.domain.vo.SysDesignDataSourceVo; +import org.dromara.system.domain.bo.SysDesignDataSourceBo; +import org.dromara.system.service.ISysDesignDataSourceService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 大屏设计数据源 + * 前端访问路由地址为:/system/designDataSource + * + * @author Yinq + * @date 2025-05-20 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/designDataSource") +public class SysDesignDataSourceController extends BaseController { + + private final ISysDesignDataSourceService sysDesignDataSourceService; + + /** + * 查询大屏设计数据源列表 + */ + //@SaCheckPermission("system:designDataSource:list") + @GetMapping("/list") + public TableDataInfo list(SysDesignDataSourceBo bo, PageQuery pageQuery) { + return sysDesignDataSourceService.queryPageList(bo, pageQuery); + } + + /** + * 导出大屏设计数据源列表 + */ + //@SaCheckPermission("system:designDataSource:export") + @Log(title = "大屏设计数据源", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysDesignDataSourceBo bo, HttpServletResponse response) { + List list = sysDesignDataSourceService.queryList(bo); + ExcelUtil.exportExcel(list, "大屏设计数据源", SysDesignDataSourceVo.class, response); + } + + /** + * 获取大屏设计数据源详细信息 + * + * @param dataSourceId 主键 + */ + //@SaCheckPermission("system:designDataSource:query") + @GetMapping("/{dataSourceId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long dataSourceId) { + return R.ok(sysDesignDataSourceService.queryById(dataSourceId)); + } + + /** + * 新增大屏设计数据源 + */ + //@SaCheckPermission("system:designDataSource:add") + @Log(title = "大屏设计数据源", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysDesignDataSourceBo bo) { + return toAjax(sysDesignDataSourceService.insertByBo(bo)); + } + + /** + * 修改大屏设计数据源 + */ + //@SaCheckPermission("system:designDataSource:edit") + @Log(title = "大屏设计数据源", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysDesignDataSourceBo bo) { + return toAjax(sysDesignDataSourceService.updateByBo(bo)); + } + + /** + * 删除大屏设计数据源 + * + * @param dataSourceIds 主键串 + */ + //@SaCheckPermission("system:designDataSource:remove") + @Log(title = "大屏设计数据源", businessType = BusinessType.DELETE) + @DeleteMapping("/{dataSourceIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] dataSourceIds) { + return toAjax(sysDesignDataSourceService.deleteWithValidByIds(List.of(dataSourceIds), true)); + } + + + /** + * 下拉框查询大屏设计数据源列表 + */ + @GetMapping("/getSysDesignDataSourceList") + public R> getSysDesignDataSourceList(SysDesignDataSourceBo bo) { + List list = sysDesignDataSourceService.queryList(bo); + return R.ok(list); + } + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignPageConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignPageConfigController.java new file mode 100644 index 0000000..a8b66c7 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysDesignPageConfigController.java @@ -0,0 +1,117 @@ +package org.dromara.system.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.system.domain.vo.SysDesignPageConfigVo; +import org.dromara.system.domain.bo.SysDesignPageConfigBo; +import org.dromara.system.service.ISysDesignPageConfigService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 大屏设计页面配置 + * 前端访问路由地址为:/system/designPageConfig + * + * @author Yinq + * @date 2025-05-20 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/designPageConfig") +public class SysDesignPageConfigController extends BaseController { + + private final ISysDesignPageConfigService sysDesignPageConfigService; + + /** + * 查询大屏设计页面配置列表 + */ + @SaCheckPermission("system:designPageConfig:list") + @GetMapping("/list") + public TableDataInfo list(SysDesignPageConfigBo bo, PageQuery pageQuery) { + return sysDesignPageConfigService.queryPageList(bo, pageQuery); + } + + /** + * 导出大屏设计页面配置列表 + */ + @SaCheckPermission("system:designPageConfig:export") + @Log(title = "大屏设计页面配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysDesignPageConfigBo bo, HttpServletResponse response) { + List list = sysDesignPageConfigService.queryList(bo); + ExcelUtil.exportExcel(list, "大屏设计页面配置", SysDesignPageConfigVo.class, response); + } + + /** + * 获取大屏设计页面配置详细信息 + * + * @param pageConfigId 主键 + */ + @SaCheckPermission("system:designPageConfig:query") + @GetMapping("/{pageConfigId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long pageConfigId) { + return R.ok(sysDesignPageConfigService.queryById(pageConfigId)); + } + + /** + * 新增大屏设计页面配置 + */ + @SaCheckPermission("system:designPageConfig:add") + @Log(title = "大屏设计页面配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysDesignPageConfigBo bo) { + return toAjax(sysDesignPageConfigService.insertByBo(bo)); + } + + /** + * 修改大屏设计页面配置 + */ + @SaCheckPermission("system:designPageConfig:edit") + @Log(title = "大屏设计页面配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysDesignPageConfigBo bo) { + return toAjax(sysDesignPageConfigService.updateByBo(bo)); + } + + /** + * 删除大屏设计页面配置 + * + * @param pageConfigIds 主键串 + */ + @SaCheckPermission("system:designPageConfig:remove") + @Log(title = "大屏设计页面配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{pageConfigIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] pageConfigIds) { + return toAjax(sysDesignPageConfigService.deleteWithValidByIds(List.of(pageConfigIds), true)); + } + + + /** + * 下拉框查询大屏设计页面配置列表 + */ + + @GetMapping("/getSysDesignPageConfigList") + public R> getSysDesignPageConfigList(SysDesignPageConfigBo bo) { + List list = sysDesignPageConfigService.queryList(bo); + return R.ok(list); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataField.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataField.java new file mode 100644 index 0000000..a258362 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataField.java @@ -0,0 +1,102 @@ +package org.dromara.system.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 大屏设计数据字段对象 sys_design_data_field + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_design_data_field") +public class SysDesignDataField extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 数据字段ID + */ + @TableId(value = "data_field_id", type = IdType.AUTO) + private Long dataFieldId; + + /** + * 数据源ID + */ + private Long dataSourceId; + + /** + * 字段类型(1请求数据 2输出数据) + */ + private String fieldType; + + /** + * 备注说明 + */ + private String remarkName; + + /** + * 请求内容类型 + */ + private String requestContentType; + + /** + * 数据类型(bool short int long float byte ushort uint ulong double string) + */ + private String dataType; + + /** + * 显示排序 + */ + private Long sortOrder; + + /** + * 预留字段一 + */ + private String fieldOne; + + /** + * 预留字段二 + */ + private String fieldTwo; + + /** + * 预留字段三 + */ + private String fieldThree; + + /** + * 预留字段四 + */ + private String fieldFour; + + /** + * 预留字段五 + */ + private String fieldFive; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataSource.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataSource.java new file mode 100644 index 0000000..317acbc --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignDataSource.java @@ -0,0 +1,112 @@ +package org.dromara.system.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 大屏设计数据源对象 sys_design_data_source + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_design_data_source") +public class SysDesignDataSource extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 数据源ID + */ + @TableId(value = "data_source_id", type = IdType.AUTO) + private Long dataSourceId; + + /** + * 数据源名称 + */ + private String dataSourceName; + + /** + * 请求方法 + */ + private String requestMethod; + + /** + * 请求地址 + */ + private String requestUrl; + + /** + * 数据源分组 + */ + private String dataSourceGroup; + + /** + * 请求内容类型 + */ + private String requestContentType; + + /** + * 响应格式(JSON XML) + */ + private String responseType; + + /** + * 版本号 + */ + private String versionCode; + + /** + * 显示排序 + */ + private Long sortOrder; + + /** + * 预留字段一 + */ + private String fieldOne; + + /** + * 预留字段二 + */ + private String fieldTwo; + + /** + * 预留字段三 + */ + private String fieldThree; + + /** + * 预留字段四 + */ + private String fieldFour; + + /** + * 预留字段五 + */ + private String fieldFive; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignPageConfig.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignPageConfig.java new file mode 100644 index 0000000..c48adeb --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDesignPageConfig.java @@ -0,0 +1,97 @@ +package org.dromara.system.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 大屏设计页面配置对象 sys_design_page_config + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_design_page_config") +public class SysDesignPageConfig extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 页面配置ID + */ + @TableId(value = "page_config_id", type = IdType.AUTO) + private Long pageConfigId; + + /** + * 页面名称 + */ + private String pageConfigName; + + /** + * 页面背景 + */ + private String pageBackground; + + /** + * 页面路由 + */ + private String pageRouting; + + /** + * 自定义内容 + */ + private String customContent; + + /** + * 显示排序 + */ + private Long sortOrder; + + /** + * 预留字段一 + */ + private String fieldOne; + + /** + * 预留字段二 + */ + private String fieldTwo; + + /** + * 预留字段三 + */ + private String fieldThree; + + /** + * 预留字段四 + */ + private String fieldFour; + + /** + * 预留字段五 + */ + private String fieldFive; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignDataSourceBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignDataSourceBo.java new file mode 100644 index 0000000..b99a7be --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignDataSourceBo.java @@ -0,0 +1,114 @@ +package org.dromara.system.domain.bo; + +import org.dromara.system.domain.SysDesignDataField; +import org.dromara.system.domain.SysDesignDataSource; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.List; + +/** + * 大屏设计数据源业务对象 sys_design_data_source + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysDesignDataSource.class, reverseConvertGenerate = false) +public class SysDesignDataSourceBo extends BaseEntity { + + /** + * 数据源ID + */ + private Long dataSourceId; + + /** + * 数据源名称 + */ + @NotBlank(message = "数据源名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String dataSourceName; + + /** + * 请求方法 + */ + @NotBlank(message = "请求方法不能为空", groups = { AddGroup.class, EditGroup.class }) + private String requestMethod; + + /** + * 请求地址 + */ + @NotBlank(message = "请求地址不能为空", groups = { AddGroup.class, EditGroup.class }) + private String requestUrl; + + /** + * 数据源分组 + */ + private String dataSourceGroup; + + /** + * 请求内容类型 + */ + private String requestContentType; + + /** + * 响应格式(JSON XML) + */ + private String responseType; + + /** + * 版本号 + */ + private String versionCode; + + /** + * 显示排序 + */ + private Long sortOrder; + + /** + * 预留字段一 + */ + private String fieldOne; + + /** + * 预留字段二 + */ + private String fieldTwo; + + /** + * 预留字段三 + */ + private String fieldThree; + + /** + * 预留字段四 + */ + private String fieldFour; + + /** + * 预留字段五 + */ + private String fieldFive; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 数据字段List + */ + private List designDataFieldList; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignPageConfigBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignPageConfigBo.java new file mode 100644 index 0000000..4a9bb56 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDesignPageConfigBo.java @@ -0,0 +1,102 @@ +package org.dromara.system.domain.bo; + +import org.dromara.system.domain.SysDesignPageConfig; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 大屏设计页面配置业务对象 sys_design_page_config + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysDesignPageConfig.class, reverseConvertGenerate = false) +public class SysDesignPageConfigBo extends BaseEntity { + + /** + * 页面配置ID + */ + @NotNull(message = "页面配置ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long pageConfigId; + + /** + * 页面名称 + */ + @NotBlank(message = "页面名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String pageConfigName; + + /** + * 页面背景 + */ + @NotBlank(message = "页面背景不能为空", groups = { AddGroup.class, EditGroup.class }) + private String pageBackground; + + /** + * 页面路由 + */ + @NotBlank(message = "页面路由不能为空", groups = { AddGroup.class, EditGroup.class }) + private String pageRouting; + + /** + * 自定义内容 + */ + @NotBlank(message = "自定义内容不能为空", groups = { AddGroup.class, EditGroup.class }) + private String customContent; + + /** + * 显示排序 + */ + @NotNull(message = "显示排序不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long sortOrder; + + /** + * 预留字段一 + */ + @NotBlank(message = "预留字段一不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fieldOne; + + /** + * 预留字段二 + */ + @NotBlank(message = "预留字段二不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fieldTwo; + + /** + * 预留字段三 + */ + @NotBlank(message = "预留字段三不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fieldThree; + + /** + * 预留字段四 + */ + @NotBlank(message = "预留字段四不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fieldFour; + + /** + * 预留字段五 + */ + @NotBlank(message = "预留字段五不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fieldFive; + + /** + * 激活标识(1是 0否) + */ + @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String activeFlag; + + /** + * 备注 + */ + @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignDataSourceVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignDataSourceVo.java new file mode 100644 index 0000000..bae1c63 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignDataSourceVo.java @@ -0,0 +1,133 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.SysDesignDataField; +import org.dromara.system.domain.SysDesignDataSource; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 大屏设计数据源视图对象 sys_design_data_source + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysDesignDataSource.class) +public class SysDesignDataSourceVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 数据源ID + */ + @ExcelProperty(value = "数据源ID") + private Long dataSourceId; + + /** + * 数据源名称 + */ + @ExcelProperty(value = "数据源名称") + private String dataSourceName; + + /** + * 请求方法 + */ + @ExcelProperty(value = "请求方法") + private String requestMethod; + + /** + * 请求地址 + */ + @ExcelProperty(value = "请求地址") + private String requestUrl; + + /** + * 数据源分组 + */ + @ExcelProperty(value = "数据源分组") + private String dataSourceGroup; + + /** + * 请求内容类型 + */ + @ExcelProperty(value = "请求内容类型") + private String requestContentType; + + /** + * 响应格式(JSON XML) + */ + @ExcelProperty(value = "响应格式(JSON XML)") + private String responseType; + + /** + * 版本号 + */ + @ExcelProperty(value = "版本号") + private String versionCode; + + /** + * 显示排序 + */ + @ExcelProperty(value = "显示排序") + private Long sortOrder; + + /** + * 预留字段一 + */ + @ExcelProperty(value = "预留字段一") + private String fieldOne; + + /** + * 预留字段二 + */ + @ExcelProperty(value = "预留字段二") + private String fieldTwo; + + /** + * 预留字段三 + */ + @ExcelProperty(value = "预留字段三") + private String fieldThree; + + /** + * 预留字段四 + */ + @ExcelProperty(value = "预留字段四") + private String fieldFour; + + /** + * 预留字段五 + */ + @ExcelProperty(value = "预留字段五") + private String fieldFive; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 数据字段List + */ + private List designDataFieldList; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignPageConfigVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignPageConfigVo.java new file mode 100644 index 0000000..8a0e2e7 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDesignPageConfigVo.java @@ -0,0 +1,111 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.SysDesignPageConfig; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 大屏设计页面配置视图对象 sys_design_page_config + * + * @author Yinq + * @date 2025-05-20 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysDesignPageConfig.class) +public class SysDesignPageConfigVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 页面配置ID + */ + @ExcelProperty(value = "页面配置ID") + private Long pageConfigId; + + /** + * 页面名称 + */ + @ExcelProperty(value = "页面名称") + private String pageConfigName; + + /** + * 页面背景 + */ + @ExcelProperty(value = "页面背景") + private String pageBackground; + + /** + * 页面路由 + */ + @ExcelProperty(value = "页面路由") + private String pageRouting; + + /** + * 自定义内容 + */ + @ExcelProperty(value = "自定义内容") + private String customContent; + + /** + * 显示排序 + */ + @ExcelProperty(value = "显示排序") + private Long sortOrder; + + /** + * 预留字段一 + */ + @ExcelProperty(value = "预留字段一") + private String fieldOne; + + /** + * 预留字段二 + */ + @ExcelProperty(value = "预留字段二") + private String fieldTwo; + + /** + * 预留字段三 + */ + @ExcelProperty(value = "预留字段三") + private String fieldThree; + + /** + * 预留字段四 + */ + @ExcelProperty(value = "预留字段四") + private String fieldFour; + + /** + * 预留字段五 + */ + @ExcelProperty(value = "预留字段五") + private String fieldFive; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataFieldMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataFieldMapper.java new file mode 100644 index 0000000..46b934f --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataFieldMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysDesignDataField; +import org.dromara.system.domain.vo.SysDesignDataFieldVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 大屏设计数据字段Mapper接口 + * + * @author Yinq + * @date 2025-05-20 + */ +public interface SysDesignDataFieldMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataSourceMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataSourceMapper.java new file mode 100644 index 0000000..cf5f64f --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignDataSourceMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysDesignDataSource; +import org.dromara.system.domain.vo.SysDesignDataSourceVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 大屏设计数据源Mapper接口 + * + * @author Yinq + * @date 2025-05-20 + */ +public interface SysDesignDataSourceMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignPageConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignPageConfigMapper.java new file mode 100644 index 0000000..680a4e5 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDesignPageConfigMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysDesignPageConfig; +import org.dromara.system.domain.vo.SysDesignPageConfigVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 大屏设计页面配置Mapper接口 + * + * @author Yinq + * @date 2025-05-20 + */ +public interface SysDesignPageConfigMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignDataSourceService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignDataSourceService.java new file mode 100644 index 0000000..c69ea80 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignDataSourceService.java @@ -0,0 +1,68 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.vo.SysDesignDataSourceVo; +import org.dromara.system.domain.bo.SysDesignDataSourceBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 大屏设计数据源Service接口 + * + * @author Yinq + * @date 2025-05-20 + */ +public interface ISysDesignDataSourceService { + + /** + * 查询大屏设计数据源 + * + * @param dataSourceId 主键 + * @return 大屏设计数据源 + */ + SysDesignDataSourceVo queryById(Long dataSourceId); + + /** + * 分页查询大屏设计数据源列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 大屏设计数据源分页列表 + */ + TableDataInfo queryPageList(SysDesignDataSourceBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的大屏设计数据源列表 + * + * @param bo 查询条件 + * @return 大屏设计数据源列表 + */ + List queryList(SysDesignDataSourceBo bo); + + /** + * 新增大屏设计数据源 + * + * @param bo 大屏设计数据源 + * @return 是否新增成功 + */ + Boolean insertByBo(SysDesignDataSourceBo bo); + + /** + * 修改大屏设计数据源 + * + * @param bo 大屏设计数据源 + * @return 是否修改成功 + */ + Boolean updateByBo(SysDesignDataSourceBo bo); + + /** + * 校验并批量删除大屏设计数据源信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignPageConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignPageConfigService.java new file mode 100644 index 0000000..fa90758 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDesignPageConfigService.java @@ -0,0 +1,69 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.SysDesignPageConfig; +import org.dromara.system.domain.vo.SysDesignPageConfigVo; +import org.dromara.system.domain.bo.SysDesignPageConfigBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 大屏设计页面配置Service接口 + * + * @author Yinq + * @date 2025-05-20 + */ +public interface ISysDesignPageConfigService { + + /** + * 查询大屏设计页面配置 + * + * @param pageConfigId 主键 + * @return 大屏设计页面配置 + */ + SysDesignPageConfigVo queryById(Long pageConfigId); + + /** + * 分页查询大屏设计页面配置列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 大屏设计页面配置分页列表 + */ + TableDataInfo queryPageList(SysDesignPageConfigBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的大屏设计页面配置列表 + * + * @param bo 查询条件 + * @return 大屏设计页面配置列表 + */ + List queryList(SysDesignPageConfigBo bo); + + /** + * 新增大屏设计页面配置 + * + * @param bo 大屏设计页面配置 + * @return 是否新增成功 + */ + Boolean insertByBo(SysDesignPageConfigBo bo); + + /** + * 修改大屏设计页面配置 + * + * @param bo 大屏设计页面配置 + * @return 是否修改成功 + */ + Boolean updateByBo(SysDesignPageConfigBo bo); + + /** + * 校验并批量删除大屏设计页面配置信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignDataSourceServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignDataSourceServiceImpl.java new file mode 100644 index 0000000..ed5bb63 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignDataSourceServiceImpl.java @@ -0,0 +1,177 @@ +package org.dromara.system.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.system.domain.SysDesignDataField; +import org.dromara.system.mapper.SysDesignDataFieldMapper; +import org.springframework.stereotype.Service; +import org.dromara.system.domain.bo.SysDesignDataSourceBo; +import org.dromara.system.domain.vo.SysDesignDataSourceVo; +import org.dromara.system.domain.SysDesignDataSource; +import org.dromara.system.mapper.SysDesignDataSourceMapper; +import org.dromara.system.service.ISysDesignDataSourceService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 大屏设计数据源Service业务层处理 + * + * @author Yinq + * @date 2025-05-20 + */ +@RequiredArgsConstructor +@Service +public class SysDesignDataSourceServiceImpl implements ISysDesignDataSourceService { + + private final SysDesignDataSourceMapper baseMapper; + + private final SysDesignDataFieldMapper designDataFieldMapper; + + /** + * 查询大屏设计数据源 + * + * @param dataSourceId 主键 + * @return 大屏设计数据源 + */ + @Override + public SysDesignDataSourceVo queryById(Long dataSourceId) { + SysDesignDataSourceVo dataSourceVo = baseMapper.selectVoById(dataSourceId); + MPJLambdaWrapper lqw = JoinWrappers.lambda(SysDesignDataField.class); + lqw.eq(SysDesignDataField::getDataSourceId, dataSourceId); + List dataFieldList = designDataFieldMapper.selectList(lqw); + dataSourceVo.setDesignDataFieldList(dataFieldList); + return dataSourceVo; + } + + /** + * 分页查询大屏设计数据源列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 大屏设计数据源分页列表 + */ + @Override + public TableDataInfo queryPageList(SysDesignDataSourceBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的大屏设计数据源列表 + * + * @param bo 查询条件 + * @return 大屏设计数据源列表 + */ + @Override + public List queryList(SysDesignDataSourceBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(SysDesignDataSourceBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(SysDesignDataSource.class) + .selectAll(SysDesignDataSource.class) + .eq(bo.getDataSourceId() != null, SysDesignDataSource::getDataSourceId, bo.getDataSourceId()) + .like(StringUtils.isNotBlank(bo.getDataSourceName()), SysDesignDataSource::getDataSourceName, bo.getDataSourceName()) + .eq(StringUtils.isNotBlank(bo.getRequestMethod()), SysDesignDataSource::getRequestMethod, bo.getRequestMethod()) + .eq(StringUtils.isNotBlank(bo.getRequestUrl()), SysDesignDataSource::getRequestUrl, bo.getRequestUrl()) + .eq(StringUtils.isNotBlank(bo.getDataSourceGroup()), SysDesignDataSource::getDataSourceGroup, bo.getDataSourceGroup()) + .eq(StringUtils.isNotBlank(bo.getRequestContentType()), SysDesignDataSource::getRequestContentType, bo.getRequestContentType()) + .eq(StringUtils.isNotBlank(bo.getResponseType()), SysDesignDataSource::getResponseType, bo.getResponseType()) + .eq(StringUtils.isNotBlank(bo.getVersionCode()), SysDesignDataSource::getVersionCode, bo.getVersionCode()) + .eq(bo.getSortOrder() != null, SysDesignDataSource::getSortOrder, bo.getSortOrder()) + .eq(StringUtils.isNotBlank(bo.getFieldOne()), SysDesignDataSource::getFieldOne, bo.getFieldOne()) + .eq(StringUtils.isNotBlank(bo.getFieldTwo()), SysDesignDataSource::getFieldTwo, bo.getFieldTwo()) + .eq(StringUtils.isNotBlank(bo.getFieldThree()), SysDesignDataSource::getFieldThree, bo.getFieldThree()) + .eq(StringUtils.isNotBlank(bo.getFieldFour()), SysDesignDataSource::getFieldFour, bo.getFieldFour()) + .eq(StringUtils.isNotBlank(bo.getFieldFive()), SysDesignDataSource::getFieldFive, bo.getFieldFive()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), SysDesignDataSource::getActiveFlag, bo.getActiveFlag()) + .orderByAsc(SysDesignDataSource::getCreateTime); + return lqw; + } + + /** + * 新增大屏设计数据源 + * + * @param bo 大屏设计数据源 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(SysDesignDataSourceBo bo) { + SysDesignDataSource add = MapstructUtils.convert(bo, SysDesignDataSource.class); + List designDataFieldList = bo.getDesignDataFieldList(); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + assert add != null; + bo.setDataSourceId(add.getDataSourceId()); + if (!designDataFieldList.isEmpty()) { + for (SysDesignDataField designDataField : designDataFieldList) { + designDataField.setDataSourceId(add.getDataSourceId()); + designDataFieldMapper.insert(designDataField); + } + } + } + return flag; + } + + /** + * 修改大屏设计数据源 + * + * @param bo 大屏设计数据源 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(SysDesignDataSourceBo bo) { + SysDesignDataSource update = MapstructUtils.convert(bo, SysDesignDataSource.class); + List designDataFieldList = bo.getDesignDataFieldList(); + validEntityBeforeSave(update); + if (!designDataFieldList.isEmpty()) { +// MPJLambdaWrapper lqw = JoinWrappers.lambda(SysDesignDataField.class); +// lqw.eq(bo.getDataSourceId() != null, SysDesignDataField::getDataSourceId, bo.getDataSourceId()); +// List dataFieldList = designDataFieldMapper.selectList(lqw); +// for (SysDesignDataField field : dataFieldList) { +// designDataFieldMapper.deleteById(field.getDataFieldId()); +// } + for (SysDesignDataField dataField : designDataFieldList) { + designDataFieldMapper.insertOrUpdate(dataField); + } + } + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysDesignDataSource entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除大屏设计数据源信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java new file mode 100644 index 0000000..aa53bf8 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java @@ -0,0 +1,142 @@ +package org.dromara.system.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.system.domain.bo.SysDesignPageConfigBo; +import org.dromara.system.domain.vo.SysDesignPageConfigVo; +import org.dromara.system.domain.SysDesignPageConfig; +import org.dromara.system.mapper.SysDesignPageConfigMapper; +import org.dromara.system.service.ISysDesignPageConfigService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 大屏设计页面配置Service业务层处理 + * + * @author Yinq + * @date 2025-05-20 + */ +@RequiredArgsConstructor +@Service +public class SysDesignPageConfigServiceImpl implements ISysDesignPageConfigService { + + private final SysDesignPageConfigMapper baseMapper; + + /** + * 查询大屏设计页面配置 + * + * @param pageConfigId 主键 + * @return 大屏设计页面配置 + */ + @Override + public SysDesignPageConfigVo queryById(Long pageConfigId){ + return baseMapper.selectVoById(pageConfigId); + } + + /** + * 分页查询大屏设计页面配置列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 大屏设计页面配置分页列表 + */ + @Override + public TableDataInfo queryPageList(SysDesignPageConfigBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的大屏设计页面配置列表 + * + * @param bo 查询条件 + * @return 大屏设计页面配置列表 + */ + @Override + public List queryList(SysDesignPageConfigBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(SysDesignPageConfigBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(SysDesignPageConfig.class) + .selectAll(SysDesignPageConfig.class) + .eq(bo.getPageConfigId() != null, SysDesignPageConfig::getPageConfigId, bo.getPageConfigId()) + .like(StringUtils.isNotBlank(bo.getPageConfigName()), SysDesignPageConfig::getPageConfigName, bo.getPageConfigName()) + .eq(StringUtils.isNotBlank(bo.getPageBackground()), SysDesignPageConfig::getPageBackground, bo.getPageBackground()) + .eq(StringUtils.isNotBlank(bo.getPageRouting()), SysDesignPageConfig::getPageRouting, bo.getPageRouting()) + .eq(StringUtils.isNotBlank(bo.getCustomContent()), SysDesignPageConfig::getCustomContent, bo.getCustomContent()) + .eq(bo.getSortOrder() != null, SysDesignPageConfig::getSortOrder, bo.getSortOrder()) + .eq(StringUtils.isNotBlank(bo.getFieldOne()), SysDesignPageConfig::getFieldOne, bo.getFieldOne()) + .eq(StringUtils.isNotBlank(bo.getFieldTwo()), SysDesignPageConfig::getFieldTwo, bo.getFieldTwo()) + .eq(StringUtils.isNotBlank(bo.getFieldThree()), SysDesignPageConfig::getFieldThree, bo.getFieldThree()) + .eq(StringUtils.isNotBlank(bo.getFieldFour()), SysDesignPageConfig::getFieldFour, bo.getFieldFour()) + .eq(StringUtils.isNotBlank(bo.getFieldFive()), SysDesignPageConfig::getFieldFive, bo.getFieldFive()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), SysDesignPageConfig::getActiveFlag, bo.getActiveFlag()) + .orderByDesc(SysDesignPageConfig::getCreateTime); + return lqw; + } + + /** + * 新增大屏设计页面配置 + * + * @param bo 大屏设计页面配置 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SysDesignPageConfigBo bo) { + SysDesignPageConfig add = MapstructUtils.convert(bo, SysDesignPageConfig.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setPageConfigId(add.getPageConfigId()); + } + return flag; + } + + /** + * 修改大屏设计页面配置 + * + * @param bo 大屏设计页面配置 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SysDesignPageConfigBo bo) { + SysDesignPageConfig update = MapstructUtils.convert(bo, SysDesignPageConfig.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysDesignPageConfig entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除大屏设计页面配置信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataFieldMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataFieldMapper.xml new file mode 100644 index 0000000..deb378b --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataFieldMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataSourceMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataSourceMapper.xml new file mode 100644 index 0000000..d0cfa2d --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignDataSourceMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignPageConfigMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignPageConfigMapper.xml new file mode 100644 index 0000000..3b0c3ed --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDesignPageConfigMapper.xml @@ -0,0 +1,7 @@ + + + + +