|
|
|
@ -48,7 +48,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPartShippingGroupRepository partShippingGroupRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesLoadingListRepository ListRepository;
|
|
|
|
|
private MesLoadingListRepository listRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesLoadingListDetailRepository listDetailRepository;
|
|
|
|
@ -64,7 +64,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验发运单是否存在
|
|
|
|
|
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(), "shippingCode", orderManagementPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement)) {
|
|
|
|
@ -81,17 +81,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
|
|
|
|
|
if (orderManagement.getIsLoading() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement.getOrderCode())) {
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement.getLoadingListId()) || orderManagement.getLoadingListId() == 0) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没绑定装车单号,请检查数据!", shippingOrderManagement.getShippingCode()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(orderManagement.getLoadingListId(), "id", orderDetailPackBean);
|
|
|
|
|
MesLoadingList loadingList = ListRepository.getByProperty(orderDetailPackBean);
|
|
|
|
|
MesLoadingList loadingList = listRepository.getByProperty(orderDetailPackBean);
|
|
|
|
|
if (StringUtils.isEmpty(loadingList)) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没生成装车单,请检查数据!", shippingOrderManagement.getShippingCode()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//判断是否先装车
|
|
|
|
|
if (orderManagement.getIsFirstInstall() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
|
|
|
|
@ -103,6 +105,29 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getDescription()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断是否需要排序校验 默认排序则需要校验
|
|
|
|
|
if (loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
|
|
|
|
|
|
|
|
|
|
//获取此装车单中 状态为创建 已发布 发运中 seq最小的
|
|
|
|
|
List<Integer> statusList = new ArrayList<>();
|
|
|
|
|
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue());
|
|
|
|
|
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue());
|
|
|
|
|
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
|
|
|
|
|
DdlPackBean sortOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "loadingListId", sortOrderPackBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(statusList, "status", sortOrderPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, sortOrderPackBean);
|
|
|
|
|
MesShippingOrderManagement sortTempOrder = shippingOrderManagementRepository.getByProperty(sortOrderPackBean);
|
|
|
|
|
|
|
|
|
|
//若没有最小的,则此装车单 没有发运单扫描完成
|
|
|
|
|
if (sortTempOrder.getId() != orderManagement.getId()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误,请扫描【%s】发运单!",
|
|
|
|
|
shippingOrderManagement.getShippingCode(), sortTempOrder.getOrderCode()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesSortShippingCheckModel model = new MesSortShippingCheckModel();
|
|
|
|
@ -111,8 +136,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderDetailPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"custInfoSeq"}, orderDetailPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderDetailPackBean);
|
|
|
|
|
|
|
|
|
|
detailList.forEach(k -> {
|
|
|
|
@ -125,7 +151,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
model.setIsScanCount(count.intValue());
|
|
|
|
|
|
|
|
|
|
//查询最近扫描完成的装车单号
|
|
|
|
|
DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
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);
|
|
|
|
@ -149,12 +175,24 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
//校验发运单是否存在
|
|
|
|
|
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, org);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据条码找到对应的物料号,若物料号一致,则修改扫描flg,将flg改为true.
|
|
|
|
|
boolean scanFlg = false;
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
|
|
|
|
|
if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode())) {
|
|
|
|
|
scanFlg = true;
|
|
|
|
|
detail.setBarcode(produceSn.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
//判断是否需要排序校验 默认排序则需要校验
|
|
|
|
|
if (orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
|
|
|
|
|
//获取明细中最小的
|
|
|
|
|
Long minSeq = model.getDetailList().stream().mapToLong(k -> k.getCustInfoSeq()).min().getAsLong();
|
|
|
|
|
//若扫描的不是最小顺序 则报错
|
|
|
|
|
if (minSeq != detail.getCustInfoSeq()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误,请检查数据!", model.getSn()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
|
|
|
|
|
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
|
|
|
|
|
|
|
|
|
|