Merge branch 'dev' into electricbicycles

This commit is contained in:
Guoqs
2024-07-12 13:37:59 +08:00
25 changed files with 311 additions and 39 deletions

View File

@@ -0,0 +1,225 @@
# 查询站点的数据统计
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ------------------- |
| | | Y | 充电度数(度) |
| | | Y | 充电总额(元) |
| | | Y | 订单量(单) |
| | | Y | 充电枪可使用率(% |
| | | Y | 充电中(设备数量) |
| | | Y | 空闲(设备数量) |
| | | Y | 占用(设备数量) |
| | | Y | 挂起(设备数量) |
| | | Y | 离线(设备数量) |
| | | Y | 故障(设备数量) |
# 站点经营分析统计图
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ----------------------------- |
| | | Y | 日期 |
| | | Y | 尖用电量费(元) |
| | | Y | 峰用电量费(元) |
| | | Y | 平用电量费(元) |
| | | Y | 谷用电量费(元) |
| | | Y | 当天充电量(度) |
| | | Y | 当天订单总额(元) |
| | | Y | 当天充电服务费(元) |
| | | Y | 当天充电量同比增长率(% |
| | | Y | 当天订单总额同比增长率(% |
| | | Y | 当天充电服务费同比增长率(% |
# 站点充点分布统计图
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ------------------------- |
| | | Y | 时间(小时) |
| | | Y | 每个时段的充电量(度) |
| | | Y | 时段充电量同比增长率(% |
# 站点订单趋势统计图
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | --------------------------- |
| | | Y | 日期 |
| | | Y | 每天订单数量(单) |
| | | Y | 每天订单数量同比增长率(% |
# 站点利用率趋势统计图
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | --------------- |
| | | Y | 日期 |
| | | Y | 枪均利用率(% |
# 站点充电实况列表
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | -------------------------- |
| | | Y | 站点名称 |
| | | Y | 全部枪口数量 |
| | | Y | 充电中枪口数量 |
| | | Y | 空闲枪口数量 |
| | | Y | 挂起枪口数量 |
| | | Y | 占用枪口数量 |
| | | Y | 离线枪口数量 |
| | | Y | 故障枪口数量 |
| | | Y | 充电枪编号 |
| | | Y | 充电中soc% |
| | | Y | 充电中充满剩余时长(分钟) |
| | | Y | 空闲时长(分钟) |
| | | Y | 挂起时长(分钟) |
| | | Y | 占用时长(分钟) |
| | | Y | 离线时长(分钟) |
| | | Y | 故障时长(分钟) |
# 站点充电实况搜索
接口地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---------- |
| | | Y | 充电枪编号 |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ------------ |
| | | Y | 充电枪编号 |
| | | Y | 当前状态 |
| | | Y | 当前状态时长 |
# 充电枪情况
请求地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ------------------------------------------------- |
| | | Y | 已充时长(充电中) |
| | | Y | 最新订单启动时间 |
| | | Y | 充电度数(充电中:以充电度数 / 最新订单充电度数) |
| | | Y | 起止SOC |
# 充电枪情况中订单详情
请求地址:
请求方式:
入参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ---- |
| | | | |
反参
| 字段名 | 类型 | 是否必传 | 备注 |
| ------ | ---- | -------- | ------------ |
| | | Y | 创建订单时间 |
| | | Y | 开始充电时间 |
| | | Y | 充电完成时间 |
| | | Y | 充电完成原因 |
| | | Y | 生成账单时间 |
| | | Y | 支付完成时间 |
| | | Y | 结算完成时间 |
| | | Y | 订单号 |
| | | Y | 场站名称 |
| | | Y | 订单来源 |
| | | Y | 外部订单号 |
| | | Y | 启动方式 |
| | | Y | 充电桩号 |
| | | Y | 充电枪口号 |
| | | Y | 结束SOC% |
| | | Y | 时长(分钟) |
| | | Y | 充电量(度) |
| | | Y | 停止原因 |

View File

@@ -0,0 +1,10 @@
package com.jsowell.api.uniapp.business;
/**
* TODO
*
* @author Lemon
* @Date 2024/7/12 11:13:59
*/
public class PileBasicInfoController {
}

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.jsowell.common.annotation.Anonymous;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.jsowell.common.UserAgentUtils;
@@ -13,7 +13,6 @@ import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.file.AliyunOssUploadUtils;
import com.jsowell.common.util.file.FileUtils;
import com.jsowell.pile.domain.PileBasicInfo;
import com.jsowell.pile.dto.QueryConnectorListDTO;
import com.jsowell.pile.service.IThirdpartySnRelationService;
import com.jsowell.pile.service.MemberGroupService;
import com.jsowell.pile.service.PileBasicInfoService;
@@ -23,7 +22,6 @@ import com.jsowell.pile.vo.uniapp.PileConnectorVO;
import com.jsowell.pile.vo.web.ThirdPartySnRelationVO;
import com.jsowell.service.PileService;
import com.jsowell.thirdparty.common.CommonService;
import eu.bitwalker.useragentutils.UserAgent;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.jsowell.common.annotation.Anonymous;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.jsowell.common.annotation.Anonymous;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap;
@@ -8,7 +8,6 @@ import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.adapay.AdapayPayChannelEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.enums.ykc.ScenarioEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.response.RestApiResponse;
import com.jsowell.common.util.StringUtils;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.jsowell.common.annotation.Anonymous;

View File

@@ -1,4 +1,4 @@
package com.jsowell.api.uniapp;
package com.jsowell.api.uniapp.customer;
import com.alibaba.fastjson2.JSON;
import com.jsowell.adapay.dto.BalancePaymentRequestDTO;

View File

@@ -1,7 +1,7 @@
package com.jsowell.web.controller.pile;
import com.alibaba.fastjson2.JSON;
import com.jsowell.api.uniapp.PileController;
import com.jsowell.api.uniapp.customer.PileController;
import com.jsowell.common.annotation.Log;
import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.core.page.TableDataInfo;

View File

@@ -173,12 +173,12 @@ public class PileMerchantInfoServiceImpl implements PileMerchantInfoService {
int i = pileMerchantInfoMapper.insertPileMerchantInfo(pileMerchantInfo);
// 3 创建运营商管理员
if (StringUtils.isNotBlank(dto.getUserName())) {
if (StringUtils.isNotBlank(dto.getManagerPhone())) {
SysUser user = new SysUser();
user.setDeptId(deptId);
user.setUserName(dto.getUserName());
user.setNickName(dto.getUserName() + "运营商管理员");
user.setPassword(dto.getPassword());
user.setUserName(dto.getManagerPhone());
user.setNickName(dto.getMerchantName() + "-管理员");
user.setPassword("a" + dto.getManagerPhone());
user.setStatus(Constants.ZERO);
user.setPostIds(new Long[]{});
user.setRoleIds(new Long[]{3L});

View File

@@ -128,7 +128,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0'
where u.del_flag = '0'
and (u.user_name = #{userName} or u.phone = #{userName})
</select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">

View File

@@ -284,6 +284,11 @@ public class JiangSuPlatformServiceImpl implements ThirdPartyPlatformService {
return resultMap;
}
/**
* 推送告警信息
* @param dto
* @return
*/
@Override
public String notificationAlarmInfo(PushAlarmInfoDTO dto) {
List<NRAlarmInfo> nrAlarmInfos = new ArrayList<>();

View File

@@ -0,0 +1,25 @@
package com.jsowell.thirdparty.platform.service.impl;
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory;
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
import org.springframework.stereotype.Service;
/**
* 宁夏交投平台
*
* @author Lemon
* @Date 2024/7/11 14:15:50
*/
@Service
public class NingXiaJiaoTouPlatformServiceImpl implements ThirdPartyPlatformService {
// 平台类型
private final String thirdPlatformType = ThirdPlatformTypeEnum.NING_XIA_JIAO_TOU.getTypeCode();
@Override
public void afterPropertiesSet() throws Exception {
ThirdPartyPlatformFactory.register(thirdPlatformType, this);
}
}

View File

@@ -133,7 +133,7 @@ export function updatePlatformTester(data) {
}
// 获取运营商列表
export function getMerchantList() {
export function getMerchantListByAuth() {
return request({
url: '/member/info/getMerchantListByAuth',
method: 'get'
@@ -147,4 +147,4 @@ export function getMemberBalanceChangesV2(data) {
method: 'post',
data: data
});
}
}

View File

@@ -246,7 +246,7 @@ import {
addInfo,
updateInfo,
updateMemberBalance,
getMerchantList,
getMerchantListByAuth,
} from "@/api/member/info";
export default {
@@ -334,7 +334,7 @@ export default {
},
// 获取运营商列表
getMerchantList() {
getMerchantList().then((response) =>{
getMerchantListByAuth().then((response) =>{
console.log("response", response)
this.merchantList = response.obj;
})

View File

@@ -60,7 +60,7 @@
<script>
import { listMemberGroup, getMemberGroup, delMemberGroup, addMemberGroup, updateMemberGroup } from "@/api/member/memberGroup";
import { getMerchantList } from "@/api/member/info";
import { getMerchantListByAuth } from "@/api/member/info";
import { getStationListByMerchantId } from "@/api/pile/station";
export default {
@@ -133,9 +133,9 @@ export default {
methods: {
// 获取运营商列表
getMerchantList() {
getMerchantList().then((response) => {
getMerchantListByAuth().then((response) => {
console.log("response", response)
this.merchantList = response.data;
this.merchantList = response.obj;
this.createMerchantVip.targetMerchantId = this.merchantList[0].merchantId
})
},

View File

@@ -214,7 +214,7 @@ import {
addInfo,
updateInfo,
updateMemberBalance,
getMerchantList, queryMerchantVipList, createMerchantVip, getMemberBalanceChangesV2
getMerchantListByAuth, queryMerchantVipList, createMerchantVip, getMemberBalanceChangesV2
} from "@/api/member/info";
import { parseTime } from "@/utils/common";
export default {
@@ -321,9 +321,9 @@ export default {
},
// 获取运营商列表
getMerchantList() {
getMerchantList().then((response) => {
getMerchantListByAuth().then((response) => {
console.log("response", response)
this.merchantList = response.data;
this.merchantList = response.obj;
this.createMerchantVip.targetMerchantId = this.merchantList[0].merchantId
})
},

View File

@@ -171,7 +171,7 @@
<script>
import {listCard, getCard, delCard, addCard, updateCard, deactivateCard} from "@/api/pile/card";
import {queryFirstLevelMerchant} from "@/api/pile/merchant";
import {getMerchantList} from "@/api/member/info";
import {getMerchantListByAuth} from "@/api/member/info";
export default {
name: "card",
@@ -264,9 +264,9 @@ export default {
},
// 获取运营商列表
getMerchantList() {
getMerchantList().then((response) => {
// console.log("getMerchantList response", response);
this.merchantList = response.data;
getMerchantListByAuth().then((response) => {
console.log("getMerchantList response", response);
this.merchantList = response.obj;
this.form.merchantId = this.merchantList[0].merchantId
})
},
@@ -306,6 +306,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
console.log("新增按钮操作");
this.reset();
this.open = true;
this.title = "添加充电站鉴权卡";

View File

@@ -153,7 +153,7 @@
<!-- <el-input v-model="form.logoUrl" placeholder="" /> -->
</el-form-item>
<el-row>
<!--<el-row>
<el-divider>填入运营商管理员账号和密码则自动创建一个该运营商的管理员账号</el-divider>
<el-col :span="12">
<el-form-item label="运营商管理员账号" prop="userName">
@@ -165,7 +165,7 @@
<el-input v-model="form.password" placeholder="请输入运营商管理员密码" />
</el-form-item>
</el-col>
</el-row>
</el-row>-->
</el-form>
<el-row v-if="form.id == 35">
<el-divider>第三方小程序登录拼接授权链接</el-divider>
@@ -295,6 +295,7 @@ export default {
message: "请输入负责人电话号码",
trigger: "blur",
},
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
],
servicePhone: [
{

View File

@@ -29,10 +29,10 @@
<!--用户数据-->
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户名称" prop="userName">
<el-form-item label="登录名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
placeholder="请输入登录名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
@@ -138,7 +138,7 @@
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="登录名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
@@ -207,6 +207,13 @@
<!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="登录名称" prop="userName">
<el-input v-model="form.userName" placeholder="请输入登录名称" maxlength="16" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">