修改单位计费精度为厘
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java b/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java
index 275c951..d459b5e 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java
@@ -38,9 +38,12 @@
@NotNull
private String mode;
- @Column(precision = 10, scale = 2)
+ @Column(precision = 10, scale = 3)
private Double amount;
+ @Column(precision = 10, scale = 2)
+ private Double actualamount;
+
@Column(name = "water_in_100ml", precision = 10)
private Integer waterSumHundredLitre;
@@ -157,4 +160,12 @@
public void setCardPhyId(String cardPhyId) {
this.cardPhyId = cardPhyId;
}
+
+ public Double getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(Double actualamount) {
+ this.actualamount = actualamount;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TCollectdtl.java b/src/main/java/com/supwisdom/dlpay/water/domain/TCollectdtl.java
index d1e2226..adf0f38 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TCollectdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TCollectdtl.java
@@ -38,9 +38,13 @@
@NotNull
private String mode;
- @Column(precision = 10, scale = 2)
+ @Column(precision = 10, scale = 3)
private Double amount;
+ @Column(precision = 10, scale = 2)
+ private Double actualamount;
+
+
@Column(name = "water_in_100ml", precision = 10)
private Integer waterSumHundredLitre;
@@ -215,4 +219,12 @@
public void setNextCreditTime(String nextCreditTime) {
this.nextCreditTime = nextCreditTime;
}
+
+ public Double getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(Double actualamount) {
+ this.actualamount = actualamount;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtlCount.java b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtlCount.java
index 64e5b13..99515a3 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtlCount.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtlCount.java
@@ -30,9 +30,12 @@
@Column(name = "count", length = 32)
private Integer count;
- @Column(precision = 10, scale = 2)
+ @Column(precision = 10, scale = 3)
private Double amount;
+ @Column(precision = 10, scale = 2)
+ private Double actualamount;
+
@Column(name = "water", precision = 10)
private Integer water;
@@ -99,4 +102,12 @@
public void setWater(Integer water) {
this.water = water;
}
+
+ public Double getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(Double actualamount) {
+ this.actualamount = actualamount;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java b/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
index 79513a6..b7e121a 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
@@ -51,6 +51,7 @@
@Async("waterPay")
public void waterPay(Integer cobillno) {
TCollectdtl collectdtl = collectdtlService.findByCobillnoForUpdate(cobillno);
+ // 设置已入账次数和日期
String lastCredit = collectdtl.getLastCredit();
SystemDateTime dateTime = systemUtilService.getSysdatetime();
String currentDate = dateTime.getHostdate();
@@ -66,6 +67,11 @@
String nextTime = DateUtil.addDateHour(dateTime.getHostdatetime(), Integer.valueOf(intervalHour));
collectdtl.setNextCreditTime(nextTime);
collectdtl.setLastCredit(currentCredit);
+ // 设置实际扣费金额, 实际扣费金额舍去厘
+ if (collectdtl.getActualamount() == null) {
+ int actualAmount = ((int) (collectdtl.getAmount() * 1000)) / 10;
+ collectdtl.setActualamount(actualAmount / 100.0);
+ }
collectdtlService.saveCollectDtl(collectdtl);
if (!TradeDict.DTL_STATUS_WIP.equals(collectdtl.getStatus())) {
logger.error("待入账的采集流水" + cobillno + "状态不正确");
@@ -84,6 +90,10 @@
// 是否已生成入账流水
if (collectdtl.getEntryno() != null) {
TAccdtl accdtl = accdtlService.findByBillno(collectdtl.getEntryno());
+ if (null == accdtl.getActualamount()) {
+ accdtl.setActualamount(collectdtl.getActualamount());
+ accdtlService.saveAccdtl(accdtl);
+ }
String accStatus = accdtl.getStatus();
if (null == accStatus) {
// 入账流水状态为空,需查询是否已初始化
@@ -117,7 +127,7 @@
payConfirm(accdtl);
} else if (TradeDict.DTL_STATUS_SUCCESS.equals(queryResult.getStatus())) {
// 查询得到状态为success,记录下状态
- userDataService.updateAccamount(accdtl.getCitizenCardno(), accdtl.getAmount());
+ userDataService.updateAccamount(accdtl.getCitizenCardno(), accdtl.getActualamount());
cofirmAcc(queryResult.getStatus(), accdtl.getBillno(), accdtl.getRefno());
} else if (TradeDict.DTL_STATUS_FAIL.equals(queryResult.getStatus())) {
cofirmAcc(queryResult.getStatus(), accdtl.getBillno(), accdtl.getRefno());
@@ -165,6 +175,7 @@
accdtl.setCitizenCardno(collectdtl.getCitizenCardno());
accdtl.setMode(TradeDict.PAY_MODE_CARD);//TODO: 二维码消费
accdtl.setAmount(collectdtl.getAmount());
+ accdtl.setActualamount(collectdtl.getActualamount());
accdtl.setWaterSumHundredLitre(collectdtl.getWaterSumHundredLitre());
accdtl.setCardPhyId(collectdtl.getCardPhyId());
accdtl.setTransTime(collectdtl.getTransTime());
@@ -176,7 +187,7 @@
CitizenCardPayinitParam initParam = new CitizenCardPayinitParam();
initParam.setBillno(accdtl.getBillno());
initParam.setCardNo(accdtl.getCitizenCardno());
- initParam.setAmount(MoneyUtil.YuanToFen(accdtl.getAmount()));
+ initParam.setAmount(MoneyUtil.YuanToFen(accdtl.getActualamount()));
initParam.setDtltype(Constants.DTLTYPE_WATER);
initParam.setTransdate(accdtl.getTransDate());
initParam.setTranstime(accdtl.getTransTime());
@@ -194,7 +205,7 @@
if (finishRetcode == 0) {
accStatus = TradeDict.DTL_STATUS_SUCCESS;
// 更新用户已入账金额
- userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getAmount());
+ userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getActualamount());
} else if (finishRetcode == TradeErrorCode.WAIT_QUERY_RESULT) {
QueryDtlResultParam queryParam = new QueryDtlResultParam();
queryParam.setRefno(payFinish.getRefno());
@@ -203,7 +214,7 @@
accStatus = queryResult.getStatus();
if (TradeDict.DTL_STATUS_SUCCESS.equals(accStatus)) {
accStatus = TradeDict.DTL_STATUS_SUCCESS;
- userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getAmount());
+ userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getActualamount());
}
} else {
accStatus = TradeDict.DTL_STATUS_WIP;
diff --git a/src/main/java/com/supwisdom/dlpay/water/pojo/TAccdtlDTO.java b/src/main/java/com/supwisdom/dlpay/water/pojo/TAccdtlDTO.java
index 0c73da9..9138845 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pojo/TAccdtlDTO.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pojo/TAccdtlDTO.java
@@ -6,6 +6,7 @@
private String devicename;
private Integer watersumhundredlitre;
private Double amount;
+ private Double actualamount;
private String username;
private String citizencardno;
private String transdate;
@@ -145,4 +146,12 @@
public void setRefno(String refno) {
this.refno = refno;
}
+
+ public Double getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(Double actualamount) {
+ this.actualamount = actualamount;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/pojo/TCollectdtlDTO.java b/src/main/java/com/supwisdom/dlpay/water/pojo/TCollectdtlDTO.java
index 0c4079d..f7bdb50 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pojo/TCollectdtlDTO.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pojo/TCollectdtlDTO.java
@@ -19,6 +19,8 @@
@Column
private Double amount;
@Column
+ private Double actualamount;
+ @Column
private String username;
@Column
private String citizencardno;
@@ -158,4 +160,12 @@
public void setAreano(Integer areano) {
this.areano = areano;
}
+
+ public Double getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(Double actualamount) {
+ this.actualamount = actualamount;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountDTO.java b/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountDTO.java
index 44c3216..34a57d2 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountDTO.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountDTO.java
@@ -17,6 +17,8 @@
private BigDecimal amount;
+ private BigDecimal actualamount;
+
private BigInteger water;
public String getAccdate() {
@@ -74,4 +76,12 @@
public void setWater(BigInteger water) {
this.water = water;
}
+
+ public BigDecimal getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(BigDecimal actualamount) {
+ this.actualamount = actualamount;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountVO.java b/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountVO.java
index e338ef2..867ce38 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountVO.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pojo/TTransdtlCountVO.java
@@ -8,6 +8,7 @@
private String mode;
private Integer count;
private Double amount;
+ private Double actualamount;
private Integer water;
private String devicename;
private String areaname;
@@ -91,4 +92,12 @@
public void setAreaname(String areaname) {
this.areaname = areaname;
}
+
+ public Double getActualamount() {
+ return actualamount;
+ }
+
+ public void setActualamount(Double actualamount) {
+ this.actualamount = actualamount;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/AccdtlService.java b/src/main/java/com/supwisdom/dlpay/water/service/AccdtlService.java
index e31d939..6acf5f6 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/AccdtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/AccdtlService.java
@@ -24,4 +24,7 @@
@Transactional(rollbackFor = Exception.class, readOnly = true)
PageResult<TAccdtlDTO> queryAccdtlByParam(TransdtlSearchBean param);
+
+ @Transactional(rollbackFor = Exception.class, readOnly = true)
+ TAccdtl saveAccdtl(TAccdtl accdtl);
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/impl/AccdtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/water/service/impl/AccdtlServiceImpl.java
index 16b3a5d..3e6d042 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/impl/AccdtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/impl/AccdtlServiceImpl.java
@@ -121,7 +121,7 @@
@Override
public PageResult<TAccdtlDTO> queryAccdtlByParam(TransdtlSearchBean param) {
- StringBuffer querySql = new StringBuffer("select t1.billno,t1.amount,t1.citizencardno,t1.cardphyid,t1.deviceno,t1.mode,t1.status,t1.transdate,t1.refno,t1.transtime,t1.accdate,t1.water_in_100ml watersumhundredlitre,t1.name username,t2.devicename,t2.areaname,t2.areano " +
+ StringBuffer querySql = new StringBuffer("select t1.billno,t1.amount,actualamount,t1.citizencardno,t1.cardphyid,t1.deviceno,t1.mode,t1.status,t1.transdate,t1.refno,t1.transtime,t1.accdate,t1.water_in_100ml watersumhundredlitre,t1.name username,t2.devicename,t2.areaname,t2.areano " +
"from (select dtl.*,person.name from tb_accentrydtl dtl left join tb_person person on dtl.userid = person.userid) t1," +
"(select device.deviceno,device.devicename,area.areaname,area.areano from tb_device device,tb_area area where device.areano = area.areano) t2 " +
"where t1.deviceno = t2.deviceno");
@@ -199,4 +199,9 @@
BigInteger count = (BigInteger) countQuery.getSingleResult();
return new PageResult<>(count.longValue(), list);
}
+
+ @Override
+ public TAccdtl saveAccdtl(TAccdtl accdtl) {
+ return accdtlDao.save(accdtl);
+ }
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
index dfcc823..62735cd 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -304,10 +304,7 @@
@RequestParam("userid") userid: String?): ModelAndView {
try {
if (userid == null) {
- return ModelAndView("error/500")
- .addObject("cobillno",cobillno)
- .addObject("errorMsg","用户id不能为空")
-
+ return ModelAndView("error/blank")
}
val userInfo = userProxy.querybycardno(QueryUserParam().apply {
this.userid = userid
@@ -382,7 +379,7 @@
if (!querycodtl.uploadStatus) {
val dtl = collectdtlService.saveDeviceDtlData(param)
if (dtl.status == TradeDict.DTL_STATUS_WIP) {
- userDataService.updateCoamount(dtl.citizenCardno, param.amount / 100.0)
+ userDataService.updateCoamount(dtl.citizenCardno, dtl.actualamount)
// 是否立即扣费
if (param.amount >= deviceService.getParaMapByDeviceno(param.deviceno)[WaterDeviceParam.imdDecThreshold]!!.toInt()) {
// 立即异步扣费
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
index 5269151..c5c4f2b 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
@@ -80,7 +80,9 @@
dtl.status = TradeDict.DTL_STATUS_SUCCESS
}
}
- dtl.amount = amount / 100.0
+ dtl.amount = amount / 1000.0
+ val actualAmount = amount / 10
+ dtl.actualamount = actualAmount / 100.0
dtl.waterSumHundredLitre = record.flowsensors
dtl.uploadTime = record.transdate + record.transtime
dtl.uploadStatus = true
@@ -117,7 +119,7 @@
}
override fun queryTransdtlDTOByParam(param: TransdtlSearchBean): PageResult<TCollectdtlDTO>? {
- val sql = StringBuffer("select t1.cobillno,t1.amount,t1.citizencardno,t1.cardphyid,t1.deviceno,t1.mode,t1.status,t1.transdate,t1.entryno,t1.transtime,t1.accdate,t1.water_in_100ml water_sum_hundred_litre,t1.name username,t2.devicename,t2.areaname,t2.areano " +
+ val sql = StringBuffer("select t1.cobillno,t1.amount,t1.actualamount,t1.citizencardno,t1.cardphyid,t1.deviceno,t1.mode,t1.status,t1.transdate,t1.entryno,t1.transtime,t1.accdate,t1.water_in_100ml water_sum_hundred_litre,t1.name username,t2.devicename,t2.areaname,t2.areano " +
"from (select dtl.*,person.name from tb_collectdtl dtl left join tb_person person on dtl.userid = person.userid) t1," +
"(select device.deviceno,device.devicename,area.areaname,area.areano from tb_device device,tb_area area where device.areano = area.areano) t2 " +
"where t1.deviceno = t2.deviceno")
@@ -284,8 +286,8 @@
}
val count = daysBetween(dtlcountDate.countdate, currentDate)
var accdate = dtlcountDate.countdate
- val querySql = "select t3.deviceno,t3.areano,coalesce(t4.accdate,:accdate) accdate,t4.mode,coalesce(t4.amount,0) amount,coalesce(t4.water,0) water,coalesce(t4.count,0) " +
- "count from tb_device t3 LEFT JOIN (select t1.deviceno,t1.accdate,t1.mode,t1.amount,t1.water,t1.count,t2.areano from (select deviceno,accdate,mode,sum(cast(amount as DECIMAL(18,2))) amount,sum(water_in_100ml) water,count(cobillno) count " +
+ val querySql = "select t3.deviceno,t3.areano,coalesce(t4.accdate,:accdate) accdate,t4.mode,coalesce(t4.amount,0) amount,coalesce(t4.actualamount,0) actualamount,coalesce(t4.water,0) water,coalesce(t4.count,0) " +
+ "count from tb_device t3 LEFT JOIN (select t1.deviceno,t1.accdate,t1.mode,t1.amount,t1.actualamount,t1.water,t1.count,t2.areano from (select deviceno,accdate,mode,sum(cast(amount as DECIMAL(18,3))) amount,sum(cast(actualamount as DECIMAL(18,2))) actualamount,sum(water_in_100ml) water,count(cobillno) count " +
"from tb_collectdtl where accdate=:accdate and status = 'success' group by deviceno,mode,accdate) t1 LEFT JOIN " +
"(select deviceno,areano from tb_device) t2 on t1.deviceno=t2.deviceno) t4 on t3.deviceno=t4.deviceno"
for (i in 1..count) {
@@ -306,6 +308,7 @@
val transCount = TTransdtlCount()
transCount.accdate = it.accdate
transCount.amount = it.amount.toDouble()
+ transCount.actualamount = it.actualamount.toDouble()
transCount.water = it.water.toInt()
transCount.count = it.count.toInt()
transCount.mode = it.mode
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index befb6ca..c2749b3 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -65,7 +65,7 @@
INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('feestart', 1, '10', '0', '从第多少百毫升开始计费(单位:百毫升)', '0', 'N');
INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('feeunit', 1, '10', '1', '单位扣费流量(单位:百毫升)', '1', 'N');
-INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('feeamount', 1, '100', '1', '单位扣费金额(单位:分)', '10', 'N');
+INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('feeamount', 1, '100', '1', '单位扣费金额(单位:厘)', '10', 'N');
INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('waittime', 1, '180', '5', '出水等待时间(单位:秒):超出这个时间,自动关闭水阀门', '90', 'N');
INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('app_water_limit', 1, '9999', '1', 'app单次用水上限(单位:百毫升)', '200', 'N');
INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('amount_limit', 1, '9999', '1', '单次消费金额上限(单位:分)', '500', 'N');
diff --git a/src/main/resources/templates/error/blank.html b/src/main/resources/templates/error/blank.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/src/main/resources/templates/error/blank.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/accdtl/index.html b/src/main/resources/templates/system/accdtl/index.html
index 4675e26..ef8d6fc 100644
--- a/src/main/resources/templates/system/accdtl/index.html
+++ b/src/main/resources/templates/system/accdtl/index.html
@@ -128,6 +128,7 @@
{field: 'areaname', align: 'center', title: '区域'},
{field: 'watersumhundredlitre', align: 'center', title: '用水量'},
{field: 'amount', align: 'center', title: '金额'},
+ {field: 'actualamount', align: 'center', title: '实际扣费金额'},
{field: 'username', align: 'center', title: '姓名'},
{field: 'citizencardno', align: 'center', title: '卡号'},
{field: 'cardphyid', align: 'center', title: '物理卡号'},
diff --git a/src/main/resources/templates/system/collectdtl/index.html b/src/main/resources/templates/system/collectdtl/index.html
index 6377f91..a82dc66 100644
--- a/src/main/resources/templates/system/collectdtl/index.html
+++ b/src/main/resources/templates/system/collectdtl/index.html
@@ -135,6 +135,7 @@
{field: 'areaname', align: 'center', title: '区域'},
{field: 'waterSumHundredLitre', align: 'center', title: '用水量'},
{field: 'amount', align: 'center', title: '金额'},
+ {field: 'actualamount', align: 'center', title: '实际扣费金额'},
{field: 'username', align: 'center', title: '姓名'},
{field: 'citizencardno', align: 'center', title: '卡号'},
{field: 'cardphyid', align: 'center', title: '物理卡号'},
diff --git a/src/main/resources/templates/system/dtlcount/index.html b/src/main/resources/templates/system/dtlcount/index.html
index 89a7fbe..684d881 100644
--- a/src/main/resources/templates/system/dtlcount/index.html
+++ b/src/main/resources/templates/system/dtlcount/index.html
@@ -116,6 +116,7 @@
}},
{field: 'water', align: 'center', title: '用水量', width: 85},
{field: 'amount', align: 'center', title: '金额', width: 75},
+ {field: 'actualamount', align: 'center', title: '实际扣费金额', width: 75},
{
field: 'accdate',
align: 'center',