|
|
|
@ -71,13 +71,13 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
|
|
|
|
|
public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) {
|
|
|
|
|
if (!Objects.isNull(model.getLastShippingDetailId())) {
|
|
|
|
|
//校验目视单是否已经扫描
|
|
|
|
|
if (model.getDetailList().stream().anyMatch(t -> t.getVisualOrderNo().equals(model.getSn()))) {
|
|
|
|
|
if (model.getDetailList().stream().anyMatch(t -> !StringUtils.isEmpty(t.getVisualOrderNo()) && t.getVisualOrderNo().equals(model.getSn()))) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此目视单已经扫描过,请检查数据!", model.getSn()));
|
|
|
|
|
}
|
|
|
|
|
//更新单据信息
|
|
|
|
|
model.getDetailList().stream().filter(t -> t.getId().equals(model.getLastShippingDetailId())).forEach(detail -> {
|
|
|
|
|
detail.setVisualOrderNo(model.getSn());
|
|
|
|
|
updateOrderManagementDetails(orderManagement, detail, getWorkOrder(model, detail.getBarcode()), model.getUserInfo());
|
|
|
|
|
updateOrderManagementDetails(orderManagement, detail, getWorkOrder(model, detail), model.getUserInfo());
|
|
|
|
|
});
|
|
|
|
|
model.setLastShippingDetailId(null);
|
|
|
|
|
} else {
|
|
|
|
@ -104,18 +104,22 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesWorkOrder getWorkOrder(MesSortShippingCheckModel model, String barCode) {
|
|
|
|
|
private MesWorkOrder getWorkOrder(MesSortShippingCheckModel model, MesShippingOrderManagementDetail detail) {
|
|
|
|
|
MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getSn());
|
|
|
|
|
if (Objects.isNull(workOrder)) {
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】信息不存在,请检查数据!", model.getSn()));
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】不存在,请检查数据!", model.getSn()));
|
|
|
|
|
}
|
|
|
|
|
//校验状态
|
|
|
|
|
//校验目视单状态
|
|
|
|
|
if (MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() != workOrder.getWorkOrderStatus() || MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue() != workOrder.getQcStatus()) {
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】工单状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getQcStatus())));
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(workOrder.getQcStatus())));
|
|
|
|
|
}
|
|
|
|
|
//校验条码是否匹配
|
|
|
|
|
if (!Objects.equals(barCode, workOrder.getSn())) {
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】不匹配!", model.getSn(), workOrder.getSn(), barCode));
|
|
|
|
|
if (!Objects.equals(detail.getBarcode(), workOrder.getSn())) {
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", model.getSn(), workOrder.getSn(), detail.getBarcode()));
|
|
|
|
|
}
|
|
|
|
|
//校验零件是否匹配
|
|
|
|
|
if (!Objects.equals(detail.getPartNo(), workOrder.getPartNo())) {
|
|
|
|
|
throw new ImppBusiException(String.format("目视单【%s】零件【%s】与发运单零件【%s】,不匹配!", model.getSn(), workOrder.getPartNo(), detail.getPartNo()));
|
|
|
|
|
}
|
|
|
|
|
return workOrder;
|
|
|
|
|
}
|
|
|
|
@ -171,7 +175,7 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
|
|
|
|
|
|
|
|
|
|
private MesProduceSn getMesProduceSn(String organizeCode, String productSn) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productSn, "productSn", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productSn, "custSn", packBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
|
|
|
|
|
return produceSnRepository.getByProperty(packBean);
|
|
|
|
|
}
|
|
|
|
|