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()); + } + } + +}