合并成都Volvo排序发运功能

uat-temp-nht-chengdu-publish
jason 3 months ago
parent 2f9c19ee6b
commit 93ea4e647d

@ -13,6 +13,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesJisShipping;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
@ -28,6 +29,8 @@ import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
/**
* @Description :
@ -54,6 +57,8 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
@Autowired
private MesPartShippingGroupService mesPartShippingGroupService;
@Autowired
private IMesLoadingGroupRepository mesLoadingGroupRDao;
@Autowired
private IMesSortShippingCheckService mesSortShippingCheckService;
@ -142,6 +147,9 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
if (StringUtils.isEmpty(loadingList)) {
throw new ImppBusiException(String.format("【%s】此装车单不存在请检查数据", model.getOrderCode()));
}
DdlPackBean loadingGroupPackBean = DdlPackBean.getDdlPackBean(loadingList.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(loadingList.getLoadingGroupNo(), "loadingGroupNo", loadingGroupPackBean);
MesLoadingGroup loadingGroup = mesLoadingGroupRDao.getByProperty(loadingGroupPackBean);
//MesLoadingList loadingList = checkLoadingList(model.getOrderCode(), organizeCode,model.getIsPass(),userInfo);
//根据扫描的发运单以及前端传的发运单明细,进行匹配,若没有找到扫描的发运单,则提示扫描的发运单号不在此装车单中,请检查数据!。
@ -202,6 +210,23 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误请检查数据", model.getShippingCode()));
}
}
if (loadingGroup != null && loadingGroup.getLoadingSeq() != null) {
IntStream scanSeqStream = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getScanSn()) && !Objects.equals(k.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).mapToInt(MesLoadingListDetail::getScanSeq);
if (loadingGroup.getLoadingSeq() == MesExtEnumUtil.LOADING_SEQ_TYPE.POSITIVE_SEQ.getValue()) {
Integer minSeq = scanSeqStream.min().orElse(0);
//若扫描的不是最小顺序 则报错
if (!Objects.equals(minSeq, loadingListDetail.getScanSeq())) {
throw new ImppBusiException(String.format("【%s】此发运单应按装车扫描顺序正序扫描请检查数据", model.getShippingCode()));
}
} else if (loadingGroup.getLoadingSeq() == MesExtEnumUtil.LOADING_SEQ_TYPE.REVERSE_SEQ.getValue()) {
Integer maxSeq = scanSeqStream.max().orElse(0);
//若扫描的不是最小顺序 则报错
if (!Objects.equals(maxSeq, loadingListDetail.getScanSeq())) {
throw new ImppBusiException(String.format("【%s】此发运单应按装车扫描顺序倒序扫描请检查数据", model.getShippingCode()));
}
}
}
//根据扫描的装车单找到是否先装车配置
//若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。

@ -175,8 +175,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
public MesSortShippingCheckModel saveRackNo(MesSortShippingCheckModel model, String organizeCode, String userInfo) {
checkVolvoRack(model, organizeCode);
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model);
orderManagement.setRackNo(model.getVolvoRackNo());
shippingOrderManagementRepository.update(orderManagement);
//根据是否启动记忆判断 若启用记忆,则根据保存数据库
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
orderManagement.setRackNo(model.getVolvoRackNo());
shippingOrderManagementRepository.update(orderManagement);
}
return model;
}
@ -311,7 +314,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
String tmpMidStr = tmpAfterBarCode.replace("[)>061B", "");
String[] splitStrArray = tmpMidStr.split("1Y");
if (splitStrArray.length > 0) {
if (StringUtils.isEmpty(orderManagement.getRackNo()) || !orderManagement.getRackNo().contains(splitStrArray[0])) {
if (StringUtils.isEmpty(model.getVolvoRackNo()) || !model.getVolvoRackNo().contains(splitStrArray[0])) {
throw new ImppBusiException(String.format("料箱类型与顺序不一致,请检查数据"));
}
}
@ -332,7 +335,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
// detail.setBarcode(detail.getBarcode() + "," + model.getLocationCode());
detail.setPartPosition(model.getLocationCode());
// detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue());
shippingOrderManagementDetailRepository.update(detail);
//根据是否启动记忆判断 若启用记忆,则根据保存数据库
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
shippingOrderManagementDetailRepository.update(detail);
}
break;
}
}
@ -598,7 +604,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
throw new ImppBusiException(String.format("【%s】此产品条码不存在请检查数据", model.getSn()));
}
//校验状态
checkStatus(model, produceSn);
// checkStatus(model, produceSn);
return produceSn;
}
@ -674,6 +680,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE);
orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
orderManagement.setEndScanTime(TimeTool.getNowTime(true));
orderManagement.setRackNo(model.getVolvoRackNo());
//发运单明细状态修改为校验完成
DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);

@ -17,7 +17,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackIdDetail;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesCustSortInfo;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
@ -46,7 +45,7 @@ import java.util.stream.Stream;
**/
@Service
@Slf4j
public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements IMesShippingScanStrategyService {
public class MesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements IMesShippingScanStrategyService {
@Autowired
private MesShippingOrderManagementRepository shippingOrderManagementRepository;
@Autowired
@ -86,8 +85,8 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
boolean scanFlg = false;
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) {
if (Objects.equals(detail.getVin(), workOrder.getVinCode())) {
throw new ImppBusiException(String.format("产品条码明细【%s】与发运单明细不匹配请重新扫描", model.getSn()));
if (!Objects.equals(detail.getVin(), workOrder.getVinCode())) {
throw new ImppBusiException(String.format("产品条码【%s】对应工单Vince号与发运单明细的Vin号不匹配,请重新扫描!", model.getSn()));
}
checkDetailScanSeq(orderManagement, detail, workOrder);
//校验发运明细
@ -177,7 +176,7 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
throw new ImppBusiException(String.format("【%s】此条码已经扫描过请检查数据", model.getSn()));
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(model.getSn(), "productSn", packBean);
DdlPreparedPack.getStringEqualPack(model.getSn(), "custSn", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(produceSn)) {
@ -242,54 +241,41 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
}
private void updateOrderManagementDetails(MesProduceSn produceSn, MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesWorkOrder workOrder, String userInfo) {
// if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
detail.setBarcode(produceSn.getProductSn());
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
detail.setRemark("扫描完成");
updateDetail(detail);
orderManagement.setCheckSeqCode("1");
update(orderManagement);
detail.setBarcode(produceSn.getCustSn());
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
detail.setRemark("扫描完成");
orderManagement.setCheckSeqCode("1");
//根据是否启动记忆判断 若启用记忆,则根据保存数据库
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
// MesCustSortInfo custSoftInfo = custSoftInfoRDao.getById(Long.parseLong(workOrder.getWorkOrderSource()));
// if (custSoftInfo != null) {
// MesCimVolvoJisRackIdDetail rackIdDetail = rackIdDetailRDao.getById(custSoftInfo.getSourceId());
// if (rackIdDetail != null) {
// detail.setPartPosition(rackIdDetail.getPosition());
// }
// }
//根据是否启动记忆判断 若启用记忆,则根据保存数据库
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
//若发运单状态为创建或发布 则写入开始扫描时间
if (!StringUtils.isEmpty(orderManagement.getStatus()) && (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() ||
orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue())) {
orderManagement.setStartScanTime(TimeTool.getNowTime(true));
}
//若发运单状态为创建或发布 则写入开始扫描时间
if (!StringUtils.isEmpty(orderManagement.getStatus()) && (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() ||
orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue())) {
orderManagement.setStartScanTime(TimeTool.getNowTime(true));
}
orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(orderManagement, userInfo);
update(orderManagement);
orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(orderManagement, userInfo);
update(orderManagement);
detail.setActualQty(1);
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setVisualOrderNo(workOrder.getWorkOrderNo());
ConvertBean.serviceModelUpdate(detail, userInfo);
updateDetail(detail);
//内部条码更新条码状态
if (!Objects.isNull(produceSn.getId())) {
produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue());
produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(produceSn, userInfo);
produceSnExtService.update(produceSn);
}else{
//记录唯一性校验表
mesShippingSnUniqueService.insertMesShippingSnUnique(orderManagement.getOrganizeCode(),detail.getBarcode(),orderManagement.getShippingCode(),userInfo);
}
detail.setActualQty(1);
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setVisualOrderNo(workOrder.getWorkOrderNo());
ConvertBean.serviceModelUpdate(detail, userInfo);
updateDetail(detail);
//内部条码更新条码状态
if (!Objects.isNull(produceSn.getId())) {
produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue());
produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(produceSn, userInfo);
produceSnExtService.update(produceSn);
}else{
//记录唯一性校验表
mesShippingSnUniqueService.insertMesShippingSnUnique(orderManagement.getOrganizeCode(),detail.getBarcode(),orderManagement.getShippingCode(),userInfo);
}
// }
}
}
@MonitorLog

@ -44,7 +44,7 @@ import java.util.stream.Stream;
**/
@Service
@Slf4j
public class mesShippingScanOrderStrategyServiceImpl implements IMesShippingScanStrategyService {
public class MesShippingScanOrderStrategyServiceImpl implements IMesShippingScanStrategyService {
@Autowired
private MesShippingOrderManagementRepository shippingOrderManagementRepository;
@Autowired
Loading…
Cancel
Save