打印目视单

master
王杰 6 months ago
parent 7c979a9e53
commit 697b20035e

@ -3,9 +3,9 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnPrintService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesRedisLockUtil;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.mes.bean.MesPrintQueue;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
@ -18,10 +18,16 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
/**
* @Description :
@ -36,8 +42,6 @@ import java.util.Objects;
public class MesProduceSnPrintController {
@Autowired
private MesRedisLockUtil mesRedisLockUtil;
@Autowired
private IMesProduceSnPrintService mesProduceSnPrintService;
@Autowired
@ -139,35 +143,36 @@ public class MesProduceSnPrintController {
@PostMapping("/mes-print-queue/find")
@ApiOperation(value = "打印队列查询")
public ResultBean findMesWorkOrderPrintQueue(MesPrintQueue printQueue) {
boolean lockFlag = false;
String moduleKey="";
try {
ValidatorBean.checkNotNull(printQueue.getPrintQueueType(), "打印类型不能为空");
String workCenterCodeQuery = printQueue.getWorkCenterCodeQuery();
String partProdGroupCodeQuery = printQueue.getPartProdGroupCodeQuery();
if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()) {
ValidatorBean.checkNotNull(workCenterCodeQuery, "产线代码不能为空");
ValidatorBean.checkNotNull(partProdGroupCodeQuery, "零件生产组代码不能为空");
}
moduleKey = workCenterCodeQuery+":"+partProdGroupCodeQuery;
lockFlag = mesRedisLockUtil.redisLock(moduleKey);
ValidatorBean.checkNotNull(printQueue.getPrintQueueType(), "打印队列类型不能为空");
ValidatorBean.checkNotNull(printQueue.getOrganizeCode(), "工厂代码不能为空");
ValidatorBean.checkNotNull(printQueue.getModifyUser(), "操作人不能为空");
if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()) {
ValidatorBean.checkNotNull(printQueue.getWorkCenterCodeQuery(), "产线代码不能为空");
ValidatorBean.checkNotNull(printQueue.getPartProdGroupCodeQuery(), "零件生产组代码不能为空");
}
String moduleKey = new StringJoiner(MesPcnExtConstWords.COLON)
.add(printQueue.getOrganizeCode())
.add(MesExtEnumUtil.PRINT_QUEUE_TYPE.class.getSimpleName())
.add(printQueue.getPrintQueueType().toString())
.add(printQueue.getWorkCenterCodeQuery()).add(printQueue.getPartProdGroupCodeQuery()).toString();
synchronized (moduleKey.intern()) {
List<MesPrintQueue> printQueueList = mesProduceSnPrintService.findMesPrintQueueList(printQueue);
return ResultBean.success(CollectionUtils.isEmpty(printQueueList) ? "查询暂无可打印数据!!!" : "打印队列查询成功!!!").setResultList(printQueueList);
}
return ResultBean.success("查询成功")
.setMsg("打印队列查询成功!!!")
.setResultList(mesProduceSnPrintService.findMesPrintQueueList(printQueue));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}finally {
if (lockFlag){
mesRedisLockUtil.redisUnLock(lockFlag,moduleKey);
}
}
}

@ -2,7 +2,10 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPrintedSnLogService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnPrintService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.printqueue.IPrintQueueStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
@ -20,7 +23,6 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -399,8 +401,8 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService {
try {
IPrintQueueStrategyService strategyService = (IPrintQueueStrategyService) SpringContextsUtil.getBean(clazz);
printQueueList = strategyService.execute(printQueue);
} catch (BeansException e) {
log.info("findMesPrintQueueList --- clazz:{}执行异常", clazz);
} catch (Exception e) {
log.info("打印队列查询 --- {} --- 执行异常 --- {}", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(printQueue.getPrintQueueType()), e.toString());
}
return printQueueList;

@ -9,7 +9,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
@ -17,14 +16,12 @@ import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -67,43 +64,49 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
// 获取需要打印的打印队列
List<MesPrintQueue> printQueueList = getMesPrintQueues(model);
List<String> workOrderNoList = CollectionUtils.isEmpty(printQueueList) ? null :
(printQueueList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).map(MesPrintQueue::getWorkOrderNo).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
log.info("打印队列查询 --- {} --- 查询到打印数据: {} ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), CollectionUtils.isEmpty(workOrderNoList) ? "[]" : workOrderNoList.toString());
// 无打印直接返回
if (CollectionUtils.isEmpty(printQueueList)){
log.info("无待打印的数据");
return null;
}
if (CollectionUtils.isEmpty(workOrderNoList)) return null;
// 获取工单信息
List<MesWorkOrder> workOrderList = getMesWorkOrders(model, printQueueList);
if(CollectionUtils.isEmpty(workOrderList)) {
log.info("工单信息不存在");
return null;
}
List<MesWorkOrder> workOrderList = getMesWorkOrders(model, workOrderNoList);
// 根据工单号对工单分组
Map<String, List<MesWorkOrder>> workOrderMap = CollectionUtils.isEmpty(workOrderList) ? null : workOrderList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrder::getWorkOrderNo));
if (CollectionUtils.isEmpty(workOrderMap)) log.info("打印队列查询 --- {} --- 工单信息不存在 --- {} ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()),
CollectionUtils.isEmpty(workOrderList) ? "[]" : workOrderList.toString());
// 产线代码集合
List<String> workCenterCodeList = workOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
List<String> workCenterCodeList = CollectionUtils.isEmpty(workOrderMap) ? null :
(workOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode()))).map(MesWorkOrder::getWorkCenterCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
// 根据产线代码节后获取产线信息集合
List<MesWorkCenter> mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, model.getOrganizeCode());
List<MesWorkCenter> workCenterList = CollectionUtils.isEmpty(workCenterCodeList) ? null : workCenterService.queryMesWorkCenterList(workCenterCodeList, model.getOrganizeCode());
// 产线名称集合
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, List<MesWorkCenter>> workCenterNameMap = CollectionUtils.isEmpty(workCenterList) ? null : workCenterList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkCenter::getWorkCenterCode));
// 根据零件生产组代码分组
Map<String, MesPartProdGroup> partProdGroupMap = getMesPartProdGroupMap(model, printQueueList);
if(Objects.isNull(partProdGroupMap)){
log.info("零件生产组信息不存在");
return null;
}
List<String> partProdGroupCodeList = (printQueueList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartProdGroupCode()))).map(MesPrintQueue::getPartProdGroupCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
Map<String, MesPartProdGroup> partProdGroupMap = CollectionUtils.isEmpty(partProdGroupCodeList) ? null : getMesPartProdGroupMap(model, partProdGroupCodeList);
if (CollectionUtils.isEmpty(partProdGroupMap)) log.info("打印队列查询 --- {} --- 零件生产组信息不存在 --- {} ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()),
CollectionUtils.isEmpty(partProdGroupCodeList) ? "[]" : partProdGroupCodeList.toString());
// 客户车型配置名称MAP
Map<String, MesCustomerCarModel> carModelMapByCode = getMesCustomerCarModelMap(model, workOrderList);
List<String> carModelCodeList = (workOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCarModelCode()))).map(MesWorkOrder::getCarModelCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
Map<String, MesCustomerCarModel> carModelMapByCode = CollectionUtils.isEmpty(workOrderList) ? null : getMesCustomerCarModelMap(model, carModelCodeList);
if(CollectionUtils.isEmpty(carModelMapByCode)) log.info("打印队列查询 --- {} --- 客户车型信息 --- {} ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()),
CollectionUtils.isEmpty(carModelCodeList) ? "[]" : carModelCodeList.toString());
// 工单装配件
Map<String, List<MesWorkOrderAssembly>> workOrderAssemblyMapByWorkOrderNo = getWorkOrderAssemblyMapByWorkOrderNo(model, workOrderMapByWorkOrderNo);
Map<String, List<MesWorkOrderAssembly>> workOrderAssemblyMapByWorkOrderNo = CollectionUtils.isEmpty(workOrderNoList) ? null : getWorkOrderAssemblyMapByWorkOrderNo(model, workOrderNoList);
// 展示打印队列列表
List<MesPrintQueue> showPrintQueueList = new ArrayList<>();
@ -113,80 +116,80 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
for (MesPrintQueue printQueue : printQueueList) {
MesWorkOrder mesWorkOrder = workOrderMapByWorkOrderNo.getOrDefault(printQueue.getWorkOrderNo(), null);
MesWorkOrder mesWorkOrder = (StringUtils.isEmpty(printQueue.getWorkOrderNo()) || CollectionUtils.isEmpty(workOrderMap) || !workOrderMap.containsKey(printQueue.getWorkOrderNo())) ? null : workOrderMap.get(printQueue.getWorkOrderNo()).get(0);
if (mesWorkOrder == null) {
log.info("WorkOrderAssemblyPrintQueueStrategyService --- 工单{}为空 暂不输出打印", printQueue.getWorkOrderNo());
continue;
}
mesWorkOrder.setWorkCenterName(Objects.isNull(workCenterNameMap) || !workCenterNameMap.containsKey(printQueue.getWorkCenterCode()) ? "" : workCenterNameMap.get(printQueue.getWorkCenterCode()));
printQueue.setWorkOrderTypeName(MesExtEnumUtil.ORDER_TYPE.valueOfDescription(mesWorkOrder.getWorkOrderType()));
MesPartProdGroup mesPartProdGroup = partProdGroupMap.getOrDefault(printQueue.getPartProdGroupCode(), null);
if(Objects.isNull(mesPartProdGroup)){
printQueue.setRemark("生产组信息不存在");
printQueue.setRemark("生产工单不存在");
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue());
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
log.info("WorkOrderAssemblyPrintQueueStrategyService --- 生产组{}为空 暂不输出打印", printQueue.getPartProdGroupCode());
log.info("打印队列查询 --- {} --- 工单[{}]不存在 暂不输出打印 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getWorkOrderNo());
continue;
}
String printTemplate = mesPartProdGroup.getPrintTemplate();
if (StringUtils.isEmpty(printTemplate)) {
printQueue.setRemark("打印模板为空");
MesPartProdGroup mesPartProdGroup = (StringUtils.isEmpty(printQueue.getPartProdGroupCode()) || CollectionUtils.isEmpty(partProdGroupMap) || !partProdGroupMap.containsKey(printQueue.getPartProdGroupCode())) ? null : partProdGroupMap.get(printQueue.getPartProdGroupCode());
if (mesPartProdGroup == null || StringUtils.isEmpty(mesPartProdGroup.getPrintTemplate())) {
printQueue.setRemark("零件生产组信息不存在或模版代码未维护");
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue());
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
log.info("打印队列查询 --- {} --- 零件生产组[{}]不存在或模版代码未维护 暂不输出打印 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getPartProdGroupCode());
continue;
}
MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(printTemplate, model.getOrganizeCode());
//模板信息丢失抛出异常
if (StringUtils.isEmpty(labelTemplate) || StringUtils.isEmpty(labelTemplate.getMethodCode())) {
printQueue.setRemark(String.format("模板代码[%s]方法类为空,请配置!", printTemplate));
MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(mesPartProdGroup.getPrintTemplate(), model.getOrganizeCode());
if (null == labelTemplate || StringUtils.isEmpty(labelTemplate.getMethodCode())) {
printQueue.setRemark(String.format("模板代码[%s]信息未维护或方法类为空,请配置!", mesPartProdGroup.getPrintTemplate()));
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue());
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
log.info("打印队列查询 --- {} --- 模板代码[{}]信息未维护或方法类为空,请配置! ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), mesPartProdGroup.getPrintTemplate());
continue;
}
mesWorkOrder.setWorkCenterName((!CollectionUtils.isEmpty(workCenterNameMap) && workCenterNameMap.containsKey(printQueue.getWorkCenterCode())) ? workCenterNameMap.get(printQueue.getWorkCenterCode()).get(0).getWorkCenterName() : "");
printQueue.setWorkOrderTypeName(MesExtEnumUtil.ORDER_TYPE.valueOfDescription(mesWorkOrder.getWorkOrderType()));
Map<String, Object> modelMap = new HashMap<>();
modelMap.put("mesWorkOrder", mesWorkOrder);
modelMap.put("mesPartProdGroup", mesPartProdGroup);
MesCustomerCarModel customerCarModel = Objects.isNull(carModelMapByCode) || !carModelMapByCode.containsKey(mesWorkOrder.getCarModelCode()) ? null : carModelMapByCode.get(mesWorkOrder.getCarModelCode());
MesCustomerCarModel customerCarModel = (CollectionUtils.isEmpty(carModelMapByCode) || !carModelMapByCode.containsKey(mesWorkOrder.getCarModelCode())) ? null : carModelMapByCode.get(mesWorkOrder.getCarModelCode());
if (customerCarModel != null) {
modelMap.put("mesCustomerCarModel", customerCarModel);
}
List<MesWorkOrderAssembly> workOrderAssemblyListByWorkOrderNo = Objects.isNull(workOrderAssemblyMapByWorkOrderNo) || !workOrderAssemblyMapByWorkOrderNo.containsKey(printQueue.getWorkOrderNo()) ? null : workOrderAssemblyMapByWorkOrderNo.get(printQueue.getWorkOrderNo());
if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) {
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo);
}
if (CollectionUtils.isEmpty(workOrderAssemblyMapByWorkOrderNo) || !workOrderAssemblyMapByWorkOrderNo.containsKey(printQueue.getWorkOrderNo())) {
printQueue.setRemark("工单装配件清单信息不存在");
log.info("打印队列查询 --- {} --- 工单[{}]装配件清单信息不存在 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getWorkOrderNo());
} else {
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyMapByWorkOrderNo.get(printQueue.getWorkOrderNo()));
}
MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel();
mesProduceSnPrintModel.setMesLabelTemplate(labelTemplate);
mesProduceSnPrintModel.setSourceData(modelMap);
mesProduceSnPrintModel.setPrinter(mesPartProdGroup.getPrinter());
MesProduceSnPrintModel snPrintModel = null;
MesProduceSnPrintModel snPrintModel;
try {
IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(labelTemplate.getMethodCode());
snPrintModel = strategyService.execute(null, mesProduceSnPrintModel, null, null, null ,false);
} catch (BeansException e) {
printQueue.setRemark(String.format("模板代码[%s]方法类[%s]执行异常,请配置!", labelTemplate.getTemplateCode(), labelTemplate.getMethodCode()));
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
} catch (Exception e) {
log.info("打印队列查询 --- {} --- {} 执行异常! --- {} ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), labelTemplate.getMethodCode(), e.toString());
printQueue.setRemark(String.format("模板代码[%s]方法类[%s]执行异常!", labelTemplate.getTemplateCode(), labelTemplate.getMethodCode()));
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue());
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
continue;
}
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue());
printQueue.setPrintTime(TimeTool.getNowTime(true));
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
printQueue.setPrintContent(snPrintModel.getPrintContextList());
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue());
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
showPrintQueueList.add(printQueue);
@ -194,7 +197,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
printedSnLog.setOrganizeCode(printQueue.getOrganizeCode());
printedSnLog.setWorkOrderNo(printQueue.getWorkOrderNo());
printedSnLog.setCustPartNo(printQueue.getCustPartNo());
ConvertBean.serviceModelInitialize(printedSnLog, "JOB");
ConvertBean.serviceModelInitialize(printedSnLog, model.getModifyUser());
printedSnLogList.add(printedSnLog);
}
@ -206,48 +209,66 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
return showPrintQueueList;
}
private Map<String, List<MesWorkOrderAssembly>> getWorkOrderAssemblyMapByWorkOrderNo(MesPrintQueue model, Map<String, MesWorkOrder> workOrderMapByWorkOrderNo) {
List<String> workOrderNoList = workOrderMapByWorkOrderNo.keySet().stream().collect(Collectors.toList());
private Map<String, List<MesWorkOrderAssembly>> getWorkOrderAssemblyMapByWorkOrderNo(MesPrintQueue model, List<String> workOrderNoList) {
if (CollectionUtils.isEmpty(workOrderNoList)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean);
if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
else DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean);
List<MesWorkOrderAssembly> workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
}
private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(MesPrintQueue model, List<MesWorkOrder> workOrderList) {
List<String> carModelCodeList = workOrderList.stream().map(MesWorkOrder::getCarModelCode).distinct().collect(Collectors.toList());
private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(MesPrintQueue model, List<String> carModelCodeList) {
if (CollectionUtils.isEmpty(carModelCodeList)) return null;
// 客户车型配置
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getInPackList(carModelCodeList, MesPcnExtConstWords.CAR_MODEL_CODE, packBean);
if (carModelCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(carModelCodeList.get(0), MesPcnExtConstWords.CAR_MODEL_CODE, packBean);
else DdlPreparedPack.getInPackList(carModelCodeList, MesPcnExtConstWords.CAR_MODEL_CODE, packBean);
List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(customerCarModelList) ? null : customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y));
if (CollectionUtils.isEmpty(customerCarModelList)) return null;
customerCarModelList = customerCarModelList.stream().filter(o -> null != o).collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesCustomerCarModel::getCarModelCode))), ArrayList::new));
return customerCarModelList.stream().filter(o -> null != o).collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, o -> o));
}
private Map<String, MesPartProdGroup> getMesPartProdGroupMap(MesPrintQueue model, List<MesPrintQueue> printQueueList) {
// 生产零件号
List<String> partProdGroupCodeList = printQueueList.stream().map(MesPrintQueue::getPartProdGroupCode).distinct().collect(Collectors.toList());
private Map<String, MesPartProdGroup> getMesPartProdGroupMap(MesPrintQueue model, List<String> partProdGroupCodeList) {
if (CollectionUtils.isEmpty(partProdGroupCodeList)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
//DdlPreparedPack.getInPackList(workCenterCodeList, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getInPackList(partProdGroupCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
if (partProdGroupCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(partProdGroupCodeList.get(0), MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
else DdlPreparedPack.getInPackList(partProdGroupCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
List<MesPartProdGroup> partProdGroupList = partProdGroupRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(partProdGroupList) ? null : partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x, y) -> y));
if (CollectionUtils.isEmpty(partProdGroupList)) return null;
partProdGroupList = partProdGroupList.stream().filter(o -> null != o).collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesPartProdGroup::getPartProdGroupCode))), ArrayList::new));
return partProdGroupList.stream().filter(o -> null != o).collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, o -> o));
}
private List<MesWorkOrder> getMesWorkOrders(MesPrintQueue model, List<MesPrintQueue> printQueueList) {
List<String> workOrderNoList = printQueueList.stream().map(MesPrintQueue::getWorkOrderNo).distinct().collect(Collectors.toList());
private List<MesWorkOrder> getMesWorkOrders(MesPrintQueue model, List<String> workOrderNoList) {
if (CollectionUtils.isEmpty(workOrderNoList)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean);
if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
else DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean);
return workOrderRepository.findByHqlWhere(packBean);
}
private List<MesPrintQueue> getMesPrintQueues(MesPrintQueue model) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getInPackList(Arrays.asList(model.getWorkCenterCodeQuery().split(MesPcnExtConstWords.COMMA)), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getInPackList(Arrays.asList(model.getPartProdGroupCodeQuery().split(MesPcnExtConstWords.COMMA)), MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
DdlPreparedPack.getIsNull(MesPcnExtConstWords.REMARK, packBean);
List<String> workCenterCodeList = Arrays.asList(model.getWorkCenterCodeQuery().split(MesPcnExtConstWords.COMMA));
List<String> partProdGroupCodeCodeList = Arrays.asList(model.getPartProdGroupCodeQuery().split(MesPcnExtConstWords.COMMA));
if (workCenterCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(workCenterCodeList.get(0), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
else DdlPreparedPack.getInPackList(workCenterCodeList, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
if (workCenterCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(partProdGroupCodeCodeList.get(0), MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
else DdlPreparedPack.getInPackList(partProdGroupCodeCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue(), MesPcnExtConstWords.PRINT_QUEUE_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue(), MesPcnExtConstWords.PRINT_STATUS, packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean);
return printQueueRepository.findByHqlTopWhere(packBean, MesPcnExtConstWords.FOUR);
}
}

@ -14,7 +14,10 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -28,18 +31,6 @@ import java.util.stream.Collectors;
@Slf4j
public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategyService {
//@Autowired
//private MesCutSchemeFgRepository cutSchemeFgRepository;
//
//@Autowired
//private MesCutSchemeMaterialRepository cutSchemeMaterialRepository;
//
//@Autowired
//private MesCutSchemeEquipmentRepository cutSchemeEquipmentRepository;
//
//@Autowired
//private MesCutSchemeEquipmentDetailRepository cutSchemeEquipmentDetailRepository;
@Override
public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel model, MesNumberRule numberRule , StepResult stepResult, StationRequestBean reqBean, Boolean isStep) {
@ -53,8 +44,10 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
MesCustomerCarModel customerCarModel = modelMap.containsKey("mesCustomerCarModel") ? (MesCustomerCarModel) modelMap.get("mesCustomerCarModel") : null;
// 工单装配件信息
List<MesWorkOrderAssembly> workOrderAssemblyList = modelMap.containsKey("mesWorkOrderAssemblyList") ? (List<MesWorkOrderAssembly>) modelMap.get("mesWorkOrderAssemblyList") : null;
workOrderAssemblyList = workOrderAssemblyList.stream().filter(o -> o.getDisplaySeq() != null && o.getDisplaySeq() != 0).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(workOrderAssemblyList)) workOrderAssemblyList.sort(Comparator.comparing(MesWorkOrderAssembly::getDisplaySeq));
workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? null :
workOrderAssemblyList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getDisplaySeq()) && o.getDisplaySeq().compareTo(MesPcnExtConstWords.ZERO) != 0)).collect(Collectors.toList());
// 返回的结果集合
List<Map<String, Object>> printDataMapList = new ArrayList<>();
// 单个标签参数值
@ -87,23 +80,21 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
resultMap.put(MesPcnExtConstWords.PRINT_TIME, TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"));
//替换总成SN
resultMap.put(MesPcnExtConstWords.REPLACE_CSN,MesPcnExtConstWords.REPLACE_CSN_CP+workOrder.getCustPartNo().substring(workOrder.getCustPartNo().length() -4));
// 总个数
Integer totalCount = partProdGroup.getTotalCount();
Map<Integer, List<MesWorkOrderAssembly>> collect = workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getDisplaySeq));
Map<Integer, List<MesWorkOrderAssembly>> collect = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssembly::getDisplaySeq));
// 为空时显示内容
String isNullViewContent = StringUtils.isEmpty(partProdGroup.getIsNullViewContent()) ? "" : partProdGroup.getIsNullViewContent();
for (int index = 0; index < collect.size(); index++) {
List<MesWorkOrderAssembly> orderAssemblyList = collect.get(index+1);
List<String> disPlayValues = orderAssemblyList.stream().map(MesWorkOrderAssembly::getDisplayValue).distinct().collect(Collectors.toList());
String displayValue =isNullViewContent;
if(!disPlayValues.isEmpty()){
displayValue = String.join("\r\n", disPlayValues);
if (!CollectionUtils.isEmpty(collect)) {
for (Integer displaySeq : collect.keySet()) {
List<MesWorkOrderAssembly> orderAssemblyList = collect.get(displaySeq);
List<String> disPlayValues = (orderAssemblyList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getDisplayValue()))).map(MesWorkOrderAssembly::getDisplayValue).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
String displayValue =isNullViewContent;
if(!CollectionUtils.isEmpty(disPlayValues)){
displayValue = String.join("\r\n", disPlayValues);
}
resultMap.put(MesPcnExtConstWords.ASSEMBLY_PARAM + displaySeq, displayValue);
}
// String displayValue = workOrderAssemblyList.size() -1 < index ? isNullViewContent : workOrderAssemblyList.get(index).getDisplayValue();
// resultMap.put(MesPcnExtConstWords.ASSEMBLY_PARAM + (index+1), StringUtils.isEmpty(displayValue) ? StringUtils.isEmpty(isNullViewContent) ? "" : isNullViewContent : displayValue);
resultMap.put(MesPcnExtConstWords.ASSEMBLY_PARAM + (index+1), displayValue);
}
printDataMapList.add(resultMap);

Loading…
Cancel
Save