oppadmin преди 4 години
родител
ревизия
8494749e56

+ 4 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dao/DeviceMapper.java

@@ -22,5 +22,9 @@ public interface DeviceMapper {
 
     //同步水表信息
     int updateSync(@Param("devices") MeterSyncDto devices);
+
+    int updateSyncDeviceStatus(@Param("devices") MeterSyncDto devices);
+
+    List<Device> findList(@Param("siteId") Integer siteId,@Param("customerId") Integer customerId);
 }
 

+ 6 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/MeterSyncDto.java

@@ -25,6 +25,12 @@ public class MeterSyncDto {
     @ApiModelProperty(value = "状态")
     private	Integer	status;
 
+    @ApiModelProperty(value = "设备状态")
+    private	Integer	deviceStatus;
+
+    @ApiModelProperty(value = "故障天数")
+    private	Integer	days;
+
     @ApiModelProperty(value = "创建时间")
     private	String	dateCreate;
 

+ 5 - 2
smart-city-platform/src/main/java/com/bz/smart_city/dto/pay/PayControlRecordDto.java

@@ -22,11 +22,14 @@ public class PayControlRecordDto extends PayControlRecord {
     private String meterCode;
     @ApiModelProperty(value = "设备型号")
     private String deviceModel;
-    @ApiModelProperty(value = "设备状态")
-    private String controlStatus;
+    @ApiModelProperty(value = "设备状态 1正常 2故障 3无 4预警 5未启用")
+    private String deviceStatus;
     @ApiModelProperty(value = "安装地址")
     private String locDesc;
 
+    @ApiModelProperty(value = "设备状态 1正常 2故障 3无 4预警 5未启用")
+    private String controlStatus;
+
     @ApiModelProperty(value = "开始时间",  hidden = true)
     @JsonIgnore
     private LocalDateTime beginTime;

+ 22 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/pay/SynDeviceResult.java

@@ -0,0 +1,22 @@
+package com.bz.smart_city.dto.pay;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by ZJY on 2021-02-01 18:47
+ */
+@ApiModel("水表设备状态同步结果")
+@Data
+public class SynDeviceResult {
+    @ApiModelProperty("水表电子号")
+    private String electronicMeterNo;
+
+    @ApiModelProperty("故障天数")
+    private Integer days;
+
+    @ApiModelProperty("设备状态")
+    private Integer deviceStatus;
+
+}

+ 21 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/pay/SynDeviceStatus.java

@@ -0,0 +1,21 @@
+package com.bz.smart_city.dto.pay;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by ZJY on 2021-02-01 18:41
+ */
+@ApiModel("水表设备状态同步")
+@Data
+public class SynDeviceStatus {
+
+    @ApiModelProperty("客户编码")
+    private String customerNo;
+
+    @ApiModelProperty("水表电子号")
+    private List<String> electronicMeterNos;
+}

+ 1 - 1
smart-city-platform/src/main/java/com/bz/smart_city/quartz/job/ControlByDayJob.java

@@ -30,7 +30,7 @@ public class ControlByDayJob implements Job, Serializable {
 
         // 2,调用推送方法
         log.info("invoke ControlByDayJob");
-        controlDayService.start(2,new BigInteger(siteId.toString()),new BigInteger(customerId.toString()));
+        controlDayService.start(1,new BigInteger(siteId.toString()),new BigInteger(customerId.toString()));
         log.info("invoked ControlByDayJob");
     }
 }

+ 3 - 3
smart-city-platform/src/main/java/com/bz/smart_city/quartz/service/impl/ControlDayServiceImpl.java

@@ -143,9 +143,9 @@ public class ControlDayServiceImpl implements ControlDayService, InitializingBea
         if(payBaseCustomerandmeterrelaList.size() > 0){
             Customer customerNo = customerMapper.findById(customer.getCustomerId().intValue());
             List<Integer> filterId = new ArrayList<>();
-            filterId.add(1);
-            filterId.add(3);
-            filterId.add(7);
+            filterId.add(1); //欠费天数
+            //filterId.add(3); //预存金额
+            //filterId.add(7); //预存与欠费差额
             for (PayBaseCustomerandmeterrela one: payBaseCustomerandmeterrelaList){
                 sendValve(customerNo.getCustomerNo(),flag,filterId,one);
             }

+ 63 - 4
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/pay/DeviceSyncServiceImpl.java

@@ -16,6 +16,8 @@ import com.bz.smart_city.dto.LoginUser;
 import com.bz.smart_city.dto.MeterSyncDto;
 import com.bz.smart_city.dto.MeterSyncInputDto;
 import com.bz.smart_city.dto.pay.PayBaseConfigDto;
+import com.bz.smart_city.dto.pay.SynDeviceResult;
+import com.bz.smart_city.dto.pay.SynDeviceStatus;
 import com.bz.smart_city.entity.Customer;
 import com.bz.smart_city.entity.Device;
 import com.bz.smart_city.entity.SyncValveResult;
@@ -36,8 +38,7 @@ import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 /**
  * Created by ZJY on 2020-09-28 10:22
@@ -166,7 +167,6 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
                                     deviceMapper.updateSync(meterSyncDto);
                                 }
                             }
-
                         }
                     }
 
@@ -177,10 +177,69 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
                 }
             }
         }
+        getDeviceSatus(siteId,customerId);
 
+    }
 
+    //获取设备状态
+    public void getDeviceSatus(Integer siteId, Integer customerId){
+        try {
+            log.info(String.format("设备状态同步siteId:%s,customerId:%s",siteId,customerId));
+            //取客户编号
+            String customerNo= "";
+            Customer customer= customerMapper.findById(customerId);
+            if(customer != null && customer.getCustomerNo() != null){
+                customerNo = customer.getCustomerNo();
+            }
+            else
+                return;
+
+            String url = SyncUrl+"/api/platform/getDeviceStatus";
+            int loadNumber = 1000; //批量数量
+            List<Device> deviceList = deviceMapper.findList(siteId,customerId);
+            if(deviceList != null && deviceList.size() > 0){
+                int count = deviceList.size();
+                int number  = (count/loadNumber) ;
+
+                for(int i=0;i<=number;i++){
+                    int leng = loadNumber;
+                    if(i*loadNumber + loadNumber > count)
+                        leng = count - i*loadNumber;
+
+                    if(leng >0){
+                        List<Device> subDeviceList = new ArrayList<>();
+                        subDeviceList.addAll(deviceList.subList(i*loadNumber ,i*loadNumber+leng));
+                        SynDeviceStatus synDeviceStatus = new SynDeviceStatus();
+                        synDeviceStatus.setCustomerNo(customerNo);
+                        synDeviceStatus.setElectronicMeterNos(new ArrayList());
+                        for (int k = 0;k < leng ;k++){
+                            synDeviceStatus.getElectronicMeterNos().add(subDeviceList.get(k).getWaterMeterNo());
+                        }
 
-    }
+                        String json= JSON.toJSON(synDeviceStatus).toString();
+                        String result = HttpClientUtils.doPostWithJson(url,json);
+                        JSONObject jsonObject= JSON.parseObject(result);
+                        Integer status= jsonObject.getInteger("status");
+                        if(status.equals(0)){
+                            JSONArray datas = jsonObject.getJSONArray("data");
+                            List<SynDeviceResult> syncValveResultList = datas.toJavaList(SynDeviceResult.class);
+
+                            for (SynDeviceResult SynResutl:syncValveResultList){
+                                MeterSyncDto meterSyncDto = new MeterSyncDto();
+                                meterSyncDto.setWaterMeterNo(SynResutl.getElectronicMeterNo());
+                                meterSyncDto.setDays(SynResutl.getDays());
+                                meterSyncDto.setDeviceStatus(SynResutl.getDeviceStatus());
+                                deviceMapper.updateSyncDeviceStatus(meterSyncDto);
+                            }
 
+                        }
+                    }
+                }
+            }
+        }
+        catch(Exception ex){
+            ;
+        }
+    }
 
 }

+ 47 - 2
smart-city-platform/src/main/resources/mapper/DeviceMapper.xml

@@ -92,11 +92,21 @@
             <if test="devices.status != null">status = #{devices.status,jdbcType=INTEGER},</if>
             <if test="devices.currStatus != null">curr_status = #{devices.currStatus,jdbcType=INTEGER},</if>
             <if test="devices.initialData != null">new_meter_start = #{devices.initialData,jdbcType=DECIMAL},</if>
-            <if test="devices.fileNo != null and devices.fileNo != ''"> metercode = #{devices.fileNo}</if>
+            <if test="devices.fileNo != null and devices.fileNo != ''"> metercode = #{devices.fileNo},</if>
+            <if test="devices.deviceStatus != null "> device_status = #{devices.deviceStatus}</if>
         </set>
         where metercode = #{devices.meterCode}
     </update>
 
+    <update id="updateSyncDeviceStatus">
+        update sc_device
+        <set>
+            <if test="devices.deviceStatus != null "> device_status = #{devices.deviceStatus},</if>
+            <if test="devices.days != null "> days = #{devices.days}</if>
+        </set>
+        where water_meter_no = #{devices.waterMeterNo}
+    </update>
+
     <select id="getNoSyncList" resultType="com.bz.smart_city.entity.Device">
         select
         id,
@@ -127,7 +137,42 @@
         new_meter_start,
         device_model,
         metercode
-        from sc_device where curr_status = 0 and metercode is not null
+        from sc_device where curr_status = 0 and status = 1 and metercode is not null
+        <if test="siteId != null"> and site_id = #{siteId,jdbcType=INTEGER}</if>
+        <if test="customerId != null"> and customer_id = #{customerId,jdbcType=INTEGER}</if>
+    </select>
+
+    <select id="findList" resultType="com.bz.smart_city.entity.Device">
+        select
+        id,
+        device_no,
+        device_type,
+        sys_id,
+        site_id,
+        community_id,
+        `floor`,
+        loc_desc,
+        related_device_no,
+        manufacturer_id,
+        device_status,
+        `status`,
+        is_tag,
+        x_coordinates,
+        y_coordinates,
+        create_by,
+        update_by,
+        date_create,
+        date_update,
+        plan_id,
+        water_meter_no,
+        water_meter_file_no,
+        customer_id,
+        udip_id,
+        curr_status,
+        new_meter_start,
+        device_model,
+        metercode
+        from sc_device where status=1 and metercode is not null
         <if test="siteId != null"> and site_id = #{siteId,jdbcType=INTEGER}</if>
         <if test="customerId != null"> and customer_id = #{customerId,jdbcType=INTEGER}</if>
     </select>

+ 3 - 2
smart-city-platform/src/main/resources/mapper/pay/PayControlRecordMapper.xml

@@ -22,7 +22,8 @@
         sc.metercode,
         sc.device_model,
         sc.loc_desc,
-        sc.control_status
+        sc.device_status,
+        (case device_status when  1 then '正常' when 2 then CONCAT('故障',case when days >=0 then days else '' end) when 3 then '无' when 4 then '预警' when 5 then '未启用' else null end ) controlStatus
         from pay_control_record pcr
         left join pay_control_rule pcrule on pcr.control_rule_id = pcrule.id
         left join sc_device sc on pcr.meter_id = sc.id
@@ -68,7 +69,7 @@
         sc.metercode,
         sc.device_model,
         sc.loc_desc,
-        sc.control_status
+        sc.device_status
         from pay_control_record pcr
         left join pay_control_rule pcrule on pcr.control_rule_id = pcrule.id
         left join sc_device sc on pcr.meter_id = sc.id