Browse Source

Merge remote-tracking branch 'origin/0727' into 0727

609324174@qq.com 4 năm trước cách đây
mục cha
commit
1a172fc587
15 tập tin đã thay đổi với 274 bổ sung96 xóa
  1. 12 0
      smart-city-platform/src/main/java/com/bz/smart_city/controller/DeviceController.java
  2. 1 0
      smart-city-platform/src/main/java/com/bz/smart_city/controller/assistant/MobileController.java
  3. 37 4
      smart-city-platform/src/main/java/com/bz/smart_city/controller/system/ReplaceManageController.java
  4. 6 0
      smart-city-platform/src/main/java/com/bz/smart_city/dao/DeviceMapper.java
  5. 19 1
      smart-city-platform/src/main/java/com/bz/smart_city/dao/WaterMeterReplaceLogMapper.java
  6. 6 3
      smart-city-platform/src/main/java/com/bz/smart_city/dto/WaterMeterMaintenanceLogDto.java
  7. 3 0
      smart-city-platform/src/main/java/com/bz/smart_city/entity/WaterMeterReplaceLog.java
  8. 2 0
      smart-city-platform/src/main/java/com/bz/smart_city/service/DeviceService.java
  9. 6 2
      smart-city-platform/src/main/java/com/bz/smart_city/service/WaterMeterReplaceLogService.java
  10. 6 0
      smart-city-platform/src/main/java/com/bz/smart_city/service/impl/DeviceServiceImpl.java
  11. 65 77
      smart-city-platform/src/main/java/com/bz/smart_city/service/impl/WaterMeterMaintenanceLogServiceImpl.java
  12. 16 6
      smart-city-platform/src/main/java/com/bz/smart_city/service/impl/WaterMeterReplaceLogServiceImpl.java
  13. BIN
      smart-city-platform/src/main/resources/excel/batchOpenAccountTemplate.xlsx
  14. 25 0
      smart-city-platform/src/main/resources/mapper/DeviceMapper.xml
  15. 70 3
      smart-city-platform/src/main/resources/mapper/WaterMeterReplaceLogMapper.xml

+ 12 - 0
smart-city-platform/src/main/java/com/bz/smart_city/controller/DeviceController.java

@@ -304,4 +304,16 @@ public class DeviceController {
         return msg;
     }
 
+
+    @ResponseBody
+    @GetMapping("/queryDeviceInfoList")
+    @ApiOperation(value = "设备查询接口")
+    public AjaxMessage<List<DeviceDto>> queryDeviceInfoList(
+            @ApiParam(value = "设备编号", required = false) @RequestParam(required = false) String deviceNo,
+            @ApiParam(value = "水表电子号", required = false) @RequestParam(required = false) String waterMeterNo
+    ){
+        List<DeviceDto> list = deviceService.queryDeviceInfoList(deviceNo, waterMeterNo);
+        return new AjaxMessage<>(ResultStatus.OK, list);
+    }
+
 }

+ 1 - 0
smart-city-platform/src/main/java/com/bz/smart_city/controller/assistant/MobileController.java

@@ -229,6 +229,7 @@ public class MobileController {
 		return new AjaxMessage<>(ResultStatus.OK);
 	}
 
+	@Deprecated
 	@PostMapping("/replace")
     @ApiOperation(value = "调试换表接口")
     public AjaxMessage singleInstallReplace(

+ 37 - 4
smart-city-platform/src/main/java/com/bz/smart_city/controller/system/ReplaceManageController.java

@@ -3,6 +3,7 @@ package com.bz.smart_city.controller.system;
 import com.bz.smart_city.commom.model.AjaxMessage;
 import com.bz.smart_city.commom.model.Pagination;
 import com.bz.smart_city.commom.model.ResultStatus;
+import com.bz.smart_city.dto.BuildingSelectDto;
 import com.bz.smart_city.dto.WaterMeterMaintenanceLogDto;
 import com.bz.smart_city.dto.WaterMeterReplaceInputDto;
 import com.bz.smart_city.dto.WaterMeterReplaceLogDto;
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Controller
 @ResponseBody
@@ -38,14 +40,20 @@ public class ReplaceManageController {
             @ApiParam(value = "客户id", required = false) @RequestParam(required = false) Integer customerId,
             @ApiParam(value = "更换人", required = false) @RequestParam(required = false) String replaceUsername,
             @ApiParam(value = "是否验收,0否1是", required = false) @RequestParam(required = false) Integer isAccepted,
+            @ApiParam(value = "省", required = false) @RequestParam(required = false) Integer provinceId,
+            @ApiParam(value = "市", required = false) @RequestParam(required = false) Integer cityId,
+            @ApiParam(value = "区", required = false) @RequestParam(required = false) Integer regionId,
+            @ApiParam(value = "小区", required = false) @RequestParam(required = false) Integer communityId,
+            @ApiParam(value = "建筑id", required = false) @RequestParam(required = false) Integer buildingId,
             @ApiParam(value = "开始时间 格式:yyyyMMddHHmmss", required = false) @RequestParam(required = false) @DateTimeFormat(pattern = "yyyyMMddHHmmss") LocalDateTime startDate,
             @ApiParam(value = "开始时间 格式:yyyyMMddHHmmss", required = false) @RequestParam(required = false) @DateTimeFormat(pattern = "yyyyMMddHHmmss") LocalDateTime endDate,
             @ApiParam(value = "页数,非必传,默认第一页", required = false, defaultValue = "1") @RequestParam(required = false, defaultValue = "1") int pageNum,
             @ApiParam(value = "条数,非必传,默认15条", required = false, defaultValue = "15") @RequestParam(required = false, defaultValue = "15") int pageSize
     ){
         Pagination<WaterMeterReplaceLogDto> pageInfo = waterMeterReplaceLogService.getList(
-                deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,
-                pageNum, pageSize);
+                deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,
+                provinceId,cityId,regionId,communityId,buildingId,
+                startDate,endDate, pageNum, pageSize);
         return new AjaxMessage<>(ResultStatus.OK, pageInfo);
     }
 
@@ -58,13 +66,38 @@ public class ReplaceManageController {
             @ApiParam(value = "客户id", required = false) @RequestParam(required = false) Integer customerId,
             @ApiParam(value = "更换人", required = false) @RequestParam(required = false) String replaceUsername,
             @ApiParam(value = "是否验收,0否1是", required = false) @RequestParam(required = false) Integer isAccepted,
+            @ApiParam(value = "省", required = false) @RequestParam(required = false) Integer provinceId,
+            @ApiParam(value = "市", required = false) @RequestParam(required = false) Integer cityId,
+            @ApiParam(value = "区", required = false) @RequestParam(required = false) Integer regionId,
+            @ApiParam(value = "小区", required = false) @RequestParam(required = false) Integer communityId,
+            @ApiParam(value = "建筑id", required = false) @RequestParam(required = false) Integer buildingId,
             @ApiParam(value = "开始时间 格式:yyyyMMddHHmmss", required = false) @RequestParam(required = false) @DateTimeFormat(pattern = "yyyyMMddHHmmss") LocalDateTime startDate,
             @ApiParam(value = "开始时间 格式:yyyyMMddHHmmss", required = false) @RequestParam(required = false) @DateTimeFormat(pattern = "yyyyMMddHHmmss") LocalDateTime endDate,
             HttpServletResponse httpServletResponse
     ){
         waterMeterReplaceLogService.getExcel(
-                deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,
-                httpServletResponse);
+                deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,
+                provinceId,cityId,regionId,communityId,buildingId,
+                startDate,endDate, httpServletResponse);
+    }
+
+
+    @GetMapping("getAreaList")
+    @ApiOperation(value = "查询换表记区域列表")
+    public AjaxMessage<List<BuildingSelectDto>> getAreaList(
+            @ApiParam(value = "设备id", required = false) @RequestParam(required = false) Long deviceId,
+            @ApiParam(value = "设备编号/电子号/档案号", required = false) @RequestParam(required = false) String deviceNo,
+            @ApiParam(value = "更换方案,1 更换模块,2:更换整表", required = false) @RequestParam(required = false) Integer replaceMethod,
+            @ApiParam(value = "客户id", required = false) @RequestParam(required = false) Integer customerId,
+            @ApiParam(value = "更换人", required = false) @RequestParam(required = false) String replaceUsername,
+            @ApiParam(value = "是否验收,0否1是", required = false) @RequestParam(required = false) Integer isAccepted,
+            @ApiParam(value = "开始时间 格式:yyyyMMddHHmmss", required = false) @RequestParam(required = false) @DateTimeFormat(pattern = "yyyyMMddHHmmss") LocalDateTime startDate,
+            @ApiParam(value = "开始时间 格式:yyyyMMddHHmmss", required = false) @RequestParam(required = false) @DateTimeFormat(pattern = "yyyyMMddHHmmss") LocalDateTime endDate
+    ){
+        List<BuildingSelectDto> list = waterMeterReplaceLogService.getAreaList(
+                deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate
+                );
+        return new AjaxMessage<>(ResultStatus.OK, list);
     }
 
 

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

@@ -149,5 +149,11 @@ public interface DeviceMapper {
     Device findByDeviceIdIgnore(@Param("deviceId") Long deviceId);
 
     List<Device> findByAccountId(@Param("accountId") BigInteger accountId);
+
+    List<DeviceDto> queryDeviceInfoList(
+            @Param("siteId") Integer siteId,
+            @Param("deviceNo") String deviceNo,
+            @Param("waterMeterNo") String waterMeterNo,
+            @Param("programItems") List<ProgramItem> programItems);
 }
 

+ 19 - 1
smart-city-platform/src/main/java/com/bz/smart_city/dao/WaterMeterReplaceLogMapper.java

@@ -1,6 +1,6 @@
 package com.bz.smart_city.dao;
 
-import com.bz.smart_city.dto.WaterMeterMaintenanceLogDto;
+import com.bz.smart_city.dto.BuildingSelectInfoDto;
 import com.bz.smart_city.dto.WaterMeterReplaceLogDto;
 import com.bz.smart_city.entity.ProgramItem;
 import org.apache.ibatis.annotations.Mapper;
@@ -23,6 +23,24 @@ public interface WaterMeterReplaceLogMapper {
     WaterMeterReplaceLog findByMainLogId(@Param("mainLogId") Integer mainLogId);
 
     List<WaterMeterReplaceLogDto> findList(
+            @Param("siteId") Integer siteId,
+            @Param("deviceId") Long deviceId,
+            @Param("deviceNo") String deviceNo,
+            @Param("replaceMethod") Integer replaceMethod,
+            @Param("customerId") Integer customerId,
+            @Param("replaceUsername") String replaceUsername,
+            @Param("isAccepted") Integer isAccepted,
+            @Param("provinceId") Integer provinceId,
+            @Param("cityId") Integer cityId,
+            @Param("regionId") Integer regionId,
+            @Param("communityId") Integer communityId,
+            @Param("buildingId") Integer buildingId,
+            @Param("startDate") LocalDateTime startDate,
+            @Param("endDate") LocalDateTime endDate,
+            @Param("programItems") List<ProgramItem> programItems);
+
+    List<BuildingSelectInfoDto> getAreaList(
+            @Param("siteId") Integer siteId,
             @Param("deviceId") Long deviceId,
             @Param("deviceNo") String deviceNo,
             @Param("replaceMethod") Integer replaceMethod,

+ 6 - 3
smart-city-platform/src/main/java/com/bz/smart_city/dto/WaterMeterMaintenanceLogDto.java

@@ -16,7 +16,7 @@ public class WaterMeterMaintenanceLogDto extends WaterMeterMaintenanceLog {
     @ApiModelProperty(value = "新表表号(电子号)", position = 101)
     private String newWaterNo;
 
-    @ApiModelProperty(value = "旧表表号", position = 102)
+    @ApiModelProperty(value = "旧表表号(电子号)", position = 102)
     private String oldWaterNo;
 
     @ApiModelProperty(value = "新表起度", position = 103)
@@ -28,7 +28,7 @@ public class WaterMeterMaintenanceLogDto extends WaterMeterMaintenanceLog {
     @ApiModelProperty(value = "新表节点号(设备编号)", position = 105)
     private String newDeviceNo;
 
-    @ApiModelProperty(value = "旧表节点号", position = 106)
+    @ApiModelProperty(value = "旧表节点号(设备编号)", position = 106)
     private String oldDeviceNo;
 
     @ApiModelProperty(value = "新表流量号", position = 107)
@@ -43,7 +43,10 @@ public class WaterMeterMaintenanceLogDto extends WaterMeterMaintenanceLog {
     @ApiModelProperty(value = "旧设备标识码", position = 110)
     private String oldDeviceFlagNo;
 
-    @ApiModelProperty(value = "照片url", position = 111)
+    @ApiModelProperty(value = "新表设备类型id", position = 111)
+    private Integer newDeviceTypeId;
+
+    @ApiModelProperty(value = "照片url", position = 112)
     private List<String> imageUrls;
 
 }

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/entity/WaterMeterReplaceLog.java

@@ -15,6 +15,9 @@ public class WaterMeterReplaceLog {
     @ApiModelProperty(value="主键")
     private Integer id;
 
+    @ApiModelProperty(value="站点id")
+    private Integer siteId;
+
     @ApiModelProperty(value="记录表id,参考sc_water_meter_maintenance_log表id")
     private Integer mainLogId;
 

+ 2 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/DeviceService.java

@@ -124,4 +124,6 @@ public interface DeviceService{
     void setValve(Long deviceId);
 
     String batchRegister(List<Long> deviceIds);
+
+    List<DeviceDto> queryDeviceInfoList(String deviceNo, String waterMeterNo);
 }

+ 6 - 2
smart-city-platform/src/main/java/com/bz/smart_city/service/WaterMeterReplaceLogService.java

@@ -1,8 +1,10 @@
 package com.bz.smart_city.service;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 import com.bz.smart_city.commom.model.Pagination;
+import com.bz.smart_city.dto.BuildingSelectDto;
 import com.bz.smart_city.dto.WaterMeterReplaceInputDto;
 import com.bz.smart_city.dto.WaterMeterReplaceLogDto;
 import com.bz.smart_city.entity.WaterMeterReplaceLog;
@@ -16,9 +18,11 @@ public interface WaterMeterReplaceLogService{
 
     int updateByPrimaryKeySelective(WaterMeterReplaceLog waterMeterReplaceLog);
 
-    Pagination<WaterMeterReplaceLogDto> getList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate, int pageNum, int pageSize);
+    Pagination<WaterMeterReplaceLogDto> getList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, Integer provinceId, Integer cityId, Integer regionId, Integer communityId, Integer buildingId, LocalDateTime startDate, LocalDateTime endDate, int pageNum, int pageSize);
 
-    void getExcel(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate, HttpServletResponse httpServletResponse);
+    void getExcel(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, Integer provinceId, Integer cityId, Integer regionId, Integer communityId, Integer buildingId, LocalDateTime startDate, LocalDateTime endDate, HttpServletResponse httpServletResponse);
+
+    List<BuildingSelectDto> getAreaList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate);
 
     void submitWaterMeterReplace(WaterMeterReplaceInputDto waterMeterReplaceDto);
 }

+ 6 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/DeviceServiceImpl.java

@@ -1440,4 +1440,10 @@ public  class DeviceServiceImpl implements DeviceService {
         log.info("end batchRegister msg={}",msg);
         return msg;
     }
+
+    @Override
+    public List<DeviceDto> queryDeviceInfoList(String deviceNo, String waterMeterNo) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        return deviceMapper.queryDeviceInfoList(loginUser.getSiteId(),deviceNo,waterMeterNo,UserUtil.getCurrentSiteProgramItems(loginUser));
+    }
 }

+ 65 - 77
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/WaterMeterMaintenanceLogServiceImpl.java

@@ -6,6 +6,8 @@ import com.bz.smart_city.commom.util.UserUtil;
 import com.bz.smart_city.dao.*;
 import com.bz.smart_city.dao.assistant.InstallListMapper;
 import com.bz.smart_city.dto.DeviceErrorDto;
+import com.bz.smart_city.dto.DeviceTypeDto;
+import com.bz.smart_city.dto.LoginUser;
 import com.bz.smart_city.dto.WaterMeterMaintenanceLogDto;
 import com.bz.smart_city.entity.*;
 import com.bz.smart_city.entity.assistant.InstallList;
@@ -88,6 +90,7 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
     @Transactional
     public void submitWaterMeterWorkOrder(WaterMeterMaintenanceLogDto waterMeterMaintenanceLog) {
         log.info("begin WaterMeterMaintenanceLogServiceImpl submitWaterMeterWorkOrder waterMeterMaintenanceLog:" + JSON.toJSONString(waterMeterMaintenanceLog));
+        LoginUser loginUser = UserUtil.getCurrentUser();
         WorkOrder workOrder = workOrderMapper.findbyOrderNo(waterMeterMaintenanceLog.getOrdeNo());
         DeviceErrorDto deviceErrorDto = deviceErrorMapper.getDetail(Long.valueOf(workOrder.getReleationId()));
         Device device = deviceMapper.findByDeviceId(deviceErrorDto.getDeviceId());
@@ -117,66 +120,48 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
                 waterMeterMaintenanceImagesMapper.insertList(imagesList);
             }
 
-            //3、根据解决方案添加相关的记录(1 维修,2换表)
-            if (waterMeterMaintenanceLog.getSolutionMethod() == 1) {
-                WaterMeterRepairLog waterMeterRepairLog = new WaterMeterRepairLog();
-                waterMeterRepairLog.setMainLogId(waterMeterMaintenanceLog.getId());
-                waterMeterRepairLog.setDeviceId(deviceErrorDto.getDeviceId());
-                waterMeterRepairLog.setDeviceTypeId(device.getDeviceType());
-                waterMeterRepairLog.setNewWaterNo(waterMeterMaintenanceLog.getNewWaterNo());
-                waterMeterRepairLog.setOldWaterNo(waterMeterMaintenanceLog.getOldWaterNo());
-                waterMeterRepairLog.setNewBeginWsv(waterMeterMaintenanceLog.getNewBeginWsv());
-                waterMeterRepairLog.setOldEndWsv(waterMeterMaintenanceLog.getOldEndWsv());
-                waterMeterRepairLog.setNewWaterNo(waterMeterMaintenanceLog.getNewWaterNo());
-                waterMeterRepairLog.setOldWaterNo(waterMeterMaintenanceLog.getOldWaterNo());
-                waterMeterRepairLog.setNewBeginWsv(waterMeterMaintenanceLog.getNewBeginWsv());
-                waterMeterRepairLog.setOldEndWsv(waterMeterMaintenanceLog.getOldEndWsv());
-                waterMeterRepairLog.setNewDeviceNo(waterMeterMaintenanceLog.getNewDeviceNo());
-                waterMeterRepairLog.setOldDeviceNo(waterMeterMaintenanceLog.getOldDeviceNo());
-                waterMeterRepairLog.setRemark(waterMeterMaintenanceLog.getRemark());
-                waterMeterRepairLog.setStatus(1);
-                waterMeterRepairLog.setCreateBy(UserUtil.getCurrentUser().getUsername());
-                waterMeterRepairLog.setDateCreate(LocalDateTime.now());
-                waterMeterRepairLog.setUpdateBy(UserUtil.getCurrentUser().getUsername());
-                waterMeterRepairLog.setDateUpdate(LocalDateTime.now());
-                waterMeterRepairLogMapper.insert(waterMeterRepairLog);
+            //3、根据解决方案添加相关的记录(1 更换模块,2 更换整表)
+            WaterMeterReplaceLog waterMeterReplaceLog = new WaterMeterReplaceLog();
+            waterMeterReplaceLog.setMainLogId(waterMeterMaintenanceLog.getId());
+            waterMeterReplaceLog.setSiteId(loginUser.getSiteId());
+            waterMeterReplaceLog.setDeviceId(waterMeterMaintenanceLog.getDeviceId());
+            waterMeterReplaceLog.setReplaceMethod(waterMeterMaintenanceLog.getSolutionMethod());
+            waterMeterReplaceLog.setNewDeviceTypeId(waterMeterMaintenanceLog.getNewDeviceTypeId());
+            waterMeterReplaceLog.setOldDeviceTypeId(device.getDeviceType());
+            waterMeterReplaceLog.setNewWaterNo(waterMeterMaintenanceLog.getNewWaterNo());
+            waterMeterReplaceLog.setOldWaterNo(device.getWaterMeterNo());
+            waterMeterReplaceLog.setNewBeginWsv(waterMeterMaintenanceLog.getNewBeginWsv());
+            waterMeterReplaceLog.setOldEndWsv(waterMeterMaintenanceLog.getOldEndWsv());
+            waterMeterReplaceLog.setNewDeviceNo(waterMeterMaintenanceLog.getNewDeviceNo());
+            waterMeterReplaceLog.setOldDeviceNo(device.getDeviceNo());
+            waterMeterReplaceLog.setNewSimNo(waterMeterMaintenanceLog.getNewSimNo());
+            waterMeterReplaceLog.setOldSimNo(waterMeterMaintenanceLog.getOldSimNo());
+            waterMeterReplaceLog.setNewDeviceFlagNo(waterMeterMaintenanceLog.getNewDeviceFlagNo());
+            waterMeterReplaceLog.setOldDeviceFlagNo(waterMeterMaintenanceLog.getOldDeviceFlagNo());
+            waterMeterReplaceLog.setRemark(waterMeterMaintenanceLog.getRemark());
+            waterMeterReplaceLog.setReplaceUsername(loginUser.getName());
+            waterMeterReplaceLog.setReplaceUserPhone(loginUser.getMobilePhone());
+            waterMeterReplaceLog.setStatus(1);
+            waterMeterReplaceLog.setCreateBy(UserUtil.getCurrentUser().getUsername());
+            waterMeterReplaceLog.setDateCreate(LocalDateTime.now());
+            waterMeterReplaceLog.setUpdateBy(UserUtil.getCurrentUser().getUsername());
+            waterMeterReplaceLog.setDateUpdate(LocalDateTime.now());
+            waterMeterReplaceLogMapper.insertSelective(waterMeterReplaceLog);
+
+            //更新安装列表中的初始读数和旧表读数
+            InstallList installList = new InstallList();
+            installList.setDeviceId(waterMeterMaintenanceLog.getDeviceId());
+            installList.setNewMeterStart(waterMeterMaintenanceLog.getNewBeginWsv());
+            installList.setOldMeterEnd(waterMeterMaintenanceLog.getOldEndWsv());
+            installList.setDateUpdate(LocalDateTime.now());
+            installListMapper.updateByDeviceId2(installList);
 
+            if (waterMeterMaintenanceLog.getSolutionMethod() == 1) {
                 //完成工单任务
-                workOrderService.handle(waterMeterMaintenanceLog.getTaskId(), "维修", null);
+                workOrderService.handle(waterMeterMaintenanceLog.getTaskId(), "更换模块", null);
             } else {
-                WaterMeterReplaceLog waterMeterReplaceLog = new WaterMeterReplaceLog();
-                waterMeterReplaceLog.setMainLogId(waterMeterMaintenanceLog.getId());
-                waterMeterReplaceLog.setDeviceId(waterMeterMaintenanceLog.getDeviceId());
-                waterMeterReplaceLog.setNewDeviceTypeId(waterMeterMaintenanceLog.getDeviceTypeId());
-                waterMeterReplaceLog.setNewWaterNo(waterMeterMaintenanceLog.getNewWaterNo());
-                waterMeterReplaceLog.setOldWaterNo(waterMeterMaintenanceLog.getOldWaterNo());
-                waterMeterReplaceLog.setNewBeginWsv(waterMeterMaintenanceLog.getNewBeginWsv());
-                waterMeterReplaceLog.setOldEndWsv(waterMeterMaintenanceLog.getOldEndWsv());
-                waterMeterReplaceLog.setNewDeviceNo(waterMeterMaintenanceLog.getNewDeviceNo());
-                waterMeterReplaceLog.setOldDeviceNo(waterMeterMaintenanceLog.getOldDeviceNo());
-                waterMeterReplaceLog.setNewSimNo(waterMeterMaintenanceLog.getNewSimNo());
-                waterMeterReplaceLog.setOldSimNo(waterMeterMaintenanceLog.getOldSimNo());
-                waterMeterReplaceLog.setNewDeviceFlagNo(waterMeterMaintenanceLog.getNewDeviceFlagNo());
-                waterMeterReplaceLog.setOldDeviceFlagNo(waterMeterMaintenanceLog.getOldDeviceFlagNo());
-                waterMeterReplaceLog.setRemark(waterMeterMaintenanceLog.getRemark());
-                waterMeterReplaceLog.setStatus(1);
-                waterMeterReplaceLog.setCreateBy(UserUtil.getCurrentUser().getUsername());
-                waterMeterReplaceLog.setDateCreate(LocalDateTime.now());
-                waterMeterReplaceLog.setUpdateBy(UserUtil.getCurrentUser().getUsername());
-                waterMeterReplaceLog.setDateUpdate(LocalDateTime.now());
-                waterMeterReplaceLogMapper.insertSelective(waterMeterReplaceLog);
-
                 //完成工单任务
-                workOrderService.handle(waterMeterMaintenanceLog.getTaskId(), "换表", null);
-
-                //更新安装列表中的初始读数和旧表读数
-                InstallList installList = new InstallList();
-                installList.setDeviceId(waterMeterMaintenanceLog.getDeviceId());
-                installList.setNewMeterStart(waterMeterMaintenanceLog.getNewBeginWsv());
-                installList.setOldMeterEnd(waterMeterMaintenanceLog.getOldEndWsv());
-                installList.setDateUpdate(LocalDateTime.now());
-                installListMapper.updateByDeviceId2(installList);
-
+                workOrderService.handle(waterMeterMaintenanceLog.getTaskId(), "更换整表", null);
             }
             //4、更新设备信息
             Device newDevice = new Device();
@@ -190,6 +175,19 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
             if (waterMeterMaintenanceLog.getNewWaterNo() != null && !"".equals(waterMeterMaintenanceLog.getNewWaterNo())) {
                 newDevice.setWaterMeterNo(waterMeterMaintenanceLog.getNewWaterNo());
             }
+            if (waterMeterMaintenanceLog.getNewDeviceTypeId() != null && waterMeterMaintenanceLog.getNewDeviceTypeId()!=0) {
+                DeviceTypeDto deviceTypeDto = deviceTypeMapper.getById(waterMeterMaintenanceLog.getNewDeviceTypeId());
+                if(!device.getDeviceType().equals(waterMeterMaintenanceLog.getNewDeviceTypeId())){
+                    if (deviceTypeDto != null && deviceTypeDto.getIsRegister() == 1) {
+                        String udipId = udipUnitService.saveUdipUnit(waterMeterReplaceLog.getNewDeviceNo(),device.getCustomerId(),deviceTypeDto);
+                        newDevice.setUdipId(udipId);
+                        newDevice.setRegisterStatus(1);
+                    }
+                }
+
+                newDevice.setDeviceType(waterMeterMaintenanceLog.getNewDeviceTypeId());
+            }
+            newDevice.setDateUpdate(LocalDateTime.now());
             deviceMapper.updateByPrimaryKeySelective(newDevice);
         } else {
             throw new ServiceException(-900, "该工单已经处理");
@@ -205,27 +203,17 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
 
         WaterMeterMaintenanceLogDto waterMeterMaintenanceLogDto = waterMeterMaintenanceLogMapper.findByOrdeNo(ordeNo);
         if (waterMeterMaintenanceLogDto != null) {
-            if (waterMeterMaintenanceLogDto.getSolutionMethod() == 1) {
-                WaterMeterRepairLog waterMeterRepairLog = waterMeterRepairLogMapper.findByMainLogId(waterMeterMaintenanceLogDto.getId());
-                waterMeterMaintenanceLogDto.setNewWaterNo(waterMeterRepairLog.getNewWaterNo());
-                waterMeterMaintenanceLogDto.setOldWaterNo(waterMeterRepairLog.getOldWaterNo());
-                waterMeterMaintenanceLogDto.setNewBeginWsv(waterMeterRepairLog.getNewBeginWsv());
-                waterMeterMaintenanceLogDto.setOldEndWsv(waterMeterRepairLog.getOldEndWsv());
-                waterMeterMaintenanceLogDto.setNewDeviceNo(waterMeterRepairLog.getNewDeviceNo());
-                waterMeterMaintenanceLogDto.setOldDeviceNo(waterMeterRepairLog.getOldDeviceNo());
-            } else {
-                WaterMeterReplaceLog waterMeterReplaceLog = waterMeterReplaceLogMapper.findByMainLogId(waterMeterMaintenanceLogDto.getId());
-                waterMeterMaintenanceLogDto.setNewWaterNo(waterMeterReplaceLog.getNewWaterNo());
-                waterMeterMaintenanceLogDto.setOldWaterNo(waterMeterReplaceLog.getOldWaterNo());
-                waterMeterMaintenanceLogDto.setNewBeginWsv(waterMeterReplaceLog.getNewBeginWsv());
-                waterMeterMaintenanceLogDto.setOldEndWsv(waterMeterReplaceLog.getOldEndWsv());
-                waterMeterMaintenanceLogDto.setNewDeviceNo(waterMeterReplaceLog.getNewDeviceNo());
-                waterMeterMaintenanceLogDto.setOldDeviceNo(waterMeterReplaceLog.getOldDeviceNo());
-                waterMeterMaintenanceLogDto.setNewSimNo(waterMeterReplaceLog.getNewSimNo());
-                waterMeterMaintenanceLogDto.setOldSimNo(waterMeterReplaceLog.getOldSimNo());
-                waterMeterMaintenanceLogDto.setNewDeviceFlagNo(waterMeterReplaceLog.getNewDeviceFlagNo());
-                waterMeterMaintenanceLogDto.setOldDeviceFlagNo(waterMeterReplaceLog.getOldDeviceFlagNo());
-            }
+            WaterMeterReplaceLog waterMeterReplaceLog = waterMeterReplaceLogMapper.findByMainLogId(waterMeterMaintenanceLogDto.getId());
+            waterMeterMaintenanceLogDto.setNewWaterNo(waterMeterReplaceLog.getNewWaterNo());
+            waterMeterMaintenanceLogDto.setOldWaterNo(waterMeterReplaceLog.getOldWaterNo());
+            waterMeterMaintenanceLogDto.setNewBeginWsv(waterMeterReplaceLog.getNewBeginWsv());
+            waterMeterMaintenanceLogDto.setOldEndWsv(waterMeterReplaceLog.getOldEndWsv());
+            waterMeterMaintenanceLogDto.setNewDeviceNo(waterMeterReplaceLog.getNewDeviceNo());
+            waterMeterMaintenanceLogDto.setOldDeviceNo(waterMeterReplaceLog.getOldDeviceNo());
+            waterMeterMaintenanceLogDto.setNewSimNo(waterMeterReplaceLog.getNewSimNo());
+            waterMeterMaintenanceLogDto.setOldSimNo(waterMeterReplaceLog.getOldSimNo());
+            waterMeterMaintenanceLogDto.setNewDeviceFlagNo(waterMeterReplaceLog.getNewDeviceFlagNo());
+            waterMeterMaintenanceLogDto.setOldDeviceFlagNo(waterMeterReplaceLog.getOldDeviceFlagNo());
             //获取图片
             waterMeterMaintenanceLogDto.setImageUrls(waterMeterMaintenanceImagesMapper.findByMainLogId(waterMeterMaintenanceLogDto.getId()));
             return waterMeterMaintenanceLogDto;

+ 16 - 6
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/WaterMeterReplaceLogServiceImpl.java

@@ -9,7 +9,7 @@ import com.bz.smart_city.dao.DeviceMapper;
 import com.bz.smart_city.dao.DeviceTypeMapper;
 import com.bz.smart_city.dto.*;
 import com.bz.smart_city.entity.Device;
-import com.bz.smart_city.entity.WMeterType;
+import com.bz.smart_city.service.BuildingService;
 import com.bz.smart_city.service.udip.UdipUnitService;
 import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
@@ -18,7 +18,6 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
 import com.bz.smart_city.entity.WaterMeterReplaceLog;
@@ -39,6 +38,8 @@ public class WaterMeterReplaceLogServiceImpl implements WaterMeterReplaceLogServ
     private UdipUnitService udipUnitService;
     @Resource
     private DeviceMapper deviceMapper;
+    @Autowired
+    private BuildingService buildingService;
 
 
     @Override
@@ -52,17 +53,18 @@ public class WaterMeterReplaceLogServiceImpl implements WaterMeterReplaceLogServ
     }
 
     @Override
-    public Pagination<WaterMeterReplaceLogDto> getList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate, int pageNum, int pageSize) {
+    public Pagination<WaterMeterReplaceLogDto> getList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, Integer provinceId, Integer cityId, Integer regionId, Integer communityId, Integer buildingId, LocalDateTime startDate, LocalDateTime endDate, int pageNum, int pageSize) {
         LoginUser loginUser = UserUtil.getCurrentUser();
         PageHelper.startPage(pageNum,pageSize);
-        List<WaterMeterReplaceLogDto> list = waterMeterReplaceLogMapper.findList(deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,UserUtil.getCurrentSiteProgramItems(loginUser));
+        List<WaterMeterReplaceLogDto> list = waterMeterReplaceLogMapper.findList(loginUser.getSiteId(),deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,provinceId,cityId,regionId,communityId,buildingId,
+                startDate,endDate,UserUtil.getCurrentSiteProgramItems(loginUser));
         return new Pagination<>(list);
     }
 
     @Override
-    public void getExcel(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate, HttpServletResponse httpServletResponse) {
+    public void getExcel(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, Integer provinceId, Integer cityId, Integer regionId, Integer communityId, Integer buildingId, LocalDateTime startDate, LocalDateTime endDate, HttpServletResponse httpServletResponse) {
         LoginUser loginUser = UserUtil.getCurrentUser();
-        List<WaterMeterReplaceLogDto> list = waterMeterReplaceLogMapper.findList(deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,UserUtil.getCurrentSiteProgramItems(loginUser));
+        List<WaterMeterReplaceLogDto> list = waterMeterReplaceLogMapper.findList(loginUser.getSiteId(), deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted, provinceId, cityId, regionId, communityId, buildingId, startDate,endDate,UserUtil.getCurrentSiteProgramItems(loginUser));
 
         String title = "换表记录";
         String[] rowsName = new String[]{"序号", "旧设备编号", "新设备编号", "旧水表电子号", "新水表电子号", "旧设备型号", "新设备型号", "水表档案号", "旧表止度", "新表起度", "更换方式", "客户", "建筑", "安装地址", "验收状态", "更换时间", "更换人"};
@@ -100,6 +102,13 @@ public class WaterMeterReplaceLogServiceImpl implements WaterMeterReplaceLogServ
 
     }
 
+    @Override
+    public List<BuildingSelectDto> getAreaList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        List<BuildingSelectInfoDto> buildingList = waterMeterReplaceLogMapper.getAreaList(loginUser.getSiteId(),deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,UserUtil.getCurrentSiteProgramItems(loginUser));
+        return buildingService.areaList(buildingList);
+    }
+
     protected String getReplaceMethodName(Integer replaceMethod){
         String replaceMethodName = "更换整表";
         if(replaceMethod == 1){
@@ -126,6 +135,7 @@ public class WaterMeterReplaceLogServiceImpl implements WaterMeterReplaceLogServ
         //1、换表记录
         WaterMeterReplaceLog waterMeterReplaceLog = new WaterMeterReplaceLog();
         //waterMeterReplaceLog.setMainLogId(waterMeterMaintenanceLog.getId());
+        waterMeterReplaceLog.setSiteId(loginUser.getSiteId());
         waterMeterReplaceLog.setDeviceId(waterMeterReplaceInputDto.getDeviceId());
         waterMeterReplaceLog.setReplaceMethod(waterMeterReplaceInputDto.getReplaceMethod());
         waterMeterReplaceLog.setNewDeviceTypeId(waterMeterReplaceInputDto.getNewDeviceTypeId());

BIN
smart-city-platform/src/main/resources/excel/batchOpenAccountTemplate.xlsx


+ 25 - 0
smart-city-platform/src/main/resources/mapper/DeviceMapper.xml

@@ -1041,5 +1041,30 @@
        group by account.accountnumber
     </select>
 
+    <select id="queryDeviceInfoList" resultType="com.bz.smart_city.dto.DeviceDto">
+        select sd.*,
+        sdt.equipment_type,sdt.model,sdm.name manufacturer_name,sb.name as building_name,sc.channel_name as system_name,
+        sb.longitude,sb.latitude,
+        sb.province,sb.city,sb.region,sb.community,scom.name as community_name,
+        sdt.is_valve
+        from sc_device sd
+        left join sc_device_type sdt on (sdt.id = sd.device_type and sdt.status = 1)
+        left join sc_device_manufacturer sdm on (sdm.id = sd.manufacturer_id and sdm.status = 1)
+        left join sc_building sb on (sb.id = sd.building_id and sb.status = 1)
+        left join sc_channel sc on (sc.id = sd.sys_id and sc.status = 1)
+        left join sc_community scom on ( scom.id = sb.community and scom.status = 1)
+        left join sc_customer scus on ( scus.id = sd.customer_id)
+        <if test="programItems != null and programItems.size() != 0">left join sc_device_dimension sdd on (sdd.device_id = sd.id and sdd.status = 1)</if>
+        where sd.status = 1
+        <if test="siteId != null"> AND sd.site_id = #{siteId}</if>
+        <if test="deviceNo != null and deviceNo != ''"> AND sd.device_no = #{deviceNo}</if>
+        <if test="waterMeterNo != null and waterMeterNo != ''"> AND sd.water_meter_no = #{waterMeterNo}</if>
+        <if test="programItems != null and programItems.size() != 0"> and
+            <foreach collection="programItems" item="item" open="(" separator=" or " close=")">
+                sdd.${item.dimensionCode} = #{item.dimensionValue}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>
 

+ 70 - 3
smart-city-platform/src/main/resources/mapper/WaterMeterReplaceLogMapper.xml

@@ -6,6 +6,7 @@
         <!--@mbg.generated-->
         <!--@Table sc_water_meter_replace_log-->
         <id column="id" property="id" />
+        <result column="site_id" property="siteId" />
         <result column="main_log_id" property="mainLogId" />
         <result column="device_id" property="deviceId" />
         <result column="replace_method" property="replaceMethod" />
@@ -32,7 +33,7 @@
     </resultMap>
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
-        id, main_log_id, device_id, replace_method, new_device_type_id, old_device_type_id,
+        id, site_id, main_log_id, device_id, replace_method, new_device_type_id, old_device_type_id,
         new_water_no, old_water_no, new_begin_wsv, old_end_wsv, new_device_no, old_device_no,
         new_sim_no, old_sim_no, new_device_flag_no, old_device_flag_no, remark, `status`,
         replace_username, replace_user_phone, date_create, date_update, create_by, update_by
@@ -41,6 +42,9 @@
         <!--@mbg.generated-->
         insert into sc_water_meter_replace_log
         <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="siteId != null">
+                site_id,
+            </if>
             <if test="mainLogId != null">
                 main_log_id,
             </if>
@@ -112,6 +116,9 @@
             </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="siteId != null">
+                #{siteId},
+            </if>
             <if test="mainLogId != null">
                 #{mainLogId},
             </if>
@@ -187,6 +194,9 @@
         <!--@mbg.generated-->
         update sc_water_meter_replace_log
         <set>
+            <if test="siteId != null">
+                site_id = #{siteId},
+            </if>
             <if test="mainLogId != null">
                 main_log_id = #{mainLogId},
             </if>
@@ -262,14 +272,14 @@
     <insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
         <!--@mbg.generated-->
         insert into sc_water_meter_replace_log
-        (main_log_id, device_id, replace_method, new_device_type_id, old_device_type_id,
+        (site_id, main_log_id, device_id, replace_method, new_device_type_id, old_device_type_id,
         new_water_no, old_water_no, new_begin_wsv, old_end_wsv, new_device_no, old_device_no,
         new_sim_no, old_sim_no, new_device_flag_no, old_device_flag_no, remark, `status`,
         replace_username, replace_user_phone, date_create, date_update, create_by, update_by
         )
         values
         <foreach collection="list" item="item" separator=",">
-            (#{item.mainLogId}, #{item.deviceId}, #{item.replaceMethod}, #{item.newDeviceTypeId},
+            (#{item.siteId}, #{item.mainLogId}, #{item.deviceId}, #{item.replaceMethod}, #{item.newDeviceTypeId},
             #{item.oldDeviceTypeId}, #{item.newWaterNo}, #{item.oldWaterNo}, #{item.newBeginWsv},
             #{item.oldEndWsv}, #{item.newDeviceNo}, #{item.oldDeviceNo}, #{item.newSimNo},
             #{item.oldSimNo}, #{item.newDeviceFlagNo}, #{item.oldDeviceFlagNo}, #{item.remark},
@@ -307,6 +317,7 @@
         left join sc_device_manufacturer sdm2 on(sdm2.id = sdt2.manufacturer_id)
         <if test="programItems != null and programItems.size() != 0">left join sc_device_dimension sdd on (sdd.device_id = d.id and sdd.status = 1)</if>
         where rl.status = 1 and d.status = 1
+        <if test="siteId != null"> and d.site_id = #{siteId}</if>
         <if test="deviceId != null"> and rl.device_id = #{deviceId}</if>
         <if test="deviceNo != null and deviceNo != ''"> and (
             rl.new_device_no LIKE concat('%',#{deviceNo},'%') or rl.old_device_no LIKE concat('%',#{deviceNo},'%') or
@@ -318,6 +329,11 @@
         <if test="replaceUsername != null and replaceUsername != ''"> and rl.replace_username LIKE concat('%',#{replaceUsername},'%')</if>
         <if test="isAccepted != null and isAccepted == 1"> and sil.is_accepted = #{isAccepted}</if>
         <if test="isAccepted != null and isAccepted == 0"> and (sil.is_accepted = #{isAccepted} or sil.is_accepted is null)</if>
+        <if test="provinceId != null"> and sb.province = #{provinceId}</if>
+        <if test="cityId != null"> and sb.city = #{cityId}</if>
+        <if test="regionId != null"> and sb.region = #{regionId}</if>
+        <if test="communityId != null"> and sb.community = #{communityId}</if>
+        <if test="buildingId != null"> and d.building_id = #{buildingId}</if>
         <if test="startDate != null"> and rl.date_create <![CDATA[ >= ]]> #{startDate}</if>
         <if test="endDate != null"> and rl.date_create <![CDATA[ <= ]]> #{endDate}</if>
         <if test="programItems != null and programItems.size() != 0"> and
@@ -333,8 +349,11 @@
         count(1)
         from sc_water_meter_replace_log rl
         left join sc_device d on(d.id = rl.device_id)
+        left join sc_building sb on(sb.id = d.building_id)
+        <if test="isAccepted != null">left join sc_install_list sil on(sil.device_id = rl.device_id)</if>
         <if test="programItems != null and programItems.size() != 0">left join sc_device_dimension sdd on (sdd.device_id = d.id and sdd.status = 1)</if>
         where rl.status = 1 and d.status = 1
+        <if test="siteId != null"> and d.site_id = #{siteId}</if>
         <if test="deviceId != null"> and rl.device_id = #{deviceId}</if>
         <if test="deviceNo != null and deviceNo != ''"> and (
             rl.new_device_no LIKE concat('%',#{deviceNo},'%') or rl.old_device_no LIKE concat('%',#{deviceNo},'%') or
@@ -346,6 +365,11 @@
         <if test="replaceUsername != null and replaceUsername != ''"> and rl.replace_username LIKE concat('%',#{replaceUsername},'%')</if>
         <if test="isAccepted != null and isAccepted == 1"> and sil.is_accepted = #{isAccepted}</if>
         <if test="isAccepted != null and isAccepted == 0"> and (sil.is_accepted = #{isAccepted} or sil.is_accepted is null)</if>
+        <if test="provinceId != null"> and sb.province = #{provinceId}</if>
+        <if test="cityId != null"> and sb.city = #{cityId}</if>
+        <if test="regionId != null"> and sb.region = #{regionId}</if>
+        <if test="communityId != null"> and sb.community = #{communityId}</if>
+        <if test="buildingId != null"> and d.building_id = #{buildingId}</if>
         <if test="startDate != null"> and rl.date_create <![CDATA[ >= ]]> #{startDate}</if>
         <if test="endDate != null"> and rl.date_create <![CDATA[ <= ]]> #{endDate}</if>
         <if test="programItems != null and programItems.size() != 0"> and
@@ -354,4 +378,47 @@
             </foreach>
         </if>
     </select>
+
+    <select id="getAreaList" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
+        select
+        b.id,
+        b.name,
+        b.province,
+        b.city,
+        b.region,
+        b.community,
+        b.longitude,
+        b.latitude,
+        t1.device_count
+        from sc_building b
+        right join (
+            select sd.building_id,count(1) as device_count
+            from sc_water_meter_replace_log rl
+            left join sc_device sd on(sd.id = rl.device_id)
+            <if test="isAccepted != null">left join sc_install_list sil on(sil.device_id = rl.device_id)</if>
+            <if test="programItems != null and programItems.size() != 0">left join sc_device_dimension sdd on (sdd.device_id = d.id and sdd.status = 1)</if>
+            where rl.status = 1 and sd.status = 1
+            <if test="siteId != null"> and sd.site_id = #{siteId}</if>
+            <if test="deviceId != null"> and rl.device_id = #{deviceId}</if>
+            <if test="deviceNo != null and deviceNo != ''"> and (
+                rl.new_device_no LIKE concat('%',#{deviceNo},'%') or rl.old_device_no LIKE concat('%',#{deviceNo},'%') or
+                rl.new_water_no LIKE concat('%',#{deviceNo},'%') or rl.old_water_no LIKE concat('%',#{deviceNo},'%') or
+                sd.water_meter_file_no LIKE concat('%',#{deviceNo},'%')
+                )</if>
+            <if test="replaceMethod != null"> and rl.replace_method = #{replaceMethod}</if>
+            <if test="customerId != null"> and sd.customer_id = #{customerId}</if>
+            <if test="replaceUsername != null and replaceUsername != ''"> and rl.replace_username LIKE concat('%',#{replaceUsername},'%')</if>
+            <if test="isAccepted != null and isAccepted == 1"> and sil.is_accepted = #{isAccepted}</if>
+            <if test="isAccepted != null and isAccepted == 0"> and (sil.is_accepted = #{isAccepted} or sil.is_accepted is null)</if>
+            <if test="startDate != null"> and rl.date_create <![CDATA[ >= ]]> #{startDate}</if>
+            <if test="endDate != null"> and rl.date_create <![CDATA[ <= ]]> #{endDate}</if>
+            <if test="programItems != null and programItems.size() != 0"> and
+                <foreach collection="programItems" item="item" open="(" separator=" or " close=")">
+                    sdd.${item.dimensionCode} = #{item.dimensionValue}
+                </foreach>
+            </if>
+            GROUP BY sd.building_id
+        ) t1 on (t1.building_id = b.id)
+        where b.status = 1
+    </select>
 </mapper>