修改卡启动,增加定时计费模型

This commit is contained in:
yuyang 2022-02-23 10:01:28 +08:00
parent b792e9d46a
commit c523d52491
13 changed files with 934 additions and 3 deletions

View File

@ -88,7 +88,7 @@ public class XhpcCardServiceImpl implements IXhpcCardService {
Long userId=xhpcIcCardInfo.getUserId(); Long userId=xhpcIcCardInfo.getUserId();
Integer userType=xhpcIcCardInfo.getUserType(); Integer userType=xhpcIcCardInfo.getUserType();
String tenantId=xhpcIcCardInfo.getTenantId(); String tenantId=xhpcIcCardInfo.getTenantId();
Integer type =1;//改成卡授权的类型 Integer type =Integer.valueOf(iccardInfo.getCardtype());//改成卡授权的类型
String grantOperator=iccardInfo.getCorpno();//改成卡授权的运营商 String grantOperator=iccardInfo.getCorpno();//改成卡授权的运营商
return cardHistoryOrderService.cardStartup(userId, serialNumber, userType,tenantId,type,grantOperator,rateModelId); return cardHistoryOrderService.cardStartup(userId, serialNumber, userType,tenantId,type,grantOperator,rateModelId);
} }

View File

@ -0,0 +1,67 @@
package com.xhpc.charging.station.controller;
import com.xhpc.charging.station.service.IXhpcTimingChargingModelService;
import com.xhpc.common.api.dto.XhpcTimingChargingModelDto;
import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.common.log.annotation.Log;
import com.xhpc.common.log.enums.BusinessType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.xhpc.common.core.domain.R;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* @author yuyang
* @date 2022/2/22 13:53
*/
@RestController
@RequestMapping("/timingChargingModel")
public class XhpcTimingChargingModelController extends BaseController {
@Autowired
private IXhpcTimingChargingModelService xhpcTimingChargingModelService;
/**
* 定时计费模型列表
* @param reason 调整原因
* @param status 状态0未执行 1已执行 2执行错误
* @param chargingStationId 场站id
* @return
*/
@GetMapping("/list")
public TableDataInfo list(HttpServletRequest request, String reason, Integer status, String startTime, String endTime, Long chargingStationId) {
List<Map<String, Object>> list = xhpcTimingChargingModelService.list(request,reason, status, startTime,endTime, chargingStationId);
return getDataTable(list);
}
/**
* 添加定时计费模型
* @param xhpcTimingChargingModelDto
* @return
*/
@Log(title = "添加定时计费模型", businessType = BusinessType.INSERT)
@PostMapping(value = "/addXhpcTimingChargingModel")
public R addXhpcTimingChargingModel(HttpServletRequest request, @RequestBody XhpcTimingChargingModelDto xhpcTimingChargingModelDto) {
return xhpcTimingChargingModelService.addXhpcTimingChargingModel(request,xhpcTimingChargingModelDto);
}
/**
* 删除
*/
@Log(title = "删除", businessType = BusinessType.UPDATE)
@DeleteMapping("/{timingChargingModelId}")
public R updateXhpcTimingChargingModel(@PathVariable Long timingChargingModelId) {
return xhpcTimingChargingModelService.updateXhpcTimingChargingModel(timingChargingModelId);
}
}

View File

@ -0,0 +1,29 @@
package com.xhpc.charging.station.mapper;
import com.xhpc.common.domain.XhpcTimingChargingModel;
import com.xhpc.common.domain.XhpcTimingChargingTime;
import com.xhpc.common.domain.XhpcTtimingChargingRate;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author yuyang
* @date 2022/2/22 13:47
*/
public interface XhpcTimingChargingModelMapper {
List<Map<String, Object>> list(@Param("reason") String reason,@Param("status") Integer status,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("chargingStationId") Long chargingStationId,@Param("tenantId")String tenantId);
int insertXhpcTimingChargingModel(XhpcTimingChargingModel xhpcTimingChargingModel);
int insertXhpcTtimingChargingRate(XhpcTtimingChargingRate xhpcTtimingChargingRate);
int insertXhpcTimingChargingTime(XhpcTimingChargingTime xhpcTimingChargingTime);
XhpcTimingChargingModel getXhpcTimingChargingModelById(@Param("timingChargingModelId")Long timingChargingModelId);
int updateXhpcTimingChargingModel(XhpcTimingChargingModel xhpcTimingChargingModel);
}

View File

@ -0,0 +1,22 @@
package com.xhpc.charging.station.service;
import com.xhpc.common.api.dto.XhpcTimingChargingModelDto;
import com.xhpc.common.core.domain.R;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* @author yuyang
* @date 2022/2/22 13:46
*/
public interface IXhpcTimingChargingModelService {
List<Map<String, Object>> list(HttpServletRequest request, String reason, Integer status, String startTime, String endTime, Long chargingStationId);
R addXhpcTimingChargingModel(HttpServletRequest request, XhpcTimingChargingModelDto xhpcTimingChargingModelDto);
R updateXhpcTimingChargingModel(Long timingChargingModelId);
}

View File

@ -0,0 +1,308 @@
package com.xhpc.charging.station.service;
import cn.hutool.core.date.DateUtil;
import com.xhpc.charging.station.mapper.XhpcTimingChargingModelMapper;
import com.xhpc.common.api.dto.XhpcRateDto;
import com.xhpc.common.api.dto.XhpcRateTimeDto;
import com.xhpc.common.api.dto.XhpcTimingChargingModelDto;
import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.service.BaseService;
import com.xhpc.common.domain.*;
import com.xhpc.common.security.service.TokenService;
import com.xhpc.system.api.model.LoginUser;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author yuyang
* @date 2022/2/22 13:46
*/
@Service
public class XhpcTimingChargingModelServiceImpl extends BaseService implements IXhpcTimingChargingModelService{
@Autowired
private XhpcTimingChargingModelMapper xhpcTimingChargingModelMapper;
@Autowired
private TokenService tokenService;
@Override
public List<Map<String, Object>> list(HttpServletRequest request, String reason, Integer status, String startTime, String endTime, Long chargingStationId) {
LoginUser loginUser = tokenService.getLoginUser(request);
if(loginUser !=null){
startPage();
return xhpcTimingChargingModelMapper.list(reason,status,startTime,endTime,chargingStationId,loginUser.getTenantId());
}
return new ArrayList<>();
}
@Override
@Transactional
public R addXhpcTimingChargingModel(HttpServletRequest request, XhpcTimingChargingModelDto xhpcTimingChargingModelDto) {
LoginUser loginUser = tokenService.getLoginUser(request);
if(loginUser ==null){
return R.fail(1001, "登录信息为空");
}
if (xhpcTimingChargingModelDto.getReason() == null || "".equals(xhpcTimingChargingModelDto.getReason())) {
return R.fail(1001, "调整原因不能为空");
}
if (xhpcTimingChargingModelDto.getChargingStationId() == null || "".equals(xhpcTimingChargingModelDto.getChargingStationId())) {
return R.fail(1001, "场站不能为空");
}
if (xhpcTimingChargingModelDto.getTimingTime() == null || "".equals(xhpcTimingChargingModelDto.getTimingTime())) {
return R.fail(1001, "调整时间不能为空");
}else{
if(System.currentTimeMillis()>xhpcTimingChargingModelDto.getTimingTime().getTime()){
return R.fail(1001, "调整时间不能小于现在时间");
}
}
if (xhpcTimingChargingModelDto.getXhpcRateList() == null && xhpcTimingChargingModelDto.getXhpcRateList().size() == 0) {
return R.fail(1001, "费率不能为空");
}
if (xhpcTimingChargingModelDto.getXhpcRateTimeList() == null && xhpcTimingChargingModelDto.getXhpcRateTimeList().size() == 0) {
return R.fail(1001, "费率时段不能为空");
} else {
for (int i = 0; i < xhpcTimingChargingModelDto.getXhpcRateTimeList().size(); i++) {
String id = xhpcTimingChargingModelDto.getXhpcRateTimeList().get(i).getId();
if ("00".equals(id) || "01".equals(id) || "02".equals(id) || "03".equals(id)) {
} else {
return R.fail("1003", "费率id格式不对");
}
}
}
List<XhpcRateTimeDto> xhpcRateTimeList = xhpcTimingChargingModelDto.getXhpcRateTimeList();
for (int i = 0; i < xhpcRateTimeList.size(); i++) {
XhpcRateTimeDto xhpcRateTime = xhpcRateTimeList.get(i);
String start = xhpcRateTime.getStartTime();
String end = xhpcRateTime.getEndTime();
String id = xhpcRateTime.getId();
//检查格式,正则验证 [0-2][0-9][0-6][0][0]{2}
String pattern = "^([0-2][0-9]:([0]|[3])[0]:[0][0])";
Pattern compile = Pattern.compile(pattern);
Matcher m = compile.matcher(start);
if ("00".equals(id) || "01".equals(id) || "02".equals(id) || "03".equals(id)) {
} else {
return R.fail("1003", "费率id格式不对");
}
boolean isMatch = m.matches();
if (!isMatch) {
return R.fail("1003", "时间格式不对");
}
Matcher m1 = compile.matcher(end);
boolean isMatch1 = m1.matches();
if (!isMatch1) {
return R.fail("1003", "时间格式不对");
}
//判断结束时间是否小于开始时间
Date startTime = DateUtil.parse(start);
Date endTime = DateUtil.parse(end);
if (startTime.getTime() > endTime.getTime()) {
return R.fail("1002", "开始时间不能大于结束时间");
}
}
//判断是否有重叠
for (int i = 0; i < xhpcRateTimeList.size(); i++) {
XhpcRateTimeDto xhpcRateTimeOne = xhpcRateTimeList.get(i);
Date startOne = DateUtil.parse(xhpcRateTimeOne.getStartTime());
Date endOne = DateUtil.parse(xhpcRateTimeOne.getEndTime());
for (int j = i + 1; j < xhpcRateTimeList.size(); j++) {
XhpcRateTimeDto xhpcRateTimeTwo = xhpcRateTimeList.get(j);
Date startTwo = DateUtil.parse(xhpcRateTimeTwo.getStartTime());
Date endTwo = DateUtil.parse(xhpcRateTimeTwo.getEndTime());
if (DateUtil.compare(startOne, endTwo) < 0 && DateUtil.compare(startTwo, endOne) < 0) {
return R.fail("1004", "时间段有重叠");
}
}
}
Long chargingStationId = xhpcTimingChargingModelDto.getChargingStationId();
//创建定时计费模型
XhpcTimingChargingModel xhpcTimingChargingModel =new XhpcTimingChargingModel();
xhpcTimingChargingModel.setReason(xhpcTimingChargingModelDto.getReason());
xhpcTimingChargingModel.setTimingTime(xhpcTimingChargingModelDto.getTimingTime());
xhpcTimingChargingModel.setTenantId(loginUser.getTenantId());
xhpcTimingChargingModel.setCreateTime(new Date());
xhpcTimingChargingModel.setChargingStationId(chargingStationId);
int i = xhpcTimingChargingModelMapper.insertXhpcTimingChargingModel(xhpcTimingChargingModel);
if (i == 0) {
return R.fail("1006", "定时计费模型添加失败");
}
Long timingChargingModelId = xhpcTimingChargingModel.getTimingChargingModelId();
//添加费率
Map<String, Long> map = new HashMap<>();
List<XhpcRateDto> xhpcRateList = xhpcTimingChargingModelDto.getXhpcRateList();
for (int k = 0; k < xhpcRateList.size(); k++) {
//存费率信息并存储Map,费率时段使用找到费率id
XhpcRateDto xhpcRateDto = xhpcRateList.get(k);
XhpcTtimingChargingRate xhpcTtimingChargingRate = new XhpcTtimingChargingRate();
xhpcTtimingChargingRate.setChargingStationId(chargingStationId);
if ("00".equals(xhpcRateDto.getId()) || "01".equals(xhpcRateDto.getId()) || "02".equals(xhpcRateDto.getId()) || "03".equals(xhpcRateDto.getId())) {
if ("00".equals(xhpcRateDto.getId())) {
xhpcTtimingChargingRate.setName("尖费率");
} else if ("01".equals(xhpcRateDto.getId())) {
xhpcTtimingChargingRate.setName("峰费率");
} else if ("02".equals(xhpcRateDto.getId())) {
xhpcTtimingChargingRate.setName("平费率");
} else {
xhpcTtimingChargingRate.setName("谷费率");
}
xhpcTtimingChargingRate.setPowerFee(xhpcRateDto.getPowerFee());
xhpcTtimingChargingRate.setServiceFee(xhpcRateDto.getServiceFee());
xhpcTtimingChargingRate.setTimingChargingModelId(timingChargingModelId);
xhpcTtimingChargingRate.setRateValue(xhpcRateDto.getId());
xhpcTimingChargingModelMapper.insertXhpcTtimingChargingRate(xhpcTtimingChargingRate);
map.put(xhpcRateDto.getId(), xhpcTtimingChargingRate.getTimingChargingRateId());
}else{
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("添加费率错误,请稍后在试");
}
}
//添加费率时段
//冒泡排序结束时间小于开始时间排前面
//存费率时段从Map中获取费率id
//每个时间段都要存
//返回计费模型 24:00 转成 00:00
XhpcRateTimeDto[] xhpcRateTimeDtosArr = new XhpcRateTimeDto[xhpcRateTimeList.size()];
xhpcRateTimeList.toArray(xhpcRateTimeDtosArr);
XhpcRateTimeDto[] xhpcRateTimeDtos = bubbleSort(xhpcRateTimeDtosArr);
//排序好的费率时段
List<XhpcRateTimeDto> list = Arrays.asList(xhpcRateTimeDtos);
//默认时段费率Id
Long defaultPeriodId = null;
if (xhpcTimingChargingModelDto.getDefaultPeriodId() != null) {
defaultPeriodId = map.get(xhpcTimingChargingModelDto.getDefaultPeriodId());
}
//默认费率类型值
String rateValue = xhpcTimingChargingModelDto.getDefaultPeriodId();
for (int k = 0; k < list.size(); k++) {
XhpcRateTimeDto xhpcRateTimeDto = list.get(k);
String startTime = xhpcRateTimeDto.getStartTime();
String endTime = xhpcRateTimeDto.getEndTime();
String rateValues = xhpcRateTimeDto.getId();
Long defaultPeriodIdMap = map.get(rateValues);
String str = startTime.split(":")[0];
int st= Integer.valueOf(str);
String endT = endTime.split(":")[0];
int end= Integer.valueOf(endT);
if(list.size() == 1){
if(!"00:00:00".equals(xhpcRateTimeDto.getStartTime())){
if(rateValue ==null || "".equals(rateValue)){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("请填写默认时间段费率");
}
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodId, "00:00:00", startTime, 2, rateValue);
}
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodIdMap, startTime, endTime,1, rateValues);
if(!endTime.equals("24:00:00")) {
if(rateValue ==null || "".equals(rateValue)){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("请填写默认时间段费率");
}
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodId, endTime, "24:00:00", 2, rateValue);
}
}else{
if(k == 0){
if(!"00:00:00".equals(xhpcRateTimeDto.getStartTime())){
if(rateValue ==null || "".equals(rateValue)){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("请填写默认时间段费率");
}
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodId, "00:00:00", startTime,2, rateValue);
}
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodIdMap, startTime, endTime,1, rateValues);
}else if(k < list.size()-1){
String endTimeK = list.get(k - 1).getEndTime();
if (!endTimeK.equals(startTime)) {
if(rateValue ==null || "".equals(rateValue)){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("请填写默认时间段费率");
}
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodId, endTimeK, startTime,2, rateValue);
}
//并把本条数据也添加上
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodIdMap, startTime, endTime,1, rateValues);
}else{
String endTimeK = list.get(k - 1).getEndTime();
if (!endTimeK.equals(startTime)) {
if(rateValue ==null || "".equals(rateValue)){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("请填写默认时间段费率");
}
//添加一条默认费率时段
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodId, endTimeK, startTime,2, rateValue);
}
//并把本条数据也添加上
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodIdMap, startTime, endTime,1, rateValues);
if (!endTime.equals("24:00:00")) {
if(rateValue ==null || "".equals(rateValue)){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return R.fail("请填写默认时间段费率");
}
//添加一条默认费率时段
addXhpcRateTime(chargingStationId, timingChargingModelId, defaultPeriodId, endTime, "24:00:00",2, rateValue);
}
}
}
}
return R.ok();
}
@Override
public R updateXhpcTimingChargingModel(Long timingChargingModelId) {
//查询是否是未执行状态
XhpcTimingChargingModel xhpcTimingChargingModel = xhpcTimingChargingModelMapper.getXhpcTimingChargingModelById(timingChargingModelId);
if(xhpcTimingChargingModel ==null){
return R.fail("数据不存在");
}else if (xhpcTimingChargingModel.getStatus()==0){
xhpcTimingChargingModel.setDelFlag(2);
xhpcTimingChargingModelMapper.updateXhpcTimingChargingModel(xhpcTimingChargingModel);
return R.ok();
}else if (xhpcTimingChargingModel.getStatus()==1){
return R.fail("该数据已执行,不能删除");
}else {
return R.fail("该数据执行错误,不能删除");
}
}
public static XhpcRateTimeDto[] bubbleSort(XhpcRateTimeDto[] args) {
//冒泡排序算法
for (int i = 0; i < args.length - 1; i++) {
for (int j = i + 1; j < args.length; j++) {
String start = args[i].getEndTime();
String end = args[j].getStartTime();
if (DateUtil.parse(start).getTime() > DateUtil.parse(end).getTime()) {
XhpcRateTimeDto temp = args[i];
args[i] = args[j];
args[j] = temp;
}
}
}
return args;
}
private void addXhpcRateTime(Long chargingStationId, Long rateModelId, Long defaultPeriodId, String startTime, String endTime,int type, String rateValue) {
XhpcTimingChargingTime xhpcTimingChargingTime = new XhpcTimingChargingTime();
xhpcTimingChargingTime.setChargingStationId(chargingStationId);
xhpcTimingChargingTime.setTimingChargingRateId(defaultPeriodId);
Date start = DateUtil.parse(startTime);
xhpcTimingChargingTime.setStartTime(start);
Date emd = DateUtil.parse(endTime);
xhpcTimingChargingTime.setEndTime(emd);
xhpcTimingChargingTime.setTimingChargingModelId(rateModelId);
xhpcTimingChargingTime.setType(type);
xhpcTimingChargingTime.setRateValue(rateValue);
xhpcTimingChargingTime.setCreateTime(new Date());
xhpcTimingChargingModelMapper.insertXhpcTimingChargingTime(xhpcTimingChargingTime);
}
}

View File

@ -0,0 +1,333 @@
<?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.xhpc.charging.station.mapper.XhpcTimingChargingModelMapper">
<resultMap id="BaseResultMap" type="com.xhpc.common.domain.XhpcTimingChargingModel">
<result property="timingChargingModelId" column="timing_charging_model_id"/>
<result property="reason" column="reason"/>
<result property="chargingStationId" column="charging_station_id"/>
<result property="timingTime" column="timing_time"/>
<result property="errorReason" column="error_reason"/>
<result property="number" column="number"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="remark" column="remark"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
<select id="list" resultType="map">
select
tcm.timing_charging_model_id as timingChargingModelId,
tcm.reason as reason,
cs.name as chargingStationName,
tcm.timing_time as timingTime,
tcm.status as status,
tcm.create_time as createTime
from xhpc_timing_charging_model as tcm
left join xhpc_charging_station as cs on cs.charging_station_id = tcm.charging_station_id
where tcm.del_flag =0
<if test="chargingStationId !=null">
and tcm.charging_station_id = #{chargingStationId}
</if>
<if test="reason !=null and ''!=reason">
and tcm.reason like concat('%', #{reason}, '%')
</if>
<if test="status !=null">
and tcm.status = #{status}
</if>
<if test="startTime !=null and '' !=startTime">
and tcm.timing_time &gt;=#{startTime}
</if>
<if test="endTime !=null and '' !=endTime">
and tcm.timing_time &lt;=#{endTime}
</if>
</select>
<insert id="insertXhpcTimingChargingModel" parameterType="com.xhpc.common.domain.XhpcTimingChargingModel" useGeneratedKeys="true" keyProperty="timingChargingModelId">
insert into xhpc_timing_charging_model
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="null != reason and ''!=reason">
reason,
</if>
<if test="null != chargingStationId ">
charging_station_id,
</if>
<if test="null != timingTime ">
timing_time,
</if>
<if test="null != tenantId ">
tenant_id,
</if>
<if test="null != status ">
status,
</if>
<if test="null != delFlag ">
del_flag,
</if>
<if test="null != createTime ">
create_time,
</if>
<if test="null != createBy and '' != createBy">
create_by,
</if>
<if test="null != updateTime ">
update_time,
</if>
<if test="null != updateBy and '' != updateBy">
update_by,
</if>
<if test="null != remark and '' != remark">
remark
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="null != reason and ''!=reason">
#{reason},
</if>
<if test="null != chargingStationId ">
#{chargingStationId},
</if>
<if test="null != timingTime ">
#{timingTime},
</if>
<if test="null != tenantId ">
#{tenantId},
</if>
<if test="null != status ">
#{status},
</if>
<if test="null != delFlag ">
#{delFlag},
</if>
<if test="null != createTime ">
#{createTime},
</if>
<if test="null != createBy and '' != createBy">
#{createBy},
</if>
<if test="null != updateTime ">
#{updateTime},
</if>
<if test="null != updateBy and '' != updateBy">
#{updateBy},
</if>
<if test="null != remark and '' != remark">
#{remark}
</if>
</trim>
</insert>
<insert id="insertXhpcTtimingChargingRate" parameterType="com.xhpc.common.domain.XhpcTtimingChargingRate" useGeneratedKeys="true" keyProperty="timingChargingRateId">
insert into xhpc_timing_charging_rate
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="null != powerFee">
power_fee,
</if>
<if test="null != serviceFee">
service_fee,
</if>
<if test="null != chargingStationId ">
charging_station_id,
</if>
<if test="null != name and ''!=name">
name,
</if>
<if test="null != timingChargingModelId ">
timing_charging_model_id,
</if>
<if test="null != rateValue and ''!=rateValue ">
rate_value,
</if>
<if test="null != tenantId ">
tenant_id,
</if>
<if test="null != status ">
status,
</if>
<if test="null != delFlag ">
del_flag,
</if>
<if test="null != createTime ">
create_time,
</if>
<if test="null != createBy and '' != createBy">
create_by,
</if>
<if test="null != updateTime ">
update_time,
</if>
<if test="null != updateBy and '' != updateBy">
update_by,
</if>
<if test="null != remark and '' != remark">
remark
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="null != powerFee">
#{powerFee},
</if>
<if test="null != serviceFee">
#{serviceFee},
</if>
<if test="null != chargingStationId ">
#{chargingStationId},
</if>
<if test="null != name and ''!=name">
#{name},
</if>
<if test="null != timingChargingModelId ">
#{timingChargingModelId},
</if>
<if test="null != rateValue and ''!=rateValue ">
#{rateValue},
</if>
<if test="null != tenantId ">
#{tenantId},
</if>
<if test="null != status ">
#{status},
</if>
<if test="null != delFlag ">
#{delFlag},
</if>
<if test="null != createTime ">
#{createTime},
</if>
<if test="null != createBy and '' != createBy">
#{createBy},
</if>
<if test="null != updateTime ">
#{updateTime},
</if>
<if test="null != updateBy and '' != updateBy">
#{updateBy},
</if>
<if test="null != remark and '' != remark">
#{remark}
</if>
</trim>
</insert>
<insert id="insertXhpcTimingChargingTime" parameterType="com.xhpc.common.domain.XhpcTimingChargingTime" useGeneratedKeys="true" keyProperty="timingChargingTimeId">
insert into xhpc_timing_charging_time
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="null != timingChargingRateId">
timing_charging_rate_id,
</if>
<if test="null != chargingStationId ">
charging_station_id,
</if>
<if test="null != startTime">
start_time,
</if>
<if test="null != endTime">
end_time,
</if>
<if test="null != timingChargingModelId ">
timing_charging_model_id,
</if>
<if test="null != rateValue and ''!=rateValue ">
rate_value,
</if>
<if test="null != type ">
type,
</if>
<if test="null != status ">
status,
</if>
<if test="null != delFlag ">
del_flag,
</if>
<if test="null != createTime ">
create_time,
</if>
<if test="null != createBy and '' != createBy">
create_by,
</if>
<if test="null != updateTime ">
update_time,
</if>
<if test="null != updateBy and '' != updateBy">
update_by,
</if>
<if test="null != remark and '' != remark">
remark
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="null != timingChargingRateId">
#{timingChargingRateId},
</if>
<if test="null != chargingStationId ">
#{chargingStationId},
</if>
<if test="null != startTime">
#{startTime},
</if>
<if test="null != endTime">
#{endTime},
</if>
<if test="null != timingChargingModelId ">
#{timingChargingModelId},
</if>
<if test="null != rateValue and ''!=rateValue ">
#{rateValue},
</if>
<if test="null != type ">
#{type},
</if>
<if test="null != status ">
#{status},
</if>
<if test="null != delFlag ">
#{delFlag},
</if>
<if test="null != createTime ">
#{createTime},
</if>
<if test="null != createBy and '' != createBy">
#{createBy},
</if>
<if test="null != updateTime ">
#{updateTime},
</if>
<if test="null != updateBy and '' != updateBy">
#{updateBy},
</if>
<if test="null != remark and '' != remark">
#{remark}
</if>
</trim>
</insert>
<select id="getXhpcTimingChargingModelById" resultMap="BaseResultMap">
select * from xhpc_timing_charging_model where timing_charging_model_id =#{timingChargingModelId} and del_flag=0
</select>
<update id="updateXhpcTimingChargingModel" parameterType="Integer">
update xhpc_timing_charging_model
<trim prefix="SET" suffixOverrides=",">
<if test="chargingStationId != null">charging_station_id = #{chargingStationId},</if>
<if test="reason != null and ''!=reason">reason = #{reason},</if>
<if test="timingTime != null">timing_time = #{timingTime},</if>
<if test="errorReason != null and ''!=errorReason">error_reason = #{errorReason},</if>
<if test="number != null">number = #{number},</if>
<if test="status != null">status = #{status},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where timing_charging_model_id =#{timingChargingModelId}
</update>
</mapper>

View File

@ -21,7 +21,7 @@ public interface CardHistoryOrderService {
* @param userType 用户类型 * @param userType 用户类型
* @param tenantId 租户 * @param tenantId 租户
* @param type 0 平台 1运营商 * @param type 0 平台 1运营商
* @param grantOperator 运营商id * @param grantOperator 运营商站点编号6位
* @return * @return
*/ */
@GetMapping("/api/chargeOrder/cardStartup") @GetMapping("/api/chargeOrder/cardStartup")

View File

@ -0,0 +1,23 @@
package com.xhpc.common.api.dto;
import com.xhpc.common.domain.XhpcTimingChargingModel;
import lombok.Data;
import java.util.List;
/**
* @author yuyang
* @date 2022/2/22 14:21
*/
@Data
public class XhpcTimingChargingModelDto extends XhpcTimingChargingModel {
//费率
List<XhpcRateDto> xhpcRateList;
//费率时段
List<XhpcRateTimeDto> xhpcRateTimeList;
//默认时段费率
String defaultPeriodId;
}

View File

@ -0,0 +1,57 @@
package com.xhpc.common.domain;
import com.xhpc.common.core.web.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
* @author yuyang
* @date 2022/2/22 13:39
*/
@Data
public class XhpcTimingChargingModel extends BaseEntity {
private Long timingChargingModelId;
/**
* 调整原因
*/
private String reason;
/**
* 场站id
*/
private Long chargingStationId;
/**
* 定时时间
*/
private Date timingTime;
/**
* 失败原因
*/
private String errorReason;
/**
* 次数
*/
private Integer number;
/**
* 状态0未执行 1已执行 2执行错误
* */
private Integer status;
/**
* 删除标志0代表存在 2代表删除
* */
private Integer delFlag;
/**
* 租户id
*/
private String tenantId;
}

View File

@ -0,0 +1,47 @@
package com.xhpc.common.domain;
import com.xhpc.common.core.web.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
* @author yuyang
* @date 2022/2/22 15:24
*/
@Data
public class XhpcTimingChargingTime extends BaseEntity {
/** 费率时段id */
private Long timingChargingTimeId;
/** 电站id */
private Long chargingStationId;
/** 费率id */
private Long timingChargingRateId;
/** 启始时间 */
private Date startTime;
/** 结束时间 */
private Date endTime;
/** 状态0正常 1停用 */
private Integer status;
/** 状态0正常 1停用 */
private Integer delFlag;
/** 定时计费模型id */
private Long timingChargingModelId;
/** 时间排序有小到大 */
private Integer sort;
/** 1 设置时间段 2默认时间段 */
private Integer type;
/** 费率类型 00: 尖费率 01: 峰费率 02: 平费率 03: 谷费率 */
private String rateValue;
}

View File

@ -0,0 +1,43 @@
package com.xhpc.common.domain;
import com.xhpc.common.core.web.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author yuyang
* @date 2022/2/22 15:02
*/
@Data
public class XhpcTtimingChargingRate extends BaseEntity {
/** 费率id */
private Long timingChargingRateId;
/** 电站id */
private Long chargingStationId;
/** 电费 */
private BigDecimal powerFee;
/** 服务费 */
private BigDecimal serviceFee;
/** 名称 */
private String name;
/** 状态0正常 1停用 */
private Integer status;
/** 删除标志0代表存在 2代表删除 */
private Integer delFlag;
/** 定时计费模型id */
private Long timingChargingModelId;
/** 费率类型 00: 尖费率 01: 峰费率 02: 平费率 03: 谷费率 */
private String rateValue;
private String tenantId;
}

View File

@ -661,7 +661,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
if(type !=0){ if(type !=0){
//获取桩信息 //获取桩信息
Map<String, Object> xhpcChargingPileById =xhpcChargeOrderMapper.getXhpcChargingPileById(xhpcTerminal.getChargingPileId(),tenantId); Map<String, Object> xhpcChargingPileById =xhpcChargeOrderMapper.getXhpcChargingPileById(xhpcTerminal.getChargingPileId(),tenantId);
if(xhpcChargingPileById ==null || !xhpcChargingPileById.get("operatorId").toString().equals(grantOperator)){ if(xhpcChargingPileById ==null || !grantOperator.equals(xhpcChargingPileById.get("corpNo").toString())){
return R.fail(Constants.INVALID_OPERATOR); return R.fail(Constants.INVALID_OPERATOR);
} }
} }

View File

@ -401,10 +401,12 @@
select select
cp.charging_pile_id as chargingPileId, cp.charging_pile_id as chargingPileId,
cs.operator_id as operatorId, cs.operator_id as operatorId,
opn.corp_no as corpNo,
cp.communication_protocol_version as communicationProtocolVersion, cp.communication_protocol_version as communicationProtocolVersion,
cp.power as power cp.power as power
from xhpc_charging_pile as cp from xhpc_charging_pile as cp
left join xhpc_charging_station as cs on cs.charging_station_id = cp.charging_station_id left join xhpc_charging_station as cs on cs.charging_station_id = cp.charging_station_id
left join xhpc_operator as opn on opn.operator_id = cs.operator_id
where cp.charging_pile_id=#{chargingPileid} where cp.charging_pile_id=#{chargingPileid}
<if test="tenantId !=null and tenantId !=''"> <if test="tenantId !=null and tenantId !=''">
and cp.tenant_id=#{tenantId} and cp.tenant_id=#{tenantId}