Bladeren bron

换表管理

lin 4 jaren geleden
bovenliggende
commit
6d6e1695e3

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

@@ -0,0 +1,79 @@
+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.WaterMeterMaintenanceLogDto;
+import com.bz.smart_city.dto.WaterMeterReplaceInputDto;
+import com.bz.smart_city.dto.WaterMeterReplaceLogDto;
+import com.bz.smart_city.service.WaterMeterReplaceLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+
+@Controller
+@ResponseBody
+@RequestMapping("system/replace")
+@Api(tags = "换表管理")
+public class ReplaceManageController {
+
+
+    @Autowired
+    private WaterMeterReplaceLogService waterMeterReplaceLogService;
+
+
+    @GetMapping("getList")
+    @ApiOperation(value = "查询换表记录列表")
+    public AjaxMessage<Pagination<WaterMeterReplaceLogDto>> getList(
+            @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,
+            @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);
+        return new AjaxMessage<>(ResultStatus.OK, pageInfo);
+    }
+
+    @GetMapping("getExcel")
+    @ApiOperation(value = "换表记录导出excel")
+    public void getExcel(
+            @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,
+            HttpServletResponse httpServletResponse
+    ){
+        waterMeterReplaceLogService.getExcel(
+                deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,
+                httpServletResponse);
+    }
+
+
+    @ResponseBody
+    @PostMapping("/submitWaterMeterReplace")
+    @ApiOperation(value = "换表")
+    public AjaxMessage submitWaterMeterReplace(
+            @ApiParam(value = "表单处理结果", required = true) @RequestBody(required = true) WaterMeterReplaceInputDto waterMeterReplaceInputDto) {
+        waterMeterReplaceLogService.submitWaterMeterReplace(waterMeterReplaceInputDto);
+        return new AjaxMessage<>(ResultStatus.OK);
+    }
+}

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dao/WaterMeterMaintenanceLogMapper.java

@@ -4,7 +4,9 @@ import com.bz.smart_city.dto.WaterMeterMaintenanceLogDto;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
+
 import com.bz.smart_city.entity.WaterMeterMaintenanceLog;
 
 @Mapper
@@ -18,4 +20,5 @@ public interface WaterMeterMaintenanceLogMapper {
     int updateByPrimaryKeySelective(@Param("waterMeterMaintenanceLog") WaterMeterMaintenanceLog waterMeterMaintenanceLog);
 
     WaterMeterMaintenanceLogDto findByOrdeNo(String ordeNo);
+
 }

+ 20 - 5
smart-city-platform/src/main/java/com/bz/smart_city/dao/WaterMeterReplaceLogMapper.java

@@ -1,20 +1,35 @@
 package com.bz.smart_city.dao;
 
+import com.bz.smart_city.dto.WaterMeterMaintenanceLogDto;
+import com.bz.smart_city.dto.WaterMeterReplaceLogDto;
+import com.bz.smart_city.entity.ProgramItem;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
+
 import com.bz.smart_city.entity.WaterMeterReplaceLog;
 
 @Mapper
 public interface WaterMeterReplaceLogMapper {
-    int insert(@Param("waterMeterReplaceLog") WaterMeterReplaceLog waterMeterReplaceLog);
 
-    int insertSelective(@Param("waterMeterReplaceLog") WaterMeterReplaceLog waterMeterReplaceLog);
+    int insertSelective(WaterMeterReplaceLog record);
+
+    int updateByPrimaryKeySelective(WaterMeterReplaceLog record);
 
-    int insertList(@Param("waterMeterReplaceLogs") List<WaterMeterReplaceLog> waterMeterReplaceLogs);
+    int batchInsert(@Param("list") List<WaterMeterReplaceLog> list);
 
-    int updateByPrimaryKeySelective(@Param("waterMeterReplaceLog") WaterMeterReplaceLog waterMeterReplaceLog);
+    WaterMeterReplaceLog findByMainLogId(@Param("mainLogId") Integer mainLogId);
 
-    WaterMeterReplaceLog findByMainLogId(@Param("mainLogId")Integer mainLogId);
+    List<WaterMeterReplaceLogDto> findList(
+            @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("startDate") LocalDateTime startDate,
+            @Param("endDate") LocalDateTime endDate,
+            @Param("programItems") List<ProgramItem> programItems);
 }

+ 30 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/WaterMeterReplaceInputDto.java

@@ -0,0 +1,30 @@
+package com.bz.smart_city.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WaterMeterReplaceInputDto {
+    @ApiModelProperty(value = "设备id", position = 1)
+    private Long deviceId;
+
+    @ApiModelProperty(value = "新表设备编号", position = 1)
+    private String newDeviceNo;
+
+    @ApiModelProperty(value = "新表电子号", position = 2)
+    private String newElectronicNo;
+
+    @ApiModelProperty(value = "新表设备类型id", position = 3)
+    private Integer newDeviceTypeId;
+
+    @ApiModelProperty(value = "新表起度", position = 4)
+    private String newBeginWsv;
+
+    @ApiModelProperty(value = "旧表止度", position = 5)
+    private String oldEndWsv;
+
+    @ApiModelProperty(value = "更换方案,1 更换模块,2:更换整表", position = 6)
+    private Integer replaceMethod;
+
+
+}

+ 42 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/WaterMeterReplaceLogDto.java

@@ -0,0 +1,42 @@
+package com.bz.smart_city.dto;
+
+import com.bz.smart_city.entity.WaterMeterReplaceLog;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WaterMeterReplaceLogDto extends WaterMeterReplaceLog {
+    @ApiModelProperty(value = "水表档案号", position = 101)
+    private String waterMeterFileNo;
+
+    @ApiModelProperty(value = "客户名称", position = 102)
+    private String customerName;
+
+    @ApiModelProperty(value = "建筑名称", position = 103)
+    private String buildingName;
+
+    @ApiModelProperty(value = "安装地址", position = 104)
+    private String locDesc;
+
+    @ApiModelProperty(value = "新设备系列", position = 105)
+    private String newEquipmentType;
+
+    @ApiModelProperty(value = "新设备型号", position = 106)
+    private String newModel;
+
+    @ApiModelProperty(value = "新厂商名称", position = 107)
+    private String newManufacturerName;
+
+    @ApiModelProperty(value = "旧设备系列", position = 108)
+    private String oldEquipmentType;
+
+    @ApiModelProperty(value = "旧设备型号", position = 109)
+    private String oldModel;
+
+    @ApiModelProperty(value = "旧厂商名称", position = 110)
+    private String oldManufacturerName;
+
+    @ApiModelProperty(value = "是否验收,0否1是", position = 111)
+    private Integer isAccepted;
+
+}

+ 8 - 2
smart-city-platform/src/main/java/com/bz/smart_city/entity/DeviceType.java

@@ -52,6 +52,12 @@ public class DeviceType implements Serializable {
     private Double period ; 
     
     @ApiModelProperty(value = "监控作业表达式,CronExpression", position = 53, hidden = true)
-    private String expression ; 
-    
+    private String expression ;
+
+    @ApiModelProperty(value = "有无阀门 0:无 1:有", position = 53, hidden = true)
+    private Integer isValve ;
+
+    @ApiModelProperty(value = "是否需要注册 0:否:是", position = 53, hidden = true)
+    private Integer isRegister ;
+
 }

+ 1 - 1
smart-city-platform/src/main/java/com/bz/smart_city/entity/WaterMeterMaintenanceLog.java

@@ -57,7 +57,7 @@ public class WaterMeterMaintenanceLog {
     @ApiModelProperty(value = "问题描述", position = 12)
     private String problemDesc;
 
-    @ApiModelProperty(value = "解决方案,1 维修,2换表", position = 13)
+    @ApiModelProperty(value = "解决方案,1 更换模块,2:更换整表", position = 13)
     private Integer solutionMethod;
 
     @ApiModelProperty(value = "解决方案描述", position = 14)

+ 23 - 8
smart-city-platform/src/main/java/com/bz/smart_city/entity/WaterMeterReplaceLog.java

@@ -1,5 +1,6 @@
 package com.bz.smart_city.entity;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -20,13 +21,19 @@ public class WaterMeterReplaceLog {
     @ApiModelProperty(value="参考sc_device表id")
     private Long deviceId;
 
-    @ApiModelProperty(value="设备类型,参考sc_device_type表id")
-    private Integer deviceTypeId;
+    @ApiModelProperty(value="更换方案,1 更换模块,2:更换整表")
+    private Integer replaceMethod;
 
-    @ApiModelProperty(value="新表表号")
+    @ApiModelProperty(value="新设备类型,参考sc_device_type表id")
+    private Integer newDeviceTypeId;
+
+    @ApiModelProperty(value="旧设备类型,参考sc_device_type表id")
+    private Integer oldDeviceTypeId;
+
+    @ApiModelProperty(value="新表表号(电子号)")
     private String newWaterNo;
 
-    @ApiModelProperty(value="旧表表号")
+    @ApiModelProperty(value="旧表表号(电子号)")
     private String oldWaterNo;
 
     @ApiModelProperty(value="新表起度")
@@ -56,18 +63,26 @@ public class WaterMeterReplaceLog {
     @ApiModelProperty(value="备注")
     private String remark;
 
-    @ApiModelProperty(value="状态")
+    @ApiModelProperty(value="更换人")
+    private String replaceUsername;
+
+    @ApiModelProperty(value="更换人手机号码")
+    private String replaceUserPhone;
+
+    @ApiModelProperty(value="状态",hidden = true)
     private Integer status;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value="创建时间")
     private LocalDateTime dateCreate;
 
-    @ApiModelProperty(value="更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value="更新时间",hidden = true)
     private LocalDateTime dateUpdate;
 
-    @ApiModelProperty(value="创建人")
+    @ApiModelProperty(value="创建人",hidden = true)
     private String createBy;
 
-    @ApiModelProperty(value="更新人")
+    @ApiModelProperty(value="更新人",hidden = true)
     private String updateBy;
 }

+ 1 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/WaterMeterMaintenanceLogService.java

@@ -17,4 +17,5 @@ public interface WaterMeterMaintenanceLogService{
     void submitWaterMeterWorkOrder(WaterMeterMaintenanceLogDto waterMeterMaintenanceLog);
 
     WaterMeterMaintenanceLogDto getWaterMeterWorkOrderInfo(String ordeNo);
+
 }

+ 14 - 4
smart-city-platform/src/main/java/com/bz/smart_city/service/WaterMeterReplaceLogService.java

@@ -1,14 +1,24 @@
 package com.bz.smart_city.service;
 
-import java.util.List;
+import java.time.LocalDateTime;
+
+import com.bz.smart_city.commom.model.Pagination;
+import com.bz.smart_city.dto.WaterMeterReplaceInputDto;
+import com.bz.smart_city.dto.WaterMeterReplaceLogDto;
 import com.bz.smart_city.entity.WaterMeterReplaceLog;
+
+import javax.servlet.http.HttpServletResponse;
+
 public interface WaterMeterReplaceLogService{
 
-    int insert(WaterMeterReplaceLog waterMeterReplaceLog);
 
     int insertSelective(WaterMeterReplaceLog waterMeterReplaceLog);
 
-    int insertList(List<WaterMeterReplaceLog> waterMeterReplaceLogs);
-
     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);
+
+    void getExcel(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, LocalDateTime startDate, LocalDateTime endDate, HttpServletResponse httpServletResponse);
+
+    void submitWaterMeterReplace(WaterMeterReplaceInputDto waterMeterReplaceDto);
 }

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

@@ -10,13 +10,13 @@ import com.bz.smart_city.dto.WaterMeterMaintenanceLogDto;
 import com.bz.smart_city.entity.*;
 import com.bz.smart_city.entity.assistant.InstallList;
 import com.bz.smart_city.service.WorkOrderService;
+import com.bz.smart_city.service.udip.UdipUnitService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import javax.sql.rowset.serial.SerialException;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -47,6 +47,10 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
     private WorkOrderService workOrderService;
     @Resource
     private InstallListMapper installListMapper;
+    @Autowired
+    private DeviceTypeMapper deviceTypeMapper;
+    @Autowired
+    private UdipUnitService udipUnitService;
 
     @Override
     public int insert(WaterMeterMaintenanceLog waterMeterMaintenanceLog) {
@@ -143,7 +147,7 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
                 WaterMeterReplaceLog waterMeterReplaceLog = new WaterMeterReplaceLog();
                 waterMeterReplaceLog.setMainLogId(waterMeterMaintenanceLog.getId());
                 waterMeterReplaceLog.setDeviceId(waterMeterMaintenanceLog.getDeviceId());
-                waterMeterReplaceLog.setDeviceTypeId(waterMeterMaintenanceLog.getDeviceTypeId());
+                waterMeterReplaceLog.setNewDeviceTypeId(waterMeterMaintenanceLog.getDeviceTypeId());
                 waterMeterReplaceLog.setNewWaterNo(waterMeterMaintenanceLog.getNewWaterNo());
                 waterMeterReplaceLog.setOldWaterNo(waterMeterMaintenanceLog.getOldWaterNo());
                 waterMeterReplaceLog.setNewBeginWsv(waterMeterMaintenanceLog.getNewBeginWsv());
@@ -160,7 +164,7 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
                 waterMeterReplaceLog.setDateCreate(LocalDateTime.now());
                 waterMeterReplaceLog.setUpdateBy(UserUtil.getCurrentUser().getUsername());
                 waterMeterReplaceLog.setDateUpdate(LocalDateTime.now());
-                waterMeterReplaceLogMapper.insert(waterMeterReplaceLog);
+                waterMeterReplaceLogMapper.insertSelective(waterMeterReplaceLog);
 
                 //完成工单任务
                 workOrderService.handle(waterMeterMaintenanceLog.getTaskId(), "换表", null);
@@ -230,4 +234,5 @@ public class WaterMeterMaintenanceLogServiceImpl implements WaterMeterMaintenanc
         }
 
     }
+
 }

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

@@ -1,22 +1,45 @@
 package com.bz.smart_city.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.bz.smart_city.commom.exception.ServiceException;
+import com.bz.smart_city.commom.model.Pagination;
+import com.bz.smart_city.commom.util.ExcelUtil;
+import com.bz.smart_city.commom.util.UserUtil;
+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.udip.UdipUnitService;
+import com.github.pagehelper.PageHelper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 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;
 import com.bz.smart_city.dao.WaterMeterReplaceLogMapper;
 import com.bz.smart_city.service.WaterMeterReplaceLogService;
 
+import static com.google.common.collect.Lists.newArrayList;
+
+@Slf4j
 @Service
 public class WaterMeterReplaceLogServiceImpl implements WaterMeterReplaceLogService{
 
     @Resource
     private WaterMeterReplaceLogMapper waterMeterReplaceLogMapper;
+    @Autowired
+    private DeviceTypeMapper deviceTypeMapper;
+    @Autowired
+    private UdipUnitService udipUnitService;
+    @Resource
+    private DeviceMapper deviceMapper;
 
-    @Override
-    public int insert(WaterMeterReplaceLog waterMeterReplaceLog){
-        return waterMeterReplaceLogMapper.insert(waterMeterReplaceLog);
-    }
 
     @Override
     public int insertSelective(WaterMeterReplaceLog waterMeterReplaceLog){
@@ -24,12 +47,134 @@ public class WaterMeterReplaceLogServiceImpl implements WaterMeterReplaceLogServ
     }
 
     @Override
-    public int insertList(List<WaterMeterReplaceLog> waterMeterReplaceLogs){
-        return waterMeterReplaceLogMapper.insertList(waterMeterReplaceLogs);
+    public int updateByPrimaryKeySelective(WaterMeterReplaceLog waterMeterReplaceLog){
+        return waterMeterReplaceLogMapper.updateByPrimaryKeySelective(waterMeterReplaceLog);
     }
 
     @Override
-    public int updateByPrimaryKeySelective(WaterMeterReplaceLog waterMeterReplaceLog){
-        return waterMeterReplaceLogMapper.updateByPrimaryKeySelective(waterMeterReplaceLog);
+    public Pagination<WaterMeterReplaceLogDto> getList(Long deviceId, String deviceNo, Integer replaceMethod, Integer customerId, String replaceUsername, Integer isAccepted, 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));
+        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) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        List<WaterMeterReplaceLogDto> list = waterMeterReplaceLogMapper.findList(deviceId,deviceNo,replaceMethod,customerId,replaceUsername,isAccepted,startDate,endDate,UserUtil.getCurrentSiteProgramItems(loginUser));
+
+        String title = "换表记录";
+        String[] rowsName = new String[]{"序号", "旧设备编号", "新设备编号", "旧水表电子号", "新水表电子号", "旧设备型号", "新设备型号", "水表档案号", "旧表止度", "新表起度", "更换方式", "客户", "建筑", "安装地址", "验收状态", "更换时间", "更换人"};
+        List<Object[]> dataList = newArrayList();
+        Object[] objs = null;
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        for (int i = 0; i < list.size(); i++) {
+            WaterMeterReplaceLogDto waterMeterReplaceLogDto = list.get(i);
+            objs = new Object[rowsName.length];
+            objs[0] = i;
+            objs[1] = waterMeterReplaceLogDto.getOldDeviceNo();
+            objs[2] = waterMeterReplaceLogDto.getNewDeviceNo();
+            objs[3] = waterMeterReplaceLogDto.getOldWaterNo();
+            objs[4] = waterMeterReplaceLogDto.getNewWaterNo();
+            objs[5] = waterMeterReplaceLogDto.getOldEquipmentType()+"/"+waterMeterReplaceLogDto.getOldManufacturerName()+"/"+waterMeterReplaceLogDto.getOldModel();
+            objs[6] = waterMeterReplaceLogDto.getNewEquipmentType()+"/"+waterMeterReplaceLogDto.getNewManufacturerName()+"/"+waterMeterReplaceLogDto.getNewModel();;
+            objs[7] = waterMeterReplaceLogDto.getWaterMeterFileNo();
+            objs[8] = waterMeterReplaceLogDto.getOldEndWsv();
+            objs[9] = waterMeterReplaceLogDto.getNewBeginWsv();
+            objs[10] = getReplaceMethodName(waterMeterReplaceLogDto.getReplaceMethod());
+            objs[11] = waterMeterReplaceLogDto.getCustomerName();
+            objs[12] = waterMeterReplaceLogDto.getBuildingName();
+            objs[13] = waterMeterReplaceLogDto.getLocDesc();
+            objs[14] = getIsAcceptedName(waterMeterReplaceLogDto.getIsAccepted());
+            objs[15] = waterMeterReplaceLogDto.getDateCreate().format(df);
+            objs[16] = waterMeterReplaceLogDto.getReplaceUsername()+"/"+waterMeterReplaceLogDto.getReplaceUserPhone();
+            dataList.add(objs);
+        }
+        ExcelUtil excelUtil = new ExcelUtil(title, rowsName, dataList);
+        try {
+            excelUtil.export(httpServletResponse);
+        } catch (Exception e) {
+            throw new ServiceException(-900, "导出异常");
+            }
+
+    }
+
+    protected String getReplaceMethodName(Integer replaceMethod){
+        String replaceMethodName = "更换整表";
+        if(replaceMethod == 1){
+            replaceMethodName = "更换模块";
+        }
+        return replaceMethodName;
+    }
+    protected String getIsAcceptedName(Integer isAccepted){
+        String isAcceptedName = "未验收";
+        if(isAccepted != null && isAccepted == 1){
+            isAcceptedName = "已验收";
+        }
+        return isAcceptedName;
+    }
+
+
+    @Override
+    public void submitWaterMeterReplace(WaterMeterReplaceInputDto waterMeterReplaceInputDto) {
+        log.info("begin submitWaterMeterReplace waterMeterReplaceInputDto:{}", JSON.toJSON(waterMeterReplaceInputDto));
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        Device device = deviceMapper.findByDeviceId(waterMeterReplaceInputDto.getDeviceId());
+
+
+        //1、换表记录
+        WaterMeterReplaceLog waterMeterReplaceLog = new WaterMeterReplaceLog();
+        //waterMeterReplaceLog.setMainLogId(waterMeterMaintenanceLog.getId());
+        waterMeterReplaceLog.setDeviceId(waterMeterReplaceInputDto.getDeviceId());
+        waterMeterReplaceLog.setReplaceMethod(waterMeterReplaceInputDto.getReplaceMethod());
+        waterMeterReplaceLog.setNewDeviceTypeId(waterMeterReplaceInputDto.getNewDeviceTypeId());
+        waterMeterReplaceLog.setOldDeviceTypeId(device.getDeviceType());
+        waterMeterReplaceLog.setNewWaterNo(waterMeterReplaceInputDto.getNewElectronicNo());
+        waterMeterReplaceLog.setOldWaterNo(device.getWaterMeterNo());
+        waterMeterReplaceLog.setNewBeginWsv(waterMeterReplaceInputDto.getNewBeginWsv());
+        waterMeterReplaceLog.setOldEndWsv(waterMeterReplaceInputDto.getOldEndWsv());
+        waterMeterReplaceLog.setNewDeviceNo(waterMeterReplaceInputDto.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);
+
+        //2、更改设备信息
+        Device newDevice = new Device();
+        newDevice.setId(device.getId());
+        if (waterMeterReplaceInputDto.getNewDeviceNo() != null && !"".equals(waterMeterReplaceInputDto.getNewDeviceNo())) {
+            newDevice.setDeviceNo(waterMeterReplaceInputDto.getNewDeviceNo());
+        }
+
+        if (waterMeterReplaceInputDto.getNewElectronicNo() != null && !"".equals(waterMeterReplaceInputDto.getNewElectronicNo())) {
+            newDevice.setWaterMeterNo(waterMeterReplaceInputDto.getNewElectronicNo());
+        }
+        if (waterMeterReplaceInputDto.getNewDeviceTypeId() != null && waterMeterReplaceInputDto.getNewDeviceTypeId()!=0) {
+            DeviceTypeDto deviceTypeDto = deviceTypeMapper.getById(waterMeterReplaceInputDto.getNewDeviceTypeId());
+            if(!device.getDeviceType().equals(waterMeterReplaceInputDto.getNewDeviceTypeId())){
+                if (deviceTypeDto != null && deviceTypeDto.getIsRegister() == 1) {
+                    String udipId = udipUnitService.saveUdipUnit(waterMeterReplaceLog.getNewDeviceNo(),device.getCustomerId(),deviceTypeDto);
+                    newDevice.setUdipId(udipId);
+                    newDevice.setRegisterStatus(1);
+                }
+            }
+
+            newDevice.setDeviceType(waterMeterReplaceInputDto.getNewDeviceTypeId());
+        }
+        newDevice.setDateUpdate(LocalDateTime.now());
+        deviceMapper.updateByPrimaryKeySelective(newDevice);
+
+        log.info("end submitWaterMeterReplace");
     }
 }

+ 5 - 1
smart-city-platform/src/main/resources/mapper/DeviceTypeMapper.xml

@@ -13,6 +13,8 @@
         <result column="create_by" property="createBy" jdbcType="VARCHAR"/>
         <result column="update_date" property="updateDate" jdbcType="TIMESTAMP"/>
         <result column="update_by" property="updateBy" jdbcType="VARCHAR"/>
+        <result column="is_valve" property="isValve" jdbcType="INTEGER"/>
+        <result column="is_register" property="isRegister" jdbcType="INTEGER"/>
     </resultMap>
 
     <!--auto generated Code-->
@@ -26,7 +28,9 @@
         create_date,
         create_by,
         update_date,
-        update_by
+        update_by,
+        is_valve,
+        is_register
 </sql>
 
     <!--auto generated Code-->

+ 317 - 209
smart-city-platform/src/main/resources/mapper/WaterMeterReplaceLogMapper.xml

@@ -3,247 +3,355 @@
 <mapper namespace="com.bz.smart_city.dao.WaterMeterReplaceLogMapper">
     <!--auto generated Code-->
     <resultMap id="BaseResultMap" type="com.bz.smart_city.entity.WaterMeterReplaceLog">
-        <result column="id" property="id" jdbcType="INTEGER"/>
-        <result column="main_log_id" property="mainLogId" jdbcType="INTEGER"/>
-        <result column="device_id" property="deviceId" jdbcType="INTEGER"/>
-        <result column="device_type_id" property="deviceTypeId" jdbcType="INTEGER"/>
-        <result column="new_water_no" property="newWaterNo" jdbcType="VARCHAR"/>
-        <result column="old_water_no" property="oldWaterNo" jdbcType="VARCHAR"/>
-        <result column="new_begin_wsv" property="newBeginWsv" jdbcType="VARCHAR"/>
-        <result column="old_end_wsv" property="oldEndWsv" jdbcType="VARCHAR"/>
-        <result column="new_device_no" property="newDeviceNo" jdbcType="VARCHAR"/>
-        <result column="old_device_no" property="oldDeviceNo" jdbcType="VARCHAR"/>
-        <result column="new_sim_no" property="newSimNo" jdbcType="VARCHAR"/>
-        <result column="old_sim_no" property="oldSimNo" jdbcType="VARCHAR"/>
-        <result column="new_device_flag_no" property="newDeviceFlagNo" jdbcType="VARCHAR"/>
-        <result column="old_device_flag_no" property="oldDeviceFlagNo" jdbcType="VARCHAR"/>
-        <result column="remark" property="remark" jdbcType="VARCHAR"/>
-        <result column="status" property="status" jdbcType="INTEGER"/>
-        <result column="date_create" property="dateCreate" jdbcType="TIMESTAMP"/>
-        <result column="date_update" property="dateUpdate" jdbcType="TIMESTAMP"/>
-        <result column="create_by" property="createBy" jdbcType="VARCHAR"/>
-        <result column="update_by" property="updateBy" jdbcType="VARCHAR"/>
+        <!--@mbg.generated-->
+        <!--@Table sc_water_meter_replace_log-->
+        <id column="id" property="id" />
+        <result column="main_log_id" property="mainLogId" />
+        <result column="device_id" property="deviceId" />
+        <result column="replace_method" property="replaceMethod" />
+        <result column="new_device_type_id" property="newDeviceTypeId" />
+        <result column="old_device_type_id" property="oldDeviceTypeId" />
+        <result column="new_water_no" property="newWaterNo" />
+        <result column="old_water_no" property="oldWaterNo" />
+        <result column="new_begin_wsv" property="newBeginWsv" />
+        <result column="old_end_wsv" property="oldEndWsv" />
+        <result column="new_device_no" property="newDeviceNo" />
+        <result column="old_device_no" property="oldDeviceNo" />
+        <result column="new_sim_no" property="newSimNo" />
+        <result column="old_sim_no" property="oldSimNo" />
+        <result column="new_device_flag_no" property="newDeviceFlagNo" />
+        <result column="old_device_flag_no" property="oldDeviceFlagNo" />
+        <result column="remark" property="remark" />
+        <result column="status" property="status" />
+        <result column="replace_username" property="replaceUsername" />
+        <result column="replace_user_phone" property="replaceUserPhone" />
+        <result column="date_create" property="dateCreate" />
+        <result column="date_update" property="dateUpdate" />
+        <result column="create_by" property="createBy" />
+        <result column="update_by" property="updateBy" />
     </resultMap>
-
-    <!--auto generated Code-->
     <sql id="Base_Column_List">
-            id,
-            main_log_id,
-            device_id,
-            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`,
-            date_create,
-            date_update,
-            create_by,
-            update_by
+        <!--@mbg.generated-->
+        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
     </sql>
-
-    <!--auto generated Code-->
-    <insert id="insert" useGeneratedKeys="true" keyProperty="waterMeterReplaceLog.id">
-        INSERT INTO sc_water_meter_replace_log (
-            id,
-            main_log_id,
-            device_id,
-            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`,
-            date_create,
-            date_update,
-            create_by,
-            update_by
-        ) VALUES (
-                     #{waterMeterReplaceLog.id,jdbcType=INTEGER},
-                     #{waterMeterReplaceLog.mainLogId,jdbcType=INTEGER},
-                     #{waterMeterReplaceLog.deviceId,jdbcType=INTEGER},
-                     #{waterMeterReplaceLog.deviceTypeId,jdbcType=INTEGER},
-                     #{waterMeterReplaceLog.newWaterNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.oldWaterNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.newBeginWsv,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.oldEndWsv,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.newDeviceNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.oldDeviceNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.newSimNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.oldSimNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.newDeviceFlagNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.oldDeviceFlagNo,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.remark,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.status,jdbcType=INTEGER},
-                     #{waterMeterReplaceLog.dateCreate,jdbcType=TIMESTAMP},
-                     #{waterMeterReplaceLog.dateUpdate,jdbcType=TIMESTAMP},
-                     #{waterMeterReplaceLog.createBy,jdbcType=VARCHAR},
-                     #{waterMeterReplaceLog.updateBy,jdbcType=VARCHAR}
-                 )
-    </insert>
-
-    <!--auto generated Code-->
-    <insert id="insertSelective" useGeneratedKeys="true" keyProperty="waterMeterReplaceLog.id">
-        INSERT INTO sc_water_meter_replace_log
+    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.bz.smart_city.entity.WaterMeterReplaceLog" useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into sc_water_meter_replace_log
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="waterMeterReplaceLog.id!=null"> id,</if>
-            <if test="waterMeterReplaceLog.mainLogId!=null"> main_log_id,</if>
-            <if test="waterMeterReplaceLog.deviceId!=null"> device_id,</if>
-            <if test="waterMeterReplaceLog.deviceTypeId!=null"> device_type_id,</if>
-            <if test="waterMeterReplaceLog.newWaterNo!=null"> new_water_no,</if>
-            <if test="waterMeterReplaceLog.oldWaterNo!=null"> old_water_no,</if>
-            <if test="waterMeterReplaceLog.newBeginWsv!=null"> new_begin_wsv,</if>
-            <if test="waterMeterReplaceLog.oldEndWsv!=null"> old_end_wsv,</if>
-            <if test="waterMeterReplaceLog.newDeviceNo!=null"> new_device_no,</if>
-            <if test="waterMeterReplaceLog.oldDeviceNo!=null"> old_device_no,</if>
-            <if test="waterMeterReplaceLog.newSimNo!=null"> new_sim_no,</if>
-            <if test="waterMeterReplaceLog.oldSimNo!=null"> old_sim_no,</if>
-            <if test="waterMeterReplaceLog.newDeviceFlagNo!=null"> new_device_flag_no,</if>
-            <if test="waterMeterReplaceLog.oldDeviceFlagNo!=null"> old_device_flag_no,</if>
-            <if test="waterMeterReplaceLog.remark!=null"> remark,</if>
-            <if test="waterMeterReplaceLog.status!=null"> `status`,</if>
-            <if test="waterMeterReplaceLog.dateCreate!=null"> date_create,</if>
-            <if test="waterMeterReplaceLog.dateUpdate!=null"> date_update,</if>
-            <if test="waterMeterReplaceLog.createBy!=null"> create_by,</if>
-            <if test="waterMeterReplaceLog.updateBy!=null"> update_by,</if>
+            <if test="mainLogId != null">
+                main_log_id,
+            </if>
+            <if test="deviceId != null">
+                device_id,
+            </if>
+            <if test="replaceMethod != null">
+                replace_method,
+            </if>
+            <if test="newDeviceTypeId != null">
+                new_device_type_id,
+            </if>
+            <if test="oldDeviceTypeId != null">
+                old_device_type_id,
+            </if>
+            <if test="newWaterNo != null">
+                new_water_no,
+            </if>
+            <if test="oldWaterNo != null">
+                old_water_no,
+            </if>
+            <if test="newBeginWsv != null">
+                new_begin_wsv,
+            </if>
+            <if test="oldEndWsv != null">
+                old_end_wsv,
+            </if>
+            <if test="newDeviceNo != null">
+                new_device_no,
+            </if>
+            <if test="oldDeviceNo != null">
+                old_device_no,
+            </if>
+            <if test="newSimNo != null">
+                new_sim_no,
+            </if>
+            <if test="oldSimNo != null">
+                old_sim_no,
+            </if>
+            <if test="newDeviceFlagNo != null">
+                new_device_flag_no,
+            </if>
+            <if test="oldDeviceFlagNo != null">
+                old_device_flag_no,
+            </if>
+            <if test="remark != null">
+                remark,
+            </if>
+            <if test="status != null">
+                `status`,
+            </if>
+            <if test="replaceUsername != null">
+                replace_username,
+            </if>
+            <if test="replaceUserPhone != null">
+                replace_user_phone,
+            </if>
+            <if test="dateCreate != null">
+                date_create,
+            </if>
+            <if test="dateUpdate != null">
+                date_update,
+            </if>
+            <if test="createBy != null">
+                create_by,
+            </if>
+            <if test="updateBy != null">
+                update_by,
+            </if>
         </trim>
-        VALUES
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="waterMeterReplaceLog.id!=null">#{waterMeterReplaceLog.id,jdbcType=INTEGER},
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="mainLogId != null">
+                #{mainLogId},
             </if>
-            <if test="waterMeterReplaceLog.mainLogId!=null">#{waterMeterReplaceLog.mainLogId,jdbcType=INTEGER},
+            <if test="deviceId != null">
+                #{deviceId},
             </if>
-            <if test="waterMeterReplaceLog.deviceId!=null">#{waterMeterReplaceLog.deviceId,jdbcType=INTEGER},
+            <if test="replaceMethod != null">
+                #{replaceMethod},
             </if>
-            <if test="waterMeterReplaceLog.deviceTypeId!=null">#{waterMeterReplaceLog.deviceTypeId,jdbcType=INTEGER},
+            <if test="newDeviceTypeId != null">
+                #{newDeviceTypeId},
             </if>
-            <if test="waterMeterReplaceLog.newWaterNo!=null">#{waterMeterReplaceLog.newWaterNo,jdbcType=VARCHAR},
+            <if test="oldDeviceTypeId != null">
+                #{oldDeviceTypeId},
             </if>
-            <if test="waterMeterReplaceLog.oldWaterNo!=null">#{waterMeterReplaceLog.oldWaterNo,jdbcType=VARCHAR},
+            <if test="newWaterNo != null">
+                #{newWaterNo},
             </if>
-            <if test="waterMeterReplaceLog.newBeginWsv!=null">#{waterMeterReplaceLog.newBeginWsv,jdbcType=VARCHAR},
+            <if test="oldWaterNo != null">
+                #{oldWaterNo},
             </if>
-            <if test="waterMeterReplaceLog.oldEndWsv!=null">#{waterMeterReplaceLog.oldEndWsv,jdbcType=VARCHAR},
+            <if test="newBeginWsv != null">
+                #{newBeginWsv},
             </if>
-            <if test="waterMeterReplaceLog.newDeviceNo!=null">#{waterMeterReplaceLog.newDeviceNo,jdbcType=VARCHAR},
+            <if test="oldEndWsv != null">
+                #{oldEndWsv},
             </if>
-            <if test="waterMeterReplaceLog.oldDeviceNo!=null">#{waterMeterReplaceLog.oldDeviceNo,jdbcType=VARCHAR},
+            <if test="newDeviceNo != null">
+                #{newDeviceNo},
             </if>
-            <if test="waterMeterReplaceLog.newSimNo!=null">#{waterMeterReplaceLog.newSimNo,jdbcType=VARCHAR},
+            <if test="oldDeviceNo != null">
+                #{oldDeviceNo},
             </if>
-            <if test="waterMeterReplaceLog.oldSimNo!=null">#{waterMeterReplaceLog.oldSimNo,jdbcType=VARCHAR},
+            <if test="newSimNo != null">
+                #{newSimNo},
             </if>
-            <if test="waterMeterReplaceLog.newDeviceFlagNo!=null">#{waterMeterReplaceLog.newDeviceFlagNo,jdbcType=VARCHAR},
+            <if test="oldSimNo != null">
+                #{oldSimNo},
             </if>
-            <if test="waterMeterReplaceLog.oldDeviceFlagNo!=null">#{waterMeterReplaceLog.oldDeviceFlagNo,jdbcType=VARCHAR},
+            <if test="newDeviceFlagNo != null">
+                #{newDeviceFlagNo},
             </if>
-            <if test="waterMeterReplaceLog.remark!=null">#{waterMeterReplaceLog.remark,jdbcType=VARCHAR},
+            <if test="oldDeviceFlagNo != null">
+                #{oldDeviceFlagNo},
             </if>
-            <if test="waterMeterReplaceLog.status!=null">#{waterMeterReplaceLog.status,jdbcType=INTEGER},
+            <if test="remark != null">
+                #{remark},
             </if>
-            <if test="waterMeterReplaceLog.dateCreate!=null">#{waterMeterReplaceLog.dateCreate,jdbcType=TIMESTAMP},
+            <if test="status != null">
+                #{status},
             </if>
-            <if test="waterMeterReplaceLog.dateUpdate!=null">#{waterMeterReplaceLog.dateUpdate,jdbcType=TIMESTAMP},
+            <if test="replaceUsername != null">
+                #{replaceUsername},
             </if>
-            <if test="waterMeterReplaceLog.createBy!=null">#{waterMeterReplaceLog.createBy,jdbcType=VARCHAR},
+            <if test="replaceUserPhone != null">
+                #{replaceUserPhone},
             </if>
-            <if test="waterMeterReplaceLog.updateBy!=null">#{waterMeterReplaceLog.updateBy,jdbcType=VARCHAR},
+            <if test="dateCreate != null">
+                #{dateCreate},
+            </if>
+            <if test="dateUpdate != null">
+                #{dateUpdate},
+            </if>
+            <if test="createBy != null">
+                #{createBy},
+            </if>
+            <if test="updateBy != null">
+                #{updateBy},
             </if>
         </trim>
     </insert>
-
-    <!--auto generated Code-->
-    <insert id="insertList">
-        INSERT INTO sc_water_meter_replace_log (
-        id,
-        main_log_id,
-        device_id,
-        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`,
-        date_create,
-        date_update,
-        create_by,
-        update_by
-        )VALUES
-        <foreach collection="waterMeterReplaceLogs" item="waterMeterReplaceLog" index="index" separator=",">
-            (
-            #{waterMeterReplaceLog.id,jdbcType=INTEGER},
-            #{waterMeterReplaceLog.mainLogId,jdbcType=INTEGER},
-            #{waterMeterReplaceLog.deviceId,jdbcType=INTEGER},
-            #{waterMeterReplaceLog.deviceTypeId,jdbcType=INTEGER},
-            #{waterMeterReplaceLog.newWaterNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.oldWaterNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.newBeginWsv,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.oldEndWsv,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.newDeviceNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.oldDeviceNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.newSimNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.oldSimNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.newDeviceFlagNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.oldDeviceFlagNo,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.remark,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.status,jdbcType=INTEGER},
-            #{waterMeterReplaceLog.dateCreate,jdbcType=TIMESTAMP},
-            #{waterMeterReplaceLog.dateUpdate,jdbcType=TIMESTAMP},
-            #{waterMeterReplaceLog.createBy,jdbcType=VARCHAR},
-            #{waterMeterReplaceLog.updateBy,jdbcType=VARCHAR}
-            )
-        </foreach>
-    </insert>
-
-    <!--auto generated Code-->
-    <update id="updateByPrimaryKeySelective">
-        UPDATE sc_water_meter_replace_log
+    <update id="updateByPrimaryKeySelective" parameterType="com.bz.smart_city.entity.WaterMeterReplaceLog">
+        <!--@mbg.generated-->
+        update sc_water_meter_replace_log
         <set>
-            <if test="waterMeterReplaceLog.mainLogId != null"> main_log_id= #{waterMeterReplaceLog.mainLogId,jdbcType=INTEGER},</if>
-            <if test="waterMeterReplaceLog.deviceId != null"> device_id= #{waterMeterReplaceLog.deviceId,jdbcType=INTEGER},</if>
-            <if test="waterMeterReplaceLog.deviceTypeId != null"> device_type_id= #{waterMeterReplaceLog.deviceTypeId,jdbcType=INTEGER},</if>
-            <if test="waterMeterReplaceLog.newWaterNo != null"> new_water_no= #{waterMeterReplaceLog.newWaterNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.oldWaterNo != null"> old_water_no= #{waterMeterReplaceLog.oldWaterNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.newBeginWsv != null"> new_begin_wsv= #{waterMeterReplaceLog.newBeginWsv,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.oldEndWsv != null"> old_end_wsv= #{waterMeterReplaceLog.oldEndWsv,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.newDeviceNo != null"> new_device_no= #{waterMeterReplaceLog.newDeviceNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.oldDeviceNo != null"> old_device_no= #{waterMeterReplaceLog.oldDeviceNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.newSimNo != null"> new_sim_no= #{waterMeterReplaceLog.newSimNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.oldSimNo != null"> old_sim_no= #{waterMeterReplaceLog.oldSimNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.newDeviceFlagNo != null"> new_device_flag_no= #{waterMeterReplaceLog.newDeviceFlagNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.oldDeviceFlagNo != null"> old_device_flag_no= #{waterMeterReplaceLog.oldDeviceFlagNo,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.remark != null"> remark= #{waterMeterReplaceLog.remark,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.status != null"> `status`= #{waterMeterReplaceLog.status,jdbcType=INTEGER},</if>
-            <if test="waterMeterReplaceLog.dateCreate != null"> date_create= #{waterMeterReplaceLog.dateCreate,jdbcType=TIMESTAMP},</if>
-            <if test="waterMeterReplaceLog.dateUpdate != null"> date_update= #{waterMeterReplaceLog.dateUpdate,jdbcType=TIMESTAMP},</if>
-            <if test="waterMeterReplaceLog.createBy != null"> create_by= #{waterMeterReplaceLog.createBy,jdbcType=VARCHAR},</if>
-            <if test="waterMeterReplaceLog.updateBy != null"> update_by= #{waterMeterReplaceLog.updateBy,jdbcType=VARCHAR}</if>
+            <if test="mainLogId != null">
+                main_log_id = #{mainLogId},
+            </if>
+            <if test="deviceId != null">
+                device_id = #{deviceId},
+            </if>
+            <if test="replaceMethod != null">
+                replace_method = #{replaceMethod},
+            </if>
+            <if test="newDeviceTypeId != null">
+                new_device_type_id = #{newDeviceTypeId},
+            </if>
+            <if test="oldDeviceTypeId != null">
+                old_device_type_id = #{oldDeviceTypeId},
+            </if>
+            <if test="newWaterNo != null">
+                new_water_no = #{newWaterNo},
+            </if>
+            <if test="oldWaterNo != null">
+                old_water_no = #{oldWaterNo},
+            </if>
+            <if test="newBeginWsv != null">
+                new_begin_wsv = #{newBeginWsv},
+            </if>
+            <if test="oldEndWsv != null">
+                old_end_wsv = #{oldEndWsv},
+            </if>
+            <if test="newDeviceNo != null">
+                new_device_no = #{newDeviceNo},
+            </if>
+            <if test="oldDeviceNo != null">
+                old_device_no = #{oldDeviceNo},
+            </if>
+            <if test="newSimNo != null">
+                new_sim_no = #{newSimNo},
+            </if>
+            <if test="oldSimNo != null">
+                old_sim_no = #{oldSimNo},
+            </if>
+            <if test="newDeviceFlagNo != null">
+                new_device_flag_no = #{newDeviceFlagNo},
+            </if>
+            <if test="oldDeviceFlagNo != null">
+                old_device_flag_no = #{oldDeviceFlagNo},
+            </if>
+            <if test="remark != null">
+                remark = #{remark},
+            </if>
+            <if test="status != null">
+                `status` = #{status},
+            </if>
+            <if test="replaceUsername != null">
+                replace_username = #{replaceUsername},
+            </if>
+            <if test="replaceUserPhone != null">
+                replace_user_phone = #{replaceUserPhone},
+            </if>
+            <if test="dateCreate != null">
+                date_create = #{dateCreate},
+            </if>
+            <if test="dateUpdate != null">
+                date_update = #{dateUpdate},
+            </if>
+            <if test="createBy != null">
+                create_by = #{createBy},
+            </if>
+            <if test="updateBy != null">
+                update_by = #{updateBy},
+            </if>
         </set>
-        WHERE id = #{waterMeterReplaceLog.id,jdbcType=INTEGER}
+        where id = #{id}
     </update>
+    <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,
+        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.oldDeviceTypeId}, #{item.newWaterNo}, #{item.oldWaterNo}, #{item.newBeginWsv},
+            #{item.oldEndWsv}, #{item.newDeviceNo}, #{item.oldDeviceNo}, #{item.newSimNo},
+            #{item.oldSimNo}, #{item.newDeviceFlagNo}, #{item.oldDeviceFlagNo}, #{item.remark},
+            #{item.status}, #{item.replaceUsername}, #{item.replaceUserPhone}, #{item.dateCreate},
+            #{item.dateUpdate}, #{item.createBy}, #{item.updateBy})
+        </foreach>
+    </insert>
 
     <select id="findByMainLogId" resultMap="BaseResultMap">
         select <include refid="Base_Column_List"/> from sc_water_meter_replace_log where status = 1 and main_log_id = #{mainLogId} 
     </select>
+
+    <select id="findList" resultType="com.bz.smart_city.dto.WaterMeterReplaceLogDto">
+        select
+        rl.*,
+        d.water_meter_file_no,
+        d.loc_desc,
+        sc.customer_name,
+        sb.name as building_name,
+        sil.is_accepted,
+        sdt1.equipment_type as new_equipment_type,
+        sdt1.model as new_model,
+        sdm1.name as new_manufacturer_name,
+        sdt2.equipment_type as old_equipment_type,
+        sdt2.model as old_model,
+        sdm2.name as old_manufacturer_name
+        from sc_water_meter_replace_log rl
+        left join sc_device d on(d.id = rl.device_id)
+        left join sc_customer sc on(sc.id = d.customer_id)
+        left join sc_building sb on(sb.id = d.building_id)
+        left join sc_install_list sil on(sil.device_id = rl.device_id)
+        left join sc_device_type sdt1 on(sdt1.id = rl.new_device_type_id)
+        left join sc_device_manufacturer sdm1 on(sdm1.id = sdt1.manufacturer_id)
+        left join sc_device_type sdt2 on(sdt2.id = rl.old_device_type_id)
+        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="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
+            d.water_meter_file_no LIKE concat('%',#{deviceNo},'%')
+            )</if>
+        <if test="replaceMethod != null"> and rl.replace_method = #{replaceMethod}</if>
+        <if test="customerId != null"> and d.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>
+        order by rl.date_create desc
+    </select>
+
+    <select id="findList_COUNT" resultType="Long">
+        select
+        count(1)
+        from sc_water_meter_replace_log rl
+        left join sc_device d on(d.id = rl.device_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="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
+            d.water_meter_file_no LIKE concat('%',#{deviceNo},'%')
+            )</if>
+        <if test="replaceMethod != null"> and rl.replace_method = #{replaceMethod}</if>
+        <if test="customerId != null"> and d.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>
+    </select>
 </mapper>