yuanchao 3 сар өмнө
parent
commit
aa11d44bb0

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmodeltemplateattrs/vo/IotModelTemplateAttrsRespVO.java

@@ -87,4 +87,6 @@ public class IotModelTemplateAttrsRespVO {
     @Schema(description = "物属性", example = "zyj")
     private String modelAttr;
 
+    private String deviceCode;
+
 }

+ 25 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/IotOpeationFillController.java

@@ -1,10 +1,12 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill;
 
+import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodel.vo.IotModelPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
@@ -13,7 +15,9 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodel.IotModelDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotThingsModelDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
+import cn.iocoder.yudao.module.pms.service.IDeviceService;
 import cn.iocoder.yudao.module.pms.service.iotopeationfill.IotOpeationFillService;
+import com.aliyun.tea.utils.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -51,6 +55,8 @@ public class IotOpeationFillController {
 
     @Resource
     private IotOpeationFillService iotOpeationFillService;
+    @Resource
+    private IDeviceService iDeviceService;
 
     @PostMapping("/create")
     @Operation(summary = "创建运行记录填报")
@@ -128,6 +134,25 @@ public class IotOpeationFillController {
     @Parameter(name = "deviceCategoryName", description = "名称", required = true, example = "1024")
     public CommonResult<List<IotModelTemplateAttrsDO>> getModelAttrs(@Valid IotModelTemplateAttrsRespVO vo) {
         List<IotModelTemplateAttrsDO> list = iotOpeationFillService.getAttrsById(vo );
+
+        /**
+         * 根据设备名称和物属性名称查询时序数据库
+         * 1、数采有值,已填写
+         * 2、数采有值,未填写 满足
+         * 3、数采无值,已填写 满足
+         * 4、数采无值,未填写 满足
+         */
+        for (IotModelTemplateAttrsDO attrsDO:list) {
+            DeviceVO dv= new DeviceVO();
+            dv.setDeviceName(vo.getDeviceCode().toLowerCase());
+            dv.setColName(attrsDO.getModelAttr());
+            DeviceVO deviceVO = iDeviceService.getYesInfo(dv);
+            if(!StringUtils.isEmpty(deviceVO)){
+                attrsDO.setFillContent(
+                        String.valueOf(Double.parseDouble(deviceVO.getLatestData())-Double.parseDouble(deviceVO.getEarliestData())));
+            }
+        }
+
         IotDeviceRunLogDO logDO1 = new IotDeviceRunLogDO();
         logDO1.setDeviceId(vo.getDeviceId());
         List<IotDeviceRunLogDO> logList = iotOpeationFillService.getDeivceFillInfo(logDO1);

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/DeviceVO.java

@@ -236,6 +236,10 @@ public class DeviceVO extends PageParam {
 
     private String protocolCode;
 
+    private String colName;
+
+    private String earliestData;
+    private String latestData;
 
     public static long getSerialVersionUID() {
         return serialVersionUID;

+ 13 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/TDDeviceMapper.java

@@ -61,4 +61,17 @@ public interface TDDeviceMapper extends BaseMapperX<TDDeviceDO> {
     @DS("tdengine")
     @TenantIgnore
     List<DeviceVO> selectByTs(@Param("deviceName") String tableName, @Param("ts") Timestamp ts);
+
+    @Select("SELECT\n" +
+            "  FIRST(log_value  ) AS earliest_data,\n" +
+            "  LAST(log_value ) AS latest_data\n" +
+            "FROM iot_log.device_${deviceName} \n" +
+            "WHERE\n" +
+            "  ts >= NOW - 1d\n" +
+            "  and identity = #{colName}\n" +
+            "  AND ts < NOW\n" +
+            "  AND _c0 IS NOT NULL")
+    @DS("tdengine")
+    @TenantIgnore
+    DeviceVO getYesInfo(@Param("deviceName") String tableName,@Param("colName") String colName);
 }

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/DeviceServiceImpl.java

@@ -47,5 +47,10 @@ public class DeviceServiceImpl implements IDeviceService {
         return device;
     }
 
+    @Override
+    public DeviceVO getYesInfo(DeviceVO deviceVO) {
+        return deviceMapper.getYesInfo(deviceVO.getDeviceName(), deviceVO.getColName());
+    }
+
 
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IDeviceService.java

@@ -31,4 +31,6 @@ public interface IDeviceService {
      */
     List<DeviceVO> selectByTs(DeviceVO deviceVO);
 
+    DeviceVO getYesInfo(DeviceVO deviceVO);
+
 }