排序发运优化

tags/yfai-pcn-ext-v1.6
jun 9 months ago
parent 1af2bdf866
commit 2623fb0b66

@ -52,7 +52,7 @@ public class MesJisShippingService implements IMesJisShippingService {
jisShipping.setDock(orderManagement.getSendDockCode());
jisShipping.setCusCode(orderManagement.getCustCode());
jisShipping.setCusDock(orderManagement.getCustDockCode());
jisShipping.setCustOrderNo(k.getCustOrderNo());
jisShipping.setCustOrderNo(orderManagement.getOrderCode());
jisShipping.setSerialNumber(k.getBarcode());
jisShipping.setQuantityPerCar(1);
jisShipping.setOffTime(TimeTool.getNowTime(true));

@ -331,24 +331,34 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
loadingListStatusList.add(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue());
loadingListStatusList.add(MesExtEnumUtil.MES_LOADING_STATUS.CREATE_ASN.getValue());
loadingListStatusList.add(MesExtEnumUtil.MES_LOADING_STATUS.LOADING.getValue());
List<Integer> statusList = new ArrayList<>();
statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.LOADING.getValue());
statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue());
statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue());
//最后一个扫描完成的装车单信息
orderPackBean = DdlPackBean.getDdlPackBean(loadingList.getOrganizeCode());
DdlPreparedPack.getStringSmallerNotEqualPack(loadingList.getSeq(), "seq", orderPackBean);
DdlPreparedPack.getStringEqualPack(loadingList.getPartShippingGroupCode(),"partShippingGroupCode",orderPackBean);
DdlPreparedPack.getInPackList(statusList, "status", orderPackBean);
DdlPreparedPack.getOrderBy("seq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(),orderPackBean);
MesLoadingList mesLoadingList = vehiclesOrderRepository.getByProperty(orderPackBean);
orderPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringSmallerNotEqualPack(loadingList.getSeq(), "seq", orderPackBean);
if(!Objects.isNull(mesLoadingList)){
DdlPreparedPack.getStringBiggerNotEqualPack(mesLoadingList.getSeq(), "seq", orderPackBean);
}
DdlPreparedPack.getStringEqualPack(loadingList.getPartShippingGroupCode(),"partShippingGroupCode",orderPackBean);
DdlPreparedPack.getInPackList(loadingListStatusList, "status", orderPackBean);
boolean exit = vehiclesOrderRepository.isExitByHql(orderPackBean);
if (exit) {
List<Integer> statusList = new ArrayList<>();
statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.LOADING.getValue());
statusList.add(MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue());
//查询是否存在比当前seq大的数据是装车中或者已完成的
orderPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringBiggerNotEqualPack(loadingList.getSeq(), "seq", orderPackBean);
DdlPreparedPack.getStringEqualPack(loadingList.getPartShippingGroupCode(),"partShippingGroupCode",orderPackBean);
DdlPreparedPack.getInPackList(statusList, "status", orderPackBean);
exit = vehiclesOrderRepository.isExitByHql(orderPackBean);
//强过
if((!Objects.isNull(isPass) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isPass) || exit){
if((!Objects.isNull(isPass) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isPass)){
//updateLoadingListClose(loadingListStatusList,loadingList,userName);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(loadingList.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "id",packBean);
vehiclesOrderRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","remark"},
new Object[]{userName, TimeTool.getNowTime(true),MesPcnExtConstWords.STRONGER_PASS}, packBean);
}else {
throw new ImppBusiException(String.format("【%s】装车单对应排序【%s】前存在未扫描发运的装车单请检查数据",
orderCode, loadingList.getSeq()));

@ -104,31 +104,56 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue());
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
statusForCheckList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
List<Integer> status = new ArrayList<>();
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICSING.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICS.getValue());
//最后一个扫描完成的发运单信息
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
DdlPreparedPack.getInPackList(status, "status", orderManagementPackBean);
DdlPreparedPack.getOrderBy("seq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(),orderManagementPackBean);
MesShippingOrderManagement management = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
//是否存在
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
if(!Objects.isNull(management)){
DdlPreparedPack.getNumberBiggerPack(management.getSeq(), "seq", orderManagementPackBean);
}
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
DdlPreparedPack.getInPackList(statusForCheckList, "status", orderManagementPackBean);
boolean exists = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean);
if (exists) {
List<Integer> status = new ArrayList<>();
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICSING.getValue());
status.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.STATISTICS.getValue());
orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumberBiggerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(),"shippingGroupCode",orderManagementPackBean);
DdlPreparedPack.getInPackList(status, "status", orderManagementPackBean);
exists = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean);
if((!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass()) || exists){
if((!Objects.isNull(shippingOrderManagement.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == shippingOrderManagement.getIsPass())){
//updateLoadingListClose(statusForCheckList,orderManagement,shippingOrderManagement.getModifyUser());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "id",packBean);
shippingOrderManagementRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","remark"},
new Object[]{shippingOrderManagement.getModifyUser(), TimeTool.getNowTime(true),MesPcnExtConstWords.STRONGER_PASS}, packBean);
}else{
throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单请检查数据",
orderManagement.getShippingCode(), orderManagement.getSeq()));
}
}
//根据发运单查询装车单明细信息
boolean isUpdate = false;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(),"shippingCode",packBean);
MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean);
if(!Objects.isNull(listDetail)){
packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean);
MesLoadingList loadingList = listRepository.getByProperty(packBean);
if(!Objects.isNull(loadingList)){
orderManagement.setOrderCode(loadingList.getOrderCode());
orderManagement.setLoadingListId(loadingList.getId());
isUpdate = true;
}
}
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
@ -178,7 +203,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
});
Long count = detailList.stream().filter(k -> k.getIsScanFlg() == MesCommonConstant.TRUE_INTEGER).count();
Long count = detailList.stream().filter(k -> Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).count();
model.setIsScanCount(count.intValue());
//查询最近扫描完成的装车单号
@ -193,6 +218,11 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
model.setRecentlyScanShippingCode(recentlyVehiclesOrder.getShippingCode());
}
//发运单关联装车单字段赋值
if(isUpdate){
ConvertBean.serviceModelUpdate(orderManagement,shippingOrderManagement.getModifyUser());
update(orderManagement);
}
return model;
}
@ -239,6 +269,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误请检查数据", model.getSn()));
}
}
//校验客户零件信息是否存在
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
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()));
}
scanFlg = true;
updateOrderManagementDetails(userInfo, produceSn, orderManagement, detail,MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"扫描完成");
@ -427,9 +464,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
private void checkStatus(MesSortShippingCheckModel model, MesProduceSn produceSn) {
//校验产品条码状态 必须是状态为已下线条码
if (produceSn.getSnStatus() != MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) {
throw new ImppBusiException(String.format("【%s】此条码状态为【%s】,请选择状态为【%s】状态的条码", model.getSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()),
MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.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()) {
@ -471,20 +508,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
for (MesShippingOrderManagementDetail detail : orderManagementDetailList) {
//根据扫描的条码查询条码是否存在
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
if (orderManagement.getIsEnableMemory() == MesCommonConstant.TRUE_INTEGER) {
detail.setBarcode(StringUtil.isEmpty(detail.getBarcode()) ? model.getSn() : detail.getBarcode());
DdlPreparedPack.getStringEqualPack(StringUtil.isEmpty(detail.getBarcode()) ? model.getSn() : detail.getBarcode(), "productSn", packBean);
if (Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean);
} 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.setBarcode(managementDetail.getBarcode());
DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean);
}
detail.setActualQty(1);
ConvertBean.serviceModelUpdate(detail, userInfo);
if(!StringUtils.isEmpty(detail.getBarcode())){
if(!StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
if(!Objects.isNull(produceSn)){
@ -510,12 +546,18 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
ConvertBean.serviceModelUpdate(vehiclesOrderDetail, userInfo);
vehiclesOrderDetailRepository.save(vehiclesOrderDetail);
}
if(StringUtils.isEmpty(orderManagement.getOrderCode())){
if(StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())){
//保存当前发运单明细报工
jisShippingRepository.saveAll(getMesJisShippings(organizeCode, orderManagement));
}else{
//查询装车单明细
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(orderManagement.getOrderCode(), "orderCode", orderManagementPackBean);
DdlPreparedPack.getNumEqualPack(orderManagement.getLoadingListId(),"pid",orderManagementPackBean);
DdlPreparedPack.getNumberSmallerEqualPack(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"status",orderManagementPackBean);
List<MesLoadingListDetail> listDetails = vehiclesOrderDetailRepository.findByHqlWhere(orderManagementPackBean);
if(CollectionUtils.isEmpty(listDetails)) return;
orderManagementPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(listDetails.stream().map(MesLoadingListDetail::getShippingCode).collect(Collectors.toList()), "shippingCode", orderManagementPackBean);
DdlPreparedPack.getNumNOEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean);
boolean exitByHql = shippingOrderManagementRepository.isExitByHql(orderManagementPackBean);
//2.装车单中所有发运单全部变成发运回传

Loading…
Cancel
Save