wangbo 4 months ago
parent
commit
a0287eb80d

+ 18 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/dao/SwMeterExchangeRegisterDao.java

@@ -0,0 +1,18 @@
+package com.rongwei.zhsw.system.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.zhsw.system.domain.SwMeterExchangeRegisterDo;
+
+/**
+* @author rongwei
+* @description 针对表【sw_meter_exchange_register(换表登记)】的数据库操作Mapper
+* @createDate 2025-03-27 13:54:53
+* @Entity generator.domain.SwMeterExchangeRegister
+*/
+public interface SwMeterExchangeRegisterDao extends BaseMapper<SwMeterExchangeRegisterDo> {
+
+}
+
+
+
+

+ 18 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/dao/SwWaterMeterManagementDao.java

@@ -0,0 +1,18 @@
+package com.rongwei.zhsw.system.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.zhsw.system.domain.SwWaterMeterManagementDo;
+
+/**
+* @author rongwei
+* @description 针对表【sw_water_meter_management(水表管理)】的数据库操作Mapper
+* @createDate 2025-03-27 13:55:15
+* @Entity generator.domain.SwWaterMeterManagement
+*/
+public interface SwWaterMeterManagementDao extends BaseMapper<SwWaterMeterManagementDo> {
+
+}
+
+
+
+

+ 17 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/SwMeterExchangeRegisterService.java

@@ -0,0 +1,17 @@
+package com.rongwei.zhsw.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.zhsw.system.domain.SwMeterExchangeRegisterDo;
+import com.rongwe.zhsw.system.domain.SwWaterUsageEntryDo;
+
+import java.util.List;
+
+/**
+* @author rongwei
+* @description 针对表【sw_meter_exchange_register(换表登记)】的数据库操作Service
+* @createDate 2025-03-27 13:54:53
+*/
+public interface SwMeterExchangeRegisterService extends IService<SwMeterExchangeRegisterDo> {
+
+    void changemeter(List<SwWaterUsageEntryDo> changemeterinfo, SwMeterExchangeRegisterDo registerDo);
+}

+ 13 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/SwWaterMeterManagementService.java

@@ -0,0 +1,13 @@
+package com.rongwei.zhsw.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.zhsw.system.domain.SwWaterMeterManagementDo;
+
+/**
+* @author rongwei
+* @description 针对表【sw_water_meter_management(水表管理)】的数据库操作Service
+* @createDate 2025-03-27 13:55:15
+*/
+public interface SwWaterMeterManagementService extends IService<SwWaterMeterManagementDo> {
+
+}

+ 100 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/impl/SwMeterExchangeRegisterServiceImpl.java

@@ -0,0 +1,100 @@
+package com.rongwei.zhsw.system.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.zhsw.system.domain.SwMeterExchangeRegisterDo;
+import com.rongwe.zhsw.system.domain.SwUserManagementDo;
+import com.rongwe.zhsw.system.domain.SwWaterMeterManagementDo;
+import com.rongwe.zhsw.system.domain.SwWaterUsageEntryDo;
+import com.rongwei.zhsw.system.dao.SwMeterExchangeRegisterDao;
+import com.rongwei.zhsw.system.dao.SwWaterMeterManagementDao;
+import com.rongwei.zhsw.system.dao.SwWaterUsageEntryDao;
+import com.rongwei.zhsw.system.service.SwMeterExchangeRegisterService;
+import com.rongwei.zhsw.system.service.SwUserManagementService;
+import org.apache.commons.lang3.StringUtils;
+import lombok.Getter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+/**
+* @author rongwei
+* @description 针对表【sw_meter_exchange_register(换表登记)】的数据库操作Service实现
+* @createDate 2025-03-27 13:54:53
+*/
+@Service
+public class SwMeterExchangeRegisterServiceImpl extends ServiceImpl<SwMeterExchangeRegisterDao, SwMeterExchangeRegisterDo>
+    implements SwMeterExchangeRegisterService {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private SwWaterUsageEntryDao swWaterUsageEntryDao;
+
+    @Autowired
+    private BillGenerationServiceImpl billGenerationService;
+
+    @Autowired
+    private SwUserManagementService swUserManagementService;
+
+    @Autowired
+    private SwWaterMeterManagementDao swWaterMeterManagementDao;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void changemeter(List<SwWaterUsageEntryDo> changemeterinfo, SwMeterExchangeRegisterDo registerDo) {
+        //保存换表信息
+        save(registerDo);
+        //
+        if (changemeterinfo == null || changemeterinfo.isEmpty()) {
+            throw new IllegalArgumentException("换表数据不能为空");
+        }
+        SwWaterUsageEntryDo oldEntry = changemeterinfo.get(0); // 旧表数据
+        SwWaterUsageEntryDo newEntry = changemeterinfo.size() > 1 ? changemeterinfo.get(1) : null; // 新表数据
+        // 1. 先插入旧表数据
+        swWaterUsageEntryDao.insert(oldEntry);
+
+        // 2. 生成账单,
+        billGenerationService.generateBill(Collections.singletonList(oldEntry));
+
+        updateUserMeterInfo(newEntry);
+
+        // 3. 插入新表数据
+        if (newEntry != null) {
+            swWaterUsageEntryDao.insert(newEntry);
+        }
+
+        String accountuserno = registerDo.getAccountuserno();
+        QueryWrapper<SwWaterMeterManagementDo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("accountuserno", accountuserno);
+        SwWaterMeterManagementDo managementDo = swWaterMeterManagementDao.selectOne(queryWrapper);
+        if (managementDo != null) {
+            managementDo.setWatermeterno(registerDo.getNewmeterno());
+            managementDo.setSpecificationmodel(registerDo.getNewmetermodel());
+            managementDo.setManufacturer(registerDo.getManufacturer());
+            swWaterMeterManagementDao.updateById(managementDo);
+        } else {
+            throw new IllegalArgumentException("未查询到水表信息");
+        }
+
+
+    }
+
+    private void updateUserMeterInfo(SwWaterUsageEntryDo entry) {
+        String userid = entry.getUserid();
+        SwUserManagementDo user = swUserManagementService.getById(userid);
+        if (user != null) {
+            user.setLastmeterreaddate(entry.getCurrentreadingdate());
+            user.setLastmeterreading(entry.getThisreading());
+            swUserManagementService.updateById(user);
+        } else {
+            throw new IllegalArgumentException("未查询到用户信息");
+        }
+    }
+}
+
+
+

+ 23 - 0
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/impl/SwWaterMeterManagementServiceImpl.java

@@ -0,0 +1,23 @@
+package com.rongwei.zhsw.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.zhsw.system.domain.SwWaterMeterManagementDo;
+import com.rongwei.zhsw.system.dao.SwWaterMeterManagementDao;
+
+import com.rongwei.zhsw.system.service.SwWaterMeterManagementService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author rongwei
+* @description 针对表【sw_water_meter_management(水表管理)】的数据库操作Service实现
+* @createDate 2025-03-27 13:55:15
+*/
+@Service
+public class SwWaterMeterManagementServiceImpl extends ServiceImpl<SwWaterMeterManagementDao, SwWaterMeterManagementDo>
+    implements SwWaterMeterManagementService {
+
+}
+
+
+
+

+ 242 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/domain/SwMeterExchangeRegisterDo.java

@@ -0,0 +1,242 @@
+package com.rongwe.zhsw.system.domain;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+* 换表登记
+* @TableName sw_meter_exchange_register
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sw_meter_exchange_register")
+@Accessors(chain = true)
+public class SwMeterExchangeRegisterDo implements Serializable {
+
+    /**
+    * 主键
+    */
+    @JsonProperty("ID")
+    private String id;
+    /**
+    * 租户ID
+    */
+    @JsonProperty("TENANTID")
+    private String tenantid;
+    @JsonProperty("ROPTION")
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    @JsonProperty("DELETED")
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    @JsonProperty("REMARK")
+    /**
+     * 备注
+     */
+    private String remark;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("CREATEDATE")
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    @JsonProperty("CREATEUSERID")
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("MODIFYDATE")
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    @JsonProperty("MODIFYUSERID")
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    @JsonProperty("CREATEUSERNAME")
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    @JsonProperty("MODIFYUSERNAME")
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    @JsonProperty("ACCOUNTUSERNO")
+    /**
+     * 所属户号
+     */
+    private String accountuserno;
+
+    @JsonProperty("OLDSMETERNO")
+    /**
+     * 旧表编号
+     */
+    private String oldsmeterno;
+
+    @JsonProperty("WATERTYPE")
+    /**
+     * 用水类型
+     */
+    private String watertype;
+
+    @JsonProperty("VILLAGENAME")
+    /**
+     * 小区/村落/街道名称
+     */
+    private String villagename;
+
+    @JsonProperty("ADDRESS")
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    @JsonProperty("PHONENUMBER")
+    /**
+     * 手机号
+     */
+    private String phonenumber;
+
+    @JsonProperty("VOLUMENO")
+    /**
+     * 册号
+     */
+    private String volumeno;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("METERCHANGEENTRYDATE")
+    /**
+     * 换表登记日期
+     */
+    private Date meterchangeentrydate;
+
+    @JsonProperty("NEWMETERNO")
+    /**
+     * 新水表编号
+     */
+    private String newmeterno;
+
+    @JsonProperty("NEWMETERMODEL")
+    /**
+     * 新水表型号
+     */
+    private String newmetermodel;
+
+    @JsonProperty("MANUFACTURER")
+    /**
+     * 新水表厂家
+     */
+    private String manufacturer;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("MANUFACTUREDATE")
+    /**
+     * 生产日期
+     */
+    private Date manufacturedate;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("METERCHANGEDATE")
+    /**
+     * 换表日期
+     */
+    private Date meterchangedate;
+
+    @JsonProperty("METERSTATUS")
+    /**
+     * 水表状态
+     */
+    private String meterstatus;
+
+    @JsonProperty("USERNAME")
+    /**
+     * 户名
+     */
+    private String username;
+
+    @JsonProperty("USERID")
+    /**
+     * 用户id
+     */
+    private String userid;
+
+    @JsonProperty("OLDSMETERMODEL")
+    /**
+     * 旧表型号
+     */
+    private String oldsmetermodel;
+
+    @JsonProperty("OLDSMETERREADING")
+    /**
+     * 旧表读数
+     */
+    private BigDecimal oldsmeterreading;
+
+    @JsonProperty("NEWMETERREADING")
+    /**
+     * 新表读数
+     */
+    private BigDecimal newmeterreading;
+
+    @JsonProperty("OLDSMETERCREATOR")
+    /**
+     * 旧表创建人
+     */
+    private String oldsmetercreator;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("OLDSMETERENTRYDATE")
+    /**
+     * 旧表创建日期
+     */
+    private Date oldsmeterentrydate;
+
+    @JsonProperty("PREVMTRREADING")
+    /**
+     * 上次抄表读数
+     */
+    private BigDecimal prevmtrreading;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonProperty("PREVMTRRDATE")
+    /**
+     * 上次抄表日期
+     */
+    private Date prevmtrrdate;
+
+    @JsonProperty("OLDMTRMFTR")
+    /**
+     * 旧水表厂家
+     */
+    private String oldmtrmftr;
+
+    @JsonProperty("OLDMTRTYPE")
+    /**
+     * 旧水表类型
+     */
+    private String oldmtrtype;
+
+    @JsonProperty("NEWMTRTYPE")
+    /**
+     * 新水表类型
+     */
+    private String newmtrtype;
+}

+ 147 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/domain/SwWaterMeterManagementDo.java

@@ -0,0 +1,147 @@
+package com.rongwe.zhsw.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 水表管理
+ * @TableName sw_water_meter_management
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(value ="sw_water_meter_management")
+public class SwWaterMeterManagementDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 水表编号
+     */
+    private String watermeterno;
+
+    /**
+     * 水表类型
+     */
+    private String watermetertype;
+
+    /**
+     * 规格型号
+     */
+    private String specificationmodel;
+
+    /**
+     * 生产厂家
+     */
+    private String manufacturer;
+
+    /**
+     * 生产日期
+     */
+    private Date manufacturedate;
+
+    /**
+     * 启用日期
+     */
+    private Date startdate;
+
+    /**
+     * 所属户号
+     */
+    private String accountuserno;
+
+    /**
+     * 户名
+     */
+    private String username;
+
+    /**
+     * 用水类型
+     */
+    private String waterusetype;
+
+    /**
+     * 册号
+     */
+    private String volumeno;
+
+    /**
+     * 小区/村落/街道名称
+     */
+    private String communityname;
+
+    /**
+     * 水表状态
+     */
+    private String meterstatus;
+
+    /**
+     * 用户ID
+     */
+    private String userid;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 41 - 2
zhsw-entity/src/main/java/com/rongwe/zhsw/system/domain/SwWaterUsageEntryDo.java

@@ -1,6 +1,8 @@
 package com.rongwe.zhsw.system.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.rongwei.rwcommon.base.BaseDo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -25,80 +27,117 @@ public class SwWaterUsageEntryDo extends BaseDo implements Serializable {
     /**
      * 主键
      */
+    @JsonProperty("ID")
     private String id;
+
     /**
      * 租户ID
      */
+    @JsonProperty("TENANTID")
     private String tenantid;
+
     /**
      * 扩展json格式配置
      */
+    @JsonProperty("ROPTION")
     private String roption;
 
     /**
      * 户号
      */
+    @JsonProperty("USERNUMBER")
     private String usernumber;
+
     /**
      * 户名
      */
+    @JsonProperty("USERNAME")
     private String username;
+
     /**
      * 本次读数
      */
+    @JsonProperty("THISREADING")
     private BigDecimal thisreading;
+
     /**
      * 小区/村落/街道名称(册号)
      */
+    @JsonProperty("COMMUNITYNAME")
     private String communityname;
+
     /**
      * 地址
      */
+    @JsonProperty("ADDRESS")
     private String address;
+
     /**
-     * 本次抄表日期
+     * 本次抄表日期(日期格式:yyyy-MM-dd HH:mm:ss,时区:GMT+8)
      */
+    @JsonProperty("CURRENTREADINGDATE")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date currentreadingdate;
+
     /**
      * 抄表来源
      */
+    @JsonProperty("READINGSOURCE")
     private String readingsource;
+
     /**
      * 户号表主键
      */
+    @JsonProperty("USERID")
     private String userid;
+
     /**
      * 附件
      */
+    @JsonProperty("FILE")
     private String file;
+
     /**
      * 册号编码
      */
+    @JsonProperty("COMMUNITYCODE")
     private String communitycode;
+
     /**
      * 年
      */
+    @JsonProperty("YEAR")
     private Integer year;
+
     /**
      * 月
      */
+    @JsonProperty("MONTH")
     private Integer month;
+
     /**
      * 上次读数
      */
+    @JsonProperty("LASTREADING")
     private BigDecimal lastreading;
+
     /**
-     * 上次抄表日期
+     * 上次抄表日期(日期格式:yyyy-MM-dd HH:mm:ss,时区:GMT+8)
      */
+    @JsonProperty("LASTREADINGDATE")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date lastreadingdate;
 
     /**
      * 状态(是否已生成账单 0,1)
      */
+    @JsonProperty("STATE")
     private int state;
+
     /**
      * 是否为底数
      */
+    @JsonProperty("ISDS")
     private String isds;
 
 }

+ 14 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/dto/ChangeMeterDTO.java

@@ -0,0 +1,14 @@
+package com.rongwe.zhsw.system.dto;
+
+import com.rongwe.zhsw.system.domain.SwMeterExchangeRegisterDo;
+import com.rongwe.zhsw.system.domain.SwWaterUsageEntryDo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ChangeMeterDTO {
+    private List<SwWaterUsageEntryDo> newrecord;
+    private SwMeterExchangeRegisterDo changemeterinfo;
+
+}

+ 24 - 0
zhsw-server/src/main/java/com/rongwei/zhsw/system/controller/SwWaterChangeMeterController.java

@@ -0,0 +1,24 @@
+package com.rongwei.zhsw.system.controller;
+
+import com.rongwe.zhsw.system.dto.ChangeMeterDTO;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.zhsw.system.service.SwMeterExchangeRegisterService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/swWaterChangeMeter")
+public class SwWaterChangeMeterController {
+
+
+    @Autowired
+    SwMeterExchangeRegisterService swMeterExchangeRegisterService;
+
+    @PostMapping("/changeMeter")
+    public R ChangeMeter(@RequestBody ChangeMeterDTO request) {
+        swMeterExchangeRegisterService.changemeter(request.getNewrecord(), request.getChangemeterinfo());
+        return R.ok();
+    }
+
+}