PDA发运强过跳过问题修复

tags/yfai-pcn-ext-v1.5
jun 9 months ago
parent d57babb521
commit cffd69606d

@ -139,7 +139,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
Optional<MesLoadingListDetail> loadingListDetailOptional = model.getDetailList().stream().filter(t -> !Objects.equals(t.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).findFirst();
if(loadingListDetailOptional.isPresent()){
MesLoadingListDetail loadingListDetail = loadingListDetailOptional.get();
updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,MesPcnExtConstWords.SHIP_PASS,MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue());
updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,MesPcnExtConstWords.SHIP_PASS,MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue(),userInfo);
}else{
throw new ImppBusiException(String.format("【%s】明细已全部扫描完成请检查数据", loadingList.getOrderCode()));
}
@ -153,7 +153,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
if (loadingListDetail.getShippingCode().equals(model.getShippingCode())) {
if (Objects.equals(loadingListDetail.getTempStatus(), MesCommonConstant.TRUE_INTEGER)) {
throw new ImppBusiException(String.format("【%s】此发运单已经扫描过,请检查数据!", model.getShippingCode()));
throw new ImppBusiException(String.format("【%s】此发运单已经%s,请检查数据!", model.getShippingCode(),loadingListDetail.getTempStatusVal()));
}
//校验发运单明细顺序
if(!StringUtils.isEmpty(shippingGroup.getIsEnableLoadingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableLoadingFailSafe()){
@ -167,14 +167,14 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
if (!StringUtils.isEmpty(loadingList.getScanSeqWay()) && loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取明细中最小的
long minSeq = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getScanSn())).mapToLong(MesLoadingListDetail::getSeq).min().getAsLong();
long minSeq = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getScanSn()) && !Objects.equals(k.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).mapToLong(MesLoadingListDetail::getSeq).min().getAsLong();
//若扫描的不是最小顺序 则报错
if (minSeq != loadingListDetail.getSeq()) {
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误请检查数据", model.getShippingCode()));
}
}
//更新页面状态
updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,"扫描完成",MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
updateLoadingListDetail(model, userInfo, loadingList, loadingListDetail,"扫描完成",MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),userInfo);
//根据扫描的装车单找到是否先装车配置
//若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。
@ -213,8 +213,11 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
//装车单明细
DdlPackBean vehiclesOrderDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "pid", vehiclesOrderDetailPackBean);
List<MesLoadingListDetail> vehiclesOrderDetailList = vehiclesOrderDetailRepository.findByHqlWhere(vehiclesOrderDetailPackBean);
List<MesLoadingListDetail> vehiclesOrderDetailList = model.getDetailList();
vehiclesOrderDetailList.forEach(k -> {
if(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue() == k.getStatus()){
k.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.PUBLISHED.getValue());
}
// k.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); todo 不改变为发运状态
ConvertBean.serviceModelUpdate(k, userInfo);
});
@ -235,9 +238,20 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
}
}
private void updateLoadingListDetail(MesShippingLoadingCheckModel model, String userInfo, MesLoadingList loadingList, MesLoadingListDetail loadingListDetail, String tempStatusVal, Integer status) {
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());
}else{
//关闭发运单明细
List<Long> idList = new ArrayList<>();
idList.add(loadingList.getId());
List<MesShippingOrderManagement> mesShippingOrderManagementList = getMesShippingOrderManagementList(loadingList.getOrganizeCode(),idList);
if(!CollectionUtils.isEmpty(mesShippingOrderManagementList)){
closeShippingOrderDetails(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.SHIP_PASS, mesShippingOrderManagementList.stream().filter(t->loadingListDetail.getShippingCode().equals(t.getShippingCode())).map(MesShippingOrderManagement::getId).collect(Collectors.toList()));
}
//关闭发运单
closeShippingOrder(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.SHIP_PASS, mesShippingOrderManagementList.stream().filter(t->loadingListDetail.getShippingCode().equals(t.getShippingCode())).map(MesShippingOrderManagement::getId).collect(Collectors.toList()));
loadingListDetail.setRemark(tempStatusVal);
}
loadingListDetail.setTempStatus(MesCommonConstant.TRUE_INTEGER);
loadingListDetail.setTempStatusVal(tempStatusVal);
@ -345,21 +359,22 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
//关闭装发运单明细
List<MesShippingOrderManagement> mesShippingOrderManagementList = getMesShippingOrderManagementList(loadingList.getOrganizeCode(), idList);
if(!CollectionUtils.isEmpty(mesShippingOrderManagementList)){
closeShippingOrderDetails(loadingList.getOrganizeCode(), userName, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList()));
closeShippingOrderDetails(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.STRONGER_PASS, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList()));
}
//关闭发运单
closeShippingOrder(loadingList.getOrganizeCode(), userName, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList()));
closeShippingOrder(loadingList.getOrganizeCode(), userName,MesPcnExtConstWords.STRONGER_PASS, mesShippingOrderManagementList.stream().map(MesShippingOrderManagement::getId).collect(Collectors.toList()));
//关闭装车单明细
closeLoadingDetails(loadingList.getOrganizeCode(), userName, idList);
//关闭装车单
closeLoadingOrder(loadingList.getOrganizeCode(), userName, idList);
}
private void closeShippingOrderDetails(String organizeCode, String userName, List<Long> idList) {
private void closeShippingOrderDetails(String organizeCode, String userName,String remark, List<Long> idList) {
if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "pid",packBean);
shippingOrderManagementDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),MesPcnExtConstWords.STRONGER_PASS}, packBean);
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.CLOSE.getValue(),remark}, packBean);
}
private List<MesShippingOrderManagement> getMesShippingOrderManagementList(String organizeCode, List<Long> idList) {
@ -368,14 +383,16 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
return shippingOrderManagementRepository.findByHqlWhere(packBean);
}
private void closeShippingOrder(String organizeCode, String userName, List<Long> idList) {
private void closeShippingOrder(String organizeCode, String userName,String remark, List<Long> idList) {
if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "id",packBean);
shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_STATUS.CLOSE.getValue(),MesPcnExtConstWords.STRONGER_PASS}, packBean);
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.SHIPPING_ORDER_STATUS.CLOSE.getValue(),remark}, packBean);
}
private void closeLoadingDetails(String organizeCode, String userName, List<Long> idList) {
if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "pid",packBean);
vehiclesOrderDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},
@ -383,6 +400,7 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
}
private void closeLoadingOrder(String organizeCode, String userName, List<Long> idList) {
if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "id",packBean);
vehiclesOrderRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},

@ -106,12 +106,12 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
DdlPreparedPack.getStringEqualPackOr(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
DdlPreparedPack.getInPackList(statusForCheckList, "status", orderManagementPackBean);
int queryCount = shippingOrderManagementRepository.findByHqlWhereCount(orderManagementPackBean);
if (queryCount != 0) {
if(!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass()){
updateLoadingListClose(statusForCheckList,shippingOrderManagement,shippingOrderManagement.getModifyUser());
updateLoadingListClose(statusForCheckList,orderManagement,shippingOrderManagement.getModifyUser());
}else{
throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单请检查数据",
orderManagement.getShippingCode(), orderManagement.getSeq()));
@ -146,29 +146,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getDescription()));
}
}
//判断是否需要排序校验 默认排序则需要校验
if (loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取此装车单中 状态为创建 已发布 发运中 seq最小的
List<Integer> statusList = new ArrayList<>();
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue());
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue());
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
DdlPackBean sortOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "loadingListId", sortOrderPackBean);
DdlPreparedPack.getInPackList(statusList, "status", sortOrderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, sortOrderPackBean);
MesShippingOrderManagement sortTempOrder = shippingOrderManagementRepository.getByProperty(sortOrderPackBean);
//若没有最小的,则此装车单 没有发运单扫描完成
if (sortTempOrder.getId().longValue() != orderManagement.getId().longValue()) {
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误请扫描【%s】发运单",
shippingOrderManagement.getShippingCode(), sortTempOrder.getOrderCode()));
}
}
}
MesSortShippingCheckModel model = new MesSortShippingCheckModel();
@ -282,7 +259,8 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
detail.setStatus(status);
detail.setRemark(remark);
//根据是否启动记忆判断 若启用记忆,则根据保存数据库
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
@ -297,8 +275,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
update(orderManagement);
detail.setActualQty(1);
detail.setStatus(status);
detail.setRemark(remark);
ConvertBean.serviceModelUpdate(detail, userInfo);
updateDetail(detail);
//内部条码更新条码状态
@ -489,14 +465,14 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
} else {
List<MesShippingOrderManagementDetail> mesShippingOrderManagementDetails = custInfoSeqMap.get(detail.getCustInfoSeq());
MesShippingOrderManagementDetail managementDetail = mesShippingOrderManagementDetails.get(0);
detail.setRemark(managementDetail.getRemark());
detail.setStatus(managementDetail.getStatus());
detail.setBarcode(StringUtil.isEmpty(managementDetail.getBarcode()) ? model.getSn() : detail.getBarcode());
DdlPreparedPack.getStringEqualPack(StringUtil.isEmpty(managementDetail.getBarcode()) ? model.getSn() : detail.getBarcode(), "productSn", packBean);
}
detail.setActualQty(1);
detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
ConvertBean.serviceModelUpdate(detail, userInfo);
if(!StringUtils.isEmpty(detail.getBarcode())){
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
if(!Objects.isNull(produceSn)){
@ -504,6 +480,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
ConvertBean.serviceModelUpdate(produceSn, userInfo);
produceSnList.add(produceSn);
}
}
}
@ -585,14 +562,16 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
private List<MesShippingOrderManagement> getMesLoadingListList(List<Integer> statusForCheckList, MesShippingOrderManagement orderManagement) {
if(StringUtils.isEmpty(orderManagement.getShippingGroupCode()) || StringUtils.isEmpty(orderManagement.getSeq())) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode());
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", packBean);
DdlPreparedPack.getStringEqualPackOr(orderManagement.getShippingGroupCode(),"shippingGroupCode",packBean);
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",packBean);
DdlPreparedPack.getInPackList(statusForCheckList, "status", packBean);
return shippingOrderManagementRepository.findByHqlWhere(packBean);
}
private void closeShippingOrderDetails(String organizeCode, String userName, List<Long> idList) {
if(CollectionUtils.isEmpty(idList) || StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "pid",packBean);
shippingOrderManagementDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},
@ -600,6 +579,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
private void closeShippingOrder(String organizeCode, String userName, List<Long> idList) {
if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "id",packBean);
shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},
@ -607,6 +587,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
private void updateLoadingDetails(String organizeCode, String userName, List<Long> idList) {
if(CollectionUtils.isEmpty(idList)|| StringUtils.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "shippingId",packBean);
vehiclesOrderDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status","remark"},

Loading…
Cancel
Save