diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java index 4ae7036..a3de9a8 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesJisShippingService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesShippingLoadingCheckService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingLoadingCheckModel; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -11,6 +12,7 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.util.ImppRedis; import lombok.extern.slf4j.Slf4j; @@ -20,9 +22,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -74,8 +75,19 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(loadingVehiclesOrder.organizeCode); DdlPreparedPack.getStringEqualPack(loadingVehiclesOrder.getLoadingOrderNo(), "loadingOrderNo", orderDetailPackBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, orderDetailPackBean); List detailList = vehiclesOrderDetailRepository.findByHqlWhere(orderDetailPackBean); + //是否逆转 + if (vehiclesOrder.getIsReverse() == MesCommonConstant.TRUE_INTEGER) { + // 逆转 + for (int i = 0; i < detailList.size(); i += vehiclesOrder.getReverseQuantity()) { + if (i + vehiclesOrder.getReverseQuantity() - 1 < detailList.size()) { + Collections.reverse(detailList.subList(i, i + vehiclesOrder.getReverseQuantity())); + } + } + } + //根据扫描的装车单找到是否先装车配置 //若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。 if (vehiclesOrder.getIsFirstInstall() == MesCommonConstant.FALSE_INTEGER) { @@ -97,32 +109,8 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS } MesShippingLoadingCheckModel model = new MesShippingLoadingCheckModel(); - //根据是否启用记忆 - //若启用,则获取redis数据,redis中数据为空,则获取装车单明细数据 若redis中数据不为空,则根据装车单明细中发运单号,将扫描过的标记。 若不启动则获取装车单明细数据 - if (vehiclesOrder.getIsEnableMemory() == MesCommonConstant.TRUE_INTEGER) { - - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(loadingVehiclesOrder.getOrganizeCode()).append(":").append(loadingVehiclesOrder.getLoadingOrderNo()).append(":"); - - //获取redis数据 - if (redisMesPcn.hasKey(stringBuilder.toString())) { - //redis中数据不为空 - List isScanDetailList = (List) redisMesPcn.getObject(stringBuilder.toString()); - - AtomicReference isScanCount = new AtomicReference<>(0); - //根据装车单明细中发运单号,将扫描过的标记 - detailList.forEach(k -> { - Optional optional = isScanDetailList.stream().filter(scanDetail -> scanDetail.getLoadingOrderNo().equals(k.getLoadingOrderNo())).findFirst(); - if (optional.isPresent()) { - k.setTempStatus(MesCommonConstant.TRUE_INTEGER); - isScanCount.getAndSet(isScanCount.get() + 1); - } - }); - - model.setIsScanCount(isScanCount.get()); - } - - } + Long count = detailList.stream().filter(k -> k.getStatus() == MesExtEnumUtil.LOADING_DETAIL_ORDER_DETAIL_STATUS.SCAN.getValue()).count(); + model.setIsScanCount(count.intValue()); //查询最近扫描完成的装车单号 DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(loadingVehiclesOrder.organizeCode); @@ -155,6 +143,13 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS @Override public MesShippingLoadingCheckModel saveVehiclesOrderAndDetail(MesShippingLoadingCheckModel model, String org) { + //校验装车单是否存在 + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org); + DdlPreparedPack.getStringEqualPack(model.getLoadingOrderNo(), "loadingOrderNo", orderPackBean); + MesLoadingVehiclesOrder vehiclesOrder = vehiclesOrderRepository.getByProperty(orderPackBean); + if (StringUtils.isEmpty(vehiclesOrder)) { + throw new ImppBusiException(String.format("【%s】此装车单不存在,请检查数据!", model.getLoadingOrderNo())); + } //校验发运单是否存在 DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(org); @@ -174,6 +169,19 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS } mesLoadingVehiclesOrderDetail.setTempStatus(MesCommonConstant.TRUE_INTEGER); mesLoadingVehiclesOrderDetail.setTempStatusVal("扫描完成"); + + //根据是否启动记忆判断 若启用记忆,则根据保存数据库 + if (vehiclesOrder.getIsEnableMemory() == MesCommonConstant.TRUE_INTEGER) { + + vehiclesOrder.setStatus(MesExtEnumUtil.LOADING_ORDER_STATUS.LOADING.getValue()); + ConvertBean.serviceModelUpdate(vehiclesOrder, AuthUtil.getSessionUser().getUserName()); + vehiclesOrderRepository.save(vehiclesOrder); + + mesLoadingVehiclesOrderDetail.setStatus(MesExtEnumUtil.LOADING_DETAIL_ORDER_DETAIL_STATUS.SCAN.getValue()); + ConvertBean.serviceModelUpdate(mesLoadingVehiclesOrderDetail, AuthUtil.getSessionUser().getUserName()); + vehiclesOrderDetailRepository.save(mesLoadingVehiclesOrderDetail); + } + scanflg = true; } } @@ -182,21 +190,6 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS throw new ImppBusiException(String.format("【%s】扫描的发运单号不在【%s】此装车单中,请检查数据!", model.getShippingOrderNo(), model.getLoadingOrderNo())); } - //校验装车单是否存在 - DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(model.getLoadingOrderNo(), "loadingOrderNo", orderPackBean); - MesLoadingVehiclesOrder vehiclesOrder = vehiclesOrderRepository.getByProperty(orderPackBean); - if (StringUtils.isEmpty(vehiclesOrder)) { - throw new ImppBusiException(String.format("【%s】此装车单不存在,请检查数据!", model.getLoadingOrderNo())); - } - if (vehiclesOrder.getIsEnableMemory() == MesCommonConstant.TRUE_INTEGER) { - - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(org).append(":").append(model.getLoadingOrderNo()).append(":"); - - redisMesPcn.putHash(stringBuilder.toString(), MesPcnConstWords.BIND_KEY_PART, model.getVehiclesOrderDetailList(), -1); - } - Long count = model.getVehiclesOrderDetailList().stream().filter(k -> k.getTempStatus() == MesCommonConstant.TRUE_INTEGER).count(); model.setIsScanCount(count.intValue()); @@ -211,12 +204,16 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS //装车单主表 vehiclesOrder.setStatus(MesExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getValue()); + ConvertBean.serviceModelUpdate(vehiclesOrder, AuthUtil.getSessionUser().getUserName()); //装车单明细 DdlPackBean vehiclesOrderDetailPackBean = DdlPackBean.getDdlPackBean(org); DdlPreparedPack.getStringEqualPack(vehiclesOrder.getLoadingOrderNo(), "loadingOrderNo", vehiclesOrderDetailPackBean); List vehiclesOrderDetailList = vehiclesOrderDetailRepository.findByHqlWhere(vehiclesOrderDetailPackBean); - vehiclesOrderDetailList.forEach(k -> k.setStatus(MesExtEnumUtil.LOADING_DETAIL_ORDER_STATUS.LOADED.getValue())); + vehiclesOrderDetailList.forEach(k -> { + k.setStatus(MesExtEnumUtil.LOADING_DETAIL_ORDER_STATUS.LOADED.getValue()); + ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); + }); vehiclesOrderDetailRepository.saveAll(vehiclesOrderDetailList); vehiclesOrderRepository.save(vehiclesOrder); @@ -248,15 +245,34 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS DdlPreparedPack.getStringEqualPack(vehiclesOrder.getLoadingOrderNo(), "loadingOrderNo", vehiclesOrderDetailPackBean); List vehiclesOrderDetailList = vehiclesOrderDetailRepository.findByHqlWhere(vehiclesOrderDetailPackBean); - orderManagementList.forEach(k -> k.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue())); - orderManagementDetailList.forEach(k -> k.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue())); - produceSnList.forEach(k -> k.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue())); + //发运单 + orderManagementList.forEach(k -> { + k.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); + ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); + }); + //发运单明细 + orderManagementDetailList.forEach(k -> { + k.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); + ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); + }); + //条码 + produceSnList.forEach(k -> { + k.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); + ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); + }); + + //装车单 vehiclesOrder.setStatus(MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue()); + ConvertBean.serviceModelUpdate(vehiclesOrder, AuthUtil.getSessionUser().getUserName()); + + //装车单明细 vehiclesOrderDetailList.forEach(k -> { - k.setStatus(MesExtEnumUtil.LOADING_DETAIL_ORDER_STATUS.SHIPPING.getValue()); + k.setStatus(MesExtEnumUtil.LOADING_DETAIL_ORDER_DETAIL_STATUS.SHIPPING.getValue()); k.setShippingStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); + ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); }); + //报工数据 List jisShippingList = jisShippingService.getJisShipping(orderManagementDetailList, org); //保存当前发运单明细报工 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index 3418924..a84305d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -147,12 +147,12 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService //根据条码找到对应的物料号,若物料号一致,则修改扫描flg,将flg改为true. boolean scanFlg = false; for (MesShippingOrderManagementDetail detail : model.getDetailList()) { - if (detail.getPartNo().equals(produceSn.getPartNo())) { + if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode())) { scanFlg = true; + detail.setBarcode(produceSn.getSerialNumber()); if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); } - detail.setBarcode(produceSn.getSerialNumber()); break; } }