feat(job): 新增 SnailJob 任务执行器和相关接口
- 添加了 DmsInspectStanceExecutor、DmsLubeStanceExecutor 和 DmsMaintStanceExecutor 三个任务执行器 - 新增了 DmsJobEntity 任务实体类 - 实现了 RemoteInspectInstanceService、RemoteLubeInstanceService 和 RemoteMaintInstanceService 接口 - 添加了 RemoteJobService 接口及其实现类 - 新建了相关的 Maven 项目配置文件master
parent
9f207e2ff8
commit
888dd9da65
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-api</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>hwmom-api-dms</artifactId>
|
||||
|
||||
<description>
|
||||
hwmom-api-dms dms接口模块
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- RuoYi Common Core-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-excel</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aizuda</groupId>
|
||||
<artifactId>snail-job-client-job-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,9 @@
|
||||
package org.dromara.dms.api;
|
||||
|
||||
import org.dromara.common.core.domain.R;
|
||||
|
||||
public interface RemoteInspectInstanceService {
|
||||
|
||||
public R<Integer> insertInspectInstance(String planInspectCode);
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package org.dromara.dms.api;
|
||||
|
||||
|
||||
import org.dromara.common.core.domain.R;
|
||||
|
||||
public interface RemoteLubeInstanceService {
|
||||
|
||||
|
||||
public R<Void> insertLubeInstance(String lubeInstanceCode);
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package org.dromara.dms.api;
|
||||
|
||||
import org.dromara.common.core.domain.R;
|
||||
|
||||
public interface RemoteMaintInstanceService {
|
||||
|
||||
public R<Integer> insertDmsBillsMaintInstance(String planMaintCode);
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package org.dromara.dms.api;
|
||||
|
||||
import org.dromara.common.core.domain.R;
|
||||
|
||||
public interface RemoteRepairStanceService {
|
||||
|
||||
public R<Integer> insertDmsRepairInstance(String planRepairCode);
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-api</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ruoyi-api-job</artifactId>
|
||||
|
||||
<description>
|
||||
ruoyi-api-job job接口模块
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- RuoYi Common Core-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-excel</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aizuda</groupId>
|
||||
<artifactId>snail-job-client-job-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -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<Integer> insertDmsBillsMaintInstance(String planMaintCode) {
|
||||
String planMaintCodeS = planMaintCode.replaceAll("\"", "");
|
||||
DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS);
|
||||
List<DmsPlanMaintDetail> 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<DmsPlanMaintDetail> planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList();
|
||||
List<DmsBillsMaintDetail> 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<DmsBillsMaintDetailProject> billsMaintDetailProjectList = new ArrayList<>();
|
||||
List<DmsBillsMaintDetail> list = dmsBillsMaintDetailMapper.selectDetailList(maintInstanceId);
|
||||
for (DmsBillsMaintDetail detail : list) {
|
||||
List<DmsBaseMaintProject> 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);
|
||||
|
||||
}
|
||||
}
|
@ -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<String, Object> paramMap = objectMapper.readValue(jsonStr, Map.class);
|
||||
String planCode = (String) paramMap.get("planLubeCode");
|
||||
|
||||
R<Void> instance = dmsBillsLubeInstanceService.insertLubeInstance(planCode);
|
||||
return ExecuteResult.success(instance);
|
||||
} catch (Exception e) {
|
||||
return ExecuteResult.failure(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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<String, Object> paramMap = objectMapper.readValue(jsonStr, Map.class);
|
||||
String planCode = (String) paramMap.get("planMaintCode");
|
||||
|
||||
R<Integer> instance = dmsBillsMaintInstanceService.insertDmsBillsMaintInstance(planCode);
|
||||
return ExecuteResult.success(instance);
|
||||
} catch (Exception e) {
|
||||
return ExecuteResult.failure(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue