chenzx
2024-02-20 77847fe500de2519cba82d1a5ef03d055739f0d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package com.ruoyi.iot.service.impl;
 
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.iot.domain.Device;
import com.ruoyi.iot.domain.DeviceFilter;
import com.ruoyi.iot.domain.DeviceLog;
import com.ruoyi.iot.domain.DeviceOrder;
import com.ruoyi.iot.mapper.DeviceFilterMapper;
import com.ruoyi.iot.mapper.DeviceMapper;
import com.ruoyi.iot.model.ThingsModels.ThingsModelValueItem;
import com.ruoyi.iot.model.ThingsModels.ThingsModelValueItemDto;
import com.ruoyi.iot.model.ThingsModels.ThingsModelValuesInput;
import com.ruoyi.iot.model.ThingsModels.ThingsModelValuesOutput;
import com.ruoyi.iot.service.ICategoryService;
import com.ruoyi.iot.service.IDeviceFilterService;
import com.ruoyi.iot.service.IDeviceService;
import com.ruoyi.iot.tdengine.service.ILogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
 
 
 
 
@Service
public class DeviceFilterlmpl implements IDeviceFilterService {
 
 //
    @Autowired
    private DeviceFilterMapper deviceFilterMapper;
 
    @Autowired
    private IDeviceFilterService deviceFilterService;
 
    @Autowired
    private DeviceMapper deviceMapper;
 
    @Autowired
    private ThingsModelServiceImpl thingsModelService;
 
    /**
     * 查询设备订单表中已派单/已接单所有的数据
     *
     * @return
     * @throws Exception
     */
    @Override
    public List<DeviceFilter> selectFilterAll() throws Exception {
        return deviceFilterMapper.selectFilterAll();
    }
 
    /**
     * 修改信息
     *
     * @param deviceFilter
     * @return
     * @throws Exception
     */
 
    @Transactional
    public AjaxResult updateFilter(DeviceFilter deviceFilter) throws Exception {
        Device device = new Device();
        return null;
    }
 
    @Override
    @Transactional
    public AjaxResult insertFilter(DeviceFilter DeviceFilter){
 
        return null;
    };
 
    /**
     * 更新设备的物模型
     *
     * @param input 设备ID和物模型值
     * @param type  1=属性 2=功能
     * @return 设备
     */
    /**
     * 低寿命滤芯导入
     *
     * @param input 设备ID和物模型值
     * @param type  1=属性 2=功能
     * @return 设备
     */
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int reportDeviceThingsModelValueFilter(ThingsModelValuesInput input, int type, boolean isShadow) {
        // 查询物模型
        String thingsModels = thingsModelService.getCacheThingsModelByProductId(input.getProductId());
        JSONObject thingsModelObject = JSONObject.parseObject(thingsModels);
        //ThingsModelValueItemDto——物模型
        List<ThingsModelValueItemDto> valueList = null;
        if (type == 1) {
            JSONArray properties = thingsModelObject.getJSONArray("properties");
            valueList = properties.toJavaList(ThingsModelValueItemDto.class);
        } else if (type == 2) {
            JSONArray functions = thingsModelObject.getJSONArray("functions");
            valueList = functions.toJavaList(ThingsModelValueItemDto.class);
        }
 
        // 查询物模型值
        ThingsModelValuesOutput deviceThings = deviceMapper.selectDeviceThingsModelValueBySerialNumber(input.getDeviceNumber());
        //物模型值的项——ThingsModelValueItem
        List<ThingsModelValueItem> thingsModelValues = JSONObject.parseArray(deviceThings.getThingsModelValue(), ThingsModelValueItem.class);
 
        for (int i = 0; i < input.getThingsModelValueRemarkItem().size(); i++) {
            // 赋值
            for (int j = 0; j < thingsModelValues.size(); j++) {
                if (input.getThingsModelValueRemarkItem().get(i).getId().equals(thingsModelValues.get(j).getId())) {
                    // 影子模式只更新影子值
                    if (!isShadow) {
                        thingsModelValues.get(j).setValue(String.valueOf(input.getThingsModelValueRemarkItem().get(i).getValue()));
                    }
                    thingsModelValues.get(j).setShadow(String.valueOf(input.getThingsModelValueRemarkItem().get(i).getValue()));
                    break;
                }
            }
 
            //日志
            for (int k = 0; k < valueList.size(); k++) {
                if (valueList.get(k).getId().equals(input.getThingsModelValueRemarkItem().get(i).getId()) && input.getThingsModelValueRemarkItem().get(i).getId().contains("Filter")) {
                    if (Integer.parseInt(input.getThingsModelValueRemarkItem().get(i).getValue()) < 5) {
                        valueList.get(k).setValue(input.getThingsModelValueRemarkItem().get(i).getValue());
                        DeviceFilter DeviceFilter = new DeviceFilter();
                        DeviceFilter.setFilteName(input.getThingsModelValueRemarkItem().get(i).getId());
                        DeviceFilter.setDeviceId(deviceThings.getDeviceId());
                        DeviceFilter.setDeviceName(deviceThings.getDeviceName());
                        DeviceFilter.setUserId(deviceThings.getUserId());
                        DeviceFilter.setFilterLife(input.getThingsModelValueRemarkItem().get(i).getValue());
                        deviceFilterService.insertFilter(DeviceFilter);
                        break;
                    }
                }
            }
        }
        input.setStringValue(JSONObject.toJSONString(thingsModelValues));
        input.setDeviceId(deviceThings.getDeviceId());
        return deviceMapper.updateDeviceThingsModelValue(input);
    }
 
}