Merge remote-tracking branch 'origin/uat-temp-nht-chengdu-publish' into uat-temp-wj-chongqingdaqu-prod-merge-longxing-shipping-merge-cd

uat-temp-wj-chongqingdaqu-prod-merge-longxing-shipping-merge-cd
王杰 3 months ago
commit b5ae36a7ea

@ -39,4 +39,6 @@ public interface IMesSortShippingCheckService {
void updateDetail(MesShippingOrderManagementDetail item); void updateDetail(MesShippingOrderManagementDetail item);
void saveSecondShipScanOrder(MesSortShippingCheckModel model);
} }

@ -257,4 +257,19 @@ public class MesSortShippingCheckController {
} }
} }
@PostMapping("/second-ship-scan-order")
@ApiOperation(value = "宁德二次发运防错扫描发运单")
public ResultBean secondShipScanOrder(@RequestBody MesSortShippingCheckModel model) {
try {
if (model.getMesPartShippingGroup() == null) {
return ResultBean.fail("未选择零件发运组");
}
sortShippingCheckService.saveSecondShipScanOrder(model);
return ResultBean.success(model.getMsg()).setResultObject(model);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
} }

@ -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.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesJisShipping; 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.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList; 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.MesLoadingListDetail;
@ -28,6 +29,8 @@ import org.springframework.util.StringUtils;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
/** /**
* @Description : * @Description :
@ -54,6 +57,8 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
@Autowired @Autowired
private MesPartShippingGroupService mesPartShippingGroupService; private MesPartShippingGroupService mesPartShippingGroupService;
@Autowired
private IMesLoadingGroupRepository mesLoadingGroupRDao;
@Autowired @Autowired
private IMesSortShippingCheckService mesSortShippingCheckService; private IMesSortShippingCheckService mesSortShippingCheckService;
@ -142,6 +147,9 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
if (StringUtils.isEmpty(loadingList)) { if (StringUtils.isEmpty(loadingList)) {
throw new ImppBusiException(String.format("【%s】此装车单不存在请检查数据", model.getOrderCode())); 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); //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())); 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) { public MesSortShippingCheckModel saveRackNo(MesSortShippingCheckModel model, String organizeCode, String userInfo) {
checkVolvoRack(model, organizeCode); checkVolvoRack(model, organizeCode);
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model); 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; return model;
} }
@ -311,7 +314,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
String tmpMidStr = tmpAfterBarCode.replace("[)>061B", ""); String tmpMidStr = tmpAfterBarCode.replace("[)>061B", "");
String[] splitStrArray = tmpMidStr.split("1Y"); String[] splitStrArray = tmpMidStr.split("1Y");
if (splitStrArray.length > 0) { 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("料箱类型与顺序不一致,请检查数据")); throw new ImppBusiException(String.format("料箱类型与顺序不一致,请检查数据"));
} }
} }
@ -332,7 +335,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
// detail.setBarcode(detail.getBarcode() + "," + model.getLocationCode()); // detail.setBarcode(detail.getBarcode() + "," + model.getLocationCode());
detail.setPartPosition(model.getLocationCode()); detail.setPartPosition(model.getLocationCode());
// detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue()); // 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; break;
} }
} }
@ -400,7 +406,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
throw new ImppBusiException(String.format("【%s】此发运单不存在请检查数据", shippingOrderManagement.getShippingCode())); throw new ImppBusiException(String.format("【%s】此发运单不存在请检查数据", shippingOrderManagement.getShippingCode()));
} }
//校验发运单状态 必须是未装车条码 //校验发运单状态 必须是未装车条码
if (!Stream.of(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue(),MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()).collect(Collectors.toList()).contains(orderManagement.getStatus())) { if (!Stream.of(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue(),MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue(),MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue()).collect(Collectors.toList()).contains(orderManagement.getStatus())) {
throw new ImppBusiException(String.format("【%s】此发运单状态为【%s】,请选择状态为【%s】或【%s】状态的发运单请检查数据", shippingOrderManagement.getShippingCode(), throw new ImppBusiException(String.format("【%s】此发运单状态为【%s】,请选择状态为【%s】或【%s】状态的发运单请检查数据", shippingOrderManagement.getShippingCode(),
MesExtEnumUtil.SHIPPING_ORDER_STATUS.valueOfDescription(orderManagement.getStatus()), MesExtEnumUtil.SHIPPING_ORDER_STATUS.valueOfDescription(orderManagement.getStatus()),
MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getDescription(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription())); MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getDescription(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription()));
@ -482,7 +488,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//45550 PDA-MES-PDA发运扫描排序方式修改 //45550 PDA-MES-PDA发运扫描排序方式修改
List<MesConfig> shippingBusiSoftCfgList = mesConfigService.getConfigList(orderManagement.getOrganizeCode(), List<MesConfig> shippingBusiSoftCfgList = mesConfigService.getConfigList(orderManagement.getOrganizeCode(),
MesCommonConstant.SHIPPING_BUSI_SOFT_CFG, mesPartShippingGroup.getShippingGroupCode(), null); MesCommonConstant.SHIPPING_BUSI_SOFT_CFG, mesPartShippingGroup.getShippingGroupCode(), null);
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode(), orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue() ? CommonEnumUtil.IS_VAILD.INVAILD.getValue() : CommonEnumUtil.IS_VAILD.VAILD.getValue());
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderDetailPackBean); DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderDetailPackBean);
DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),"status",orderDetailPackBean); DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),"status",orderDetailPackBean);
if (CollectionUtils.isEmpty(shippingBusiSoftCfgList)) { if (CollectionUtils.isEmpty(shippingBusiSoftCfgList)) {
@ -499,12 +505,14 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if(CollectionUtils.isEmpty(detailList)){ if(CollectionUtils.isEmpty(detailList)){
throw new ImppBusiException(String.format("发运单【%s】明细信息不存在请检查数据", orderManagement.getShippingCode())); throw new ImppBusiException(String.format("发运单【%s】明细信息不存在请检查数据", orderManagement.getShippingCode()));
} }
//已扫描数据 if (orderManagement.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue()) {
detailList.forEach(k -> { //已扫描数据
if (Stream.of(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue()).collect(Collectors.toList()).contains(k.getStatus())){ detailList.forEach(k -> {
k.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); if (Stream.of(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue()).collect(Collectors.toList()).contains(k.getStatus())){
} k.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
}); }
});
}
//序号,总成类型顺序 //序号,总成类型顺序
if(!Objects.isNull(mesPartShippingGroup.getScanSeqWay()) && !StringUtil.isEmpty(mesPartShippingGroup.getPartType()) && mesPartShippingGroup.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE_40.getValue()){ if(!Objects.isNull(mesPartShippingGroup.getScanSeqWay()) && !StringUtil.isEmpty(mesPartShippingGroup.getPartType()) && mesPartShippingGroup.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE_40.getValue()){
@ -598,7 +606,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
throw new ImppBusiException(String.format("【%s】此产品条码不存在请检查数据", model.getSn())); throw new ImppBusiException(String.format("【%s】此产品条码不存在请检查数据", model.getSn()));
} }
//校验状态 //校验状态
checkStatus(model, produceSn); // checkStatus(model, produceSn);
return produceSn; return produceSn;
} }
@ -637,9 +645,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
} }
public void saveDate(MesShippingOrderManagement orderManagement, MesSortShippingCheckModel model, String organizeCode, String userInfo) { public void saveDate(MesShippingOrderManagement orderManagement, MesSortShippingCheckModel model, String organizeCode, String userInfo) {
boolean isUnpack = orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue();
//若发运单状态为创建或发布 则写入开始扫描时间 //若发运单状态为创建或发布 则写入开始扫描时间
if (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() || if (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() ||
orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()) { orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue() ||
orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue()) {
orderManagement.setStartScanTime(TimeTool.getNowTime(true)); orderManagement.setStartScanTime(TimeTool.getNowTime(true));
} }
MesLoadingList loadingList = null; MesLoadingList loadingList = null;
@ -674,9 +684,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE);
orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
orderManagement.setEndScanTime(TimeTool.getNowTime(true)); orderManagement.setEndScanTime(TimeTool.getNowTime(true));
orderManagement.setRackNo(model.getVolvoRackNo());
//发运单明细状态修改为校验完成 //发运单明细状态修改为校验完成
DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode, isUnpack? CommonEnumUtil.IS_VAILD.INVAILD.getValue() : CommonEnumUtil.IS_VAILD.VAILD.getValue());
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderManagementDetailPackBean); DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderManagementDetailPackBean);
List<MesShippingOrderManagementDetail> orderManagementDetailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean); List<MesShippingOrderManagementDetail> orderManagementDetailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean);
List<MesShippingOrderManagementDetail> detailList = model.getDetailList(); List<MesShippingOrderManagementDetail> detailList = model.getDetailList();
@ -731,6 +742,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//客供品移库 //客供品移库
customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail, shippingGroup); customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail, shippingGroup);
detail.setIsValid(CommonEnumUtil.VALID);
detail.setSystemSyncStatus(CommonEnumUtil.FALSE); detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setActualQty(MesPcnExtConstWords.ONE); detail.setActualQty(MesPcnExtConstWords.ONE);
ConvertBean.serviceModelUpdate(detail, userInfo); ConvertBean.serviceModelUpdate(detail, userInfo);
@ -755,12 +767,14 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList); shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
} }
if (StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())) { if (StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())) {
//发送数据给辊道线 if (!isUnpack) {
sendShippingFinishedCmd(model, organizeCode); //发送数据给辊道线
//保存当前发运单明细 sendShippingFinishedCmd(model, organizeCode);
List<MesJisShipping> mesJisShippings = getMesJisShippings(orderManagement, orderManagementDetailList, userInfo); //保存当前发运单明细
if (!CollectionUtils.isEmpty(mesJisShippings)) { List<MesJisShipping> mesJisShippings = getMesJisShippings(orderManagement, orderManagementDetailList, userInfo);
shippingList.addAll(mesJisShippings); if (!CollectionUtils.isEmpty(mesJisShippings)) {
shippingList.addAll(mesJisShippings);
}
} }
} else if (isFirstInstall){ } else if (isFirstInstall){
//查询装车单明细 //查询装车单明细
@ -868,6 +882,39 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
shippingOrderManagementDetailRepository.update(item); shippingOrderManagementDetailRepository.update(item);
} }
@Override
public void saveSecondShipScanOrder(MesSortShippingCheckModel model) {
MesShippingOrderManagement shippingOrder = checkMesShippingOrderManagement(model);
if (!Objects.equals(shippingOrder.getShippingGroupCode(), model.getMesPartShippingGroup().getShippingGroupCode())) {
MesPcnException.throwMesBusiException("发运单【%s】设不属于发运组【%s】请检查", shippingOrder.getShippingCode(), model.getMesPartShippingGroup().getShippingGroupCode());
}
if (!Objects.equals(shippingOrder.getStatus(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue())) {
MesPcnException.throwMesBusiException("发运单【%s】的状态不为已发运请检查", shippingOrder.getShippingCode());
}
DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(shippingOrder.getId(), "pid", orderManagementDetailPackBean);
List<MesShippingOrderManagementDetail> detailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean);
for (MesShippingOrderManagementDetail detail : detailList) {
detail.setBarcode(null);
detail.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue());
ConvertBean.serviceModelUpdate(detail, model.getUserInfo());
}
model.setDetailList(detailList);
// 更新条码状态为发运回退
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
if (detailList.size() == 1) DdlPreparedPack.getStringEqualPack(detailList.get(0).getBarcode(), MesPcnExtConstWords.CUST_SN, packBean);
else DdlPreparedPack.getInPackList(detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).filter(barCode -> !StringUtil.isEmptyAndNull(barCode)).collect(Collectors.toList()), MesPcnExtConstWords.CUST_SN, packBean);
produceSnRepository.updateByPropertiesNoSync(
new String[]{MesPcnExtConstWords.SN_STATUS,
MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME},
new Object[]{MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED_BACK.getValue(), model.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY},
packBean);
shippingOrder.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue());
ConvertBean.serviceModelUpdate(shippingOrder, model.getUserInfo());
}
private void updateShippingOrderDetails(String organizeCode, String userName, long id) { private void updateShippingOrderDetails(String organizeCode, String userName, long id) {
if(StringUtils.isEmpty(id) || StringUtils.isEmpty(organizeCode)) { if(StringUtils.isEmpty(id) || StringUtils.isEmpty(organizeCode)) {
return; return;

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

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

@ -75,7 +75,7 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
@Override @Override
public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) { public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) {
//校验条码 //校验条码
MesProduceSn produceSn = checkSn(model); MesProduceSn produceSn = checkSn(model, orderManagement);
boolean scanFlg = false; boolean scanFlg = false;
for (MesShippingOrderManagementDetail detail : model.getDetailList()) { for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) { if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) {
@ -145,7 +145,7 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
} }
private MesProduceSn checkSn(MesSortShippingCheckModel model) { private MesProduceSn checkSn(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement) {
//校验条码是否重复扫描 (不区分大小写) //校验条码是否重复扫描 (不区分大小写)
Optional<MesShippingOrderManagementDetail> optional = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getBarcode()) && k.getBarcode().equalsIgnoreCase(model.getSn())).findFirst(); Optional<MesShippingOrderManagementDetail> optional = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getBarcode()) && k.getBarcode().equalsIgnoreCase(model.getSn())).findFirst();
if (optional.isPresent()) { if (optional.isPresent()) {
@ -156,8 +156,16 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean); MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(produceSn)) { if (!StringUtils.isEmpty(produceSn)) {
//校验状态 if (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue()) {
checkStatus(model, produceSn); //校验产品条码状态 必须是状态为已下线条码
if (produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED_BACK.getValue()) {
throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】状态的条码请检查数据", model.getSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()),
MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED_BACK.getDescription()));
}
} else {
//校验状态
checkStatus(model, produceSn);
}
} else { } else {
//外部条码解析 //外部条码解析
MesShippingOrderManagementDetail mesShippingOrderManagementDetail = getMesShippingOrderManagementDetail(model); MesShippingOrderManagementDetail mesShippingOrderManagementDetail = getMesShippingOrderManagementDetail(model);

Loading…
Cancel
Save