修复上料问题

mes-uat-changshu0609^2
jason 3 weeks ago
parent e5c437b997
commit 999d5d02a2

@ -381,6 +381,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
@Override
public MesContainerSnBindModel doScanBarcode(MesContainerSnBindModel model, boolean bStep) {
final String organizeCode = model.getOrganizeCode();
String barcode = model.getBarCode();
//校验容器条码
MesContainerSn containerSn = containerSnService.checkContainerSn(organizeCode, model.getContainerSn());
MesContainerType containerType = containerTypeRDao.getByProperty(
@ -428,7 +429,6 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
}
bottomPackageDetails = new ArrayList<>();
}
String barcode = model.getBarCode();
if (!CollectionUtils.isEmpty(bottomPackageDetails)) {
barcode = bottomPackageDetails.get(0).getBarCode();
}
@ -472,6 +472,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
}
MesContainerPackageDetailBinding binding = createContainerPackageDetailBinding(packageDetail, MesExtEnumUtil.CONTAINER_RAW_SN_BINDING_STATUS.BINDING, model.getUserName());
bindContainerSnStation(organizeCode, model.getContainerSn(), model.getBarCode(), model.getUserName());
packageDetails.add(packageDetail);
model.setContainerPackage(containerPackage);
@ -483,6 +484,35 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
return model;
}
private void bindContainerSnStation(String organizeCode, String containerSn, String barCode, String userName) {
MesContainerPackage barcodePackage = containerPackageRDao.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "containerSn"},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), barCode});
if (barcodePackage == null) {
return;
}
String topContainerSn = getTopContainerSn(organizeCode, containerSn);
MesContainerSnStation containerSnStation = containerSnStationRDao.getByProperty(new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "topContainerSn"},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), topContainerSn});
if (containerSnStation == null) {
return;
}
List<MesContainerPackageDetail> bottomPackageDetailList = new ArrayList<>();
getBottomPackageDetails(organizeCode, barcodePackage, bottomPackageDetailList);
final Set<String> containerSnSet = bottomPackageDetailList.stream().map(MesContainerPackageDetail::getContainerSn).collect(Collectors.toSet());
for (String bottomContainerSn : containerSnSet) {
MesContainerSnStation snStation = new MesContainerSnStation();
snStation.setOrganizeCode(organizeCode);
snStation.setStation(containerSnStation.getStation());
snStation.setContainerSn(bottomContainerSn);
snStation.setTopContainerSn(topContainerSn);
snStation.setSeq(1);
ConvertBean.serviceModelInitialize(snStation, userName);
containerSnStationRDao.insert(snStation);
}
}
private void saveContainerPackage(MesContainerSnBindModel model) {
MesContainerPackage containerPackage = model.getContainerPackage();
if (containerPackage != null) {

@ -54,7 +54,7 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue()});
for (MesPackingDefine packingDefine : packingDefines) {
Double qty = checkPackingDefine(organizeCode, packingDefine, barcode);
Double qty = checkPackingDefine(organizeCode, packingDefine, barcode, model.getPartNo());
if (qty != null && qty > 0) {
result.put(MesPcnExtConstWords.QTY, qty);
result.put(MesPcnExtConstWords.RESULT, true);
@ -64,7 +64,7 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai
return result;
}
private Double checkPackingDefine(String organizeCode, MesPackingDefine packingDefine, String barcode) {
private Double checkPackingDefine(String organizeCode, MesPackingDefine packingDefine, String barcode, String rulePartNo) {
//解析获取信息保存
if (StringUtils.isEmpty(packingDefine.getSplitChar())) {
return null;
@ -74,7 +74,10 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai
//工厂校验
checkOrganizeCode(organizeCode, packingDefine, split);
//获取物料信息是否存在
getMesPart(organizeCode, packingDefine, split);
MesPart part = getMesPart(organizeCode, packingDefine, split);
if (part == null || !Objects.equals(part.getPartNo(), rulePartNo)) {
return null;
}
//获取数量信息是否存在
return getQty(packingDefine, split);
} catch (Exception ex) {
@ -96,7 +99,7 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai
}
}
private void getMesPart(String organizeCode, MesPackingDefine packingDefine, String[] split) {
private MesPart getMesPart(String organizeCode, MesPackingDefine packingDefine, String[] split) {
if (StringUtils.isEmpty(packingDefine.getPartNoIndex()) || packingDefine.getPartNoIndex() > split.length
|| StringUtils.isEmpty(split[packingDefine.getPartNoIndex() - 1])) {
MesPcnException.throwMesBusiException("物料号所在位置不存在,请检查数据!");
@ -121,16 +124,17 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai
MesPcnException.throwMesBusiException("客户零件号[%s]未绑定物料号数据,请检查数据!", split[packingDefine.getPartNoIndex() - 1]);
}
}
checkPart(organizeCode, partNo);
return checkPart(organizeCode, partNo);
}
private void checkPart(String organizeCode, String partNo) {
private MesPart checkPart(String organizeCode, String partNo) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesPcnExtConstWords.PART_NO, packBean);
MesPart mesPart = mesPartRDao.getByProperty(packBean);
if (Objects.isNull(mesPart)) {
MesPcnException.throwMesBusiException("物料[%s]信息不存在,请检查数据!", partNo);
}
return mesPart;
}
private Double getQty(MesPackingDefine packingDefine, String[] split) {

@ -4,7 +4,9 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesContainerPartsModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
@ -25,6 +27,8 @@ import java.util.Objects;
public class MesContainerBindPackageSnService extends MesAbstractContainerBindDispatchService {
@Autowired
private MesProduceSnRepository produceSnRDao;
@Autowired
private MesPartRepository mesPartRDao;
public MesContainerBindPackageSnService() {
super(null, MesExtEnumUtil.CONTAINER_PART_MATCH_TYPE.MATCH_TYPE_30);
@ -46,7 +50,18 @@ public class MesContainerBindPackageSnService extends MesAbstractContainerBindDi
MesPcnException.throwMesBusiException("自制件箱码【%s】的工厂代码【%s】与当前工厂不匹配, 请检查数据!", barcode, barOrganizeCode);
}
String barProductSn = splitBarcode[3];
String partNo = splitBarcode[3];
MesPart mesPart = mesPartRDao.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "partNo"},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), partNo});
if (mesPart == null) {
MesPcnException.throwMesBusiException("零件号【%s】在物料表不存在, 请检查数据!", model.getPartNo());
}
if (!Objects.equals(mesPart.getPartNo(), model.getPartNo())) {
return result;
}
String barProductSn = splitBarcode[1];
MesProduceSn produceSn = produceSnRDao.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "productSn"},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), barProductSn});

@ -42,6 +42,9 @@ public class MesContainerBindProductSnService extends MesAbstractContainerBindDi
result.put(MesPcnExtConstWords.MESSAGE, String.format("扫描条码【%s】在条码表不存在, 请检查数据!", barcode));
return result;
}
if (!Objects.equals(produceSn.getPartNo(), model.getPartNo())) {
return result;
}
if (!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()) &&
!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue())) {

Loading…
Cancel
Save