diff --git a/blade-ops/blade-job/pom.xml b/blade-ops/blade-job/pom.xml index 8d7b5745..afa588a5 100644 --- a/blade-ops/blade-job/pom.xml +++ b/blade-ops/blade-job/pom.xml @@ -52,6 +52,10 @@ 4.6.0.RELEASE compile + + org.springblade + blade-scheduling-api + diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/InitResourceProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/InitResourceProcessor.java new file mode 100644 index 00000000..1ab22430 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/InitResourceProcessor.java @@ -0,0 +1,32 @@ +package org.springblade.job.processor.scheduling; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.scheduling.feign.IWorkOrderClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +import java.util.concurrent.CompletableFuture; + +/** + * 排产-定期生成设备和人力资源 + */ +@Component +@Data +@Slf4j +public class InitResourceProcessor implements BasicProcessor { + + @Resource + private IWorkOrderClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("初始化资源定时任务开始"); + CompletableFuture runFuture = CompletableFuture.runAsync(()->client.initResource()); + log.info("初始化资源定时任务结束"); + return new ProcessResult(true); + } +} diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java new file mode 100644 index 00000000..334adac8 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java @@ -0,0 +1,32 @@ +package org.springblade.job.processor.scheduling; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.scheduling.feign.IWorkOrderClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +import java.util.concurrent.CompletableFuture; + +/** + * 排产-排产定时任务 + */ +@Component +@Data +@Slf4j +public class SchedulingProcessor implements BasicProcessor { + + @Resource + private IWorkOrderClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("排产定时任务开始"); + CompletableFuture runFuture = CompletableFuture.runAsync(()->client.scheduling()); + log.info("排产定时任务结束"); + return new ProcessResult(true); + } +} diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java index 0f0af614..896306a6 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java @@ -21,6 +21,7 @@ public interface IWorkOrderClient { String API_PREFIX = "/feign/client/workOrder"; String SCHEDULING = API_PREFIX + "/scheduling"; + String INIT_RESOURCE = API_PREFIX + "/initResource"; /** * 排产 @@ -28,4 +29,7 @@ public interface IWorkOrderClient { */ @GetMapping(SCHEDULING) R scheduling(); + + @GetMapping(INIT_RESOURCE) + R initResource(); } diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java index 076be6dc..10756076 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java @@ -40,4 +40,9 @@ public class IWorkOrderClientFallback implements IWorkOrderClient { public R scheduling() { return R.fail("获取数据失败"); } + + @Override + public R initResource() { + return R.fail("初始化资源失败"); + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java index 980e90be..10a8bb4c 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java @@ -28,12 +28,19 @@ package org.springblade.scheduling.scheduling.feign; import io.swagger.v3.oas.annotations.Hidden; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.scheduling.feign.IWorkOrderClient; +import org.springblade.scheduling.scheduling.service.IEquipResourceService; +import org.springblade.scheduling.scheduling.service.IPersonResourceService; import org.springblade.scheduling.scheduling.service.IWorkOrderService; import org.springframework.web.bind.annotation.RestController; +import java.util.Date; + /** * 字典服务Feign实现类 @@ -44,14 +51,30 @@ import org.springframework.web.bind.annotation.RestController; @Hidden @RestController @AllArgsConstructor +@Slf4j public class WorkOrderClient implements IWorkOrderClient { private final IWorkOrderService workOrderService; + private final IPersonResourceService personResourceService; + + private final IEquipResourceService equipResourceService; + @Override public R scheduling() { + log.info("排产任务开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); workOrderService.scheduling(); + log.info("排查任务结束:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); + return R.success(); + } + + @Override + public R initResource() { + log.info("初始化资源开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); + equipResourceService.initEquipResource(); + personResourceService.initPersonResource(); + log.info("初始化资源结束:" + DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); return R.success(); } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml index 66532713..cc857190 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml @@ -94,7 +94,7 @@ a.card_no AS "cardNO", g.priority_aps AS "priorityAps", g.product_ident AS "productIdent", - to_char(g.release_date,'YYYY-MM-DD') AS "releaseDate", + to_char(g.receive_time,'YYYY-MM-DD') AS "receiveTime", f.name AS "currentProcessName", d.name AS "processName", to_char(b.start_time,'YYYY-MM-DD HH24:MI') AS "startTime", diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java index bf7323a2..74d77890 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java @@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; @@ -61,6 +62,7 @@ import java.util.Map; */ @Service @AllArgsConstructor +@Slf4j public class EquipResourceServiceImpl extends BaseServiceImpl implements IEquipResourceService { private final IEquipAbilityService equipAbilityService; @@ -78,6 +80,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().isNotNull(EquipAbilityEntity::getWorkCenterId).isNotNull(EquipAbilityEntity::getCraftId).isNotNull(EquipAbilityEntity::getEquipCode)); @@ -98,6 +101,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl deleteList = this.list(Wrappers.lambdaQuery().le(EquipResourceEntity::getDateTime,DateFormatUtils.format(DateUtils.addDays(date,-3),"yyyy-MM-dd"))); deleteList.forEach(item -> baseMapper.deleteById(item.getId())); + log.info("初始化设备资源结束:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); } public void initSingleEquipResource(EquipAbilityEntity entity){ diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java index e58133e3..b7547a40 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java @@ -74,6 +74,7 @@ public class PersonResourceServiceImpl extends BaseServiceImpl sameFurnaceMap = new HashMap<>(); //烧结同炉 if(sintMap.containsKey(craft.getPpsId())){ - Boolean isSameFurnace = sameFurnace(order,craft,workPlanList,prevProcessEnd,glassCodeStr,sintMap); + sameFurnaceMap = sameFurnace(order,craft,workPlanList,prevProcessEnd,glassCodeStr,sintMap); //同炉的话就不用走下面的匹配了,直接下一工序 - if(isSameFurnace){ + if(sameFurnaceMap.get("isSameFurnace").toString() == "true"){ continue; } } @@ -532,8 +533,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workPlanList,LocalDateTime prevProcessEnd,String glassCodeStr,Map> sintMap){ + public Map sameFurnace(YieldOrderEntity order,YieldOrderCraftEntity craft,List workPlanList,LocalDateTime prevProcessEnd,String glassCodeStr,Map> sintMap){ + Map map = new HashMap<>(); Boolean isSameFurnace = false; if(order.getYieldType() == 2 || order.getYieldType() == 3){//烧结订单 //获取当前工序的所有温度曲线 @@ -1325,6 +1327,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl