Merge remote-tracking branch 'origin/dev-wuhan' into dev-wuhan

tags/yfai-pcn-ext-v2.3
yxw 8 months ago
commit 47dee04a69

@ -25,10 +25,16 @@ public interface IMesRecyclablePackageService {
@ApiOperation("查询回收包装零件") @ApiOperation("查询回收包装零件")
List<MesRecyclablePackagePart> findMesRecyclablePackagePartByPackageTypeCode(String organizeCode, String packageTypeCode); List<MesRecyclablePackagePart> findMesRecyclablePackagePartByPackageTypeCode(String organizeCode, String packageTypeCode);
@ApiOperation("校验回收包装零件")
List<MesRecyclablePackagePart> checkMesRecyclablePackagePart(String organizeCode, String packageTypeCode);
@ApiOperation("查询回收包装零件") @ApiOperation("查询回收包装零件")
MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo); MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo);
@ApiOperation("查询回收包装类型") @ApiOperation("查询回收包装类型")
MesRecyclablePackageType getMesRecyclablePackageTypeByPackageTypeCode(String organizeCode, String packageTypeCode); MesRecyclablePackageType getMesRecyclablePackageTypeByPackageTypeCode(String organizeCode, String packageTypeCode);
@ApiOperation("校验回收包装类型")
MesRecyclablePackageType checkMesRecyclablePackageType(String organizeCode, String packageTypeCode);
} }

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.recyclablepackage; package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.recyclablepackage;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageBindingService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageBindingService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageService;
@ -15,23 +16,18 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage; import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.*;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBinding;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindingDetail;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingRepository; import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Comparator; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -147,12 +143,12 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
private MesRecyclablePackageBinding doScanPackageSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { private MesRecyclablePackageBinding doScanPackageSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
//校验包装 //校验包装
MesRecyclablePackage mesRecyclablePackage = mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn()); mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
//绑定主表信息 //绑定主表信息
MesRecyclablePackageBinding mesRecyclablePackageBinding = getMesRecyclablePackageBindingByPackageSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn()); MesRecyclablePackageBinding mesRecyclablePackageBinding = getMesRecyclablePackageBindingByPackageSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
if (Objects.isNull(mesRecyclablePackageBinding)) { if (Objects.isNull(mesRecyclablePackageBinding)) {
//保存包装 //保存包装
mesRecyclablePackageBinding = insertMesRecyclablePackageBinding(mesRecyclablePackageBindingModel, mesRecyclablePackage.getPackageTypeCode()); mesRecyclablePackageBinding = insertMesRecyclablePackageBinding(mesRecyclablePackageBindingModel);
} }
return mesRecyclablePackageBinding; return mesRecyclablePackageBinding;
} }
@ -166,14 +162,18 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
} }
//校验零件条码是否扫描 //校验零件条码是否扫描
checkIsScan(mesRecyclablePackageBindingModel); checkIsScan(mesRecyclablePackageBindingModel);
//查询包条码信息
MesRecyclablePackage mesRecyclablePackage = mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
//查询包装零件
List<MesRecyclablePackagePart> packagePartList = mesRecyclablePackageService.checkMesRecyclablePackagePart(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackage.getPackageTypeCode());
//条码信息 //条码信息
MesProduceSn mesProduceSn = getMesProduceSn(mesRecyclablePackageBindingModel); MesProduceSn mesProduceSn = getMesProduceSn(mesRecyclablePackageBindingModel,packagePartList);
//记录绑定明细 //记录绑定明细
insertMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel.getUserName(), mesRecyclablePackageBinding, mesProduceSn); insertMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel.getUserName(), mesRecyclablePackageBinding, mesProduceSn);
//更新数量 //更新数量
mesRecyclablePackageBinding.setTotalQty(findMesRecyclablePackageBindingDetailByPidCount(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBinding.getId())); mesRecyclablePackageBinding.setTotalQty(findMesRecyclablePackageBindingDetailByPidCount(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBinding.getId()));
//自动关箱 //自动关箱
if (getRecyclablePackagePart(mesRecyclablePackageBindingModel, mesRecyclablePackageBinding.getPackageTypeCode(), mesProduceSn.getPartNo()).getQty().intValue() <= mesRecyclablePackageBinding.getTotalQty()) { if (getMesRecyclablePackagePart(mesRecyclablePackage, packagePartList, mesProduceSn.getPartNo()).getQty().intValue() <= mesRecyclablePackageBinding.getTotalQty()) {
mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue()); mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue());
} }
ConvertBean.serviceModelUpdate(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName()); ConvertBean.serviceModelUpdate(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName());
@ -181,6 +181,14 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
return mesRecyclablePackageBinding; return mesRecyclablePackageBinding;
} }
private MesRecyclablePackagePart getMesRecyclablePackagePart(MesRecyclablePackage mesRecyclablePackage, List<MesRecyclablePackagePart> packagePartList, String partNo) {
Optional<MesRecyclablePackagePart> packagePart = packagePartList.stream().filter(t -> t.getPartNo().equals(partNo)).findFirst();
if(!packagePart.isPresent()){
MesPcnException.throwMesBusiException("回用包装类型【%s】零件【%s】数据不存在", mesRecyclablePackage.getPackageTypeCode(), partNo);
}
return packagePart.get();
}
private void checkIsScan(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { private void checkIsScan(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
List<MesRecyclablePackageBindingDetail> detailByProductSn = findMesRecyclablePackageBindingDetailByProductSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn()); List<MesRecyclablePackageBindingDetail> detailByProductSn = findMesRecyclablePackageBindingDetailByProductSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn());
if (!CollectionUtils.isEmpty(detailByProductSn)) { if (!CollectionUtils.isEmpty(detailByProductSn)) {
@ -188,21 +196,40 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
} }
} }
private MesProduceSn getMesProduceSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { private MesProduceSn getMesProduceSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel,List<MesRecyclablePackagePart> mesRecyclablePackagePartList) {
List<MesProduceSn> produceSnList = mesProduceSnExtService.getProduceSnList(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn()); List<MesProduceSn> produceSnList = mesProduceSnExtService.getProduceSnList(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn());
if (CollectionUtils.isEmpty(produceSnList)) { if (CollectionUtils.isEmpty(produceSnList)) {
MesPcnException.throwMesBusiException("条码【%s】信息不存在", mesRecyclablePackageBindingModel.getProductSn()); //外协件校验
MesRecyclablePackagePart mesRecyclablePackagePart = getMesRecyclablePackagePart(mesRecyclablePackageBindingModel, mesRecyclablePackagePartList);
if(Objects.isNull(mesRecyclablePackagePart)){
MesPcnException.throwMesBusiException("条码【%s】不存在", mesRecyclablePackageBindingModel.getProductSn());
}
//封装数据
MesPartSap mesPartSapByPartNo = mesPartService.getMesPartSapByPartNo(mesRecyclablePackagePart.getPartNo(), mesRecyclablePackageBindingModel.getOrganizeCode());
MesProduceSn mesProduceSn = new MesProduceSn();
mesProduceSn.setPartNo(mesRecyclablePackagePart.getPartNo());
mesProduceSn.setPartName(mesPartSapByPartNo.getPartName());
mesProduceSn.setProductSn(mesRecyclablePackageBindingModel.getProductSn());
return mesProduceSn;
} }
return produceSnList.stream().sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()).iterator().next(); return produceSnList.stream().sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()).iterator().next();
} }
private MesRecyclablePackagePart getRecyclablePackagePart(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, String packageTypeCode, String partNo) { private MesRecyclablePackagePart getMesRecyclablePackagePart(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, List<MesRecyclablePackagePart> mesRecyclablePackagePartList) {
MesPartSap mesPartSapByPartNo = mesPartService.getMesPartSapByPartNo(partNo, mesRecyclablePackageBindingModel.getOrganizeCode()); //外协件
MesRecyclablePackagePart recyclablePackagePart = mesRecyclablePackageService.getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(mesRecyclablePackageBindingModel.getOrganizeCode(), packageTypeCode, mesPartSapByPartNo.getPartNo()); MesRecyclablePackagePart checkPassRecyclablePackagePart = null;
if (Objects.isNull(recyclablePackagePart)) { for (MesRecyclablePackagePart mesRecyclablePackagePart : mesRecyclablePackagePartList) {
MesPcnException.throwMesBusiException("条码【%s】找不到对应的零件", mesRecyclablePackageBindingModel.getProductSn()); // 校验正则表达式
if (checkRule(mesRecyclablePackageBindingModel, mesRecyclablePackagePart.getProductSnRule())) {
checkPassRecyclablePackagePart = mesRecyclablePackagePart;
break;
}
} }
return recyclablePackagePart; return checkPassRecyclablePackagePart;
}
private boolean checkRule(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel,String rule) {
return (Boolean) ((IMesNumberRuleMatchDispatchService) SpringContextsUtil.getBean(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_20.getStrategyClass())).matchNumberRule(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn(), rule, rule).get(MesPcnExtConstWords.RESULT);
} }
private void insertMesRecyclablePackageBindingDetail(String userName, MesRecyclablePackageBinding mesRecyclablePackageBinding, MesProduceSn mesProduceSn) { private void insertMesRecyclablePackageBindingDetail(String userName, MesRecyclablePackageBinding mesRecyclablePackageBinding, MesProduceSn mesProduceSn) {
@ -215,16 +242,17 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
mesRecyclablePackageBindingDetail.setQty(MesPcnExtConstWords.ONE); mesRecyclablePackageBindingDetail.setQty(MesPcnExtConstWords.ONE);
mesRecyclablePackageBindingDetail.setStatus(MesPcnExtConstWords.ZERO); mesRecyclablePackageBindingDetail.setStatus(MesPcnExtConstWords.ZERO);
mesRecyclablePackageBindingDetail.setLotNumber(mesProduceSn.getLotNo()); mesRecyclablePackageBindingDetail.setLotNumber(mesProduceSn.getLotNo());
mesRecyclablePackageBindingDetail.setSubType(Objects.isNull(mesProduceSn.getId()) ? MesExtEnumUtil.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE_20.getValue() : MesExtEnumUtil.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE_10.getValue());
ConvertBean.serviceModelInitialize(mesRecyclablePackageBindingDetail, userName); ConvertBean.serviceModelInitialize(mesRecyclablePackageBindingDetail, userName);
mesRecyclablePackageBindingDetailRepository.insert(mesRecyclablePackageBindingDetail); mesRecyclablePackageBindingDetailRepository.insert(mesRecyclablePackageBindingDetail);
} }
private MesRecyclablePackageBinding insertMesRecyclablePackageBinding(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, String packageTypeCode) { private MesRecyclablePackageBinding insertMesRecyclablePackageBinding(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
MesRecyclablePackageBinding mesRecyclablePackageBinding = new MesRecyclablePackageBinding(); MesRecyclablePackageBinding mesRecyclablePackageBinding = new MesRecyclablePackageBinding();
mesRecyclablePackageBinding.setOrganizeCode(mesRecyclablePackageBindingModel.getOrganizeCode()); mesRecyclablePackageBinding.setOrganizeCode(mesRecyclablePackageBindingModel.getOrganizeCode());
mesRecyclablePackageBinding.setPackageSn(mesRecyclablePackageBindingModel.getPackageSn()); mesRecyclablePackageBinding.setPackageSn(mesRecyclablePackageBindingModel.getPackageSn());
mesRecyclablePackageBinding.setHangerPackageSn(mesRecyclablePackageBindingModel.getPackageSn()); mesRecyclablePackageBinding.setHangerPackageSn(mesRecyclablePackageBindingModel.getPackageSn());
mesRecyclablePackageBinding.setPackageTypeCode(packageTypeCode); mesRecyclablePackageBinding.setTypeCode("10");
mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.UNCLOSED.getValue()); mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.UNCLOSED.getValue());
mesRecyclablePackageBinding.setTotalQty(MesPcnExtConstWords.ZERO); mesRecyclablePackageBinding.setTotalQty(MesPcnExtConstWords.ZERO);
mesRecyclablePackageBinding.setFid(UUID.randomUUID().toString()); mesRecyclablePackageBinding.setFid(UUID.randomUUID().toString());

@ -14,6 +14,7 @@ import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackag
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -69,6 +70,15 @@ public class MesRecyclablePackageServiceImpl implements IMesRecyclablePackageSer
} }
@Override @Override
public List<MesRecyclablePackagePart> checkMesRecyclablePackagePart(String organizeCode, String packageTypeCode) {
List<MesRecyclablePackagePart> mesRecyclablePackagePartList = this.findMesRecyclablePackagePartByPackageTypeCode(organizeCode, packageTypeCode);
if (CollectionUtils.isEmpty(mesRecyclablePackagePartList)) {
MesPcnException.throwMesBusiException("回用包类型【%s】包装零件信息不存在", packageTypeCode);
}
return mesRecyclablePackagePartList;
}
@Override
public MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo) { public MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageTypeCode) || StringUtil.isEmptyAndNull(partNo)) { if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageTypeCode) || StringUtil.isEmptyAndNull(partNo)) {
return null; return null;
@ -88,4 +98,13 @@ public class MesRecyclablePackageServiceImpl implements IMesRecyclablePackageSer
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_TYPE_CODE}, new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_TYPE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageTypeCode}); new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageTypeCode});
} }
@Override
public MesRecyclablePackageType checkMesRecyclablePackageType(String organizeCode, String packageTypeCode) {
MesRecyclablePackageType recyclablePackageType = this.getMesRecyclablePackageTypeByPackageTypeCode(organizeCode, packageTypeCode);
if (Objects.isNull(recyclablePackageType)) {
MesPcnException.throwMesBusiException("回用包类型【%s】信息不存在", packageTypeCode);
}
return recyclablePackageType;
}
} }

Loading…
Cancel
Save