zhoupeng 1 年間 前
コミット
dd0f19cd8a

+ 4 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/ItemGroupDao.java

@@ -66,5 +66,8 @@ public interface ItemGroupDao {
 
     List<Item> getItemListByGidList(List<ItemGroup> itemGroupList);
 
-    Integer updateItemTypeList(String strArr,String replaceStr);
+    Integer updateItemTypeList(String strArr, String replaceStr);
+
+    //修改数据组中全部数据项为基础属性
+    Integer updateItByItemGroupId(Integer itemGroupId,Integer itemType);
 }

+ 3 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/RawDataDao.java

@@ -58,7 +58,9 @@ public interface RawDataDao {
 
     Integer addAttachRawData(AttachRawData attachRawData);
 
-    Integer updateAttachRawData(AttachRawData attachRawData);
+    Integer addAttachRawDataList(List<AttachRawData> attachRawDataList);
+
+    Integer delAttachRawDataList(Integer itemGroupId,Integer dataSourceId,List<AttachRawData> attachRawDataList);
 
     List<Long> getEventRealIndexList(Integer itemGroupId, Integer dataSourceId, Integer itemId, List<Long> indexList);
 

+ 13 - 0
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/DataSourceServiceImpl.java

@@ -300,10 +300,12 @@ public class DataSourceServiceImpl implements DataSourceService {
     public synchronized Result updateDataSourceDriver(DataSourceDriver dataSourceDriver) {
         String clsId = dataSourceDriver.getClsId();
         if (OpcDaUtil.isAdapterClsId(clsId)) {
+            //查询数据库中原有的数据驱动
             DataSourceDriver dataSouceDriver1 = dataSourceDao.getDataSourceDriverNoId(dataSourceDriver);
             if (Blank.isNotEmpty(dataSouceDriver1)) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "已经存在此种驱动的配置了");
             }
+            //修改数据驱动
             if (dataSourceDao.updateDataSourceDriver(dataSourceDriver) <= 0) {
                 return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "修改驱动配置失败");
             }
@@ -354,10 +356,21 @@ public class DataSourceServiceImpl implements DataSourceService {
 
     @Override
     public Result delDataSourceDriver(Integer id) {
+        DataSourceDriver dataSourceDriver = dataSourceDao.getDataSourceDriverByid(id);
         if (dataSourceDao.delDataSourceDriver(id) <= 0) {
             return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "删除失败");
         }
         dataSourceDao.delDriverBasicItem(id);
+        String clsId = dataSourceDriver.getClsId();
+        List<DataSource> dataSourceList = dataSourceDao.getDataSourceByclsId(clsId);
+        if (Blank.isNotEmpty(dataSourceList)) {
+            List<ItemGroup> itemGroupList = itemGroupDao.getIgListByDsId(dataSourceList);
+            if (Blank.isNotEmpty(itemGroupList)) {
+                for (ItemGroup itemGroup : itemGroupList) {
+                    itemGroupDao.updateItByItemGroupId(itemGroup.getId(),ConstantStr.BASIC_ATTRIBUTES);
+                }
+            }
+        }
         return Result.ok("删除成功");
     }
 

+ 7 - 8
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcAsyncTask.java

@@ -70,14 +70,13 @@ public class OpcAsyncTask {
         }
     }
 
-    public synchronized void addAttachRawData(AttachRawData attachRawData) {
-        if (Blank.isNotEmpty(attachRawData)) {
-            AttachRawData attachRawData1 = rawDataDao.getAttachRawDataReal(attachRawData.getItemGroupId(), attachRawData.getDataSourceId(), attachRawData.getItemName());
-            if (Blank.isEmpty(attachRawData1)) {
-                rawDataDao.addAttachRawData(attachRawData);
-            } else {
-                rawDataDao.updateAttachRawData(attachRawData);
-            }
+    public synchronized void addAttachRawDataList(List<AttachRawData> attachRawDataList) {
+        if (Blank.isNotEmpty(attachRawDataList)) {
+            AttachRawData attachRawData = attachRawDataList.get(0);
+            Integer itemGroupId = attachRawData.getItemGroupId();
+            Integer dataSourceId = attachRawData.getDataSourceId();
+            rawDataDao.delAttachRawDataList(itemGroupId, dataSourceId, attachRawDataList);
+            rawDataDao.addAttachRawDataList(attachRawDataList);
         }
     }
 

+ 16 - 12
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask.java

@@ -88,7 +88,6 @@ public class OpcDaExceedTask extends TimerTask {
         Double modeValue = itemGroup.getModeValue();
         Integer dataSourceId = dataSource.getId();
         String driverItem = OpcDaUtil.getDriverItem(itemList);
-        SyncAccess access = null;
         try {
             server.connect();
             server.addStateListener(connected -> {
@@ -150,7 +149,6 @@ public class OpcDaExceedTask extends TimerTask {
             Set itemSet = new HashSet(itemResult.values());
             org.openscada.opc.lib.da.Item[] itemArr = new org.openscada.opc.lib.da.Item[itemSet.size()];
             itemSet.toArray(itemArr);
-            String sqlCurrentYmdh = "";
             Long index = 0L;
             while (true) {
                 Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
@@ -213,12 +211,12 @@ public class OpcDaExceedTask extends TimerTask {
                             }
                         } else {
                             try {
-                                if(Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
-                                        && dm.getOperationRule().equals(value.toString())){
+                                if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
+                                        && dm.getOperationRule().equals(value.toString())) {
                                     CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
                                             currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
                                     cursorRawDataList.add(cursorRawData);
-                                }else{
+                                } else {
                                     BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
                                     BigDecimal dmData = Blank.isNotEmpty(dm) ?
                                             MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
@@ -290,13 +288,19 @@ public class OpcDaExceedTask extends TimerTask {
                                     }
                                 }
                             } catch (Exception e) {
-                                if(Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
-                                        && dm.getOperationRule().equals(value.toString())){
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                    cursorRawDataList.add(cursorRawData);
-                                }else{
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
+                                if (Blank.isNotEmpty(value)) {
+                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
+                                            && dm.getOperationRule().equals(value.toString())) {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                        cursorRawDataList.add(cursorRawData);
+                                    } else {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                        cursorRawDataList.add(cursorRawData);
+                                    }
+                                } else {
+                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
                                             currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
                                     cursorRawDataList.add(cursorRawData);
                                 }

+ 12 - 6
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask.java

@@ -241,13 +241,19 @@ public class OpcDaFrequencyTask extends TimerTask {
                                     cursorRawDataList.add(cursorRawData);
                                 }
                             } catch (Exception e) {
-                                if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
-                                        && dm.getOperationRule().equals(value.toString())) {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                    cursorRawDataList.add(cursorRawData);
+                                if (Blank.isNotEmpty(value)) {
+                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
+                                            && dm.getOperationRule().equals(value.toString())) {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                        cursorRawDataList.add(cursorRawData);
+                                    } else {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                        cursorRawDataList.add(cursorRawData);
+                                    }
                                 } else {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
+                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
                                             currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
                                     cursorRawDataList.add(cursorRawData);
                                 }

+ 17 - 6
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaTask.java

@@ -167,6 +167,7 @@ public class OpcDaTask {
                     org.openscada.opc.lib.da.Item[] itemArr = new org.openscada.opc.lib.da.Item[itemSet.size()];
                     itemSet.toArray(itemArr);
                     Map<org.openscada.opc.lib.da.Item, ItemState> resultMap = group.read(true, itemArr);
+                    List<AttachRawData> attachRawDataList = new ArrayList<>();
                     for (Item item : attachItemList) {
                         String itemReadName = item.getItemReadName();
                         DataModel dm = attachMap.get(itemReadName);
@@ -182,7 +183,7 @@ public class OpcDaTask {
                                     AttachRawData attachRawData = new AttachRawData(
                                             id, dataSource.getId(), keyId, javaType, value.toString(), value.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
                                     );
-                                    opcAsyncTask.addAttachRawData(attachRawData);
+                                    attachRawDataList.add(attachRawData);
                                 } else {
                                     try {
                                         BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
@@ -191,18 +192,28 @@ public class OpcDaTask {
                                                 (Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) : bigDecimal).toString(),
                                                 DateUtil.dateChangeStrYmdhmss(time), new Date()
                                         );
-                                        opcAsyncTask.addAttachRawData(attachRawData);
+                                        attachRawDataList.add(attachRawData);
                                     } catch (Exception e) {
-                                        AttachRawData attachRawData = new AttachRawData(
-                                                id, dataSource.getId(), keyId, javaType, value.toString(), value.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
-                                        );
-                                        opcAsyncTask.addAttachRawData(attachRawData);
+                                        if (Blank.isNotEmpty(value)) {
+                                            AttachRawData attachRawData = new AttachRawData(
+                                                    id, dataSource.getId(), keyId, javaType, value.toString(), value.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
+                                            );
+                                            attachRawDataList.add(attachRawData);
+                                        } else {
+                                            AttachRawData attachRawData = new AttachRawData(
+                                                    id, dataSource.getId(), keyId, javaType, "null", "null", DateUtil.dateChangeStrYmdhmss(time), new Date()
+                                            );
+                                            attachRawDataList.add(attachRawData);
+                                        }
                                     }
                                 }
                                 break;
                             }
                         }
                     }
+                    if (Blank.isNotEmpty(attachItemList)) {
+                        opcAsyncTask.addAttachRawDataList(attachRawDataList);
+                    }
                 }
             } catch (Exception e) {
                 e.printStackTrace();

+ 17 - 6
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/ScheduledTask.java

@@ -74,6 +74,7 @@ public class ScheduledTask {
                                     org.openscada.opc.lib.da.Item[] itemArr = new org.openscada.opc.lib.da.Item[itemSet.size()];
                                     itemSet.toArray(itemArr);
                                     Map<org.openscada.opc.lib.da.Item, ItemState> resultMap = group.read(true, itemArr);
+                                    List<AttachRawData> attachRawDataList = new ArrayList<>();
                                     for (org.openscada.opc.lib.da.Item key : resultMap.keySet()) {
                                         String keyId = key.getId();
                                         ItemState itemMap = resultMap.get(key);
@@ -85,7 +86,7 @@ public class ScheduledTask {
                                             AttachRawData attachRawData = new AttachRawData(
                                                     itemGroupId, dataSourceId, keyId, javaType, value.toString(), value.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
                                             );
-                                            opcAsyncTask.addAttachRawData(attachRawData);
+                                            attachRawDataList.add(attachRawData);
                                         } else {
                                             try {
                                                 BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
@@ -98,15 +99,25 @@ public class ScheduledTask {
                                                         itemGroupId, dataSourceId, keyId, javaType, bigDecimal.toString(),
                                                         bigDecimal.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
                                                 );
-                                                opcAsyncTask.addAttachRawData(attachRawData);
+                                                attachRawDataList.add(attachRawData);
                                             } catch (Exception e) {
-                                                AttachRawData attachRawData = new AttachRawData(
-                                                        itemGroupId, dataSourceId, keyId, javaType, value.toString(), value.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
-                                                );
-                                                opcAsyncTask.addAttachRawData(attachRawData);
+                                                if (Blank.isNotEmpty(value)) {
+                                                    AttachRawData attachRawData = new AttachRawData(
+                                                            itemGroupId, dataSourceId, keyId, javaType, value.toString(), value.toString(), DateUtil.dateChangeStrYmdhmss(time), new Date()
+                                                    );
+                                                    attachRawDataList.add(attachRawData);
+                                                } else {
+                                                    AttachRawData attachRawData = new AttachRawData(
+                                                            itemGroupId, dataSourceId, keyId, javaType, "null", "null", DateUtil.dateChangeStrYmdhmss(time), new Date()
+                                                    );
+                                                    attachRawDataList.add(attachRawData);
+                                                }
                                             }
                                         }
                                     }
+                                    if (Blank.isNotEmpty(attachItemList)) {
+                                        opcAsyncTask.addAttachRawDataList(attachRawDataList);
+                                    }
                                 }
                             } catch (Exception e) {
                                 e.printStackTrace();

BIN
chaunyi_opc/opc_da/src/main/resources/lib/org.openscada.opc.lib-1.5.0.jar


+ 17 - 11
chaunyi_opc/opc_da/src/main/resources/mapper/ItemGroupDao.xml

@@ -89,6 +89,12 @@
             }
     </update>
 
+    <update id="updateItByItemGroupId">
+        update t_item
+        set item_type=#{itemType}
+        where item_group_id = #{itemGroupId}
+    </update>
+
     <delete id="delItemByGroupId">
         delete
         from t_item
@@ -254,18 +260,18 @@
 
     <select id="getAttributesItemList" resultType="com.example.opc_common.entity.Item">
         select ti.id,
-               ti.item_group_id,
-               ti.item_name,
-               ti.item_read_name,
-               ti.item_type,
-               ti.node_index,
-               ti.data_type,
-               ti.`describe`,
-               ti.data_model_id,
-               ti.is_driver_item,
-               tdm.operation_rule
+        ti.item_group_id,
+        ti.item_name,
+        ti.item_read_name,
+        ti.item_type,
+        ti.node_index,
+        ti.data_type,
+        ti.`describe`,
+        ti.data_model_id,
+        ti.is_driver_item,
+        tdm.operation_rule
         FROM t_item ti
-                 LEFT JOIN t_data_model tdm ON ti.data_model_id = tdm.id
+        LEFT JOIN t_data_model tdm ON ti.data_model_id = tdm.id
         where ti.item_group_id = #{itemGroupId}
         <if test="itemType != null">
             and ti.item_type = #{itemType}

+ 28 - 15
chaunyi_opc/opc_da/src/main/resources/mapper/RawDataDao.xml

@@ -46,11 +46,11 @@
         is_record, create_time)
         VALUES
         <foreach collection="cursorRawDataList" item="cursorRawData" separator=",">
-            (#{cursorRawDataList.itemGroupId}, #{cursorRawDataList.dataSourceId}, #{cursorRawDataList.itemName},
-            #{cursorRawDataList.dataType},
-            #{cursorRawDataList.orgDataValue}, #{cursorRawDataList.dataValue},
-            #{cursorRawDataList.dataValueTime}, #{cursorRawDataList.dataIndex},
-            #{cursorRawDataList.valueBelongTime}, #{cursorRawDataList.isRecord}, #{cursorRawDataList.createTime})
+            (#{cursorRawData.itemGroupId}, #{cursorRawData.dataSourceId}, #{cursorRawData.itemName},
+            #{cursorRawData.dataType},
+            #{cursorRawData.orgDataValue}, #{cursorRawData.dataValue},
+            #{cursorRawData.dataValueTime}, #{cursorRawData.dataIndex},
+            #{cursorRawData.valueBelongTime}, #{cursorRawData.isRecord}, #{cursorRawData.createTime})
         </foreach>
     </insert>
 
@@ -64,16 +64,19 @@
                 #{dataValueTime}, #{createTime})
     </insert>
 
-    <update id="updateAttachRawData">
-        update t_attach_raw_data
-        set data_type=#{dataType},
-            org_data_value=#{orgDataValue},
-            data_value=#{dataValue},
-            data_value_time=#{dataValueTime}
-        where item_group_id = #{itemGroupId}
-          and data_source_id = #{dataSourceId}
-          and item_name = #{itemName}
-    </update>
+    <insert id="addAttachRawDataList">
+        insert into t_attach_raw_data
+        (item_group_id, data_source_id, item_name, data_type, org_data_value, data_value,
+        data_value_time,
+        create_time)
+        VALUES
+        <foreach collection="attachRawDataList" item="attachRawData" separator=",">
+            (#{attachRawData.itemGroupId}, #{attachRawData.dataSourceId}, #{attachRawData.itemName},
+            #{attachRawData.dataType},
+            #{attachRawData.orgDataValue}, #{attachRawData.dataValue},
+            #{attachRawData.dataValueTime}, #{attachRawData.createTime})
+        </foreach>
+    </insert>
 
     <delete id="delCursorRawDataList">
         delete
@@ -90,6 +93,16 @@
           and data_index &lt;= #{dataIndex}
     </delete>
 
+    <delete id="delAttachRawDataList">
+        delete from t_attach_raw_data
+        where item_group_id=#{itemGroupId}
+        and data_source_id=#{dataSourceId}
+        and item_name in
+        <foreach collection="attachRawDataList" item="attachRawData" separator="," open="(" close=")">
+            #{attachRawData.itemName}
+        </foreach>
+    </delete>
+
     <select id="getLineOrBarData" resultType="com.example.opc_common.entity.RawData">
         SELECT id, data_source_id, item_name, data_type, data_value, create_time
         FROM t_raw_data${remainder}