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 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.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;
}
}
@ -400,7 +406,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
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(),
MesExtEnumUtil.SHIPPING_ORDER_STATUS.valueOfDescription(orderManagement.getStatus()),
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发运扫描排序方式修改
List<MesConfig> shippingBusiSoftCfgList = mesConfigService.getConfigList(orderManagement.getOrganizeCode(),
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.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),"status",orderDetailPackBean);
if (CollectionUtils.isEmpty(shippingBusiSoftCfgList)) {
@ -499,12 +505,14 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if(CollectionUtils.isEmpty(detailList)){
throw new ImppBusiException(String.format("发运单【%s】明细信息不存在请检查数据", orderManagement.getShippingCode()));
}
//已扫描数据
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())){
k.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
}
});
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())){
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()){
@ -598,7 +606,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
throw new ImppBusiException(String.format("【%s】此产品条码不存在请检查数据", model.getSn()));
}
//校验状态
checkStatus(model, produceSn);
// checkStatus(model, produceSn);
return produceSn;
}
@ -637,9 +645,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
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() ||
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));
}
MesLoadingList loadingList = null;
@ -674,9 +684,10 @@ 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);
DdlPackBean orderManagementDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode, isUnpack? CommonEnumUtil.IS_VAILD.INVAILD.getValue() : CommonEnumUtil.IS_VAILD.VAILD.getValue());
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderManagementDetailPackBean);
List<MesShippingOrderManagementDetail> orderManagementDetailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean);
List<MesShippingOrderManagementDetail> detailList = model.getDetailList();
@ -731,6 +742,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//客供品移库
customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail, shippingGroup);
detail.setIsValid(CommonEnumUtil.VALID);
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setActualQty(MesPcnExtConstWords.ONE);
ConvertBean.serviceModelUpdate(detail, userInfo);
@ -755,12 +767,14 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
}
if (StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())) {
//发送数据给辊道线
sendShippingFinishedCmd(model, organizeCode);
//保存当前发运单明细
List<MesJisShipping> mesJisShippings = getMesJisShippings(orderManagement, orderManagementDetailList, userInfo);
if (!CollectionUtils.isEmpty(mesJisShippings)) {
shippingList.addAll(mesJisShippings);
if (!isUnpack) {
//发送数据给辊道线
sendShippingFinishedCmd(model, organizeCode);
//保存当前发运单明细
List<MesJisShipping> mesJisShippings = getMesJisShippings(orderManagement, orderManagementDetailList, userInfo);
if (!CollectionUtils.isEmpty(mesJisShippings)) {
shippingList.addAll(mesJisShippings);
}
}
} else if (isFirstInstall){
//查询装车单明细
@ -868,6 +882,39 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
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) {
if(StringUtils.isEmpty(id) || StringUtils.isEmpty(organizeCode)) {
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.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

@ -75,7 +75,7 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
@Override
public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) {
//校验条码
MesProduceSn produceSn = checkSn(model);
MesProduceSn produceSn = checkSn(model, orderManagement);
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)) {
@ -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();
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);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(produceSn)) {
//校验状态
checkStatus(model, produceSn);
if (orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.UNPACKING.getValue()) {
//校验产品条码状态 必须是状态为已下线条码
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 {
//外部条码解析
MesShippingOrderManagementDetail mesShippingOrderManagementDetail = getMesShippingOrderManagementDetail(model);

Loading…
Cancel
Save