| | |
| | | package com.qianwen.smartman.modules.mdc.service.impl; |
| | | |
| | | import cn.hutool.core.lang.Tuple; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.google.common.collect.Lists; |
| | | import com.google.common.collect.Maps; |
| | | import com.google.common.collect.Sets; |
| | | import java.sql.ResultSet; |
| | | import java.sql.SQLException; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | |
| | | import java.util.Optional; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.jdbc.core.RowMapper; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.google.common.collect.Lists; |
| | | import com.google.common.collect.Maps; |
| | | import com.google.common.collect.Sets; |
| | | import com.qianwen.core.log.exception.ServiceException; |
| | | import com.qianwen.core.mp.support.Query; |
| | | import com.qianwen.core.oss.model.BladeFile; |
| | | import com.qianwen.core.tool.jackson.JsonUtil; |
| | | import com.qianwen.core.tool.utils.DateUtil; |
| | | import com.qianwen.core.tool.utils.Func; |
| | | import com.qianwen.smartman.common.cache.cps.TimeSliceCache; |
| | | import com.qianwen.smartman.common.cache.cps.WorkstationCache; |
| | | import com.qianwen.smartman.common.constant.DateConstant; |
| | |
| | | import com.qianwen.smartman.common.enums.WcsDataTypeEnums; |
| | | import com.qianwen.smartman.common.utils.ListUtils; |
| | | import com.qianwen.smartman.common.utils.MessageUtils; |
| | | import com.qianwen.core.log.exception.ServiceException; |
| | | import com.qianwen.core.mp.support.Query; |
| | | import com.qianwen.core.oss.model.BladeFile; |
| | | import com.qianwen.core.tool.jackson.JsonUtil; |
| | | import com.qianwen.core.tool.utils.DateUtil; |
| | | import com.qianwen.core.tool.utils.Func; |
| | | import com.qianwen.smartman.modules.cps.dto.CalendarShiftDTO; |
| | | import com.qianwen.smartman.modules.cps.dto.CalendarShiftTimeSlicesDTO; |
| | | import com.qianwen.smartman.modules.cps.dto.WorkstationWcsDmpDTO; |
| | | import com.qianwen.smartman.modules.cps.entity.GlobalWcs; |
| | | import com.qianwen.smartman.modules.cps.entity.Workstation; |
| | | import com.qianwen.smartman.modules.cps.service.ICalendarService; |
| | | import com.qianwen.smartman.modules.cps.service.IWorkstationService; |
| | | import com.qianwen.smartman.modules.cps.utils.ThrowFun; |
| | | import com.qianwen.smartman.modules.cps.vo.ShiftTimeDetailVO; |
| | | import com.qianwen.smartman.modules.smis.dto.CalendarShiftDTO; |
| | | import com.qianwen.smartman.modules.smis.dto.CalendarShiftTimeSlicesDTO; |
| | | import com.qianwen.smartman.modules.smis.dto.WorkstationWcsDmpDTO; |
| | | import com.qianwen.smartman.modules.smis.entity.GlobalWcs; |
| | | import com.qianwen.smartman.modules.smis.entity.Workstation; |
| | | import com.qianwen.smartman.modules.smis.service.ICalendarService; |
| | | import com.qianwen.smartman.modules.smis.service.IWorkstationService; |
| | | import com.qianwen.smartman.modules.smis.service.WorkstationDatapointsService; |
| | | import com.qianwen.smartman.modules.smis.utils.ThrowFun; |
| | | import com.qianwen.smartman.modules.smis.vo.ShiftTimeDetailVO; |
| | | import com.qianwen.smartman.modules.smis.vo.WorkstationDatapointsVO; |
| | | import com.qianwen.smartman.modules.mdc.dto.DatapointDTO; |
| | | import com.qianwen.smartman.modules.mdc.dto.GroupWorkDTO; |
| | | import com.qianwen.smartman.modules.mdc.dto.NewParamDTO; |
| | | import com.qianwen.smartman.modules.mdc.dto.ParamDTO; |
| | |
| | | import com.qianwen.smartman.modules.mdc.dto.ProcessParameterVO; |
| | | import com.qianwen.smartman.modules.mdc.dto.ProcessWcsDTO; |
| | | import com.qianwen.smartman.modules.mdc.dto.StatusDTO; |
| | | import com.qianwen.smartman.modules.mdc.entity.LastProcessParam; |
| | | import com.qianwen.smartman.modules.mdc.entity.WorkstationCollectData; |
| | | import com.qianwen.smartman.modules.mdc.enums.ProcessParamEnum; |
| | | import com.qianwen.smartman.modules.mdc.mapper.SuperCollectJsonMapper; |
| | | //import com.qianwen.smartman.modules.mdc.mapper.SuperCollectJsonMapper; |
| | | import com.qianwen.smartman.modules.mdc.mapper.SuperProcessParameterMapper; |
| | | import com.qianwen.smartman.modules.mdc.service.IProcessParameterService; |
| | | import com.qianwen.smartman.modules.mdc.service.ProcessParameterHelperService; |
| | | import com.qianwen.smartman.modules.mdc.utils.ExcelStrategyUtil; |
| | | import com.qianwen.smartman.modules.mdc.vo.AllShiftTimeDetail; |
| | | import com.qianwen.smartman.modules.mdc.vo.CollectParamResVO; |
| | |
| | | import com.qianwen.smartman.modules.mdc.vo.WorkstationShiftSearchVO; |
| | | import com.qianwen.smartman.modules.mdc.vo.excel.ProcessParamExcelVO; |
| | | import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import cn.hutool.core.lang.Tuple; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | |
| | | @Service |
| | | public class ProcessParameterServiceImpl implements IProcessParameterService { |
| | | private static final Logger log = LoggerFactory.getLogger(ProcessParameterServiceImpl.class); |
| | | private final SuperCollectJsonMapper collectJsonMapper; |
| | | private final IWorkstationService workstationService; |
| | | private final OssBuilder ossBuilder; |
| | | private final SuperProcessParameterMapper parameterMapper; |
| | | private final ICalendarService calendarService; |
| | | |
| | | public ProcessParameterServiceImpl(final SuperCollectJsonMapper collectJsonMapper, final IWorkstationService workstationService, final OssBuilder ossBuilder, final SuperProcessParameterMapper parameterMapper, final ICalendarService calendarService) { |
| | | this.collectJsonMapper = collectJsonMapper; |
| | | this.workstationService = workstationService; |
| | | this.ossBuilder = ossBuilder; |
| | | this.parameterMapper = parameterMapper; |
| | | this.calendarService = calendarService; |
| | | } |
| | | |
| | | //@Autowired |
| | | //private SuperCollectJsonMapper collectJsonMapper; |
| | | @Autowired |
| | | private IWorkstationService workstationService; |
| | | @Autowired |
| | | private OssBuilder ossBuilder; |
| | | @Autowired |
| | | private SuperProcessParameterMapper parameterMapper; |
| | | @Autowired |
| | | private ICalendarService calendarService; |
| | | @Autowired |
| | | private JdbcTemplate jdbcTemplate; |
| | | @Autowired |
| | | private WorkstationDatapointsService dpService; |
| | | |
| | | @Autowired |
| | | private ProcessParameterHelperService helperService; |
| | | |
| | | @Override |
| | | public ProcessParameterResVO queryProcessParameterChart(ProcessParameterSearchVO vo) { |
| | | ProcessParamEnum methodEnum = vo.getMethodEnum(); |
| | |
| | | int current = query.getCurrent().intValue(); |
| | | long startTime = vo.getStartTime().getTime(); |
| | | long endTime = vo.getEndTime().getTime(); |
| | | |
| | | String workstationId = vo.getWorkstationId(); |
| | | Integer flag = vo.getFlag(); |
| | | String item = vo.getItem(); |
| | |
| | | if (total == 0) { |
| | | return page; |
| | | } |
| | | List<ProcessParameterVO> res = this.parameterMapper.pageProcessParameter(Integer.valueOf(size), Integer.valueOf((current - 1) * size), Long.valueOf(startTime), Long.valueOf(endTime), item, workstationId); |
| | | |
| | | List<ProcessParameterVO> res = this.parameterMapper.pageProcessParameter(size,(current - 1) * size, startTime, endTime, item, workstationId); |
| | | Map<String, String> map = getWcsMap(); |
| | | List<ProcessParameterRealVO> collect = res.stream().map(c -> { |
| | | String value; |
| | |
| | | page.setRecords(collect); |
| | | return page; |
| | | } |
| | | |
| | | /* |
| | | @Override |
| | | public List<WorkstationWcsDmpDTO> processParam(String workstationId) { |
| | | List<WorkstationWcsDmpDTO> vos =WorkstationCache.getWorkstationWcsList(workstationId).stream().filter((v0) -> { |
| | | return v0.getProcessParameter(); |
| | | }).collect(Collectors.toList()); |
| | | if (Func.isEmpty(vos)) { |
| | | return Lists.newArrayList(); |
| | | |
| | | |
| | | //获取展示在过程参数中的变量 |
| | | List<WorkstationWcsDmpDTO> dps = new ArrayList<>(); |
| | | if(ObjectUtil.isEmpty(workstationId)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | return vos; |
| | | WorkstationDatapointsVO dpVo = dpService.getDatapoints(Long.parseLong(workstationId)); |
| | | if(ObjectUtil.isEmpty(dpVo.getDpConfig())) { |
| | | return Collections.emptyList(); |
| | | } |
| | | |
| | | JSONArray dpArrJson = JSONArray.parseArray(dpVo.getDpConfig()); |
| | | |
| | | String dpName; |
| | | JSONObject dp; |
| | | for(int i=0; i<dpArrJson.size();i++) { |
| | | dp = dpArrJson.getJSONObject(i); |
| | | |
| | | |
| | | Boolean isProcessParam = false; |
| | | if(dp.containsKey("isProcessParam")) { |
| | | isProcessParam = dp.getBoolean("isProcessParam"); |
| | | } |
| | | if(!isProcessParam) { |
| | | //不是过程参数显示的,跳过 |
| | | continue; |
| | | } |
| | | WorkstationWcsDmpDTO dto = new WorkstationWcsDmpDTO(); |
| | | dto.setDescription(dp.getString("dpLabel")); |
| | | |
| | | dpName = dp.getString("dpName"); |
| | | dto.setName(dpName); |
| | | |
| | | if("DeviceStatus".equals(dpName)) { |
| | | dto.setWcsDataType(WcsDataTypeEnums.WcsDataType.STATE.getCode()); |
| | | }else if("Output".equals(dpName)) { |
| | | dto.setWcsDataType(WcsDataTypeEnums.WcsDataType.YIELD.getCode()); |
| | | } |
| | | dps.add(dto); |
| | | } |
| | | return dps; |
| | | } |
| | | |
| | | */ |
| | | @Override |
| | | public List<DatapointDTO> processParams(String workstationId) { |
| | | //获取展示在过程参数中的变量 |
| | | if(ObjectUtil.isEmpty(workstationId)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | WorkstationDatapointsVO dpVo = dpService.getDatapoints(Long.parseLong(workstationId)); |
| | | if(ObjectUtil.isEmpty(dpVo.getDpConfig())) { |
| | | return Collections.emptyList(); |
| | | } |
| | | |
| | | //JSONArray dpArrJson = JSONArray.parseArray(dpVo.getDpConfig()); |
| | | List<DatapointDTO> list = JSONObject.parseArray(dpVo.getDpConfig(),DatapointDTO.class); |
| | | |
| | | return list.stream().filter(dp -> dp.getIsProcessParam()!=null && dp.getIsProcessParam()).collect(Collectors.toList()); |
| | | |
| | | } |
| | | /* |
| | | @Override |
| | | public ProParamSheetVO queryProcessParameterSheet(ProcessParameterSearchVO vo, Boolean isFilterProcessParameter) { |
| | | ProcessParamEnum methodEnum = vo.getMethodEnum(); |
| | |
| | | default: |
| | | return new ProParamSheetVO(); |
| | | } |
| | | } |
| | | |
| | | }*/ |
| | | /* |
| | | @Override |
| | | public BladeFile exportProcessParam(ProcessParamExcelVO vo) { |
| | | try { |
| | |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | */ |
| | | @Override |
| | | public ShiftTimeVO getShiftTime(ProcessParameterSearchVO vo) { |
| | | String workstationId = vo.getWorkstationId(); |
| | | LocalDate queryTime = vo.getQueryTime(); |
| | | Integer shift = vo.getShift(); |
| | | Workstation workstation = (Workstation) this.workstationService.getById(Long.valueOf(Func.toLong(workstationId))); |
| | | Workstation workstation = (Workstation) this.workstationService.getById(Func.toLong(workstationId)); |
| | | return (ShiftTimeVO) Optional.ofNullable(workstation).map(w -> { |
| | | CalendarShiftTimeSlicesDTO timeSliceShift = TimeSliceCache.getTimeSliceShift(workstation.getCalendarCode(), queryTime, shift); |
| | | return (ShiftTimeVO) Optional.ofNullable(timeSliceShift).map(time -> { |
| | |
| | | if (startTime.after(now)) { |
| | | return new CollectParamResVO<>(); |
| | | } |
| | | String workstationId = vo.getWorkstationId(); |
| | | List<ProcessParameterVO> processParameterList = getProcessParameterList(startTime, endTime, workstationId, vo.getDmpDTO()); |
| | | return getCollectParamResVO(vo.getDmpDTO(), processParameterList); |
| | | |
| | | Long workstationId = Long.parseLong(vo.getWorkstationId()); |
| | | List<ProcessParameterVO> processParameterList = getProcessParameterList(startTime, endTime, workstationId, vo.getDpDTO()); |
| | | return getCollectParamResVO(vo.getDpDTO(), processParameterList); |
| | | } |
| | | |
| | | private CollectParamResVO<?> getCollectParamResVO(WorkstationWcsDmpDTO dmpDTO, List<ProcessParameterVO> processParameterList) { |
| | | if (WcsDataTypeEnums.WcsDataType.STATE.getCode().equals(dmpDTO.getWcsDataType())) { |
| | | private CollectParamResVO<?> getCollectParamResVO(DatapointDTO dpDTO, List<ProcessParameterVO> processParameterList) {//WorkstationWcsDmpDTO dmpDTO |
| | | //状态特殊处理? |
| | | //if (WcsDataTypeEnums.WcsDataType.STATE.getCode().equals(dmpDTO.getWcsDataType())) {//yys |
| | | if ("DeviceStatus".equals(dpDTO.getDpName())) {//状态,需要特殊处理 |
| | | Map<String, String> colorMap = Maps.newHashMap(); |
| | | Map<String, String> nameMap = Maps.newHashMap(); |
| | | Set<String> codes = Sets.newHashSet(); |
| | |
| | | return StatusDTO.builder().time(DateUtil.formatDateTime(DateUtil.fromMilliseconds(param.getRealTime().longValue()))).name((String) nameMap.get(param.getValue())).color((String) colorMap.get(param.getValue())).value(param.getValue()).build(); |
| | | }).collect(Collectors.toList());*/ |
| | | return CollectParamResVO.<StatusDTO>builder() |
| | | .collectItem(dmpDTO.getDescription()) |
| | | .collectRealItem(dmpDTO.getName()) |
| | | .collectItem(dpDTO.getDpLabel()) |
| | | .collectRealItem(dpDTO.getDpName()) |
| | | .data(list) |
| | | .build(); |
| | | //return CollectParamResVO.builder().collectItem(dmpDTO.getDescription()).collectRealItem(dmpDTO.getName()).data(list).build(); |
| | | } |
| | | //空指针 |
| | | List<ParamDTO> collect = processParameterList.stream().map(param -> ParamDTO.builder().time(DateUtil.formatDateTime(DateUtil.fromMilliseconds(param.getRealTime().longValue()))).value(param.getValue()).build()).collect(Collectors.toList()); |
| | | /* |
| | | return CollectParamResVO.<ParamDTO>builder() |
| | | .collectItem(dmpDTO.getDescription()) |
| | | .collectRealItem(dmpDTO.getName()) |
| | | .data(collect) |
| | | .build(); |
| | | /* |
| | | List<ParamDTO> collect2 = (List) processParameterList.stream().map(param2 -> { |
| | | return ParamDTO.builder().time(DateUtil.formatDateTime(DateUtil.fromMilliseconds(param2.getRealTime().longValue()))).value(param2.getValue()).build(); |
| | | }).collect(Collectors.toList()); |
| | | return CollectParamResVO.builder().collectItem(dmpDTO.getDescription()).collectRealItem(dmpDTO.getName()).data(collect2).build(); |
| | | */ |
| | | */ |
| | | return CollectParamResVO.<ParamDTO>builder() |
| | | .collectItem(dpDTO.getDpLabel()) |
| | | .collectRealItem(dpDTO.getDpName()) |
| | | .data(collect) |
| | | .build(); |
| | | } |
| | | |
| | | private void buildWcsMap(Map<String, String> colorMap, Map<String, String> nameMap, Set<String> codes) { |
| | |
| | | } |
| | | } |
| | | |
| | | private List<ProcessParameterVO> getProcessParameterList(Date startTime, Date endTime, String workstationId, WorkstationWcsDmpDTO dmpDTO) { |
| | | ProcessParameterVO firstStatue = oldFirstStatue(startTime, dmpDTO.getName(), workstationId); |
| | | ProcessParameterVO endStatue = oldLastStatue(endTime, dmpDTO.getName(), workstationId); |
| | | List<ProcessParameterVO> processParameterList = oldOneCollectList(startTime, endTime, dmpDTO.getName(), workstationId); |
| | | /** |
| | | * 获取过程参数列表 |
| | | * @param startTime |
| | | * @param endTime |
| | | * @param workstationId |
| | | * @param dmpDTO |
| | | * @return |
| | | */ |
| | | private List<ProcessParameterVO> getProcessParameterList(Date startTime, Date endTime, Long workstationId, DatapointDTO dpDTO) {//WorkstationWcsDmpDTO dmpDTO |
| | | ProcessParameterVO firstStatue = oldFirstStatue(startTime, dpDTO.getDpName(), workstationId); |
| | | ProcessParameterVO endStatue = oldLastStatue(endTime, dpDTO.getDpName(), workstationId); |
| | | |
| | | List<ProcessParameterVO> processParameterList = oldOneCollectList(startTime, endTime, dpDTO.getDpName(), workstationId); |
| | | if (Func.isNotEmpty(processParameterList)) { |
| | | if (Func.notNull(firstStatue) && !firstStatue.getRealTime().equals(Long.valueOf(startTime.getTime()))) { |
| | | firstStatue.setRealTime(Long.valueOf(startTime.getTime())); |
| | | if (Func.notNull(firstStatue) && !firstStatue.getRealTime().equals(startTime.getTime())) { |
| | | firstStatue.setRealTime(startTime.getTime()); |
| | | processParameterList.add(0, firstStatue); |
| | | } |
| | | if (Func.notNull(endStatue) && !endStatue.getRealTime().equals(Long.valueOf(endTime.getTime()))) { |
| | |
| | | return entityVO(parameterList, wcs, collectItemMap); |
| | | }).orElse(new ProcessParameterResVO()); |
| | | } |
| | | |
| | | /* |
| | | private ProParamSheetVO buildProcessHourSheet(ProcessParameterSearchVO vo, Boolean isFilterProcessParameter) { |
| | | Date startTime = vo.getStartTime(); |
| | | Date endTime = vo.getEndTime(); |
| | |
| | | return new ProParamSheetVO(); |
| | | } |
| | | return buildSheetVO(vos, dtoList, wcs, getWcsMap()); |
| | | } |
| | | |
| | | }*/ |
| | | /* |
| | | private ProParamSheetVO buildProcessShiftSheet(ProcessParameterSearchVO vo, Boolean isFilterProcessParameter) { |
| | | Integer shift = vo.getShift(); |
| | | LocalDate queryTime = vo.getQueryTime(); |
| | |
| | | return new ProParamSheetVO(); |
| | | } |
| | | return buildSheetVO(vos, dtoList, wcs, getWcsMap()); |
| | | } |
| | | |
| | | }*/ |
| | | /* |
| | | private BladeFile exportByHour(ProcessParamExcelVO vo) throws Exception { |
| | | Date startTime = vo.getStartTime(); |
| | | Date endTime = vo.getEndTime(); |
| | |
| | | MultipartFile multipartFile = ExcelStrategyUtil.customerStyleExport(fileName, ExcelConstant.SHEET, head, content); |
| | | return this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile); |
| | | } |
| | | |
| | | */ |
| | | /* |
| | | private List<List<Object>> buildExcelContentByHour(Long workstationId, List<WorkstationWcsDmpDTO> collectItem, Date startTime, Date endTime) { |
| | | Workstation workstation = (Workstation) this.workstationService.getById(workstationId); |
| | | Map<Long, GroupWorkDTO> groupWorkMap = this.workstationService.queryGroupWorkStation(Lists.newArrayList(new Long[]{workstation.getId()})); |
| | |
| | | return Lists.newArrayList(); |
| | | } |
| | | return buildExcelContentByHour(collectItem, parameterList, wcs, workstation, groupName, timeShiftAll); |
| | | } |
| | | }*/ |
| | | |
| | | private List<List<Object>> buildExcelContentByHour(List<WorkstationWcsDmpDTO> collectItem, List<NewParamDTO> parameterList, WorkstationWcsDmpDTO wcs, Workstation workstation, String groupName, List<CalendarShiftDTO> timeShiftAll) { |
| | | List<Tuple> times = timeShiftAll.stream().map(calendarShiftDTO -> { |
| | |
| | | } |
| | | return head; |
| | | } |
| | | |
| | | /* |
| | | private List<NewParamDTO> processParameterList(Date startTime, Date endTime, String workstationId) { |
| | | return this.collectJsonMapper.queryProcessParameter(workstationId, Long.valueOf(startTime.getTime()), Long.valueOf(endTime.getTime())); |
| | | } |
| | | |
| | | */ |
| | | private List<ProcessParameterVO> oldProcessParameterList(Date startTime, Date endTime, List<String> collectItems, String workstationId) { |
| | | return this.parameterMapper.queryProcessParameter(workstationId, collectItems, Long.valueOf(startTime.getTime()), Long.valueOf(endTime.getTime())); |
| | | } |
| | | |
| | | private ProcessParameterVO oldFirstStatue(Date startTime, String item, String workstationId) { |
| | | ProcessParameterVO vo = this.parameterMapper.oldFirstStatue(workstationId, item, Long.valueOf(startTime.getTime())); |
| | | private ProcessParameterVO oldFirstStatue(Date startTime, String item, Long workstationId) { |
| | | //ProcessParameterVO vo = this.parameterMapper.oldFirstStatue(workstationId, item, Long.valueOf(startTime.getTime())); |
| | | ProcessParameterVO vo = helperService.queryLastParameterLessThenTime(workstationId, item, startTime.getTime()); |
| | | if (Func.notNull(vo)) { |
| | | vo.setCollectItem(item); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | private ProcessParameterVO oldLastStatue(Date endTime, String item, String workstationId) { |
| | | ProcessParameterVO vo = this.parameterMapper.oldLastStatue(workstationId, item, Long.valueOf(endTime.getTime())); |
| | | /** |
| | | * |
| | | * @param endTime |
| | | * @param item 数据点名称,如Output |
| | | * @param workstationId |
| | | * @return |
| | | */ |
| | | private ProcessParameterVO oldLastStatue(Date endTime, String item, Long workstationId) { |
| | | //ProcessParameterVO vo = this.parameterMapper.oldLastStatue(workstationId, item, Long.valueOf(endTime.getTime())); |
| | | ProcessParameterVO vo = helperService.getLastParameterGreaterThenTime(workstationId, item, endTime.getTime()); |
| | | if (Func.notNull(vo)) { |
| | | vo.setCollectItem(item); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | private List<ProcessParameterVO> oldOneCollectList(Date startTime, Date endTime, String item, String workstationId) { |
| | | return this.parameterMapper.oldOneCollectList(workstationId, item, Long.valueOf(startTime.getTime()), Long.valueOf(endTime.getTime())); |
| | | /** |
| | | * |
| | | * @param startTime |
| | | * @param endTime |
| | | * @param item 数据点名称,如Output |
| | | * @param workstationId |
| | | * @return |
| | | */ |
| | | private List<ProcessParameterVO> oldOneCollectList(Date startTime, Date endTime, String item, Long workstationId) { |
| | | List<ProcessParameterVO> list = this.parameterMapper.oldOneCollectList(workstationId, item, startTime.getTime(), endTime.getTime()); |
| | | list.forEach(p -> {p.setRealTime(p.getTime().getTime());}); |
| | | return list; |
| | | } |
| | | |
| | | private ProcessParameterResVO entityVO(List<ProcessParameterVO> dtoList, WorkstationWcsDmpDTO wcs, Map<String, WorkstationWcsDmpDTO> collectItemMap) { |
| | |
| | | return vos; |
| | | } |
| | | |
| | | /* |
| | | @Override |
| | | public List<WorkstationCollectData> lastParameter(long workstationId) { |
| | | //yys |
| | |
| | | }); |
| | | |
| | | return result; |
| | | }*/ |
| | | |
| | | /** |
| | | * 获取工位最新参数值 |
| | | * @param workstationId 工位id |
| | | * @param item 参数名称,如DeviceStatus/Output |
| | | * @param time 时间,参数应小于该时间 |
| | | * @return |
| | | */ |
| | | /* |
| | | public ProcessParameterVO getLastParameterLessThanTimeOld_notuse(long workstationId,String item,Long time) { |
| | | //yys |
| | | LastProcessParam lp = this.parameterMapper.lastParameterLessThanTime(workstationId,item,time); |
| | | if(lp == null) { |
| | | return null; |
| | | } |
| | | ProcessParameterVO vo = new ProcessParameterVO(); |
| | | //解析json为对象列表 |
| | | JSONObject paramsObj = JSONObject.parseObject(lp.getParamJson()); |
| | | |
| | | if(paramsObj.containsKey(item)) { |
| | | JSONObject itemObj = paramsObj.getJSONObject(item); |
| | | |
| | | Long lastTime = itemObj.getLong("time"); |
| | | vo.setTime(new Timestamp(lastTime)); |
| | | vo.setRealTime(lastTime); |
| | | vo.setValueCollect(itemObj.getString("value")); |
| | | } |
| | | |
| | | return vo; |
| | | }*/ |
| | | @DS("iotdb") |
| | | public ProcessParameterVO queryLastParameterLessThenTime1(long workstationId,String item,Long time) { |
| | | /** |
| | | *tdengine实现:oldFirstStatue |
| | | * select last(ts) as realTime, |
| | | last(v) as value_collect |
| | | from iot_data.super_collect_data |
| | | where n = #{item} |
| | | and ts < #{startTime} |
| | | and workstation_id = #{workstationId} |
| | | */ |
| | | ProcessParameterVO vo = null; |
| | | String sql ="select max_time(n) as ts,last_value(n) as n,last_value(v) as v,last_value(workstation_id) as workstationId from root.f2.process_param_"+workstationId+"_"+item+" where time<"+time+" align by device limit 1"; |
| | | List<ProcessParameterVO> list = jdbcTemplate.query(sql, new RowMapper<ProcessParameterVO>() { |
| | | |
| | | @Override |
| | | public ProcessParameterVO mapRow(ResultSet rs, int rowNum) throws SQLException { |
| | | ProcessParameterVO p = new ProcessParameterVO(); |
| | | p.setRealTime(rs.getLong("ts")); |
| | | p.setValueCollect(rs.getString("v")); |
| | | |
| | | return p; |
| | | } |
| | | |
| | | }); |
| | | if(!list.isEmpty()) { |
| | | vo = list.get(0); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | /** |
| | | * 获取工位最新参数值(采集时间应大于指定时间) |
| | | * @param workstationId |
| | | * @param item 参数名称,如DeviceStatus/Output |
| | | * @param time 指定的时间 |
| | | * @return |
| | | */ |
| | | @DS("iotdb") |
| | | public ProcessParameterVO getLastParameterGreaterThenTime1(long workstationId,String item,Long time) { |
| | | /* |
| | | oldLastStatue |
| | | select last(ts) as realTime, |
| | | last(v) as value_collect |
| | | from iot_data.super_collect_data |
| | | where n = #{item} |
| | | and ts > #{endTime} |
| | | and workstation_id = #{workstationId} |
| | | * */ |
| | | /* |
| | | LastProcessParam lp = this.parameterMapper.lastParameterGreaterThanTime(workstationId,item,time); |
| | | if(lp == null) { |
| | | return null; |
| | | } |
| | | ProcessParameterVO vo = new ProcessParameterVO(); |
| | | //解析json为对象列表 |
| | | JSONObject paramsObj = JSONObject.parseObject(lp.getParamJson()); |
| | | |
| | | if(paramsObj.containsKey(item)) { |
| | | JSONObject itemObj = paramsObj.getJSONObject(item); |
| | | |
| | | Long lastTime = itemObj.getLong("time"); |
| | | vo.setTime(new Timestamp(lastTime)); |
| | | vo.setRealTime(lastTime); |
| | | vo.setValueCollect(itemObj.getString("value")); |
| | | } |
| | | |
| | | return vo;*/ |
| | | |
| | | ProcessParameterVO vo = null; |
| | | String sql ="select max_time(n) as ts,last_value(n) as n,last_value(v) as v,last_value(workstation_id) as workstationId from root.f2.process_param_"+workstationId+"_"+item+" where time>"+time+" align by device limit 1"; |
| | | List<ProcessParameterVO> list = jdbcTemplate.query(sql, new RowMapper<ProcessParameterVO>() { |
| | | |
| | | @Override |
| | | public ProcessParameterVO mapRow(ResultSet rs, int rowNum) throws SQLException { |
| | | ProcessParameterVO p = new ProcessParameterVO(); |
| | | p.setRealTime(rs.getLong("ts")); |
| | | p.setValueCollect(rs.getString("v")); |
| | | |
| | | return p; |
| | | } |
| | | |
| | | }); |
| | | if(!list.isEmpty()) { |
| | | vo = list.get(0); |
| | | } |
| | | return vo; |
| | | |
| | | |
| | | } |
| | | |
| | | @DS("iotdb") |
| | | @Override |
| | | public List<WorkstationCollectData> queryLastParameter(long workstationId) { |
| | | String sql ="select max_time(n) as ts,last_value(n) as n,last_value(v) as v,last_value(workstation_id) as workstationId from root.f2.process_param_"+workstationId+"_* align by device"; |
| | | List<WorkstationCollectData> list = jdbcTemplate.query(sql, new RowMapper<WorkstationCollectData>() { |
| | | |
| | | @Override |
| | | public WorkstationCollectData mapRow(ResultSet rs, int rowNum) throws SQLException { |
| | | WorkstationCollectData data = WorkstationCollectData.builder().ts(rs.getLong("ts")).n(rs.getString("n")).v(rs.getString("v")).workstationId(workstationId).build(); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | }); |
| | | return list; |
| | | } |
| | | } |