排产定时任务修改-sjx

develop-QA
sunjianxi 3 months ago
parent 54c20120f0
commit 40ac0fd62f
  1. 4
      blade-ops/blade-job/pom.xml
  2. 32
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/InitResourceProcessor.java
  3. 32
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java
  4. 4
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java
  5. 5
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java
  6. 23
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java
  7. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml
  8. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
  9. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/PersonResourceServiceImpl.java
  10. 16
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
  11. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/task/InitResourceJob.java
  12. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/task/SchedulingJob.java

@ -52,6 +52,10 @@
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-scheduling-api</artifactId>
</dependency>
</dependencies>
<build>

@ -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<Void> runFuture = CompletableFuture.runAsync(()->client.initResource());
log.info("初始化资源定时任务结束");
return new ProcessResult(true);
}
}

@ -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<Void> runFuture = CompletableFuture.runAsync(()->client.scheduling());
log.info("排产定时任务结束");
return new ProcessResult(true);
}
}

@ -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<Void> scheduling();
@GetMapping(INIT_RESOURCE)
R<Void> initResource();
}

@ -40,4 +40,9 @@ public class IWorkOrderClientFallback implements IWorkOrderClient {
public R<Void> scheduling() {
return R.fail("获取数据失败");
}
@Override
public R<Void> initResource() {
return R.fail("初始化资源失败");
}
}

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

@ -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",

@ -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<EquipResourceMapper, EquipResourceEntity> implements IEquipResourceService {
private final IEquipAbilityService equipAbilityService;
@ -78,6 +80,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
}
public void initEquipResource(){
log.info("初始化设备资源开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
//获取包括今天在内未来7天
Date date = new Date();
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(Wrappers.<EquipAbilityEntity>lambdaQuery().isNotNull(EquipAbilityEntity::getWorkCenterId).isNotNull(EquipAbilityEntity::getCraftId).isNotNull(EquipAbilityEntity::getEquipCode));
@ -98,6 +101,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
//删除3天之前的数据
List<EquipResourceEntity> deleteList = this.list(Wrappers.<EquipResourceEntity>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){

@ -74,6 +74,7 @@ public class PersonResourceServiceImpl extends BaseServiceImpl<PersonResourceMap
}
public void initPersonResource(){
log.info("初始化人力资源开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
//获取包括今天在内未来3天
Date date = new Date();
for(int i=0;i<7;i++){
@ -83,6 +84,7 @@ public class PersonResourceServiceImpl extends BaseServiceImpl<PersonResourceMap
generateData(today);
}
}
log.info("初始化人力资源开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
}
public void generateData(String day){

@ -435,11 +435,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
continue;
}
String glassCodeStr = null;
Map<String,Object> 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<WorkOrderMapper, WorkO
//更新剩余产能
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity));
equipResource.setIsUsed("1");
if(order.getYieldType() == 2 || order.getYieldType() == 3){
equipResource.setGlassCode(glassCodeStr);
if((order.getYieldType() == 2 || order.getYieldType() == 3) && sameFurnaceMap.get("glassCode") != null){
equipResource.setGlassCode(sameFurnaceMap.get("glassCode").toString());
}
//同一个设备可能有多个工艺能力,同一时间只能做一个工艺能力的零件,所以需要把当前设备所有工艺能力的剩余产能都更新调
@ -1299,7 +1300,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
return isSameTrough;
}
public Boolean sameFurnace(YieldOrderEntity order,YieldOrderCraftEntity craft,List<WorkPlanEntity> workPlanList,LocalDateTime prevProcessEnd,String glassCodeStr,Map<Long, List<SintTempCurveEntity>> sintMap){
public Map<String,Object> sameFurnace(YieldOrderEntity order,YieldOrderCraftEntity craft,List<WorkPlanEntity> workPlanList,LocalDateTime prevProcessEnd,String glassCodeStr,Map<Long, List<SintTempCurveEntity>> sintMap){
Map<String,Object> map = new HashMap<>();
Boolean isSameFurnace = false;
if(order.getYieldType() == 2 || order.getYieldType() == 3){//烧结订单
//获取当前工序的所有温度曲线
@ -1325,6 +1327,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
if(maxMatchList != null){
glassCodeStr = maxMatchList.stream().collect(Collectors.joining(","));
map.put("glassCode",glassCodeStr);
log.info("订单:"+order.getYoCode()+",温度曲线是:"+glassCodeStr);
}
}
@ -1377,7 +1380,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
}
return isSameFurnace;
map.put("isSameFurnace",isSameFurnace);
return map;
}
}

@ -22,7 +22,7 @@ public class InitResourceJob {
private final IPersonResourceService personResourceService;
private final IEquipResourceService equipResourceService;
@Scheduled(cron = "* * 1 * * ?")
//@Scheduled(cron = "* * 1 * * ?")
public void initResourceJob() {
equipResourceService.initEquipResource();
personResourceService.initPersonResource();

@ -21,7 +21,7 @@ import org.springframework.stereotype.Component;
public class SchedulingJob {
private final IWorkOrderService workOrderService;
@Scheduled(cron = "0 0 8,12,16,20 * * ? ")
//@Scheduled(cron = "0 0 8,12,16,20 * * ? ")
public void schedulingJob() {
workOrderService.scheduling();
}

Loading…
Cancel
Save