|
|
|
@ -1,5 +1,6 @@ |
|
|
|
package org.springblade.desk.order.service.impl; |
|
|
|
package org.springblade.desk.order.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.http.HttpUtil; |
|
|
|
import cn.hutool.http.HttpUtil; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
@ -374,16 +375,18 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
this.updateById(yieldOrder); |
|
|
|
this.updateById(yieldOrder); |
|
|
|
} |
|
|
|
} |
|
|
|
//查询一级工序名称
|
|
|
|
//查询一级工序名称
|
|
|
|
String roamNoText = dsPartService.findNameByRoamNo(yieldOrder.getPartCode(), yieldOrder.getRoamNo()); |
|
|
|
String firseqName = dsPartService.findNameByRoamNo(yieldOrder.getPartCode(), yieldOrder.getRoamNo()); |
|
|
|
if(StringUtils.isEmpty(roamNoText)){ |
|
|
|
if(StringUtils.isEmpty(firseqName)){ |
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); |
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); |
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
yieldOrder.setValidationMomo("未查询一级工序名称"); |
|
|
|
yieldOrder.setValidationMomo("未查询一级工序名称"); |
|
|
|
this.updateById(yieldOrder); |
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
|
|
|
}else { |
|
|
|
|
|
|
|
yieldOrder.setFirseqNameStatus(YieldOrderEnum.FIRSEQ_NAME_NOT_EXIST.getCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 验证烧结订单的b号描述,如果包含封接字样则验证子件,不包含则不验证
|
|
|
|
// 验证烧结订单的b号描述,如果包含封接字样则验证子件,不包含则不验证
|
|
|
|
if (roamNoText.contains(YieldOrderConst.ROAMNO_TEXT_FJ)) { |
|
|
|
if (firseqName.contains(YieldOrderConst.ROAMNO_TEXT_FJ)) { |
|
|
|
DsPartEntity partEntity = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion()); |
|
|
|
DsPartEntity partEntity = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion()); |
|
|
|
// 烧结订单 需要校验子件必须包含【玻璃饼、壳体、插针、石墨模】
|
|
|
|
// 烧结订单 需要校验子件必须包含【玻璃饼、壳体、插针、石墨模】
|
|
|
|
if(yieldOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())){ |
|
|
|
if(yieldOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())){ |
|
|
|
@ -1820,6 +1823,78 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
return baseMapper.selectByFatherYoId(yieldOrderId); |
|
|
|
return baseMapper.selectByFatherYoId(yieldOrderId); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public boolean subItemAssignment(String yieldOrderId) { |
|
|
|
|
|
|
|
// 查询需要下发的订单
|
|
|
|
|
|
|
|
YieldOrder yieldOrder = this.getById(yieldOrderId); |
|
|
|
|
|
|
|
if (yieldOrder == null) { |
|
|
|
|
|
|
|
throw new ServiceException("无下发订单信息"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查一级工序状态
|
|
|
|
|
|
|
|
if (yieldOrder.getFirseqNameStatus().equals(YieldOrderEnum.FIRSEQ_NAME_NOT_EXIST.getCode())) { |
|
|
|
|
|
|
|
throw new ServiceException("子件无法下发,一级工序名称不存在"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询零件
|
|
|
|
|
|
|
|
DsPartEntity part = dsPartService.selectDsPartByPatCode(yieldOrder.getPartCode()) |
|
|
|
|
|
|
|
.stream() |
|
|
|
|
|
|
|
.findFirst() |
|
|
|
|
|
|
|
.orElseThrow(() -> new ServiceException("暂无零件信息")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询子件
|
|
|
|
|
|
|
|
List<DsPartRelationEntity> partRelationList = partRelationService.selectDsPartRelationByPartId(part.getId()); |
|
|
|
|
|
|
|
if (partRelationList.isEmpty()) { |
|
|
|
|
|
|
|
throw new ServiceException("暂无子件信息"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取所有子件编码
|
|
|
|
|
|
|
|
Set<String> childPartCodeSet = partRelationList.stream() |
|
|
|
|
|
|
|
.map(DsPartRelationEntity::getChildPartCode) |
|
|
|
|
|
|
|
.filter(Objects::nonNull) |
|
|
|
|
|
|
|
.filter(code -> !code.isEmpty()) |
|
|
|
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询已生成的子件订单
|
|
|
|
|
|
|
|
List<YieldOrder> yieldOrderList = baseMapper.selectByFatherYoId(Long.valueOf(yieldOrderId)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取已生成订单中的零件编码
|
|
|
|
|
|
|
|
Set<String> existingPartCodeSet = yieldOrderList.stream() |
|
|
|
|
|
|
|
.filter(order -> order.getPartCode() != null) |
|
|
|
|
|
|
|
.map(YieldOrder::getPartCode) |
|
|
|
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 需要创建的子件编码 = 子件编码集合 - 已存在的订单编码
|
|
|
|
|
|
|
|
List<String> partSubCodeList = childPartCodeSet.stream() |
|
|
|
|
|
|
|
.filter(code -> !existingPartCodeSet.contains(code)) |
|
|
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 如果没有需要创建的子件,直接返回
|
|
|
|
|
|
|
|
if (partSubCodeList.isEmpty()) { |
|
|
|
|
|
|
|
log.info("所有子件订单都已存在,无需创建"); |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 批量查询子件零件信息
|
|
|
|
|
|
|
|
List<DsPartEntity> dsPartEntityList = dsPartService.selectDsPartByPartCodeList(partSubCodeList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dsPartEntityList.isEmpty()) { |
|
|
|
|
|
|
|
log.warn("未查询到子件零件信息,子件编码:{}", partSubCodeList); |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建子件订单
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
createSubYieldOrder(yieldOrder, dsPartEntityList, true, AuthUtil.getUser().getUserId()); |
|
|
|
|
|
|
|
log.info("子件订单创建成功,父订单ID:{},创建子件数量:{}", yieldOrderId, dsPartEntityList.size()); |
|
|
|
|
|
|
|
} catch (BusinessException e) { |
|
|
|
|
|
|
|
log.error("创建子件订单失败,父订单ID:{}", yieldOrderId, e); |
|
|
|
|
|
|
|
throw new ServiceException("创建子件订单失败:" + e.getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @param codeType 0:订单号、1:流程卡号;2、批次号 |
|
|
|
* @param codeType 0:订单号、1:流程卡号;2、批次号 |
|
|
|
* @return String |
|
|
|
* @return String |
|
|
|
|