diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java
index 162d2c2a..f965eb67 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/dto/WorkOrderDto.java
@@ -37,8 +37,11 @@ public class WorkOrderDto {
private String makeQty;
private String workCenterName;
+ private String workCenterId;
private Integer totalCount;
private Integer schedulingCount;
+ private Integer unschedulingCount;
+ private Integer errorCount;
private String schedulingRate;
private String productIdent;
private String receiveTime;
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java
index 099c4616..4faa8ea1 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipResourceEntity.java
@@ -157,6 +157,8 @@ public class EquipResourceEntity extends BaseEntity {
@Schema(description = "玻璃粉牌号")
private String GlassCode;
+ private Integer isDeleted;
+
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/ProcessSetEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/ProcessSetEntity.java
index c0e72041..40556624 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/ProcessSetEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/ProcessSetEntity.java
@@ -59,7 +59,7 @@ public class ProcessSetEntity extends BaseEntity {
* 转速/振频
*/
@Schema(description = "转速/振频")
- private String vSpeed;
+ private String viSpeed;
/**
* 整流机控制模式
*/
@@ -70,11 +70,7 @@ public class ProcessSetEntity extends BaseEntity {
*/
@Schema(description = "班组")
private String team;
- /**
- *
- */
- @Schema(description = "")
- private BigDecimal newColumn;
+
/**
* 编码
*/
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/TeamSetEntity.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/TeamSetEntity.java
index 444497c8..9275c84a 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/TeamSetEntity.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/TeamSetEntity.java
@@ -63,17 +63,17 @@ public class TeamSetEntity extends BaseEntity {
* 班组长(外键-人员)
*/
@Schema(description = "班组长(外键-人员)")
- private BigDecimal teamLeader;
+ private Long teamLeader;
/**
* 计划员(外键-人员)
*/
@Schema(description = "计划员(外键-人员)")
- private BigDecimal planner;
+ private Long planner;
/**
* 调度员(外键-人员)
*/
@Schema(description = "调度员(外键-人员)")
- private BigDecimal dispatcher;
+ private Long dispatcher;
/**
* 班组成员
*/
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 b21877e3..763214f3 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
@@ -171,7 +171,9 @@
-- 统计待排产的数量
COUNT(CASE WHEN a.STATUS >= 10003 THEN a.WORK_CENTER_ID END) AS "totalCount",
-- 统计已排产的数量
- COUNT(CASE WHEN a.STATUS not in (10003,10006) THEN a.WORK_CENTER_ID END) AS "schedulingCount"
+ COUNT(CASE WHEN a.STATUS not in (10003,10006) THEN a.WORK_CENTER_ID END) AS "schedulingCount",
+ COUNT(CASE WHEN a.STATUS = 10003 THEN a.WORK_CENTER_ID END) AS "unschedulingCount",
+ COUNT(CASE WHEN a.STATUS = 10006 THEN a.WORK_CENTER_ID END) AS "errorCount"
FROM MES_YIELD_ORDER a
LEFT JOIN BS_WORK_CENTER b ON a.WORK_CENTER_ID = b.ID
@@ -183,7 +185,8 @@
and a.receive_time to_date(#{endTime},'YYYY-MM-DD HH24:MI:SS')
- GROUP BY b.WC_NAME, a.WORK_CENTER_ID;
+ GROUP BY b.WC_NAME, a.WORK_CENTER_ID
+ order by COUNT( CASE WHEN a.STATUS NOT IN ( 10003, 10006 ) THEN a.WORK_CENTER_ID END )/COUNT( CASE WHEN a.STATUS >= 10003 THEN a.WORK_CENTER_ID END ) desc
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 e5c674b0..a5dcd622 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
@@ -90,7 +90,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl deleteList = this.list(Wrappers.lambdaQuery().le(EquipResourceEntity::getDateTime,DateFormatUtils.format(DateUtils.addDays(date,-3),"yyyy-MM-dd")));
- this.removeByIds(deleteList.stream().map(BaseEntity::getId).collect(Collectors.toList()));
+ deleteList.forEach(item -> baseMapper.deleteById(item.getId()));
}
@Override
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
index 04c5da10..7d310b8a 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
@@ -85,6 +85,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl schedulingBoard(WorkOrderDto workOrder) {
List list = baseMapper.selectWorkOrderList(workOrder);
- //Map> resultList = new HashMap<>();
Map> woCodeGroup = list.stream().collect(Collectors.groupingBy(WorkOrderDto::getWoCode));
List resultList = new ArrayList<>();
for (Map.Entry> entry : woCodeGroup.entrySet()) {
WorkOrderDto workOrderDto = new WorkOrderDto();
String woCode = entry.getKey();
- List woList = entry.getValue();
workOrderDto.setWoCode(woCode);
workOrderDto.setWorkOrderList(entry.getValue());
resultList.add(workOrderDto);
- //按processName二次分组
- /* Map> processGroup = woList.stream()
- .collect(Collectors.groupingBy(WorkOrderDto::getProcessName));
-
- //整合每个processName的时间
- List mergedProcessList = new ArrayList<>();
- for (Map.Entry> processEntry : processGroup.entrySet()) {
- String processName = processEntry.getKey();
- List processList = processEntry.getValue();
-
- // 计算最早的开始时间、最晚的结束时间
- String minStartTime = getMinTime(processList.stream().map(WorkOrderDto::getPlanStartTime).toList());
- String maxEndTime = getMaxTime(processList.stream().map(WorkOrderDto::getPlanEndTime).toList());
-
- // 封装整合后的DTO(复用第一个对象或新建)
- WorkOrderDto mergedDto = new WorkOrderDto();
- mergedDto.setWoCode(woCode);
- mergedDto.setProcessName(processName);
- for (WorkOrderDto dto : processList) {
- mergedDto.setTeamName(dto.getTeamName());
- mergedDto.setCardNo(dto.getCardNo());
- mergedDto.setBatchNo(dto.getBatchNo());
- mergedDto.setPartCode(dto.getPartCode());
- mergedDto.setCurrentProcessName(dto.getCurrentProcessName());
- mergedDto.setMakeQty(dto.getMakeQty());
- mergedDto.setEquipName(dto.getEquipName());
- mergedDto.setProductIdent(dto.getProductIdent());
- mergedDto.setPriorityAps(YieldOrderEnum.getName(Integer.parseInt(dto.getPriorityAps())));
- if (dto.getPlanStartTime().equals(minStartTime)) {
- mergedDto.setStartTime(dto.getStartTime());
- mergedDto.setFactStartTime(dto.getFactStartTime());
- }
- if (dto.getPlanEndTime().equals(maxEndTime)) {
- mergedDto.setEndTime(dto.getEndTime());
- mergedDto.setFactEndTime(dto.getFactEndTime());
- mergedDto.setPlanStatus(dto.getPlanStatus());
- }
- }
-
- mergedDto.setPlanStartTime(minStartTime);
- mergedDto.setPlanEndTime(maxEndTime);
- mergedProcessList.add(mergedDto);
- }
- mergedProcessList.sort(Comparator.comparing(WorkOrderDto::getPlanStartTime));
- workOrderDto.setWoCode(woCode);
- workOrderDto.setWorkOrderList(mergedProcessList);
- resultList.add(workOrderDto);*/
- //resultList.put(woCode, mergedProcessList);
}
return resultList;
@@ -429,7 +380,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()));
if (CollectionUtils.isEmpty(equipAbilityList)) {
- order.setErrorInfo("工序:"+processMap.get(craft.getPpsId()) +"设备未匹配到对应的设备能力");
+ order.setErrorInfo("工序:"+processMap.get(craft.getPpsId()) +",未匹配到对应的设备能力");
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
yieldOrderService.updateById(order);
isSchecuding = false;
@@ -505,7 +455,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl equipResourceList = equipResourceService.list(Wrappers.lambdaQuery().eq(EquipResourceEntity::getCraftId, craft.getCaId()).eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()).ge(EquipResourceEntity::getStartTime, dateTime).eq(EquipResourceEntity::getIsUsed, 0).in(EquipResourceEntity::getEquipOrder, entry.getKey()));
if (CollectionUtils.isEmpty(equipResourceList)) {
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
- order.setErrorInfo("工序:" + processMap.get(craft.getPpsId()) + "未匹配到对应的设备资源");
+ order.setErrorInfo("工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备资源");
yieldOrderService.updateById(order);
isSchecuding = false;
break;
@@ -528,7 +478,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl capacityList = capacitySplit(equipResourceMap, sumCapacity);
@@ -643,72 +593,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl personResourceList = personResourceService.list(Wrappers.lambdaQuery().ge(PersonResourceEntity::getStartTime,prevProcessEnd.plusMinutes(30)).eq(PersonResourceEntity::getCraftId,craft.getCaId()).eq(PersonResourceEntity::getIsUsed,0).orderByAsc(PersonResourceEntity::getStartTime).last("for update"));
- //如果personResourceList不为空,说明是镀后检验或者镀后验收这类跨作业中心的工艺
- if(CollectionUtils.isNotEmpty(personResourceList)){
- //剔除掉personResourceList中isUsed=1之前的数据,isUsed=1说明这些时间被占用了
- *//* int isUsedIndex = -1;
- for(int m=0;m {
@@ -897,6 +788,18 @@ public class WorkOrderServiceImpl extends BaseServiceImpl Objects.isNull(item.getStartTime())
+ && Objects.isNull(item.getEndTime()));
+ if(isEmpty){
+ //上一道工序结束时间
+ LocalDateTime prevProcessEnd = LocalDateTime.now();
+ for(int i=0;i list){
+ //相同零件号判断键位、生产厂家、检验编号、生产标识
+ Map> map = list.stream().collect(Collectors.groupingBy(YieldOrderEntity::getPartCode));
+ for(Map.Entry> entry : map.entrySet()){
+ List list1 = entry.getValue();
+ if(list1.size() > 1){
+
+
+ }
+ }
+ //不同零件号判断工艺
+ }
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/YieldOrderServiceImpl.java
index 24fa7634..e0e33f12 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/YieldOrderServiceImpl.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/YieldOrderServiceImpl.java
@@ -25,12 +25,23 @@
*/
package org.springblade.scheduling.scheduling.service.impl;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
+import org.springblade.scheduling.scheduling.entity.TeamSetEntity;
+import org.springblade.scheduling.scheduling.entity.WorkOrderEntity;
import org.springblade.scheduling.scheduling.entity.YieldOrderEntity;
+import org.springblade.scheduling.scheduling.mapper.TeamSetMapper;
+import org.springblade.scheduling.scheduling.mapper.WorkOrderMapper;
+import org.springblade.scheduling.scheduling.service.IWorkOrderService;
import org.springblade.scheduling.scheduling.vo.YieldOrderVO;
import org.springblade.scheduling.scheduling.excel.YieldOrderExcel;
import org.springblade.scheduling.scheduling.mapper.YieldOrderMapper;
import org.springblade.scheduling.scheduling.service.IYieldOrderService;
+import org.springblade.system.cache.UserCache;
+import org.springblade.system.pojo.entity.User;
+import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -44,13 +55,22 @@ import java.util.List;
* @since 2025-11-28
*/
@Service
+@RequiredArgsConstructor
public class YieldOrderServiceImpl extends BaseServiceImpl implements IYieldOrderService {
+ private final TeamSetMapper teamSetMapper;
@Override
public IPage selectYieldOrderPage(IPage page, YieldOrderVO yieldOrder) {
List list = baseMapper.selectYieldOrderPage(page, yieldOrder);
for(YieldOrderVO vo : list){
vo.setPriorityApsStr(YieldOrderEnum.getName(vo.getPriorityAps()));
+ List teamSetList = teamSetMapper.selectList(Wrappers.lambdaQuery().eq(TeamSetEntity::getWcId,vo.getWorkCenterId()));
+ if(CollectionUtils.isNotEmpty(teamSetList)){
+ User userInfo = UserCache.getUser(teamSetList.get(0).getDispatcher());
+ if(userInfo != null){
+ vo.setDispatcher(userInfo.getRealName());
+ }
+ }
}
return page.setRecords(list);
}
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/YieldOrderVO.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/YieldOrderVO.java
index 068e3d0c..3de8cfc9 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/YieldOrderVO.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/YieldOrderVO.java
@@ -49,4 +49,13 @@ public class YieldOrderVO extends YieldOrderEntity {
*/
private String priorityApsStr;
+ /**
+ * 调度员
+ */
+ private String dispatcher;
+
+ private String startTime;
+
+ private String endTime;
+
}