Browse Source

1、公用日志处理类
2、数字处理类
3、抄表录入相关优化

shudong 1 year ago
parent
commit
04b1550b99

+ 1 - 1
collect-fees/collect-fees-service/src/main/java/com/tofly/common/core/entity/ResultRespone.java

@@ -109,7 +109,7 @@ public class ResultRespone<T> implements Serializable {
      * @param listData
      * @return
      */
-    private static ArrayList getConvertList(ArrayList listData) {
+    public static ArrayList getConvertList(ArrayList listData) {
         if (listData != null && listData.size() > 0) {
             Object obj = (Object) listData.get(0);
             if (!(obj instanceof HashMap)) {

+ 267 - 0
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/common/dbhelper/LogHelper.java

@@ -0,0 +1,267 @@
+package com.tofly.fees.common.dbhelper;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.tofly.common.core.entity.ResultRespone;
+import com.tofly.fees.common.enums.LogOperateEnum;
+import com.tofly.fees.common.enums.SysEnum;
+import com.tofly.fees.common.model.CollectionData;
+import com.tofly.fees.common.util.DateUtils;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang.StringUtils;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+
+/**
+ * 公共日志处理类
+ *
+ * @author shudong
+ */
+public class LogHelper {
+
+    /**
+     * 获取修改类型的日志SQL语句【针对传入的2个对象比较,返回的SQL可能为空使用前进行判断】
+     *
+     * @param tOld     原对象,不能为null
+     * @param tNew     新对象,不能为null
+     * @param strCause 变更原因,不能为空否则直接返回null
+     * @param <T>      实体类
+     * @return SQL语句
+     */
+    public static <T> String getModifySQL(T tOld, T tNew, String strCause) {
+        String strResult = "";
+        try {
+            if (tOld == null || tNew == null || !StringUtils.isBlank(strCause)) {
+                return null;
+            }
+            StringBuilder sbResult = new StringBuilder();
+            JSONArray jsonArray = new JSONArray();
+            Field[] fields = tOld.getClass().getDeclaredFields();
+            Field[] newFields = tNew.getClass().getDeclaredFields();
+            for (Field oldField : fields) {
+                //设置允许通过反射访问私有变量
+                oldField.setAccessible(true);
+                //获取字段的值
+                Object oldValue = oldField.get(tOld);
+                if (oldValue != null && oldField.getName().equals("serialVersionUID")) {
+                    continue;
+                }
+                for (Field newField : newFields) {
+                    //设置允许通过反射访问私有变量
+                    newField.setAccessible(true);
+                    //判断属性名一样时,字段值是否相同
+                    if (oldField.getName().equals(newField.getName())) {
+                        Object newValue = newField.get(tNew);
+                        if (newValue != null && !oldValue.equals(newValue)) {
+                            //不相同证明有更改
+                            setModifInfo(tNew, oldValue, sbResult, jsonArray, newField);
+                        }
+                        break;
+                    }
+                }
+            }
+
+            //修改详情
+            String strNotes = sbResult.toString();
+            //判断对象是否有修改,如果不为空则返回存储的SQL
+            if (!StringUtils.isBlank(strNotes)) {
+                //去掉最后的分号
+                strNotes = strNotes.substring(0, strNotes.length() - 1);
+                //数据库表名
+                String strDbTableName = ((TableName) getTableNameAnnotation(tOld)).value();
+                //返回存储的日志SQL
+                strResult = saveLogSQL(strCause, strNotes, jsonArray.toJSONString(), LogOperateEnum.Modif, strDbTableName);
+            }
+        } catch (Exception ex) {
+            strResult = "";
+        }
+        return strResult;
+    }
+
+    /**
+     * 获取修改类型的日志SQL语句【针对单个对象加where条件入的方式,返回的SQL可能为空使用前进行判断】
+     *
+     * @param tNew     修改的实体对象
+     * @param strWhere 查询当前修改的对象的唯一sql条件;条件必须符合查询出来的数据是唯一,否则直接返回null
+     * @param strCause 变更原因,不能为空否则直接返回null
+     * @param <T>      实体类
+     * @return SQL语句
+     */
+    public static <T> String getModifySQL(T tNew, String strWhere, String strCause) {
+        String strResult = "";
+        try {
+            if (tNew == null || !StringUtils.isBlank(strWhere) || !StringUtils.isBlank(strCause)) {
+                return null;
+            }
+            //数据库表名
+            String strDbTableName = ((TableName) getTableNameAnnotation(tNew)).value();
+            //获取当前对象的数据库存储数据
+            HashMap hashMap = getModel(strDbTableName, strWhere);
+            if (hashMap == null) {
+                return null;
+            }
+            StringBuilder sbResult = new StringBuilder();
+            JSONArray jsonArray = new JSONArray();
+            Field[] newFields = tNew.getClass().getDeclaredFields();
+            for (Field newField : newFields) {
+                //设置允许通过反射访问私有变量
+                newField.setAccessible(true);
+
+                //判断值是否有修改
+                Object newValue = newField.get(tNew);
+                if (newValue != null && newField.getName().equals("serialVersionUID")) {
+                    continue;
+                }
+                if (newValue != null) {
+                    Object oldValue = hashMap.get(newField.getName());
+                    setModifInfo(tNew, oldValue, sbResult, jsonArray, newField);
+                }
+            }
+
+            //修改详情
+            String strNotes = sbResult.toString();
+            //判断对象是否有修改,如果不为空则返回存储的SQL
+            if (!StringUtils.isBlank(strNotes)) {
+                //去掉最后的分号
+                strNotes = strNotes.substring(0, strNotes.length() - 1);
+
+                //返回存储的日志SQL
+                strResult = saveLogSQL(strCause, strNotes, jsonArray.toJSONString(), LogOperateEnum.Modif, strDbTableName);
+            }
+        } catch (Exception ex) {
+            strResult = "";
+        }
+        return strResult;
+    }
+
+    /**
+     * 设置修改信息
+     *
+     * @param tNew      实体对象
+     * @param oldValue  修改前的值
+     * @param sbResult  存储的StringBuilder对象
+     * @param jsonArray 存储的JsonArray对象
+     * @param newField  实体类Field对象
+     * @param <T>       泛型实体
+     * @throws IllegalAccessException
+     */
+    private static <T> void setModifInfo(T tNew, Object oldValue, StringBuilder sbResult, JSONArray jsonArray, Field newField) throws IllegalAccessException {
+        Object newValue = newField.get(tNew);
+        String fieldText = getApiModelPropertyValue(tNew, newField.getName());
+        String fieldValue = newField.getName();
+        if (oldValue == null) {
+            oldValue = "";
+        } else {
+            if (oldValue instanceof Date) {
+                oldValue = DateUtils.formatDate((Date) oldValue);
+            }
+        }
+        if (newValue == null) {
+            newValue = "";
+        } else {
+            if (newValue instanceof Date) {
+                newValue = DateUtils.formatDate((Date) newValue);
+            }
+        }
+        sbResult.append(MessageFormat.format("「{0}({1})」由{2}修改为{3};"
+                , fieldText, fieldValue, oldValue, newValue));
+
+        //修改详情添加到json对象中
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("fieldText", fieldText);
+        jsonObject.put("fieldValue", fieldValue);
+        jsonObject.put("oldValue", oldValue);
+        jsonObject.put("newValue", newValue);
+        jsonArray.add(jsonObject);
+    }
+
+
+    /**
+     * 获取指定泛型实体类的ApiModelProperty值
+     *
+     * @param t         泛型实体类
+     * @param fieldName 字段名
+     * @param <T>       泛型
+     * @return 实体类的ApiModelProperty值
+     */
+    private static <T> String getApiModelPropertyValue(T t, String fieldName) {
+        String strValue = "";
+        Field[] fields = t.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            for (Annotation annotation : field.getAnnotations()) {
+                if (annotation instanceof ApiModelProperty) {
+                    if (field.getName().equals(fieldName)) {
+                        strValue = ((ApiModelProperty) annotation).value();
+                        break;
+                    }
+                }
+            }
+        }
+        return strValue;
+    }
+
+
+    /**
+     * 获取泛型实体类对应的TableName注解对象
+     *
+     * @param t   泛型实体类
+     * @param <T> 泛型
+     * @return 实体类对应的TableName注解对象
+     */
+    private static <T> Annotation getTableNameAnnotation(T t) {
+        Annotation[] annotations = t.getClass().getDeclaredAnnotations();
+        for (Annotation annotation : annotations) {
+            if (annotation instanceof TableName) {
+                return annotation;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 保存日志SQL
+     *
+     * @param strCause       变更原因
+     * @param strNotes       修改详情
+     * @param strJsonNotes   修改详情的json字符
+     * @param logOperateEnum 枚举修改类型
+     * @param strTableName   数据库表名
+     * @return 日志存储SQL
+     */
+    private static String saveLogSQL(String strCause, String strNotes, String strJsonNotes, LogOperateEnum logOperateEnum, String strTableName) {
+        String userName = "test";//SecurityUtils.getUserName();
+        String realName = "测试";//SecurityUtils.getUser().getRealName();
+
+        StringBuilder sbSQL = new StringBuilder();
+        sbSQL.append("insert into tf_ywys_sys_commlog(id,btype,btable,changecause,notes,json_notes,optype,usercode,username,optime)");
+        sbSQL.append(MessageFormat.format("select sys_guid(),name,btable,''{0}'',''{1}'',''{2}'',''{3}'',''{4}'',''{5}'',sysdate from tf_ywys_bm_logtype where btable=''{6}''"
+                , strCause, strNotes, strJsonNotes, logOperateEnum.toString(), userName, realName, strTableName));
+        return sbSQL.toString();
+    }
+
+    /**
+     * 通过数据库表名,where唯一条件查询数据库实体model,如果where查询出多条则返回null
+     *
+     * @param strTableName 数据库表名
+     * @param strWhere     查询的where条件
+     * @return HashMap对象
+     * @throws Exception
+     */
+    private static HashMap getModel(String strTableName, String strWhere) throws Exception {
+        String strSql = MessageFormat.format("select * from {0} where {1}", strTableName, strWhere);
+        DbHelper dbHelper = DbHelper.getDbHelper();
+        Object object = dbHelper.getList(strSql, SysEnum.MyBatis.getName());
+        ArrayList arrayList = (ArrayList) ((CollectionData) object).getRecords();
+        if (arrayList.size() != 1) {
+            //查询的数据有多条,where条件不对,必须为一条数据
+            return null;
+        }
+        return (HashMap) ResultRespone.getConvertList(arrayList).get(0);
+    }
+}

+ 29 - 0
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/common/enums/LogOperateEnum.java

@@ -0,0 +1,29 @@
+package com.tofly.fees.common.enums;
+
+/**
+ * 日志操作枚举
+ *
+ * @author shudong
+ */
+public enum LogOperateEnum {
+    /**
+     * 添加
+     */
+    Add,
+    /**
+     * 修改
+     */
+    Modif,
+    /**
+     * 删除
+     */
+    delete,
+    /**
+     * 查询
+     */
+    Search,
+    /**
+     * 事件
+     */
+    Event
+}

+ 2 - 1
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/common/enums/TableIdEnum.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
 
 /**
  * 数据表的主键ID枚举
+ * @author shudong
  */
 public enum TableIdEnum {
 
@@ -22,5 +23,5 @@ public enum TableIdEnum {
     /**
      * 其他自定义字符,非guid、自增、MaxID方式,当做普通字段存值
      */
-    Other;
+    Other
 }

+ 43 - 0
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/common/util/NumberUtils.java

@@ -0,0 +1,43 @@
+package com.tofly.fees.common.util;
+
+import java.text.NumberFormat;
+
+/**
+ * 数字转换处理类
+ *
+ * @author shudong
+ */
+public class NumberUtils {
+
+    private final static NumberFormat numberFormat = NumberFormat.getInstance();
+
+    /**
+     * Object类型转字符串
+     *
+     * @param obj 对象
+     * @return 字符串
+     */
+    public static String toString(Object obj) {
+        return numberFormat.format(obj);
+    }
+
+    /**
+     * double数字转字符串(如4.0,转换后为”4“,而不是”4.0“)
+     *
+     * @param dNum 数字
+     * @return 字符串
+     */
+    public static String toString(double dNum) {
+        return numberFormat.format(dNum);
+    }
+
+    /**
+     * long数字转字符串
+     *
+     * @param dNum 数字
+     * @return 字符串
+     */
+    public static String toString(long dNum) {
+        return numberFormat.format(dNum);
+    } 
+}

+ 12 - 12
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/meterprofilemgt/entity/DaMeter.java

@@ -55,12 +55,12 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 水表类别(bm_METER_TYPE)
      */
-    @ApiModelProperty(value = "水表类别(bm_METER_TYPE)")
+    @ApiModelProperty(value = "水表类别")
     private String meterType;
     /**
      * 水表生产厂家(bm_METER_FACTORY)
      */
-    @ApiModelProperty(value = "水表生产厂家(bm_METER_FACTORY)")
+    @ApiModelProperty(value = "水表生产厂家")
     private String meterFactory;
     /**
      * 水表出厂日期
@@ -72,12 +72,12 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 水表型号(bm_METER_MODEL)
      */
-    @ApiModelProperty(value = "水表型号(bm_METER_MODEL)")
+    @ApiModelProperty(value = "水表型号")
     private String meterModel;
     /**
      * 水表口径(sys_child_code,pcid='12')
      */
-    @ApiModelProperty(value = "水表口径(sys_child_code,pcid='12')")
+    @ApiModelProperty(value = "水表口径")
     private String meterCaliber;
     /**
      * 水表编号
@@ -87,17 +87,17 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 水表量程(sys_child_code,pcid='13')
      */
-    @ApiModelProperty(value = "水表量程(sys_child_code,pcid='13')")
+    @ApiModelProperty(value = "水表量程")
     private String meterRange;
     /**
      * 表计位置(sys_child_code,pcid='15')
      */
-    @ApiModelProperty(value = "表计位置(sys_child_code,pcid='15')")
+    @ApiModelProperty(value = "表计位置")
     private String meterPosition;
     /**
      * 精度等级(sys_child_code,pcid='14')
      */
-    @ApiModelProperty(value = "精度等级(sys_child_code,pcid='14')")
+    @ApiModelProperty(value = "精度等级")
     private String meterAccuracyClass;
     /**
      * 抄表频率
@@ -172,7 +172,7 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 垃圾费收取方式:0按户收取,1 按用量收取
      */
-    @ApiModelProperty(value = "垃圾费收取方式:0按户收取,1 按用量收取")
+    @ApiModelProperty(value = "垃圾费收取方式")
     private String garbageFeeMode;
     /**
      * 垃圾费单价
@@ -187,12 +187,12 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 计费状态(1正常,2停用)
      */
-    @ApiModelProperty(value = "计费状态(1正常,2停用)")
+    @ApiModelProperty(value = "计费状态")
     private String meterState;
     /**
      * 开卡标志(bm_kkzt)
      */
-    @ApiModelProperty(value = "开卡标志(bm_kkzt)")
+    @ApiModelProperty(value = "开卡标志")
     private String icState;
     /**
      * 开卡日期
@@ -285,7 +285,7 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 所属阀门(sys_child_code,pcid='23')
      */
-    @ApiModelProperty(value = "所属阀门(sys_child_code,pcid='23')")
+    @ApiModelProperty(value = "所属阀门")
     private String meterValve;
     /**
      * 操作人员编码
@@ -312,7 +312,7 @@ public class DaMeter extends Model<DaMeter> {
     /**
      * 两高一剩标志:0 否,1
      */
-    @ApiModelProperty(value = "两高一剩标志:0 否,1 是")
+    @ApiModelProperty(value = "两高一剩标志")
     private String lgysFlag;
     /**
      * 安装人员

+ 65 - 33
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/meterreadingmgt/controller/BwMeterReadPlanController.java

@@ -13,21 +13,27 @@ import com.tofly.common.log.annotation.ToFlyAppLog;
 import com.tofly.fees.common.BaseController;
 import com.tofly.fees.common.annotate.requestPostSingle.RequestPostSingleParam;
 import com.tofly.fees.common.dbhelper.DbHelper;
+import com.tofly.fees.common.dbhelper.LogHelper;
 import com.tofly.fees.common.dbhelper.PageSortHelper;
 import com.tofly.fees.common.dbhelper.ProduceSql;
-import com.tofly.fees.common.util.ToolsUtils;
+import com.tofly.fees.common.util.NumberUtils;
+import com.tofly.fees.meterprofilemgt.entity.DaMeter;
+import com.tofly.fees.meterprofilemgt.service.DaMeterService;
 import com.tofly.fees.meterreadingmgt.entity.BwMeterReadPlan;
 import com.tofly.fees.meterreadingmgt.mapper.BwMeterReadPlanMapper;
 import com.tofly.fees.meterreadingmgt.service.IBwMeterReadPlanService;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.apache.poi.hpsf.Decimal;
-import org.springframework.web.bind.annotation.*;
-import org.thymeleaf.util.NumberUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.validation.Valid;
 import java.math.BigDecimal;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.Map;
 
@@ -46,6 +52,8 @@ public class BwMeterReadPlanController extends BaseController {
     private final IBwMeterReadPlanService bwMeterReadPlanService;
     private final BwMeterReadPlanMapper bwMeterReadPlanMapper;
 
+    private final DaMeterService daMeterService;
+
     /**
      * 抄表录入查询列表数据
      */
@@ -79,9 +87,13 @@ public class BwMeterReadPlanController extends BaseController {
     @ApiOperation(value = "保存抄表录入")
     @PostMapping("/save")
     public ResultRespone updateById(@RequestPostSingleParam("data") JSONObject data) throws Exception {
+
         //region 初始赋值
-        int v_cblx = Convert.toInt(data.get("cblx"));//抄表类型
-        double v_sblc = Convert.toDouble(data.get("sblc"));//水表量程
+
+        //抄表类型
+        int v_cblx = Convert.toInt(data.get("cblx"));
+        //水表量程
+        double v_sblc = Convert.toDouble(data.get("sblc"));
         String czrybm = Convert.toStr(data.get("czrybm"));
         String czryxm = Convert.toStr(data.get("czryxm"));
 
@@ -92,7 +104,7 @@ public class BwMeterReadPlanController extends BaseController {
         bwMeterReadPlan.setJjl(Convert.toBigDecimal(data.get("jjl")));
         bwMeterReadPlan.setOldMeterEreading(Convert.toBigDecimal(data.get("jbzd")));
         bwMeterReadPlan.setNewMeterBreading(Convert.toBigDecimal(data.get("xbqd")));
-        bwMeterReadPlan.setRemark(Convert.toStr(data.get("remark")));
+        bwMeterReadPlan.setRemark(Convert.toStr(data.get("bz")));
         bwMeterReadPlan.setMeterCardId(data.get("cbkid").toString());
         bwMeterReadPlan.setQuantity(Convert.toBigDecimal(data.get("sjsl")));
         bwMeterReadPlan.setMrMode(data.get("cbfs").toString());
@@ -126,10 +138,10 @@ public class BwMeterReadPlanController extends BaseController {
         }
 
         if (bwMeterReadPlan.getMeterCardId().equals("")) {
-            return ResultRespone.failed("用户编号不能为空!");
+            return ResultRespone.failed(false, "用户编号不能为空!");
         }
         if (Convert.toInt(bwMeterReadPlan.getQuantity()) != sjsl) {
-            return ResultRespone.failed("实际水量与计算不符!");
+            return ResultRespone.failed(false, "实际水量与计算不符!");
         }
         //endregion
 
@@ -150,37 +162,57 @@ public class BwMeterReadPlanController extends BaseController {
         bwMeterReadPlan.setAuditOcode(czrybm);
         bwMeterReadPlan.setAuditOname(czryxm);
         bwMeterReadPlan.setAuditDate(nowDate);
+        bwMeterReadPlan.setAuditSuggestion("自动审核");
 
         //更新抄表计划表
         db.addTransactionSql(ProduceSql.getUpdateSql(bwMeterReadPlan
                 , "meter_card_id='" + bwMeterReadPlan.getMeterCardId() + "'"));
 
+        String meterCardId = bwMeterReadPlan.getMeterCardId();
         if (v_cblx == -2) {
-//            //region 表满度
-//            yh_cbkxx_BLL b_cbkxx = new yh_cbkxx_BLL();
-//            yh_cbkxx m_cbkxx = b_cbkxx.GetModel(model._yhbh, model._cbkh);
-//            if (m_cbkxx._sblc != v_sblc) {
-////                //操作的批次流水编号
-////                string strLsbh = StringHelper.GetSysLsbh();
-////               db.Add(LogHelper.GetYhCbkxxLogSQL(m_cbkxx._cbkid, strLsbh, "抄表录入[水表满度,修改量程]", CzlxEnum.Modify, CllxEnum.ModifyBefore));
-////
-////                //修改水表量程信息
-////                m_cbkxx._sblc = v_sblc;
-////                m_cbkxx._czrybm = SystemHelper.GetOcode();
-////                m_cbkxx._czryxm = SystemHelper.GetOname();
-////                m_cbkxx._czsj = DateTime.Now;
-////                db.Add(b_cbkxx.UpdateSQL(m_cbkxx, m_cbkxx._yhbh, m_cbkxx._cbkh));
-//
-//              //  db.Add(LogHelper.GetYhCbkxxLogSQL(m_cbkxx._cbkid, strLsbh, "抄表录入[水表满度,修改量程]", CzlxEnum.Modify, CllxEnum.ModifyAfter));
-//            }
-//            //endregion
+            //region 表满度
+            DaMeter daMeter = daMeterService.getById(meterCardId);
+            if (Convert.toDouble(daMeter.getMeterRange()) != v_sblc) {
+                //更新水表量程
+                DaMeter daMeterNew = new DaMeter();
+                daMeterNew.setMeterRange(NumberUtils.toString(v_sblc));
+                daMeterNew.setOperatorCode(czrybm);
+                daMeterNew.setOperatorName(czryxm);
+                daMeterNew.setOperatorDatetime(nowDate);
+                db.addTransactionSql(ProduceSql.getUpdateSql(daMeterNew, "METER_CARD_ID='" + meterCardId + "'"));
+
+                //添加修改日志记录(水表满度,修改量程)
+                String strLog = LogHelper.getModifySQL(daMeterNew, "METER_CARD_ID='" + meterCardId + "'", "抄表录入[水表满度,修改量程]");
+                if (!StringUtils.isBlank(strLog)) {
+                    db.addTransactionSql(strLog);
+                }
+            }
+            //endregion
         } else if (v_cblx == -3) {
-            //CommTools.AddCommLogs("yy_cblr", SysConfigOpt.Modif, string.Format("抄表录入-洗换表【用户编号{0},抄表卡号{1},旧表起{2},旧表止{3},新表起{4},新表止{5}】", model._yhbh, model._cbkh, model._scds, model._jbzd, model._xbqd, model._bcds));
+            //添加修改日志记录(洗换表)
+            String strLog = LogHelper.getModifySQL(bwMeterReadPlan, "METER_CARD_ID='" + meterCardId + "'", "抄表录入-洗换表");
+            if (!StringUtils.isBlank(strLog)) {
+                db.addTransactionSql(strLog);
+            }
         }
 
         if (Convert.toBool(data.get("xgds"))) {
-            // var scds = DbHelper.GetValue(string.Format("select scds from yy_cblr where yhbh={0} and cbkh={1}", model._yhbh, model._cbkh));
-            //CommTools.AddCommLogs("yy_cblr", SysConfigOpt.Modif, string.Format("抄表录入-修改底数【用户编号{0},抄表卡号{1},修改前{2},修改后{3}】", model._yhbh, model._cbkh, scds, model._scds));
+            //上次读数修改前的值,数据库查询
+            BwMeterReadPlan bwMeterReadPlanOld = bwMeterReadPlanService.getById(meterCardId);
+            BwMeterReadPlan bwMeterReadPlanNew = new BwMeterReadPlan();
+
+            //克隆新对象
+            BeanUtils.copyProperties(bwMeterReadPlanOld, bwMeterReadPlanNew);
+            bwMeterReadPlanNew.setLastReading(bwMeterReadPlan.getLastReading());
+
+            //判断是否真实被修改
+            if (!bwMeterReadPlanOld.getLastReading().equals(bwMeterReadPlanNew.getLastReading())) {
+                //添加修改日志记录
+                String strLog = LogHelper.getModifySQL(bwMeterReadPlanOld, bwMeterReadPlanNew, "抄表录入-修改底数");
+                if (!StringUtils.isBlank(strLog)) {
+                    db.addTransactionSql(strLog);
+                }
+            }
         }
         //事物提交数据
         boolean isFlag = db.executeTransaction();

+ 8 - 8
collect-fees/collect-fees-service/src/main/java/com/tofly/fees/meterreadingmgt/entity/BwMeterReadPlan.java

@@ -40,7 +40,6 @@ public class BwMeterReadPlan extends Model<BwMeterReadPlan> {
     /**
      * 客户编号
      */
-    @TableId(value = "CUSTOMER_NO", type = IdType.INPUT)
     @ApiModelProperty(value = "客户编号", required = true)
     private String customerNo;
     /**
@@ -52,7 +51,8 @@ public class BwMeterReadPlan extends Model<BwMeterReadPlan> {
     /**
      * 抄表卡ID:TF_YWYS_DA_METER.METER_CARD_ID=TF_YWYS_BW_METER_READ_PLAN.METER_CARD_ID
      */
-    @ApiModelProperty(value = "抄表卡ID:TF_YWYS_DA_METER.METER_CARD_ID=TF_YWYS_BW_METER_READ_PLAN.METER_CARD_ID")
+    @TableId(value = "CUSTOMER_NO", type = IdType.INPUT)
+    @ApiModelProperty(value = "抄表卡ID")
     private String meterCardId;
     /**
      * 所属公司
@@ -137,12 +137,12 @@ public class BwMeterReadPlan extends Model<BwMeterReadPlan> {
     /**
      * 审核标志(0:未审核;1:审核通过;2:审核不通过)
      */
-    @ApiModelProperty(value = "审核标志(0:未审核;1:审核通过;2:审核不通过)")
+    @ApiModelProperty(value = "审核标志")
     private String auditFlag;
     /**
      * 计算标志:0未算费,1已算费
      */
-    @ApiModelProperty(value = "计算标志:0未算费,1已算费")
+    @ApiModelProperty(value = "计算标志")
     private String calFlag;
     /**
      * 抄表次数
@@ -162,17 +162,17 @@ public class BwMeterReadPlan extends Model<BwMeterReadPlan> {
     /**
      * 抄表类型:BM_MR_TYPE
      */
-    @ApiModelProperty(value = "抄表类型:BM_MR_TYPE")
+    @ApiModelProperty(value = "抄表类型")
     private BigDecimal mrType;
     /**
      * 抄表方式:bm_MR_MODE
      */
-    @ApiModelProperty(value = "抄表方式:bm_MR_MODE")
+    @ApiModelProperty(value = "抄表方式")
     private String mrMode;
     /**
      * 计费状态(1正常,2停用)
      */
-    @ApiModelProperty(value = "计费状态(1正常,2停用)")
+    @ApiModelProperty(value = "计费状态")
     private String calState;
     /**
      * $column.comments
@@ -197,7 +197,7 @@ public class BwMeterReadPlan extends Model<BwMeterReadPlan> {
     /**
      * 抄表数据来源(0手工抄表,1抄表机抄表,2移动APP抄表,3远传抄表,4批量导入抄表,5换表抄,  6 一体机抄表)
      */
-    @ApiModelProperty(value = "抄表数据来源(0手工抄表,1抄表机抄表,2移动APP抄表,3远传抄表,4批量导入抄表,5换表抄,  6 一体机抄表)")
+    @ApiModelProperty(value = "抄表数据来源")
     private String mrDataSource;
     /**
      * 经度