From 25db770e621f1259b8d5b7fd514207f7481c2d0f Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 30 十月 2024 11:25:37 +0800
Subject: [PATCH] blade_cps路径改为smis
---
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java | 272 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 206 insertions(+), 66 deletions(-)
diff --git a/smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java b/smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java
index 0ce4edc..4329511 100644
--- a/smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java
+++ b/smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java
@@ -1,18 +1,7 @@
package com.qianwen.smartman.modules.mdc.service.impl;
-import cn.hutool.core.lang.Tuple;
-
-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 java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -26,8 +15,29 @@
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;
@@ -36,12 +46,6 @@
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;
@@ -49,8 +53,11 @@
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.service.WorkstationDatapointsService;
import com.qianwen.smartman.modules.cps.utils.ThrowFun;
import com.qianwen.smartman.modules.cps.vo.ShiftTimeDetailVO;
+import com.qianwen.smartman.modules.cps.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;
@@ -59,12 +66,12 @@
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.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;
@@ -78,11 +85,8 @@
import com.qianwen.smartman.modules.mdc.vo.excel.ProcessParamExcelVO;
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
-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 cn.hutool.core.lang.Tuple;
+import cn.hutool.core.util.ObjectUtil;
@Service
public class ProcessParameterServiceImpl implements IProcessParameterService {
@@ -99,15 +103,12 @@
private ICalendarService calendarService;
@Autowired
private JdbcTemplate jdbcTemplate;
- /*
- 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 WorkstationDatapointsService dpService;
+
+ @Autowired
+ private ProcessParameterHelperService helperService;
+
@Override
public ProcessParameterResVO queryProcessParameterChart(ProcessParameterSearchVO vo) {
ProcessParamEnum methodEnum = vo.getMethodEnum();
@@ -132,6 +133,7 @@
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();
@@ -140,7 +142,8 @@
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;
@@ -154,16 +157,69 @@
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
@@ -214,14 +270,16 @@
if (startTime.after(now)) {
return new CollectParamResVO<>();
}
- //String workstationId = vo.getWorkstationId();
+
Long workstationId = Long.parseLong(vo.getWorkstationId());
- List<ProcessParameterVO> processParameterList = getProcessParameterList(startTime, endTime, workstationId, vo.getDmpDTO());
- return getCollectParamResVO(vo.getDmpDTO(), processParameterList);
+ 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();
@@ -234,24 +292,26 @@
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) {
@@ -271,13 +331,14 @@
* @param dmpDTO
* @return
*/
- private List<ProcessParameterVO> getProcessParameterList(Date startTime, Date endTime, Long 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);
+ 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()))) {
@@ -533,24 +594,41 @@
private ProcessParameterVO oldFirstStatue(Date startTime, String item, Long workstationId) {
//ProcessParameterVO vo = this.parameterMapper.oldFirstStatue(workstationId, item, Long.valueOf(startTime.getTime()));
- ProcessParameterVO vo = this.getLastParameterLessThanTime(workstationId, item, startTime.getTime());
+ ProcessParameterVO vo = helperService.queryLastParameterLessThenTime(workstationId, item, startTime.getTime());
if (Func.notNull(vo)) {
vo.setCollectItem(item);
}
return vo;
}
+ /**
+ *
+ * @param endTime
+ * @param item 鏁版嵁鐐瑰悕绉�,濡侽utput
+ * @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 = this.getLastParameterGreaterThenTime(workstationId, item, Long.valueOf(endTime.getTime()));
+ ProcessParameterVO vo = helperService.getLastParameterGreaterThenTime(workstationId, item, endTime.getTime());
if (Func.notNull(vo)) {
vo.setCollectItem(item);
}
return vo;
}
+ /**
+ *
+ * @param startTime
+ * @param endTime
+ * @param item 鏁版嵁鐐瑰悕绉帮紝濡侽utput
+ * @param workstationId
+ * @return
+ */
private List<ProcessParameterVO> oldOneCollectList(Date startTime, Date endTime, String item, Long workstationId) {
- return this.parameterMapper.oldOneCollectList(workstationId, item, Long.valueOf(startTime.getTime()), Long.valueOf(endTime.getTime()));
+ 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) {
@@ -696,8 +774,9 @@
* @param time 鏃堕棿锛屽弬鏁板簲灏忎簬璇ユ椂闂�
* @return
*/
- public ProcessParameterVO getLastParameterLessThanTime(long workstationId,String item,Long time) {
- //yys
+ /*
+ public ProcessParameterVO getLastParameterLessThanTimeOld_notuse(long workstationId,String item,Long time) {
+ //yys
LastProcessParam lp = this.parameterMapper.lastParameterLessThanTime(workstationId,item,time);
if(lp == null) {
return null;
@@ -716,6 +795,36 @@
}
return vo;
+ }*/
+ @DS("iotdb")
+ public ProcessParameterVO queryLastParameterLessThenTime1(long workstationId,String item,Long time) {
+ /**
+ *tdengine瀹炵幇锛歰ldFirstStatue
+ * 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;
}
/**
@@ -725,8 +834,18 @@
* @param time 鎸囧畾鐨勬椂闂�
* @return
*/
- public ProcessParameterVO getLastParameterGreaterThenTime(long workstationId,String item,Long time) {
- //yys
+ @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;
@@ -744,7 +863,28 @@
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")
--
Gitblit v1.9.3