|
|
|
|
@ -9,7 +9,6 @@ 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.PostConstruct; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
@ -17,42 +16,47 @@ import org.springblade.common.constant.CommonConstant; |
|
|
|
|
import org.springblade.common.exception.BusinessException; |
|
|
|
|
import org.springblade.common.utils.StringPrefixUtils; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
|
import org.springblade.core.mp.base.BaseEntity; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.*; |
|
|
|
|
import org.springblade.desk.basic.service.IQualityGradeService; |
|
|
|
|
import org.springblade.desk.dashboard.constant.DsCraftConstant; |
|
|
|
|
import org.springblade.desk.dashboard.constant.DsPartConstant; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.*; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.enums.DsCraftEnum; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.enums.PartCraftStatusEnum; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.vo.PartCraftVO; |
|
|
|
|
import org.springblade.desk.dashboard.service.IDsCraftService; |
|
|
|
|
import org.springblade.desk.dashboard.service.IDsPartService; |
|
|
|
|
import org.springblade.desk.dashboard.service.IDsProcessService; |
|
|
|
|
import org.springblade.desk.dashboard.service.*; |
|
|
|
|
import org.springblade.desk.logistics.pojo.entity.PrYieldOrder; |
|
|
|
|
import org.springblade.desk.logistics.service.IPrYieldOrderService; |
|
|
|
|
import org.springblade.desk.order.constant.YieldOrderConst; |
|
|
|
|
import org.springblade.desk.order.mapper.MoldDemandMapper; |
|
|
|
|
import org.springblade.desk.order.mapper.YieldOrderMapper; |
|
|
|
|
import org.springblade.desk.order.mapper.YieldPlanMapper; |
|
|
|
|
import org.springblade.desk.order.pojo.entity.MoldDemand; |
|
|
|
|
import org.springblade.desk.order.pojo.entity.YieldOrder; |
|
|
|
|
import org.springblade.desk.order.pojo.entity.YieldOrderCraft; |
|
|
|
|
import org.springblade.desk.order.pojo.entity.YieldPlan; |
|
|
|
|
import org.springblade.desk.order.pojo.enums.MoldDemandEnum; |
|
|
|
|
import org.springblade.desk.order.pojo.enums.YieldOrderEnum; |
|
|
|
|
import org.springblade.desk.order.pojo.vo.LineMemoVo; |
|
|
|
|
import org.springblade.desk.order.service.IPlateGoodsRecordService; |
|
|
|
|
import org.springblade.desk.order.service.IYieldOrderCraftService; |
|
|
|
|
import org.springblade.desk.order.service.IYieldOrderService; |
|
|
|
|
import org.springblade.desk.produce.mapper.WorkOrderMapper; |
|
|
|
|
import org.springblade.desk.produce.pojo.entity.WorkOrder; |
|
|
|
|
import org.springblade.erpdata.feign.IErpYieldOrderClient; |
|
|
|
|
import org.springblade.scheduling.pojo.entity.QualityGradeEntity; |
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.text.MessageFormat; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 服务实现类 |
|
|
|
|
@ -77,6 +81,13 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
private final IErpYieldOrderClient yieldOrderClient; |
|
|
|
|
private final IPrYieldOrderService yieldOrderService; |
|
|
|
|
|
|
|
|
|
private final IQualityGradeService qualityGradeService; |
|
|
|
|
|
|
|
|
|
private final IDsPartRelationService partRelationService; |
|
|
|
|
private final IDsPartVersionService partVersionService; |
|
|
|
|
private final MoldDemandMapper moldDemandMapper; |
|
|
|
|
private final IPlateGoodsRecordService plateGoodsRecordService; |
|
|
|
|
|
|
|
|
|
@Value("${business.oldMes.url}") |
|
|
|
|
private String oldMesUrl; |
|
|
|
|
@Value("${business.oldMes.syncOrderList}") |
|
|
|
|
@ -168,31 +179,33 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// 进行资源校验,验证不通过,不进行后续验证,直接返回;
|
|
|
|
|
log.info("进行资源校验,验证不通过,不进行后续验证,直接返回;"); |
|
|
|
|
if (!this.verifyYieldOrderResource(yieldOrder)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// log.info("进行资源校验,验证不通过,不进行后续验证,直接返回;");
|
|
|
|
|
// if (!this.verifyYieldOrderResource(yieldOrder)) {
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// 最后进行超期校验
|
|
|
|
|
this.verifyYieldOrderDelivery(yieldOrder); |
|
|
|
|
// this.verifyYieldOrderDelivery(yieldOrder);
|
|
|
|
|
} else if (YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode() == yieldOrder.getValidationResult()) { |
|
|
|
|
// 进行工艺校验,验证不通过,不进行后续验证,直接返回;
|
|
|
|
|
if (!this.verifyYieldOrderCraft(yieldOrder)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// 进行资源校验,验证不通过,不进行后续验证,直接返回;
|
|
|
|
|
if (!this.verifyYieldOrderResource(yieldOrder)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// if (!this.verifyYieldOrderResource(yieldOrder)) {
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// 最后进行超期校验
|
|
|
|
|
this.verifyYieldOrderDelivery(yieldOrder); |
|
|
|
|
// this.verifyYieldOrderDelivery(yieldOrder);
|
|
|
|
|
} else if (YieldOrderEnum.VALIDATION_RESULT_LESS_RESOURCE.getCode() == yieldOrder.getValidationResult()) { |
|
|
|
|
// 进行资源校验,验证不通过,不进行后续验证,直接返回;
|
|
|
|
|
if (!this.verifyYieldOrderResource(yieldOrder)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// if (!this.verifyYieldOrderResource(yieldOrder)) {
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// 最后进行超期校验
|
|
|
|
|
this.verifyYieldOrderDelivery(yieldOrder); |
|
|
|
|
// this.verifyYieldOrderDelivery(yieldOrder);
|
|
|
|
|
} |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_PASS.getCode()); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return "校验成功"; |
|
|
|
|
@ -201,13 +214,14 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
@Override |
|
|
|
|
public boolean confirmBatch(List<Long> ids) { |
|
|
|
|
List<YieldOrder> yieldOrderList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
ids.forEach(id -> { |
|
|
|
|
YieldOrder yieldOrder = new YieldOrder(); |
|
|
|
|
yieldOrder.setId(id); |
|
|
|
|
for(Long id : ids){ |
|
|
|
|
YieldOrder yieldOrder = this.getById(id); |
|
|
|
|
if (!this.verifyYieldOrderResource(yieldOrder)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCode()); |
|
|
|
|
yieldOrderList.add(yieldOrder); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return this.updateBatchById(yieldOrderList); |
|
|
|
|
} |
|
|
|
|
@ -249,7 +263,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String roamNoText = dsPartService.findNameByRoamNo(yieldOrder.getPartCode(), yieldOrder.getRoamNo()); |
|
|
|
|
String roamNoText = yieldOrder.getRoamNoNext(); |
|
|
|
|
if (StringUtils.isBlank(roamNoText)) { |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
@ -282,8 +296,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
.eq(YieldOrder::getIsDeleted, CommonConstant.DELETE_FALSE) |
|
|
|
|
.eq(YieldOrder::getYoCode, yieldOrder.getYoCode()) |
|
|
|
|
.ne(YieldOrder::getId, yieldOrder.getId()); |
|
|
|
|
YieldOrder yieldOrderCheck = baseMapper.selectOne(wrapper); |
|
|
|
|
if (ObjectUtil.isNotEmpty(yieldOrderCheck)) { |
|
|
|
|
List<YieldOrder> yieldOrderCheckList = baseMapper.selectList(wrapper); |
|
|
|
|
if (CollectionUtils.isNotEmpty(yieldOrderCheckList)) { |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo("已存在该流程卡号的数据"); |
|
|
|
|
@ -346,7 +360,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
} |
|
|
|
|
String rankStr = rank == null ? null : String.valueOf(rank); |
|
|
|
|
log.info("工艺传参零件号:{},{},{}",partCode,roamNo,rankStr); |
|
|
|
|
PartCraftVO craftVO = dsPartService.selectPartCraft(partCode, roamNo, rankStr, null); |
|
|
|
|
PartCraftVO craftVO = dsPartService.selectPartCraft(yieldOrder, partCode, roamNo, rankStr, null); |
|
|
|
|
log.info("工艺返回:{}",craftVO != null); |
|
|
|
|
|
|
|
|
|
if (ObjectUtil.isEmpty(craftVO) || PartCraftStatusEnum.SUCCESS.getCode() != craftVO.getCode()) { |
|
|
|
|
@ -362,8 +376,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
DsPartEntity part = dsPartService.getById(craft.getPartId()); |
|
|
|
|
|
|
|
|
|
//石墨模不参与验证
|
|
|
|
|
if (!YieldOrderEnum.YIELD_TYPE_2.equals(yieldOrder.getYieldType()) |
|
|
|
|
&& !YieldOrderEnum.YIELD_TYPE_6.equals(yieldOrder.getYieldType()) && ObjectUtil.isEmpty(part.getArea())) { |
|
|
|
|
if (YieldOrderEnum.YIELD_TYPE_2.getCode() != yieldOrder.getYieldType() |
|
|
|
|
&& YieldOrderEnum.YIELD_TYPE_6.getCode() != yieldOrder.getYieldType() && ObjectUtil.isEmpty(part.getArea())) { |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo("零件面积为空,工艺匹配失败,请联系工艺员!"); |
|
|
|
|
@ -403,11 +417,54 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
boolean saveBatch = yieldOrderCraftService.saveBatch(yieldOrderCraftList); |
|
|
|
|
log.info("添加数据返回结果:{}",saveBatch); |
|
|
|
|
} |
|
|
|
|
//镀层物料需求
|
|
|
|
|
if(YieldOrderEnum.YIELD_TYPE_1.getCode() == yieldOrder.getYieldType()){ |
|
|
|
|
boolean result = plateGoodsRecordService.calculateCoatingMaterial(yieldOrder); |
|
|
|
|
if(!result){ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 生成子件订单
|
|
|
|
|
createSubOrder(yieldOrder); |
|
|
|
|
//部件生产订单获取石墨模生成烧结磨具计划,玻璃饼订单获取压饼模生成烧结磨具计划
|
|
|
|
|
if(YieldOrderEnum.YIELD_TYPE_2.getCode() == yieldOrder.getYieldType()){ |
|
|
|
|
List<DsPartEntity> subPartList = dsPartService.getPartSubList(yieldOrder.getPartCode(),yieldOrder.getPartVersion()); |
|
|
|
|
if(CollectionUtils.isNotEmpty(subPartList)){ |
|
|
|
|
for(DsPartEntity subPart : subPartList){ |
|
|
|
|
if(DsPartConstant.SIN_TER_TYPE_SMM == subPart.getSinTerType() && subPart.getQuota() != 0){ |
|
|
|
|
MoldDemand moldDemand = new MoldDemand(); |
|
|
|
|
moldDemand.setMoCode(null); |
|
|
|
|
moldDemand.setPartCode(subPart.getPartCode()); |
|
|
|
|
moldDemand.setPartName(subPart.getPartName()); |
|
|
|
|
moldDemand.setDemandNum(subPart.getQuota() * yieldOrder.getYpQty()); |
|
|
|
|
moldDemand.setLinkOrderIds(yieldOrder.getId().toString()); |
|
|
|
|
moldDemand.setStatus(MoldDemandEnum.STATUS_WAITING.getCode()); |
|
|
|
|
moldDemand.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode()); |
|
|
|
|
moldDemand.setNeedDate(yieldOrder.getDemandDate()); |
|
|
|
|
moldDemand.setQuaLevel(yieldOrder.getProductIdent()); |
|
|
|
|
moldDemandMapper.insert(moldDemand); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO 生成模具计划
|
|
|
|
|
// TODO 生成物料需求
|
|
|
|
|
} |
|
|
|
|
}else if(YieldOrderEnum.YIELD_TYPE_3.getCode() == yieldOrder.getYieldType()){ |
|
|
|
|
List<DsProcessMoldToolEntity> processMoldToolList = dsPartService.getClassCakeWork(yieldOrder.getPartCode(),yieldOrder.getRoamNo(),yieldOrder.getPartVersion()); |
|
|
|
|
if(CollectionUtils.isNotEmpty(processMoldToolList)){ |
|
|
|
|
MoldDemand moldDemand = new MoldDemand(); |
|
|
|
|
moldDemand.setMoCode(null); |
|
|
|
|
moldDemand.setPartCode(yieldOrder.getPartCode()); |
|
|
|
|
moldDemand.setPartName(yieldOrder.getPartName()); |
|
|
|
|
moldDemand.setDemandNum(yieldOrder.getYpQty()); |
|
|
|
|
moldDemand.setToolCode(processMoldToolList.get(0).getMoldCode()); |
|
|
|
|
moldDemand.setToolName(processMoldToolList.get(0).getMoldName()); |
|
|
|
|
moldDemand.setLinkOrderIds(yieldOrder.getId().toString()); |
|
|
|
|
moldDemand.setStatus(MoldDemandEnum.STATUS_WAITING.getCode()); |
|
|
|
|
moldDemand.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode()); |
|
|
|
|
moldDemand.setNeedDate(yieldOrder.getDemandDate()); |
|
|
|
|
moldDemand.setQuaLevel(yieldOrder.getProductIdent()); |
|
|
|
|
moldDemandMapper.insert(moldDemand); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return Boolean.TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -438,18 +495,25 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
@Override |
|
|
|
|
public void saveSubYieldOrder(YieldOrder yieldOrder, Boolean isManual, Long receiveUser) throws BusinessException { |
|
|
|
|
// 验证是否存在玻璃饼子件信息
|
|
|
|
|
this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_BLB, "玻璃饼"); |
|
|
|
|
// this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_BLB, "玻璃饼");
|
|
|
|
|
|
|
|
|
|
//查询所有的烧结子件清单
|
|
|
|
|
List<DsPartEntity> subList = new ArrayList<>(); |
|
|
|
|
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模")); |
|
|
|
|
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_KT, "壳体")); |
|
|
|
|
subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_CZ, "插针")); |
|
|
|
|
// List<DsPartEntity> subList = new ArrayList<>();
|
|
|
|
|
// subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模"));
|
|
|
|
|
// subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_KT, "壳体"));
|
|
|
|
|
// subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_CZ, "插针"));
|
|
|
|
|
|
|
|
|
|
DsPartVersionEntity partVersion = partVersionService.getOne(Wrappers.<DsPartVersionEntity>lambdaQuery() |
|
|
|
|
.eq(DsPartVersionEntity::getPartCode,yieldOrder.getPartCode()) |
|
|
|
|
.eq(DsPartVersionEntity::getPartVersion,yieldOrder.getPartVersion())); |
|
|
|
|
List<DsPartRelationEntity> partRelationList = partRelationService.list(Wrappers.<DsPartRelationEntity>lambdaQuery().eq(DsPartRelationEntity::getPartId,partVersion.getPartId())); |
|
|
|
|
List<Long> childPartIdList = partRelationList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); |
|
|
|
|
List<DsPartEntity> subList = dsPartService.list(Wrappers.<DsPartEntity>lambdaQuery().in(BaseEntity::getId,childPartIdList)); |
|
|
|
|
if (subList.size() == 0) { |
|
|
|
|
throw new BusinessException("未找到烧结前处理子件信息,请联系工艺编制!"); |
|
|
|
|
} |
|
|
|
|
//获取已经产生的烧结子件清单
|
|
|
|
|
List<YieldOrder> subYieldOrderList = this.listByFatherYoId(yieldOrder.getFatherYoId()); |
|
|
|
|
List<YieldOrder> subYieldOrderList = this.listByFatherYoId(yieldOrder.getId()); |
|
|
|
|
List<String> keyLst = new ArrayList<>(); |
|
|
|
|
List<DsPartEntity> returnList = new ArrayList<>(); |
|
|
|
|
if (subYieldOrderList.size() > 0) { |
|
|
|
|
@ -935,6 +999,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
*/ |
|
|
|
|
private void createSubYieldOrder(YieldOrder yieldOrder, List<DsPartEntity> subList, Boolean isManual, Long receiveUser) throws BusinessException { |
|
|
|
|
List<DsCraftEntity> dsCraftList; |
|
|
|
|
List<Long> idList = new ArrayList<>(); |
|
|
|
|
for (DsPartEntity dsPartSub : subList) { |
|
|
|
|
//如果子件号为空或者是无,则跳过
|
|
|
|
|
if (StringUtils.isBlank(dsPartSub.getPartCode()) || dsPartSub.getPartCode().equals("无")) { |
|
|
|
|
@ -968,7 +1033,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
//获取金属件子件B号,如果未获取到,提示异常
|
|
|
|
|
String roamNo = null; |
|
|
|
|
if (DsPartConstant.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType()) || DsPartConstant.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) { |
|
|
|
|
roamNo = dsPartService.findRoamNoByPartCode(dsPartSub.getPartCode()); |
|
|
|
|
roamNo = yieldOrderClient.getChildRoamNoByPartCode(dsPartSub.getPartCode()); |
|
|
|
|
if (StringUtils.isBlank(roamNo)) { |
|
|
|
|
String errMsg = MessageFormat.format("子件{}未找到对应B号,请在ERP核查子件一级路线!", dsPartSub.getPartCode()); |
|
|
|
|
throw new BusinessException(errMsg); |
|
|
|
|
@ -1008,6 +1073,13 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
subYield.setMemo("手动创建子件"); |
|
|
|
|
} |
|
|
|
|
this.save(subYield); |
|
|
|
|
idList.add(subYield.getId()); |
|
|
|
|
} |
|
|
|
|
if(CollectionUtils.isNotEmpty(idList)){ |
|
|
|
|
//生成的烧结子订单也需要进行合规性校验,另起线程异步执行
|
|
|
|
|
CompletableFuture.runAsync(() -> { |
|
|
|
|
this.dataVerify(idList); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1110,7 +1182,9 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
*/ |
|
|
|
|
private Integer judgeRank(YieldOrder yieldOrder) { |
|
|
|
|
DsPartEntity part = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion()); |
|
|
|
|
|
|
|
|
|
if(part == null){ |
|
|
|
|
throw new ServiceException("未查询到零件信息!"); |
|
|
|
|
} |
|
|
|
|
// 工作订单备注中包含大小写的HTBY时,执行二级工艺
|
|
|
|
|
if (yieldOrder.getYpMemo() != null && yieldOrder.getYpMemo().toLowerCase(Locale.ROOT).contains("htby")) { |
|
|
|
|
return DsCraftEnum.RANK_TWO.getCode(); |
|
|
|
|
@ -1119,18 +1193,26 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
// 判定是否为镀金零件
|
|
|
|
|
if (CommonConstant.BOOLEAN_TRUE.equals(part.getGoldMark())) { |
|
|
|
|
// 获取零件工艺级别面积判定值
|
|
|
|
|
Integer levConfirmVal = 20; |
|
|
|
|
if (levConfirmVal != null) { |
|
|
|
|
// 计算生产订单总面积
|
|
|
|
|
Double totalArea = yieldOrder.getYpArea() * yieldOrder.getYpQty(); |
|
|
|
|
|
|
|
|
|
if (totalArea > levConfirmVal) { |
|
|
|
|
// Integer levConfirmVal = 20;
|
|
|
|
|
// if (levConfirmVal != null) {
|
|
|
|
|
// // 计算生产订单总面积
|
|
|
|
|
// Double totalArea = yieldOrder.getYpArea() * yieldOrder.getYpQty();
|
|
|
|
|
//
|
|
|
|
|
// if (totalArea > levConfirmVal) {
|
|
|
|
|
// return DsCraftEnum.RANK_ONE.getCode();
|
|
|
|
|
// } else {
|
|
|
|
|
// if (Func.isNotEmpty(yieldOrder.getProductIdent())) {
|
|
|
|
|
// // 若局部镀质量等级存在, 返回一级工艺
|
|
|
|
|
// return DsCraftEnum.RANK_ONE.getCode();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
if (Func.isNotEmpty(yieldOrder.getProductIdent())) { |
|
|
|
|
//根据订单的质量等级去质量等级表查询是否局部镀
|
|
|
|
|
QualityGradeEntity qualityGrade = qualityGradeService.getOne(Wrappers.<QualityGradeEntity>lambdaQuery().eq(QualityGradeEntity::getQualityGrade,yieldOrder.getProductIdent())); |
|
|
|
|
if(qualityGrade != null && "1".equals(qualityGrade.getIsLocal())){ |
|
|
|
|
// 若局部镀质量等级存在, 返回一级工艺
|
|
|
|
|
return DsCraftEnum.RANK_ONE.getCode(); |
|
|
|
|
} else { |
|
|
|
|
if (Func.isNotEmpty(yieldOrder.getProductIdent())) { |
|
|
|
|
// 若局部镀质量等级存在, 返回一级工艺
|
|
|
|
|
return DsCraftEnum.RANK_ONE.getCode(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|