doum
7 天以前 5f9bf98779e2c3e69324d75849efdda00868da4f
新增智能电表、空调管理
已添加1个文件
已修改9个文件
146 ■■■■ 文件已修改
admin/src/views/business/ywconditionermeter.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_conditioner_meter.dlj_mac.sql 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/yw_conditioner_module.sql 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/java/com/doumee/api/InterfaceLogTimerController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/conditoner/model/response/MeterDbInfoResponse.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwConditionerMeter.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ConditionerBizServiceImpl.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/ywconditionermeter.vue
@@ -27,14 +27,20 @@
        <el-table-column prop="dbName" label="电表名称" min-width="130" align="center" show-overflow-tooltip />
        <el-table-column prop="dbAdr" label="表地址" min-width="120" align="center" show-overflow-tooltip />
        <el-table-column prop="wgMac" label="网关MAC" min-width="140" align="center" show-overflow-tooltip />
        <el-table-column label="多联机MAC" min-width="180" align="center" show-overflow-tooltip>
          <template slot-scope="{ row }">{{ formatNum(row.dljMac) }}</template>
        </el-table-column>
        <el-table-column label="波特率" min-width="80" align="center">
          <template slot-scope="{ row }">{{ formatNum(row.btl) }}</template>
        </el-table-column>
        <el-table-column label="是否校验" min-width="100" align="center">
          <template slot-scope="{ row }">{{ formatJy(row.jy) }}</template>
        </el-table-column>
        <el-table-column prop="dbBb" label="变比" min-width="80" align="center" />
        <el-table-column prop="xyName" label="协议" min-width="100" align="center" show-overflow-tooltip />
        <el-table-column prop="standbyShare" label="待机分摊" min-width="100" align="center" show-overflow-tooltip />
        <el-table-column prop="outdoorLoop" label="外机回路" min-width="90" align="center" />
        <el-table-column label="功率(kW)" min-width="100" align="center">
          <template slot-scope="{ row }">{{ formatNum(row.powerKw) }}</template>
        </el-table-column>
        <el-table-column label="累计电量" min-width="110" align="center">
        <el-table-column label="累计电能" min-width="110" align="center">
          <template slot-scope="{ row }">{{ formatNum(row.totalDl) }}</template>
        </el-table-column>
        <el-table-column label="操作" min-width="160" align="center" fixed="right">
@@ -122,6 +128,10 @@
      if (val === null || val === undefined || val === '') return '-'
      return val
    },
    formatJy (val) {
      if (val === null || val === undefined || val === '') return '-'
      return Number(val) === 1 ? '1-校验' : '0-无校验'
    },
    handleSync () {
      this.$dialog.actionConfirm('确认从智精灵平台同步全部电表吗?', '同步电表')
        .then(() => {
@@ -141,8 +151,8 @@
      this.operateType = 'energy'
      meterApi.queryEnergy(row.id)
        .then(res => {
          this.$tip.apiSuccess(res || '查电量请求已提交')
          this.handlePageChange()
          this.$tip.apiSuccess(res || '查电量成功')
          this.search()
        })
        .catch(e => this.$tip.apiFailed(e))
        .finally(() => {
@@ -155,8 +165,8 @@
      this.operateType = 'power'
      meterApi.queryPower(row.id)
        .then(res => {
          this.$tip.apiSuccess(res || '查功率请求已提交')
          this.handlePageChange()
          this.$tip.apiSuccess(res || '查功率成功')
          this.search()
        })
        .catch(e => this.$tip.apiFailed(e))
        .finally(() => {
server/db/business.yw_conditioner_meter.dlj_mac.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
-- ç©ºè°ƒç”µè¡¨ï¼šå¤šè”机 MAC、波特率、校验位
SET @db := DATABASE();
SET @sql := IF(
  (SELECT COUNT(*) FROM information_schema.COLUMNS
   WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'yw_conditioner_meter' AND COLUMN_NAME = 'dlj_mac') = 0,
  'ALTER TABLE `yw_conditioner_meter` ADD COLUMN `dlj_mac` varchar(64) DEFAULT NULL COMMENT ''多联机MAC'' AFTER `xy_name`',
  'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sql := IF(
  (SELECT COUNT(*) FROM information_schema.COLUMNS
   WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'yw_conditioner_meter' AND COLUMN_NAME = 'btl') = 0,
  'ALTER TABLE `yw_conditioner_meter` ADD COLUMN `btl` int DEFAULT NULL COMMENT ''波特率'' AFTER `dlj_mac`',
  'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sql := IF(
  (SELECT COUNT(*) FROM information_schema.COLUMNS
   WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'yw_conditioner_meter' AND COLUMN_NAME = 'jy') = 0,
  'ALTER TABLE `yw_conditioner_meter` ADD COLUMN `jy` int DEFAULT NULL COMMENT ''是否校验 0无校验 1校验'' AFTER `btl`',
  'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
server/db/yw_conditioner_module.sql
@@ -53,6 +53,9 @@
  `wg_id` int DEFAULT NULL,
  `xy_id` int DEFAULT NULL,
  `xy_name` varchar(128) DEFAULT NULL,
  `dlj_mac` varchar(64) DEFAULT NULL COMMENT '多联机MAC',
  `btl` int DEFAULT NULL COMMENT '波特率',
  `jy` int DEFAULT NULL COMMENT '是否校验 0无校验 1校验',
  `db_bb` int DEFAULT NULL COMMENT '变比',
  `standby_share` varchar(32) DEFAULT NULL COMMENT '待机分摊',
  `outdoor_loop` int DEFAULT NULL COMMENT '外机回路号',
server/system_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: pro
  application:
    name: systemTimer
    # å®‰å…¨é…ç½®
server/visits/admin_timer/src/main/java/com/doumee/api/InterfaceLogTimerController.java
@@ -31,5 +31,4 @@
        return ApiResponse.success("开启定时接口日志清理成功");
    }
}
server/visits/admin_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: pro
  application:
    name: visitsTimer
    # å®‰å…¨é…ç½®
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: pro
  application:
    name: visitsAdmin
    # å®‰å…¨é…ç½®
server/visits/dmvisit_service/src/main/java/com/doumee/core/conditoner/model/response/MeterDbInfoResponse.java
@@ -13,6 +13,9 @@
    private Integer wg_id;
    private String xy_name;
    private Integer xy_id;
    private String dlj_mac;
    private Integer btl;
    private Integer jy;
    private String db_adr;
    private String db_name;
    private Integer db_bb;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwConditionerMeter.java
@@ -36,6 +36,12 @@
    private Integer wgId;
    private Integer xyId;
    private String xyName;
    @ApiModelProperty("多联机MAC")
    private String dljMac;
    @ApiModelProperty("波特率")
    private Integer btl;
    @ApiModelProperty("是否校验 0无校验 1校验")
    private Integer jy;
    @ApiModelProperty("变比")
    private Integer dbBb;
    @ApiModelProperty("待机分摊")
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ConditionerBizServiceImpl.java
@@ -524,23 +524,8 @@
        if (!ok) {
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), apiMsg(resp, "查询失败"));
        }
        if (ACTION_QUERY_DL == actionType && resp.getData() != null) {
            try {
                BigDecimal dl = new BigDecimal(String.valueOf(resp.getData()));
                meter.setTotalDl(dl);
            } catch (Exception ignored) {
            }
        }
        if (ACTION_QUERY_POWER == actionType && resp.getData() != null) {
            try {
                BigDecimal kw = new BigDecimal(String.valueOf(resp.getData()));
                meter.setPowerKw(kw);
            } catch (Exception ignored) {
            }
        }
        meter.setLastSyncDate(new Date());
        meterMapper.updateById(meter);
        return "查询成功";
        String syncMsg = syncMeters();
        return "查询成功;" + syncMsg;
    }
    @Override
@@ -772,6 +757,9 @@
        if (StringUtils.isBlank(meter.getXyName())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "电表协议为空,请先同步电表");
        }
        if (StringUtils.isBlank(meter.getDljMac())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "多联机MAC为空,请先同步电表");
        }
        DevControlRequest req = new DevControlRequest();
        req.fillSessionDefaults();
        req.setWg_mac(meter.getWgMac());
@@ -781,6 +769,9 @@
        JSONObject setVal = new JSONObject();
        setVal.put("db_bb", meter.getDbBb() != null ? meter.getDbBb() : 1);
        setVal.put("xy_name", meter.getXyName());
        setVal.put("dlj_mac", meter.getDljMac());
        setVal.put("btl", meter.getBtl() != null ? meter.getBtl() : 4);
        setVal.put("jy", meter.getJy() != null ? meter.getJy() : 0);
        req.setSet_val(setVal);
        return req;
    }
@@ -837,16 +828,60 @@
        local.setWgId(item.getWg_id());
        local.setXyId(item.getXy_id());
        local.setXyName(item.getXy_name());
        local.setDljMac(item.getDlj_mac());
        local.setBtl(item.getBtl());
        local.setJy(item.getJy());
        local.setDbBb(item.getDb_bb());
        local.setOutdoorLoop(item.getDb_rhd());
        local.setDbUptime(item.getDb_uptime());
        if (item.getDb_data() != null) {
            local.setDbData(JSON.toJSONString(item.getDb_data()));
            BigDecimal energy = parseDbDataEnergy(item.getDb_data());
            if (energy != null) {
                local.setTotalDl(energy);
            }
        }
        local.setLastSyncDate(now);
        local.setEditDate(now);
    }
    private BigDecimal parseDbDataEnergy(Object dbData) {
        if (dbData == null) {
            return null;
        }
        if (dbData instanceof Number) {
            return new BigDecimal(dbData.toString());
        }
        if (dbData instanceof String) {
            String text = ((String) dbData).trim();
            if (StringUtils.isBlank(text)) {
                return null;
            }
            try {
                return new BigDecimal(text);
            } catch (Exception ignored) {
                try {
                    return parseDbDataEnergy(JSON.parse(text));
                } catch (Exception ignored2) {
                    return null;
                }
            }
        }
        if (dbData instanceof JSONObject) {
            JSONObject obj = (JSONObject) dbData;
            for (String key : Arrays.asList("dl", "dn", "total_dl", "totalDl", "db_data", "energy")) {
                if (obj.containsKey(key) && obj.get(key) != null) {
                    return parseDbDataEnergy(obj.get(key));
                }
            }
            return null;
        }
        if (dbData instanceof Map) {
            return parseDbDataEnergy(new JSONObject((Map<String, Object>) dbData));
        }
        return null;
    }
    private void fillConditionerFromStatus(YwConditioner local, DeviceStatusResponse item,
                                           DeviceArchiveResponse archive, Date now) {
        local.setPlatformDevId(item.getDev_id());