| | |
| | | package com.qianwen.smartman.modules.trace.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import com.alibaba.excel.write.merge.AbstractMergeStrategy; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import java.lang.invoke.SerializedLambda; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | |
| | | import java.util.concurrent.atomic.AtomicReference; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | import com.qianwen.smartman.common.constant.CommonConstant; |
| | | import com.qianwen.smartman.common.constant.DateConstant; |
| | | import com.qianwen.smartman.common.constant.ExcelConstant; |
| | | import com.qianwen.smartman.common.constant.TraceConstant; |
| | | import com.qianwen.smartman.common.utils.MessageUtils; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import com.alibaba.excel.write.merge.AbstractMergeStrategy; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.qianwen.core.excel.util.ExcelUtil; |
| | | import com.qianwen.core.log.exception.ServiceException; |
| | | import com.qianwen.core.mp.base.BaseServiceImpl; |
| | |
| | | import com.qianwen.core.oss.model.BladeFile; |
| | | import com.qianwen.core.tool.utils.DateUtil; |
| | | import com.qianwen.core.tool.utils.Func; |
| | | import com.qianwen.smartman.common.constant.CommonConstant; |
| | | import com.qianwen.smartman.common.constant.DateConstant; |
| | | import com.qianwen.smartman.common.constant.ExcelConstant; |
| | | import com.qianwen.smartman.common.constant.TraceConstant; |
| | | import com.qianwen.smartman.common.utils.MessageUtils; |
| | | import com.qianwen.smartman.modules.cps.enums.WorkTypeEnum; |
| | | import com.qianwen.smartman.modules.cps.vo.ConfigVO; |
| | | import com.qianwen.smartman.modules.mdc.enums.ProcessParamEnum; |
| | |
| | | import com.qianwen.smartman.modules.trace.vo.TraceFlowRecordVO; |
| | | import com.qianwen.smartman.modules.trace.vo.WorkpieceTraceSearchVO; |
| | | import com.qianwen.smartman.modules.trace.vo.WorkpieceTraceVO; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | |
| | | @Service |
| | | /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/trace/service/impl/TraceFlowRecordServiceImpl.class */ |
| | |
| | | private final TraceCatalogMapper traceCatalogMapper; |
| | | private final OssBuilder ossBuilder; |
| | | private final ConfigVO configVO; |
| | | |
| | | private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) { |
| | | String implMethodName = lambda.getImplMethodName(); |
| | | boolean z = true; |
| | | switch (implMethodName.hashCode()) { |
| | | case -557259320: |
| | | if (implMethodName.equals("getWorkstationId")) { |
| | | z = false; |
| | | break; |
| | | } |
| | | break; |
| | | case -75622813: |
| | | if (implMethodName.equals("getCode")) { |
| | | z = true; |
| | | break; |
| | | } |
| | | break; |
| | | case 700604426: |
| | | if (implMethodName.equals("getPartNo")) { |
| | | z = true; |
| | | break; |
| | | } |
| | | break; |
| | | } |
| | | switch (z) { |
| | | case false: |
| | | if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/trace/entity/TraceFlowRecord") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { |
| | | return (v0) -> { |
| | | return v0.getWorkstationId(); |
| | | }; |
| | | } |
| | | break; |
| | | case true: |
| | | if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/trace/entity/TraceFlowRecord") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { |
| | | return (v0) -> { |
| | | return v0.getPartNo(); |
| | | }; |
| | | } |
| | | if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/trace/entity/TraceCatalog") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { |
| | | return (v0) -> { |
| | | return v0.getPartNo(); |
| | | }; |
| | | } |
| | | if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/trace/entity/TraceCatalog") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { |
| | | return (v0) -> { |
| | | return v0.getPartNo(); |
| | | }; |
| | | } |
| | | break; |
| | | case true: |
| | | if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/trace/entity/TraceFlowSettings") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { |
| | | return (v0) -> { |
| | | return v0.getCode(); |
| | | }; |
| | | } |
| | | if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/trace/entity/TraceFlowSettings") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { |
| | | return (v0) -> { |
| | | return v0.getCode(); |
| | | }; |
| | | } |
| | | break; |
| | | } |
| | | throw new IllegalArgumentException("Invalid lambda deserialization"); |
| | | } |
| | | |
| | | public TraceFlowRecordServiceImpl(final ITraceFlowSettingsService flowSettingsService, final IProcessParameterService processParameterService, final ITraceCatalogService traceCatalogService, final TraceCatalogMapper traceCatalogMapper, final OssBuilder ossBuilder, final ConfigVO configVO) { |
| | | this.flowSettingsService = flowSettingsService; |
| | |
| | | |
| | | @Override // org.springblade.modules.trace.service.ITraceFlowRecordService |
| | | public List<TraceFlowRecordVO> getTraceFlowRecord(String partNo, String workstationId) { |
| | | Map<String, TraceFlowSettings> settingsMap = (Map) this.flowSettingsService.list().stream().collect(Collectors.toMap((v0) -> { |
| | | Map<String, TraceFlowSettings> settingsMap = this.flowSettingsService.list().stream().collect(Collectors.toMap((v0) -> { |
| | | return v0.getCode(); |
| | | }, Function.identity())); |
| | | List<TraceFlowRecord> list = list(Wrappers.<TraceFlowRecord>lambdaQuery().eq(TraceFlowRecord::getPartNo, partNo) |
| | | .eq(Func.isNotBlank(workstationId), TraceFlowRecord::getWorkstationId, workstationId)); |
| | | /* |
| | | List<TraceFlowRecord> list = list(((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { |
| | | return v0.getPartNo(); |
| | | }, partNo)).eq(Func.isNotBlank(workstationId), (v0) -> { |
| | | return v0.getWorkstationId(); |
| | | }, workstationId)); |
| | | }, workstationId));*/ |
| | | if (Func.isNotEmpty(list)) { |
| | | List<TraceFlowRecordVO> convert = TraceFlowRecordConvert.INSTANCE.convert(list); |
| | | convert.forEach(s -> { |
| | |
| | | } |
| | | } |
| | | }); |
| | | return (List) convert.stream().sorted(Comparator.comparing((v0) -> { |
| | | return convert.stream().sorted(Comparator.comparing((v0) -> { |
| | | return v0.getEntryTime(); |
| | | })).collect(Collectors.toList()); |
| | | } |
| | |
| | | @Override // org.springblade.modules.trace.service.ITraceFlowRecordService |
| | | public TraceCatalogAndFlowRecordVO getTraceCatalogAndFlowRecord(String partNo, String workstationId) { |
| | | TraceCatalogAndFlowRecordVO traceCatalogAndFlowRecordVO = null; |
| | | |
| | | TraceCatalog one = this.traceCatalogService.getOne(Wrappers.<TraceCatalog>lambdaQuery().eq(TraceCatalog::getPartNo, partNo)); |
| | | /* |
| | | TraceCatalog one = (TraceCatalog) this.traceCatalogService.getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { |
| | | return v0.getPartNo(); |
| | | }, partNo)); |
| | | }, partNo));*/ |
| | | if (one != null) { |
| | | traceCatalogAndFlowRecordVO = new TraceCatalogAndFlowRecordVO(); |
| | | traceCatalogAndFlowRecordVO.setPartNo(partNo).setIsReworkPart(one.getIsReworkPart()).setQualified(one.getQualified()).setBatchNumber(one.getBatchNumber()).setOnlineTime(one.getOnlineTime()).setOfflineTime(one.getOfflineTime()).setShiftIndex(one.getShiftIndex()).setShiftIndexName(one.getShiftIndexName()).setFlowRecordVOS(getTraceFlowRecord(partNo, null)); |
| | |
| | | public OtherWorkstationVO getOtherProcessParameter(String partNo, String id) { |
| | | TraceFlowSettings traceFlowSettings; |
| | | OtherWorkstationVO otherWorkstationVO = null; |
| | | TraceCatalog traceCatalog = this.traceCatalogService.getOne(Wrappers.<TraceCatalog>lambdaQuery().eq(TraceCatalog::getPartNo, partNo)); |
| | | /* |
| | | TraceCatalog traceCatalog = (TraceCatalog) this.traceCatalogService.getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { |
| | | return v0.getPartNo(); |
| | | }, partNo)); |
| | | }, partNo));*/ |
| | | TraceFlowRecord traceFlowRecord = (TraceFlowRecord) getById(id); |
| | | if (traceCatalog != null && traceFlowRecord != null && (traceFlowSettings = (TraceFlowSettings) this.flowSettingsService.getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { |
| | | return v0.getCode(); |
| | | }, traceFlowRecord.getFlowCode()))) != null) { |
| | | |
| | | traceFlowSettings = this.flowSettingsService.getOne(Wrappers.<TraceFlowSettings>lambdaQuery().eq(TraceFlowSettings::getCode, traceFlowRecord.getFlowCode())); |
| | | |
| | | if (traceCatalog != null && traceFlowRecord != null && traceFlowSettings != null) { |
| | | otherWorkstationVO = new OtherWorkstationVO(); |
| | | otherWorkstationVO.setFlowTag(traceFlowRecord.getFlowTag()).setEntryTime(traceFlowRecord.getEntryTime()).setLeftTime(traceFlowRecord.getLeftTime()).setBatchNumber(traceCatalog.getBatchNumber()).setStationType(traceFlowSettings.getStationType()); |
| | | } |
| | |
| | | public ProParamSheetVO getProcessParameter(String id, Integer shiftIndex) { |
| | | TraceFlowRecord traceFlowRecord = (TraceFlowRecord) getById(id); |
| | | if (traceFlowRecord != null) { |
| | | TraceFlowSettings traceFlowSettings = this.flowSettingsService.getOne(Wrappers.<TraceFlowSettings>lambdaQuery() |
| | | .eq(TraceFlowSettings::getCode, traceFlowRecord.getFlowCode())); |
| | | /* |
| | | TraceFlowSettings traceFlowSettings = (TraceFlowSettings) this.flowSettingsService.getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { |
| | | return v0.getCode(); |
| | | }, traceFlowRecord.getFlowCode())); |
| | | }, traceFlowRecord.getFlowCode()));*/ |
| | | if (traceFlowSettings != null) { |
| | | ProcessParameterSearchVO processParameterSearchVO = new ProcessParameterSearchVO(); |
| | | processParameterSearchVO.setMethodEnum(ProcessParamEnum.HOUR); |
| | |
| | | } |
| | | List<TraceCatalogFlowRecordExportVO> exportData = ((TraceFlowRecordMapper) this.baseMapper).getExportData(traceCatalogSearchVO); |
| | | if (Func.isNotEmpty(exportData)) { |
| | | List<TraceCatalogFlowRecordExportVO> exportData2 = exportData.stream() |
| | | .sorted(Comparator.comparing(TraceCatalogFlowRecordExportVO::getOnlineTime, Comparator.reverseOrder()) |
| | | .thenComparing(TraceCatalogFlowRecordExportVO::getFlowSeq, Comparator.nullsLast(Long::compareTo))) |
| | | .collect(Collectors.toList()); |
| | | /* |
| | | List<TraceCatalogFlowRecordExportVO> exportData2 = (List) exportData.stream().sorted(Comparator.comparing((v0) -> { |
| | | return v0.getOnlineTime(); |
| | | }, Comparator.reverseOrder()).thenComparing((v0) -> { |
| | | return v0.getFlowSeq(); |
| | | }, Comparator.nullsLast((v0, v1) -> { |
| | | return v0.compareTo(v1); |
| | | }))).collect(Collectors.toList()); |
| | | }))).collect(Collectors.toList());*/ |
| | | exportData2.forEach(s -> { |
| | | s.setQualifiedDesc(TraceQualifiedEnum.findDescByValue(s.getQualified())); |
| | | s.setIsReworkPartDesc(TraceIsReworkEnum.findDescByValue(s.getIsReworkPart())); |
| | |
| | | }); |
| | | return exportData2; |
| | | } |
| | | return new ArrayList(); |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | @Override // org.springblade.modules.trace.service.ITraceFlowRecordService |
| | | public IPage<WorkpieceTraceVO> workpieceTracePage(WorkpieceTraceSearchVO vo, Query query) { |
| | | IPage<WorkpieceTraceVO> relatedTracePages = ((TraceFlowRecordMapper) this.baseMapper).getNgTraceFlowRecord(Condition.getPage(query), vo); |
| | | if (Func.isNotEmpty(relatedTracePages.getRecords())) { |
| | | List<Long> relatedRecordIds = (List) relatedTracePages.getRecords().stream().map((v0) -> { |
| | | List<Long> relatedRecordIds = relatedTracePages.getRecords().stream().map((v0) -> { |
| | | return v0.getRecordId(); |
| | | }).collect(Collectors.toList()); |
| | | relatedTracePages.setRecords(((TraceFlowRecordMapper) this.baseMapper).getNgFullTraceFlowRecord(relatedRecordIds)); |
| | |
| | | Object endTime = getEndTime(vo.getEndTime()); |
| | | List<WorkpieceTraceDTO> dto = ((TraceFlowRecordMapper) this.baseMapper).exportNgTraceRecord(vo); |
| | | List<WorkpieceTraceDTO> resultList = new ArrayList<>(1000); |
| | | ((Map) dto.parallelStream().collect(Collectors.groupingBy(a -> { |
| | | (dto.parallelStream().collect(Collectors.groupingBy(a -> { |
| | | return a.getPartNo() + "_" + a.getWorkstationCode() + "_" + a.getWorkbenchName(); |
| | | }, Collectors.toList()))).forEach(key, transfer -> { |
| | | Optional reduce = transfer.stream().reduce(a2, b -> { |
| | | }, Collectors.toList()))).forEach((key, transfer) -> { |
| | | Optional<WorkpieceTraceDTO> reduce = transfer.stream().reduce((a2, b) -> { |
| | | return new WorkpieceTraceDTO(a2.getBatchNumber(), a2.getPartNo(), a2.getOnlineTime(), a2.getOfflineTime(), a2.getWorkstationCode(), a2.getWorkstationName(), a2.getWorkbenchName(), a2.getShiftIndexName(), a2.getTraceStatus(), a2.getReasonCode() + "," + b.getReasonCode()); |
| | | }); |
| | | resultList.getClass(); |
| | | //resultList.getClass(); |
| | | reduce.ifPresent((v1) -> { |
| | | r1.add(v1); |
| | | resultList.add(v1); |
| | | //r1.add(v1); |
| | | }); |
| | | }); |
| | | }//end of foreach |
| | | ); |
| | | AtomicReference<Integer> sort = new AtomicReference<>(1); |
| | | List<WorkpieceTraceExport> collect = resultList.stream().map(c -> convert(c, sort)).sorted(Comparator.comparing(WorkpieceTraceExport::getOnlineTime).reversed()).collect(Collectors.toList()); |
| | | /* |
| | | List<WorkpieceTraceExport> collect = (List) resultList.stream().map(c -> { |
| | | return convert(c, sort); |
| | | }).sorted(Comparator.comparing((v0) -> { |
| | | return v0.getOnlineTime(); |
| | | }).reversed()).collect(Collectors.toList()); |
| | | */ |
| | | Map<String, Object> timeMap = new HashMap<>(2); |
| | | timeMap.put("startTime", startTime); |
| | | timeMap.put("endTime", endTime); |
| | |
| | | |
| | | private Wrapper<WorkpieceTraceSearchVO> getWrapper(WorkpieceTraceSearchVO vo, String startTime, String endTime) { |
| | | boolean isOracle = CommonConstant.ORACLE.equals(this.configVO.getType()); |
| | | |
| | | return Wrappers.<WorkpieceTraceSearchVO>query().in(Func.isNotEmpty(vo.getGroupIds()), "btc.workstation_group_id", vo.getGroupIds()).eq(Func.isNotEmpty(vo.getWorkstationId()), "btfr.workstation_id", vo.getWorkstationId()).nested(i -> { |
| | | i.ge("btc.online_time", isOracle ? DateUtil.parse(startTime, DateConstant.PATTERN_DATE_TIME) : startTime).le("btc.online_time", isOracle ? DateUtil.parse(endTime, DateConstant.PATTERN_DATE_TIME) : endTime); |
| | | }).nested(i2 -> { |
| | | i2.ge("btc.offline_time", isOracle ? DateUtil.parse(startTime, DateConstant.PATTERN_DATE_TIME) : startTime).le("btc.offline_time", isOracle ? DateUtil.parse(endTime, DateConstant.PATTERN_DATE_TIME) : endTime); |
| | | }).and(Func.isNotEmpty(vo.getKeyword()), i3 -> { |
| | | i3.likeRight("btfr.part_no", vo.getKeyword()).or().likeRight("btc.batch_number", vo.getKeyword()).or().likeRight("btfr.workstation_code", vo.getKeyword()).or().likeRight("btfr.workstation_name", vo.getKeyword()).or().likeRight("btfr.workbench_name", vo.getKeyword()); |
| | | }); |
| | | /* |
| | | return ((QueryWrapper) ((QueryWrapper) Wrappers.query().in(Func.isNotEmpty(vo.getGroupIds()), "btc.workstation_group_id", vo.getGroupIds()).eq(Func.isNotEmpty(vo.getWorkstationId()), "btfr.workstation_id", vo.getWorkstationId()).nested(i -> { |
| | | QueryWrapper queryWrapper = (QueryWrapper) ((QueryWrapper) i.ge("btc.online_time", isOracle ? DateUtil.parse(startTime, DateConstant.PATTERN_DATE_TIME) : startTime)).le("btc.online_time", isOracle ? DateUtil.parse(endTime, DateConstant.PATTERN_DATE_TIME) : endTime); |
| | | })).nested(i2 -> { |
| | | QueryWrapper queryWrapper = (QueryWrapper) ((QueryWrapper) i2.ge("btc.offline_time", isOracle ? DateUtil.parse(startTime, DateConstant.PATTERN_DATE_TIME) : startTime)).le("btc.offline_time", isOracle ? DateUtil.parse(endTime, DateConstant.PATTERN_DATE_TIME) : endTime); |
| | | })).and(Func.isNotEmpty(vo.getKeyword()), i3 -> { |
| | | QueryWrapper queryWrapper = (QueryWrapper) ((QueryWrapper) ((QueryWrapper) ((QueryWrapper) ((QueryWrapper) ((QueryWrapper) ((QueryWrapper) ((QueryWrapper) ((QueryWrapper) i3.likeRight("btfr.part_no", vo.getKeyword())).or()).likeRight("btc.batch_number", vo.getKeyword())).or()).likeRight("btfr.workstation_code", vo.getKeyword())).or()).likeRight("btfr.workstation_name", vo.getKeyword())).or()).likeRight("btfr.workbench_name", vo.getKeyword()); |
| | | }); |
| | | });*/ |
| | | } |
| | | |
| | | private String getStartTime(Date startTime) { |