diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/WorkCenter.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/WorkCenter.java index 1e8cb048..d8bb2e31 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/WorkCenter.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/WorkCenter.java @@ -113,6 +113,19 @@ public class WorkCenter extends BaseEntity { */ public static final String COL_REMARKS = "REMARKS"; + /** + * 正常 + */ + public static Integer LIMIT_TYPE_NORMAL = 0; + /** + * 优先 + */ + public static Integer LIMIT_TYPE_PRIOR = 1; + /** + * 必须 + */ + public static Integer LIMIT_TYPE_MUST = 2; + /** * 编码 */ @@ -224,4 +237,7 @@ public class WorkCenter extends BaseEntity { @TableField(exist = false) private List crafs; + @TableField(exist = false) + private Integer limitType; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java index f4e41b53..8c3f0d88 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IWorkCenterService.java @@ -9,7 +9,6 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.basic.excel.WorkCenterExcel; import org.springblade.desk.basic.pojo.entity.WorkCenter; import org.springblade.desk.basic.pojo.vo.WorkCenterVO; -import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity; import java.util.List; import java.util.Map; @@ -50,7 +49,7 @@ public interface IWorkCenterService extends BaseService { * @param rxlSpace 是否需要特殊分派 null :不需要 true:需要 * @return */ - Map selectByAbility(Long abilityId, + Map selectByAbility(Long abilityId, Double ypQty, Double ypArea, String partCode, @@ -64,5 +63,5 @@ public interface IWorkCenterService extends BaseService { * @param workCenterId * @return BsWorkCenterEntity 对象 */ - BsWorkCenterEntity getWorkCenter(Long workCenterId); + WorkCenter getWorkCenter(Long workCenterId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemServiceImpl.java index 898547f7..96b38cf3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemServiceImpl.java @@ -138,7 +138,10 @@ public class OemServiceImpl extends BaseServiceImpl implements I // 如果返回值是true,则代表供应商存在键位零件或者相似,直接跳过此供应商 // if (similarPartsService.checkKeyPosition(yieldOrder, null, oem.getId())) // continue; - rtnLst.add(oem.getId()); + if(oem != null){ + rtnLst.add(oem.getId()); + } + } return rtnLst; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java index f77680e1..c417338e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java @@ -12,7 +12,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.apache.commons.lang3.StringUtils; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.tool.utils.BeanUtil; import org.springblade.desk.basic.excel.WorkCenterExcel; import org.springblade.desk.basic.mapper.WorkCenterMapper; import org.springblade.desk.basic.pojo.entity.BatConfig; @@ -21,7 +20,6 @@ import org.springblade.desk.basic.pojo.vo.WorkCenterVO; import org.springblade.desk.basic.service.IBatConfigService; import org.springblade.desk.basic.service.IOemCraftAbilityService; import org.springblade.desk.basic.service.IWorkCenterService; -import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity; import org.springframework.stereotype.Service; import java.util.LinkedHashMap; @@ -60,7 +58,7 @@ public class WorkCenterServiceImpl extends BaseServiceImpl selectByAbility(Long abilityId, Double ypQty, Double ypArea, String partCode, String PrimaryCraft, Integer yieldType, Boolean rxlSpace) { + public Map selectByAbility(Long abilityId, Double ypQty, Double ypArea, String partCode, String PrimaryCraft, Integer yieldType, Boolean rxlSpace) { List workCenterList = this.list(Wrappers.lambdaQuery().like(WorkCenter::getCraftAbilityId,abilityId)); if(CollectionUtils.isEmpty(workCenterList)){ @@ -68,7 +66,7 @@ public class WorkCenterServiceImpl extends BaseServiceImpl wcMap = new LinkedHashMap<>(); + Map wcMap = new LinkedHashMap<>(); String part = ""; //如果判断是否包含. @@ -112,15 +110,14 @@ public class WorkCenterServiceImpl extends BaseServiceImpl workCenterMap = workCenterService.selectByAbility(hostAbilityId, yieldOrder.getYpQty(), yieldOrder.getYpArea(), yieldOrder.getPartCode(), yieldOrder.getPrimaryCraft(), yieldOrder.getYieldType(), rxlSpace); + Map workCenterMap = workCenterService.selectByAbility(hostAbilityId, yieldOrder.getYpQty(), yieldOrder.getYpArea(), yieldOrder.getPartCode(), yieldOrder.getPrimaryCraft(), yieldOrder.getYieldType(), rxlSpace); //获取可以做此主工艺能力的外协商集合 List oemList = oemService.selectByAbility(hostAbilityId, yieldOrder.getYpQty(), yieldOrder.getYpArea(), yieldOrder.getPartCode(), yieldOrder.getPrimaryCraft(), yieldOrder.getYieldType(), yieldOrder.getPlate(), rxlSpace); @@ -123,7 +125,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl wcMap, YieldOrder yieldOrder, Integer limitType) { + private WorkCenter inPlantDistribution(Long hostCaId, Map wcMap, YieldOrder yieldOrder, Integer limitType) { //没有工艺能力的对应作业中心,直接分派厂外 if (wcMap == null || wcMap.size() == 0) { return null; @@ -290,7 +292,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl wcList, YieldOrder yieldOrder, Integer limitType) { + private WorkCenter priorityInPlantDistribution(Long hostCaId, List wcList, YieldOrder yieldOrder, Integer limitType) { //没有工艺能力的对应作业中心,直接分派厂外 if (wcList == null || wcList.size() == 0) { return null; } //作业中心 - BsWorkCenterEntity workCenter = null; + WorkCenter workCenter = null; //如果找到合适的作业中心直接分派,反之如果未找到合适的作业中心(bool 是true的情况下强制厂内,bool是false是优先厂内,不满足的情况下直接返回空) YieldOrderAssignDaily dayAbilityAssignment = dailyAssignService.findMinNum(hostCaId, wcList); if (Func.isEmpty(dayAbilityAssignment)) { @@ -372,17 +374,17 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl bindWorkCenter(Long workCenterId, Map workCenterMap, Long craftAbilityId, + private List bindWorkCenter(Long workCenterId, Map workCenterMap, Long craftAbilityId, Map> craftAbilityMap, Set craftKeys, - YieldOrder yieldOrder, Boolean factor) { + YieldOrder yieldOrder, Boolean factor) throws BusinessException { List orderCrafts = new ArrayList<>(); // 开始循环生产订单中组合的工艺能力key集合, 主工艺能力之前的全部分配到此作业中心 for (Long craftId : craftKeys) { //验证工艺能力 - BsWorkCenterEntity workCenter = workCenterMap.get(craftId); + /*WorkCenter workCenter = workCenterService.getOne(Wrappers.lambdaQuery().eq(BaseEntity::getId,workCenterId).like(WorkCenter::getCraftAbilityId,craftId)); if (workCenter == null) { break; - } + }*/ orderCrafts.addAll(craftAbilityMap.get(craftId)); } @@ -398,8 +400,21 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpllambdaQuery().like(WorkCenter::getCraftAbilityId,orderCraft.getCaId())); + } + + if(centerId != null){ + orderCraft.setWorkCenterId(centerId); + }else{ + if(workCenter == null){ + throw new BusinessException("工艺" + orderCraft.getCaId() + "未查询到对应作业中心"); + } + orderCraft.setWorkCenterId(workCenter.getId()); + } orderCraft.setIsOutsource(Boolean.FALSE); } //factor等于null代表是整体,有值时代表是单工序 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderDailyAssignImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderDailyAssignImpl.java index 6b3423c7..938d301a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderDailyAssignImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderDailyAssignImpl.java @@ -1,6 +1,7 @@ package org.springblade.desk.order.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.springblade.common.constant.CommonConstant; @@ -14,6 +15,8 @@ import org.springblade.desk.order.service.IYieldOrderDailyAssignService; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.List; /** @@ -71,15 +74,22 @@ public class YieldOrderDailyAssignImpl extends BaseServiceImpl workCenterIdList) { + LocalDate today = LocalDate.now(); + LocalDateTime startOfDay = today.atStartOfDay(); + LocalDateTime endOfDay = today.atTime(LocalTime.MAX); LambdaQueryWrapper wrapper = Wrappers.query().lambda() .eq(YieldOrderAssignDaily::getIsDeleted, CommonConstant.BOOLEAN_FALSE) .eq(YieldOrderAssignDaily::getCraftAbilityId, abilityId) - .eq(YieldOrderAssignDaily::getCreateTime, DateUtil.toDate(LocalDate.now())); + .between(YieldOrderAssignDaily::getCreateTime, + DateUtil.toDate(startOfDay), + DateUtil.toDate(endOfDay)); if (Func.isNotEmpty(workCenterIdList)) { wrapper.in(YieldOrderAssignDaily::getWorkCenterId, workCenterIdList); } - wrapper.orderByAsc(YieldOrderAssignDaily::getNum).last("LIMIT 1"); - - return baseMapper.selectOne(wrapper); + List list = baseMapper.selectList(wrapper); + if(CollectionUtils.isEmpty(list)){ + return null; + } + return list.get(0); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 06b2ab29..7cc8cfbf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -418,12 +418,12 @@ public class YieldOrderServiceImpl extends BaseServiceImpl