|
|
|
|
@ -1,6 +1,5 @@ |
|
|
|
|
package org.springblade.desk.order.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
|
import cn.hutool.http.HttpUtil; |
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
|
@ -10,10 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import jakarta.annotation.Resource; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.ehcache.core.util.CollectionUtil; |
|
|
|
|
import org.springblade.common.constant.CommonConstant; |
|
|
|
|
import org.springblade.common.exception.BusinessException; |
|
|
|
|
import org.springblade.common.utils.StringPrefixUtils; |
|
|
|
|
@ -60,11 +57,9 @@ import org.springblade.desk.produce.pojo.entity.WorkOrder; |
|
|
|
|
import org.springblade.desk.produce.pojo.vo.SjCompleteVO; |
|
|
|
|
import org.springblade.erpdata.feign.IErpMesRbWoClient; |
|
|
|
|
import org.springblade.erpdata.feign.IErpYieldOrderClient; |
|
|
|
|
import org.springblade.scheduling.pojo.entity.PartRelationEntity; |
|
|
|
|
import org.springblade.scheduling.pojo.entity.QualityGradeEntity; |
|
|
|
|
import org.springblade.system.feign.IUserClient; |
|
|
|
|
import org.springblade.system.pojo.entity.User; |
|
|
|
|
import org.springblade.system.pojo.entity.UserInfo; |
|
|
|
|
import org.springblade.wms.feign.WmsTaskClient; |
|
|
|
|
import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO; |
|
|
|
|
import org.springblade.wms.pojo.entity.StGraphiteMoldOut; |
|
|
|
|
@ -102,8 +97,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
@Autowired |
|
|
|
|
private IDsPartService dsPartService; |
|
|
|
|
|
|
|
|
|
// @Autowired
|
|
|
|
|
// private IDsCraftService dsCraftService;
|
|
|
|
|
@Autowired |
|
|
|
|
private IBsProcessSetService processSetService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private IDsProcessService dsProcessService; |
|
|
|
|
@ -969,7 +964,29 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
// 根据生产订单,给各工序分派作业中心||外协
|
|
|
|
|
List<YieldOrderCraft> craftList = yieldOrderCraftService.listByYoId(yieldOrder.getId()); |
|
|
|
|
try { |
|
|
|
|
yieldOrderCraftService.automaticDispatch(craftList, yieldOrder, null, null); |
|
|
|
|
// 获取所有工序基础信息
|
|
|
|
|
List<Long> ppsIdSet = craftList.stream().map(YieldOrderCraft::getPpsId).filter(Objects::nonNull).toList(); |
|
|
|
|
List<BsProcessSetEntity> processSetList = processSetService.listByIds(ppsIdSet); |
|
|
|
|
Map<Long, BsProcessSetEntity> processSetMap = processSetList.stream().collect(Collectors.toMap(BsProcessSetEntity::getId, process -> process)); |
|
|
|
|
// 区分是否需要分派工序
|
|
|
|
|
List<YieldOrderCraft> dispatch = new ArrayList<>(); |
|
|
|
|
List<YieldOrderCraft> noDispatch = new ArrayList<>(); |
|
|
|
|
craftList.forEach(craft -> { |
|
|
|
|
BsProcessSetEntity processSet = processSetMap.get(craft.getPpsId()); |
|
|
|
|
if (processSet != null && "0".equals(processSet.getIsDispatch())) { |
|
|
|
|
dispatch.add(craft); |
|
|
|
|
} else { |
|
|
|
|
noDispatch.add(craft); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
// 按照工艺能力分组
|
|
|
|
|
Map<Long, List<YieldOrderCraft>> dispatchMap = dispatch.stream().collect(Collectors.groupingBy(YieldOrderCraft::getCaId)); |
|
|
|
|
// 将需要分派的工序全部分派作业中心或外协商,按照工艺能力循环处理
|
|
|
|
|
for (Map.Entry<Long, List<YieldOrderCraft>> entry : dispatchMap.entrySet()) { |
|
|
|
|
yieldOrderCraftService.automaticDispatch(entry.getValue(), yieldOrder, null, null); |
|
|
|
|
} |
|
|
|
|
// 处理不参与分派的工序(设置为不分派的工序)
|
|
|
|
|
this.handleNoAutomaticWorkPlan(noDispatch, yieldOrder); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_RESOURCE.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
@ -987,6 +1004,23 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
return Boolean.TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void handleNoAutomaticWorkPlan(List<YieldOrderCraft> noDispatch, YieldOrder yieldOrder) { |
|
|
|
|
if (CollectionUtils.isEmpty(noDispatch)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
WorkCenter workCenter; |
|
|
|
|
for (YieldOrderCraft dispatch : noDispatch) { |
|
|
|
|
// 根据工艺能力ID查询作业中心,获取第一个作业中心
|
|
|
|
|
workCenter = workCenterService.getOne(Wrappers.lambdaQuery(WorkCenter.class) |
|
|
|
|
.apply("INSTR(',' || CRAFT_ABILITY_ID || ',', ',' || {0} || ',') > 0", dispatch.getCaId()), false); |
|
|
|
|
if (workCenter != null) { |
|
|
|
|
dispatch.setWorkCenterId(workCenter.getId()); |
|
|
|
|
dispatch.setIsOutsource(Boolean.FALSE); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
yieldOrderCraftService.saveOrUpdateBatch(noDispatch); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Boolean verifyYieldOrderDelivery(YieldOrder yieldOrder) { |
|
|
|
|
// 根据工艺, 计算订单的额定加工时长
|
|
|
|
|
|