|
|
|
@ -303,78 +303,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", recentlyOrderPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"modifyDatetime"}, recentlyOrderPackBean);
|
|
|
|
|
MesShippingOrderManagement recentlyVehiclesOrder = shippingOrderManagementRepository.getByProperty(recentlyOrderPackBean);
|
|
|
|
|
|
|
|
|
|
model.setDetailList(detailList);
|
|
|
|
|
model.setShippingCode(orderManagement.getShippingCode());
|
|
|
|
|
if (!StringUtils.isEmpty(recentlyVehiclesOrder)) {
|
|
|
|
|
|
|
|
|
|
model.setRecentlyScanShippingCode(recentlyVehiclesOrder.getShippingCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesSortShippingCheckModel saveSn(MesSortShippingCheckModel model, String organizeCode, String userInfo) {
|
|
|
|
|
//校验发运单是否存在
|
|
|
|
|
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, organizeCode);
|
|
|
|
|
//零件发运组
|
|
|
|
|
MesPartShippingGroup shippingGroup = getMesPartShippingGroup(organizeCode, orderManagement.getShippingGroupCode());
|
|
|
|
|
//根据条码找到对应的物料号,若物料号一致,则修改扫描flg,将flg改为true.
|
|
|
|
|
//根据扫描的发运单以及前端传的发运单明细,进行匹配,若没有找到扫描的发运单,则提示扫描的发运单号不在此装车单中,请检查数据!。
|
|
|
|
|
//1 跳过
|
|
|
|
|
if(!Objects.isNull(model.getIsPass()) && Objects.equals(MesPcnExtConstWords.ONE,model.getIsPass())){
|
|
|
|
|
Optional<MesShippingOrderManagementDetail> shippingOrderManagementDetailOptional = model.getDetailList().stream().filter(t -> !Objects.equals(t.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).findFirst();
|
|
|
|
|
if(shippingOrderManagementDetailOptional.isPresent()){
|
|
|
|
|
MesShippingOrderManagementDetail mesShippingOrderManagementDetail = shippingOrderManagementDetailOptional.get();
|
|
|
|
|
MesProduceSn produceSn = new MesProduceSn();
|
|
|
|
|
produceSn.setProductSn(model.getSn());
|
|
|
|
|
updateOrderManagementDetails(userInfo, produceSn, orderManagement, mesShippingOrderManagementDetail,MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue(),MesPcnExtConstWords.SHIP_PASS);
|
|
|
|
|
}else{
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】明细已全部扫描完成,请检查数据!", orderManagement.getShippingCode()));
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
//校验条码
|
|
|
|
|
MesProduceSn produceSn = checkSn(model, organizeCode);
|
|
|
|
|
boolean scanFlg = false;
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
|
|
|
|
|
if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) {
|
|
|
|
|
//校验发运单明细顺序
|
|
|
|
|
if(!StringUtils.isEmpty(shippingGroup.getIsEnableShippingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableShippingFailSafe()){
|
|
|
|
|
Optional<MesShippingOrderManagementDetail> first = model.getDetailList().stream().filter(k -> k.getCustInfoSeq().compareTo(detail.getCustInfoSeq()) < 0 && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).findFirst();
|
|
|
|
|
if(first.isPresent()){
|
|
|
|
|
throw new ImppBusiException(String.format("发运单【%s】启用明细顺序防错,序号【%s】前还有未扫描的发运单明细,请检查数据!", orderManagement.getShippingCode(), detail.getCustInfoSeq()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断是否需要排序校验 默认排序则需要校验
|
|
|
|
|
if (!StringUtils.isEmpty(orderManagement.getScanSeqWay()) && orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
|
|
|
|
|
//获取明细中最小的
|
|
|
|
|
Optional<String> minPartNO = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER))
|
|
|
|
|
.min(Comparator.comparingLong(k -> k.getCustInfoSeq())).map(k -> k.getPartNo());
|
|
|
|
|
//若扫描的不是最小顺序 则报错
|
|
|
|
|
if (minPartNO.isPresent() && !minPartNO.get().equals(produceSn.getPartNo())) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误,请检查数据!", model.getSn()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//校验客户零件信息是否存在
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getPartNo(), "erpPartNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getCustPartNo(), "custPartNo", packBean);
|
|
|
|
|
if(!mesCustomerPartRepository.isExitByHql(packBean)){
|
|
|
|
|
throw new ImppBusiException(String.format("零件号【%s】客户零件号【%s】关系不存在,请检查数据!", detail.getPartNo(),detail.getCustPartNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scanFlg = true;
|
|
|
|
|
updateOrderManagementDetails(userInfo, produceSn, orderManagement, detail,MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"扫描完成");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!scanFlg) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), produceSn.getPartNo()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return shippingOrderManagementRepository.getByProperty(recentlyOrderPackBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -550,7 +478,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
//更新发运单
|
|
|
|
|
ConvertBean.serviceModelUpdate(orderManagement,userInfo);
|
|
|
|
|
update(orderManagement);
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
|
|
|
|
|
//不记忆时更新明细
|
|
|
|
|
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
|
|
|
|
@ -600,13 +527,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
MesEquipmentVariable mesEquipmentVariable = mesEquipmentExtService.getMesEquipmentVariable(organizeCode, rule.getEquipmentCode(), rule.getEquipVariableId());
|
|
|
|
|
if (Objects.isNull(mesEquipmentVariable)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("设备【%s】设备变量ID【%s】信息不存在,请检查", rule.getEquipmentCode(), rule.getEquipVariableId());
|
|
|
|
|
//更新装车单状态
|
|
|
|
|
if (!StringUtils.isEmpty(loadingList)) {
|
|
|
|
|
loadingList.setSystemSyncStatus(CommonEnumUtil.FALSE);
|
|
|
|
|
loadingList.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(loadingList, userInfo);
|
|
|
|
|
shippingLoadingCheckService.update(loadingList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//设备通道
|
|
|
|
|
MesEquipmentChannel mesEquipmentChannel = mesEquipmentExtService.getMesEquipmentChannel(organizeCode, rule.getEquipmentCode(), mesEquipmentVariable.getChannel());
|
|
|
|
|