|
|
|
@ -104,31 +104,56 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue());
|
|
|
|
|
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
|
|
|
|
|
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
|
|
|
|
|
List<Integer> status = new ArrayList<>();
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICSING.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICS.getValue());
|
|
|
|
|
//最后一个扫描完成的发运单信息
|
|
|
|
|
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(status, "status", orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderBy("seq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(),orderManagementPackBean);
|
|
|
|
|
MesShippingOrderManagement management = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
|
|
|
|
|
//是否存在
|
|
|
|
|
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
|
|
|
|
|
if(!Objects.isNull(management)){
|
|
|
|
|
DdlPreparedPack.getNumberBiggerPack(management.getSeq(), "seq", orderManagementPackBean);
|
|
|
|
|
}
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(statusForCheckList, "status", orderManagementPackBean);
|
|
|
|
|
boolean exists = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean);
|
|
|
|
|
if (exists) {
|
|
|
|
|
List<Integer> status = new ArrayList<>();
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICSING.getValue());
|
|
|
|
|
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICS.getValue());
|
|
|
|
|
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumberBiggerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(status, "status", orderManagementPackBean);
|
|
|
|
|
exists = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean);
|
|
|
|
|
if((!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass()) || exists){
|
|
|
|
|
if((!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass())){
|
|
|
|
|
//updateLoadingListClose(statusForCheckList,orderManagement,shippingOrderManagement.getModifyUser());
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "id",packBean);
|
|
|
|
|
shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","remark"},
|
|
|
|
|
new Object[]{shippingOrderManagement.getModifyUser(), TimeTool.getNowTime(true),MesPcnExtConstWords.STRONGER_PASS}, packBean);
|
|
|
|
|
}else{
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单,请检查数据!",
|
|
|
|
|
orderManagement.getShippingCode(), orderManagement.getSeq()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//根据发运单查询装车单明细信息
|
|
|
|
|
boolean isUpdate = false;
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(),"shippingCode",packBean);
|
|
|
|
|
MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean);
|
|
|
|
|
if(!Objects.isNull(listDetail)){
|
|
|
|
|
packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean);
|
|
|
|
|
MesLoadingList loadingList = listRepository.getByProperty(packBean);
|
|
|
|
|
if(!Objects.isNull(loadingList)){
|
|
|
|
|
orderManagement.setOrderCode(loadingList.getOrderCode());
|
|
|
|
|
orderManagement.setLoadingListId(loadingList.getId());
|
|
|
|
|
isUpdate = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
|
|
|
|
@ -178,7 +203,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Long count = detailList.stream().filter(k -> k.getIsScanFlg() == MesCommonConstant.TRUE_INTEGER).count();
|
|
|
|
|
Long count = detailList.stream().filter(k -> Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).count();
|
|
|
|
|
model.setIsScanCount(count.intValue());
|
|
|
|
|
|
|
|
|
|
//查询最近扫描完成的装车单号
|
|
|
|
@ -193,6 +218,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
|
|
|
|
|
model.setRecentlyScanShippingCode(recentlyVehiclesOrder.getShippingCode());
|
|
|
|
|
}
|
|
|
|
|
//发运单关联装车单字段赋值
|
|
|
|
|
if(isUpdate){
|
|
|
|
|
ConvertBean.serviceModelUpdate(orderManagement,shippingOrderManagement.getModifyUser());
|
|
|
|
|
update(orderManagement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
@ -239,6 +269,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
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(),"扫描完成");
|
|
|
|
@ -427,9 +464,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
|
|
|
|
|
private void checkStatus(MesSortShippingCheckModel model, MesProduceSn produceSn) {
|
|
|
|
|
//校验产品条码状态 必须是状态为已下线条码
|
|
|
|
|
if (produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】状态的条码", model.getSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()),
|
|
|
|
|
MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getDescription()));
|
|
|
|
|
if (produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue() && produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】或【%s】状态的条码", model.getSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()),
|
|
|
|
|
MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getDescription(),MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getDescription()));
|
|
|
|
|
}
|
|
|
|
|
//校验产品质量状态 必须是状态为合格条码
|
|
|
|
|
if (produceSn.getQcStatus() != MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) {
|
|
|
|
@ -471,20 +508,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : orderManagementDetailList) {
|
|
|
|
|
//根据扫描的条码查询条码是否存在
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
if (orderManagement.getIsEnableMemory() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
detail.setBarcode(StringUtil.isEmpty(detail.getBarcode()) ? model.getSn() : detail.getBarcode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(StringUtil.isEmpty(detail.getBarcode()) ? model.getSn() : detail.getBarcode(), "productSn", packBean);
|
|
|
|
|
if (Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean);
|
|
|
|
|
} else {
|
|
|
|
|
List<MesShippingOrderManagementDetail> mesShippingOrderManagementDetails = custInfoSeqMap.get(detail.getCustInfoSeq());
|
|
|
|
|
MesShippingOrderManagementDetail managementDetail = mesShippingOrderManagementDetails.get(0);
|
|
|
|
|
detail.setRemark(managementDetail.getRemark());
|
|
|
|
|
detail.setStatus(managementDetail.getStatus());
|
|
|
|
|
detail.setBarcode(StringUtil.isEmpty(managementDetail.getBarcode()) ? model.getSn() : detail.getBarcode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(StringUtil.isEmpty(managementDetail.getBarcode()) ? model.getSn() : detail.getBarcode(), "productSn", packBean);
|
|
|
|
|
detail.setBarcode(managementDetail.getBarcode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean);
|
|
|
|
|
}
|
|
|
|
|
detail.setActualQty(1);
|
|
|
|
|
ConvertBean.serviceModelUpdate(detail, userInfo);
|
|
|
|
|
if(!StringUtils.isEmpty(detail.getBarcode())){
|
|
|
|
|
if(!StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
|
|
|
|
|
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
|
|
|
|
|
if(!Objects.isNull(produceSn)){
|
|
|
|
@ -510,12 +546,18 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
|
|
|
|
|
ConvertBean.serviceModelUpdate(vehiclesOrderDetail, userInfo);
|
|
|
|
|
vehiclesOrderDetailRepository.save(vehiclesOrderDetail);
|
|
|
|
|
}
|
|
|
|
|
if(StringUtils.isEmpty(orderManagement.getOrderCode())){
|
|
|
|
|
if(StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())){
|
|
|
|
|
//保存当前发运单明细报工
|
|
|
|
|
jisShippingRepository.saveAll(getMesJisShippings(organizeCode, orderManagement));
|
|
|
|
|
}else{
|
|
|
|
|
//查询装车单明细
|
|
|
|
|
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getOrderCode(), "orderCode", orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(orderManagement.getLoadingListId(),"pid",orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getNumberSmallerEqualPack(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"status",orderManagementPackBean);
|
|
|
|
|
List<MesLoadingListDetail> listDetails = vehiclesOrderDetailRepository.findByHqlWhere(orderManagementPackBean);
|
|
|
|
|
if(CollectionUtils.isEmpty(listDetails)) return;
|
|
|
|
|
orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getInPackList(listDetails.stream().map(MesLoadingListDetail::getShippingCode).collect(Collectors.toList()), "shippingCode", orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getNumNOEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean);
|
|
|
|
|
boolean exitByHql = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean);
|
|
|
|
|
//2.装车单中所有发运单全部变成发运回传
|
|
|
|
|