目视单打印空指针

master
jun 7 months ago
parent c201703e5c
commit 7aab622f76

@ -144,7 +144,6 @@ public class MesProduceSnPrintController {
try { try {
ValidatorBean.checkNotNull(printQueue.getPrintQueueType(), "打印类型不能为空"); ValidatorBean.checkNotNull(printQueue.getPrintQueueType(), "打印类型不能为空");
MesRedisLockUtil mesRedisLockUtil = new MesRedisLockUtil();
String workCenterCodeQuery = printQueue.getWorkCenterCodeQuery(); String workCenterCodeQuery = printQueue.getWorkCenterCodeQuery();
String partProdGroupCodeQuery = printQueue.getPartProdGroupCodeQuery(); String partProdGroupCodeQuery = printQueue.getPartProdGroupCodeQuery();
if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()) { if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()) {

@ -68,10 +68,17 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
List<MesPrintQueue> printQueueList = getMesPrintQueues(model); List<MesPrintQueue> printQueueList = getMesPrintQueues(model);
// 无打印直接返回 // 无打印直接返回
if (CollectionUtils.isEmpty(printQueueList)) return null; if (CollectionUtils.isEmpty(printQueueList)){
log.info("无待打印的数据");
return null;
}
// 获取工单信息 // 获取工单信息
List<MesWorkOrder> workOrderList = getMesWorkOrders(model, printQueueList); List<MesWorkOrder> workOrderList = getMesWorkOrders(model, printQueueList);
if(CollectionUtils.isEmpty(workOrderList)) {
log.info("工单信息不存在");
return null;
}
// 产线代码集合 // 产线代码集合
List<String> workCenterCodeList = workOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList()); List<String> workCenterCodeList = workOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
@ -80,13 +87,17 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
List<MesWorkCenter> mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, model.getOrganizeCode()); List<MesWorkCenter> mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, model.getOrganizeCode());
// 产线名称集合 // 产线名称集合
Map<String, String> workCenterNameMap = mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y)); Map<String, String> workCenterNameMap = CollectionUtils.isEmpty(mesWorkCenters) ? null : mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y));
// 根据工单号对工单分组 // 根据工单号对工单分组
Map<String, MesWorkOrder> workOrderMapByWorkOrderNo = workOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y)); Map<String, MesWorkOrder> workOrderMapByWorkOrderNo = workOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y));
// 根据零件生产组代码分组 // 根据零件生产组代码分组
Map<String, MesPartProdGroup> partProdGroupMap = getMesPartProdGroupMap(model, printQueueList); Map<String, MesPartProdGroup> partProdGroupMap = getMesPartProdGroupMap(model, printQueueList);
if(Objects.isNull(partProdGroupMap)){
log.info("零件生产组信息不存在");
return null;
}
// 客户车型配置名称MAP // 客户车型配置名称MAP
Map<String, MesCustomerCarModel> carModelMapByCode = getMesCustomerCarModelMap(model, workOrderList); Map<String, MesCustomerCarModel> carModelMapByCode = getMesCustomerCarModelMap(model, workOrderList);
@ -102,18 +113,25 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
for (MesPrintQueue printQueue : printQueueList) { for (MesPrintQueue printQueue : printQueueList) {
MesWorkOrder mesWorkOrder = workOrderMapByWorkOrderNo.get(printQueue.getWorkOrderNo()); MesWorkOrder mesWorkOrder = workOrderMapByWorkOrderNo.getOrDefault(printQueue.getWorkOrderNo(), null);
if (mesWorkOrder == null) { if (mesWorkOrder == null) {
log.info("WorkOrderAssemblyPrintQueueStrategyService --- 工单{}为空 暂不输出打印", printQueue.getWorkOrderNo()); log.info("WorkOrderAssemblyPrintQueueStrategyService --- 工单{}为空 暂不输出打印", printQueue.getWorkOrderNo());
continue; continue;
} }
mesWorkOrder.setWorkCenterName(workCenterNameMap.get(printQueue.getWorkCenterCode())); mesWorkOrder.setWorkCenterName(Objects.isNull(workCenterNameMap) || !workCenterNameMap.containsKey(printQueue.getWorkCenterCode()) ? "" : workCenterNameMap.get(printQueue.getWorkCenterCode()));
printQueue.setWorkOrderTypeName(MesExtEnumUtil.ORDER_TYPE.valueOfDescription(mesWorkOrder.getWorkOrderType())); printQueue.setWorkOrderTypeName(MesExtEnumUtil.ORDER_TYPE.valueOfDescription(mesWorkOrder.getWorkOrderType()));
MesPartProdGroup mesPartProdGroup = partProdGroupMap.get(printQueue.getPartProdGroupCode()); MesPartProdGroup mesPartProdGroup = partProdGroupMap.getOrDefault(printQueue.getPartProdGroupCode(), null);
if(Objects.isNull(mesPartProdGroup)){
printQueue.setRemark("生产组信息不存在");
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
log.info("WorkOrderAssemblyPrintQueueStrategyService --- 生产组{}为空 暂不输出打印", printQueue.getPartProdGroupCode());
continue;
}
String printTemplate = mesPartProdGroup.getPrintTemplate(); String printTemplate = mesPartProdGroup.getPrintTemplate();
@ -126,12 +144,9 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(printTemplate, model.getOrganizeCode()); MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(printTemplate, model.getOrganizeCode());
//根据反射获取策略类--封装打印数据
String methodCode = labelTemplate.getMethodCode();
//模板信息丢失抛出异常 //模板信息丢失抛出异常
if (StringUtils.isEmpty(methodCode)) { if (StringUtils.isEmpty(labelTemplate) || StringUtils.isEmpty(labelTemplate.getMethodCode())) {
printQueue.setRemark(String.format("模板代码[%s]方法类为空,请配置!", labelTemplate.getTemplateCode())); printQueue.setRemark(String.format("模板代码[%s]方法类为空,请配置!", printTemplate));
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE); printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser()); ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
continue; continue;
@ -141,11 +156,11 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
modelMap.put("mesWorkOrder", mesWorkOrder); modelMap.put("mesWorkOrder", mesWorkOrder);
modelMap.put("mesPartProdGroup", mesPartProdGroup); modelMap.put("mesPartProdGroup", mesPartProdGroup);
MesCustomerCarModel customerCarModel = carModelMapByCode.get(mesWorkOrder.getCarModelCode()); MesCustomerCarModel customerCarModel = Objects.isNull(carModelMapByCode) || !carModelMapByCode.containsKey(mesWorkOrder.getCarModelCode()) ? null : carModelMapByCode.get(mesWorkOrder.getCarModelCode());
if (customerCarModel != null) { if (customerCarModel != null) {
modelMap.put("mesCustomerCarModel", customerCarModel); modelMap.put("mesCustomerCarModel", customerCarModel);
} }
List<MesWorkOrderAssembly> workOrderAssemblyListByWorkOrderNo = workOrderAssemblyMapByWorkOrderNo.get(printQueue.getWorkOrderNo()); List<MesWorkOrderAssembly> workOrderAssemblyListByWorkOrderNo = Objects.isNull(workOrderAssemblyMapByWorkOrderNo) || !workOrderAssemblyMapByWorkOrderNo.containsKey(printQueue.getWorkOrderNo()) ? null : workOrderAssemblyMapByWorkOrderNo.get(printQueue.getWorkOrderNo());
if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) { if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) {
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo); modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo);
} }
@ -158,7 +173,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
MesProduceSnPrintModel snPrintModel = null; MesProduceSnPrintModel snPrintModel = null;
try { try {
IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(labelTemplate.getMethodCode());
snPrintModel = strategyService.execute(null, mesProduceSnPrintModel, null, null, null ,false); snPrintModel = strategyService.execute(null, mesProduceSnPrintModel, null, null, null ,false);
} catch (BeansException e) { } catch (BeansException e) {
printQueue.setRemark(String.format("模板代码[%s]方法类[%s]执行异常,请配置!", labelTemplate.getTemplateCode(), labelTemplate.getMethodCode())); printQueue.setRemark(String.format("模板代码[%s]方法类[%s]执行异常,请配置!", labelTemplate.getTemplateCode(), labelTemplate.getMethodCode()));
@ -196,8 +211,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean);
List<MesWorkOrderAssembly> workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean); List<MesWorkOrderAssembly> workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean);
Map<String, List<MesWorkOrderAssembly>> workOrderAssemblyMapByWorkOrderNo = workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo)); return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
return workOrderAssemblyMapByWorkOrderNo;
} }
private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(MesPrintQueue model, List<MesWorkOrder> workOrderList) { private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(MesPrintQueue model, List<MesWorkOrder> workOrderList) {
@ -206,9 +220,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getInPackList(carModelCodeList, MesPcnExtConstWords.CAR_MODEL_CODE, packBean); DdlPreparedPack.getInPackList(carModelCodeList, MesPcnExtConstWords.CAR_MODEL_CODE, packBean);
List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean); List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(customerCarModelList) ? null : customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y));
Map<String, MesCustomerCarModel> carModelMapByCode = customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y));
return carModelMapByCode;
} }
private Map<String, MesPartProdGroup> getMesPartProdGroupMap(MesPrintQueue model, List<MesPrintQueue> printQueueList) { private Map<String, MesPartProdGroup> getMesPartProdGroupMap(MesPrintQueue model, List<MesPrintQueue> printQueueList) {
@ -218,7 +230,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
//DdlPreparedPack.getInPackList(workCenterCodeList, MesPcnExtConstWords.WORK_CENTER_CODE, packBean); //DdlPreparedPack.getInPackList(workCenterCodeList, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getInPackList(partProdGroupCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean); DdlPreparedPack.getInPackList(partProdGroupCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
List<MesPartProdGroup> partProdGroupList = partProdGroupRepository.findByHqlWhere(packBean); List<MesPartProdGroup> partProdGroupList = partProdGroupRepository.findByHqlWhere(packBean);
return partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x,y) -> y)); return CollectionUtils.isEmpty(partProdGroupList) ? null : partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x, y) -> y));
} }
private List<MesWorkOrder> getMesWorkOrders(MesPrintQueue model, List<MesPrintQueue> printQueueList) { private List<MesWorkOrder> getMesWorkOrders(MesPrintQueue model, List<MesPrintQueue> printQueueList) {

Loading…
Cancel
Save