作者 shenhailong

定时任务 电表充值接口 会因为 网络问题失败 添加定时任务定期自动充值

正在显示 60 个修改的文件 包含 120 行增加4475 行删除

要显示太多修改。

为保证性能只显示 60 of 60+ 个文件。

... ... @@ -5,7 +5,7 @@ docker:
server:
ip: 192.168.1.63
server:
port: 10004
port: 10005
# servlet:
# context-path: ${SERVER_CONTEXTPATH:}
spring:
... ... @@ -37,7 +37,7 @@ spring:
static-locations: classpath:/META-INF/resources/,classpath:/static,classpath:/resources/,classpath:/public/,file:${web.upload-path}
application:
name: EMPT-LOCATION
name: EMPT-LOCATION-TIMED-TASK
jackson:
serialization:
... ... @@ -151,23 +151,6 @@ logging:
jwt:
max-alive: 300
#自定义配置
custom:
#进港放行回执读取目录
receptDirectory: /Users/mrz/Downloads/rdp_temp/logs/回执报文样例/20191104
#回执解析成功后的备份目录
receptBakDir: /Users/mrz/Downloads/rdp_temp/logs/success
#解析错误报文的备份目录
errBakDir: /Users/mrz/Downloads/rdp_temp/logs/error
#回执转发目录
transmitDir: /Users/mrz/Downloads/rdp_temp/logs/transmit
#匹配技术回执正则
delTechnologyReceptMatch: CN_MT(.*)_1P0_460470678920X_(.*).xml
devops:
dir:
singlewindow-tcs-recept: D:\TCSSingleWindow\recive
tianbo-tcs-recept: D:\Data\Receive
cfps-subscribe-dir: D:\系统部署\imf_Warehouse_reader\xmlFromImf
#10079
eeid:
ipAddress: 192.168.50.23
... ... @@ -182,26 +165,5 @@ eeUrl:
#获取设备跟公寓信息
# getRoomAndDeviceUrl: "http://10.5.10.102:8000/api/emcs/getRoomAndDevice"
getRoomAndDeviceUrl: "http://192.168.1.7:18080/api/emcs/getRoomAndDevice"
payInfo:
#商户代码
merchantid: "105001453995827"
#商户柜台代码
posid: "031575220"
#分行代码
branchid: "410000000"
#交易码
txcode: "530550"
#应柜台的公钥后30位
pub32tr2: "8578d1cd9340dba556126a71020111"
# #商户代码
# merchantid: "105000045820502"
# #商户柜台代码
# posid: "049347762"
# #分行代码
# branchid: "410000000"
# #交易码
# txcode: "530550"
# #应柜台的公钥后30位
# pub32tr2: "1c99bca545a2baf6bed0637b020111"
... ...
{
"AttachStdin" : true,
"OpenStdin" : true,
"Image" : "",
"Volumes" : { },
"ExposedPorts" : { },
"HostConfig" : {
"Binds" : [ ],
"NetworkMode" : "host"
"AttachStdin": true,
"OpenStdin": true,
"Image": "",
"Volumes": {},
"ExposedPorts": {},
"HostConfig": {
"Binds": [],
"NetworkMode": "host"
},
"_comment" : ""
"_comment": ""
}
\ No newline at end of file
... ...
Manifest-Version: 1.0
Main-Class: com.sunyo.energy.location.BootApplication
Class-Path: rxnetty-servo-0.4.9.jar xstream-1.4.11.1.jar spring-cloud-st
arter-netflix-archaius-2.1.5.BUILD-SNAPSHOT.jar commons-codec-1.13.jar
spring-aop-5.2.0.RELEASE.jar spring-context-5.2.0.RELEASE.jar spring-cl
oud-netflix-archaius-2.1.5.BUILD-SNAPSHOT.jar fastjson-1.2.28.jar ribbo
n-core-2.3.0.jar json-lib-2.4-jdk15.jar xpp3_min-1.1.4c.jar log4j-api-2
.12.1.jar spring-boot-starter-tomcat-2.2.0.BUILD-SNAPSHOT.jar jackson-c
ore-2.10.0.jar netflix-statistics-0.1.1.jar spring-cloud-starter-2.1.5.
BUILD-SNAPSHOT.jar commons-httpclient-3.1.jar snakeyaml-1.25.jar ribbon
-loadbalancer-2.3.0.jar slf4j-api-1.7.28.jar jersey-apache-client4-1.19
.1.jar springfox-swagger2-2.9.2.jar tomcat-embed-el-9.0.27.jar eureka-c
lient-1.9.13.jar logback-core-1.2.3.jar aopalliance-1.0.jar springfox-s
chema-2.9.2.jar jakarta.annotation-api-1.3.5.jar spring-plugin-metadata
-1.2.0.RELEASE.jar attoparser-2.0.5.RELEASE.jar jakarta.validation-api-
2.0.1.jar HikariCP-3.4.1.jar httpcore-4.4.12.jar spring-boot-starter-va
lidation-2.2.0.BUILD-SNAPSHOT.jar eureka-core-1.9.13.jar thymeleaf-3.0.
11.RELEASE.jar ribbon-transport-2.3.0.jar spring-tx-5.2.0.RELEASE.jar s
wagger-annotations-1.5.20.jar spring-beans-5.2.0.RELEASE.jar druid-1.1.
9.jar springfox-spring-web-2.9.2.jar spring-boot-starter-websocket-2.2.
0.BUILD-SNAPSHOT.jar lombok-1.18.10.jar ribbon-eureka-2.3.0.jar jackson
-datatype-jsr310-2.10.0.jar spring-security-crypto-5.2.0.RELEASE.jar st
ringtemplate-3.2.1.jar jackson-datatype-jdk8-2.10.0.jar joda-time-2.10.
4.jar hutool-log-5.2.5.jar commons-jxpath-1.3.jar spring-cloud-netflix-
eureka-client-2.1.5.BUILD-SNAPSHOT.jar jsqlparser-1.0.jar commons-confi
guration-1.8.jar HdrHistogram-2.1.9.jar antlr-runtime-3.4.jar guava-20.
0.jar logback-classic-1.2.3.jar spring-cloud-starter-netflix-eureka-cli
ent-2.1.5.BUILD-SNAPSHOT.jar spring-boot-starter-web-2.2.0.BUILD-SNAPSH
OT.jar swagger-models-1.5.20.jar jsr311-api-1.1.1.jar spring-boot-start
er-jdbc-2.2.0.BUILD-20191016.163441-713.jar netflix-infix-0.3.0.jar bcp
rov-jdk15on-1.64.jar mybatis-3.4.6.jar spring-cloud-context-2.1.5.BUILD
-SNAPSHOT.jar netflix-eventbus-0.3.0.jar hystrix-core-1.5.18.jar xmlpul
l-1.1.3.1.jar commons-math-2.2.jar spring-boot-2.2.0.BUILD-SNAPSHOT.jar
aspectjweaver-1.9.4.jar thymeleaf-extras-java8time-3.0.4.RELEASE.jar s
pring-websocket-5.2.0.RELEASE.jar thymeleaf-spring5-3.0.11.RELEASE.jar
jboss-logging-3.4.1.Final.jar spring-boot-starter-aop-2.2.0.BUILD-SNAPS
HOT.jar spring-boot-starter-2.2.0.BUILD-SNAPSHOT.jar ribbon-2.3.0.jar s
pring-cloud-commons-2.1.5.BUILD-SNAPSHOT.jar json-20190722.jar spring-c
loud-starter-netflix-ribbon-2.1.5.BUILD-SNAPSHOT.jar spring-messaging-5
.2.0.RELEASE.jar javax.inject-1.jar byte-buddy-1.10.1.jar spring-cloud-
netflix-ribbon-2.1.5.BUILD-SNAPSHOT.jar log4j-to-slf4j-2.12.1.jar sprin
g-security-rsa-1.0.9.RELEASE.jar mybatis-spring-2.0.3.jar commons-lang-
2.5.jar stax-api-1.0.1.jar springfox-swagger-common-2.9.2.jar spring-co
re-5.2.0.RELEASE.jar commons-logging-1.0.4.jar ezmorph-1.0.6.jar jersey
-client-1.19.1.jar spring-jdbc-5.2.0.RELEASE.jar jettison-1.3.7.jar map
struct-1.2.0.Final.jar spring-cloud-netflix-hystrix-2.1.5.BUILD-SNAPSHO
T.jar jackson-databind-2.10.0.jar stax2-api-4.2.jar spring-web-5.2.0.RE
LEASE.jar spring-boot-starter-json-2.2.0.BUILD-SNAPSHOT.jar hutool-core
-5.2.5.jar ribbon-httpclient-2.3.0.jar spring-boot-autoconfigure-2.2.0.
BUILD-SNAPSHOT.jar spring-jcl-5.2.0.RELEASE.jar gson-2.8.6.jar spring-p
lugin-core-1.2.0.RELEASE.jar woodstox-core-5.2.1.jar tomcat-embed-webso
cket-9.0.27.jar pagehelper-spring-boot-starter-1.2.5.jar spring-boot-st
arter-thymeleaf-2.2.0.BUILD-SNAPSHOT.jar archaius-core-0.7.6.jar spring
-expression-5.2.0.RELEASE.jar hibernate-validator-6.0.17.Final.jar myba
tis-spring-boot-starter-2.1.1.jar spring-webmvc-5.2.0.RELEASE.jar rxnet
ty-0.4.9.jar guice-4.1.0.jar springfox-spi-2.9.2.jar jersey-core-1.19.1
.jar rxjava-1.3.8.jar classmate-1.5.0.jar commons-collections-3.2.1.jar
rxnetty-contexts-0.4.9.jar tomcat-embed-core-9.0.27.jar jackson-annota
tions-2.10.0.jar pagehelper-5.1.4.jar pagehelper-spring-boot-autoconfig
ure-1.2.5.jar jul-to-slf4j-1.7.28.jar netflix-commons-util-0.3.0.jar se
rvo-core-0.12.21.jar spring-boot-starter-logging-2.2.0.BUILD-SNAPSHOT.j
ar httpclient-4.5.12.jar springfox-swagger-ui-2.9.2.jar mybatis-spring-
boot-autoconfigure-2.1.1.jar unbescape-1.1.6.RELEASE.jar springfox-core
-2.9.2.jar bcpkix-jdk15on-1.64.jar antlr-2.7.7.jar commons-beanutils-1.
8.0.jar mysql-connector-java-8.0.18.jar jackson-module-parameter-names-
2.10.0.jar
... ...
package com.sunyo.energy.location.controller;
import com.github.pagehelper.PageInfo;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.model.ElectricityInfo;
import com.sunyo.energy.location.service.EeInfoService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import sun.jvm.hotspot.debugger.Page;
import java.util.List;
/**
* @author shenhailong
* <p>
* 2020/6/5/10:44
*/
@RequestMapping(value = "/eeInfo")
@Component
public class EeInfoController {
@Autowired
EeInfoService eeInfoService;
@ApiOperation(value = "查询电表充值失败信息")
@RequestMapping("/list")
@ResponseBody
public PageInfo<ElectricityInfo> list(@RequestParam(value = "pageSize", required = false, defaultValue = "1") int pageSize,
@RequestParam(value = "pageNum", required = false, defaultValue = "5") int pageNum,
@RequestParam(value = "deviceId", required = false) String deviceId) {
PageInfo<ElectricityInfo> eeInfo = eeInfoService.getEeInfo(pageSize, pageNum, deviceId);
return eeInfo;
}
}
package com.sunyo.energy.location.controller;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.model.ElectricityBalanceThree;
import com.sunyo.energy.location.model.ElectricityMeter;
import com.sunyo.energy.location.model.WaterElectricityParameter;
import com.sunyo.energy.location.service.ElectricityMeterService;
import com.sunyo.energy.location.service.WaterElectricityParameterService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping("/electricity_meter")
@Controller
public class ElectricityParameterController {
@Autowired
private WaterElectricityParameterService waterElectricityParameterService;
/**
* 电表处理远程访问 返回值信息
*/
@Autowired
ElectricityMeterService electricityMeterService;
@ApiOperation(value = "电表参数配置")
@RequestMapping("/add")
@ResponseBody
public ResultJson eetParam(ResultJson resultJson, WaterElectricityParameter waterElectricityParameter) {
try {
if (waterElectricityParameterService.countOne(waterElectricityParameter.getEeId()) > 0) {
resultJson.setCode("200");
return resultJson;
} else {
int i = waterElectricityParameterService.insertSelective(waterElectricityParameter);
if (i > 0) {
resultJson.setCode("200");
resultJson.setMsg("添加成功");
return resultJson;
} else {
resultJson.setCode("500");
resultJson.setMsg("网络异常");
return resultJson;
}
}
} catch (Exception e) {
e.printStackTrace();
resultJson.setCode("500");
resultJson.setMsg("网络异常");
return resultJson;
}
}
@ApiOperation(value = "电表参数查询")
@RequestMapping("/getEEModel")
@ResponseBody
public WaterElectricityParameter getEEModel(@RequestParam(value = "eeId", required = false) String eeId) {
WaterElectricityParameter oneElectricity = waterElectricityParameterService.findOneElectricity(eeId);
System.out.println("111");
return oneElectricity;
}
@ApiOperation(value = "电表参数编辑")
@RequestMapping("/edit")
@ResponseBody
public ResultJson edit(ResultJson resultJson, WaterElectricityParameter waterElectricityParameter) {
try {
if (waterElectricityParameterService.updateByPrimaryKeySelective(waterElectricityParameter) > 0) {
resultJson.setCode("200");
return resultJson;
} else {
resultJson.setCode("500");
resultJson.setMsg("网络异常");
return resultJson;
}
} catch (Exception e) {
e.printStackTrace();
resultJson.setCode("500");
resultJson.setMsg("网络异常");
return resultJson;
}
}
/**
* 获取电表实施数据
*
* @param eeId
* @return
*/
@ApiOperation(value = "电表实时信息查询")
@RequestMapping(value = "/getEnergyInfoForRealTime")
@ResponseBody
public ElectricityMeter getEnergyInfoForRealTime(@RequestParam(value = "eeId", required = false) String eeId) {
try {
ElectricityMeter energyInfoForRealTime = electricityMeterService.getEnergyInfoForRealTime(eeId);
return energyInfoForRealTime;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.sunyo.energy.location.controller;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.model.Location;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/location")
public class LocationController {
@Autowired
private LocationMapper locationMapper;
@ApiOperation(value = "查询楼层")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ResultJson startActivityDemo(@RequestParam(value = "pageNum", required = false, defaultValue = "1")
int pageNum,
@RequestParam(value = "pageSize", required = false, defaultValue = "5")
int pageSize,
@RequestParam(value = "processName", required = false)
String adrname,
@RequestParam(value = "parent", required = false)
int parent) {
Page<Location> page = PageHelper.startPage(pageNum, pageSize);
List<Location> list = null;
if (StringUtils.isEmpty(adrname)) {
list = locationMapper.selectAll(parent);
if (parent == 0) {
Location location = list.get(0);
List<Location> locationsList = locationMapper.selectAll(location.getId());
for (Location loc : list) {
loc.setChildren(locationsList);
}
}
} else {
list = locationMapper.selectAllAdrName(adrname);
}
PageInfo<Location> result = new PageInfo<Location>(list);
return new ResultJson("200", "success", result);
}
@ApiOperation(value = "新增楼层")
@PostMapping(value = "/add")
public ResultJson addLocation(@RequestParam("adrName") String adrName,
@RequestParam("parent") Integer parent,
@RequestParam("type") Integer type) {
ResultJson resultJson = new ResultJson();
Location location = new Location();
Map map = new HashMap();
map.put("adrName", adrName);
map.put("parent", parent);
if (locationMapper.countAdrName(map) > 0) {
resultJson.setCode("201");
} else {
location.setParent(parent);
location.setType(type);
location.setAdrname(adrName);
if (locationMapper.insertSelective(location) > 0) {
resultJson.setCode("200");
} else {
resultJson.setCode("202");
}
}
return resultJson;
}
@ApiOperation(value = "删除楼层")
@DeleteMapping(value = "/del")
public ResultJson delLocation(@RequestBody Location location) {
ResultJson resultJson = new ResultJson();
if (locationMapper.countParent(location.getId()) > 0) {
resultJson.setCode("201");
return resultJson;
} else {
if (locationMapper.deleteByPrimaryKey(location.getId()) > 0) {
resultJson.setCode("200");
return resultJson;
} else {
resultJson.setCode("201");
return resultJson;
}
}
}
@ApiOperation(value = "修改楼层")
@PutMapping(value = "/edit")
public ResultJson editLocation(@RequestBody Location location) {
ResultJson resultJson = new ResultJson();
if (locationMapper.updateByPrimaryKeySelective(location) > 0) {
resultJson.setCode("200");
} else {
resultJson.setCode("201");
}
return resultJson;
}
}
package com.sunyo.energy.location.controller;
import com.github.pagehelper.PageInfo;
import com.google.gson.internal.$Gson$Preconditions;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.model.Location;
import com.sunyo.energy.location.model.PayRecords;
import com.sunyo.energy.location.service.ElectricityMeterService;
import com.sunyo.energy.location.service.PayOrderService;
import com.sunyo.energy.location.service.WaterMeterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
/**
* Created by XYH on 2019/12/16.
* 订单查询,新增,更新,删除
*/
@Api(description = "订单管理")
@RestController
@RequestMapping("/order")
public class PayOrderController {
@Autowired
PayOrderService payOrderService;
@Autowired
PayRecordsMapper payRecordsMapper;
@Autowired
ElectricityMeterService electricityMeterService;
@Autowired
private WaterMeterService waterMeterService;
@Autowired
private LocationMapper locationMapper;
@ApiOperation(value = "查询缴费订单")
@RequestMapping("/list")
public PageInfo<PayRecords> getOrder(@RequestParam(value = "pageSize", required = false, defaultValue = "1") int pageSize,
@RequestParam(value = "pageNum", required = false, defaultValue = "5") int pageNum,
@RequestParam(value = "orderNumber", required = false) String orderNumber,
@RequestParam(value = "payTime", required = false) String payTime,
@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "payType", required = false) String payType) {
PageInfo<PayRecords> order = payOrderService.getOrder(pageSize, pageNum, orderNumber, payTime, username, payType);
return order;
}
@ApiOperation(value = "新增缴费订单")
@PostMapping("/add")
public ResultJson addOrder(@RequestBody PayRecords records) {
int mgs = 0;
int result = payOrderService.addOrder(records);
if (result > 0) {
mgs = 1;
}
return mgs == 1 ? new ResultJson("200", "新增订单成功") : new ResultJson("500", "新增订单失败");
}
@ApiOperation(value = "更新缴费订单")
@PutMapping("/edi")
public ResultJson ediOrder(@RequestBody PayRecords records) {
int mgs = 0;
int result = payOrderService.ediOrder(records);
if (result > 0) {
mgs = 1;
}
return mgs == 1 ? new ResultJson("200", "订单信息更新成功") : new ResultJson("500", "订单信息更新失败");
}
@ApiOperation(value = "删除缴费订单")
@DeleteMapping("/del")
public ResultJson delOrder(@RequestBody PayRecords payRecords) {
int mgs = 0;
int result = payOrderService.delOrder(payRecords);
if (result > 0) {
mgs = 1;
}
return mgs == 1 ? new ResultJson("200", "订单信息移出成功") : new ResultJson("500", "订单信息删除失败");
}
@ApiOperation(value = "处理失败订单充值信息")
@PostMapping("/defeatedOrder")
public ResultJson defeatedOrder(@RequestBody PayRecords payRecords){
/**
* 查询水电表编号
*/
Location location = locationMapper.waterId_eleId(payRecords.getPaylocationname());
/**
* 支付状态 充值状态满足条件进入否则不操作
*/
if (payRecords.getPaystatus() == true && "0".equals(payRecords.getReamke3())){
/**
* true 为电 false 为水
*/
if (payRecords.getPaytype()){
int i = electricityMeterService.rechargeDevices(location.getEeid(), String.valueOf(payRecords.getPayfees()),
"0", payRecords.getOrdernumber());
if (i == 1){
payRecords.setReamke3("1");
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
return i1 == 1? new ResultJson("200", "电费充值成功"): new ResultJson("201", "电费充值失败");
}else {
return new ResultJson("201", "电费充值失败");
}
}else {
ResultJson resultJson = waterMeterService.payWater(String.valueOf(payRecords.getPayfees()), location.getWmid());
if ("200".equals(resultJson.getCode())){
payRecords.setReamke3("1");
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
return i1 == 1? new ResultJson("200", "水费充值成功"): new ResultJson("201", "水费充值失败");
}else {
resultJson.setCode("201");
return resultJson;
}
}
}else {
return new ResultJson("201", "充值失败");
}
}
}
package com.sunyo.energy.location.controller;
import com.alibaba.fastjson.JSONObject;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.dao.PayResponseMapper;
import com.sunyo.energy.location.model.PayRecords;
import com.sunyo.energy.location.model.PayResponse;
import com.sunyo.energy.location.service.ElectricityMeterService;
import com.sunyo.energy.location.service.WaterMeterService;
import com.sunyo.energy.location.websocket.WebSocketServer;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Date;
import java.util.UUID;
@Slf4j
@RequestMapping("/payCode")
public class PayRseponeController {
@Autowired
private PayResponseMapper payResponseMapperl;
@Autowired
private WaterMeterService waterMeterService;
@Autowired
private PayRecordsMapper payRecordsMapper;
@Autowired
ElectricityMeterService electricityMeterService;
/**
* 接受字段
*
* @param POSID 商户柜台代码
* @param BRANCHID 分行代码
* @param ORDERID 定单号
* @param PAYMENT 付款金额
* @param CURCODE 币种
* @param REMARK1 备注一
* @param REMARK2 备注二
* @param ACC_TYPE 账户类型
* @param SUCCESS 成功标志
* @param TYPE 接口类型
* @param REFERER Referer信息
* @param CLIENTIP 客户端IP
* @param ACCDATE 系统记账日期
* @param USRMSG 支付账户信息
* @param USRINFO 客户加密信息
* @param PAYTYPE 支付方式
* @param SIGN 数字签名
*/
@RequestMapping(value = "/payResponse")
@ApiOperation(value = "支付回执是否成功")
@ResponseBody
public ResultJson payCodeRsepone(@RequestParam(value = "POSID", required = false) String POSID,
@RequestParam(value = "BRANCHID", required = false) String BRANCHID,
@RequestParam(value = "ORDERID", required = false) String ORDERID,
@RequestParam(value = "PAYMENT", required = false) String PAYMENT,
@RequestParam(value = "CURCODE", required = false) String CURCODE,
@RequestParam(value = "REMARK1", required = false) String REMARK1,
@RequestParam(value = "REMARK2", required = false) String REMARK2,
@RequestParam(value = "ACC_TYPE", required = false) String ACC_TYPE,
@RequestParam(value = "SUCCESS", required = false) String SUCCESS,
@RequestParam(value = "TYPE", required = false) String TYPE,
@RequestParam(value = "REFERER", required = false) String REFERER,
@RequestParam(value = "CLIENTIP", required = false) String CLIENTIP,
@RequestParam(value = "ACCDATE", required = false) String ACCDATE,
@RequestParam(value = "USRMSG", required = false) String USRMSG,
@RequestParam(value = "USRINFO", required = false) String USRINFO,
@RequestParam(value = "PAYTYPE", required = false) String PAYTYPE,
@RequestParam(value = "SIGN", required = false) String SIGN){
PayResponse payResponse = new PayResponse();
payResponse.setId(UUID.randomUUID().toString());
payResponse.setPosid(POSID);
payResponse.setBranchid(BRANCHID);
payResponse.setOrderid(ORDERID);
payResponse.setPayment(new BigDecimal(PAYMENT));
payResponse.setCurcode(CURCODE);
payResponse.setRemark1(REMARK1);
payResponse.setRemark2(REMARK2);
payResponse.setAccType(ACC_TYPE);
payResponse.setSuccess(SUCCESS);
payResponse.setType(TYPE);
payResponse.setReferer(REFERER);
payResponse.setClientip(CLIENTIP);
payResponse.setAccdate(new Date());
payResponse.setUsrmsg(USRMSG);
payResponse.setUsrinfo(USRINFO);
payResponse.setPaytype(PAYTYPE);
payResponse.setSign(SIGN);
try {
int msg = 0;
int i = payResponseMapperl.insertSelective(payResponse);
if (i > 0) {
msg = 1;
PayRecords payRecords = new PayRecords();
// 支付类型
if (!"".equals(ACC_TYPE)) {
if ("WX".equals(ACC_TYPE)) {
payRecords.setPayfesstype(false);
} else {
payRecords.setPayfesstype(true);
}
}
if ("Y".equals(SUCCESS)) {
payRecords.setOrdernumber(ORDERID);
payRecords.setReamke3("1");
} else {
payRecords.setOrdernumber(ORDERID);
payRecords.setReamke3("0");
}
// 查询是水还是电
boolean selectType = payRecordsMapper.selectType(ORDERID);
if (selectType) {
// 查询该订单设备编号
String eeId = payRecordsMapper.findOrderNumber(ORDERID);
if (!"".equals(eeId)) {
// 通知充值电费
int eeResult = electricityMeterService.rechargeDevices(eeId, PAYMENT, "0", ORDERID);
if (eeResult > 0) {
// 修改订单状态
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
if (i1 > 0) {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
webSocketServer.broadcast(jsonObject.toJSONString());
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "S");
webSocketServer.broadcast(jsonObject.toJSONString());
}
}
} else {
// 查询该订单设备编号
String wmId = payRecordsMapper.findOrderNumber(ORDERID);
// 通知充值水费
if (!"".equals(wmId)) {
ResultJson resultJson = waterMeterService.payWater(PAYMENT, wmId);
if ("200".equals(resultJson.getCode())) {
// 修改订单状态
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
if (i1 > 0) {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
webSocketServer.broadcast(jsonObject.toJSONString());
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
}
}
}
return i == 1 ? new ResultJson("200", "支付回执信息接受成功") : new ResultJson("500", "支付回执信息接受失败");
}catch (Exception e){
e.printStackTrace();
log.info("系统异常--------------------");
return null;
}
}
}
package com.sunyo.energy.location.controller;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.service.LocationService;
import com.sunyo.energy.location.service.WaterMeterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Api(description = "用户支付管理")
@RestController
@RequestMapping("/userPayOrder")
public class UserPayController {
@Autowired
private LocationService locationService;
@Autowired
private WaterMeterService waterMeterService;
@Autowired
private LocationMapper locationMapper;
@ApiOperation(value = "查看缴费房间")
@RequestMapping("/list")
public List userPayList(@RequestParam(value = "roomNumber", required = false) String roomNumber) {
return locationService.userPayList(roomNumber);
}
@ApiOperation(value = "充值水费")
@PostMapping("/add")
public ResultJson payWater(@RequestParam(value = "payFees", required = false) String payFees,
@RequestParam(value = "wmId", required = false) String wmId) {
return waterMeterService.payWater(payFees, wmId);
}
@ApiOperation(value = "请求返回二维码")
@PostMapping("/qrCode")
public ResultJson qrCode(@RequestParam(value = "payFees", required = false) String payFees,
@RequestParam(value = "wmId", required = false) String wmId,
@RequestParam(value = "userId", required = false) String userId,
@RequestParam(value = "realName", required = false) String realName,
@RequestParam(value = "deviceId", required = false) String eeId) throws UnsupportedEncodingException {
ResultJson resultJson = waterMeterService.qrCode(payFees, wmId, userId, realName, eeId);
return resultJson;
}
@ApiOperation(value = "钉钉小程序请求水电返回数据")
@PostMapping("/mincData")
public Map<String, Object> mincData(@RequestParam(value = "loginName", required = false) String loginName) {
Map<String, Object> map = new HashMap<>();
/**
* 查询该账号所绑定的水电编号
*/
return map;
}
}
package com.sunyo.energy.location.controller;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.model.WaterMeter;
import com.sunyo.energy.location.service.WaterMeterService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/water_meter")
public class WaterMeterController {
@Autowired
private WaterMeterService waterMeterService;
@ApiOperation(value = "水表单个实施信息查询")
@RequestMapping("/findRealTime")
@ResponseBody
public WaterMeter findRealTime(@RequestParam(value = "wmId", required = false) String wmId) {
return waterMeterService.findRealTime(wmId);
}
@ApiOperation(value = "查询所有水表编号")
@RequestMapping("/waterMeterAll")
@ResponseBody
public ResultJson waterMeterAll(@RequestParam(value = "wmId", required = false) String wmId) {
return waterMeterService.waterMeterAll(wmId);
}
@RequestMapping("/realTime")
@ResponseBody
public int realTime() {
return waterMeterService.realTime();
}
}
package com.sunyo.energy.location.controller.response;
import com.alibaba.fastjson.JSON;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* 统一拦截response接口返回数据
*/
//@ControllerAdvice
public class RestControllerResponseAdvice implements ResponseBodyAdvice<Object> {
/**
* //判断支持的类型,因为我们定义的BaseResponseVo 里面的data可能是任何类型,这里就不判断统一放过
* 如果你想对执行的返回体进行操作,可将上方的Object换成你自己的类型
*
* @param returnType
* @param converterType
* @return
*/
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
// 对body进行封装处理
if (body instanceof String) {
String msg = (String) body;
ResultJson resultJson = new ResultJson("-1", msg);
// 因为在controller层中返回的是String类型,这边如果换成ResultJson的话,会导致StringMessageConverter方法类型转换异常,所以这边将对象转成字符串
return JSON.toJSONString(resultJson);
} else if (body instanceof Object) {
Object data = (Object) body;
ResultJson resultJson = new ResultJson(data);
return resultJson;
}
return body;
}
}
package com.sunyo.energy.location.controller.response;
import lombok.Data;
import java.io.Serializable;
@Data
public class ResultJson<T> implements Serializable {
private static final long serialVersionUID = 1L;
// 状态码 正确为200
private String code = "200";
// 描述
private String msg = "";
private String error;
// 返回对象
private T data;
//返回的JWT
private String jwtToken;
public ResultJson() {
}
public ResultJson(String code) {
this.code = code;
}
public ResultJson(String code, String msg) {
this.code = code;
this.msg = msg;
}
public ResultJson(T data) {
this.data = data;
}
public ResultJson(String code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
}
package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.Location;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface LocationMapper {
int deleteByPrimaryKey(Integer id);
int insert(Location record);
int insertSelective(Location record);
List<Location> selectByPrimaryKey(Integer id);
List<Location> selectAll(Integer id);
List<Location> selectAllAdrName(String adrName);
Location waterId_eleId(String adrName);
int updateByPrimaryKeySelective(Location record);
int updateByPrimaryKey(Location record);
Map<String, Object> userPayList(String roomNumber);
String selectRoomNumber(String roomNumber);
String selectRoomNumberElectricity(String roomNumber);
int countAdrName(Map<String, Object> map);
int countParent(Integer id);
String findWmId(String roomNumber);
String eeId(String roomNumber);
int editEeId(@Param(value = "name") String name,
@Param(value = "deviceId") String deviceId);
}
\ No newline at end of file
package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.PayResponse;
public interface PayResponseMapper {
int deleteByPrimaryKey(String id);
int insert(PayResponse record);
int insertSelective(PayResponse record);
PayResponse selectByPrimaryKey(String id);
int updateByPrimaryKeySelective(PayResponse record);
int updateByPrimaryKey(PayResponse record);
}
\ No newline at end of file
package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.USERS;
public interface USERSMapper {
int deleteByPrimaryKey(Integer userId);
int insert(USERS record);
int insertSelective(USERS record);
USERS selectByPrimaryKey(Integer userId);
int updateByPrimaryKeySelective(USERS record);
int updateByPrimaryKey(USERS record);
}
\ No newline at end of file
package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.WaterElectricityParameter;
import java.util.List;
public interface WaterElectricityParameterMapper {
int deleteByPrimaryKey(Integer id);
int insert(WaterElectricityParameter record);
int insertSelective(WaterElectricityParameter record);
WaterElectricityParameter selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(WaterElectricityParameter record);
int updateByPrimaryKey(WaterElectricityParameter record);
int countOne(String eeId);
WaterElectricityParameter findOneElectricity(String eeId);
}
\ No newline at end of file
package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.WaterMeter;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface WaterMeterMapper {
List<WaterMeter> waterMeterAll(String wmId);
int insert(WaterMeter record);
int insertSelective(WaterMeter record);
List<WaterMeter> selectAll();
String findOneWmSacc(String wmId);
int update(@Param(value = "wmId") String wmId,
@Param(value = "allSacc") String allSacc);
}
\ No newline at end of file
package com.sunyo.energy.location.demopay;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class HttpClientUtil {
public static String httpReader(String url, String code) {
System.out.println("GetPage:" + url);
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url);
String result = null;
try {
client.executeMethod(method);
int status = method.getStatusCode();
if (status == HttpStatus.SC_OK) {
result = method.getResponseBodyAsString();
} else {
System.out.println("Method failed: " + method.getStatusLine());
}
} catch (HttpException e) {
// �����������쳣��������Э�鲻�Ի��߷��ص�����������
System.out.println("Please check your provided http address!");
e.printStackTrace();
} catch (IOException e) {
// ���������쳣
System.out.println("���������쳣��");
e.printStackTrace();
} finally {
// �ͷ�����
if (method != null) method.releaseConnection();
method = null;
client = null;
}
return result;
}
public static String httpGet(String url, String code) {
System.out.println("GetPage:" + url);
String content = null;
HttpClient httpClient = new HttpClient();
//����header
httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT, "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5.2-2.fc11 Firefox/3.5.2");
GetMethod method = new GetMethod(url);
try {
int statusCode = httpClient.executeMethod(method);
System.out.println("httpClientUtils::statusCode=" + statusCode);
System.out.println(method.getStatusLine());
content = new String(method.getResponseBody(), code);
} catch (Exception e) {
System.out.println("time out");
e.printStackTrace();
} finally {
if (method != null) method.releaseConnection();
method = null;
httpClient = null;
}
return content;
}
public static String httpPost(String url, Map paramMap, String code) {
System.out.println("GetPage:" + url);
String content = null;
if (url == null || url.trim().length() == 0 || paramMap == null
|| paramMap.isEmpty())
return null;
HttpClient httpClient = new HttpClient();
//����header
httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT, "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5.2-2.fc11 Firefox/3.5.2");//
//��������
//httpClient.getHostConfiguration().setProxy("128.128.176.74", 808);
PostMethod method = new PostMethod(url);
Iterator it = paramMap.keySet().iterator();
while (it.hasNext()) {
String key = it.next() + "";
Object o = paramMap.get(key);
if (o != null && o instanceof String) {
method.addParameter(new NameValuePair(key, o.toString()));
}
if (o != null && o instanceof String[]) {
String[] s = (String[]) o;
if (s != null)
for (int i = 0; i < s.length; i++) {
method.addParameter(new NameValuePair(key, s[i]));
}
}
}
try {
int statusCode = httpClient.executeMethod(method);
System.out.println("httpClientUtils::statusCode=" + statusCode);
System.out.println(method.getStatusLine());
content = new String(method.getResponseBody(), code);
} catch (Exception e) {
System.out.println("time out");
e.printStackTrace();
} finally {
if (method != null) method.releaseConnection();
method = null;
httpClient = null;
}
return content;
}
public static String httpPost(String url, Map paramMap) {
//���룺UTF-8
return HttpClientUtil.httpPost(url, paramMap, "UTF-8");
}
}
package com.sunyo.energy.location.demopay;
import java.io.*;
import java.security.*;
public class MD5 {
public static String md5Str(String str) {
if (str == null) return "";
return md5Str(str, 0);
}
/**
* ������ϢժҪ��
*
* @param data ����ժҪ�����ݡ�
* @param offset ����ƫ�Ƶ�ַ��
* @param length ���ݳ��ȡ�
* @return ժҪ�����(16�ֽ�)
*/
public static String md5Str(String str, int offset) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] b = str.getBytes("UTF8");
md5.update(b, offset, b.length);
return byteArrayToHexString(md5.digest());
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
return null;
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
return null;
}
}
/**
* @param b byte[]
* @return String
*/
public static String byteArrayToHexString(byte[] b) {
String result = "";
for (int i = 0; i < b.length; i++) {
result += byteToHexString(b[i]);
}
return result;
}
private static String[] hexDigits =
{
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b",
"c", "d", "e", "f"};
/**
* ���ֽ�ת��Ϊ��Ӧ��16��������
*
* @param b byte
* @return String
*/
public static String byteToHexString(byte b) {
int n = b;
if (n < 0) {
n = 256 + n;
}
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static void main(String[] args) {
System.out.println(byteToHexString((byte) -99));
String str =
"eeeeeeeeeeeeeewrw213123122222222222222222222222213123213213213erwer";
String ened = MD5.md5Str(str);
System.out.println(ened.length());
System.out.println(ened);
}
}
package com.sunyo.energy.location.demopay;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
public class QrDemo {
private String MERCHANTIDS;
private String POSIDS;
private String BRANCHIDS;
private String TXCODES;
private String PUB32TR2S;
public QrDemo(String MERCHANTIDS, String POSIDS, String BRANCHIDS, String TXCODES, String PUB32TR2S) {
this.MERCHANTIDS = MERCHANTIDS;
this.POSIDS = POSIDS;
this.BRANCHIDS = BRANCHIDS;
this.TXCODES = TXCODES;
this.PUB32TR2S = PUB32TR2S;
}
public String orUrl(String orderId, String payMent) throws UnsupportedEncodingException {
String bankURL = "https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain";
/**
* 商户代码
*/
String MERCHANTID = MERCHANTIDS;
/**
* 商户柜台代码
*/
String POSID = POSIDS;
/**
* 分行代码
*/
String BRANCHID = BRANCHIDS;
/**
* 货币种类 01 人民币 只支持人民币
*/
String CURCODE = "01";
/**
* 交易码
*/
String TXCODE = TXCODES;
String REMARK1 = "";
String REMARK2 = "";
/**
* 返回类型
*/
String RETURNTYPE = "3";
String TIMEOUT = "";
/**
* 应柜台的公钥后30位
*/
String PUB32TR2 = PUB32TR2S;
StringBuffer tmp = new StringBuffer();
tmp.append("MERCHANTID=");
tmp.append(MERCHANTID);
tmp.append("&POSID=");
tmp.append(POSID);
tmp.append("&BRANCHID=");
tmp.append(BRANCHID);
tmp.append("&ORDERID=");
tmp.append(orderId);
tmp.append("&PAYMENT=");
tmp.append(payMent);
tmp.append("&CURCODE=");
tmp.append(CURCODE);
tmp.append("&TXCODE=");
tmp.append(TXCODE);
tmp.append("&REMARK1=");
tmp.append(REMARK1);
tmp.append("&REMARK2=");
tmp.append(REMARK2);
tmp.append("&RETURNTYPE=");
tmp.append(RETURNTYPE);
tmp.append("&TIMEOUT=");
tmp.append(TIMEOUT);
tmp.append("&PUB=");
tmp.append(PUB32TR2);
Map map = new HashMap();
map.put("CCB_IBSVersion", "V6");
map.put("MERCHANTID", MERCHANTID);
map.put("BRANCHID", BRANCHID);
map.put("POSID", POSID);
map.put("ORDERID", orderId);
map.put("PAYMENT", payMent);
map.put("CURCODE", CURCODE);
map.put("TXCODE", TXCODE);
map.put("REMARK1", REMARK1);
map.put("REMARK2", REMARK2);
map.put("RETURNTYPE", RETURNTYPE);
map.put("TIMEOUT", TIMEOUT);
map.put("MAC", MD5.md5Str(tmp.toString()));
String ret = HttpClientUtil.httpPost(bankURL, map);
Gson gson = new Gson();
QrURLDemo qrurl = (QrURLDemo) gson.fromJson(ret, QrURLDemo.class);
String rets = HttpClientUtil.httpGet(qrurl.getPAYURL(), "UTF-8");
JSONObject jsonObject = JSONObject.fromObject(rets);
String qrurl1 = URLDecoder.decode(jsonObject.get("QRURL").toString(), "UTF-8");
return qrurl1;
}
}
package com.sunyo.energy.location.demopay;
public class QrORURLDemo {
private String SUCCESS;
private String ORYURL;
public String getSUCCESS() {
return SUCCESS;
}
public void setSUCCESS(String success) {
SUCCESS = success;
}
public String getORYURL() {
return ORYURL;
}
public void setORYURL(String ORYURL) {
this.ORYURL = ORYURL;
}
}
package com.sunyo.energy.location.demopay;
public class QrURLDemo {
private String SUCCESS;
private String PAYURL;
public String getSUCCESS() {
return SUCCESS;
}
public void setSUCCESS(String success) {
SUCCESS = success;
}
public String getPAYURL() {
return PAYURL;
}
public void setPAYURL(String payurl) {
PAYURL = payurl;
}
}
package com.sunyo.energy.location.model;
/**
* 获取电表余额/实时数据1
*/
import lombok.Data;
@Data
public class ElectricityBalanceOne {
private String errcode;
private String errmessage;
private ElectricityBalanceTwo data;
}
package com.sunyo.energy.location.model;
import lombok.Data;
/**
* 获取电表余额/实时数据3
*/
@Data
public class ElectricityBalanceThree {
private Integer deviceId;
private Number totalEnergy;
private Number tipEnergy;
private Number peakEnergy;
private Number valleyEnergy;
private Number flatEnergy;
private Number balance;
}
package com.sunyo.energy.location.model;
import lombok.Data;
import java.util.List;
/**
* 获取电表余额/实时数据2
*/
@Data
public class ElectricityBalanceTwo {
private Number actionTime;
private List<ElectricityMeter> datas;
}
package com.sunyo.energy.location.model;
import lombok.Data;
/**
* 获取设备实施通电状态 1
*/
@Data
public class ElectricityDeviceOnAndOffOne {
private String errcode;
private String errmessage;
private ElectricityDeviceOnAndOffTwo data;
}
package com.sunyo.energy.location.model;
import lombok.Data;
/**
* 获取设备实施通电状态 3
*/
@Data
public class ElectricityDeviceOnAndOffThree {
private Integer deviceId;
// 0 未查询到 1:通电 2:断电
private Integer onAndOff;
}
package com.sunyo.energy.location.model;
import lombok.Data;
import java.util.List;
/**
* 获取设备实施通电状态 2
*/
@Data
public class ElectricityDeviceOnAndOffTwo {
private Number actionTime;
private List<ElectricityDeviceOnAndOffThree> datas;
}
package com.sunyo.energy.location.model;
import java.math.BigDecimal;
import java.util.Date;
public class ElectricityMeter {
private String deviceId;
private BigDecimal totalEnergy;
private BigDecimal tipEnergy;
private BigDecimal peakEnergy;
private BigDecimal valleyEnergy;
private BigDecimal flatEnergy;
private BigDecimal balance;
private Date actime;
private Date updatetime;
private String reamke1;
private String reamke2;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId == null ? null : deviceId.trim();
}
public BigDecimal getTotalEnergy() {
return totalEnergy;
}
public void setTotalEnergy(BigDecimal totalEnergy) {
this.totalEnergy = totalEnergy;
}
public BigDecimal getTipEnergy() {
return tipEnergy;
}
public void setTipEnergy(BigDecimal tipEnergy) {
this.tipEnergy = tipEnergy;
}
public BigDecimal getPeakEnergy() {
return peakEnergy;
}
public void setPeakEnergy(BigDecimal peakEnergy) {
this.peakEnergy = peakEnergy;
}
public BigDecimal getValleyEnergy() {
return valleyEnergy;
}
public void setValleyEnergy(BigDecimal valleyEnergy) {
this.valleyEnergy = valleyEnergy;
}
public BigDecimal getFlatEnergy() {
return flatEnergy;
}
public void setFlatEnergy(BigDecimal flatEnergy) {
this.flatEnergy = flatEnergy;
}
public BigDecimal getBalance() {
return balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
public Date getActime() {
return actime;
}
public void setActime(Date actime) {
this.actime = actime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
public String getReamke1() {
return reamke1;
}
public void setReamke1(String reamke1) {
this.reamke1 = reamke1 == null ? null : reamke1.trim();
}
public String getReamke2() {
return reamke2;
}
public void setReamke2(String reamke2) {
this.reamke2 = reamke2 == null ? null : reamke2.trim();
}
}
\ No newline at end of file
package com.sunyo.energy.location.model;
import lombok.Data;
/**
* 获取房间与楼层信息 1
*/
@Data
public class ElectricityRoomDeviceOne {
private String errcode;
private String errmessage;
private ElectricityRoomDeviceTwo data;
}
package com.sunyo.energy.location.model;
import lombok.Data;
/**
* 获取房间与楼层信息 3
*/
@Data
public class ElectricityRoomDeviceThree {
// 房间id
private Integer roomId;
// 房间名称
private String roomName;
// 设备id
private String deviceId;
// 设备名称
private String deviceName;
// 安装时间
private String startDate;
}
package com.sunyo.energy.location.model;
import lombok.Data;
import java.util.List;
/**
* 获取房间与楼层信息 2
*/
@Data
public class ElectricityRoomDeviceTwo {
private List<ElectricityRoomDeviceThree> datas;
}
package com.sunyo.energy.location.model;
import lombok.Data;
import java.util.List;
@Data
public class Location {
private Integer id;
private String adrname;
private String eeid;
private String wmid;
private Integer parent;
private Integer type;
private List<Location> children;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAdrname() {
return adrname;
}
public void setAdrname(String adrname) {
this.adrname = adrname == null ? null : adrname.trim();
}
public Integer getParent() {
return parent;
}
public void setParent(Integer parent) {
this.parent = parent;
}
public String getEeid() {
return eeid;
}
public void setEeid(String eeid) {
this.eeid = eeid;
}
public String getWmid() {
return wmid;
}
public void setWmid(String wmid) {
this.wmid = wmid;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public List<Location> getChildren() {
return children;
}
public void setChildren(List<Location> children) {
this.children = children;
}
}
\ No newline at end of file
package com.sunyo.energy.location.model;
import java.math.BigDecimal;
import java.util.Date;
public class PayResponse {
private String id;
private String posid;
private String branchid;
private String orderid;
private BigDecimal payment;
private String curcode;
private String remark1;
private String remark2;
private String accType;
private String success;
private String type;
private String referer;
private String clientip;
private Date accdate;
private String usrmsg;
private String usrinfo;
private String paytype;
private String sign;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getPosid() {
return posid;
}
public void setPosid(String posid) {
this.posid = posid == null ? null : posid.trim();
}
public String getBranchid() {
return branchid;
}
public void setBranchid(String branchid) {
this.branchid = branchid == null ? null : branchid.trim();
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid == null ? null : orderid.trim();
}
public BigDecimal getPayment() {
return payment;
}
public void setPayment(BigDecimal payment) {
this.payment = payment;
}
public String getCurcode() {
return curcode;
}
public void setCurcode(String curcode) {
this.curcode = curcode == null ? null : curcode.trim();
}
public String getRemark1() {
return remark1;
}
public void setRemark1(String remark1) {
this.remark1 = remark1 == null ? null : remark1.trim();
}
public String getRemark2() {
return remark2;
}
public void setRemark2(String remark2) {
this.remark2 = remark2 == null ? null : remark2.trim();
}
public String getAccType() {
return accType;
}
public void setAccType(String accType) {
this.accType = accType == null ? null : accType.trim();
}
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success == null ? null : success.trim();
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type == null ? null : type.trim();
}
public String getReferer() {
return referer;
}
public void setReferer(String referer) {
this.referer = referer == null ? null : referer.trim();
}
public String getClientip() {
return clientip;
}
public void setClientip(String clientip) {
this.clientip = clientip == null ? null : clientip.trim();
}
public Date getAccdate() {
return accdate;
}
public void setAccdate(Date accdate) {
this.accdate = accdate;
}
public String getUsrmsg() {
return usrmsg;
}
public void setUsrmsg(String usrmsg) {
this.usrmsg = usrmsg == null ? null : usrmsg.trim();
}
public String getUsrinfo() {
return usrinfo;
}
public void setUsrinfo(String usrinfo) {
this.usrinfo = usrinfo == null ? null : usrinfo.trim();
}
public String getPaytype() {
return paytype;
}
public void setPaytype(String paytype) {
this.paytype = paytype == null ? null : paytype.trim();
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign == null ? null : sign.trim();
}
}
\ No newline at end of file
package com.sunyo.energy.location.model;
import java.util.Date;
public class USERS {
private Integer userId;
private String username;
private String password;
private Date birthday;
private String sex;
private String address;
private Boolean state;
private String mobilephone;
private Date creattime;
private Date updatetime;
private String userface;
private String realname;
private String email;
private Integer age;
private Integer companyId;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex == null ? null : sex.trim();
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address == null ? null : address.trim();
}
public Boolean getState() {
return state;
}
public void setState(Boolean state) {
this.state = state;
}
public String getMobilephone() {
return mobilephone;
}
public void setMobilephone(String mobilephone) {
this.mobilephone = mobilephone == null ? null : mobilephone.trim();
}
public Date getCreattime() {
return creattime;
}
public void setCreattime(Date creattime) {
this.creattime = creattime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
public String getUserface() {
return userface;
}
public void setUserface(String userface) {
this.userface = userface == null ? null : userface.trim();
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname == null ? null : realname.trim();
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email == null ? null : email.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getCompanyId() {
return companyId;
}
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
}
\ No newline at end of file
package com.sunyo.energy.location.model;
import java.util.Date;
public class WaterElectricityParameter {
private Integer id;
private Boolean prepaid;
private Boolean warningtrip;
private Long warningthreshold;
private Boolean overdraft;
private Long overdraftthreshold;
private Boolean waterload;
private Long water;
private Long power;
private String powerfactor;
private Boolean free;
private Long freeelectricitylimit;
private String freewater;
private String wmId;
private Date creattime;
private String eeId;
private String reamke2;
private String reamke3;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Boolean getPrepaid() {
return prepaid;
}
public void setPrepaid(Boolean prepaid) {
this.prepaid = prepaid;
}
public Boolean getWarningtrip() {
return warningtrip;
}
public void setWarningtrip(Boolean warningtrip) {
this.warningtrip = warningtrip;
}
public Long getWarningthreshold() {
return warningthreshold;
}
public void setWarningthreshold(Long warningthreshold) {
this.warningthreshold = warningthreshold;
}
public Boolean getOverdraft() {
return overdraft;
}
public void setOverdraft(Boolean overdraft) {
this.overdraft = overdraft;
}
public Long getOverdraftthreshold() {
return overdraftthreshold;
}
public void setOverdraftthreshold(Long overdraftthreshold) {
this.overdraftthreshold = overdraftthreshold;
}
public Boolean getWaterload() {
return waterload;
}
public void setWaterload(Boolean waterload) {
this.waterload = waterload;
}
public Long getWater() {
return water;
}
public void setWater(Long water) {
this.water = water;
}
public Long getPower() {
return power;
}
public void setPower(Long power) {
this.power = power;
}
public String getPowerfactor() {
return powerfactor;
}
public void setPowerfactor(String powerfactor) {
this.powerfactor = powerfactor == null ? null : powerfactor.trim();
}
public Boolean getFree() {
return free;
}
public void setFree(Boolean free) {
this.free = free;
}
public Long getFreeelectricitylimit() {
return freeelectricitylimit;
}
public void setFreeelectricitylimit(Long freeelectricitylimit) {
this.freeelectricitylimit = freeelectricitylimit;
}
public String getFreewater() {
return freewater;
}
public void setFreewater(String freewater) {
this.freewater = freewater == null ? null : freewater.trim();
}
public String getWmId() {
return wmId;
}
public void setWmId(String wmId) {
this.wmId = wmId == null ? null : wmId.trim();
}
public Date getCreattime() {
return creattime;
}
public void setCreattime(Date creattime) {
this.creattime = creattime;
}
public String getEeId() {
return eeId;
}
public void setEeId(String eeId) {
this.eeId = eeId == null ? null : eeId.trim();
}
public String getReamke2() {
return reamke2;
}
public void setReamke2(String reamke2) {
this.reamke2 = reamke2 == null ? null : reamke2.trim();
}
public String getReamke3() {
return reamke3;
}
public void setReamke3(String reamke3) {
this.reamke3 = reamke3 == null ? null : reamke3.trim();
}
}
\ No newline at end of file
package com.sunyo.energy.location.model;
import java.util.Date;
public class WaterMeter {
private String wmId;
private String wmSacc;
private String wmLacc;
private String wmRdtime;
private String wmFmstate;
private String wmErrmessage;
private String wmVoltage;
private String wmSignalpower;
private Date creattime;
private Date updatetime;
private String reamke1;
private String reamke2;
private String reamke3;
private String reamke4;
public String getWmId() {
return wmId;
}
public void setWmId(String wmId) {
this.wmId = wmId == null ? null : wmId.trim();
}
public String getWmSacc() {
return wmSacc;
}
public void setWmSacc(String wmSacc) {
this.wmSacc = wmSacc == null ? null : wmSacc.trim();
}
public String getWmLacc() {
return wmLacc;
}
public void setWmLacc(String wmLacc) {
this.wmLacc = wmLacc == null ? null : wmLacc.trim();
}
public String getWmRdtime() {
return wmRdtime;
}
public void setWmRdtime(String wmRdtime) {
this.wmRdtime = wmRdtime == null ? null : wmRdtime.trim();
}
public String getWmFmstate() {
return wmFmstate;
}
public void setWmFmstate(String wmFmstate) {
this.wmFmstate = wmFmstate == null ? null : wmFmstate.trim();
}
public String getWmErrmessage() {
return wmErrmessage;
}
public void setWmErrmessage(String wmErrmessage) {
this.wmErrmessage = wmErrmessage == null ? null : wmErrmessage.trim();
}
public String getWmVoltage() {
return wmVoltage;
}
public void setWmVoltage(String wmVoltage) {
this.wmVoltage = wmVoltage == null ? null : wmVoltage.trim();
}
public String getWmSignalpower() {
return wmSignalpower;
}
public void setWmSignalpower(String wmSignalpower) {
this.wmSignalpower = wmSignalpower == null ? null : wmSignalpower.trim();
}
public Date getCreattime() {
return creattime;
}
public void setCreattime(Date creattime) {
this.creattime = creattime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
public String getReamke1() {
return reamke1;
}
public void setReamke1(String reamke1) {
this.reamke1 = reamke1 == null ? null : reamke1.trim();
}
public String getReamke2() {
return reamke2;
}
public void setReamke2(String reamke2) {
this.reamke2 = reamke2 == null ? null : reamke2.trim();
}
public String getReamke3() {
return reamke3;
}
public void setReamke3(String reamke3) {
this.reamke3 = reamke3 == null ? null : reamke3.trim();
}
public String getReamke4() {
return reamke4;
}
public void setReamke4(String reamke4) {
this.reamke4 = reamke4 == null ? null : reamke4.trim();
}
}
\ No newline at end of file
package com.sunyo.energy.location.service;
import com.github.pagehelper.PageInfo;
import com.sunyo.energy.location.model.ElectricityInfo;
import com.sunyo.energy.location.model.PayRecords;
import java.util.List;
/**
* @author shenhailong
* <p>
* 2020/6/5/10:45
*/
public interface EeInfoService {
int deleteByPrimaryKey(String orderNumber);
int insert(ElectricityInfo record);
int insertSelective(ElectricityInfo record);
ElectricityInfo selectByPrimaryKey(String orderNumber);
PageInfo<ElectricityInfo> getEeInfo(int pageSize, int pageNum, String deviceId);
int updateByPrimaryKeySelective(ElectricityInfo record);
int updateByPrimaryKey(ElectricityInfo record);
}
package com.sunyo.energy.location.service;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.model.ElectricityBalanceThree;
import com.sunyo.energy.location.model.ElectricityMeter;
import java.math.BigDecimal;
import java.util.Map;
... ... @@ -13,22 +10,6 @@ import java.util.Map;
* 2020/5/25/16:12
*/
public interface ElectricityMeterService {
/**
* 获取电表实时数据
*
* @param deviceId
* @return
*/
ElectricityMeter getEnergyInfoForRealTime(String deviceId) throws Exception;
/**
* 电表充值接口
*
* @param deviceId
* @param money
* @param actionType
* @return
*/
int rechargeDevices(String deviceId, String money, String actionType, String orderNumber);
}
... ...
package com.sunyo.energy.location.service;
import java.util.List;
public interface LocationService {
List userPayList(String roomNumber);
}
package com.sunyo.energy.location.service;
import com.github.pagehelper.PageInfo;
import com.sunyo.energy.location.model.PayRecords;
/**
* Created by XYH on 2019/12/16.
*/
public interface PayOrderService {
PageInfo<PayRecords> getOrder(int pageSize, int pageNum, String orderNumber, String payTime, String username, String payType);
int addOrder(PayRecords payRecords);
int ediOrder(PayRecords payRecords);
int delOrder(PayRecords payRecords);
}
package com.sunyo.energy.location.service;
import com.sunyo.energy.location.model.WaterElectricityParameter;
import java.util.List;
public interface WaterElectricityParameterService {
int insertSelective(WaterElectricityParameter record);
int updateByPrimaryKeySelective(WaterElectricityParameter record);
int countOne(String eeId);
WaterElectricityParameter findOneElectricity(String eeId);
}
package com.sunyo.energy.location.service;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.model.WaterMeter;
import java.io.UnsupportedEncodingException;
public interface WaterMeterService {
int realTime();
WaterMeter findRealTime(String wmId);
ResultJson payWater(String payFees, String wmId);
ResultJson waterMeterAll(String wmId);
/**
* 请求返回二维码
*/
ResultJson qrCode(String payFees, String wmId, String userId, String realName, String eeId) throws UnsupportedEncodingException;
}
package com.sunyo.energy.location.service.imp;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sunyo.energy.location.dao.ElectricityInfoMapper;
import com.sunyo.energy.location.model.ElectricityInfo;
import com.sunyo.energy.location.model.PayRecords;
import com.sunyo.energy.location.service.EeInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
/**
* @author shenhailong
* <p>
* 2020/6/5/10:45
*/
@Service
public class EeInfoServiceImpl implements EeInfoService {
@Autowired
ElectricityInfoMapper electricityInfoMapper;
@Override
public int deleteByPrimaryKey(String orderNumber) {
return 0;
}
@Override
public int insert(ElectricityInfo record) {
return 0;
}
@Override
public int insertSelective(ElectricityInfo record) {
return 0;
}
@Override
public ElectricityInfo selectByPrimaryKey(String orderNumber) {
return null;
}
@Override
public PageInfo<ElectricityInfo> getEeInfo(int pageSize, int pageNum, String deviceId) {
PageHelper.startPage(pageNum, pageSize);
List<ElectricityInfo> list = electricityInfoMapper.selectAll(deviceId);
PageInfo<ElectricityInfo> result = new PageInfo<>(list);
return result;
}
@Override
public int updateByPrimaryKeySelective(ElectricityInfo record) {
return 0;
}
@Override
public int updateByPrimaryKey(ElectricityInfo record) {
return 0;
}
}
... ... @@ -5,15 +5,11 @@ import com.sunyo.energy.location.dao.*;
import com.sunyo.energy.location.model.*;
import com.sunyo.energy.location.service.ElectricityMeterService;
import com.sunyo.energy.location.utils.HttpsUtils;
import com.sunyo.energy.location.utils.Md5Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
... ... @@ -28,153 +24,47 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
@Autowired
PayRecordsMapper payRecordsMapper;
@Autowired
LocationMapper locationMapper;
@Autowired
USERSMapper usersMapper;
/**
* 获取电表实时数据/余额
*/
@Value("${eeUrl.electricityBanlanceUrl}")
private String electricityBanlanceUrl;
/**
* 电表充值接口读取配置文件ip地址
*/
@Value("${eeid.ipAddress}")
private String ipAddress;
/**
* 电表充值接口地址
*/
@Value("${eeUrl.rechargeDevicesUrl}")
private String rechargeDevicesUrl;
/**
* 获取设备跟公寓信息
*/
@Value("${eeUrl.getRoomAndDeviceUrl}")
private String getRoomAndDeviceUrl;
/**
* 实施获取电表数据
*/
@Override
public ElectricityMeter getEnergyInfoForRealTime(String deviceId) {
try {
if (!"".equals(deviceId)) {
Map<String, Object> stringObjectMap = eeInfo(deviceId);
String infoForRealTime = HttpsUtils.sendPost(electricityBanlanceUrl, stringObjectMap);
ElectricityBalanceOne electricityBalanceOne = JSON.parseObject(infoForRealTime, ElectricityBalanceOne.class);
List<ElectricityMeter> infoForRealTimeList = electricityBalanceOne.getData().getDatas();
for (ElectricityMeter electricityBalanceThree : infoForRealTimeList) {
if (electricityBalanceThree != null) {
return electricityBalanceThree;
}
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 电表充值
*
* @param deviceId 设备编号
* @param money 充值金额
* @param actionType 充值类型 0 充值 1 扣费
* @param orderNumber 订单号
* @return
*/
@Override
public int rechargeDevices(String deviceId, String money, String actionType, String orderNumber) {
Map<String, Object> stringObjectMap = mapCommon(actionType, deviceId, money, ipAddress);
// 设置secret值 设备id 跟金额 盐 需要进行加密
BigDecimal bigDecimal = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP);
String moneyString = String.valueOf(bigDecimal);
String secret = Md5Utils.getMD5(deviceId + moneyString + "tiansu", true, 32);
stringObjectMap.put("secret", secret);
log.info("电表充值信息{}", stringObjectMap.toString());
try {
String result = HttpsUtils.sendPost(rechargeDevicesUrl, stringObjectMap);
log.info("电表充值反馈结果:{}", result);
RechargeDevicesResult rechargeDevicesResult = JSON.parseObject(result, RechargeDevicesResult.class);
List<RechargeDevicesResultData> data = rechargeDevicesResult.getData().getDatas();
Boolean message = null;
for (RechargeDevicesResultData rechargeDevicesResultData : data) {
message = rechargeDevicesResultData.getSuccess();
}
if ("0".equals(rechargeDevicesResult.getErrcode()) && message == true) {
log.info("电表充值成功,充值额度:{}", money);
return 1;
} else {
log.info("电表充值失败,充值额度:{}", money);
/**
* 插入临时表 电表接口充值因为硬件问题可能失败
*/
ElectricityInfo electricityInfo = new ElectricityInfo();
electricityInfo.setOrderNumber(orderNumber);
electricityInfo.setActionType(actionType);
electricityInfo.setDeviceId(deviceId);
electricityInfo.setMoney(new BigDecimal(money).setScale(2, RoundingMode.HALF_UP));
electricityInfo.setIpAddress(ipAddress);
electricityInfo.setSecret(secret);
int i = electricityInfoMapper.insertSelective(electricityInfo);
log.info("插入电表临时表成功:{},插入数据{}", i, electricityInfo);
return 0;
}
} catch (Exception e) {
e.printStackTrace();
log.error("电表充值失败,充值额度:{}", money);
return 0;
}
}
public Map<String, Object> eeInfo(String deviceId) {
Map<String, Object> datas = new HashMap<>();
datas.put("deviceId", deviceId);
return datas;
}
/**
* 定时读取电表临时表 发起充值
*/
// @Scheduled(fixedDelay = 30000)
@Scheduled(fixedDelay = 30000)
public void electricityInfo() {
List<ElectricityInfo> electricityInfos = electricityInfoMapper.selectAll("");
if (electricityInfos.size() > 0) {
for (ElectricityInfo electricityInfo : electricityInfos) {
Map<String, Object> stringObjectMap = mapCommon(electricityInfo.getActionType(),
electricityInfo.getDeviceId(),
String.valueOf(electricityInfo.getMoney()),
electricityInfo.getIpAddress());
stringObjectMap.put("secret", electricityInfo.getSecret());
String result = HttpsUtils.sendPost(rechargeDevicesUrl, stringObjectMap);
log.info("电表临时表充值请求信息:{}", electricityInfo.toString());
log.info("电表临时表充值返回信息:{}", result);
RechargeDevicesResult rechargeDevicesResult = JSON.parseObject(result, RechargeDevicesResult.class);
if (rechargeDevicesResult.getData() != null) {
List<RechargeDevicesResultData> data = rechargeDevicesResult.getData().getDatas();
Boolean message = null;
for (RechargeDevicesResultData rechargeDevicesResultData : data) {
message = rechargeDevicesResultData.getSuccess();
}
if ("0".equals(rechargeDevicesResult.getErrcode()) && message == true) {
payRecordsMapper.updateStatus(electricityInfo.getOrderNumber());
electricityInfo.setStatus("0");
electricityInfoMapper.updateByPrimaryKeySelective(electricityInfo);
try {
List<ElectricityInfo> electricityInfos = electricityInfoMapper.selectAll("");
if (electricityInfos.size() > 0) {
for (ElectricityInfo electricityInfo : electricityInfos) {
Map<String, Object> stringObjectMap = mapCommon(electricityInfo.getActionType(),
electricityInfo.getDeviceId(),
String.valueOf(electricityInfo.getMoney()),
electricityInfo.getIpAddress());
stringObjectMap.put("secret", electricityInfo.getSecret());
String result = HttpsUtils.sendPost(rechargeDevicesUrl, stringObjectMap);
log.info("电表临时表充值请求信息:{}", electricityInfo.toString());
log.info("电表临时表充值返回信息:{}", result);
RechargeDevicesResult rechargeDevicesResult = JSON.parseObject(result, RechargeDevicesResult.class);
if (rechargeDevicesResult.getData() != null) {
List<RechargeDevicesResultData> data = rechargeDevicesResult.getData().getDatas();
Boolean message = null;
for (RechargeDevicesResultData rechargeDevicesResultData : data) {
message = rechargeDevicesResultData.getSuccess();
}
if ("0".equals(rechargeDevicesResult.getErrcode()) && message == true) {
// 成功 删除该订单
electricityInfoMapper.deleteByPrimaryKey(electricityInfo.getOrderNumber());
}
}
}
}
log.info("定时任务处理完成");
}catch (Exception e){
e.printStackTrace();
}
log.info("定时任务处理完成");
}
public Map<String, Object> mapCommon(String actionType, String deviceId, String money, String ip_address) {
... ...
package com.sunyo.energy.location.service.imp;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.model.ElectricityMeter;
import com.sunyo.energy.location.model.WaterMeter;
import com.sunyo.energy.location.service.ElectricityMeterService;
import com.sunyo.energy.location.service.LocationService;
import com.sunyo.energy.location.utils.AllUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class LocationServiceImp implements LocationService {
@Autowired
LocationMapper locationMapper;
@Autowired
ElectricityMeterService electricityMeterService;
@Override
public List userPayList(String roomNumber) {
try {
// 房间号如果为null 跳过
if (!StringUtils.isEmpty(roomNumber)) {
List<Map<String, Object>> list = new ArrayList<>();
/**
* 水费查询
*/
// 查询房间号 水表本地查询list
Map<String, Object> thisLocalityWaterMap = locationMapper.userPayList(roomNumber);
Map<String, Object> distanceWaterMap = new HashMap<>();
// 是否为null 为null则去线上查询
// if (thisLocalityWaterMap != null) {
// if (!StringUtils.isEmpty(thisLocalityWaterMap.get("wmSacc").toString()) && !StringUtils.isEmpty(thisLocalityWaterMap.get("wmLacc").toString())) {
// // 计算剩余量 充值量 减去 消费量 参数1 减去 参数2
// String subtraction = AllUtils.nubmerSubtraction(thisLocalityWaterMap.get("wmSacc").toString(), thisLocalityWaterMap.get("wmLacc").toString());
// // 余量
// thisLocalityWaterMap.put("subtraction", subtraction);
// }
// list.add(thisLocalityWaterMap);
// } else {
// 查询该房间号的水表编号
String wmId = locationMapper.findWmId(roomNumber);
if (!"".equals(wmId)) {
Map<String, Object> waterMaps = new HashMap<>();
WaterMeterServiceImp waterMeterServiceImp = new WaterMeterServiceImp();
WaterMeter realTime = waterMeterServiceImp.findRealTime(wmId);
String subtraction = AllUtils.nubmerSubtraction(realTime.getWmSacc(), realTime.getWmLacc());
distanceWaterMap.put("subtraction", subtraction);
distanceWaterMap.put("wmSacc", realTime.getWmSacc());
distanceWaterMap.put("wmFmstate", realTime.getWmFmstate());
distanceWaterMap.put("wmLacc", realTime.getWmLacc());
distanceWaterMap.put("wmId", wmId);
list.add(distanceWaterMap);
}
// }
/**
* 电费查询 通过房间号查询设备id
*/
String eeId = locationMapper.eeId(roomNumber);
if (!"".equals(eeId)) {
ElectricityMeter energyInfoForRealTime = electricityMeterService.getEnergyInfoForRealTime(eeId);
Map<String, Object> eeMap = new HashMap<>();
if (energyInfoForRealTime != null) {
eeMap.put("deviceId", energyInfoForRealTime.getDeviceId());
eeMap.put("balance", energyInfoForRealTime.getBalance());
eeMap.put("wmId", "");
list.add(eeMap);
}
}
return list;
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.sunyo.energy.location.service.imp;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.model.PayRecords;
import com.sunyo.energy.location.service.PayOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
* Created by XYH on 2019/12/16.
*/
@Service
public class PayOrderImpl implements PayOrderService {
@Autowired
PayRecordsMapper recordsMapper;
@Override
public PageInfo<PayRecords> getOrder(int pageSize, int pageNum, String orderNumber, String payTime, String username, String payType) {
// 开始时间
String startTime = "";
// 结束时间
String endTime = "";
Page<PayRecords> page = PageHelper.startPage(pageNum, pageSize);
if (!StringUtils.isEmpty(payTime) && !payTime.contains("undefined")) {
String[] split = payTime.split(",");
startTime = split[0].toString();
endTime = split[1].toString();
}
List<PayRecords> list = new ArrayList<>();
if ("admin".equals(username)) {
username = "";
list = recordsMapper.findAll(orderNumber, startTime, endTime, username, payType);
} else {
list = recordsMapper.findAll(orderNumber, startTime, endTime, username, payType);
}
PageInfo<PayRecords> result = new PageInfo<>(list);
return result;
}
@Override
public int addOrder(PayRecords payRecords) {
return recordsMapper.insert(payRecords);
}
@Override
public int ediOrder(PayRecords payRecords) {
return recordsMapper.updateByPrimaryKey(payRecords);
}
@Override
public int delOrder(PayRecords payRecords) {
return recordsMapper.deleteByPrimaryKey(payRecords.getId());
}
}
package com.sunyo.energy.location.service.imp;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.WaterElectricityParameterMapper;
import com.sunyo.energy.location.model.WaterElectricityParameter;
import com.sunyo.energy.location.service.WaterElectricityParameterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
@Service
public class WaterElectricityParameterServiceImp implements WaterElectricityParameterService {
@Autowired
private WaterElectricityParameterMapper waterElectricityParameterMapper;
@Override
public int insertSelective(WaterElectricityParameter record) {
record.setCreattime(new Date());
return waterElectricityParameterMapper.insertSelective(record);
}
@Override
public int updateByPrimaryKeySelective(WaterElectricityParameter record) {
return waterElectricityParameterMapper.updateByPrimaryKeySelective(record);
}
@Override
public int countOne(String eeId) {
return waterElectricityParameterMapper.countOne(eeId);
}
@Override
public WaterElectricityParameter findOneElectricity(String eeId) {
try {
return waterElectricityParameterMapper.findOneElectricity(eeId);
} catch (Exception e) {
return null;
}
}
}
package com.sunyo.energy.location.service.imp;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.dao.WaterMeterMapper;
import com.sunyo.energy.location.demopay.QrDemo;
import com.sunyo.energy.location.model.PayRecords;
import com.sunyo.energy.location.model.WaterMeter;
import com.sunyo.energy.location.service.WaterMeterService;
import com.sunyo.energy.location.utils.AllUtils;
import com.sunyo.energy.location.utils.HttpsUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class WaterMeterServiceImp implements WaterMeterService {
@Autowired
private WaterMeterMapper waterMeterMapper;
@Autowired
private PayRecordsMapper payRecordsMapper;
@Autowired
private LocationMapper locationMapper;
@Value("${payInfo.merchantid}")
private String MERCHANTIDS;
@Value("${payInfo.posid}")
private String POSIDS;
@Value("${payInfo.branchid}")
private String BRANCHIDS;
@Value("${payInfo.txcode}")
private String TXCODES;
@Value("${payInfo.pub32tr2}")
private String PUB32TR2S;
/**
* 查询所有水表
*/
private static final String selectUrl = "http://123.56.159.203:8023/nowwmrd/getSelectNowwmrdbyMtId";
private static final String payUrl = "http://123.56.159.203:8023/mtfmset/allWMadd";
private static final String addUrl = "http://123.56.159.203:8023/nowwmrd/getSelectNowwmrdbyProjectID";
@Override
@Scheduled(cron = "0 0 03 * * ?")
public int realTime() {
try {
Map<String, Object> datas = new HashMap<>();
datas.put("ProjectID", "33-99-00-00-00-00-01");
// 远程调用
String s = HttpsUtils.httpRequest(addUrl, datas);
JSONArray jsonArray = JSON.parseArray(s);
for (Object jsonObject : jsonArray) {
WaterMeter waterMeter = new WaterMeter();
Map<String, Object> map = (Map) jsonObject;
if (!map.containsKey("state")) {
waterMeter.setWmId(map.get("wm_id").toString());
waterMeter.setWmErrmessage(map.get("wm_errmessage").toString());
waterMeter.setWmFmstate(map.get("wm_fmstate").toString());
waterMeter.setWmSacc(map.get("wm_sacc").toString());
waterMeter.setWmLacc(map.get("wm_lacc").toString());
waterMeter.setWmRdtime(map.get("wm_rdtime").toString());
waterMeter.setWmSignalpower(map.get("wm_signalpower").toString());
waterMeter.setWmVoltage(map.get("wm_voltage").toString());
waterMeter.setCreattime(new Date());
waterMeter.setReamke1(map.get("wm_sacc").toString());
waterMeterMapper.insertSelective(waterMeter);
} else {
if ("0".equals(map.get("state").toString())) {
return 1;
}
return 0;
}
}
return 1;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
@Override
public WaterMeter findRealTime(String wmId) {
try {
Map<String, Object> datas = new HashMap<>();
datas.put("MtId", wmId);
String s = HttpsUtils.httpRequest(selectUrl, datas);
JSONArray jsonArray = JSON.parseArray(s);
WaterMeter waterMeter = new WaterMeter();
for (Object jsonObject : jsonArray) {
Map<String, Object> map = (Map) jsonObject;
if (!map.containsKey("state")) {
waterMeter.setWmId(map.get("wm_id").toString());
waterMeter.setWmErrmessage(map.get("wm_errmessage").toString());
waterMeter.setWmFmstate(map.get("wm_fmstate").toString());
waterMeter.setWmSacc(map.get("wm_sacc").toString());
waterMeter.setWmLacc(map.get("wm_lacc").toString());
waterMeter.setWmRdtime(map.get("wm_rdtime").toString());
waterMeter.setWmSignalpower(map.get("wm_signalpower").toString());
waterMeter.setWmVoltage(map.get("wm_voltage").toString());
}
}
return waterMeter;
} catch (Exception e) {
e.printStackTrace();
return new WaterMeter();
}
}
/**
* 水费充值 换算总水量 生成订单
*
* @param payFees
* @param wmId
* @return
*/
@Override
public ResultJson payWater(String payFees, String wmId) {
ResultJson<Object> resultJson = new ResultJson<>();
try {
// 得到请求接口 返回值 和总水量
Map<String, Object> map = allWater(payFees, wmId);
Map hashMap = JSON.parseObject(map.get("status").toString(), HashMap.class);
if ("0".equals(hashMap.get("state").toString())) {
int update = waterMeterMapper.update(wmId, map.get("allSacc").toString());
resultJson.setCode("200");
} else {
resultJson.setCode("203");
}
return resultJson;
} catch (Exception e) {
e.printStackTrace();
resultJson.setCode("203");
return resultJson;
}
}
@Override
public ResultJson waterMeterAll(String wmId) {
ResultJson<Object> resultJson = new ResultJson<>();
try {
List<WaterMeter> waterMeterList = waterMeterMapper.waterMeterAll(wmId);
return new ResultJson("200", "success", waterMeterList);
} catch (Exception e) {
e.printStackTrace();
resultJson.setCode("203");
return resultJson;
}
}
// 请求返回二维码
@Override
public ResultJson qrCode(String payFees, String wmId, String userId, String realName, String eeId) throws UnsupportedEncodingException {
ResultJson<Object> resultJson = new ResultJson<>();
QrDemo qrDemo = new QrDemo(MERCHANTIDS,POSIDS,BRANCHIDS,TXCODES,PUB32TR2S);
// 成功生成水费订单
if (!"".equals(wmId)) {
PayRecords payRecords = payRecords(payFees, wmId, userId, realName, "");
// 请求返回二维码lujing
String url = qrDemo.orUrl(payRecords.getOrdernumber(), payFees);
if (!"".equals(url)) {
payRecords.setReamke2(url);
// 返回map 包含订单号 二维码url
Map<String, Object> map = new HashMap<>();
map.put("url", url);
map.put("orderNumber", payRecords.getOrdernumber());
resultJson.setData(map);
}
int i = payRecordsMapper.insertSelective(payRecords);
if (i > 0) {
resultJson.setCode("200");
}
} else {
PayRecords payRecords = payRecords(payFees, "", userId, realName, eeId);
// 请求返回二维码lujing
String url = qrDemo.orUrl(payRecords.getOrdernumber(), payFees);
if (!"".equals(url)) {
payRecords.setReamke2(url);
// 返回map 包含订单号 二维码url
Map<String, Object> map = new HashMap<>();
map.put("url", url);
map.put("orderNumber", payRecords.getOrdernumber());
resultJson.setData(map);
}
int i = payRecordsMapper.insertSelective(payRecords);
if (i > 0) {
resultJson.setCode("200");
}
}
return resultJson;
}
/**
* 总水量 换算
*
* @param payFees
* @param wmId
* @return
* @throws Exception
*/
public Map<String, Object> allWater(String payFees, String wmId) throws Exception {
// 充值最后立方水数值
String s = AllUtils.nubmerDivision(payFees);
// 查询累计充值量
WaterMeter realTime = findRealTime(wmId);
String allSacc = AllUtils.nubmerAdd(s, realTime.getWmSacc());
Map<String, Object> datas = new HashMap<>();
datas.put("MtId", wmId);
datas.put("Add_sacc", allSacc);
datas.put("Add_addmode", "2");
String status = HttpsUtils.httpRequest(payUrl, datas);
datas.put("allSacc", allSacc);
datas.put("status", status);
return datas;
}
/**
* 订单生成
*
* @param payFees
* @param wmId
* @param userId
* @param realName
* @return
*/
public PayRecords payRecords(String payFees, String wmId, String userId, String realName, String eeId) {
PayRecords payRecords = new PayRecords();
payRecords.setOrdernumber(AllUtils.getOrderIdByTime());
payRecords.setPayfees(new BigDecimal(payFees));
payRecords.setPaystatus(false);
if (!"".equals(wmId)) {
payRecords.setPaytype(false);
payRecords.setPaytypeaddress(wmId);
String roomNumber = locationMapper.selectRoomNumber(wmId);
payRecords.setPaylocationname(roomNumber);
} else {
payRecords.setPaytype(true);
payRecords.setPaytypeaddress(eeId);
String roomNumber = locationMapper.selectRoomNumberElectricity(eeId);
payRecords.setPaylocationname(roomNumber);
}
payRecords.setReamke1("0");
payRecords.setPayuserid(Integer.valueOf(userId));
payRecords.setPaytime(new Date());
payRecords.setPayusername(realName);
return payRecords;
}
}
package com.sunyo.energy.location.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class AllUtils {
// 数字相减 参数1 减去 参数2
public static String nubmerSubtraction(String sacc, String lacc) {
BigDecimal saccBigDecimal = new BigDecimal(sacc);
BigDecimal laccBigDecimal = new BigDecimal(lacc);
String surplus = saccBigDecimal.subtract(laccBigDecimal).toString();
return surplus;
}
// 数字相除 参数1 除以参数2
public static String nubmerDivision(String payFees) {
// 单价
String unitprice = PropertiesLoader.getUnitPrice("unitprice");
BigDecimal payFessDecimal = new BigDecimal(payFees);
BigDecimal unitpriceDecimal = new BigDecimal(unitprice);
String s = payFessDecimal.divide(unitpriceDecimal, 2, RoundingMode.HALF_UP).toString();
return s;
}
//数字相加 参数1加参数2
public static String nubmerAdd(String oneWmSacc, String s) {
BigDecimal bigDecimal = new BigDecimal(oneWmSacc);
BigDecimal bigDecimal1 = new BigDecimal(s);
String s1 = bigDecimal.add(bigDecimal1).toString();
return s1;
}
// 订单号生成 时间加随机数
public static String getOrderIdByTime() {
// 商户码
String merchantId = "105001453995827";
String result = "";
Random random = new Random();
for (int i = 0; i < 3; i++) {
result += random.nextInt(10);
}
return merchantId + result;
}
}
package com.sunyo.energy.location.utils;
import sun.misc.BASE64Encoder;
import java.security.MessageDigest;
/**
* @author shenhailong
* <p>
* 2020/6/2/17:30
*/
public class Md5Utils {
/**
* 通用加密方法
*
* @param str 需要加密的字符串
* @param isUpper 字母大小写(false为小写,true为大写)
* @param bit 加密的位数(16,32,64)
* @return
*/
public static String getMD5(String str, boolean isUpper, Integer bit) {
String md5 = null;
try {
// 创建加密对象
MessageDigest md = MessageDigest.getInstance("md5");
if (bit == 64) {
BASE64Encoder bw = new BASE64Encoder();
md5 = bw.encode(md.digest(str.getBytes("utf-8")));
} else {
// 计算MD5函数
md.update(str.getBytes());
byte b[] = md.digest();
int i;
StringBuilder sb = new StringBuilder();
for (byte aB : b) {
i = aB;
if (i < 0) {
i += 256;
}
if (i < 16) {
sb.append("0");
}
sb.append(Integer.toHexString(i));
}
md5 = sb.toString();
if (bit == 16) {
//截取32位md5为16位
md5 = md5.substring(8, 24);
if (isUpper) {
md5 = md5.toUpperCase();
}
return md5;
}
}
//转换成大写
if (isUpper) {
md5 = md5.toUpperCase();
}
} catch (Exception e) {
e.printStackTrace();
}
return md5;
}
}
package com.sunyo.energy.location.websocket;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
/**
* 添加fastjson的转换
*/
@Configuration
public class FastjsonConverter {
@Bean
public HttpMessageConverters customConverters() {
// 定义一个转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
// 添加fastjson的配置信息 比如 :是否要格式化返回的json数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
//fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
// 处理中文乱码问题1
// 处理中文乱码问题2
fastJsonConfig.setCharset(Charset.forName("UTF-8"));
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
//fastMediaTypes.add(MediaType.valueOf("text/plain;charset=UTF-8"));
//fastMediaTypes.add(MediaType.valueOf("text/html;charset=UTF-8"));
fastConverter.setSupportedMediaTypes(fastMediaTypes);
// 在转换器中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
stringConverter.setDefaultCharset(Charset.forName("UTF-8"));
stringConverter.setSupportedMediaTypes(fastMediaTypes);
// 将转换器添加到converters中
return new HttpMessageConverters(stringConverter, fastConverter);
}
}
\ No newline at end of file
package com.sunyo.energy.location.websocket;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
package com.sunyo.energy.location.websocket;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.StringUtils;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;
/**
* WebSocketServer
*
* @author zhengkai.blog.csdn.net
*/
@ServerEndpoint("/imserver")
@Component
public class WebSocketServer {
static Log log = LogFactory.get(WebSocketServer.class);
/**
* 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
*/
private static int onlineCount = 0;
/**
* concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
*/
private static ConcurrentHashMap<String, WebSocketServer> webSocketMap = new ConcurrentHashMap<>();
/**
* 与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
private Session session;
/**
* 接收userId
*/
private String orderNum = "";
/**
* 连接建立成功调用的方法
*/
@OnOpen
public void onOpen(Session session) {
this.session = session;
this.orderNum = orderNum;
if (webSocketMap.containsKey(orderNum)) {
webSocketMap.remove(orderNum);
webSocketMap.put(orderNum, this);
//加入set中
} else {
webSocketMap.put(orderNum, this);
//加入set中
addOnlineCount();
//在线数加1
}
log.info("用户连接:" + orderNum + ",当前在线人数为:" + getOnlineCount());
try {
sendMessage("连接成功");
} catch (IOException e) {
log.error("用户:" + orderNum + ",网络异常!!!!!!");
}
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose() {
if (webSocketMap.containsKey(orderNum)) {
webSocketMap.remove(orderNum);
//从set中删除
subOnlineCount();
}
log.info("用户退出:" + orderNum + ",当前在线人数为:" + getOnlineCount());
}
/**
* 收到客户端消息后调用的方法
*
* @param message 客户端发送过来的消息*/
// @OnMessage
// public void onMessage(String message, Session session) {
// log.info("用户消息:"+orderNum+",报文:"+message);
// //可以群发消息
// //消息保存到数据库、redis
// if(StringUtils.isNotBlank(message)){
// try {
//// //解析发送的报文
//// JSONObject jsonObject = JSON.parseObject(message);
//// //追加发送人(防止串改)
//// jsonObject.put("fromOrderNum",this.orderNum);
//// String toUserId=jsonObject.getString("toUserId");
//// //传送给对应toUserId用户的websocket
//// if(StringUtils.isNotBlank(toUserId)&&webSocketMap.containsKey(toUserId)){
//// webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString());
//// }else{
//// log.error("请求的userId:"+toUserId+"不在该服务器上");
//// //否则不在这个服务器上,发送到mysql或者redis
//// }
// }catch (Exception e){
// e.printStackTrace();
// }
// }
// }
/**
* 群发消息
*
* @param content 要广播的内容
*/
public void broadcast(String content) {
for (ConcurrentHashMap.Entry<String, WebSocketServer> entry : webSocketMap.entrySet()) {
WebSocketServer webSocketServerE = entry.getValue();
try {
webSocketServerE.sendMessage(content);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
/**
* @param session
* @param error
*/
@OnError
public void onError(Session session, Throwable error) {
log.error("用户错误:" + this.orderNum + ",原因:" + error.getMessage());
error.printStackTrace();
}
/**
* 实现服务器主动推送
*/
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
/**
* 发送自定义消息
*/
public static void sendInfo(String message, @PathParam("orderNum") String orderNum) throws IOException {
log.info("发送消息到:" + orderNum + ",报文:" + message);
if (StringUtils.isNotBlank(orderNum) && webSocketMap.containsKey(orderNum)) {
webSocketMap.get(orderNum).sendMessage(message);
} else {
log.error("用户" + orderNum + ",不在线!");
}
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
WebSocketServer.onlineCount++;
}
public static synchronized void subOnlineCount() {
WebSocketServer.onlineCount--;
}
}
\ No newline at end of file
... ... @@ -22,4 +22,4 @@ ${AnsiColor.YELLOW}
==================================================
Application Info:${application.title}
ver:${application.version}
Powered by:Spring Boot ${spring-boot.version}
\ No newline at end of file
Powered by:Spring Boot ${spring-boot.version}
... ...
... ... @@ -4,9 +4,10 @@
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
<classPathEntry location="/Users/shenhailong/.m2/repository/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar"/>
<classPathEntry
location="/Users/shenhailong/.m2/repository/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar"/>
<!--<classPathEntry location="/Users/mrz/Documents/maven/ojdbc6.jar"/>-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
... ... @@ -14,14 +15,14 @@
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://118.31.66.166:3306/EMPT"
userId="110"
password="QAHqCJf2kFYCLirM">
connectionURL="jdbc:mysql://118.31.66.166:3306/EMPT"
userId="110"
password="QAHqCJf2kFYCLirM">
</jdbcConnection>
<!--<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"-->
<!--connectionURL="jdbc:oracle:thin:@192.168.1.253:1522:ORCLL"-->
<!--userId="CGOASM"-->
<!--password="vmvnv1v2">-->
<!--connectionURL="jdbc:oracle:thin:@192.168.1.253:1522:ORCLL"-->
<!--userId="CGOASM"-->
<!--password="vmvnv1v2">-->
<!--</jdbcConnection>-->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
... ... @@ -41,10 +42,13 @@
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.sunyo.energy.location.dao" targetProject="src/main/java">
<javaClientGenerator type="XMLMAPPER" targetPackage="com.sunyo.energy.location.dao"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="pay_response" domainObjectName="PayResponse" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="true"></table>
<table tableName="electricity_info" domainObjectName="ElectricityInfo" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="true"></table>
</context>
</generatorConfiguration>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sunyo.energy.location.dao.LocationMapper">
<resultMap id="BaseResultMap" type="com.sunyo.energy.location.model.Location">
<id column="id" property="id" jdbcType="INTEGER"/>
<id column="wm_id" property="wmid" jdbcType="VARCHAR"/>
<id column="ee_id" property="eeid" jdbcType="VARCHAR"/>
<result column="adrName" property="adrname" jdbcType="VARCHAR"/>
<result column="parent" property="parent" jdbcType="INTEGER"/>
<result column="type" property="type" jdbcType="INTEGER"/>
<!-- <collection property="children" select="selectAll" column="id"></collection>-->
</resultMap>
<sql id="Base_Column_List">
id, adrName, parent, type, wm_id, ee_id
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from location
where id = #{id,jdbcType=INTEGER}
</select>
<select id="selectAll" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
*
from location
where
parent = #{id,jdbcType=INTEGER}
<!--<if test="_adrname != '' and _adrname != null " >-->
<!--or adrName = #{adrname, jdbcType=VARCHAR}-->
<!--</if>-->
</select>
<select id="selectAllAdrName" resultMap="BaseResultMap" parameterType="java.lang.String">
select
*
from location
where
adrName = #{adrname, jdbcType=VARCHAR}
</select>
<select id="waterId_eleId" resultMap="BaseResultMap" parameterType="string">
select * from location where adrName = #{adrname, jdbcType=VARCHAR}
</select>
<select id="userPayList" resultType="java.util.HashMap">
select
wm.wm_id as wmId, wm.wm_fmstate as wmFmstate,
wm.wm_lacc as wmLacc, wm.wm_sacc as wmSacc
from
location lon
left join
water_meter wm on lon.wm_id = wm.wm_id
where
lon.adrName=#{value,jdbcType=VARCHAR}
</select>
<select id="selectRoomNumber" parameterType="java.lang.String" resultType="java.lang.String">
select
adrName
from
location
where
wm_id = #{value, jdbcType=VARCHAR}
</select>
<select id="selectRoomNumberElectricity" parameterType="java.lang.String" resultType="java.lang.String">
select
adrName
from
location
where
ee_id = #{value, jdbcType=VARCHAR}
</select>
<select id="countAdrName" resultType="int" parameterType="map">
select count(adrName) from location where adrName = #{adrName, jdbcType=VARCHAR} and parent = #{parent, jdbcType=VARCHAR}
</select>
<select id="countParent" parameterType="int" resultType="int">
select count(parent) from location where parent = #{value}
</select>
<select id="findWmId" parameterType="string" resultType="string">
select wm_id from location where adrname = #{value}
</select>
<select id="eeId" parameterType="string" resultType="string">
select ee_id from location where adrname = #{value}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from location
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sunyo.energy.location.model.Location">
insert into location (id, adrName, parent,
type)
values (#{id,jdbcType=INTEGER}, #{adrname,jdbcType=VARCHAR}, #{parent,jdbcType=INTEGER},
#{type,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" parameterType="com.sunyo.energy.location.model.Location">
insert into location
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="adrname != null">
adrName,
</if>
<if test="parent != null">
parent,
</if>
<if test="type != null">
type,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="adrname != null">
#{adrname,jdbcType=VARCHAR},
</if>
<if test="parent != null">
#{parent,jdbcType=INTEGER},
</if>
<if test="type != null">
#{type,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sunyo.energy.location.model.Location">
update location
<set>
<if test="adrname != null">
adrName = #{adrname,jdbcType=VARCHAR},
</if>
<if test="parent != null">
parent = #{parent,jdbcType=INTEGER},
</if>
<if test="type != null">
type = #{type,jdbcType=INTEGER},
</if>
<if test="wmid != null">
wm_id = #{wmid,jdbcType=VARCHAR},
</if>
<if test="eeid != null">
ee_id = #{eeid,jdbcType=VARCHAR}
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.Location">
update location
set adrName = #{adrname,jdbcType=VARCHAR},
parent = #{parent,jdbcType=INTEGER},
type = #{type,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<update id="editEeId" parameterType="string">
update location
set ee_id = #{deviceId,jdbcType=VARCHAR}
where adrName = #{name,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sunyo.energy.location.dao.PayResponseMapper">
<resultMap id="BaseResultMap" type="com.sunyo.energy.location.model.PayResponse">
<id column="ID" property="id" jdbcType="VARCHAR"/>
<result column="POSID" property="posid" jdbcType="VARCHAR"/>
<result column="BRANCHID" property="branchid" jdbcType="VARCHAR"/>
<result column="ORDERID" property="orderid" jdbcType="VARCHAR"/>
<result column="PAYMENT" property="payment" jdbcType="DECIMAL"/>
<result column="CURCODE" property="curcode" jdbcType="VARCHAR"/>
<result column="REMARK1" property="remark1" jdbcType="VARCHAR"/>
<result column="REMARK2" property="remark2" jdbcType="VARCHAR"/>
<result column="ACC_TYPE" property="accType" jdbcType="VARCHAR"/>
<result column="SUCCESS" property="success" jdbcType="VARCHAR"/>
<result column="TYPE" property="type" jdbcType="VARCHAR"/>
<result column="REFERER" property="referer" jdbcType="VARCHAR"/>
<result column="CLIENTIP" property="clientip" jdbcType="VARCHAR"/>
<result column="ACCDATE" property="accdate" jdbcType="TIMESTAMP"/>
<result column="USRMSG" property="usrmsg" jdbcType="VARCHAR"/>
<result column="USRINFO" property="usrinfo" jdbcType="VARCHAR"/>
<result column="PAYTYPE" property="paytype" jdbcType="VARCHAR"/>
<result column="SIGN" property="sign" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
ID, POSID, BRANCHID, ORDERID, PAYMENT, CURCODE, REMARK1, REMARK2, ACC_TYPE, SUCCESS,
TYPE, REFERER, CLIENTIP, ACCDATE, USRMSG, USRINFO, PAYTYPE, SIGN
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from pay_response
where ID = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from pay_response
where ID = #{id,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.sunyo.energy.location.model.PayResponse">
insert into pay_response (ID, POSID, BRANCHID,
ORDERID, PAYMENT, CURCODE,
REMARK1, REMARK2, ACC_TYPE,
SUCCESS, TYPE, REFERER,
CLIENTIP, ACCDATE, USRMSG,
USRINFO, PAYTYPE, SIGN
)
values (#{id,jdbcType=VARCHAR}, #{posid,jdbcType=VARCHAR}, #{branchid,jdbcType=VARCHAR},
#{orderid,jdbcType=VARCHAR}, #{payment,jdbcType=DECIMAL}, #{curcode,jdbcType=VARCHAR},
#{remark1,jdbcType=VARCHAR}, #{remark2,jdbcType=VARCHAR}, #{accType,jdbcType=VARCHAR},
#{success,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{referer,jdbcType=VARCHAR},
#{clientip,jdbcType=VARCHAR}, #{accdate,jdbcType=TIMESTAMP}, #{usrmsg,jdbcType=VARCHAR},
#{usrinfo,jdbcType=VARCHAR}, #{paytype,jdbcType=VARCHAR}, #{sign,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.sunyo.energy.location.model.PayResponse">
insert into pay_response
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="posid != null">
POSID,
</if>
<if test="branchid != null">
BRANCHID,
</if>
<if test="orderid != null">
ORDERID,
</if>
<if test="payment != null">
PAYMENT,
</if>
<if test="curcode != null">
CURCODE,
</if>
<if test="remark1 != null">
REMARK1,
</if>
<if test="remark2 != null">
REMARK2,
</if>
<if test="accType != null">
ACC_TYPE,
</if>
<if test="success != null">
SUCCESS,
</if>
<if test="type != null">
TYPE,
</if>
<if test="referer != null">
REFERER,
</if>
<if test="clientip != null">
CLIENTIP,
</if>
<if test="accdate != null">
ACCDATE,
</if>
<if test="usrmsg != null">
USRMSG,
</if>
<if test="usrinfo != null">
USRINFO,
</if>
<if test="paytype != null">
PAYTYPE,
</if>
<if test="sign != null">
SIGN,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="posid != null">
#{posid,jdbcType=VARCHAR},
</if>
<if test="branchid != null">
#{branchid,jdbcType=VARCHAR},
</if>
<if test="orderid != null">
#{orderid,jdbcType=VARCHAR},
</if>
<if test="payment != null">
#{payment,jdbcType=DECIMAL},
</if>
<if test="curcode != null">
#{curcode,jdbcType=VARCHAR},
</if>
<if test="remark1 != null">
#{remark1,jdbcType=VARCHAR},
</if>
<if test="remark2 != null">
#{remark2,jdbcType=VARCHAR},
</if>
<if test="accType != null">
#{accType,jdbcType=VARCHAR},
</if>
<if test="success != null">
#{success,jdbcType=VARCHAR},
</if>
<if test="type != null">
#{type,jdbcType=VARCHAR},
</if>
<if test="referer != null">
#{referer,jdbcType=VARCHAR},
</if>
<if test="clientip != null">
#{clientip,jdbcType=VARCHAR},
</if>
<if test="accdate != null">
#{accdate,jdbcType=TIMESTAMP},
</if>
<if test="usrmsg != null">
#{usrmsg,jdbcType=VARCHAR},
</if>
<if test="usrinfo != null">
#{usrinfo,jdbcType=VARCHAR},
</if>
<if test="paytype != null">
#{paytype,jdbcType=VARCHAR},
</if>
<if test="sign != null">
#{sign,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sunyo.energy.location.model.PayResponse">
update pay_response
<set>
<if test="posid != null">
POSID = #{posid,jdbcType=VARCHAR},
</if>
<if test="branchid != null">
BRANCHID = #{branchid,jdbcType=VARCHAR},
</if>
<if test="orderid != null">
ORDERID = #{orderid,jdbcType=VARCHAR},
</if>
<if test="payment != null">
PAYMENT = #{payment,jdbcType=DECIMAL},
</if>
<if test="curcode != null">
CURCODE = #{curcode,jdbcType=VARCHAR},
</if>
<if test="remark1 != null">
REMARK1 = #{remark1,jdbcType=VARCHAR},
</if>
<if test="remark2 != null">
REMARK2 = #{remark2,jdbcType=VARCHAR},
</if>
<if test="accType != null">
ACC_TYPE = #{accType,jdbcType=VARCHAR},
</if>
<if test="success != null">
SUCCESS = #{success,jdbcType=VARCHAR},
</if>
<if test="type != null">
TYPE = #{type,jdbcType=VARCHAR},
</if>
<if test="referer != null">
REFERER = #{referer,jdbcType=VARCHAR},
</if>
<if test="clientip != null">
CLIENTIP = #{clientip,jdbcType=VARCHAR},
</if>
<if test="accdate != null">
ACCDATE = #{accdate,jdbcType=TIMESTAMP},
</if>
<if test="usrmsg != null">
USRMSG = #{usrmsg,jdbcType=VARCHAR},
</if>
<if test="usrinfo != null">
USRINFO = #{usrinfo,jdbcType=VARCHAR},
</if>
<if test="paytype != null">
PAYTYPE = #{paytype,jdbcType=VARCHAR},
</if>
<if test="sign != null">
SIGN = #{sign,jdbcType=VARCHAR},
</if>
</set>
where ID = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.PayResponse">
update pay_response
set POSID = #{posid,jdbcType=VARCHAR},
BRANCHID = #{branchid,jdbcType=VARCHAR},
ORDERID = #{orderid,jdbcType=VARCHAR},
PAYMENT = #{payment,jdbcType=DECIMAL},
CURCODE = #{curcode,jdbcType=VARCHAR},
REMARK1 = #{remark1,jdbcType=VARCHAR},
REMARK2 = #{remark2,jdbcType=VARCHAR},
ACC_TYPE = #{accType,jdbcType=VARCHAR},
SUCCESS = #{success,jdbcType=VARCHAR},
TYPE = #{type,jdbcType=VARCHAR},
REFERER = #{referer,jdbcType=VARCHAR},
CLIENTIP = #{clientip,jdbcType=VARCHAR},
ACCDATE = #{accdate,jdbcType=TIMESTAMP},
USRMSG = #{usrmsg,jdbcType=VARCHAR},
USRINFO = #{usrinfo,jdbcType=VARCHAR},
PAYTYPE = #{paytype,jdbcType=VARCHAR},
SIGN = #{sign,jdbcType=VARCHAR}
where ID = #{id,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sunyo.energy.location.dao.USERSMapper">
<resultMap id="BaseResultMap" type="com.sunyo.energy.location.model.USERS">
<id column="user_id" property="userId" jdbcType="INTEGER"/>
<result column="username" property="username" jdbcType="VARCHAR"/>
<result column="password" property="password" jdbcType="VARCHAR"/>
<result column="birthday" property="birthday" jdbcType="TIMESTAMP"/>
<result column="sex" property="sex" jdbcType="CHAR"/>
<result column="address" property="address" jdbcType="VARCHAR"/>
<result column="state" property="state" jdbcType="BIT"/>
<result column="mobilePhone" property="mobilephone" jdbcType="VARCHAR"/>
<result column="creatTime" property="creattime" jdbcType="TIMESTAMP"/>
<result column="updateTime" property="updatetime" jdbcType="TIMESTAMP"/>
<result column="userFace" property="userface" jdbcType="VARCHAR"/>
<result column="realName" property="realname" jdbcType="VARCHAR"/>
<result column="email" property="email" jdbcType="VARCHAR"/>
<result column="age" property="age" jdbcType="INTEGER"/>
<result column="company_id" property="companyId" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
user_id, username, password, birthday, sex, address, state, mobilePhone, creatTime,
updateTime, userFace, realName, email, age, company_id
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from users
where user_id = #{userId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from users
where user_id = #{userId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sunyo.energy.location.model.USERS">
insert into users (user_id, username, password,
birthday, sex, address,
state, mobilePhone, creatTime,
updateTime, userFace, realName,
email, age, company_id
)
values (#{userId,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
#{birthday,jdbcType=TIMESTAMP}, #{sex,jdbcType=CHAR}, #{address,jdbcType=VARCHAR},
#{state,jdbcType=BIT}, #{mobilephone,jdbcType=VARCHAR}, #{creattime,jdbcType=TIMESTAMP},
#{updatetime,jdbcType=TIMESTAMP}, #{userface,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{companyId,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.sunyo.energy.location.model.USERS">
insert into users
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">
user_id,
</if>
<if test="username != null">
username,
</if>
<if test="password != null">
password,
</if>
<if test="birthday != null">
birthday,
</if>
<if test="sex != null">
sex,
</if>
<if test="address != null">
address,
</if>
<if test="state != null">
state,
</if>
<if test="mobilephone != null">
mobilePhone,
</if>
<if test="creattime != null">
creatTime,
</if>
<if test="updatetime != null">
updateTime,
</if>
<if test="userface != null">
userFace,
</if>
<if test="realname != null">
realName,
</if>
<if test="email != null">
email,
</if>
<if test="age != null">
age,
</if>
<if test="companyId != null">
company_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">
#{userId,jdbcType=INTEGER},
</if>
<if test="username != null">
#{username,jdbcType=VARCHAR},
</if>
<if test="password != null">
#{password,jdbcType=VARCHAR},
</if>
<if test="birthday != null">
#{birthday,jdbcType=TIMESTAMP},
</if>
<if test="sex != null">
#{sex,jdbcType=CHAR},
</if>
<if test="address != null">
#{address,jdbcType=VARCHAR},
</if>
<if test="state != null">
#{state,jdbcType=BIT},
</if>
<if test="mobilephone != null">
#{mobilephone,jdbcType=VARCHAR},
</if>
<if test="creattime != null">
#{creattime,jdbcType=TIMESTAMP},
</if>
<if test="updatetime != null">
#{updatetime,jdbcType=TIMESTAMP},
</if>
<if test="userface != null">
#{userface,jdbcType=VARCHAR},
</if>
<if test="realname != null">
#{realname,jdbcType=VARCHAR},
</if>
<if test="email != null">
#{email,jdbcType=VARCHAR},
</if>
<if test="age != null">
#{age,jdbcType=INTEGER},
</if>
<if test="companyId != null">
#{companyId,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sunyo.energy.location.model.USERS">
update users
<set>
<if test="username != null">
username = #{username,jdbcType=VARCHAR},
</if>
<if test="password != null">
password = #{password,jdbcType=VARCHAR},
</if>
<if test="birthday != null">
birthday = #{birthday,jdbcType=TIMESTAMP},
</if>
<if test="sex != null">
sex = #{sex,jdbcType=CHAR},
</if>
<if test="address != null">
address = #{address,jdbcType=VARCHAR},
</if>
<if test="state != null">
state = #{state,jdbcType=BIT},
</if>
<if test="mobilephone != null">
mobilePhone = #{mobilephone,jdbcType=VARCHAR},
</if>
<if test="creattime != null">
creatTime = #{creattime,jdbcType=TIMESTAMP},
</if>
<if test="updatetime != null">
updateTime = #{updatetime,jdbcType=TIMESTAMP},
</if>
<if test="userface != null">
userFace = #{userface,jdbcType=VARCHAR},
</if>
<if test="realname != null">
realName = #{realname,jdbcType=VARCHAR},
</if>
<if test="email != null">
email = #{email,jdbcType=VARCHAR},
</if>
<if test="age != null">
age = #{age,jdbcType=INTEGER},
</if>
<if test="companyId != null">
company_id = #{companyId,jdbcType=INTEGER},
</if>
</set>
where user_id = #{userId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.USERS">
update users
set username = #{username,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
birthday = #{birthday,jdbcType=TIMESTAMP},
sex = #{sex,jdbcType=CHAR},
address = #{address,jdbcType=VARCHAR},
state = #{state,jdbcType=BIT},
mobilePhone = #{mobilephone,jdbcType=VARCHAR},
creatTime = #{creattime,jdbcType=TIMESTAMP},
updateTime = #{updatetime,jdbcType=TIMESTAMP},
userFace = #{userface,jdbcType=VARCHAR},
realName = #{realname,jdbcType=VARCHAR},
email = #{email,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
company_id = #{companyId,jdbcType=INTEGER}
where user_id = #{userId,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sunyo.energy.location.dao.WaterElectricityParameterMapper">
<resultMap id="BaseResultMap" type="com.sunyo.energy.location.model.WaterElectricityParameter">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="prepaid" property="prepaid" jdbcType="BIT"/>
<result column="warningTrip" property="warningtrip" jdbcType="BIT"/>
<result column="warningThreshold" property="warningthreshold" jdbcType="DECIMAL"/>
<result column="overdraft" property="overdraft" jdbcType="BIT"/>
<result column="overdraftThreshold" property="overdraftthreshold" jdbcType="DECIMAL"/>
<result column="waterLoad" property="waterload" jdbcType="BIT"/>
<result column="water" property="water" jdbcType="DECIMAL"/>
<result column="power" property="power" jdbcType="DECIMAL"/>
<result column="powerFactor" property="powerfactor" jdbcType="VARCHAR"/>
<result column="free" property="free" jdbcType="BIT"/>
<result column="freeElectricityLimit" property="freeelectricitylimit" jdbcType="DECIMAL"/>
<result column="freeWater" property="freewater" jdbcType="VARCHAR"/>
<result column="wm_id" property="wmId" jdbcType="VARCHAR"/>
<result column="creatTime" property="creattime" jdbcType="TIMESTAMP"/>
<result column="ee_id" property="eeId" jdbcType="VARCHAR"/>
<result column="reamke2" property="reamke2" jdbcType="VARCHAR"/>
<result column="reamke3" property="reamke3" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id, prepaid, warningTrip, warningThreshold, overdraft, overdraftThreshold, waterLoad,
water, power, powerFactor, free, freeElectricityLimit, freeWater, wm_id, creatTime,
ee_id, reamke2, reamke3
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from water_electricity_parameter
where id = #{id,jdbcType=INTEGER}
</select>
<select id="countOne" parameterType="java.lang.String" resultType="int">
select count(*) from water_electricity_parameter where ee_id=#{value, jdbcType=VARCHAR}
</select>
<select id="findOneElectricity" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from water_electricity_parameter where ee_id = #{value,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from water_electricity_parameter
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sunyo.energy.location.model.WaterElectricityParameter">
insert into water_electricity_parameter (id, prepaid, warningTrip,
warningThreshold, overdraft, overdraftThreshold,
waterLoad, water, power,
powerFactor, free, freeElectricityLimit,
freeWater, wm_id, creatTime,
ee_id, reamke2, reamke3
)
values (#{id,jdbcType=INTEGER}, #{prepaid,jdbcType=BIT}, #{warningtrip,jdbcType=BIT},
#{warningthreshold,jdbcType=DECIMAL}, #{overdraft,jdbcType=BIT}, #{overdraftthreshold,jdbcType=DECIMAL},
#{waterload,jdbcType=BIT}, #{water,jdbcType=DECIMAL}, #{power,jdbcType=DECIMAL},
#{powerfactor,jdbcType=VARCHAR}, #{free,jdbcType=BIT}, #{freeelectricitylimit,jdbcType=DECIMAL},
#{freewater,jdbcType=VARCHAR}, #{wmId,jdbcType=VARCHAR}, #{creattime,jdbcType=TIMESTAMP},
#{eeId,jdbcType=VARCHAR}, #{reamke2,jdbcType=VARCHAR}, #{reamke3,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.sunyo.energy.location.model.WaterElectricityParameter">
insert into water_electricity_parameter
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="prepaid != null">
prepaid,
</if>
<if test="warningtrip != null">
warningTrip,
</if>
<if test="warningthreshold != null">
warningThreshold,
</if>
<if test="overdraft != null">
overdraft,
</if>
<if test="overdraftthreshold != null">
overdraftThreshold,
</if>
<if test="waterload != null">
waterLoad,
</if>
<if test="water != null">
water,
</if>
<if test="power != null">
power,
</if>
<if test="powerfactor != null">
powerFactor,
</if>
<if test="free != null">
free,
</if>
<if test="freeelectricitylimit != null">
freeElectricityLimit,
</if>
<if test="freewater != null">
freeWater,
</if>
<if test="wmId != null">
wm_id,
</if>
<if test="creattime != null">
creatTime,
</if>
<if test="eeId != null">
ee_id,
</if>
<if test="reamke2 != null">
reamke2,
</if>
<if test="reamke3 != null">
reamke3,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="prepaid != null">
#{prepaid,jdbcType=BIT},
</if>
<if test="warningtrip != null">
#{warningtrip,jdbcType=BIT},
</if>
<if test="warningthreshold != null">
#{warningthreshold,jdbcType=DECIMAL},
</if>
<if test="overdraft != null">
#{overdraft,jdbcType=BIT},
</if>
<if test="overdraftthreshold != null">
#{overdraftthreshold,jdbcType=DECIMAL},
</if>
<if test="waterload != null">
#{waterload,jdbcType=BIT},
</if>
<if test="water != null">
#{water,jdbcType=DECIMAL},
</if>
<if test="power != null">
#{power,jdbcType=DECIMAL},
</if>
<if test="powerfactor != null">
#{powerfactor,jdbcType=VARCHAR},
</if>
<if test="free != null">
#{free,jdbcType=BIT},
</if>
<if test="freeelectricitylimit != null">
#{freeelectricitylimit,jdbcType=DECIMAL},
</if>
<if test="freewater != null">
#{freewater,jdbcType=VARCHAR},
</if>
<if test="wmId != null">
#{wmId,jdbcType=VARCHAR},
</if>
<if test="creattime != null">
#{creattime,jdbcType=TIMESTAMP},
</if>
<if test="eeId != null">
#{eeId,jdbcType=VARCHAR},
</if>
<if test="reamke2 != null">
#{reamke2,jdbcType=VARCHAR},
</if>
<if test="reamke3 != null">
#{reamke3,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sunyo.energy.location.model.WaterElectricityParameter">
update water_electricity_parameter
<set>
<if test="prepaid != null">
prepaid = #{prepaid,jdbcType=BIT},
</if>
<if test="warningtrip != null">
warningTrip = #{warningtrip,jdbcType=BIT},
</if>
<if test="warningthreshold != null">
warningThreshold = #{warningthreshold,jdbcType=DECIMAL},
</if>
<if test="overdraft != null">
overdraft = #{overdraft,jdbcType=BIT},
</if>
<if test="overdraftthreshold != null">
overdraftThreshold = #{overdraftthreshold,jdbcType=DECIMAL},
</if>
<if test="waterload != null">
waterLoad = #{waterload,jdbcType=BIT},
</if>
<if test="water != null">
water = #{water,jdbcType=DECIMAL},
</if>
<if test="power != null">
power = #{power,jdbcType=DECIMAL},
</if>
<if test="powerfactor != null">
powerFactor = #{powerfactor,jdbcType=VARCHAR},
</if>
<if test="free != null">
free = #{free,jdbcType=BIT},
</if>
<if test="freeelectricitylimit != null">
freeElectricityLimit = #{freeelectricitylimit,jdbcType=DECIMAL},
</if>
<if test="freewater != null">
freeWater = #{freewater,jdbcType=VARCHAR},
</if>
<if test="wmId != null">
wm_id = #{wmId,jdbcType=VARCHAR},
</if>
<if test="creattime != null">
creatTime = #{creattime,jdbcType=TIMESTAMP},
</if>
<if test="eeId != null">
ee_id = #{eeId,jdbcType=VARCHAR},
</if>
<if test="reamke2 != null">
reamke2 = #{reamke2,jdbcType=VARCHAR},
</if>
<if test="reamke3 != null">
reamke3 = #{reamke3,jdbcType=VARCHAR},
</if>
</set>
where ee_id = #{eeId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.WaterElectricityParameter">
update water_electricity_parameter
set prepaid = #{prepaid,jdbcType=BIT},
warningTrip = #{warningtrip,jdbcType=BIT},
warningThreshold = #{warningthreshold,jdbcType=DECIMAL},
overdraft = #{overdraft,jdbcType=BIT},
overdraftThreshold = #{overdraftthreshold,jdbcType=DECIMAL},
waterLoad = #{waterload,jdbcType=BIT},
water = #{water,jdbcType=DECIMAL},
power = #{power,jdbcType=DECIMAL},
powerFactor = #{powerfactor,jdbcType=VARCHAR},
free = #{free,jdbcType=BIT},
freeElectricityLimit = #{freeelectricitylimit,jdbcType=DECIMAL},
freeWater = #{freewater,jdbcType=VARCHAR},
wm_id = #{wmId,jdbcType=VARCHAR},
creatTime = #{creattime,jdbcType=TIMESTAMP},
ee_id = #{eeId,jdbcType=VARCHAR},
reamke2 = #{reamke2,jdbcType=VARCHAR},
reamke3 = #{reamke3,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file