功能修改-sjx

liweidong
sunjianxi 2 weeks ago
parent ce40ecc911
commit 5e6cb1b1d9
  1. 2
      blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java
  2. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipAbilityMapper.xml
  3. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
  4. 67
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -255,7 +255,7 @@ public class WorkPlanEntity extends BaseEntity {
* 占用设备资源ID * 占用设备资源ID
*/ */
@Schema(description = "占用设备资源ID") @Schema(description = "占用设备资源ID")
private Long equipResourceId; private String equipResourceId;
/** /**
* 占用人力资源ID * 占用人力资源ID

@ -37,6 +37,9 @@
<if test="param2.equipCode !=null and param2.equipCode !=''"> <if test="param2.equipCode !=null and param2.equipCode !=''">
and equip_code = #{param2.equipCode} and equip_code = #{param2.equipCode}
</if> </if>
<if test="param2.processId !=null">
and process_id = #{param2.processId}
</if>
</where> </where>
order by work_center_id,equip_name,equip_code,equip_type,update_time desc order by work_center_id,equip_name,equip_code,equip_type,update_time desc
</select> </select>

@ -175,7 +175,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
for(EquipAbilityVO vo : voList){ for(EquipAbilityVO vo : voList){
LocalDateTime startTime = startOfDay.plusMinutes(i * interval); LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
//0-产线设备 1-普通设备 //0-产线设备 1-普通设备
LocalDateTime endTime = startTime.plusMinutes("0".equals(equipAbility.getEquipType()) ? interval : equipAbility.getStandardTime().longValue()); LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue());
EquipResourceEntity equipResource = new EquipResourceEntity(); EquipResourceEntity equipResource = new EquipResourceEntity();
equipResource.setDateTime(day); equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode()); equipResource.setEquipCode(equipAbility.getEquipCode());
@ -215,7 +215,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
} }
}else{ }else{
LocalDateTime startTime = startOfDay.plusMinutes(i * interval); LocalDateTime startTime = startOfDay.plusMinutes(i * interval);
LocalDateTime endTime = startTime.plusMinutes("0".equals(equipAbility.getEquipType()) ? interval : equipAbility.getStandardTime().longValue()); LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue());
EquipResourceEntity equipResource = new EquipResourceEntity(); EquipResourceEntity equipResource = new EquipResourceEntity();
equipResource.setDateTime(day); equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode()); equipResource.setEquipCode(equipAbility.getEquipCode());

@ -61,6 +61,7 @@ import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import org.springblade.scheduling.scheduling.vo.WorkPlanVO; import org.springblade.scheduling.scheduling.vo.WorkPlanVO;
import org.springblade.wms.feign.StGlassCakeOutClient; import org.springblade.wms.feign.StGlassCakeOutClient;
import org.springblade.wms.pojo.dto.StGlassCakeOutDTO; import org.springblade.wms.pojo.dto.StGlassCakeOutDTO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -582,6 +583,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//匹配设备资源 //匹配设备资源
//获取下一个整数点 //获取下一个整数点
LocalDateTime dateTime = getNextIntegerTime(prevProcessEnd); LocalDateTime dateTime = getNextIntegerTime(prevProcessEnd);
List<WorkPlanEntity> processPlanList = new ArrayList<>();
for (Map.Entry<Integer, List<EquipAbilityEntity>> entry : equipAbilityMap.entrySet()) { for (Map.Entry<Integer, List<EquipAbilityEntity>> entry : equipAbilityMap.entrySet()) {
int partType = entry.getValue().get(0).getPartType(); int partType = entry.getValue().get(0).getPartType();
//根据时间点获取所有设备资源 //根据时间点获取所有设备资源
@ -701,8 +703,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime())); workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime()));
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlanList.add(workPlan); processPlanList.add(workPlan);
//更新剩余产能 //更新剩余产能
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity));
equipResource.setIsUsed("1"); equipResource.setIsUsed("1");
@ -749,6 +751,21 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} }
} }
if(CollectionUtils.isNotEmpty(processPlanList)){
WorkPlanEntity workPlan = new WorkPlanEntity();
BeanUtils.copyProperties(processPlanList.get(0),workPlan);
workPlan.setPlanStartTime(processPlanList.get(0).getPlanStartTime());
workPlan.setPlanEndTime(processPlanList.get(processPlanList.size()-1).getPlanEndTime());
String equipCode = processPlanList.stream().map(WorkPlanEntity::getEquipCode).collect(Collectors.joining(","));
String equipName = processPlanList.stream().map(WorkPlanEntity::getEquipName).collect(Collectors.joining(","));
String equipResourceId = processPlanList.stream().map(WorkPlanEntity::getEquipResourceId).map(String::valueOf).collect(Collectors.joining(","));
Double hourQuota = processPlanList.stream().mapToDouble(WorkPlanEntity::getHourQuota).sum();
workPlan.setEquipCode(equipCode);
workPlan.setEquipName(equipName);
workPlan.setEquipResourceId(equipResourceId);
workPlan.setHourQuota(hourQuota);
workPlanList.add(workPlan);
}
if (!isSchecuding) { if (!isSchecuding) {
break; break;
} }
@ -807,7 +824,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
.eq(PersonResourceEntity::getProcessId, craft.getPpsId()) .eq(PersonResourceEntity::getProcessId, craft.getPpsId())
.eq(PersonResourceEntity::getCraftId, craft.getCaId()) .eq(PersonResourceEntity::getCraftId, craft.getCaId())
.le(PersonResourceEntity::getStartTime, prevProcessEnd) .le(PersonResourceEntity::getStartTime, prevProcessEnd)
.ge(PersonResourceEntity::getEndTime, prevProcessEnd)); .orderByAsc(PersonResourceEntity::getDateTime,PersonResourceEntity::getStartTime));
if (CollectionUtils.isNotEmpty(personResourceList)) { if (CollectionUtils.isNotEmpty(personResourceList)) {
workPlan.setMakeTeam(personResourceList.get(0).getTeamId()); workPlan.setMakeTeam(personResourceList.get(0).getTeamId());
} }
@ -1334,7 +1351,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime())); workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime()));
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlanList.add(workPlan); workPlanList.add(workPlan);
break; break;
} }
@ -1425,16 +1442,17 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if (CollectionUtils.isNotEmpty(workPlanOldList)) { if (CollectionUtils.isNotEmpty(workPlanOldList)) {
//总生产量 //总生产量
BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty())); BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty()));
//可能有多个订单符合要求,按照车间订单、时间分组排序 for (WorkPlanEntity entry : workPlanOldList) {
Map<Long, List<WorkPlanEntity>> workPlanMap = workPlanOldList.stream().collect(Collectors.groupingBy(WorkPlanEntity::getWoId)); Long woId = entry.getWoId();
for (Map.Entry<Long, List<WorkPlanEntity>> entry : workPlanMap.entrySet()) {
Long woId = entry.getKey();
List<WorkPlanEntity> planList = entry.getValue();
Boolean isEnough = true; Boolean isEnough = true;
List<Long> resourceList = new ArrayList<>(); List<Long> resourceList = new ArrayList<>();
for (WorkPlanEntity workPlan : planList) { if (StringUtils.isNotEmpty(entry.getEquipResourceId())) {
if (workPlan.getEquipResourceId() != null) { List<Long> resourceIdList = Arrays.stream(entry.getEquipResourceId().split(","))
EquipResourceEntity equipResource = equipResourceService.getById(workPlan.getEquipResourceId()); .map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
for(Long resourceId : resourceIdList){
EquipResourceEntity equipResource = equipResourceService.getById(resourceId);
if(equipResource == null){ if(equipResource == null){
continue; continue;
} }
@ -1444,9 +1462,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
resourceList.clear(); resourceList.clear();
break; break;
} else { } else {
resourceList.add(workPlan.getEquipResourceId()); resourceList.add(resourceId);
} }
} }
} }
//如果产能满足,再判断是否满足同槽条件 //如果产能满足,再判断是否满足同槽条件
if (isEnough) { if (isEnough) {
@ -1512,6 +1531,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} }
if (isSameTrough2) { if (isSameTrough2) {
List<WorkPlanEntity> processPlanList = new ArrayList<>();
for(Long resourceId : resourceList){ for(Long resourceId : resourceList){
EquipResourceEntity equipResource = equipResourceService.getById(resourceId); EquipResourceEntity equipResource = equipResourceService.getById(resourceId);
//生成车间订单 //生成车间订单
@ -1537,13 +1557,28 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime())); workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime()));
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlanList.add(workPlan); processPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));
equipResourceService.updateById(equipResource); equipResourceService.updateById(equipResource);
isSameTrough = true; isSameTrough = true;
} }
if(CollectionUtils.isNotEmpty(processPlanList)){
WorkPlanEntity workPlan = new WorkPlanEntity();
BeanUtils.copyProperties(processPlanList.get(0),workPlan);
workPlan.setPlanStartTime(processPlanList.get(0).getPlanStartTime());
workPlan.setPlanEndTime(processPlanList.get(processPlanList.size()-1).getPlanEndTime());
String equipCode = processPlanList.stream().map(WorkPlanEntity::getEquipCode).collect(Collectors.joining(","));
String equipName = processPlanList.stream().map(WorkPlanEntity::getEquipName).collect(Collectors.joining(","));
String equipResourceId = processPlanList.stream().map(WorkPlanEntity::getEquipResourceId).map(String::valueOf).collect(Collectors.joining(","));
Double hourQuota = processPlanList.stream().mapToDouble(WorkPlanEntity::getHourQuota).sum();
workPlan.setEquipCode(equipCode);
workPlan.setEquipName(equipName);
workPlan.setEquipResourceId(equipResourceId);
workPlan.setHourQuota(hourQuota);
workPlanList.add(workPlan);
}
} }
} }
@ -1656,7 +1691,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime())); workPlan.setHourQuota((double)ChronoUnit.MINUTES.between(workPlan.getPlanStartTime(), workPlan.getPlanEndTime()));
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlanList.add(workPlan); workPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));

Loading…
Cancel
Save