diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java index 32ba57e1..68a6daab 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java @@ -88,7 +88,7 @@ public class XhpcCardServiceImpl implements IXhpcCardService { Long userId=xhpcIcCardInfo.getUserId(); Integer userType=xhpcIcCardInfo.getUserType(); String tenantId=xhpcIcCardInfo.getTenantId(); - Integer type =1;//改成卡授权的类型 + Integer type =Integer.valueOf(iccardInfo.getCardtype());//改成卡授权的类型 String grantOperator=iccardInfo.getCorpno();//改成卡授权的运营商 return cardHistoryOrderService.cardStartup(userId, serialNumber, userType,tenantId,type,grantOperator,rateModelId); } diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcTimingChargingModelController.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcTimingChargingModelController.java new file mode 100644 index 00000000..abd789fa --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcTimingChargingModelController.java @@ -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> 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); + } + + + +} diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcTimingChargingModelMapper.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcTimingChargingModelMapper.java new file mode 100644 index 00000000..8f8cf7dc --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcTimingChargingModelMapper.java @@ -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> 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); +} diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcTimingChargingModelService.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcTimingChargingModelService.java new file mode 100644 index 00000000..aee66e0f --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcTimingChargingModelService.java @@ -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> list(HttpServletRequest request, String reason, Integer status, String startTime, String endTime, Long chargingStationId); + + R addXhpcTimingChargingModel(HttpServletRequest request, XhpcTimingChargingModelDto xhpcTimingChargingModelDto); + + R updateXhpcTimingChargingModel(Long timingChargingModelId); + +} diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcTimingChargingModelServiceImpl.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcTimingChargingModelServiceImpl.java new file mode 100644 index 00000000..0db18570 --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcTimingChargingModelServiceImpl.java @@ -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> 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 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 map = new HashMap<>(); + List 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 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); + } +} diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcTimingChargingModelMapper.xml b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcTimingChargingModelMapper.xml new file mode 100644 index 00000000..df7c626a --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcTimingChargingModelMapper.xml @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + insert into xhpc_timing_charging_model + + + reason, + + + charging_station_id, + + + timing_time, + + + tenant_id, + + + status, + + + del_flag, + + + create_time, + + + create_by, + + + update_time, + + + update_by, + + + remark + + + + + #{reason}, + + + #{chargingStationId}, + + + #{timingTime}, + + + #{tenantId}, + + + #{status}, + + + #{delFlag}, + + + #{createTime}, + + + #{createBy}, + + + #{updateTime}, + + + #{updateBy}, + + + #{remark} + + + + + + insert into xhpc_timing_charging_rate + + + power_fee, + + + service_fee, + + + charging_station_id, + + + name, + + + timing_charging_model_id, + + + rate_value, + + + tenant_id, + + + status, + + + del_flag, + + + create_time, + + + create_by, + + + update_time, + + + update_by, + + + remark + + + + + #{powerFee}, + + + #{serviceFee}, + + + #{chargingStationId}, + + + #{name}, + + + #{timingChargingModelId}, + + + #{rateValue}, + + + #{tenantId}, + + + #{status}, + + + #{delFlag}, + + + #{createTime}, + + + #{createBy}, + + + #{updateTime}, + + + #{updateBy}, + + + #{remark} + + + + + + insert into xhpc_timing_charging_time + + + timing_charging_rate_id, + + + charging_station_id, + + + start_time, + + + end_time, + + + timing_charging_model_id, + + + rate_value, + + + type, + + + status, + + + del_flag, + + + create_time, + + + create_by, + + + update_time, + + + update_by, + + + remark + + + + + #{timingChargingRateId}, + + + #{chargingStationId}, + + + #{startTime}, + + + #{endTime}, + + + #{timingChargingModelId}, + + + #{rateValue}, + + + #{type}, + + + #{status}, + + + #{delFlag}, + + + #{createTime}, + + + #{createBy}, + + + #{updateTime}, + + + #{updateBy}, + + + #{remark} + + + + + + + + update xhpc_timing_charging_model + + charging_station_id = #{chargingStationId}, + reason = #{reason}, + timing_time = #{timingTime}, + error_reason = #{errorReason}, + number = #{number}, + status = #{status}, + del_flag = #{delFlag}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + remark = #{remark}, + + where timing_charging_model_id =#{timingChargingModelId} + + + diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/CardHistoryOrderService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/CardHistoryOrderService.java index 486fe6b0..01f7bcb1 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/CardHistoryOrderService.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/CardHistoryOrderService.java @@ -21,7 +21,7 @@ public interface CardHistoryOrderService { * @param userType 用户类型 * @param tenantId 租户 * @param type 0 平台 1运营商 - * @param grantOperator 运营商id + * @param grantOperator 运营商站点编号6位 * @return */ @GetMapping("/api/chargeOrder/cardStartup") diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/dto/XhpcTimingChargingModelDto.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/dto/XhpcTimingChargingModelDto.java new file mode 100644 index 00000000..06dd964a --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/dto/XhpcTimingChargingModelDto.java @@ -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 xhpcRateList; + + //费率时段 + List xhpcRateTimeList; + + //默认时段费率 + String defaultPeriodId; +} diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTimingChargingModel.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTimingChargingModel.java new file mode 100644 index 00000000..e7745e78 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTimingChargingModel.java @@ -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; +} diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTimingChargingTime.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTimingChargingTime.java new file mode 100644 index 00000000..f9fd429b --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTimingChargingTime.java @@ -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; +} diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTtimingChargingRate.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTtimingChargingRate.java new file mode 100644 index 00000000..72df86fc --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/domain/XhpcTtimingChargingRate.java @@ -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; +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java index 3ee18734..738736af 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java @@ -661,7 +661,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar if(type !=0){ //获取桩信息 Map 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); } } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml index 6b39086d..2ba7906e 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml @@ -401,10 +401,12 @@ select cp.charging_pile_id as chargingPileId, cs.operator_id as operatorId, + opn.corp_no as corpNo, cp.communication_protocol_version as communicationProtocolVersion, cp.power as power 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_operator as opn on opn.operator_id = cs.operator_id where cp.charging_pile_id=#{chargingPileid} and cp.tenant_id=#{tenantId}