From b28bee39163a4eb75c5425cb34917f24815b40c4 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Wed, 27 May 2026 15:38:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/PartRelationEntity.java | 6 + .../pojo/entity/WorkPlanEntity.java | 12 + .../scheduling/mapper/EquipAbilityMapper.xml | 3 + .../impl/EquipResourceServiceImpl.java | 169 +++++----- .../service/impl/WorkOrderServiceImpl.java | 288 +++++++++++++----- 5 files changed, 308 insertions(+), 170 deletions(-) diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java index d702b844b..c3e39c66a 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java @@ -69,4 +69,10 @@ public class PartRelationEntity extends BaseEntity { @Schema(description = "子件号") private String childPartCode; + /** + * 定额 + */ + @Schema(description = "定额") + private Double quota; + } diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java index 717289735..0a818b71c 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java @@ -273,6 +273,18 @@ public class WorkPlanEntity extends BaseEntity { */ private String factTeamMembers; + /** + * 额定工时 + */ + private Double standardTime; + /** + * 准备时间 + */ + private Double prepareTime; + /** + * 工时类型 0-按件 1-按订单 + */ + private String hourType; } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipAbilityMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipAbilityMapper.xml index 54aef2853..02bd85bb1 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipAbilityMapper.xml +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipAbilityMapper.xml @@ -37,6 +37,9 @@ and equip_code = #{param2.equipCode} + + and equip_name LIKE CONCAT('%', CONCAT(#{param2.equipName}, '%')) + and process_id = #{param2.processId} 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 086f8f57d..ebdaf45a8 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 @@ -115,6 +115,20 @@ public class EquipResourceServiceImpl extends BaseServiceImpl wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(EquipResourceEntity::getWorkCenterId,entity.getWorkCenterId()) + .eq(EquipResourceEntity::getCraftId,entity.getCraftId()) + .eq(EquipResourceEntity::getEquipCode,entity.getEquipCode()) + .eq(EquipResourceEntity::getDateTime,today); + if(entity.getProcessId() != null){ + wrapper2.eq(EquipResourceEntity::getProcessId,entity.getProcessId()); + } + List list = this.list(wrapper2); + if(CollectionUtils.isNotEmpty(list)){ + list.forEach(item -> baseMapper.deleteById(item.getId())); + } + } generateData(today,entity); } } @@ -125,95 +139,23 @@ public class EquipResourceServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.isNotNull(EquipAbilityEntity::getStandardTime); - if(equipAbility.getWorkCenterId() != null){ - wrapper.eq(EquipAbilityEntity::getWorkCenterId,equipAbility.getWorkCenterId()); - } - if(equipAbility.getCraftId() != null){ - wrapper.eq(EquipAbilityEntity::getCraftId,equipAbility.getCraftId()); - } - if(equipAbility.getProcessId() != null){ - wrapper.eq(EquipAbilityEntity::getProcessId,equipAbility.getProcessId()); - } - if(StringUtils.isNotBlank(equipAbility.getEquipCode())){ - wrapper.eq(EquipAbilityEntity::getEquipCode,equipAbility.getEquipCode()); - } - List equipAbilityList = equipAbilityService.list(wrapper); - if(CollectionUtils.isNotEmpty(equipAbilityList)){ - if(equipAbility.getWorkCenterId() != null && equipAbility.getCraftId() != null && StringUtils.isNotBlank(equipAbility.getEquipCode())){ - LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(EquipResourceEntity::getWorkCenterId,equipAbility.getWorkCenterId()) - .eq(EquipResourceEntity::getCraftId,equipAbility.getCraftId()) - .eq(EquipResourceEntity::getEquipCode,equipAbility.getEquipCode()) - .eq(EquipResourceEntity::getDateTime,day); - if(equipAbility.getProcessId() != null){ - wrapper2.eq(EquipResourceEntity::getProcessId,equipAbility.getProcessId()); - } - List list = this.list(wrapper2); - if(CollectionUtils.isNotEmpty(list)){ - list.forEach(item -> baseMapper.deleteById(item.getId())); - } - } - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); - DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); - LocalDate targetDate = LocalDate.parse(day, dateFormatter); - LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT); - //获取 - List> teamIdList = baseMapper.selectTeamByWorkCenter(equipAbility.getWorkCenterId()); - int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟 - int totalMinutes = 24 * 60; // 一天总分钟数 - int totalCount = totalMinutes / interval; // 生成条数 - List resourceList = new ArrayList<>(); - for (int i = 0; i < totalCount; i++) { - if(equipAbility.getPartType() != 0){ - List voList = JsonUtil.readValue(equipAbility.getStandardProcessAbility(), new TypeReference>() {}); - for(EquipAbilityVO vo : voList){ - LocalDateTime startTime = startOfDay.plusMinutes(i * interval); - //0-产线设备 1-普通设备 - LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue()); - EquipResourceEntity equipResource = new EquipResourceEntity(); - equipResource.setDateTime(day); - equipResource.setEquipCode(equipAbility.getEquipCode()); - equipResource.setEquipName(equipAbility.getEquipName()); - equipResource.setCraftId(equipAbility.getCraftId().toString()); - equipResource.setCraftName(equipAbility.getCraftName()); - equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter)); - equipResource.setTotalCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility()))); - equipResource.setRestCapacity(BigDecimal.valueOf(Integer.parseInt(vo.getStandardProcessAbility()))); - equipResource.setStartTime(startTime); - equipResource.setEndTime(endTime); - equipResource.setEquipOrder(equipAbility.getEquipOrder()); - equipResource.setStandardTime(equipAbility.getStandardTime()); - equipResource.setIsUsed("0"); - equipResource.setEquipType(equipAbility.getEquipType()); - equipResource.setWorkCenterId(equipAbility.getWorkCenterId()); - equipResource.setProcessId(equipAbility.getProcessId()); - equipResource.setProcessName(equipAbility.getProcessName()); - equipResource.setStartNum(vo.getStartNum()); - equipResource.setEndNum(vo.getEndNum()); - - - Long teamId = null; - for(Map map : teamIdList){ - - LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); - LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); - - if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){ - teamId = Long.parseLong(map.get("teamId").toString()); - } - - } - equipResource.setTeamId(teamId); - resourceList.add(equipResource); - - } - }else{ + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + LocalDate targetDate = LocalDate.parse(day, dateFormatter); + LocalDateTime startOfDay = LocalDateTime.of(targetDate, LocalTime.MIDNIGHT); + //获取 + List> teamIdList = baseMapper.selectTeamByWorkCenter(equipAbility.getWorkCenterId()); + int interval = equipAbility.getInterval() == null ? 60 : Integer.parseInt(equipAbility.getInterval().toString()); // 默认60分钟 + int totalMinutes = 24 * 60; // 一天总分钟数 + int totalCount = totalMinutes / interval; // 生成条数 + List resourceList = new ArrayList<>(); + for (int i = 0; i < totalCount; i++) { + if(equipAbility.getPartType() != 0){ + List voList = JsonUtil.readValue(equipAbility.getStandardProcessAbility(), new TypeReference>() {}); + for(EquipAbilityVO vo : voList){ LocalDateTime startTime = startOfDay.plusMinutes(i * interval); + //0-产线设备 1-普通设备 LocalDateTime endTime = startTime.plusMinutes(equipAbility.getStandardTime().longValue()); EquipResourceEntity equipResource = new EquipResourceEntity(); equipResource.setDateTime(day); @@ -222,8 +164,8 @@ public class EquipResourceServiceImpl extends BaseServiceImpl map : teamIdList){ + LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); @@ -246,13 +192,48 @@ public class EquipResourceServiceImpl extends BaseServiceImpl map : teamIdList){ + LocalDateTime teamStartTime = LocalDateTime.parse(day + ' '+ map.get("startTime").toString(), dateTimeFormatter); + LocalDateTime teamEndTime = LocalDateTime.parse(day + ' '+ map.get("endTime").toString(), dateTimeFormatter); + + if((startTime.compareTo(teamStartTime) >=0 && endTime.compareTo(teamEndTime) <= 0) || (startTime.compareTo(teamStartTime) >=0 && startTime.compareTo(teamEndTime) <0)){ + teamId = Long.parseLong(map.get("teamId").toString()); + } + } + equipResource.setTeamId(teamId); + resourceList.add(equipResource); } - if(CollectionUtils.isNotEmpty(resourceList)){ - this.saveBatch(resourceList); - } + + + } + if(CollectionUtils.isNotEmpty(resourceList)){ + this.saveBatch(resourceList); } } } 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 8a63bbd4a..c7dc20c00 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 @@ -49,6 +49,7 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.desk.dashboard.constant.DsPartConstant; import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.produce.feign.IDisTaskingClient; import org.springblade.scheduling.pojo.entity.*; import org.springblade.scheduling.pojo.enums.WorkOrderEnum; import org.springblade.scheduling.pojo.vo.WorkOrderVO; @@ -111,6 +112,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().eq(DsPartVersionEntity::getPartCode,order.getPartCode()).eq(DsPartVersionEntity::getPartVersion,order.getPartVersion())); if(partVersion == null){ + errorInfo.append("订单:"+order.getYoCode()+"未查询到零件号:" + order.getPartCode() +"的版本号:"+order.getPartVersion()+"的对应信息;"); order.setErrorInfo("订单:"+order.getYoCode()+"未查询到零件号:" + order.getPartCode() +"的版本号:"+order.getPartVersion()+"的对应信息"); order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); yieldOrderService.updateById(order); @@ -483,7 +487,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().eq(WorkOrderEntity::getYoId,order.getId())); - List oldWorkPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId,oldWorkOrder.getId())); + //把加工班组为空的删掉 + List emptyWorkPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId,oldWorkOrder.getId()).isNull(WorkPlanEntity::getMakeTeam).isNull(WorkPlanEntity::getFactStartTime)); + List ids = emptyWorkPlanList.stream().map(BaseEntity::getId).collect(Collectors.toList()); + workPlanService.deleteLogic(ids); + //查询已经加工完的 + List oldWorkPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId,oldWorkOrder.getId()).orderByAsc(WorkPlanEntity::getOrders)); List ppsIds = oldWorkPlanList.stream().map(WorkPlanEntity::getPpsId).collect(Collectors.toList()); craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).ne(YieldOrderCraftEntity::getCaId, 27).notIn(YieldOrderCraftEntity::getPpsId,ppsIds).orderByAsc(YieldOrderCraftEntity::getProcessNo)); } @@ -491,16 +500,17 @@ public class WorkOrderServiceImpl extends BaseServiceImpl craftList1 = craftList.stream().filter(item -> item.getIsOutsource() == false).collect(Collectors.toList()); List workCenterList = craftList1.stream().filter(item -> item.getWorkCenterId() != null).map(YieldOrderCraftEntity::getWorkCenterId).collect(Collectors.toList()); if (workCenterList.size() != craftList1.size()) { - String errorInfo = craftList1.stream().filter(item -> item.getWorkCenterId() == null) + String errorInfo2 = craftList1.stream().filter(item -> item.getWorkCenterId() == null) .map(YieldOrderCraftEntity::getPpsId) .filter(ppsId -> ppsId != null) .map(ppsId -> processMap.get(ppsId)) .filter(chineseName -> chineseName != null && !chineseName.isEmpty()) .collect(Collectors.joining(",")); - order.setErrorInfo("工序信息不完整,工序:" + errorInfo + "未匹配作业中心"); - order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); - yieldOrderService.updateById(order); - continue; + errorInfo.append("工序信息不完整,工序:" + errorInfo2 + "未匹配作业中心;"); +// order.setErrorInfo("工序信息不完整,工序:" + errorInfo + "未匹配作业中心"); +// order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); +// yieldOrderService.updateById(order); +// continue; } //上一道工序结束时间 @@ -510,10 +520,29 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0 ? prevProcessEnd : workPlanList.get(workPlanList.size() - 1).getPlanEndTime(); } - + boolean isContainsOut = false; for (int i = 0; i < craftList.size(); i++) { YieldOrderCraftEntity craft = craftList.get(i); log.info("当前订单是:" + order.getId() + ",工序是:" + craft.getId()); + //如果上一道工序是外协,那么后面所有工序不需要排班组、时间,只放置空workPlan数据 + if(isContainsOut){ + WorkPlanEntity workPlan = new WorkPlanEntity(); + workPlan.setWoId(order.getId()); + workPlan.setCaId(craft.getCaId()); + workPlan.setPpsId(craft.getPpsId()); + workPlan.setWorkQty(0); + workPlan.setWorkCenterId(craft.getWorkCenterId()); + workPlan.setOrders(craft.getProcessNo()); + workPlan.setOem("0"); + workPlan.setTestQty(0); + workPlan.setQualifiedQty(0); + workPlan.setUnqualifiedQty(0); + workPlan.setScrapQty(0); + workPlan.setOcId(craft.getOcId()); + workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId())); + workPlanList.add(workPlan); + continue; + } //如果是外协的话,去查询外协工序时间,若未查询到先默认3天,跳过该工序的排产 if (craft.getIsOutsource()) { OutsourceProcessEntity outsourceProcess = outsourceProcessService.getOne(Wrappers.lambdaQuery().eq(OutsourceProcessEntity::getProcessId, craft.getPpsId())); @@ -533,7 +562,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()).eq(EquipAbilityEntity::getProcessId,craft.getPpsId())); } if (CollectionUtils.isEmpty(equipAbilityList)) { - order.setErrorInfo("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力"); - order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); - yieldOrderService.updateById(order); + errorInfo.append("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力;"); +// order.setErrorInfo("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力"); +// order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); +// yieldOrderService.updateById(order); isSchecuding = false; - break; + continue; } Map> equipAbilityMap = equipAbilityList.stream().collect(Collectors.groupingBy(EquipAbilityEntity::getEquipOrder)); @@ -621,7 +651,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl resourceList = entry1.getValue(); for (EquipResourceEntity equipResource : resourceList) { + Map hourMap = new HashMap<>(); if(equipResource.getStartTime().compareTo(prevProcessEnd) <0){ continue; } @@ -685,13 +716,17 @@ public class WorkOrderServiceImpl extends BaseServiceImpl hourMap = new HashMap<>(); Double totalTime = 0.0; PersonAbilityEntity ability = personAbilityMap.get(craft.getWorkCenterId() + "-" + craft.getCaId() + "-" + craft.getPpsId()); log.info("人员能力是:" + craft.getWorkCenterId() + "-" + craft.getCaId() + "-" + craft.getPpsId()); + //如果没有配置相应工艺能力的人员能力,就查一下有没有配置公共的能力 + if(ability == null){ + ability = personAbilityService.getOne(Wrappers.lambdaQuery().eq(PersonAbilityEntity::getWorkCenterId,craft.getWorkCenterId()) + .eq(PersonAbilityEntity::getProcessId,craft.getPpsId()) + .isNull(PersonAbilityEntity::getCraftId)); + } //镀后检验和镀后接收先按半小时计算 if (ability != null) { if ("镀后检验".equals(ability.getProcessName()) || "镀后接收".equals(ability.getProcessName())) { @@ -795,6 +837,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); @@ -839,11 +888,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0){ + order.setErrorInfo(errorInfo.toString()); + order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); + yieldOrderService.updateById(order); + } continue; } @@ -937,6 +997,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().eq(WorkOrderEntity::getYoId,order.getId())); workOrder.setPlanEndDate(workPlanList.get(workPlanList.size() - 1).getPlanEndTime() == null ? null : workPlanList.get(workPlanList.size() - 1).getPlanEndTime().truncatedTo(ChronoUnit.DAYS).toString().substring(0, 10)); @@ -980,7 +1042,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> dealCommonCraftOrders(Map mainProcessMap) { - log.info("处理前置公共工序开始!"); + log.info("处理前置公共工序开始:" + DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); List commonCraftOrderList = yieldOrderService.selectCommonCraftOrderList(); Map> planMap = new HashMap<>(); if (CollectionUtils.isNotEmpty(commonCraftOrderList)) { @@ -1389,7 +1451,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0) { + Map hourMap = new HashMap<>(); //生成车间订单 WorkPlanEntity workPlan = new WorkPlanEntity(); workPlan.setPlanStartTime(equipResource.getStartTime()); @@ -1797,12 +1860,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHours(Integer qty,YieldOrderCraftEntity craft,PartEntity part){ + Map hourMap = new HashMap<>(); + Double standardTime = 0.0; + Double prepareTime = 0.0; + String hourType = "0"; Double personTime = 0.0; List personAbilityList = personAbilityService.list(Wrappers.lambdaQuery() .eq(PersonAbilityEntity::getWorkCenterId,craft.getWorkCenterId()) @@ -1986,6 +2057,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl vo.getStartNum() && part.getExternalDiameter() <= vo.getEndNum()){ personTime = Double.parseDouble(vo.getStandardTime()) * qty + personAbility.getPrepareTime().doubleValue(); + standardTime = Double.valueOf(vo.getStandardTime()); + prepareTime = personAbility.getPrepareTime().doubleValue(); + hourType = personAbility.getType(); break; } } @@ -1999,6 +2073,9 @@ public class WorkOrderServiceImpl extends BaseServiceImplvo.getStartNum() && part.getBlbDiameter() <= vo.getEndNum()){ personTime = Double.parseDouble(vo.getStandardTime()) * qty + personAbility.getPrepareTime().doubleValue(); + standardTime = Double.valueOf(vo.getStandardTime()); + prepareTime = personAbility.getPrepareTime().doubleValue(); + hourType = personAbility.getType(); break; } } @@ -2023,6 +2100,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl vo.getStartNum() && quota <= vo.getEndNum()){ personTime = Double.parseDouble(vo.getStandardTime()) * qty + personAbility.getPrepareTime().doubleValue(); + standardTime = Double.valueOf(vo.getStandardTime()); + prepareTime = personAbility.getPrepareTime().doubleValue(); + hourType = personAbility.getType(); break; } } @@ -2036,14 +2116,22 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByBlfjzz(Integer qty,PartEntity part){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null) { List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); @@ -2051,13 +2139,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl childPartList = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds)); List partCz = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_CZ.equals(item.getSinTerType())).collect(Collectors.toList()); List partBlb = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_BLB.equals(item.getSinTerType())).collect(Collectors.toList()); + List czIds = partCz.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List czPartRelationList = partRelationList.stream().filter(czPart ->czIds.contains(czPart.getChildPartId())).collect(Collectors.toList()); boolean hb = false; for (PartEntity part1 : partCz) { hb = part1.getPartName().contains("焊杯"); } - double sumOfQuota = partCz.stream() - .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + double sumOfQuota = czPartRelationList.stream() + .mapToDouble(PartRelationEntity::getQuota) // 调用 getQuota() 方法 .sum(); int x = partCz.size(); int y = partBlb.size(); @@ -2138,11 +2228,16 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByXsplbh(Integer qty,PartEntity part){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null && part.getBlbDiameter() != null) { Double n = part.getBlbDiameter(); @@ -2167,30 +2262,38 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByBlfjxm(Integer qty,PartEntity part){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null) { List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); List childPartList = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds)); + Map map = partRelationList.stream().collect(Collectors.toMap(PartRelationEntity::getChildPartId,PartRelationEntity::getQuota)); if (childPartList != null && childPartList.size() > 0) { double n = 0; boolean pzm = false; for (PartEntity childPart : childPartList) { if (childPart.getPartCode().contains("21E8-716")) { - n = n + childPart.getQuota(); + n = n + map.get(childPart.getId()); } pzm = childPart.getSinTerType().equals(DsPartConstant.SIN_TER_TYPE_KT) && childPart.getConfigCode().equals("M4"); } if (n <= 2) { List partCz = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_CZ.equals(item.getSinTerType())).collect(Collectors.toList()); + List czIds = partCz.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List czPartRelationList = partRelationList.stream().filter(czPart ->czIds.contains(czPart.getChildPartId())).collect(Collectors.toList()); if (partCz != null && partCz.size() > 0) { - double sumOfQuota = partCz.stream() - .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + double sumOfQuota = czPartRelationList.stream() + .mapToDouble(PartRelationEntity::getQuota) // 调用 getQuota() 方法 .sum(); double y = 0; if (sumOfQuota <= 5) { @@ -2216,9 +2319,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 2) { List partCz = childPartList.stream().filter(item -> DsPartConstant.SIN_TER_TYPE_CZ.equals(item.getSinTerType())).collect(Collectors.toList()); + List czIds = partCz.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List czPartRelationList = partRelationList.stream().filter(czPart ->czIds.contains(czPart.getChildPartId())).collect(Collectors.toList()); if (partCz != null && partCz.size() > 0) { - double sumOfQuota = partCz.stream() - .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + double sumOfQuota = czPartRelationList.stream() + .mapToDouble(PartRelationEntity::getQuota) // 调用 getQuota() 方法 .sum(); double y = 0; if (sumOfQuota <= 5) { @@ -2252,11 +2357,16 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByBlfjgj(Integer qty,PartEntity part){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null&&part.getExternalDiameter() != null) { Double n = part.getExternalDiameter(); @@ -2295,23 +2405,30 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByZklgj(Integer qty,PartEntity part){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null && part.getExternalDiameter() != null) { List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); List partCz = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds).eq(PartEntity::getSinTerType,DsPartConstant.SIN_TER_TYPE_CZ)); + List czIds = partCz.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List czPartRelationList = partRelationList.stream().filter(czPart ->czIds.contains(czPart.getChildPartId())).collect(Collectors.toList()); boolean hb = false; for (PartEntity childPart : partCz) { hb = childPart.getPartName().contains("双头"); } Double n = part.getExternalDiameter(); - double sumOfQuota = partCz.stream() - .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + double sumOfQuota = czPartRelationList.stream() + .mapToDouble(PartRelationEntity::getQuota) // 调用 getQuota() 方法 .sum(); if (!hb) { if (n <= 15) { @@ -2349,20 +2466,27 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByZz(Integer qty,PartEntity part,String processName){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null) { List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); List partCz = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds).eq(PartEntity::getSinTerType,DsPartConstant.SIN_TER_TYPE_CZ)); + Map map = partRelationList.stream().collect(Collectors.toMap(PartRelationEntity::getChildPartId,PartRelationEntity::getQuota)); + if (partCz != null && partCz.size() > 0) { double n = 0; for (PartEntity childPart : partCz) { if (childPart.getPartCode().contains("21ET8")) { - n = n + childPart.getQuota(); + n = n + map.get(childPart.getId()); } } if (processName.equals("单侧折针")) { @@ -2372,24 +2496,36 @@ public class WorkOrderServiceImpl extends BaseServiceImpl calPersonHoursByBlfjddsg(Integer qty,PartEntity part){ + Map hourMap = new HashMap<>(); Double result = 0.0; if (part != null && part.getId() != null) { List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); List childIds = partRelationList.stream().map(PartRelationEntity::getChildPartId).collect(Collectors.toList()); List partCz = partService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childIds).eq(PartEntity::getSinTerType,DsPartConstant.SIN_TER_TYPE_CZ)); + List czIds = partCz.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List czPartRelationList = partRelationList.stream().filter(czPart ->czIds.contains(czPart.getChildPartId())).collect(Collectors.toList()); + if (partCz != null && partCz.size() > 0) { - double sumOfQuota = partCz.stream() - .mapToDouble(PartEntity::getQuota) // 调用 getQuota() 方法 + double sumOfQuota = czPartRelationList.stream() + .mapToDouble(PartRelationEntity::getQuota) // 调用 getQuota() 方法 .sum(); result = (38 + 3 * sumOfQuota) / 60; } } - return Math.ceil(result * qty + 2); + hourMap.put("standardTime",result); + hourMap.put("preareTime",3); + hourMap.put("hourType","0"); + hourMap.put("totalTime",Math.ceil(result * qty + 3)); + return hourMap; } public static List mergeYieldOrderList(List originalList) {