Ver Fonte

Merge branch '20200918' of http://114.135.61.188:53000/ZONIOT/water-iot into 20200918

# Conflicts:
#	smart-city-platform/src/main/java/com/bz/smart_city/entity/pay/AmountWaterUsedAmount.java
oppadmin há 4 anos atrás
pai
commit
33e97fc668

+ 2 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dao/pay/PayFeeMapper.java

@@ -63,4 +63,6 @@ public interface PayFeeMapper {
 
     PayAgenttransactionDto selectAgenttransaction(@Param("orderNo")String orderNo);
 
+    List<PayValveStateInfo> getDeviceValveState(@Param("accountId")BigInteger accountId);
+
 }

+ 24 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/pay/payfee/PayValveStateInfo.java

@@ -0,0 +1,24 @@
+package com.bz.smart_city.dto.pay.payfee;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+/**
+ * @description 阀门状态信息
+ * @auto wangli
+ * @data 2021/1/14 10:56
+ */
+@Data
+public class PayValveStateInfo {
+
+    private String meterCode;
+    private String eleno;
+    private String valveState;
+    private BigDecimal debt;
+    private BigInteger accountId;
+    private BigInteger meterId;
+    private BigInteger customerNo;
+
+}

+ 2 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dto/pay/payfee/PayfeeAccountInfoDto.java

@@ -54,5 +54,7 @@ public class PayfeeAccountInfoDto {
     private String waterPropertyName;
     @ApiModelProperty(value = "水表电子号" )
     private String metereleno;
+    @ApiModelProperty(value = "阀门状态: 0关阀 1开阀  2 无阀,3异常" )
+    private String controlStatus;
 
 }

+ 1 - 0
smart-city-platform/src/main/java/com/bz/smart_city/entity/pay/AmountWaterUsedAmount.java

@@ -120,4 +120,5 @@ public class AmountWaterUsedAmount {
 
 
 
+
 }

+ 2 - 0
smart-city-platform/src/main/java/com/bz/smart_city/entity/pay/PayControlRecord.java

@@ -54,6 +54,8 @@ public class PayControlRecord {
 
     @ApiModelProperty(example = "1",notes = "删除标记",hidden = true)
     private String delFlag;
+    @ApiModelProperty(example = "1",notes = "备注",hidden = true)
+    private String remarks;
     @ApiModelProperty(example = "1",notes = "站点ID",hidden = true)
     private BigInteger siteId;
     @ApiModelProperty(example = "1",notes = "水司ID",hidden = true)

+ 1 - 1
smart-city-platform/src/main/java/com/bz/smart_city/quartz/service/impl/AmountSynDayServiceImpl.java

@@ -47,7 +47,7 @@ public class AmountSynDayServiceImpl implements AmountSynByDayService, Initializ
     @Value("1")
     private BigInteger createBy;
 
-    @Value("http://114.135.61.188:58080/api/syncData/meterReadData")
+    @Value("${amount.syn.day.url}")
     private String amountDaySynUrl;
 
     @Resource

+ 1 - 1
smart-city-platform/src/main/java/com/bz/smart_city/quartz/service/impl/AmountSynServiceImpl.java

@@ -45,7 +45,7 @@ public class AmountSynServiceImpl implements AmountSynService , InitializingBean
     @Value("1")
     private BigInteger createBy;
 
-    @Value("http://114.135.61.188:58080/api/syncData/clearingData")
+    @Value("${amount.syn.url}")
     private String amountSynUrl;
 
     @Resource

+ 88 - 4
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/pay/PayFeeServiceImp.java

@@ -1,8 +1,12 @@
 package com.bz.smart_city.service.impl.pay;
 
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.bz.smart_city.commom.exception.ServiceException;
 import com.bz.smart_city.commom.model.ResultStatus;
+import com.bz.smart_city.commom.util.HttpClientUtils;
 import com.bz.smart_city.commom.util.UserUtil;
 import com.bz.smart_city.commom.util.Util;
 import com.bz.smart_city.dao.pay.*;
@@ -11,7 +15,9 @@ import com.bz.smart_city.dto.pay.*;
 import com.bz.smart_city.dto.pay.payfee.*;
 import com.bz.smart_city.entity.pay.*;
 import com.bz.smart_city.service.pay.PayFeeService;
+import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -33,6 +39,7 @@ import java.util.stream.Collectors;
  * @Version 1.0
  */
 @Service
+@Log4j2
 public class PayFeeServiceImp implements PayFeeService {
 
 
@@ -55,6 +62,11 @@ public class PayFeeServiceImp implements PayFeeService {
     private PayAgenttransactionMapper payAgenttransactionMapper;
     @Resource
     private PayCheckbalanceMapper payCheckbalanceMapper;
+    @Resource
+    private PayControlRecordMapper payControlRecordMapper;
+
+    @Value("${pay.valve.conmond.url}")
+    private String payValveCommondUrl;
 
     /**
      *  柜台缴费
@@ -295,10 +307,20 @@ public class PayFeeServiceImp implements PayFeeService {
             payTransactiondetails.setLastrecreamaing(remaining);//交易后账户余额
         }
         //批量保存交易明细
-        if(transactiondetailsDtoList.size()>0)
+        if(transactiondetailsDtoList.size()>0){
             payTransactiondetailsMapper.batchInsert(transactiondetailsDtoList);
+        }
+        //查询阀门状态,判断是否需要开阀
+        List<PayValveStateInfo> payValveStateInfos = payFeeMapper.getDeviceValveState(new BigInteger(id));
+        for(PayValveStateInfo payValveStateInfo : payValveStateInfos){
+            if(payValveStateInfo.getDebt().compareTo(BigDecimal.ZERO) ==1 && payValveStateInfo.getValveState().equals("0")){
+                Boolean sendValveCommondResult = this.sendValveCommond(payValveStateInfo);
+                if(!sendValveCommondResult){
+//                    result+="; 开阀异常:"+String.format("%.2f", transAmount)+"元";
+                }
+            }
+        }
         //返回批次号
-
         PayfeeResult payfeeResult=new PayfeeResult();
         payfeeResult.setMsg(result);
         payfeeResult.setTransType(0);
@@ -545,11 +567,23 @@ public class PayFeeServiceImp implements PayFeeService {
             payTransactiondetails.setLastrecreamaing(remaining);//交易后账户余额
         }
         //批量保存交易明细
-       if(transactiondetailsDtoList.size()>0)
+       if(transactiondetailsDtoList.size()>0){
          payTransactiondetailsMapper.batchInsert(transactiondetailsDtoList);
+       }
+
+       //查询阀门状态,判断是否需要开阀
+       List<PayValveStateInfo> payValveStateInfos = payFeeMapper.getDeviceValveState(payCustomRechargeDto.getAccountId());
+       for(PayValveStateInfo payValveStateInfo : payValveStateInfos){
+           if(payValveStateInfo.getDebt().compareTo(BigDecimal.ZERO) ==1 && payValveStateInfo.getValveState().equals("0")){
+               Boolean sendValveCommondResult = this.sendValveCommond(payValveStateInfo);
+               if(!sendValveCommondResult){
+//                    result+="; 开阀异常:"+String.format("%.2f", transAmount)+"元";
+               }
+           }
+       }
+
         //返回批次号
        return  payseriesno;
-
     }
 
     /*
@@ -1202,6 +1236,17 @@ public class PayFeeServiceImp implements PayFeeService {
         payAgenttransaction.setRemarks("银行代缴充值");
         payAgenttransaction.setDelFlag("0");
         payAgenttransactionMapper.insertAgenttransaction(payAgenttransaction);
+
+        //查询阀门状态,判断是否需要开阀
+        List<PayValveStateInfo> payValveStateInfos = payFeeMapper.getDeviceValveState(payCustomRechargeDto.getAccountId());
+        for(PayValveStateInfo payValveStateInfo : payValveStateInfos){
+            if(payValveStateInfo.getDebt().compareTo(BigDecimal.ZERO) ==1 && payValveStateInfo.getValveState().equals("0")){
+                Boolean sendValveCommondResult = this.sendValveCommond(payValveStateInfo);
+                if(!sendValveCommondResult){    //关阀失败
+//                    result+="; 开阀异常:"+String.format("%.2f", transAmount)+"元";
+                }
+            }
+        }
         return new BankPayfeeMsg("9999","交易成功");
     }
 
@@ -1291,4 +1336,43 @@ public class PayFeeServiceImp implements PayFeeService {
         return new BankCheckBillsMsg("9999",
                 "对账完成,对账总数:"+bankCheckBillParm.getTotalCount()+",对账成功数:"+payCheckbalances.size(),bankCheckBillList);
     }
+
+    //缴费开阀
+    public Boolean sendValveCommond(PayValveStateInfo payValveStateInfo){
+        LoginUser loginUser =UserUtil.getCurrentUser();
+        JSONObject parmJson= new JSONObject();
+        parmJson.put("meterNo",payValveStateInfo.getMeterCode());
+        parmJson.put("type",1);    //1开0关
+        parmJson.put("customerNo",payValveStateInfo.getCustomerNo());
+        String context=parmJson.toString();
+        try {
+            String result= HttpClientUtils.doPostWithJson(payValveCommondUrl,context);
+            log.info("开关阀请求结果"+result);
+            JSONObject jsonObject= JSON.parseObject(result);
+            Integer status= jsonObject.getInteger("status");
+            if(status .equals("000000")){   //返回正常
+                //添加阀控记录
+                PayControlRecord payControlRecord = new PayControlRecord();
+                payControlRecord.setAccountId(payValveStateInfo.getAccountId());
+                payControlRecord.setMeterId(payValveStateInfo.getMeterId());
+                payControlRecord.setRemarks("缴费开阀");
+                payControlRecord.setResult(0);//进行中
+                payControlRecord.setState(0);//状态为关阀
+                payControlRecord.setType(1);//开阀操作
+
+                payControlRecord.setCreateBy(BigInteger.valueOf(loginUser.getId()));
+                payControlRecord.setCreateDate(LocalDateTime.now());
+                payControlRecord.setUpdateBy(BigInteger.valueOf(loginUser.getId()));
+                payControlRecord.setUpdateDate(LocalDateTime.now());
+                payControlRecord.setDelFlag("0");
+                payControlRecord.setCustomerId(BigInteger.valueOf(loginUser.getCustomerId()));
+                payControlRecord.setSiteId(BigInteger.valueOf(loginUser.getSiteId()));
+                payControlRecordMapper.add(payControlRecord);
+                return true;
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return false;
+    }
 }

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

@@ -127,4 +127,6 @@ public interface PayFeeService {
 
     BankCheckBillsMsg checkBill(PayPayAgentbranch payPayAgentbranch, BankCheckBillParm bankCheckBillParm );
 
+    Boolean sendValveCommond(PayValveStateInfo payValveStateInfo );
+
 }

+ 6 - 0
smart-city-platform/src/main/resources/application-188sit.properties

@@ -136,3 +136,9 @@ invoice.query.url=http://nnfpbox.nuonuocs.cn/shop/buyer/allow/ecOd/queryElectric
 #银行代收客户id
 payfee.bank.customerId=47
 
+#每天水量同步接口
+amount.syn.day.url=http://114.135.61.188:58080/api/syncData/meterReadData
+#水量同步接口
+amount.syn.url=http://114.135.61.188:58080/api/syncData/clearingData
+
+pay.valve.conmond.url = http://ip:port/platform/sendCommond 

+ 13 - 0
smart-city-platform/src/main/resources/application-dev.properties

@@ -111,3 +111,16 @@ Sync.Data.Url=http://114.135.61.188:58080
 
 #银行代收客户id
 payfee.bank.customerId=47
+
+#每天水量同步接口
+amount.syn.day.url=http://114.135.61.188:58080/api/syncData/meterReadData
+#水量同步接口
+amount.syn.url=http://114.135.61.188:58080/api/syncData/clearingData
+
+pay.valve.conmond.url = http://ip:port/platform/sendCommond 
+
+
+
+
+
+

+ 5 - 0
smart-city-platform/src/main/resources/application-prd.properties

@@ -172,4 +172,9 @@ Sync.Data.Url=http://114.135.61.188:58080
 
 #银行代收客户id
 payfee.bank.customerId=47
+#每天水量同步接口
+amount.syn.day.url=http://114.135.61.188:58080/api/syncData/meterReadData
+#水量同步接口
+amount.syn.url=http://114.135.61.188:58080/api/syncData/clearingData
 
+pay.valve.conmond.url = http://ip:port/platform/sendCommond 

+ 7 - 0
smart-city-platform/src/main/resources/application-sit.properties

@@ -141,3 +141,10 @@ Sync.Data.Url=http://114.135.61.188:58080
 
 #银行代收客户id
 payfee.bank.customerId=47
+
+#每天水量同步接口
+amount.syn.day.url=http://114.135.61.188:58080/api/syncData/meterReadData
+#水量同步接口
+amount.syn.url=http://114.135.61.188:58080/api/syncData/clearingData
+
+pay.valve.conmond.url = http://ip:port/platform/sendCommond 

+ 7 - 0
smart-city-platform/src/main/resources/application-uat.properties

@@ -145,3 +145,10 @@ invoice.query.url=http://nnfpbox.nuonuocs.cn/shop/buyer/allow/ecOd/queryElectric
 
 #银行代收客户id
 payfee.bank.customerId=47
+
+#每天水量同步接口
+amount.syn.day.url=http://114.135.61.188:58080/api/syncData/meterReadData
+#水量同步接口
+amount.syn.url=http://114.135.61.188:58080/api/syncData/clearingData
+
+pay.valve.conmond.url = http://ip:port/platform/sendCommond 

+ 20 - 2
smart-city-platform/src/main/resources/mapper/pay/payFeeMapper.xml

@@ -113,11 +113,12 @@
 
             p.id as "waterPropertyId",
             p.name as "waterPropertyName",
-            device.water_meter_no as "metereleno"
+            device.water_meter_no as "metereleno",
+            device.control_status as "controlStatus"
         from pay_base_customerandmeterrela c
         left join pay_base_account a on c.account_id=a.id
         left join pay_base_waterproperty p on c.waterProperty_id=p.id
-        inner join sc_device device on device.metercode = c.metercode  and device.customer_id =#{customerId}
+        inner join sc_device device on c.watermeter_id=device.id  and device.customer_id =#{customerId}
         <where>
             c.businessstate=1 and c.site_id=#{siteId}
             <if test="id != null and id != ''">
@@ -399,4 +400,21 @@
         where  a.order_no = #{orderNo}
 
     </select>
+
+    <select id="getDeviceValveState" resultType="com.bz.smart_city.dto.pay.payfee.PayValveStateInfo">
+        select
+            d.account_id as "accountId"
+            ,d.id as "meterId"
+            ,d.water_meter_no as "eleno"
+            ,ifnull(d.water_meter_no,d.metercode )as "metercode"
+            ,d.control_status as "valveState"
+            ,(select sum(debt) from pay_pay_receivable where debt>0 and account_id=#{accountId}) as "debt"
+            ,cs.customer_no as "customerNo"
+        from sc_device d
+        left join pay_base_customerandmeterrela c on c.watermeter_id=d.id
+        left join sc_customer cs on cs.id=d.customer_id
+        where c.account_id=#{accountId}
+
+    </select>
+
 </mapper>