成都发运,临时提交

uat-temp-nht-2503130000-chengdu-shipping^2
jason 2 months ago
parent ab2a49e0c8
commit 1d689e8075

@ -157,6 +157,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
}else{
//校验发运单是否存在
checkLoadingList(model, organizeCode, loadingList);
// checkdddLoadingList(model, organizeCode, loadingList);
//查询零件发运组
MesPartShippingGroup shippingGroup = getMesPartShippingGroup(organizeCode, loadingList.getPartShippingGroupCode());
boolean scanflg = false;
@ -184,8 +185,6 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误请检查数据", model.getShippingCode()));
}
}
//更新页面状态
updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,"扫描完成",MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),userInfo);
//根据扫描的装车单找到是否先装车配置
//若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。
@ -193,10 +192,13 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(loadingListDetail.getShippingId(),"id",packBean);
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(orderManagement)) {
if (orderManagement == null || orderManagement.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()) {
throw new ImppBusiException(String.format("【%s】此装车单中发运单为【%s】还未做完【排序发运校验】请检查数据", model.getShippingCode(), loadingListDetail.getShippingCode()));
}
}
//更新页面状态
updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,"扫描完成",MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),userInfo);
scanflg = true;
break;
}
@ -251,6 +253,13 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
}
}
private void checkdddLoadingList(MesShippingLoadingCheckModel model, String organizeCode, MesLoadingList loadingList) {
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "pid", orderDetailPackBean);
List<MesLoadingListDetail> vehiclesOrderDetails = vehiclesOrderDetailRepository.findByHqlWhere(orderDetailPackBean);
model.setDetailList(vehiclesOrderDetails);
}
private void updateLoadingListDetail(MesShippingLoadingCheckModel model, String userInfo, MesLoadingList loadingList, MesLoadingListDetail loadingListDetail, String tempStatusVal, Integer status,String userName) {
if(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue() == status){
loadingListDetail.setScanSn(model.getShippingCode());

@ -17,12 +17,11 @@ 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.*;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackIdDetail;
import cn.estsh.i3plus.pojo.mes.bean.shipping.*;
import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdDetailRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
@ -119,6 +118,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
@Autowired
private MesVolvoRackRepository mesVolvoRackRDao;
@Autowired
private MesCustSoftInfoRepository custSoftInfoRDao;
@Autowired
private MesCimVolvoJisRackIdDetailRepository rackIdDetailRDao;
@Override
public MesSortShippingCheckModel doShippingOrderNoQuery(MesShippingOrderManagement shippingOrderManagement) {
@ -155,6 +158,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
@Override
public MesSortShippingCheckModel saveRackNo(MesSortShippingCheckModel model, String organizeCode, String userInfo) {
checkVolvoRack(model, organizeCode);
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model);
orderManagement.setRackNo(model.getVolvoRackNo());
shippingOrderManagementRepository.update(orderManagement);
return model;
}
@ -245,11 +251,33 @@ 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.getPartPosition())) {
scanFlg = true;
String tmpAfterBarCode = model.getLocationCode().replaceAll("\\p{Cc}", "");
String tmpMidStr = tmpAfterBarCode.replace("[)>061B", "");
String[] splitStrArray = tmpMidStr.split("1Y");
if (splitStrArray.length > 0) {
if (StringUtils.isEmpty(orderManagement.getRackNo()) || !orderManagement.getRackNo().contains(splitStrArray[0])) {
throw new ImppBusiException(String.format("料箱类型与顺序不一致,请检查数据"));
}
}
String detailPosition = ddddd(model, detail);
String tmpPosition = tmpAfterBarCode.substring(tmpAfterBarCode.length() - 2);
StringBuilder splitPosition = new StringBuilder();
for (char c : tmpPosition.toCharArray()) {
if (Character.isDigit(c)) {
splitPosition.append(c);
}
}
//验证位置号
if (!detailPosition.contentEquals(splitPosition)) {
throw new ImppBusiException(String.format("零件与位置信息不符,请检查数据"));
}
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
detail.setBarcode(produceSn.getSerialNumber());
// detail.setBarcode(detail.getBarcode() + "," + model.getLocationCode());
detail.setPartPosition(model.getLocationCode());
// detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue());
shippingOrderManagementDetailRepository.update(detail);
break;
}
@ -269,6 +297,23 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
return model;
}
private String ddddd(MesSortShippingCheckModel model, MesShippingOrderManagementDetail detail) {
MesWorkOrder workOrder = mesWorkOrderService.getWorkOrderNoByCustSn(model.getOrganizeCode(), model.getSn());
if (workOrder == null || StringUtils.isEmpty(workOrder.getWorkOrderSource())) {
return "";
}
MesCustSortInfo custSoftInfo = custSoftInfoRDao.getById(Long.parseLong(workOrder.getWorkOrderSource()));
if (custSoftInfo != null) {
MesCimVolvoJisRackIdDetail rackIdDetail = rackIdDetailRDao.getById(custSoftInfo.getSourceId());
if (rackIdDetail != null) {
detail.setVisualOrderNo(workOrder.getWorkOrderNo());
return rackIdDetail.getPosition();
}
}
return "";
}
@Override
public MesShippingOrderManagement queryShippingOrderNoByAutoPushOrder(String shippingGroupNo, String org) {
//查询最近扫描完成的装车单号
@ -282,7 +327,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
private MesPartShippingGroup getMesPartShippingGroup(String org, String partShippingGroupCode) {
if(StringUtil.isEmpty(org) ||StringUtil.isEmpty(partShippingGroupCode)){
return null;
throw new ImppBusiException("零件发运组信息不存在,请检查数据!");
}
MesPartShippingGroup shippingGroup = mesPartShippingGroupService.getMesPartShippingGroup(org, partShippingGroupCode);
if(Objects.isNull(shippingGroup)){
@ -473,10 +518,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
private MesProduceSn checkMesProduceSn(MesSortShippingCheckModel model, String org) {
//校验条码是否已经扫描
Optional<MesShippingOrderManagementDetail> optional = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getBarcode()) && k.getBarcode().equals(model.getSn())).findFirst();
if (optional.isPresent()) {
throw new ImppBusiException(String.format("【%s】此条码已经扫描过请检查数据", model.getSn()));
}
// Optional<MesShippingOrderManagementDetail> optional = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getBarcode()) && k.getBarcode().equals(model.getSn())).findFirst();
// if (optional.isPresent()) {
// throw new ImppBusiException(String.format("【%s】此条码已经扫描过请检查数据", model.getSn()));
// }
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(model.getSn(), "productSn", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
@ -493,10 +538,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
private void checkStatus(MesSortShippingCheckModel model, MesProduceSn produceSn) {
//校验产品条码状态 必须是状态为已下线条码
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.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()) {
throw new ImppBusiException(String.format("【%s】此条码质量状态为【%s】,请选择【%s】状态的条码请检查数据", model.getSn(), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(produceSn.getQcStatus()),
@ -504,8 +549,8 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
}
// 判断维护的条码是否和扫描的条码一致
private void checkVolvoRack(MesSortShippingCheckModel model, String organizeCode) {
//校验发运单是否存在
DdlPackBean rackPackBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(model.getVolvoRackNo(), "barCode", rackPackBean);
MesVolvoRack volvoRack = mesVolvoRackRDao.getByProperty(rackPackBean);
@ -596,7 +641,8 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//更新应急件库位管理库存出库
mesEmergencyLocationService.doShippingStockOutOnline(organizeCode, detail.getVisualOrderNo(), userInfo, true);
//条码格式(扫描目视单,扫描条码)
detail.setBarcode(new StringJoiner(MesPcnExtConstWords.COMMA).add(detail.getVisualOrderNo()).add(detail.getBarcode()).toString());
// detail.setBarcode(new StringJoiner(MesPcnExtConstWords.COMMA).add(detail.getVisualOrderNo()).add(detail.getBarcode()).toString());
detail.setBarcode(detail.getBarcode() + "," + detail.getPartPosition());
}
}
//客供品移库

@ -16,12 +16,13 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
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;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdDetailRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
@ -67,19 +68,32 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
@Autowired
private IMesShippingSnUniqueService mesShippingSnUniqueService;
@Autowired
private MesWorkOrderRepository workOrderRDao;
@Autowired
private MesCustSoftInfoRepository custSoftInfoRDao;
@Autowired
private MesCimVolvoJisRackIdDetailRepository rackIdDetailRDao;
@Override
public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) {
//校验条码
MesProduceSn produceSn = checkSn(model);
MesWorkOrder workOrder = checkWorkOrder(model);
if (!Objects.equals(workOrder.getPartNo(), produceSn.getPartNo())) {
throw new ImppBusiException(String.format("产品条码物料【%s】与工单物料【%s】不一致请检查数据", produceSn.getPartNo(), workOrder.getPartNo()));
}
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()));
}
//校验发运明细
checkShippingDetails(model, orderManagement, shippingGroup, produceSn, detail);
scanFlg = true;
//明细更新
updateOrderManagementDetails(produceSn, orderManagement, detail, model.getUserInfo());
updateOrderManagementDetails(produceSn, orderManagement, detail, workOrder, model.getUserInfo());
break;
}
}
@ -110,17 +124,41 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
}
//校验客户零件信息是否存在 (默认需要验证, 值可能是[空/0/20])
if (StringUtils.isEmpty(shippingGroup.getScanMethodJudgment()) || !shippingGroup.getScanMethodJudgment().equals(MesExtEnumUtil.SHIPPING_GROUP_SCAN_METHOD_JUDGMENT.PART_NO.getValueStr())) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
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()));
}
}
// if (StringUtils.isEmpty(shippingGroup.getScanMethodJudgment()) || !shippingGroup.getScanMethodJudgment().equals(MesExtEnumUtil.SHIPPING_GROUP_SCAN_METHOD_JUDGMENT.PART_NO.getValueStr())) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
// 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()));
// }
// }
}
private MesWorkOrder checkWorkOrder(MesSortShippingCheckModel model) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(model.getSn(), "custSn", packBean);
MesWorkOrder workOrder = workOrderRDao.getByProperty(packBean);
if (workOrder == null) {
throw new ImppBusiException(String.format("客户条码【%s】对应的工单号不存在请检查数据", model.getSn()));
}
if (workOrder.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.SHIPPING.getValue()) {
throw new ImppBusiException(String.format("工单【%s】状态为已发运请检查数据", workOrder.getWorkOrderNo()));
}
if (workOrder.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) {
throw new ImppBusiException(String.format("工单【%s】状态为已发布请检查数据", workOrder.getWorkOrderNo()));
}
if (workOrder.getWorkOrderStatus() != MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue() &&
workOrder.getWorkOrderStatus() != MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() &&
workOrder.getWorkOrderStatus() != MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue()) {
throw new ImppBusiException(String.format("工单【%s】状态为【%s】请检查数据", workOrder.getWorkOrderNo(), workOrder.getWorkOrderStatus()));
}
if (Objects.equals(workOrder.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.X.getValue())) {
throw new ImppBusiException(String.format("工单【%s】的工单标识为空单请检查数据", workOrder.getWorkOrderNo()));
}
return workOrder;
}
private MesProduceSn checkSn(MesSortShippingCheckModel model) {
//校验条码是否重复扫描 (不区分大小写)
Optional<MesShippingOrderManagementDetail> optional = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getBarcode()) && k.getBarcode().equalsIgnoreCase(model.getSn())).findFirst();
@ -192,12 +230,24 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
return mesShippingOrderManagementDetail;
}
private void updateOrderManagementDetails(MesProduceSn produceSn, MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, String userInfo) {
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
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);
// 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)) {
@ -214,6 +264,7 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
detail.setActualQty(1);
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setVisualOrderNo(workOrder.getWorkOrderNo());
ConvertBean.serviceModelUpdate(detail, userInfo);
updateDetail(detail);
//内部条码更新条码状态
@ -227,7 +278,7 @@ public class mesShippingCheckVolvoRackNoAndPartNoStrategyServiceImpl implements
mesShippingSnUniqueService.insertMesShippingSnUnique(orderManagement.getOrganizeCode(),detail.getBarcode(),orderManagement.getShippingCode(),userInfo);
}
}
}
// }
}
@MonitorLog

Loading…
Cancel
Save