合并成都Volvo发运单及装车单打印功能

uat-temp-nht-chengdu-publish
jason 3 months ago
parent 93ea4e647d
commit 824517b558

@ -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);
}
}
}

@ -406,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()));
@ -488,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)) {
@ -505,12 +505,14 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if(CollectionUtils.isEmpty(detailList)){
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())){
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()){
@ -643,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;
@ -683,7 +687,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
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();
@ -738,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);
@ -762,6 +767,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
}
if (StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())) {
if (!isUnpack) {
//发送数据给辊道线
sendShippingFinishedCmd(model, organizeCode);
//保存当前发运单明细
@ -769,6 +775,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if (!CollectionUtils.isEmpty(mesJisShippings)) {
shippingList.addAll(mesJisShippings);
}
}
} else if (isFirstInstall){
//查询装车单明细
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -875,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;

@ -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)) {
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