|
|
|
@ -0,0 +1,420 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesSortShippingCheckService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingCheckModel;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
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.impp.framework.boot.exception.ImppBusiException;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ImppRedis;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description :
|
|
|
|
|
* @Reference :
|
|
|
|
|
* @Author :
|
|
|
|
|
* @CreateDate : 2024-04-26 15:38
|
|
|
|
|
* @Modify:
|
|
|
|
|
**/
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class MesSortShippingCheckService implements IMesSortShippingCheckService {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesShippingOrderManagementRepository shippingOrderManagementRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesShippingOrderManagementDetailRepository shippingOrderManagementDetailRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnRepository produceSnRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPartShippingGroupRepository partShippingGroupRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesLoadingVehiclesOrderRepository vehiclesOrderRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesLoadingVehiclesOrderDetailRepository vehiclesOrderDetailRepository;
|
|
|
|
|
|
|
|
|
|
@Resource(name = MesPcnConstWords.REDIS_RES_PCN)
|
|
|
|
|
private ImppRedis redisMesPcn;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesSortShippingCheckModel queryShippingOrderNo(MesShippingOrderManagement shippingOrderManagement) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验装车单是否存在
|
|
|
|
|
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingOrderNo(), "shippingOrderNo", orderManagementPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement)) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单不存在,请检查数据!", shippingOrderManagement.getShippingOrderNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//校验装车单状态 必须是未装车条码
|
|
|
|
|
if (orderManagement.getStatus() != MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单状态为【%s】,请选择状态为【%s】状态的发运单", shippingOrderManagement.getShippingOrderNo(), orderManagement.getStatus(),
|
|
|
|
|
MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
|
|
|
|
|
if (orderManagement.getIsLoading() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingOrderNo(), "shippingOrderNo", orderDetailPackBean);
|
|
|
|
|
MesLoadingVehiclesOrderDetail vehiclesOrderDetail = vehiclesOrderDetailRepository.getByProperty(orderDetailPackBean);
|
|
|
|
|
if (StringUtils.isEmpty(vehiclesOrderDetail)) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没生成装车单,请检查数据!", shippingOrderManagement.getShippingOrderNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断是否先装车
|
|
|
|
|
if (orderManagement.getIsFirstInstall() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
|
|
|
|
|
//是否进行完装车校验
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(vehiclesOrderDetail.getLoadingOrderNo(), "loadingOrderNo", orderPackBean);
|
|
|
|
|
MesLoadingVehiclesOrder vehiclesOrder = vehiclesOrderRepository.getByProperty(orderPackBean);
|
|
|
|
|
//若没进行装车校验,则提示【%s】此发运单对应的【%s】此装车单状态为【%s】,请选择状态为【%s】的数据
|
|
|
|
|
if (vehiclesOrder.getStatus() != MesPcnExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getValue()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单对应的【%s】此装车单状态为【%s】,请选择状态为【%s】的数据!", shippingOrderManagement.getShippingOrderNo(),
|
|
|
|
|
vehiclesOrder.getLoadingOrderNo(), vehiclesOrder.getStatus(), MesPcnExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getDescription()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesSortShippingCheckModel model = new MesSortShippingCheckModel();
|
|
|
|
|
if (!StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
|
|
|
|
|
model.setIsScanLocationCode(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingOrderNo(), "shippingOrderNo", orderDetailPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderDetailPackBean);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询最近扫描完成的装车单号
|
|
|
|
|
DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.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.setShippingOrderNo(orderManagement.getShippingOrderNo());
|
|
|
|
|
if (!StringUtils.isEmpty(recentlyVehiclesOrder)) {
|
|
|
|
|
|
|
|
|
|
model.setRecentlyScanShippingOrderNo(recentlyVehiclesOrder.getShippingOrderNo());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesSortShippingCheckModel saveSn(MesSortShippingCheckModel model, String org) {
|
|
|
|
|
|
|
|
|
|
//校验条码
|
|
|
|
|
MesProduceSn produceSn = checkMesProduceSn(model, org);
|
|
|
|
|
|
|
|
|
|
//校验发运单是否存在
|
|
|
|
|
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, org);
|
|
|
|
|
|
|
|
|
|
//根据条码找到对应的物料号,若物料号一致,则修改扫描flg,将flg改为true.
|
|
|
|
|
boolean scanFlg = false;
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
|
|
|
|
|
if (detail.getPartNo().equals(produceSn.getPartNo())) {
|
|
|
|
|
scanFlg = true;
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
|
|
|
|
|
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
|
|
|
|
|
}
|
|
|
|
|
detail.setSn(produceSn.getSerialNumber());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!scanFlg) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), produceSn.getPartNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Long count = model.getDetailList().stream().filter(k -> k.getIsScanFlg() == MesCommonConstant.TRUE_INTEGER).count();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//当前发运单全部扫描完成 并且不需要扫位置码
|
|
|
|
|
if (count.intValue() == model.getDetailList().size() && StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
|
|
|
|
|
|
|
|
|
|
//保存数据库
|
|
|
|
|
saveDate(orderManagement, model, org);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesSortShippingCheckModel saveSnAndLocationCode(MesSortShippingCheckModel model, String org) {
|
|
|
|
|
|
|
|
|
|
//校验条码
|
|
|
|
|
MesProduceSn produceSn = checkMesProduceSn(model, org);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验发运单是否存在
|
|
|
|
|
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, org);
|
|
|
|
|
|
|
|
|
|
//根据条码找到对应的物料号,若物料号一致,则修改扫描flg,将flg改为true.
|
|
|
|
|
boolean scanFlg = false;
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
|
|
|
|
|
if (detail.getPartNo().equals(produceSn.getPartNo())) {
|
|
|
|
|
scanFlg = true;
|
|
|
|
|
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
|
|
|
|
|
detail.setSn(produceSn.getSerialNumber());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!scanFlg) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), produceSn.getPartNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Long count = model.getDetailList().stream().filter(k -> k.getIsScanFlg() == MesCommonConstant.TRUE_INTEGER).count();
|
|
|
|
|
|
|
|
|
|
//当前发运单全部扫描完成
|
|
|
|
|
if (count.intValue() == model.getDetailList().size()) {
|
|
|
|
|
|
|
|
|
|
//保存数据库
|
|
|
|
|
saveDate(orderManagement, model, org);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesShippingOrderManagement queryShippingOrderNoByAutoPushOrder(String shippingGroupNo, String org) {
|
|
|
|
|
|
|
|
|
|
//查询最近扫描完成的装车单号
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue(), "status", orderPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"seq"}, orderPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderPackBean);
|
|
|
|
|
|
|
|
|
|
return orderManagement;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesProduceSn checkMesProduceSn(MesSortShippingCheckModel model, String org) {
|
|
|
|
|
DdlPackBean productPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(model.getSn(), "serialNumber", productPackBean);
|
|
|
|
|
MesProduceSn produceSn = produceSnRepository.getByProperty(productPackBean);
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(produceSn)) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此产品条码不存在,请检查数据!", model.getSn()));
|
|
|
|
|
}
|
|
|
|
|
//校验产品条码状态 必须是状态为已下线条码
|
|
|
|
|
if (produceSn.getSnStatus() != MesPcnExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】状态的条码", model.getSn(), produceSn.getSnStatus(),
|
|
|
|
|
MesPcnExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()));
|
|
|
|
|
}
|
|
|
|
|
//校验产品质量状态 必须是状态为合格条码
|
|
|
|
|
if (produceSn.getQcStatus() != MesPcnExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码质量状态为【%s】,请选择状态为【%s】状态的条码", model.getSn(), produceSn.getQcStatus(),
|
|
|
|
|
MesPcnExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Optional optional = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getSn()) && k.getSn().equals(model.getSn())).findFirst();
|
|
|
|
|
if (optional.isPresent()) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此条码已经扫描过,请检查数据!", model.getSn()));
|
|
|
|
|
}
|
|
|
|
|
return produceSn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesShippingOrderManagement checkMesShippingOrderManagement(MesSortShippingCheckModel model, String org) {
|
|
|
|
|
//校验发运单是否存在
|
|
|
|
|
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(model.getShippingOrderNo(), "shippingOrderNo", orderManagementPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
|
|
|
|
|
if (StringUtils.isEmpty(orderManagement)) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单不存在,请检查数据!", model.getShippingOrderNo()));
|
|
|
|
|
}
|
|
|
|
|
return orderManagement;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveDate(MesShippingOrderManagement orderManagement, MesSortShippingCheckModel model, String org) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
|
|
|
|
|
if (orderManagement.getIsLoading() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(model.getShippingOrderNo(), "shippingOrderNo", orderDetailPackBean);
|
|
|
|
|
MesLoadingVehiclesOrderDetail vehiclesOrderDetail = vehiclesOrderDetailRepository.getByProperty(orderDetailPackBean);
|
|
|
|
|
if (StringUtils.isEmpty(vehiclesOrderDetail)) {
|
|
|
|
|
throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没生成装车单,请检查数据!", model.getShippingOrderNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//发运单状态修改为校验完成
|
|
|
|
|
orderManagement.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.VERIFICATION_COMPLETED.getValue());
|
|
|
|
|
|
|
|
|
|
//发运单明细状态修改为校验完成
|
|
|
|
|
DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingOrderNo(), "shippingOrderNo", orderManagementDetailPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> orderManagementDetailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean);
|
|
|
|
|
|
|
|
|
|
List<String> snList = new ArrayList<>();
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : orderManagementDetailList) {
|
|
|
|
|
detail.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.VERIFICATION_COMPLETED.getValue());
|
|
|
|
|
Optional<MesShippingOrderManagementDetail> optional1 =
|
|
|
|
|
model.getDetailList().stream().filter(k -> k.getShippingOrderNo().equals(detail.getShippingOrderNo())).findFirst();
|
|
|
|
|
detail.setSn(optional1.get().getSn());
|
|
|
|
|
snList.add(optional1.get().getSn());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DdlPackBean producePackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getInPackList(snList, "serialNumber", producePackBean);
|
|
|
|
|
List<MesProduceSn> produceSnList = produceSnRepository.findByHqlWhere(producePackBean);
|
|
|
|
|
//todo
|
|
|
|
|
//条码校验完成
|
|
|
|
|
produceSnList.forEach(k -> k.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.CHECKED.getValue()));
|
|
|
|
|
|
|
|
|
|
//判断是否先装车
|
|
|
|
|
if (orderManagement.getIsFirstInstall() == MesCommonConstant.TRUE_INTEGER) {
|
|
|
|
|
|
|
|
|
|
//是先装车
|
|
|
|
|
//判断此装车单下所有的发运单扫描完成
|
|
|
|
|
//修改对应装车单 装车单明细 发运单 发运明细 条码数据 报工给wms。
|
|
|
|
|
|
|
|
|
|
//剩余的发运单号
|
|
|
|
|
DdlPackBean orderManagementAllPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getLoadingOrderNo(), "loadingOrderNo", orderManagementAllPackBean);
|
|
|
|
|
List<MesShippingOrderManagement> orderManagementAllList = shippingOrderManagementRepository.findByHqlWhere(orderManagementAllPackBean);
|
|
|
|
|
|
|
|
|
|
//排序校验完成的发运单数量
|
|
|
|
|
Long completed =
|
|
|
|
|
orderManagementAllList.stream().filter(k -> k.getStatus() == MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.VERIFICATION_COMPLETED.getValue()).count();
|
|
|
|
|
|
|
|
|
|
//若剩余的发运单号都校验完成
|
|
|
|
|
if (completed.intValue() + 1 == orderManagementAllList.size()) {
|
|
|
|
|
|
|
|
|
|
// //修改对应装车单 装车单明细 发运单 发运明细 条码数据 报工给wms。
|
|
|
|
|
|
|
|
|
|
//修改当前发运单状态
|
|
|
|
|
orderManagement.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
|
|
|
|
|
|
|
|
|
|
//修改当前发运单明细状态
|
|
|
|
|
orderManagementDetailList.forEach(k -> k.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()));
|
|
|
|
|
|
|
|
|
|
//修改当前发运单明细条码状态
|
|
|
|
|
produceSnList.forEach(k -> k.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()));
|
|
|
|
|
|
|
|
|
|
//装车单
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getLoadingOrderNo(), "loadingOrderNo", orderPackBean);
|
|
|
|
|
MesLoadingVehiclesOrder vehiclesOrder = vehiclesOrderRepository.getByProperty(orderPackBean);
|
|
|
|
|
vehiclesOrder.setStatus(MesPcnExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue());
|
|
|
|
|
|
|
|
|
|
//装车单明细
|
|
|
|
|
DdlPackBean vehiclesOrderDetailPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(vehiclesOrder.getLoadingOrderNo(), "loadingOrderNo", vehiclesOrderDetailPackBean);
|
|
|
|
|
List<MesLoadingVehiclesOrderDetail> vehiclesOrderDetailList = vehiclesOrderDetailRepository.findByHqlWhere(vehiclesOrderDetailPackBean);
|
|
|
|
|
vehiclesOrderDetailList.forEach(k -> {
|
|
|
|
|
k.setStatus(MesPcnExtEnumUtil.LOADING_DETAIL_ORDER_STATUS.SHIPPING.getValue());
|
|
|
|
|
k.setShippingStatus(MesPcnExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//此发运单所在装车单对应剩余发运单
|
|
|
|
|
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringNoEqualPack(model.getShippingOrderNo(), "shippingOrderNo", orderManagementPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getLoadingOrderNo(), "shippingOrderNo", orderManagementPackBean);
|
|
|
|
|
List<MesShippingOrderManagement> orderManagementtSurplusList = shippingOrderManagementRepository.findByHqlWhere(orderManagementPackBean);
|
|
|
|
|
orderManagementtSurplusList.forEach(k -> k.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()));
|
|
|
|
|
|
|
|
|
|
//此发运单所在装车单对应剩余发运单明细
|
|
|
|
|
List<MesShippingOrderManagementDetail> orderManagementDetailSurplusList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementPackBean);
|
|
|
|
|
orderManagementDetailSurplusList.forEach(k -> k.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()));
|
|
|
|
|
|
|
|
|
|
//剩余发运单明细的条码
|
|
|
|
|
List<String> snSurplusList = orderManagementDetailSurplusList.stream().map(k -> k.getSn()).collect(Collectors.toList());
|
|
|
|
|
producePackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getInPackList(snSurplusList, "serialNumber", producePackBean);
|
|
|
|
|
List<MesProduceSn> produceSnSurplusList = produceSnRepository.findByHqlWhere(producePackBean);
|
|
|
|
|
produceSnSurplusList.forEach(k -> k.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//保存剩余发运单
|
|
|
|
|
shippingOrderManagementRepository.saveAll(orderManagementtSurplusList);
|
|
|
|
|
//保存当前发运单
|
|
|
|
|
shippingOrderManagementRepository.save(orderManagement);
|
|
|
|
|
//保存剩余发运单明细
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailSurplusList);
|
|
|
|
|
//保存当前发运单明细
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
|
|
|
|
|
//保存剩余发运单条码
|
|
|
|
|
produceSnRepository.saveAll(produceSnSurplusList);
|
|
|
|
|
//保存当前发运单条码
|
|
|
|
|
produceSnRepository.saveAll(produceSnList);
|
|
|
|
|
//保存装车单明细
|
|
|
|
|
vehiclesOrderDetailRepository.saveAll(vehiclesOrderDetailList);
|
|
|
|
|
//保存装车单
|
|
|
|
|
vehiclesOrderRepository.save(vehiclesOrder);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
produceSnRepository.saveAll(produceSnList);
|
|
|
|
|
shippingOrderManagementRepository.save(orderManagement);
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
produceSnRepository.saveAll(produceSnList);
|
|
|
|
|
shippingOrderManagementRepository.save(orderManagement);
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
//否装车
|
|
|
|
|
|
|
|
|
|
//发运单状态修改为校验完成
|
|
|
|
|
orderManagement.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
|
|
|
|
|
|
|
|
|
|
//发运单明细状态修改为校验完成
|
|
|
|
|
DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingOrderNo(), "shippingOrderNo", orderManagementDetailPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> orderManagementDetailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean);
|
|
|
|
|
|
|
|
|
|
List<String> snList = new ArrayList<>();
|
|
|
|
|
for (MesShippingOrderManagementDetail detail : orderManagementDetailList) {
|
|
|
|
|
detail.setStatus(MesPcnExtEnumUtil.SHIPPING_ORDER_STATUS.VERIFICATION_COMPLETED.getValue());
|
|
|
|
|
Optional<MesShippingOrderManagementDetail> optional1 =
|
|
|
|
|
model.getDetailList().stream().filter(k -> k.getShippingOrderNo().equals(detail.getShippingOrderNo())).findFirst();
|
|
|
|
|
detail.setSn(optional1.get().getSn());
|
|
|
|
|
snList.add(optional1.get().getSn());
|
|
|
|
|
}
|
|
|
|
|
DdlPackBean producePackBean = DdlPackBean.getDdlPackBean(org);
|
|
|
|
|
DdlPreparedPack.getInPackList(snList, "serialNumber", producePackBean);
|
|
|
|
|
List<MesProduceSn> produceSnList = produceSnRepository.findByHqlWhere(producePackBean);
|
|
|
|
|
produceSnList.forEach(k -> k.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()));
|
|
|
|
|
|
|
|
|
|
produceSnRepository.saveAll(produceSnList);
|
|
|
|
|
shippingOrderManagementRepository.save(orderManagement);
|
|
|
|
|
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|