From 5be3ade7e882086a4b425a08bd54c74e4ec5ef4a Mon Sep 17 00:00:00 2001 From: "2265829957@qq.com" <2265829957@qq.com> Date: Tue, 30 Sep 2025 15:42:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9F=AD=E4=BF=A1=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E7=94=B1=E5=B0=8F=E5=8D=8E=E5=85=85=E7=94=B5=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E7=BF=94=E6=A1=A6=E5=85=85=E7=94=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xhpc/evcs/dto/PageRequest.java | 3 +- .../evcs/api/CheckChargeOrderController.java | 83 +- .../api/QueryPlaceholderRulesController.java | 4 +- .../evcs/api/QueryStationsInfoController.java | 38 +- .../evcs/jpa/PlaceholderIOrderRepository.java | 6 + .../NotificationOvertimeOrderInfoTask.java | 138 ++- .../NotificationStationInfoKuaiDianTask.java | 163 ++-- .../NotificationPlaceholderOrderInfoTask.java | 67 +- .../NotificationPlaceholderRulesTask.java | 33 +- .../NotificationStationInfoXinDianTuTask.java | 164 ++-- .../src/main/resources/bootstrap.yml | 6 +- .../com/xhpc/system/api/domain/SysUser.java | 4 + .../xhpc/auth/controller/TokenController.java | 4 +- ruoyi-auth/src/main/resources/bootstrap.yml | 4 +- .../src/main/resources/bootstrap.yml | 6 +- .../src/main/resources/bootstrap.yml | 4 +- .../src/main/resources/bootstrap.yml | 4 +- .../src/main/resources/bootstrap.yml | 4 +- .../com/xhpc/system/task/XhpcTenantTask.java | 2 +- .../src/main/resources/bootstrap.yml | 4 +- .../resources/mapper/system/SysUserMapper.xml | 1 + .../src/main/resources/bootstrap.yml | 4 +- .../XhpcDeviceMessageController.java | 40 + .../mapper/XhpcDeviceMessageMapper.java | 8 + .../service/IXhpcDeviceMessageService.java | 10 + .../service/impl/WorkOrderServiceImpl.java | 2 +- .../impl/XhpcClearingBankServiceImpl.java | 2 +- .../impl/XhpcDeviceMessageServiceImpl.java | 41 + .../xhpc/activity/task/AutoClearDataTask.java | 2 +- .../src/main/resources/bootstrap.yml | 4 +- .../mapper/XhpcDeviceMessageMapper.xml | 50 + .../mapper/XhpcHistoryOrderMapper.xml | 48 +- .../card/controller/XhpcCardController.java | 13 + .../xhpc/card/mapper/TIccardLogMapper.java | 2 +- .../xhpc/card/service/IXhpcCardService.java | 5 + .../service/impl/XhpcCardServiceImpl.java | 21 +- .../src/main/resources/bootstrap.yml | 4 +- .../resources/mapper/TIccardLogMapper.xml | 2 +- .../XhpcTimingChargingModelServiceImpl.java | 2 +- .../src/main/resources/bootstrap.yml | 10 +- .../order/domain/XhpcPlaceholderOrder.java | 10 +- .../xhpc/general/constant/AliyunTemplate.java | 7 +- .../constant/AliyunTemplateKeyWord.java | 3 + .../general/controller/XhpcSmsController.java | 27 +- .../general/service/XhpcSmsServiceImpl.java | 75 +- .../src/main/resources/bootstrap.yml | 4 +- .../order/api/XhpcPileOrderController.java | 11 + .../XhpcPlaceholderOrderController.java | 155 +++- .../order/mapper/XhpcChargeOrderMapper.java | 7 + .../mapper/XhpcPlaceholderOrderMapper.java | 52 ++ .../service/IXhpcChargeOrderService.java | 2 + .../service/IXhpcPlaceholderOrderService.java | 84 +- .../impl/XhpcChargeOrderServiceImpl.java | 59 +- .../impl/XhpcHistoryOrderServiceImpl.java | 21 +- .../impl/XhpcPlaceholderOrderServiceImpl.java | 873 +++++++++++++++++- .../impl/XhpcRealTimeOrderServiceImpl.java | 20 +- .../src/main/resources/bootstrap.yml | 4 +- .../mapper/XhpcChargeOrderMapper.xml | 9 + .../mapper/XhpcHistoryOrderMapper.xml | 12 + .../mapper/XhpcPlaceholderOrderMapper.xml | 493 +++++++++- .../src/main/resources/bootstrap.yml | 4 +- .../mapper/XhpcRechargeOrderMapper.xml | 4 - .../com/xhpc/pp/domain/XhpcDeviceMessage.java | 8 + .../com/xhpc/pp/logic/RealtimeDataLogic.java | 2 + .../src/main/resources/bootstrap.yml | 4 +- .../mapper/XhpcDeviceMessageMapper.xml | 6 + .../user/domain/InvoicedOrderResponse.java | 4 + .../java/com/xhpc/user/pojo/XhpcInvoice.java | 9 + .../service/impl/XhpcInvoiceServiceImpl.java | 6 + .../src/main/resources/bootstrap.yml | 4 +- .../mapper/XhpcHistoryOrderMapper.xml | 24 +- .../src/main/resources/bootstrap.yml | 4 +- 72 files changed, 2606 insertions(+), 413 deletions(-) create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcDeviceMessageController.java create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/IXhpcDeviceMessageService.java create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcDeviceMessageServiceImpl.java diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/PageRequest.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/PageRequest.java index 5124858d..e1562a3d 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/PageRequest.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/PageRequest.java @@ -19,5 +19,6 @@ public class PageRequest { Integer pageNo = 1; @JsonProperty(value = "PageSize", defaultValue = "10") Integer pageSize = 10; - + @JsonProperty("StationID") + String StationID = ""; } diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java index 14e2f34f..4cf46e91 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java @@ -92,33 +92,70 @@ public class CheckChargeOrderController { // CommonRequest commonRequest = new CommonRequest<>(); // XDTPlaceholderRules xdtPlaceholderRules = new XDTPlaceholderRules(); // xdtPlaceholderRules.setStationIDs(st); - CommonRequest commonRequest = new CommonRequest<>(); - - XDTPlaceHolderOrderStatus xdtPlaceHolderOrderStatus = new XDTPlaceHolderOrderStatus(); - xdtPlaceHolderOrderStatus.setPlaceholderOrderID("8083600080000101250806101922"); - xdtPlaceHolderOrderStatus.setStatus(2); - xdtPlaceHolderOrderStatus.setRefundMoney(10.0); - String data = JSONUtil.toJSONString(xdtPlaceHolderOrderStatus); - commonRequest.setData(data); - commonRequest.setOperatorId("MA25CNM38"); - String s = encryptReqOut("8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6", "Ut5UFdqDthiJyncU", commonRequest); - - -// CommonRequest commonRequestYu = new CommonRequest<>(); -// TokenRequest tokenRequest = new TokenRequest(); -// tokenRequest.setOperatorId("MA6DFCTD5"); -// tokenRequest.setOperatorSecret("7hUeAsYVBrjw8sup"); -// String data1 = JSONUtil.toJSONString(tokenRequest); -// commonRequestYu.setData(data1); -// commonRequestYu.setOperatorId("MA6DFCTD5"); +// CommonRequest commonRequest = new CommonRequest<>(); // -// String s = encryptReqOut("YPFVz1OvAS4nSwLW", "5tLoP60aR9QUB5Mx", "S94xUpTpOIlLJBk8", commonRequestYu); +// XDTPlaceHolderOrderStatus xdtPlaceHolderOrderStatus = new XDTPlaceHolderOrderStatus(); +// xdtPlaceHolderOrderStatus.setPlaceholderOrderID("8083600080000101250806101922"); +// xdtPlaceHolderOrderStatus.setStatus(2); +// xdtPlaceHolderOrderStatus.setRefundMoney(10.0); +// +// +// +// Map map =new HashMap<>(); +// map.put("placeholderOrderId",158470L); +// +// +// String data = JSONUtil.toJSONString(map); +// commonRequest.setData(data); +// commonRequest.setOperatorId("MA25CNM38"); +// String s = encryptReqOut("8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6", "Ut5UFdqDthiJyncU", commonRequest); +// +// +// + CommonRequest pageRequest = new CommonRequest<>(); + PageRequest pageRequest1 = new PageRequest(); + pageRequest1.setPageNo(1); + pageRequest1.setPageSize(10); + //pageRequest1.setStationID("4"); + + +// CommonRequest commonRequest =new CommonRequest<>(); +// +// XDTPlaceholderRules xdtPlaceholderRules = new XDTPlaceholderRules(); +// +// String [] stationIDs=new String[1]; +// stationIDs[0] ="4"; +// xdtPlaceholderRules.setStationIDs(stationIDs); + + String data = JSONUtil.toJSONString(pageRequest1); + pageRequest.setData(data); + pageRequest.setOperatorId("MA25CNM38"); + String dataYu = encryptReqOut("8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6", "wAeYIVQUwd0iGZsV", pageRequest); + + System.out.println("=====加密====sss==============="+dataYu); + + + CommonRequest commonRequestYu = new CommonRequest<>(); + TokenRequest tokenRequest = new TokenRequest(); + tokenRequest.setOperatorId("MA6DFCTD5"); + tokenRequest.setOperatorSecret("4t8jr80mrjjt2y7f"); + String data1 = JSONUtil.toJSONString(tokenRequest); + commonRequestYu.setData(data1); + commonRequestYu.setOperatorId("MA6DFCTD5"); + + String s = encryptReqOut("ojs67l46z3f7rhok", "tet9swfkyojkhaos", "75ghv1ie1zzex31s", commonRequestYu); System.out.println("==========sss==============="+s); - String date= "3VW7G53nG+8tIdKvSR9f2cGAjCHtSITxHxd73DXf6hiepOujG1Jidj3pIef3uOXVshhdLhoWPfWtkGDndjLrQ4CNezfdrXXIi1V2NlPfBpE="; - String s2 = decryptString(date, "ojs67l46z3f7rhok", "tet9swfkyojkhaos"); - System.out.println("===111=======sss==============="+s2); + String date= "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"; + String s2 = decryptString(date, "8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6"); + System.out.println("===解密=======sss==============="+s2); + + + String date3= "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"; + String s3 = decryptString(date3, "ojs67l46z3f7rhok", "tet9swfkyojkhaos"); + System.out.println("===解密=======sss3==============="+s3); + }catch (Exception e){ } diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryPlaceholderRulesController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryPlaceholderRulesController.java index 9a098916..de86eff0 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryPlaceholderRulesController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryPlaceholderRulesController.java @@ -72,8 +72,8 @@ public class QueryPlaceholderRulesController { PlaceholderRulesXinDianTu placeholderRulesXinDianTu = new PlaceholderRulesXinDianTu(); placeholderRulesXinDianTu.setStationID(stationId); - String startTime = DateUtil.format(xhpcPlacreholder.getStartTime(), "yyyy-MM-dd HH:mm:ss"); - String endTime = DateUtil.format(xhpcPlacreholder.getEndTime(), "yyyy-MM-dd HH:mm:ss"); + String startTime = DateUtil.format(xhpcPlacreholder.getStartTime(), "yyyy.MM.dd HH:mm:ss"); + String endTime = DateUtil.format(xhpcPlacreholder.getEndTime(), "yyyy.MM.dd HH:mm:ss"); placeholderRulesXinDianTu.setEffectStartTime(startTime); placeholderRulesXinDianTu.setEffectEndTime(endTime); placeholderRulesXinDianTu.setStatus(xhpcPlacreholder.getStatus()); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java index 130a7642..fa72e889 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java @@ -198,6 +198,7 @@ public class QueryStationsInfoController { String startTime = DateUtil.format(xhpcPlacreholder.getStartTime(), "yyyy-MM-dd HH:mm:ss"); String endTime = DateUtil.format(xhpcPlacreholder.getEndTime(), "yyyy-MM-dd HH:mm:ss"); + placeHolder.setEffectStartTime(DateUtil.parse(startTime,"yyyy-MM-dd HH:mm:ss")); placeHolder.setEffectEndTime(DateUtil.parse(endTime,"yyyy-MM-dd HH:mm:ss")); @@ -209,6 +210,9 @@ public class QueryStationsInfoController { PlaceHolderPrice placeHolderPrice = new PlaceHolderPrice(); placeHolderPrice.setStartTime(DateUtil.format(xhpcPlaceholderTimeOrder.getStartTime(),"HH:mm:ss")); placeHolderPrice.setEndTime(DateUtil.format(xhpcPlaceholderTimeOrder.getEndTime(),"HH:mm:ss")); + if("00:00:00".equals(placeHolderPrice.getEndTime())){ + placeHolderPrice.setEndTime("23:59:59"); + } placeHolderPrice.setPrice(xhpcPlaceholderTimeOrder.getPrice()); placeHolderPrices.add(placeHolderPrice); } @@ -241,23 +245,39 @@ public class QueryStationsInfoController { Long internetUserId = xhpcInternetUser.getInternetUserId(); List xhpcStationInternetBlacklist = xhpcStationInternetBlacklistRepo.findByInternetUserId(internetUserId); - List stationKeys = new ArrayList<>(REDIS.keys("station:*")); + List validStationKeys = new ArrayList<>(); - for (String stationKey : stationKeys) { - boolean isValid = true; + if(pageRequest.getStationID() !=null && !"".equals(pageRequest.getStationID())){ //查询不合作的电桩 for (XhpcStationInternetBlacklist xhpcStationInternetBlack : xhpcStationInternetBlacklist) { - if (stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { - isValid = false; + if (!pageRequest.getStationID().equals(xhpcStationInternetBlack.getChargingStationId().toString())) { + ChargingStationDto chargingStationDto = REDIS.getCacheObject("station:"+pageRequest.getStationID()); + if (chargingStationDto.getPiles() != null) { + validStationKeys.add("station:"+pageRequest.getStationID()); + break; + } } } - ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey); - if (chargingStationDto.getPiles() != null) { - if (isValid) { - validStationKeys.add(stationKey); + }else{ + List stationKeys = new ArrayList<>(REDIS.keys("station:*")); + + for (String stationKey : stationKeys) { + boolean isValid = true; + //查询不合作的电桩 + for (XhpcStationInternetBlacklist xhpcStationInternetBlack : xhpcStationInternetBlacklist) { + if (stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { + isValid = false; + } + } + ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey); + if (chargingStationDto.getPiles() != null) { + if (isValid) { + validStationKeys.add(stationKey); + } } } } + if (validStationKeys.size() > 0) { Integer pageSize = pageRequest.getPageSize(); int totalPage = validStationKeys.size() % pageSize == 0 ? validStationKeys.size() / pageSize : diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/PlaceholderIOrderRepository.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/PlaceholderIOrderRepository.java index 2a319e6e..e4370d90 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/PlaceholderIOrderRepository.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/PlaceholderIOrderRepository.java @@ -28,6 +28,12 @@ public interface PlaceholderIOrderRepository extends JpaRepository findTop100ByOperatorIdEvcsAndTypeAndConfirmResultOrderByPlaceholderOrderIdAsc(String OperatorIdEvcs,int type,int confirmResult); + + XhpcPlaceholderOrder findByPlaceholderOrderIdAndOperatorIdEvcsAndConfirmResultOrderByPlaceholderOrderIdAsc(Long placeholderOrderId,String OperatorIdEvcs,int confirmResult); + + XhpcPlaceholderOrder findByPlaceholderOrderIdAndOperatorIdEvcsAndTypeAndConfirmResultOrderByPlaceholderOrderIdAsc(Long placeholderOrderId,String OperatorIdEvcs,int type,int confirmResult); + + XhpcPlaceholderOrder findByPlaceholderOrderId(Long placeholderOrderId); XhpcPlaceholderOrder findByPlaceholderOrderNumber(String placeholderOrderNumber); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationOvertimeOrderInfoTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationOvertimeOrderInfoTask.java index d639fdb3..1779e79f 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationOvertimeOrderInfoTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationOvertimeOrderInfoTask.java @@ -16,6 +16,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.math.BigDecimal; @@ -31,6 +34,8 @@ import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT; * @Date 2025-07-09 14:06 */ @Component +@RestController +@RequestMapping("/overtimeOrderInfoTask") public class NotificationOvertimeOrderInfoTask extends CoreDispatcher { @Autowired @@ -43,7 +48,7 @@ public class NotificationOvertimeOrderInfoTask extends CoreDispatcher { private final Logger logger = LoggerFactory.getLogger(NotificationOvertimeOrderInfoTask.class); //9009开放定时任务 9099不开放 - //@Scheduled(fixedRate = 1000 * 30) + @Scheduled(fixedRate = 1000 * 30) public void run() throws IOException { AuthSecretToken authSecretTokenOut = @@ -110,31 +115,140 @@ public class NotificationOvertimeOrderInfoTask extends CoreDispatcher { List list = placeholderIOrderTimeRepository.findByPlaceholderOrderIdAndDelFlag(placeholderOrder.getPlaceholderOrderId(), 0); - List overtimeDetails =new ArrayList<>(); - for (int i = 0; i < list.size(); i++) { - XhpcPlaceholderTimeOrder xhpcPlaceholderTimeOrder = list.get(i); + + if(placeholderOrder.getTotalMoney().compareTo(new BigDecimal(0.00))==0){ + List overtimeDetails =new ArrayList<>(); OvertimeDetail overtimeDetail = new OvertimeDetail(); - overtimeDetail.setDetailStartTime(DateUtil.format(xhpcPlaceholderTimeOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); - overtimeDetail.setDetailEndTime(DateUtil.format(xhpcPlaceholderTimeOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); - overtimeDetail.setDetailMoney(xhpcPlaceholderTimeOrder.getTotalmoney()); - overtimeDetail.setOvertimePrice(xhpcPlaceholderTimeOrder.getPrice()); + overtimeDetail.setDetailStartTime(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailEndTime(DateUtil.format(placeholderOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailMoney(placeholderOrder.getTotalMoney()); + overtimeDetail.setOvertimePrice(new BigDecimal(0.2)); overtimeDetails.add(overtimeDetail); + placeholderOrderInfo.setOvertimeDetails(overtimeDetails); + }else{ + List overtimeDetails =new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + XhpcPlaceholderTimeOrder xhpcPlaceholderTimeOrder = list.get(i); + OvertimeDetail overtimeDetail = new OvertimeDetail(); + overtimeDetail.setDetailStartTime(DateUtil.format(xhpcPlaceholderTimeOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailEndTime(DateUtil.format(xhpcPlaceholderTimeOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailMoney(xhpcPlaceholderTimeOrder.getTotalmoney()); + overtimeDetail.setOvertimePrice(xhpcPlaceholderTimeOrder.getPrice()); + overtimeDetails.add(overtimeDetail); + + } + placeholderOrderInfo.setOvertimeDetails(overtimeDetails); } - placeholderOrderInfo.setOvertimeDetails(overtimeDetails); - - final OvertimeOrderInfo pushResp = notify(placeholderOrderInfo, authSecretTokenOut); if (pushResp != null) { placeholderOrder.setConfirmResult(pushResp.getSuccStat()); + placeholderOrder.setStatus(3); //logger.info("==============推送返回值================="+pushResp.toString()); placeholderIOrderRepository.save(placeholderOrder); } else { - logger.error("快电3dp[{}] order[{}/{}] push fail", "MA25CNM38",placeholderOrder.getSerialNumber(), placeholderOrder.getInternetSerialNumber()); + logger.error("快电3dp[{}] order[{}/{}] push fail", "MA005DBW1",placeholderOrder.getSerialNumber(), placeholderOrder.getInternetSerialNumber()); } } } } + @PostMapping("/v1/getXhpcPlaceholderOrder") + public void getXhpcPlaceholderOrder(Long placeholderOrderId) throws IOException { + + AuthSecretToken authSecretTokenOut = + authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType( + "MA005DBW1", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo + + + if (authSecretTokenOut != null) { + final XhpcPlaceholderOrder placeholderOrder=placeholderIOrderRepository.findByPlaceholderOrderId(placeholderOrderId); + if(placeholderOrder.getConfirmResult()==-2){ + PlaceholderOrderInfoKuaiDian placeholderOrderInfo = new PlaceholderOrderInfoKuaiDian(); + placeholderOrderInfo.setOvertimeBillCode(placeholderOrder.getPlaceholderOrderNumber()); + placeholderOrderInfo.setStartChargeSeq(placeholderOrder.getInternetSerialNumber()); + placeholderOrderInfo.setOvertimeBillStatus(1); + placeholderOrderInfo.setConnectorId(placeholderOrder.getTerminalNumber()); + placeholderOrderInfo.setBillEquipment(1); + placeholderOrderInfo.setStartTime(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setEndTime(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setTotalTimeSpan(0); + placeholderOrderInfo.setOvertimePrice(new BigDecimal(0)); + placeholderOrderInfo.setTotalMoney(new BigDecimal(0.00)); + + List overtimeDetails =new ArrayList<>(); + OvertimeDetail overtimeDetail = new OvertimeDetail(); + overtimeDetail.setDetailStartTime(placeholderOrderInfo.getStartTime()); + overtimeDetail.setDetailEndTime(placeholderOrderInfo.getStartTime()); + overtimeDetail.setDetailMoney(new BigDecimal(0.00)); + overtimeDetail.setOvertimePrice(new BigDecimal(0.00)); + overtimeDetails.add(overtimeDetail); + placeholderOrderInfo.setOvertimeDetails(overtimeDetails); + + + final OvertimeOrderInfo pushResp = notify(placeholderOrderInfo, authSecretTokenOut); + if (pushResp != null) { + if(pushResp.getSuccStat()==0){ + placeholderOrder.setConfirmResult(-1); + }else{ + placeholderOrder.setConfirmResult(pushResp.getSuccStat()); + } + //logger.info("==============推送返回值================="+pushResp.toString()); + placeholderIOrderRepository.save(placeholderOrder); + } else { + logger.error("新电途3dp[{}] order[{}/{}] push fail", "MA25CNM38",placeholderOrder.getSerialNumber(), placeholderOrder.getInternetSerialNumber()); + } + }else if(placeholderOrder.getConfirmResult()==-1){ + PlaceholderOrderInfoKuaiDian placeholderOrderInfo = new PlaceholderOrderInfoKuaiDian(); + placeholderOrderInfo.setOvertimeBillCode(placeholderOrder.getPlaceholderOrderNumber()); + placeholderOrderInfo.setStartChargeSeq(placeholderOrder.getInternetSerialNumber()); + placeholderOrderInfo.setOvertimeBillStatus(3); + placeholderOrderInfo.setConnectorId(placeholderOrder.getTerminalNumber()); + placeholderOrderInfo.setConnectorId(placeholderOrder.getTerminalNumber()); + placeholderOrderInfo.setBillEquipment(1); + placeholderOrderInfo.setConnectorId(placeholderOrder.getTerminalNumber()); + placeholderOrderInfo.setStartTime(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setEndTime(DateUtil.format(placeholderOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setTotalTimeSpan(placeholderOrder.getTotalTimeSpan()); + placeholderOrderInfo.setOvertimePrice(placeholderOrder.getOvertimePrice()); + placeholderOrderInfo.setTotalMoney(placeholderOrder.getTotalMoney()); + + if(placeholderOrder.getTotalMoney().compareTo(new BigDecimal(0.00))==0){ + List overtimeDetails =new ArrayList<>(); + OvertimeDetail overtimeDetail = new OvertimeDetail(); + overtimeDetail.setDetailStartTime(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailEndTime(DateUtil.format(placeholderOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailMoney(placeholderOrder.getTotalMoney()); + overtimeDetail.setOvertimePrice(new BigDecimal(0.2)); + overtimeDetails.add(overtimeDetail); + + placeholderOrderInfo.setOvertimeDetails(overtimeDetails); + }else{ + List list = placeholderIOrderTimeRepository.findByPlaceholderOrderIdAndDelFlag(placeholderOrder.getPlaceholderOrderId(), 0); + List overtimeDetails =new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + XhpcPlaceholderTimeOrder xhpcPlaceholderTimeOrder = list.get(i); + OvertimeDetail overtimeDetail = new OvertimeDetail(); + overtimeDetail.setDetailStartTime(DateUtil.format(xhpcPlaceholderTimeOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailEndTime(DateUtil.format(xhpcPlaceholderTimeOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); + overtimeDetail.setDetailMoney(xhpcPlaceholderTimeOrder.getTotalmoney()); + overtimeDetail.setOvertimePrice(xhpcPlaceholderTimeOrder.getPrice()); + overtimeDetails.add(overtimeDetail); + + } + placeholderOrderInfo.setOvertimeDetails(overtimeDetails); + } + final OvertimeOrderInfo pushResp = notify(placeholderOrderInfo, authSecretTokenOut); + if (pushResp != null) { + placeholderOrder.setConfirmResult(pushResp.getSuccStat()); + placeholderOrder.setStatus(3); + //logger.info("==============推送返回值================="+pushResp.toString()); + placeholderIOrderRepository.save(placeholderOrder); + } else { + logger.error("快电3dp[{}] order[{}/{}] push fail", "MA25CNM38",placeholderOrder.getSerialNumber(), placeholderOrder.getInternetSerialNumber()); + } + } + } + } public OvertimeOrderInfo notify(PlaceholderOrderInfoKuaiDian placeholderOrderInfo, AuthSecretToken authSecretTokenOut) throws JsonProcessingException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationStationInfoKuaiDianTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationStationInfoKuaiDianTask.java index 1ded5411..8436fda7 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationStationInfoKuaiDianTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/kuaidian/NotificationStationInfoKuaiDianTask.java @@ -40,93 +40,104 @@ public class NotificationStationInfoKuaiDianTask extends CoreDispatcher { //9009开放定时任务 9099不开放 - @Scheduled(cron = "0 50 0 1/1 * ? ") + //@Scheduled(cron = "0 0 0 1/1 * ? ") public void run() throws IOException { try{ List xhpcStationInternetBlacklist = xhpcStationInternetBlacklistRepo.findByInternetUserId(1L); List stationKeys = new ArrayList<>(REDIS.keys("station:*")); AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType("MA005DBW1", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo + + List validStationKeys = new ArrayList<>(); for (String stationKey : stationKeys) { + boolean isValid = true; //查询不合作的电桩 for (XhpcStationInternetBlacklist xhpcStationInternetBlack : xhpcStationInternetBlacklist) { - if (!stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { - // maybe对接第三方 - if (authSecretTokenOut != null) { - String chargingStationId = stationKey.substring(8); - //获取场站信息 - String key = "cdjgpc:station:".concat(chargingStationId)+".notification"; - CDStationInfo cdStationInfo =REDIS.getCacheObject(key); - cdStationInfo.setEquipmentInfos(new ArrayList<>()); - //查询场站是桩是否对应上 - ChargingStationDto stationDto = REDIS.getCacheObject("station:"+chargingStationId); - CacheRateModel cacheRateModel = REDIS.getCacheObject("rateModel:" + stationDto.getRateModelId()); - - StringBuilder price = new StringBuilder(); - StringBuilder svcPrice = new StringBuilder(); - - Integer t1Price = cacheRateModel.getT1Price(); - Integer t1SvcPrice = cacheRateModel.getT1SvcPrice(); - Integer t2Price = cacheRateModel.getT2Price(); - Integer t2SvcPrice = cacheRateModel.getT2SvcPrice(); - Integer t3Price = cacheRateModel.getT3Price(); - Integer t3SvcPrice = cacheRateModel.getT3SvcPrice(); - Integer t4Price = cacheRateModel.getT4Price(); - Integer t4SvcPrice = cacheRateModel.getT4SvcPrice(); - - if(cacheRateModel.getTfPricesSeq() !=null && cacheRateModel.getTfPricesSeq().length>0){ - price.append("{"); - svcPrice.append("{"); - for (int i = 0; i < cacheRateModel.getTfPricesSeq().length; i++) { - String time = getTime(i); - String s = cacheRateModel.getTfPricesSeq()[i]; - - if("00".equals(s)){ - price.append(time).append(t1Price.toString()).append(","); - svcPrice.append(time).append(t1SvcPrice.toString()).append(","); - }else if("01".equals(s)){ - price.append(time).append(t2Price.toString()).append(","); - svcPrice.append(time).append(t2SvcPrice.toString()).append(","); - }else if("02".equals(s)){ - price.append(time).append(t3Price.toString()).append(","); - svcPrice.append(time).append(t3SvcPrice.toString()).append(","); - }else{ - price.append(time).append(t4Price.toString()).append(","); - svcPrice.append(time).append(t4SvcPrice.toString()).append(","); - } - } - price.deleteCharAt(price.length()-1).append("}"); - svcPrice.deleteCharAt(svcPrice.length()-1).append("}"); - } - cdStationInfo.setElectricityFee(price.toString()); - cdStationInfo.setServiceFee(svcPrice.toString()); - Set pks = stationDto.getPiles(); - if (pks != null) { - List cdEquipmentInfos = new ArrayList<>(); - for (String pileNo : pks) { - String pk = "pile:".concat(pileNo); - String skey = "cdjgpc:".concat(pk)+".notification"; - CDEquipmentInfo cdEquipmentInfo = REDIS.getCacheObject(skey); - if(cdEquipmentInfo==null || "".equals(cdEquipmentInfo.getEquipmentID())){ - logger.info("该场站下面:"+pileNo+"桩未录入"); - }else{ - cdEquipmentInfos.add(cdEquipmentInfo); - } - } - cdStationInfo.setEquipmentInfos(cdEquipmentInfos); - } - cdStationInfo.setSwapMatchCarsName(null); - CommonRequest commonRequest = new CommonRequest<>(); - Map mapStationInfo =new HashMap<>(); - mapStationInfo.put("StationInfo",cdStationInfo); - String data = JSONUtil.toJSONString(mapStationInfo); - System.out.println("===新电途====data========"+data); - commonRequest.setData(data); - String result =ok(commonRequest,"/notification_stationInfo",authSecretTokenOut); - System.out.println("===新电途==推送充电站信息==result========"+result); - } + if (stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { + isValid = false; } } + ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey); + if (chargingStationDto.getPiles() != null) { + if (isValid) { + validStationKeys.add(stationKey); + } + } + } + for (String stationKey : validStationKeys) { + // maybe对接第三方 + if (authSecretTokenOut != null) { + String chargingStationId = stationKey.substring(8); + //获取场站信息 + String key = "cdjgpc:station:".concat(chargingStationId)+".notification"; + CDStationInfo cdStationInfo =REDIS.getCacheObject(key); + cdStationInfo.setEquipmentInfos(new ArrayList<>()); + //查询场站是桩是否对应上 + ChargingStationDto stationDto = REDIS.getCacheObject("station:"+chargingStationId); + CacheRateModel cacheRateModel = REDIS.getCacheObject("rateModel:" + stationDto.getRateModelId()); + + StringBuilder price = new StringBuilder(); + StringBuilder svcPrice = new StringBuilder(); + + Integer t1Price = cacheRateModel.getT1Price(); + Integer t1SvcPrice = cacheRateModel.getT1SvcPrice(); + Integer t2Price = cacheRateModel.getT2Price(); + Integer t2SvcPrice = cacheRateModel.getT2SvcPrice(); + Integer t3Price = cacheRateModel.getT3Price(); + Integer t3SvcPrice = cacheRateModel.getT3SvcPrice(); + Integer t4Price = cacheRateModel.getT4Price(); + Integer t4SvcPrice = cacheRateModel.getT4SvcPrice(); + + if(cacheRateModel.getTfPricesSeq() !=null && cacheRateModel.getTfPricesSeq().length>0){ + price.append("{"); + svcPrice.append("{"); + for (int i = 0; i < cacheRateModel.getTfPricesSeq().length; i++) { + String time = getTime(i); + String s = cacheRateModel.getTfPricesSeq()[i]; + if("00".equals(s)){ + price.append(time).append(t1Price.toString()).append(","); + svcPrice.append(time).append(t1SvcPrice.toString()).append(","); + }else if("01".equals(s)){ + price.append(time).append(t2Price.toString()).append(","); + svcPrice.append(time).append(t2SvcPrice.toString()).append(","); + }else if("02".equals(s)){ + price.append(time).append(t3Price.toString()).append(","); + svcPrice.append(time).append(t3SvcPrice.toString()).append(","); + }else{ + price.append(time).append(t4Price.toString()).append(","); + svcPrice.append(time).append(t4SvcPrice.toString()).append(","); + } + } + price.deleteCharAt(price.length()-1).append("}"); + svcPrice.deleteCharAt(svcPrice.length()-1).append("}"); + } + cdStationInfo.setElectricityFee(price.toString()); + cdStationInfo.setServiceFee(svcPrice.toString()); + Set pks = stationDto.getPiles(); + if (pks != null) { + List cdEquipmentInfos = new ArrayList<>(); + for (String pileNo : pks) { + String pk = "pile:".concat(pileNo); + String skey = "cdjgpc:".concat(pk)+".notification"; + CDEquipmentInfo cdEquipmentInfo = REDIS.getCacheObject(skey); + if(cdEquipmentInfo==null || "".equals(cdEquipmentInfo.getEquipmentID())){ + logger.info("该场站下面:"+pileNo+"桩未录入"); + }else{ + cdEquipmentInfos.add(cdEquipmentInfo); + } + } + cdStationInfo.setEquipmentInfos(cdEquipmentInfos); + } + cdStationInfo.setSwapMatchCarsName(null); + CommonRequest commonRequest = new CommonRequest<>(); + Map mapStationInfo =new HashMap<>(); + mapStationInfo.put("StationInfo",cdStationInfo); + String data = JSONUtil.toJSONString(mapStationInfo); + System.out.println("===新电途====data========"+data); + commonRequest.setData(data); + String result =ok(commonRequest,"/notification_stationInfo",authSecretTokenOut); + System.out.println("===新电途==推送充电站信息==result========"+result); + } } }catch (Exception e){ e.printStackTrace(); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderOrderInfoTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderOrderInfoTask.java index 98b99b5c..86a9229d 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderOrderInfoTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderOrderInfoTask.java @@ -14,6 +14,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.util.List; @@ -27,6 +30,8 @@ import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT; * @Date 2025-07-08 14:31 */ @Component +@RestController +@RequestMapping("/placeholderOrderInfoTask") public class NotificationPlaceholderOrderInfoTask extends CoreDispatcher { @@ -45,7 +50,6 @@ public class NotificationPlaceholderOrderInfoTask extends CoreDispatcher { authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType( "MA25CNM38", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo - if (authSecretTokenOut != null) { final List notYetPushOrder =placeholderIOrderRepository.findTop100ByOperatorIdEvcsAndConfirmResultOrderByPlaceholderOrderIdAsc("MA25CNM38",-2); for (XhpcPlaceholderOrder placeholderOrder : notYetPushOrder) { @@ -93,6 +97,7 @@ public class NotificationPlaceholderOrderInfoTask extends CoreDispatcher { final ChargeOrderInfoResponse pushResp = notify(placeholderOrderInfo, authSecretTokenOut); if (pushResp != null) { + placeholderOrder.setStatus(9); placeholderOrder.setConfirmResult(pushResp.getConfirmResult()); logger.debug("新电途3rd part order {} push result: {}", placeholderOrder.getSerialNumber(),pushResp.getConfirmResult()); //logger.info("==============推送返回值================="+pushResp.toString()); @@ -104,6 +109,66 @@ public class NotificationPlaceholderOrderInfoTask extends CoreDispatcher { } } + @PostMapping("/v1/getNotificationPlaceholderOrderInfo") + public void getNotificationPlaceholderOrderInfo(Long placeholderOrderId) throws IOException { + + AuthSecretToken authSecretTokenOut = + authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType( + "MA25CNM38", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo + + logger.info("===========placeholderOrderId=========="+placeholderOrderId); + if (authSecretTokenOut != null) { + final XhpcPlaceholderOrder placeholderOrder=placeholderIOrderRepository.findByPlaceholderOrderId(placeholderOrderId); + if(placeholderOrder.getConfirmResult()==-2){ + PlaceholderOrderInfo placeholderOrderInfo = new PlaceholderOrderInfo(); + placeholderOrderInfo.setPlaceholderOrderID(placeholderOrder.getPlaceholderOrderNumber()); + placeholderOrderInfo.setStarChargeSeq(placeholderOrder.getInternetSerialNumber()); + placeholderOrderInfo.setTimeStart(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setTimeEnd(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setHoldTime(0); + placeholderOrderInfo.setActuallyPay(0.0); + placeholderOrderInfo.setBillEquipment(1); + placeholderOrderInfo.setStatus(1); + + final ChargeOrderInfoResponse pushResp = notify(placeholderOrderInfo, authSecretTokenOut); + if (pushResp != null) { + if(pushResp.getConfirmResult()==0){ + placeholderOrder.setConfirmResult(-1); + }else{ + placeholderOrder.setConfirmResult(pushResp.getConfirmResult()); + } + logger.debug("新电途3rd part order {} push result: {}", placeholderOrder.getSerialNumber(),pushResp.getConfirmResult()); + //logger.info("==============推送返回值================="+pushResp.toString()); + placeholderIOrderRepository.save(placeholderOrder); + } else { + logger.error("新电途3dp[{}] order[{}/{}] push fail", "MA25CNM38",placeholderOrder.getSerialNumber(), placeholderOrder.getInternetSerialNumber()); + } + + }else if(placeholderOrder.getConfirmResult()==-1){ + PlaceholderOrderInfo placeholderOrderInfo = new PlaceholderOrderInfo(); + placeholderOrderInfo.setPlaceholderOrderID(placeholderOrder.getPlaceholderOrderNumber()); + placeholderOrderInfo.setStarChargeSeq(placeholderOrder.getInternetSerialNumber()); + placeholderOrderInfo.setTimeStart(DateUtil.format(placeholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setTimeEnd(DateUtil.format(placeholderOrder.getEndTime(),"yyyy-MM-dd HH:mm:ss")); + placeholderOrderInfo.setHoldTime(placeholderOrder.getTotalTimeSpan()); + placeholderOrderInfo.setActuallyPay(placeholderOrder.getTotalMoney().doubleValue()); + placeholderOrderInfo.setBillEquipment(1); + placeholderOrderInfo.setStatus(9); + + final ChargeOrderInfoResponse pushResp = notify(placeholderOrderInfo, authSecretTokenOut); + if (pushResp != null) { + placeholderOrder.setConfirmResult(pushResp.getConfirmResult()); + logger.debug("新电途3rd part order {} push result: {}", placeholderOrder.getSerialNumber(),pushResp.getConfirmResult()); + //logger.info("==============推送返回值================="+pushResp.toString()); + placeholderIOrderRepository.save(placeholderOrder); + } else { + logger.error("新电途3dp[{}] order[{}/{}] push fail", "MA25CNM38",placeholderOrder.getSerialNumber(), placeholderOrder.getInternetSerialNumber()); + } + } + + } + } + public ChargeOrderInfoResponse notify(PlaceholderOrderInfo placeholderOrderInfo, AuthSecretToken authSecretTokenOut) throws JsonProcessingException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderRulesTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderRulesTask.java index a1315453..c5be13d3 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderRulesTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationPlaceholderRulesTask.java @@ -2,6 +2,7 @@ package com.xhpc.evcs.notification.xindiantu; import cn.hutool.core.date.DateUtil; import com.fasterxml.jackson.core.JsonProcessingException; +import com.xhpc.common.api.dto.ChargingStationDto; import com.xhpc.evcs.domain.AuthSecretToken; import com.xhpc.evcs.domain.PriceInfo; import com.xhpc.evcs.domain.XhpcStationInternetBlacklist; @@ -16,6 +17,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.io.IOException; @@ -30,6 +34,8 @@ import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT; * @Date 2025-08-06 15:30 */ @Component +@RestController +@RequestMapping("/notificationPlaceholderRulesTask") public class NotificationPlaceholderRulesTask extends CoreDispatcher { @Resource @@ -43,17 +49,33 @@ public class NotificationPlaceholderRulesTask extends CoreDispatcher { private final Logger logger = LoggerFactory.getLogger(NotificationPlaceholderRulesTask.class); //9009开放定时任务 9099不开放 - //@Scheduled(cron = "0 0 3 1/1 * ? ") + @Scheduled(cron = "0 0 3 1/1 * ? ") + @PostMapping("/v1/run") public void run() throws IOException { AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType("MA25CNM38", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo List xhpcStationInternetBlacklist = xhpcStationInternetBlacklistRepo.findByInternetUserId(1L); List stationKeys = new ArrayList<>(REDIS.keys("station:*")); + + List validStationKeys = new ArrayList<>(); for (String stationKey : stationKeys) { + boolean isValid = true; //查询不合作的电桩 for (XhpcStationInternetBlacklist xhpcStationInternetBlack : xhpcStationInternetBlacklist) { - if (!stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { + if (stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { + isValid = false; + } + } + ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey); + if (chargingStationDto.getPiles() != null) { + if (isValid) { + validStationKeys.add(stationKey); + } + } + } + for (String stationKey : validStationKeys) { + if (authSecretTokenOut != null) { String stationId = stationKey.substring(8); XhpcPlacreholder xhpcPlacreholder = placeholderIRepository.findByChargingStationIdAndDelFlag(Long.valueOf(stationId), 0); @@ -61,8 +83,8 @@ public class NotificationPlaceholderRulesTask extends CoreDispatcher { PlaceholderRulesXinDianTu placeholderRulesXinDianTu = new PlaceholderRulesXinDianTu(); placeholderRulesXinDianTu.setStationID(stationId); - String startTime = DateUtil.format(xhpcPlacreholder.getStartTime(), "yyyy-MM-dd HH:mm:ss"); - String endTime = DateUtil.format(xhpcPlacreholder.getEndTime(), "yyyy-MM-dd HH:mm:ss"); + String startTime = DateUtil.format(xhpcPlacreholder.getStartTime(), "yyyy.MM.dd HH:mm:ss"); + String endTime = DateUtil.format(xhpcPlacreholder.getEndTime(), "yyyy.MM.dd HH:mm:ss"); placeholderRulesXinDianTu.setEffectStartTime(startTime); placeholderRulesXinDianTu.setEffectEndTime(endTime); placeholderRulesXinDianTu.setStatus(xhpcPlacreholder.getStatus()); @@ -84,8 +106,6 @@ public class NotificationPlaceholderRulesTask extends CoreDispatcher { notify(placeholderRulesXinDianTu,authSecretTokenOut); } - } - } } } @@ -93,6 +113,7 @@ public class NotificationPlaceholderRulesTask extends CoreDispatcher { public void notify(PlaceholderRulesXinDianTu placeholderRulesXinDianTu, AuthSecretToken authSecretTokenOut) throws JsonProcessingException { String data = JSONUtil.toJSONString(placeholderRulesXinDianTu); + logger.error("新电途========placeholderRulesXinDianTu================"+data); CommonRequest commonRequest = new CommonRequest<>(); commonRequest.setData(data); String responseBody = ok(commonRequest, "/notification_placeholder_rules", authSecretTokenOut); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationStationInfoXinDianTuTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationStationInfoXinDianTuTask.java index 6aa7aad7..1df99337 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationStationInfoXinDianTuTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/xindiantu/NotificationStationInfoXinDianTuTask.java @@ -40,93 +40,105 @@ public class NotificationStationInfoXinDianTuTask extends CoreDispatcher { //9009开放定时任务 9099不开放 - @Scheduled(cron = "0 40 0 1/1 * ? ") + //@Scheduled(cron = "0 1 0 1/1 * ? ") public void run() throws IOException { try{ List xhpcStationInternetBlacklist = xhpcStationInternetBlacklistRepo.findByInternetUserId(3L); List stationKeys = new ArrayList<>(REDIS.keys("station:*")); AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType("MA25CNM38", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo + + List validStationKeys = new ArrayList<>(); for (String stationKey : stationKeys) { + boolean isValid = true; //查询不合作的电桩 for (XhpcStationInternetBlacklist xhpcStationInternetBlack : xhpcStationInternetBlacklist) { - if (!stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { - // maybe对接第三方 - if (authSecretTokenOut != null) { - String chargingStationId = stationKey.substring(8); - //获取场站信息 - String key = "cdjgpc:station:".concat(chargingStationId)+".notification"; - CDStationInfo cdStationInfo =REDIS.getCacheObject(key); - cdStationInfo.setEquipmentInfos(new ArrayList<>()); - //查询场站是桩是否对应上 - ChargingStationDto stationDto = REDIS.getCacheObject("station:"+chargingStationId); - CacheRateModel cacheRateModel = REDIS.getCacheObject("rateModel:" + stationDto.getRateModelId()); - - StringBuilder price = new StringBuilder(); - StringBuilder svcPrice = new StringBuilder(); - - Integer t1Price = cacheRateModel.getT1Price(); - Integer t1SvcPrice = cacheRateModel.getT1SvcPrice(); - Integer t2Price = cacheRateModel.getT2Price(); - Integer t2SvcPrice = cacheRateModel.getT2SvcPrice(); - Integer t3Price = cacheRateModel.getT3Price(); - Integer t3SvcPrice = cacheRateModel.getT3SvcPrice(); - Integer t4Price = cacheRateModel.getT4Price(); - Integer t4SvcPrice = cacheRateModel.getT4SvcPrice(); - - if(cacheRateModel.getTfPricesSeq() !=null && cacheRateModel.getTfPricesSeq().length>0){ - price.append("{"); - svcPrice.append("{"); - for (int i = 0; i < cacheRateModel.getTfPricesSeq().length; i++) { - String time = getTime(i); - String s = cacheRateModel.getTfPricesSeq()[i]; - - if("00".equals(s)){ - price.append(time).append(t1Price.toString()).append(","); - svcPrice.append(time).append(t1SvcPrice.toString()).append(","); - }else if("01".equals(s)){ - price.append(time).append(t2Price.toString()).append(","); - svcPrice.append(time).append(t2SvcPrice.toString()).append(","); - }else if("02".equals(s)){ - price.append(time).append(t3Price.toString()).append(","); - svcPrice.append(time).append(t3SvcPrice.toString()).append(","); - }else{ - price.append(time).append(t4Price.toString()).append(","); - svcPrice.append(time).append(t4SvcPrice.toString()).append(","); - } - } - price.deleteCharAt(price.length()-1).append("}"); - svcPrice.deleteCharAt(svcPrice.length()-1).append("}"); - } - cdStationInfo.setElectricityFee(price.toString()); - cdStationInfo.setServiceFee(svcPrice.toString()); - Set pks = stationDto.getPiles(); - if (pks != null) { - List cdEquipmentInfos = new ArrayList<>(); - for (String pileNo : pks) { - String pk = "pile:".concat(pileNo); - String skey = "cdjgpc:".concat(pk)+".notification"; - CDEquipmentInfo cdEquipmentInfo = REDIS.getCacheObject(skey); - if(cdEquipmentInfo==null || "".equals(cdEquipmentInfo.getEquipmentID())){ - logger.info("该场站下面:"+pileNo+"桩未录入"); - }else{ - cdEquipmentInfos.add(cdEquipmentInfo); - } - } - cdStationInfo.setEquipmentInfos(cdEquipmentInfos); - } - cdStationInfo.setSwapMatchCarsName(null); - CommonRequest commonRequest = new CommonRequest<>(); - Map mapStationInfo =new HashMap<>(); - mapStationInfo.put("StationInfo",cdStationInfo); - String data = JSONUtil.toJSONString(mapStationInfo); - System.out.println("===新电途====data========"+data); - commonRequest.setData(data); - String result =ok(commonRequest,"/notification_stationInfo",authSecretTokenOut); - System.out.println("===新电途==推送充电站信息==result========"+result); - } + if (stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { + isValid = false; } } + ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey); + if (chargingStationDto.getPiles() != null) { + if (isValid) { + validStationKeys.add(stationKey); + } + } + } + for (String stationKey : validStationKeys) { + // maybe对接第三方 + if (authSecretTokenOut != null) { + String chargingStationId = stationKey.substring(8); + //获取场站信息 + String key = "cdjgpc:station:".concat(chargingStationId)+".notification"; + CDStationInfo cdStationInfo =REDIS.getCacheObject(key); + cdStationInfo.setEquipmentInfos(new ArrayList<>()); + //查询场站是桩是否对应上 + ChargingStationDto stationDto = REDIS.getCacheObject("station:"+chargingStationId); + CacheRateModel cacheRateModel = REDIS.getCacheObject("rateModel:" + stationDto.getRateModelId()); + + StringBuilder price = new StringBuilder(); + StringBuilder svcPrice = new StringBuilder(); + + Integer t1Price = cacheRateModel.getT1Price(); + Integer t1SvcPrice = cacheRateModel.getT1SvcPrice(); + Integer t2Price = cacheRateModel.getT2Price(); + Integer t2SvcPrice = cacheRateModel.getT2SvcPrice(); + Integer t3Price = cacheRateModel.getT3Price(); + Integer t3SvcPrice = cacheRateModel.getT3SvcPrice(); + Integer t4Price = cacheRateModel.getT4Price(); + Integer t4SvcPrice = cacheRateModel.getT4SvcPrice(); + + if(cacheRateModel.getTfPricesSeq() !=null && cacheRateModel.getTfPricesSeq().length>0){ + price.append("{"); + svcPrice.append("{"); + for (int i = 0; i < cacheRateModel.getTfPricesSeq().length; i++) { + String time = getTime(i); + String s = cacheRateModel.getTfPricesSeq()[i]; + + if("00".equals(s)){ + price.append(time).append(t1Price.toString()).append(","); + svcPrice.append(time).append(t1SvcPrice.toString()).append(","); + }else if("01".equals(s)){ + price.append(time).append(t2Price.toString()).append(","); + svcPrice.append(time).append(t2SvcPrice.toString()).append(","); + }else if("02".equals(s)){ + price.append(time).append(t3Price.toString()).append(","); + svcPrice.append(time).append(t3SvcPrice.toString()).append(","); + }else{ + price.append(time).append(t4Price.toString()).append(","); + svcPrice.append(time).append(t4SvcPrice.toString()).append(","); + } + } + price.deleteCharAt(price.length()-1).append("}"); + svcPrice.deleteCharAt(svcPrice.length()-1).append("}"); + } + cdStationInfo.setElectricityFee(price.toString()); + cdStationInfo.setServiceFee(svcPrice.toString()); + Set pks = stationDto.getPiles(); + if (pks != null) { + List cdEquipmentInfos = new ArrayList<>(); + for (String pileNo : pks) { + String pk = "pile:".concat(pileNo); + String skey = "cdjgpc:".concat(pk)+".notification"; + CDEquipmentInfo cdEquipmentInfo = REDIS.getCacheObject(skey); + if(cdEquipmentInfo==null || "".equals(cdEquipmentInfo.getEquipmentID())){ + logger.info("该场站下面:"+pileNo+"桩未录入"); + }else{ + cdEquipmentInfos.add(cdEquipmentInfo); + } + } + cdStationInfo.setEquipmentInfos(cdEquipmentInfos); + } + cdStationInfo.setSwapMatchCarsName(null); + CommonRequest commonRequest = new CommonRequest<>(); + Map mapStationInfo =new HashMap<>(); + mapStationInfo.put("StationInfo",cdStationInfo); + String data = JSONUtil.toJSONString(mapStationInfo); + System.out.println("===新电途====data========"+data); + commonRequest.setData(data); + String result =ok(commonRequest,"/notification_stationInfo",authSecretTokenOut); + System.out.println("===新电途==推送充电站信息==result========"+result); + } } }catch (Exception e){ e.printStackTrace(); diff --git a/evcs-modules/evcs-core/src/main/resources/bootstrap.yml b/evcs-modules/evcs-core/src/main/resources/bootstrap.yml index 47a89e13..4f7a541a 100644 --- a/evcs-modules/evcs-core/src/main/resources/bootstrap.yml +++ b/evcs-modules/evcs-core/src/main/resources/bootstrap.yml @@ -1,4 +1,4 @@ -# Tomcat 9009 不走推送 name: evcs 9099 走推送 name: jp 120.26.46.180:8858 +# Tomcat 9009 不走推送 name: evcs 9099 走推送 name: jp mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 server: port: 9009 @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/domain/SysUser.java index 2798c33a..2b552e84 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/domain/SysUser.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/domain/SysUser.java @@ -426,6 +426,10 @@ public class SysUser extends BaseEntity return tenantName+":"+getTenantId(); } + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + public String getCorpNo() { return corpNo; } diff --git a/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java index 6aa6c0c8..61bad08c 100644 --- a/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java @@ -187,11 +187,11 @@ public class TokenController extends BaseController HashMap paramMap = new HashMap<>(); paramMap.put("code", random); paramMap.put("phone", phone); - paramMap.put("content", "【翔桦充电】您的验证码是:" + random + ",有效期为5分钟。如非本人操作,可不用理会。"); + paramMap.put("content", "【小华充电】您的验证码是:" + random + ",有效期为5分钟。如非本人操作,可不用理会。"); com.aliyun.dysmsapi20170525.Client client = createClient(); com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest() - .setSignName("翔桦充电") + .setSignName("小华充电") .setTemplateCode("SMS_226786362") .setTemplateParam("{\"code\":\""+random+"\"}") .setPhoneNumbers(phone); diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 39b4ae7d..62be9823 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index 902c9297..5bbe74ea 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -16,10 +16,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -35,7 +35,7 @@ spring: datasource: ds1: nacos: - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP data-type: json diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 203525d8..3d99f940 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index f455ff02..d6293b3a 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml index f8eb4379..bb947c6e 100644 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/task/XhpcTenantTask.java b/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/task/XhpcTenantTask.java index 7a12b795..0bdb6a54 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/task/XhpcTenantTask.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/task/XhpcTenantTask.java @@ -57,7 +57,7 @@ public class XhpcTenantTask { HashMap paramMap = new HashMap<>(); paramMap.put("phone", domain.getContactNumber()); paramMap.put("tenantName", domain.getTenantName()); - paramMap.put("content", "【翔桦充电】尊敬的租户,您申请的租户(租户名称: " + domain.getTenantName() + ")还有15天到期,请联系业务人员进行续费。"); + paramMap.put("content", "【小华充电】尊敬的租户,您申请的租户(租户名称: " + domain.getTenantName() + ")还有15天到期,请联系业务人员进行续费。"); smsService.sendNotice(paramMap); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index e46f3a48..8cde9231 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 368ce78e..32a0ddf8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -27,6 +27,7 @@ + diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml index e063163e..09a81fa8 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcDeviceMessageController.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcDeviceMessageController.java new file mode 100644 index 00000000..781d5e27 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcDeviceMessageController.java @@ -0,0 +1,40 @@ +package com.xhpc.activity.controller; + +import com.xhpc.activity.service.IXhpcDeviceMessageService; +import com.xhpc.common.core.domain.R; +import com.xhpc.common.core.web.controller.BaseController; +import com.xhpc.system.api.model.LoginUser; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +/** + * 储存占位费设备运行日志 + * + * @author yuyang + * @Date 2025-09-17 14:37 + */ +@RestController +@RequestMapping("/device") +public class XhpcDeviceMessageController extends BaseController { + + @Resource + IXhpcDeviceMessageService xhpcDeviceMessageService; + + + //每3分钟储存一条有费用的占位费订单 + @GetMapping("/getNameList") + @Scheduled(cron = "0 0/1 * * * ? ") + public void getNameList(){ + xhpcDeviceMessageService.addXhpcDeviceMessage(); + } + + + +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcDeviceMessageMapper.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcDeviceMessageMapper.java index 0e735463..f3cf51a9 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcDeviceMessageMapper.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcDeviceMessageMapper.java @@ -27,4 +27,12 @@ public interface XhpcDeviceMessageMapper { int deleteMessageByDate(@Param("date")String date); + + int addXhpcDeviceMessage(@Param("chargeOrderNo") String chargeOrderNo); + + String getXhpcPlaceholderOrder(); + + int updateXhpcPlaceholderOrder(@Param("serialNumber") String serialNumber); + + int addXhpcDeviceMessageGunStatus(@Param("chargeOrderNo") String chargeOrderNo ,@Param("gunNumber") String gunNumber); } diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/IXhpcDeviceMessageService.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/IXhpcDeviceMessageService.java new file mode 100644 index 00000000..28b6a8a5 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/IXhpcDeviceMessageService.java @@ -0,0 +1,10 @@ +package com.xhpc.activity.service; + +/** + * @author yuyang + * @Date 2025-09-17 14:44 + */ +public interface IXhpcDeviceMessageService { + + void addXhpcDeviceMessage(); +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/WorkOrderServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/WorkOrderServiceImpl.java index 7458f102..78f158d6 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/WorkOrderServiceImpl.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/WorkOrderServiceImpl.java @@ -344,7 +344,7 @@ public class WorkOrderServiceImpl implements WorkOrderService { HashMap paramMap = new HashMap<>(); paramMap.put("orderNo", orderId); paramMap.put("phone", phoneList); - paramMap.put("content", "【翔桦充电】您好,您有新的工单(工单号:" + orderId + ")待处理,请及时登陆后台查看并处理,谢谢。"); + paramMap.put("content", "【小华充电】您好,您有新的工单(工单号:" + orderId + ")待处理,请及时登陆后台查看并处理,谢谢。"); R r = smsService.sendNotice(paramMap); XhpcWorkOrderPushMessageDomain messageDomain = new XhpcWorkOrderPushMessageDomain(); diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcClearingBankServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcClearingBankServiceImpl.java index 5cf24886..1a050fba 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcClearingBankServiceImpl.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcClearingBankServiceImpl.java @@ -129,7 +129,7 @@ public class XhpcClearingBankServiceImpl implements XhpcClearingBankService { HashMap paramMap = new HashMap<>(); paramMap.put("phone", phone); paramMap.put("code", random); - paramMap.put("content", "【翔桦充电】您的动态码为:" + random + ",您正在进行提现到银行账户操作,如非本人操作,请忽略本短信!"); + paramMap.put("content", "【小华充电】您的动态码为:" + random + ",您正在进行提现到银行账户操作,如非本人操作,请忽略本短信!"); smsService.sendNotice(paramMap); String key = "opcash:" + phone; diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcDeviceMessageServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcDeviceMessageServiceImpl.java new file mode 100644 index 00000000..bb076a78 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcDeviceMessageServiceImpl.java @@ -0,0 +1,41 @@ +package com.xhpc.activity.service.impl; + +import com.xhpc.activity.mapper.XhpcDeviceMessageMapper; +import com.xhpc.activity.service.IXhpcDeviceMessageService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author yuyang + * @Date 2025-09-17 14:45 + */ +@Service +public class XhpcDeviceMessageServiceImpl implements IXhpcDeviceMessageService { + + @Resource + XhpcDeviceMessageMapper xhpcDeviceMessageMapper; + + + @Override + public void addXhpcDeviceMessage() { + //查询当前已结算的占位费订单 + + String serialNumber = xhpcDeviceMessageMapper.getXhpcPlaceholderOrder(); + + if(serialNumber !=null && !"".equals(serialNumber)){ + xhpcDeviceMessageMapper.addXhpcDeviceMessage(serialNumber); + + xhpcDeviceMessageMapper.addXhpcDeviceMessageGunStatus(serialNumber,serialNumber.substring(0,16)); + + xhpcDeviceMessageMapper.updateXhpcPlaceholderOrder(serialNumber); + } + + + } + + + public static void main(String[] args) { + System.out.println("80836000050013012509161214298944".substring(0,16)); + } +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/task/AutoClearDataTask.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/task/AutoClearDataTask.java index 85a9b5d9..1e7ba424 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/task/AutoClearDataTask.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/task/AutoClearDataTask.java @@ -26,7 +26,7 @@ public class AutoClearDataTask { @Scheduled(cron = "0 0 5 * * ?") private void autoClearDeviceMessageData(){ - String date = DateUtil.date2String(DateUtil.addDay(new Date(), -3), "yyyy-MM-dd"); + String date = DateUtil.date2String(DateUtil.addDay(new Date(), -7), "yyyy-MM-dd"); messageMapper.deleteMessageByDate(date); } diff --git a/xhpc-modules/xhpc-activity/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-activity/src/main/resources/bootstrap.yml index dbe73cdb..0a6896cc 100644 --- a/xhpc-modules/xhpc-activity/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-activity/src/main/resources/bootstrap.yml @@ -19,10 +19,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcDeviceMessageMapper.xml b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcDeviceMessageMapper.xml index 29ac8a9a..8e43e511 100644 --- a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcDeviceMessageMapper.xml +++ b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcDeviceMessageMapper.xml @@ -151,4 +151,54 @@ order by m.charge_order_no asc, m.create_time asc + + + INSERT INTO xhpc_device_message_24 + SELECT * FROM xhpc_device_message + WHERE charge_order_no=#{chargeOrderNo} + + + + + + UPDATE xhpc_placeholder_order SET copy_status = 1 WHERE serial_number=#{serialNumber}; + + + + + INSERT INTO xhpc_device_message_24 + SELECT * + FROM xhpc_device_message + WHERE gun_number = #{gunNumber} and create_time > + ( SELECT create_time + FROM xhpc_device_message + WHERE charge_order_no = #{chargeOrderNo} + AND gun_status = 1 + ORDER BY create_time DESC + LIMIT 1 ) + AND create_time <= + ( SELECT create_time + FROM xhpc_device_message + WHERE gun_number = #{gunNumber} + AND gun_status = 0 and create_time >= + ( SELECT create_time + FROM xhpc_device_message + WHERE charge_order_no = #{chargeOrderNo} + AND gun_status = 1 + ORDER BY create_time DESC + LIMIT 1 ) + ORDER BY create_time asc + LIMIT 1 ); + diff --git a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index 2af13af5..1747d5ba 100644 --- a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -93,45 +93,6 @@ where find_in_set(history_order_id, #{orderIds}) - - - diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java index 2ac5c92a..632bdd8b 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java @@ -2,9 +2,14 @@ package com.xhpc.card.controller; import com.xhpc.card.domain.*; import com.xhpc.card.pojo.TIccardClientUsers; +import com.xhpc.card.pojo.TIccardInfo; import com.xhpc.card.service.IXhpcCardService; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.web.controller.BaseController; +import com.xhpc.common.core.web.domain.AjaxResult; +import com.xhpc.common.domain.XhpcChargingPile; +import com.xhpc.common.log.annotation.Log; +import com.xhpc.common.log.enums.BusinessType; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -260,5 +265,13 @@ public class XhpcCardController extends BaseController { return xhpcCardService.deleteClientUser(userId); } + @PostMapping(value = "/addIccardInfo") + public R addIccardInfo(@RequestBody TIccardInfo iccardInfo) { + return xhpcCardService.addIccardInfo(iccardInfo); + } + @DeleteMapping("/{id}") + public R removeIccardInfo(@PathVariable Integer id) { + return xhpcCardService.removeIccardInfo(id); + } } diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java index 8a68ad8e..6605d77e 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java @@ -75,4 +75,4 @@ public interface TIccardLogMapper { */ Long selectCountRechargeLogByUniqueId(@Param("uniqueId") String uniqueId); -} \ No newline at end of file +} diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java index 92339e0f..dbd18d66 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java @@ -2,6 +2,7 @@ package com.xhpc.card.service; import com.xhpc.card.domain.*; import com.xhpc.card.pojo.TIccardClientUsers; +import com.xhpc.card.pojo.TIccardInfo; import com.xhpc.common.core.domain.R; import java.util.List; @@ -201,4 +202,8 @@ public interface IXhpcCardService { */ R recoverToReportTheLossOfCard(Integer cardId); + R addIccardInfo(TIccardInfo iccardInfo); + + R removeIccardInfo(Integer id); + } 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 d2d63503..41ae112e 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 @@ -471,7 +471,9 @@ public class XhpcCardServiceImpl implements IXhpcCardService { cardUserInfo.setBalance(tIccardInfo.getBalance()); cardUserInfo.setCardType(tIccardInfo.getCardtype()); XhpcOperator xhpcOperator = xhpcOperatorMapper.selectOneByCorpNoAndTenantId(tIccardInfo.getCorpno(), tokenService.getLoginUser().getSysUser().getTenantId()); - cardUserInfo.setGrantOperatorName(xhpcOperator.getName()); + if(xhpcOperator !=null && xhpcOperator.getName() !=null){ + cardUserInfo.setGrantOperatorName(xhpcOperator.getName()); + } //离线用户账号 TIccardUsers tIccardUser = tIccardUsersMapper.selectByPrimaryKey(tIccardInfo.getUserindex()); cardUserInfo.setUserAccount(tIccardUser.getPhone()); @@ -494,7 +496,9 @@ public class XhpcCardServiceImpl implements IXhpcCardService { cardUserInfo.setBalance(tIccardInfo.getBalance()); cardUserInfo.setCardType(tIccardInfo.getCardtype()); XhpcOperator xhpcOperator = xhpcOperatorMapper.selectOneByCorpNoAndTenantId(tIccardInfo.getCorpno(), tokenService.getLoginUser().getSysUser().getTenantId()); - cardUserInfo.setGrantOperatorName(xhpcOperator.getName()); + if(xhpcOperator !=null && xhpcOperator.getName() !=null){ + cardUserInfo.setGrantOperatorName(xhpcOperator.getName()); + } return R.ok(cardUserInfo); } } @@ -888,6 +892,19 @@ public class XhpcCardServiceImpl implements IXhpcCardService { return R.ok(); } + @Override + public R addIccardInfo(TIccardInfo iccardInfo) { + tIccardInfoMapper.insertSelective(iccardInfo); + + return R.ok(); + } + + @Override + public R removeIccardInfo(Integer id) { + tIccardInfoMapper.deleteByPrimaryKey(id); + return R.ok(); + } + /** * 用于QueryRechargeRecord方法封装DTO数据 * diff --git a/xhpc-modules/xhpc-card/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-card/src/main/resources/bootstrap.yml index 2a4e98a5..7b26271c 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-card/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml b/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml index be94bcd7..02cf07d8 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml +++ b/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml @@ -203,4 +203,4 @@ createTime = #{createtime,jdbcType=TIMESTAMP} where id = #{id,jdbcType=INTEGER} - \ No newline at end of file + 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 index 5e10e358..ce917dea 100644 --- 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 @@ -564,7 +564,7 @@ public class XhpcTimingChargingModelServiceImpl extends BaseService implements I //短信通知 HashMap paramMap = new HashMap<>(); paramMap.put("phone", timingCharging.getPhone()); - paramMap.put("content", "【翔桦充电】计费--尊敬的用户,计费模型"+timingChargingModelId+"更新失败,请快速处理"); + paramMap.put("content", "计费--尊敬的用户,计费模型"+timingChargingModelId+"更新失败,请快速处理"); smsService.sendNotice(paramMap); executorService.execute(new Runnable() { diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-charging-station/src/main/resources/bootstrap.yml index 64fa837a..612ac0a0 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/bootstrap.yml @@ -14,19 +14,19 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} -logging: - level: - com.xhpc.charging.station.mapper: debug +#logging: +# level: +# com.xhpc.charging.station.mapper: debug oss: enabled: true diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/order/domain/XhpcPlaceholderOrder.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/order/domain/XhpcPlaceholderOrder.java index 38b5f449..d16e0c0c 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/order/domain/XhpcPlaceholderOrder.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/order/domain/XhpcPlaceholderOrder.java @@ -48,12 +48,20 @@ public class XhpcPlaceholderOrder extends BaseEntity { private String chargingMode; private String driverId; private String plateNum; + private String searchValue; private Integer type; private String operatorIdEvcs; private Integer userStatus; private BigDecimal rechargeMoney; private BigDecimal refundMoney; - + private BigDecimal actPrice; + private Integer actStatus; + private Integer appealStatus; + private String appealUserResult; + private String appealResult; + private Date appealTime; + private Date appealProcessTime; + private BigDecimal appealRefundMoney; public XhpcPlaceholderOrder() { } diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplate.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplate.java index 90e1c445..8947d8f3 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplate.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplate.java @@ -12,12 +12,12 @@ public class AliyunTemplate { /** * 阿里云短信签名 */ - public static final String SIGNATURE_NAME = "翔桦充电"; + public static final String SIGNATURE_NAME = "小华充电"; /** * 阿里云短信签名 */ - public static final String SIGNATURE_OREDER_NAME = "小华充电订单异常"; + public static final String SIGNATURE_OREDER_NAME = "翔桦充电订单异常"; /** * 电量充满 */ @@ -71,4 +71,7 @@ public class AliyunTemplate { */ public static final String OPERATOR_ORDER_REFUND = "SMS_462691150"; + public static final String OPERATOR_PLACEHOLDER_ORDER = "SMS_493685173"; + + public static final String OPERATOR_PLACEHOLDER_ORDER_MONEY = "SMS_493935178"; } diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplateKeyWord.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplateKeyWord.java index 99a3ce4b..165c2500 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplateKeyWord.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/constant/AliyunTemplateKeyWord.java @@ -65,5 +65,8 @@ public class AliyunTemplateKeyWord { */ public static final String OPERATOR_ORDER_REFUND ="尊敬的管理员,用户退款订单"; + public static final String OPERATOR_PLACEHOLDER_ORDER ="尊敬的用户,你的爱车已停止充电"; + + public static final String OPERATOR_PLACEHOLDER_ORDER_MONEY ="尊敬的用户你好,你的爱车已停止充电"; public static final String OPERATOR_CODE= "您的验证码是"; } diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java index 8dd1d506..7911bb62 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java @@ -37,7 +37,7 @@ public class XhpcSmsController extends BaseController { String signatureName = null; String templateId = null; - signatureName = "翔桦充电"; + signatureName = "小华充电"; templateId = "SMS_226786362"; if(phone !=null || "".equals(phone)){ if(!UserTypeUtil.COMMUNIT.equals(phone.substring(0,2)) && !UserTypeUtil.CUSTOMERS.equals(phone.substring(0,2))){ @@ -88,10 +88,8 @@ public class XhpcSmsController extends BaseController { } else if (content.contains(AliyunTemplateKeyWord.CHARGE_MONEY_INSUFFICIENT)) { signatureName = AliyunTemplate.SIGNATURE_NAME; templateId = AliyunTemplate.CHARGE_MONEY_INSUFFICIENT; - } else if (content.contains(AliyunTemplateKeyWord.CHARGE_FULL)) { - signatureName = AliyunTemplate.SIGNATURE_NAME; - templateId = AliyunTemplate.CHARGE_FULL; } else if (content.contains(AliyunTemplateKeyWord.REFUND_FAIL)) { + signatureName = AliyunTemplate.SIGNATURE_NAME; templateId = AliyunTemplate.REFUND_FAIL; }else if (content.contains(AliyunTemplateKeyWord.CHARGING_MODEL)) { @@ -109,13 +107,24 @@ public class XhpcSmsController extends BaseController { } else if (content.contains(AliyunTemplateKeyWord.OPERATOR_CASHED)) { signatureName = AliyunTemplate.SIGNATURE_NAME; templateId = AliyunTemplate.OPERATOR_CASHED; + }else if (content.contains(AliyunTemplateKeyWord.OPERATOR_ORDER_REFUND)) { + signatureName = AliyunTemplate.SIGNATURE_OREDER_NAME; + templateId = AliyunTemplate.OPERATOR_ORDER_REFUND; + }else if (content.contains(AliyunTemplateKeyWord.OPERATOR_PLACEHOLDER_ORDER)) { + signatureName = AliyunTemplate.SIGNATURE_NAME; + templateId = AliyunTemplate.OPERATOR_PLACEHOLDER_ORDER; + }else if (content.contains(AliyunTemplateKeyWord.OPERATOR_PLACEHOLDER_ORDER_MONEY)) { + signatureName = AliyunTemplate.SIGNATURE_NAME; + templateId = AliyunTemplate.OPERATOR_PLACEHOLDER_ORDER_MONEY; } -// else if (content.contains(AliyunTemplateKeyWord.OPERATOR_ORDER_REFUND)) { -// signatureName = AliyunTemplate.SIGNATURE_OREDER_NAME; -// templateId = AliyunTemplate.OPERATOR_ORDER_REFUND; -// } - xhpcSmsService.sendNotice(phone, signatureName, templateId, paramMap); +// else if (content.contains(AliyunTemplateKeyWord.CHARGE_FULL)) { +// signatureName = AliyunTemplate.SIGNATURE_NAME; +// templateId = AliyunTemplate.CHARGE_FULL; +// } + if(!"SMS_227005968".equals(templateId)){ + xhpcSmsService.sendNotice(phone, signatureName, templateId, paramMap); + } } @GetMapping(value = "/getAliyunShortMessageInfo") diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java index 30bc735b..49ec467f 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java @@ -5,6 +5,7 @@ import com.aliyun.dysmsapi20170525.Client; import com.aliyun.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody; +import com.xhpc.common.core.domain.R; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.security.service.TokenService; @@ -155,30 +156,41 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService { XhpcSms xhpcSms = new XhpcSms(); try { + String captcha = redisService.getCacheObject(phone+":"+templateId); + if (!templateId.equals(captcha)) { + System.out.println("============发送短信=================="); + //使用阿里云发送通知短信 + Map neededParam = aliyunSmsNotice(phone, signatureName, templateId, paramMap); + System.out.println("============neededParam=================="+neededParam); + //获取模板内容 + String templateContent = neededParam.get("templateContent"); + System.out.println("============templateContent=================="+templateContent); + //封装信息 + xhpcSms.setPhone(phone); + xhpcSms.setContent(templateContent); + xhpcSms.setCreateTime(new Date()); + xhpcSms.setRemark(neededParam.get("jsonResult")); - //使用阿里云发送通知短信 - Map neededParam = aliyunSmsNotice(phone, signatureName, templateId, paramMap); + //判断发送结果 + String statusCode = neededParam.get("statusCode"); + if (AliyunSendResult.SUCCESS.equals(statusCode)) { + xhpcSms.setStatus(0); + } else { + xhpcSms.setStatus(1); + } + xhpcSmsMapper.addXhpcSms(xhpcSms); + redisService.setCacheObject(phone+":"+templateId, templateId, 120L, TimeUnit.SECONDS); + }else{ + System.out.println("============不发生发送短信=================="); + } - //获取模板内容 - String templateContent = neededParam.get("templateContent"); - //封装信息 - xhpcSms.setPhone(phone); - xhpcSms.setContent(templateContent); - xhpcSms.setCreateTime(new Date()); - xhpcSms.setRemark(neededParam.get("jsonResult")); - - //判断发送结果 - String statusCode = neededParam.get("statusCode"); - if (AliyunSendResult.SUCCESS.equals(statusCode)) { - xhpcSms.setStatus(0); - } else { - xhpcSms.setStatus(1); - } } catch (Exception e) { + e.printStackTrace(); xhpcSms.setStatus(3); + xhpcSmsMapper.addXhpcSms(xhpcSms); } - xhpcSmsMapper.addXhpcSms(xhpcSms); + } @Override @@ -233,10 +245,10 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService { private String getTemplateContent(String templateId, Map paramMap) throws Exception { - if (AliyunTemplate.CHARGE_FULL.equals(templateId)) { - String battery = paramMap.get("battery"); - return "尊敬的用户,你的车辆已充电达至设定的SOC:" + battery + "%并停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。"; - } +// if (AliyunTemplate.CHARGE_FULL.equals(templateId)) { +// String battery = paramMap.get("battery"); +// return "尊敬的用户,你的车辆已充电达至设定的SOC:" + battery + "%并停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。"; +// } if (AliyunTemplate.CHARGE_MONEY_INSUFFICIENT.equals(templateId)) { String money = paramMap.get("money"); return "尊敬的用户,你的账户余额小于" + money + "元,为不影响您的正常充电,请您尽快充值交费,谢谢。"; @@ -254,9 +266,22 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService { String code = paramMap.get("code"); return "您的验证码是:" + code + ",有效期为5分钟。如非本人操作,可不用理会。"; } - if (AliyunTemplate.REFUND_FAIL.equals(templateId)) { - return "【翔桦充电】退款-尊敬的用户,当前退款人数较多,申请退款失败,请您重新提交申请!"; + if (AliyunTemplate.OPERATOR_PLACEHOLDER_ORDER_MONEY.equals(templateId)) { + String time = paramMap.get("time"); + String sumMoney = paramMap.get("sumMoney"); + String number = paramMap.get("number"); + return "尊敬的用户,你的爱车已停止充电"+time+"分钟,前30分钟免费,平台收取本次设备占用费:"+sumMoney+"元,占位费费用将从余额扣除,占位费明细请查询翔桦充电小程序我的历史订单,试运行期间前三次免费,当前免费次数为"+number+",充电结束请及时挪车。"; } + if (AliyunTemplate.OPERATOR_PLACEHOLDER_ORDER.equals(templateId)) { + String time = paramMap.get("time"); + String sumMoney = paramMap.get("sumMoney"); + String number = paramMap.get("number"); + return "尊敬的用户,你的爱车已停止充电"+time+"分钟,前30分钟免费,平台收取本次设备占用费:"+sumMoney+"元,占位费费用将从余额扣除,占位费明细请查询翔桦充电小程序我的历史订单,试运行期间前三次免费,当前免费次数为"+number+",充电结束请及时挪车。"; + } + +// if (AliyunTemplate.REFUND_FAIL.equals(templateId)) { +// return "退款-尊敬的用户,当前退款人数较多,申请退款失败,请您重新提交申请!"; +// } // if (AliyunTemplate.OPERATOR_ORDER_REFUND.equals(templateId)) { // String number=paramMap.get("number"); // return "【小华充电订单异常】尊敬的管理员,用户退款订单:"+number+",有问题请速速查看。"; @@ -271,7 +296,7 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService { SendSmsRequest sendSmsRequest = new SendSmsRequest(); sendSmsRequest.setPhoneNumbers("18123374652"); - sendSmsRequest.setSignName("小华充电订单异常"); + sendSmsRequest.setSignName("翔桦充电订单异常"); sendSmsRequest.setTemplateCode("SMS_462691150"); //添加模板参数 HashMap paramMap = new HashMap<>(); diff --git a/xhpc-modules/xhpc-general/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-general/src/main/resources/bootstrap.yml index a42b67b3..dbb21612 100644 --- a/xhpc-modules/xhpc-general/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-general/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java index 4b4565f2..00e5225e 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.xhpc.common.api.*; +import com.xhpc.common.api.dto.ChargingStationDto; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.data.redis.CacheBmsReqChargerOutputData; @@ -89,6 +90,16 @@ public class XhpcPileOrderController extends BaseController { return R.ok(); } + if(xhpcChargeOrder.getRateModelId()==null){ + ChargingStationDto chargingStationDto = REDIS.getCacheObject("station:" + xhpcChargeOrder.getChargingStationId()); + if(chargingStationDto.getRateModelId() !=null){ + xhpcChargeOrder.setRateModelId(chargingStationDto.getRateModelId()); + xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + } + } + + + if (status == 1) { userId = update(0, remark, orderNo, 0); } else { diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcPlaceholderOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcPlaceholderOrderController.java index 4f8af8ee..7c28740a 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcPlaceholderOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcPlaceholderOrderController.java @@ -1,5 +1,6 @@ package com.xhpc.order.controller; +import com.xhpc.common.core.constant.HttpStatus; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.domain.AjaxResult; @@ -12,6 +13,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; @@ -43,7 +45,14 @@ public class XhpcPlaceholderOrderController extends BaseController { return getDataTable(listPage); } + @GetMapping("/getAbnormalListPage") + public TableDataInfo getAbnormalListPage(String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, @RequestParam("status")Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, @RequestParam("userId") Long userId, Integer type, + String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult) + { + List> listPage = xhpcPlaceholderOrderService.getAbnormalListPage(tenantId,chargingStationId,chargingPileId,terminalId,phone, transactionNumber, status, chargingStationName, operatorId, source, beginStartTime, beginEndTime, userId, type, affiliationOrganization,evcsOrderNo,plateNum,internetId,internetSerialNumber,terminalName,vinCode,overStartTime,overEndTime,personnelId,confirmResult); + return getDataTable(listPage); + } /** * 历史订单导出 * @param response 返回数据流 @@ -91,18 +100,114 @@ public class XhpcPlaceholderOrderController extends BaseController { xhpcPlaceholderOrderService.getTimingPriceTime(gunNumber); } - //超过720分钟的都变成异常订单 + //超过360分钟的都变成异常订单 @Scheduled(cron = "0 0/5 * * * ? ") public void getAbnormal() { xhpcPlaceholderOrderService.getAbnormal(); } + //查询异常订单枪状态 + @Scheduled(cron = "0 0/1 * * * ? ") + public void getAbnormalTime() { + xhpcPlaceholderOrderService.getAbnormalTime(); + } @GetMapping("/getExamine") - public AjaxResult getExamine(@RequestParam Long placeholderOrderId, @RequestParam BigDecimal totalMoney, @RequestParam String startTime , @RequestParam String endTime){ + public AjaxResult getExamine(@RequestParam Long placeholderOrderId,BigDecimal totalMoney, @RequestParam String startTime , @RequestParam String endTime){ return xhpcPlaceholderOrderService.getExamine(placeholderOrderId,totalMoney,startTime,endTime); } + + /** + * 订单来源(第三方、支付宝、微信、运营商),权限划分 + * @param internetUserIds 订单来源集合 + * @return + */ + @GetMapping("/getSumSourceList") + public TableDataInfo getSumSourceList(HttpServletRequest request, String tenantId, Long operatorId, Long chargingStationId, Long chargingPileId, Long terminalId, String startTime, String endTime, String internetUserIds, String chargingStationIds) { + startPage(); + List> list = xhpcPlaceholderOrderService.getSumSourceList(request,tenantId,operatorId,chargingStationId,chargingPileId,terminalId,startTime,endTime,internetUserIds,chargingStationIds); + return getDataTable(list); + } + + /** + * 订单来源统计导出 + * @return + */ + @PostMapping("/internetUserInterval/export") + public void internetUserIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long operatorId,Long chargingStationId,Long chargingPileId,Long terminalId, String startTime, String endTime,String internetUserIds, String chargingStationIds) throws IOException { + xhpcPlaceholderOrderService.getSumSourceListExport(request,response,tenantId,operatorId,chargingStationId,chargingPileId,terminalId, startTime,endTime,internetUserIds,chargingStationIds); + } + + /** + * 日期统计 + * @param chargingStationIds 电站id集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + @GetMapping("/getDateIntervalPage") + public TableDataInfo getDateIntervalPage(HttpServletRequest request,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId,String chargingStationIds,Long internetUserId, Long operatorId,String startTime, String endTime,Long userId, Integer type) + { + List> list = xhpcPlaceholderOrderService.getDateIntervalPage(request,tenantId,chargingStationId,chargingPileId,terminalId,chargingStationIds,internetUserId,operatorId,startTime,endTime,userId,type); + return getDataTable(list); + } + + /** + * 日期统计导出 + * @param chargingStationIds 电站id集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + @PostMapping("/dateInterval/export") + public void dateIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String chargingStationIds,Long internetUserId, Long operatorId,String startTime, String endTime,Long userId,Integer type) throws IOException { + xhpcPlaceholderOrderService.dateIntervalExport(request,response,tenantId,chargingStationId,chargingPileId,terminalId, chargingStationIds,internetUserId,operatorId,startTime,endTime,userId,type); + } + + /** + * 电站统计 + * @param chargingStationIds 电站集合 + * @param operatorIds 运营商集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + @GetMapping("/getStationIntervalPage") + public TableDataInfo getStationIntervalPage(HttpServletRequest request,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId,String chargingStationIds,String operatorIds,Long internetUserId, Long operatorId,String startTime, String endTime, Long userId, Integer type) + { + List> list = xhpcPlaceholderOrderService.getStationIntervalPage(request,tenantId,chargingStationId,chargingPileId,terminalId,chargingStationIds,operatorIds,internetUserId,operatorId,startTime,endTime,userId,type); + return getDataTable(list); + } + + /** + * 电站统计导出 + * @param chargingStationIds 电站集合 + * @param operatorIds 运营商集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + @PostMapping("/stationInterval/export") + public void stationIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String chargingStationIds,String operatorIds,Long internetUserId, Long operatorId,String startTime, String endTime,Long userId,Integer type) throws IOException { + xhpcPlaceholderOrderService.stationIntervalExport(request,response,tenantId,chargingStationId,chargingPileId,terminalId, chargingStationIds,operatorIds,internetUserId,operatorId,startTime,endTime,userId,type); + } //==============================占位费查询================================ @GetMapping("/getPlaceholderIDs") @@ -110,4 +215,50 @@ public class XhpcPlaceholderOrderController extends BaseController { xhpcPlaceholderOrderService.getPlaceholderIDs(stationIDs); } + //==============================小程序接口================================ + @GetMapping("/appealPlaceholderOrderList") + public TableDataInfo appealPlaceholderOrderList(HttpServletRequest request){ + List> listPage =xhpcPlaceholderOrderService.appealPlaceholderOrderList(request); + return getDataTable(listPage); + } + + + @PostMapping("/applyPlaceholderOrder") + public R applyPlaceholderOrder(HttpServletRequest request,@RequestBody Map map) { + if (map != null) { + Long placeholderOrderId = Long.parseLong(map.get("placeholderOrderId").toString()); + String appealUserResult = map.get("appealUserResult").toString(); + return xhpcPlaceholderOrderService.applyPlaceholderOrder(request,placeholderOrderId,appealUserResult); + } + return R.fail(HttpStatus.ERROR_STATUS, "修改失败"); + } + + @PostMapping("/applyPlaceholderOrderProcess") + public R applyPlaceholderOrderProcess(HttpServletRequest request,@RequestBody Map map) { + if (map != null) { + Long placeholderOrderId = Long.parseLong(map.get("placeholderOrderId").toString()); + String refundType = map.get("refundType").toString(); + BigDecimal actPrice =new BigDecimal(0); + if(!"reject".equals(refundType)){ + + if("full".equals(refundType)){ + actPrice = new BigDecimal(map.get("placeholderTotalMoney").toString()); + }else if("partial".equals(refundType)){ + actPrice = new BigDecimal(map.get("refundAmount").toString()); + } + } + + String appealResult = map.get("appealResult").toString(); + + return xhpcPlaceholderOrderService.applyPlaceholderOrderProcess(request,placeholderOrderId,actPrice,refundType,appealResult); + } + return R.fail(HttpStatus.ERROR_STATUS, "修改失败"); + } + + + @GetMapping("/appealPlaceholderOrderListPC") + public TableDataInfo appealPlaceholderOrderListPC(HttpServletRequest request,String tenantId,Long operatorId,String name, Integer type, String serialNumber, Long chargingStationId){ + List> listPage =xhpcPlaceholderOrderService.appealPlaceholderOrderListPC(request,tenantId,operatorId,name, type, serialNumber, chargingStationId); + return getDataTable(listPage); + } } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java index b6c647d4..1036a5ff 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java @@ -191,6 +191,9 @@ public interface XhpcChargeOrderMapper { */ int insertUserAccountStatement(@Param("userId") Long userId,@Param("amount") BigDecimal amount,@Param("remainingSum") BigDecimal remainingSum,@Param("chargeOrderId") Long chargeOrderId,@Param("type") Integer type,@Param("date") Date date,@Param("source")Integer source); + + int insertUserAccountStatementPlaceholder(@Param("userId") Long userId,@Param("amount") BigDecimal amount,@Param("remainingSum") BigDecimal remainingSum,@Param("placeholderOrderId") Long placeholderOrderId,@Param("type") Integer type,@Param("date") Date date,@Param("source")Integer source); + /** * 获取费率 */ @@ -290,4 +293,8 @@ public interface XhpcChargeOrderMapper { int getBlacklistUser(@Param("phone")String phone,@Param("vin")String vin,@Param("plateNnum")String plateNnum,@Param("chargingStationId")Long chargingStationId,@Param("time")String time); List> getXhpcTerminalList(@Param("chargingStationId")Long chargingStationId,@Param("chargingPileId")Long chargingPileId,@Param("type")Integer type,@Param("userId")Long userId); + + + int getXhpcPlaceholderOrderNumber(@Param("userId")Long userId, @Param("source")Integer source, @Param("terminalId")String terminalId); + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcPlaceholderOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcPlaceholderOrderMapper.java index ffc527e0..01ede868 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcPlaceholderOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcPlaceholderOrderMapper.java @@ -8,6 +8,7 @@ import com.xhpc.order.dto.XhpcPlaceholderTimeOrderDto; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Map; @@ -20,12 +21,16 @@ public interface XhpcPlaceholderOrderMapper { XhpcPlaceholderOrder getXhpcPlaceholderOrderSerialNumber(@Param("serialNumber") String serialNumber); + int getXhpcChargeOrderStatus(@Param("serialNumber") String serialNumber); + List getXhpcPlaceholderTime(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("placeholderId")Long placeholderId); int updateXhpcPlaceholderOrder(XhpcPlaceholderOrder placeholderOrder ); List> getListPage(@Param("chargingStationId")Long chargingStationId, @Param("chargingPileId")Long chargingPileId, @Param("terminalId")Long terminalId, @Param("phone")String phone, @Param("transactionNumber")String transactionNumber, @Param("status")Integer status, @Param("chargingStationName")String chargingStationName, @Param("operatorId")Long operatorId, @Param("source")Integer source, @Param("beginStartTime")String beginStartTime, @Param("beginEndTime")String beginEndTime, @Param("userId")Long userId, @Param("type")Integer type, @Param("number")Integer number, @Param("affiliationOrganization")String affiliationOrganization, @Param("evcsOrderNo")String evcsOrderNo, @Param("plateNum")String plateNum, @Param("internetId")Integer internetId, @Param("internetSerialNumber")String internetSerialNumber, @Param("terminalName")String terminalName, @Param("vinCode")String vinCode, @Param("overStartTime")String overStartTime, @Param("overEndTime")String overEndTime, @Param("personnelId")Long personnelId, @Param("confirmResult")Integer confirmResult, @Param("tenantId")String tenantId, @Param("isNotNull")Integer isNotNull); + List> getAbnormalListPage(@Param("chargingStationId")Long chargingStationId, @Param("chargingPileId")Long chargingPileId, @Param("terminalId")Long terminalId, @Param("phone")String phone, @Param("transactionNumber")String transactionNumber, @Param("status")Integer status, @Param("chargingStationName")String chargingStationName, @Param("operatorId")Long operatorId, @Param("source")Integer source, @Param("beginStartTime")String beginStartTime, @Param("beginEndTime")String beginEndTime, @Param("userId")Long userId, @Param("type")Integer type, @Param("number")Integer number, @Param("affiliationOrganization")String affiliationOrganization, @Param("evcsOrderNo")String evcsOrderNo, @Param("plateNum")String plateNum, @Param("internetId")Integer internetId, @Param("internetSerialNumber")String internetSerialNumber, @Param("terminalName")String terminalName, @Param("vinCode")String vinCode, @Param("overStartTime")String overStartTime, @Param("overEndTime")String overEndTime, @Param("personnelId")Long personnelId, @Param("confirmResult")Integer confirmResult, @Param("tenantId")String tenantId, @Param("isNotNull")Integer isNotNull); + Map getById(@Param("placeholderOrderId")Long placeholderOrderId); int insertXhpcPlaceholderTimeOrder(XhpcPlaceholderTimeOrderDto xhpcPlaceholderTimeOrderDto); @@ -45,4 +50,51 @@ public interface XhpcPlaceholderOrderMapper { void getAbnormal(); + XhpcPlaceholderOrder getAbnormalTime(); + + List> getAbnormalTimeList(); + + int getXhpcPlaceholderOrderNumber(@Param("userId")Long userId, @Param("source")Integer source, @Param("terminalId")String terminalId); + + XhpcPlaceholderOrder getByPlaceholderOrderId(@Param("placeholderOrderId")Long placeholderOrderId); + + Map getXhpcDeviceMessage(@Param("chargeOrderNo")String chargeOrderNo, @Param("gunStatus")Integer gunStatus, @Param("tenantId")String tenantId,@Param("createTime") Date createTime); + + /** + * 订单来源列表 + * @return + */ + List> getSumSourceList(@Param("operatorId")Long operatorId,@Param("chargingStationId")Long chargingStationId,@Param("chargingPileId")Long chargingPileId,@Param("terminalId")Long terminalId,@Param("startTime")String startTime, @Param("endTime")String endTime,@Param("sourceIds")List sourceIds,@Param("chargingStationIdList")List chargingStationIdList,@Param("tenantId")String tenantId,@Param("sysUserId")Long sysUserId,@Param("number")Integer number); + /** + * 日期统计 + * @param chargingStationIds 电站id集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + List> getDateIntervalPage(@Param("chargingStationId") Long chargingStationId,@Param("chargingPileId") Long chargingPileId,@Param("terminalId") Long terminalId,@Param("chargingStationIds") List chargingStationIds,@Param("internetUserId") Long internetUserId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId")Long userId,@Param("tenantId")String tenantId); + + + /** + * 电站统计 + * @param chargingStationIds 电站集合 + * @param operatorUserId 运营商集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + List> getStationIntervalPage(@Param("chargingStationId")Long chargingStationId,@Param("chargingPileId")Long chargingPileId,@Param("terminalId")Long terminalId,@Param("chargingStationIds") List chargingStationIds,@Param("operatorUserId") List operatorUserId,@Param("internetUserId") Long internetUserId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId") Long userId,@Param("tenantId")String tenantId); + + int getXhpcHistoryOrderMessage(@Param("serialNumber")String serialNumber); + + List> appealPlaceholderOrderList(@Param("userId")Long userId,@Param("source")Integer source,@Param("tenantId") String tenantId); + + List> appealPlaceholderOrderListPC(@Param("operatorId")Long operatorId,@Param("name") String name, @Param("type") Integer type, @Param("serialNumber") String serialNumber, @Param("chargingStationId") Long chargingStationId,@Param("logOperatorId")Long logOperatorId,@Param("number")Integer number,@Param("tenantId") String tenantId); + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcChargeOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcChargeOrderService.java index 25835f88..650093f6 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcChargeOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcChargeOrderService.java @@ -243,4 +243,6 @@ public interface IXhpcChargeOrderService { * @return */ List> getXhpcTerminalList(Long chargingStationId,Long chargingPileId,Integer type,Long userId); + + int getXhpcPlaceholderOrderNumber(Long userId, Integer source,String terminalId); } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcPlaceholderOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcPlaceholderOrderService.java index 4067c7c8..c8ed2669 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcPlaceholderOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcPlaceholderOrderService.java @@ -5,6 +5,7 @@ import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.order.domain.XhpcPlaceholderOrder; import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; @@ -23,6 +24,8 @@ public interface IXhpcPlaceholderOrderService { List> getListPage(String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type, String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult); + List> getAbnormalListPage(String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type, String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult); + void export(HttpServletResponse response, String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type, String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult) throws IOException; R getById(Long placeholderOrderId); @@ -31,8 +34,87 @@ public interface IXhpcPlaceholderOrderService { void getAbnormal(); + void getAbnormalTime(); + R getPlaceholderIDs(String [] stationIDs); AjaxResult getExamine(Long placeholderOrderId, BigDecimal totalMoney, String startTime , String endTime); - } + /** + * 订单来源列表 + * @return + */ + List> getSumSourceList(HttpServletRequest request, String tenantId, Long operatorId, Long chargingStationId, Long chargingPileId, Long terminalId, String startTime, String endTime, String sourceIds, String chargingStationIds); + + /** + * 订单来源统计导出 + * @return + */ + void getSumSourceListExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long operatorId,Long chargingStationId,Long chargingPileId,Long terminalId, String startTime, String endTime, String sourceIds,String chargingStationIds) throws IOException; + + + /** + * 日期统计 + * @param chargingStationIds 电站id集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + List> getDateIntervalPage(HttpServletRequest request,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId,String chargingStationIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type); + + /** + * 日期统计导出 + * @param chargingStationIds 电站id集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + void dateIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String chargingStationIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type) throws IOException; + + + /** + * 电站统计 + * @param chargingStationIds 电站集合 + * @param operatorIds 运营集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + List> getStationIntervalPage(HttpServletRequest request,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId,String chargingStationIds,String operatorIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type); + + /** + * 电站统计导出 + * @param chargingStationIds 电站集合 + * @param operatorIds 运营集合 + * @param internetUserId 流量方id + * @param operatorId 运营商id + * @param startTime 订单开始时间 + * @param endTime 订单结束时间 + * @param userId 用户id + * @param type 1 平台 2 运营商 3流量方 + * @return + */ + void stationIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String chargingStationIds,String operatorIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type) throws IOException; + + + List> appealPlaceholderOrderList(HttpServletRequest request); + + R applyPlaceholderOrder(HttpServletRequest request,Long placeholderOrderId,String appealUserResult); + + R applyPlaceholderOrderProcess(HttpServletRequest request,Long placeholderOrderId,BigDecimal actPrice,String refundType,String appealResult); + + + List> appealPlaceholderOrderListPC(HttpServletRequest request,String tenantId,Long operatorId,String name, Integer type, String serialNumber, Long chargingStationId); +} 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 32e8fb1c..0a5667fb 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 @@ -589,7 +589,9 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar @Override public int addUserAccountStatement(Long userId, BigDecimal amount, BigDecimal remainingSum, Long chargeOrderId, Integer type, Date date,Integer source) { - + if(type ==7){ + return xhpcChargeOrderMapper.insertUserAccountStatementPlaceholder(userId, amount, remainingSum, chargeOrderId, type, date,source); + } return xhpcChargeOrderMapper.insertUserAccountStatement(userId, amount, remainingSum, chargeOrderId, type, date,source); } @@ -1282,28 +1284,28 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar xhpcChargeOrderMapper.addXhpcChargeOrder(xhpcChargeOrder); - executorService.execute(new Runnable() { - @Override - public void run() { - R r1 = powerPileService.startCharging(startChargingData); - logger.info("<<<<<<<<<<<<<<<<<<<<>>>>>VIN>>>>>>>>>>>"); - logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getCode() + ">>>>>>>>>>>>>>>>>"); - logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getMsg() + ">>>>>>>>>>>>>>>>>"); - logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getData() + ">>>>>>>>>>>>>>>>>"); - if(r1.getCode() == 200){ - try{ - xhpcChargeOrder.setRateModelId(Long.valueOf(r1.getData().toString())); - xhpcChargeOrderMapper.updateXhpcChargeOrder(xhpcChargeOrder); - //插一帧实时数据 - extracted(xhpcChargeOrder); - }catch (Exception e){ - e.printStackTrace(); - logger.error("update order[{}] failed.", orderNo); - } - } - - } - }); +// executorService.execute(new Runnable() { +// @Override +// public void run() { +// R r1 = powerPileService.startCharging(startChargingData); +// logger.info("<<<<<<<<<<<<<<<<<<<<>>>>>VIN>>>>>>>>>>>"); +// logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getCode() + ">>>>>>>>>>>>>>>>>"); +// logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getMsg() + ">>>>>>>>>>>>>>>>>"); +// logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getData() + ">>>>>>>>>>>>>>>>>"); +// if(r1.getCode() == 200){ +// try{ +// xhpcChargeOrder.setRateModelId(Long.valueOf(r1.getData().toString())); +// xhpcChargeOrderMapper.updateXhpcChargeOrder(xhpcChargeOrder); +// //插一帧实时数据 +// extracted(xhpcChargeOrder); +// }catch (Exception e){ +// e.printStackTrace(); +// logger.error("update order[{}] failed.", orderNo); +// } +// } +// +// } +// }); Map map =new HashMap<>(); map.put("balance",userMessage.get("balance")); map.put("serialNumber",orderNo); @@ -1344,8 +1346,8 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar }else if(qiang==4){ spear = "D"; } - operatorMessage.get("chargingStationName").toString().replace("翔桦充电",""); - String str = operatorMessage.get("chargingStationName").toString().replace("翔桦充电", ""); + operatorMessage.get("chargingStationName").toString().replace("小华充电",""); + String str = operatorMessage.get("chargingStationName").toString().replace("小华充电", ""); if(str.length()>13){ str =str.substring(0,13); } @@ -1354,7 +1356,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar HashMap paramMap = new HashMap<>(); paramMap.put("battery", soc); paramMap.put("phone", userMessage.get("phone").toString()); - paramMap.put("content", "【翔桦充电】尊敬的用户,你的车辆已充电达至设定的SOC(" + soc + "%)。"); + paramMap.put("content", "【小华充电】尊敬的用户,你的车辆已充电达至设定的SOC(" + soc + "%)。"); smsService.sendNotice(paramMap); } } @@ -1982,6 +1984,11 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar return xhpcChargeOrderMapper.getXhpcTerminalList(chargingStationId,chargingPileId,type,userId); } + @Override + public int getXhpcPlaceholderOrderNumber(Long userId, Integer source, String terminalId) { + return xhpcChargeOrderMapper.getXhpcPlaceholderOrderNumber(userId, source, terminalId); + } + //判断双枪启规则 private AjaxResult startUpSuncha(Map userMessage,XhpcChargeOrder xhpcChargeOrder,XhpcTerminal xhpcTerminal,String tenantId,Integer source,String terminalSerialNumber,Integer type){ diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java index 9985e2eb..cbfabebb 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java @@ -151,16 +151,19 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis String tenantId = loginUser.getTenantId(); Integer userType = loginUser.getUserType(); - R user = userTypeService.getUser(null, userid, userType, null, tenantId); +// R user = userTypeService.getUser(null, userid, userType, null, tenantId); +// +// if(user !=null && user.getData() !=null){ +// Map userMessage = (Map)user.getData(); +// if (userMessage != null) { +// startPage(); +// return xhpcHistoryOrderMapper.list(userid,userType,tenantId); +// } +// } - if(user !=null && user.getData() !=null){ - Map userMessage = (Map)user.getData(); - if (userMessage != null) { - startPage(); - return xhpcHistoryOrderMapper.list(userid,userType,tenantId); - } - } - return list; + // List> list1 = xhpcHistoryOrderMapper.list(userid, userType, tenantId); + + return xhpcHistoryOrderMapper.list(userid, userType, tenantId); } @Override diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcPlaceholderOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcPlaceholderOrderServiceImpl.java index 55c1deb9..ed246654 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcPlaceholderOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcPlaceholderOrderServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; +import com.xhpc.common.api.SmsService; import com.xhpc.common.api.UserTypeService; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.utils.SecurityUtils; @@ -13,6 +14,7 @@ import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.service.BaseService; import com.xhpc.common.domain.XhpcPlaceholderTime; import com.xhpc.common.enums.StopReasonEnum; +import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.UserTypeUtil; import com.xhpc.evcs.domain.PlaceholderRules; @@ -21,14 +23,17 @@ import com.xhpc.order.domain.XhpcChargeOrder; import com.xhpc.order.domain.XhpcPlaceholderOrder; import com.xhpc.order.dto.XhpcPlaceholderTimeOrderDto; import com.xhpc.order.mapper.XhpcPlaceholderOrderMapper; +import com.xhpc.order.service.IXhpcChargeOrderService; import com.xhpc.order.service.IXhpcPlaceholderOrderService; import com.xhpc.system.api.domain.SysUser; import com.xhpc.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; @@ -43,12 +48,18 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; @Service public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhpcPlaceholderOrderService { - @Resource - XhpcPlaceholderOrderMapper xhpcPlaceholderOrderMapper; + @Autowired + private XhpcPlaceholderOrderMapper xhpcPlaceholderOrderMapper; @Autowired private TokenService tokenService; @Autowired private UserTypeService userTypeService; + @Autowired + private IXhpcChargeOrderService xhpcChargeOrderService; + @Autowired + private SmsService smsService; + @Autowired + private RedisService redisService; @Override public int insertXhpcPlaceholderOrder(XhpcPlaceholderOrder placeholderOrder) { @@ -64,7 +75,9 @@ public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhp String serialNumber = cacheGun.get("previousOrder").toString(); //查询订单 XhpcPlaceholderOrder xhpcPlaceholderOrder = xhpcPlaceholderOrderMapper.getXhpcPlaceholderOrderSerialNumber(serialNumber); - if(xhpcPlaceholderOrder !=null){ + int xhpcChargeOrderStatus = xhpcPlaceholderOrderMapper.getXhpcChargeOrderStatus(serialNumber); + + if(xhpcPlaceholderOrder !=null && xhpcChargeOrderStatus==1){ if (xhpcPlaceholderOrder.getType() == 0 ) { //删除占位费时间段收费表 // xhpcPlaceholderOrderMapper.deleteByPlaceholderOrderIdInt(xhpcPlaceholderOrder.getPlaceholderOrderId()); @@ -286,7 +299,7 @@ public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhp totalMoney = new BigDecimal(50); } xhpcPlaceholderOrder.setTotalMoney(totalMoney); - if (new BigDecimal(0).compareTo(new BigDecimal(between)) == 1) { + if (new BigDecimal(0).compareTo(new BigDecimal(between)) == -1) { xhpcPlaceholderOrder.setOvertimePrice(totalMoney.divide(new BigDecimal(between), 2, BigDecimal.ROUND_HALF_UP)); } else { xhpcPlaceholderOrder.setOvertimePrice(new BigDecimal("0.0")); @@ -313,10 +326,86 @@ public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhp cacheOrder.put("OvertimeDetails", overtimeDetails); REDIS.setCacheMap(orderKey, cacheOrder); xhpcPlaceholderOrder.setType(1); - - Map cacheGunYu =new HashMap<>(); - //cacheGunYu.put("previousOrder",""); REDIS.setCacheMap(gunNumber, cacheGun); + + if(xhpcPlaceholderOrder.getSource() !=1){ + Long userId = xhpcPlaceholderOrder.getUserId(); + Integer source = xhpcPlaceholderOrder.getSource(); + String tenantId = xhpcPlaceholderOrder.getTenantId(); + + if(0 == xhpcPlaceholderOrder.getSource()){ + xhpcPlaceholderOrder.setChargingMode("C端用户"); + }else if(2 == xhpcPlaceholderOrder.getSource()){ + xhpcPlaceholderOrder.setChargingMode("社区用户"); + }else{ + xhpcPlaceholderOrder.setChargingMode("B端用户"); + } + BigDecimal totalMoney1 = xhpcPlaceholderOrder.getTotalMoney(); + xhpcPlaceholderOrder.setStatus(3); + if(totalMoney1.compareTo(new BigDecimal(0))>0){ + System.out.println("==========11111============"); + String key ="placeholderOrder:" +source+ tenantId+userId; + int number =0; + if(redisService.getCacheObject(key) !=null){ + String numberYu = redisService.getCacheObject(key).toString(); + int numbers =Integer.parseInt(numberYu); + numbers++; + number=numbers; + redisService.setCacheObject(key, numbers); + }else{ + redisService.setCacheObject(key, 1); + number=1; + } + System.out.println("==========2222============"); + R user = userTypeService.getUser(null, userId, source, null, tenantId); + if(number>3){ + if(user !=null && user.getData() !=null ){ + Map userMessage = (Map)user.getData(); + String phone =userMessage.get("phone").toString(); + BigDecimal balance1 =new BigDecimal(userMessage.get("balance").toString()); + BigDecimal subtract = balance1.subtract(totalMoney1); + + int i = xhpcChargeOrderService.updateUserBalance(userId, subtract,source,tenantId); + if(i==0){ + //扣钱失败 + System.out.println("<<<<<<<<<<<<<<<<扣钱失败>>>>userId>>>>>>>>>>>>>"+userId+">>subtract>>>>>>>>"+subtract+">>balance1>>>>>>>>"+balance1+">>source>>>>>>>>"+source); + }else{ + //添加流水 + xhpcChargeOrderService.addUserAccountStatement(userId,totalMoney1, subtract, xhpcPlaceholderOrder.getPlaceholderOrderId(), 7, new Date(),source); + } + HashMap paramMap = new HashMap<>(); + paramMap.put("time", xhpcPlaceholderOrder.getTotalTimeSpan()+""); + paramMap.put("sumMoney",totalMoney1.toString()); + paramMap.put("phone", phone); + paramMap.put("content", "尊敬的用户你好,你的爱车已停止充电"+xhpcPlaceholderOrder.getTotalTimeSpan()+"分钟,前30分钟免费,平台收取本次设备占用费:"+totalMoney1+"元,占位费费用将从余额扣除,占位费明细请查询翔桦充电小程序我的历史订单,充电结束请及时挪车。"); + smsService.sendNotice(paramMap); + //平台用户直接余额扣钱 + xhpcPlaceholderOrder.setActPrice(xhpcPlaceholderOrder.getTotalMoney()); + xhpcPlaceholderOrder.setActStatus(1); + } + }else{ + //发送短信 + //平台用户直接余额扣钱 + if(user !=null && user.getData() !=null ){ + Map userMessage = (Map)user.getData(); + String phone =userMessage.get("phone").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("time", xhpcPlaceholderOrder.getTotalTimeSpan()+""); + paramMap.put("sumMoney",totalMoney1.toString()); + paramMap.put("number", number+""); + paramMap.put("phone", phone); + paramMap.put("content", "尊敬的用户,你的爱车已停止充电"+xhpcPlaceholderOrder.getTotalTimeSpan()+"分钟,前30分钟免费,平台收取本次设备占用费:"+totalMoney1+"元,占位费费用将从余额扣除,占位费明细请查询翔桦充电小程序我的历史订单,试运行期间前三次免费,当前免费次数为"+number+",充电结束请及时挪车。"); + smsService.sendNotice(paramMap); + + } + xhpcPlaceholderOrder.setActPrice(new BigDecimal(0)); + xhpcPlaceholderOrder.setActStatus(1); + } + }else{ + xhpcPlaceholderOrder.setActPrice(new BigDecimal(0)); + xhpcPlaceholderOrder.setActStatus(1); + } + } xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); } } @@ -369,6 +458,44 @@ public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhp return list; } + @Override + public List> getAbnormalListPage(String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type, String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult) { + Integer number = 0; + if (!"".equals(phone) && phone != null && !"".equals(source) && source != null) { + number = 3; + } else if (!"".equals(phone) && phone != null && source == null) { + number = 1; + } else if (phone == null && source != null) { + number = 2; + } + //获取登陆用户 + Long logUserId = SecurityUtils.getUserId(); + LoginUser loginUser = tokenService.getLoginUser(); + SysUser sysUser = loginUser.getSysUser(); + //桩的统计、该时段金额 + List> list = new ArrayList<>(); + if (!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUser.getUserId())) { + startPage(); + if (UserTypeUtil.SYS_SUPER_TYPE_ONE.equals(loginUser.getSuperType())) { + tenantId = loginUser.getTenantId(); + Long logOperatorId = sysUser.getOperatorId(); + list = xhpcPlaceholderOrderMapper.getAbnormalListPage(chargingStationId, chargingPileId, terminalId, phone, transactionNumber, 1, chargingStationName, operatorId, source, beginStartTime, beginEndTime, logOperatorId, type, number, affiliationOrganization, evcsOrderNo, plateNum, internetId, internetSerialNumber, terminalName, vinCode, overStartTime, overEndTime, personnelId, confirmResult, tenantId, 0); + } + if (UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())) { + Long logOperatorId = sysUser.getOperatorId(); + //运营商看自己的场站 + list = xhpcPlaceholderOrderMapper.getAbnormalListPage(chargingStationId, chargingPileId, terminalId, phone, transactionNumber, 1, chargingStationName, operatorId, source, beginStartTime, beginEndTime, logOperatorId, type, number, affiliationOrganization, evcsOrderNo, plateNum, internetId, internetSerialNumber, terminalName, vinCode, overStartTime, overEndTime, personnelId, confirmResult, tenantId, 0); + } else { + list = xhpcPlaceholderOrderMapper.getAbnormalListPage(chargingStationId, chargingPileId, terminalId, phone, transactionNumber, 2, chargingStationName, operatorId, source, beginStartTime, beginEndTime, logUserId, type, number, affiliationOrganization, evcsOrderNo, plateNum, internetId, internetSerialNumber, terminalName, vinCode, overStartTime, overEndTime, personnelId, confirmResult, tenantId, 0); + } + } else { + startPage(); + list = xhpcPlaceholderOrderMapper.getAbnormalListPage(chargingStationId, chargingPileId, terminalId, phone, transactionNumber, 0, chargingStationName, operatorId, source, beginStartTime, beginEndTime, userId, type, number, affiliationOrganization, evcsOrderNo, plateNum, internetId, internetSerialNumber, terminalName, vinCode, overStartTime, overEndTime, personnelId, confirmResult, tenantId, 0); + + } + return list; + } + @Override public void export(HttpServletResponse response, String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type, String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult) throws IOException { @@ -702,6 +829,67 @@ public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhp xhpcPlaceholderOrderMapper.getAbnormal(); } + @Override + public void getAbnormalTime() { + List> mapList = xhpcPlaceholderOrderMapper.getAbnormalTimeList(); + for (int i = 0; i < mapList.size(); i++) { + Map map = mapList.get(i); + BigDecimal totalPrice = new BigDecimal(map.get("totalPrice").toString()); + XhpcPlaceholderOrder xhpcPlaceholderOrder =new XhpcPlaceholderOrder(); + xhpcPlaceholderOrder.setPlaceholderOrderId(Long.parseLong(map.get("placeholderOrderId").toString())); + int source = Integer.parseInt(map.get("source").toString()); + if( source!=1) { + if (0 == source) { + xhpcPlaceholderOrder.setChargingMode("C端用户"); + } else if (2 == source) { + xhpcPlaceholderOrder.setChargingMode("社区用户"); + } else { + xhpcPlaceholderOrder.setChargingMode("B端用户"); + } + } + xhpcPlaceholderOrder.setSerialNumber(map.get("serialNumber").toString()); + xhpcPlaceholderOrder.setTenantId(map.get("tenantId").toString()); + if(map.get("startTime").toString().length()==19){ + xhpcPlaceholderOrder.setStartTime(DateUtil.parse(map.get("startTime").toString().replace("T", " "))); + }else{ + xhpcPlaceholderOrder.setStartTime(DateUtil.parse(map.get("startTime").toString())); + } + if(new BigDecimal(0).compareTo(totalPrice)==0){ + if(map.get("startTime").toString().length()==19){ + xhpcPlaceholderOrder.setEndTime(DateUtil.parse(map.get("startTime").toString().replace("T", " "))); + }else{ + xhpcPlaceholderOrder.setEndTime(DateUtil.parse(map.get("startTime").toString())); + } + xhpcPlaceholderOrder.setTotalTimeSpan(0); + xhpcPlaceholderOrder.setOvertimePrice(new BigDecimal(0)); + xhpcPlaceholderOrder.setTotalMoney(new BigDecimal(0)); + xhpcPlaceholderOrder.setType(1); + xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); + }else{ + Map map1 = xhpcPlaceholderOrderMapper.getXhpcDeviceMessage(xhpcPlaceholderOrder.getSerialNumber().substring(0,16), 0, xhpcPlaceholderOrder.getTenantId(),xhpcPlaceholderOrder.getStartTime()); + if(map1 !=null && map1.get("createTime") !=null){ + System.out.println(map1.get("createTime").toString()); + if(map1.get("createTime").toString().length()==19){ + getExamine(xhpcPlaceholderOrder.getPlaceholderOrderId(),null,DateUtil.format(xhpcPlaceholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss"),DateUtil.format(DateUtil.parse(map1.get("createTime").toString().replace("T"," "), "yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss")); + }else{ + getExamine(xhpcPlaceholderOrder.getPlaceholderOrderId(),null,DateUtil.format(xhpcPlaceholderOrder.getStartTime(),"yyyy-MM-dd HH:mm:ss"),DateUtil.format(DateUtil.parse(map1.get("createTime").toString(), "yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss")); + } + }else{ +// if(map.get("startTime").toString().length()==19){ +// xhpcPlaceholderOrder.setEndTime(DateUtil.parse(map.get("startTime").toString().replace("T", " "))); +// }else{ +// xhpcPlaceholderOrder.setEndTime(DateUtil.parse(map.get("startTime").toString())); +// } +// xhpcPlaceholderOrder.setTotalTimeSpan(0); +// xhpcPlaceholderOrder.setOvertimePrice(new BigDecimal(0)); +// xhpcPlaceholderOrder.setTotalMoney(new BigDecimal(0)); + xhpcPlaceholderOrder.setType(3); + xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); + } + } + } + } + @Override public R getPlaceholderIDs(String[] stationIDs) { @@ -721,19 +909,672 @@ public class XhpcPlaceholderOrderServiceImpl extends BaseService implements IXhp } @Override - public AjaxResult getExamine(Long placeholderOrderId, BigDecimal totalMoney, String startTime, String endTime) { + public AjaxResult getExamine(Long placeholderOrderId, BigDecimal totalMoneyYu, String startTimeYu, String endTimeYu) { - XhpcPlaceholderOrder placeholderOrder=new XhpcPlaceholderOrder(); - placeholderOrder.setPlaceholderOrderId(placeholderOrderId); - placeholderOrder.setTotalMoney(totalMoney); - placeholderOrder.setStartTime(DateUtil.parse(startTime,"yyyy-MM-dd HH:mm:ss")); - placeholderOrder.setEndTime(DateUtil.parse(endTime,"yyyy-MM-dd HH:mm:ss")); - placeholderOrder.setType(1); - xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(placeholderOrder); + XhpcPlaceholderOrder xhpcPlaceholderOrder=xhpcPlaceholderOrderMapper.getByPlaceholderOrderId(placeholderOrderId); + + xhpcPlaceholderOrder.setPlaceholderOrderId(placeholderOrderId); + + xhpcPlaceholderOrder.setStartTime(DateUtil.parse(startTimeYu,"yyyy-MM-dd HH:mm:ss")); + xhpcPlaceholderOrder.setEndTime(DateUtil.parse(endTimeYu,"yyyy-MM-dd HH:mm:ss")); + + xhpcPlaceholderOrder.setTotalTimeSpan((int) DateUtil.between(xhpcPlaceholderOrder.getStartTime(), xhpcPlaceholderOrder.getEndTime(), DateUnit.MINUTE)); + xhpcPlaceholderOrder.setType(1); + + + DateTime startTime = DateUtil.parse(DateUtil.format(xhpcPlaceholderOrder.getStartTime(), "yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss"); + DateTime endTime = DateUtil.parse(DateUtil.format(xhpcPlaceholderOrder.getEndTime(), "yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss"); + String start = DateUtil.formatTime(startTime); + String end = DateUtil.formatTime(endTime); + DateTime parse = DateUtil.parse(DateUtil.format(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"); + DateTime parse1 = DateUtil.parse(DateUtil.format(endTime, "yyyy-MM-dd"), "yyyy-MM-dd"); + long betweenDay = DateUtil.between(parse,parse1, DateUnit.DAY); + long between = DateUtil.between(endTime, startTime, DateUnit.MINUTE); + xhpcPlaceholderOrder.setEndTime(endTime); + xhpcPlaceholderOrder.setTotalTimeSpan((int) between); + BigDecimal totalMoney = new BigDecimal("0.0"); + int freeTime = (int) xhpcPlaceholderOrder.getFreeTime(); + if (freeTime - between > 0) { + between = 0L; + } else{ + between = between - freeTime; + if (betweenDay > 0) { + for (int m = 0; m <= betweenDay; m++) { + if(m==0){ + List xhpcPlaceholderTimeOne = xhpcPlaceholderOrderMapper.getXhpcPlaceholderTime(start, "23:59:59", xhpcPlaceholderOrder.getPlaceholderId()); + for (int i = 0; i < xhpcPlaceholderTimeOne.size(); i++) { + XhpcPlaceholderTime xhpcPlaceholderTime = xhpcPlaceholderTimeOne.get(i); + BigDecimal price = xhpcPlaceholderTime.getPrice(); + String pattern = "HH:mm:ss"; + Long startOne = DateUtil.parse(start, pattern).getTime(); + Long endOne = DateUtil.parse("23:59:59", pattern).getTime(); + + String format1 = DateUtil.format(xhpcPlaceholderTime.getStartTime(), pattern); + String format2 = DateUtil.format(xhpcPlaceholderTime.getEndTime(), pattern); + + Long time1 = DateUtil.parse(format1, pattern).getTime(); + Long time2 = DateUtil.parse(format2, pattern).getTime(); + XhpcPlaceholderTimeOrderDto placeholderTimeOrderDto = new XhpcPlaceholderTimeOrderDto(); + if (startOne < time1) { + startOne = time1; + placeholderTimeOrderDto.setStartTime(xhpcPlaceholderTime.getStartTime()); + }else{ + placeholderTimeOrderDto.setStartTime(DateUtil.parse(start, pattern)); + } + if (endOne > time2) { + endOne = time2; + placeholderTimeOrderDto.setEndTime(xhpcPlaceholderTime.getEndTime()); + }else{ + placeholderTimeOrderDto.setEndTime(DateUtil.parse("23:59:59", pattern)); + } + long betweOne = (endOne - startOne) / 60000; + int i1 = (int) (betweOne); + + if (freeTime - i1 > 0) { + freeTime = freeTime - i1; + i1 = 0; + } else { + i1 = i1 - freeTime; + freeTime = 0; + } + BigDecimal multiply = new BigDecimal(i1).multiply(price); + totalMoney = totalMoney.add(multiply); + + placeholderTimeOrderDto.setPlaceholderOrderId(xhpcPlaceholderOrder.getPlaceholderOrderId()); + placeholderTimeOrderDto.setPrice(price); + placeholderTimeOrderDto.setTotalMoney(multiply); + placeholderTimeOrderDto.setTotalTimeSpan(i1); + xhpcPlaceholderOrderMapper.insertXhpcPlaceholderTimeOrder(placeholderTimeOrderDto); + + } + }else if(m>0 && m xhpcPlaceholderTimeOne = xhpcPlaceholderOrderMapper.getXhpcPlaceholderTime("00:00:00", "23:59:59", xhpcPlaceholderOrder.getPlaceholderId()); + for (int i = 0; i < xhpcPlaceholderTimeOne.size(); i++) { + XhpcPlaceholderTime xhpcPlaceholderTime = xhpcPlaceholderTimeOne.get(i); + BigDecimal price = xhpcPlaceholderTime.getPrice(); + String pattern = "HH:mm:ss"; + Long startOne = DateUtil.parse("00:00:00", pattern).getTime(); + Long endOne = DateUtil.parse("23:59:59", pattern).getTime(); + + String format1 = DateUtil.format(xhpcPlaceholderTime.getStartTime(), pattern); + String format2 = DateUtil.format(xhpcPlaceholderTime.getEndTime(), pattern); + + Long time1 = DateUtil.parse(format1, pattern).getTime(); + Long time2 = DateUtil.parse(format2, pattern).getTime(); + XhpcPlaceholderTimeOrderDto placeholderTimeOrderDto = new XhpcPlaceholderTimeOrderDto(); + if (startOne < time1) { + startOne = time1; + placeholderTimeOrderDto.setStartTime(xhpcPlaceholderTime.getStartTime()); + }else{ + placeholderTimeOrderDto.setStartTime(DateUtil.parse("00:00:00", pattern)); + } + if (endOne > time2) { + endOne = time2; + placeholderTimeOrderDto.setEndTime(xhpcPlaceholderTime.getEndTime()); + }else{ + placeholderTimeOrderDto.setEndTime(DateUtil.parse("23:59:59", pattern)); + } + long betweOne = (endOne - startOne) / 60000; + int i1 = (int) (betweOne); + + if (freeTime - i1 > 0) { + freeTime = freeTime - i1; + i1 = 0; + } else { + i1 = i1 - freeTime; + freeTime = 0; + } + + BigDecimal multiply = new BigDecimal(i1).multiply(price); + totalMoney = totalMoney.add(multiply); + + placeholderTimeOrderDto.setPlaceholderOrderId(xhpcPlaceholderOrder.getPlaceholderOrderId()); + placeholderTimeOrderDto.setPrice(price); + placeholderTimeOrderDto.setTotalMoney(multiply); + placeholderTimeOrderDto.setTotalTimeSpan(i1); + xhpcPlaceholderOrderMapper.insertXhpcPlaceholderTimeOrder(placeholderTimeOrderDto); + + } + }else{ + List xhpcPlaceholderTimeTwo = xhpcPlaceholderOrderMapper.getXhpcPlaceholderTime("00:00:00", end, xhpcPlaceholderOrder.getPlaceholderId()); + for (int i = 0; i < xhpcPlaceholderTimeTwo.size(); i++) { + XhpcPlaceholderTime xhpcPlaceholderTime = xhpcPlaceholderTimeTwo.get(i); + BigDecimal price = xhpcPlaceholderTime.getPrice(); + String pattern = "HH:mm:ss"; + Long startOne = DateUtil.parse("00:00:00", pattern).getTime(); + Long endOne = DateUtil.parse(end, pattern).getTime(); + + String format1 = DateUtil.format(xhpcPlaceholderTime.getStartTime(), pattern); + String format2 = DateUtil.format(xhpcPlaceholderTime.getEndTime(), pattern); + + Long time1 = DateUtil.parse(format1, pattern).getTime(); + Long time2 = DateUtil.parse(format2, pattern).getTime(); + + XhpcPlaceholderTimeOrderDto placeholderTimeOrderDto = new XhpcPlaceholderTimeOrderDto(); + if (startOne < time1) { + startOne = time1; + placeholderTimeOrderDto.setStartTime(xhpcPlaceholderTime.getStartTime()); + }else{ + placeholderTimeOrderDto.setStartTime(DateUtil.parse("00:00:00", pattern)); + } + if (endOne > time2) { + endOne = time2; + placeholderTimeOrderDto.setEndTime(xhpcPlaceholderTime.getEndTime()); + }else{ + placeholderTimeOrderDto.setEndTime(DateUtil.parse(end, pattern)); + } + long betweOne = (endOne - startOne) / 60000; + int i1 = (int) (betweOne); + if (freeTime - i1 > 0) { + freeTime = freeTime - i1; + i1 = 0; + } else { + i1 = i1 - freeTime; + freeTime = 0; + } + BigDecimal multiply = new BigDecimal(i1).multiply(price); + totalMoney = totalMoney.add(multiply); + + + placeholderTimeOrderDto.setPlaceholderOrderId(xhpcPlaceholderOrder.getPlaceholderOrderId()); + placeholderTimeOrderDto.setPrice(price); + placeholderTimeOrderDto.setTotalMoney(multiply); + placeholderTimeOrderDto.setTotalTimeSpan(i1); + xhpcPlaceholderOrderMapper.insertXhpcPlaceholderTimeOrder(placeholderTimeOrderDto); + } + } + } + }else { + List xhpcPlaceholderTimeOne = xhpcPlaceholderOrderMapper.getXhpcPlaceholderTime(start, end, xhpcPlaceholderOrder.getPlaceholderId()); + for (int i = 0; i < xhpcPlaceholderTimeOne.size(); i++) { + XhpcPlaceholderTime xhpcPlaceholderTime = xhpcPlaceholderTimeOne.get(i); + BigDecimal price = xhpcPlaceholderTime.getPrice(); + String pattern = "HH:mm:ss"; + Long startOne = DateUtil.parse(start, pattern).getTime(); + Long endOne = DateUtil.parse(end, pattern).getTime(); + + String format1 = DateUtil.format(xhpcPlaceholderTime.getStartTime(), pattern); + String format2 = DateUtil.format(xhpcPlaceholderTime.getEndTime(), pattern); + + Long time1 = DateUtil.parse(format1, pattern).getTime(); + Long time2 = DateUtil.parse(format2, pattern).getTime(); + + XhpcPlaceholderTimeOrderDto placeholderTimeOrderDto = new XhpcPlaceholderTimeOrderDto(); + if (startOne < time1) { + startOne = time1; + placeholderTimeOrderDto.setStartTime(xhpcPlaceholderTime.getStartTime()); + }else{ + placeholderTimeOrderDto.setStartTime(DateUtil.parse(start, pattern)); + } + if (endOne > time2) { + endOne = time2; + placeholderTimeOrderDto.setEndTime(xhpcPlaceholderTime.getEndTime()); + }else{ + placeholderTimeOrderDto.setEndTime(DateUtil.parse(end, pattern)); + } + long betweOne = (endOne - startOne) / 60000; + int i1 = (int) (betweOne); + + if (freeTime - i1 > 0) { + freeTime = freeTime - i1; + i1 = 0; + } else { + i1 = i1 - freeTime; + freeTime = 0; + } + BigDecimal multiply = new BigDecimal(i1).multiply(price); + totalMoney = totalMoney.add(multiply); + + placeholderTimeOrderDto.setPlaceholderOrderId(xhpcPlaceholderOrder.getPlaceholderOrderId()); + placeholderTimeOrderDto.setPrice(price); + placeholderTimeOrderDto.setTotalMoney(multiply); + placeholderTimeOrderDto.setTotalTimeSpan(i1); + xhpcPlaceholderOrderMapper.insertXhpcPlaceholderTimeOrder(placeholderTimeOrderDto); + } + } + } + if(totalMoney.compareTo(new BigDecimal(50)) == 1){ + totalMoney = new BigDecimal(50); + } + xhpcPlaceholderOrder.setTotalMoney(totalMoney); + if (new BigDecimal(0).compareTo(new BigDecimal(between)) == -1) { + xhpcPlaceholderOrder.setOvertimePrice(totalMoney.divide(new BigDecimal(between), 2, BigDecimal.ROUND_HALF_UP)); + } else { + xhpcPlaceholderOrder.setOvertimePrice(new BigDecimal("0.0")); + } + //xhpcPlaceholderOrder.setTotalMoney(totalMoneyYu); + if(xhpcPlaceholderOrder.getSource() !=1){ + Long userId = xhpcPlaceholderOrder.getUserId(); + Integer source = xhpcPlaceholderOrder.getSource(); + String tenantId = xhpcPlaceholderOrder.getTenantId(); + BigDecimal totalMoney1 = xhpcPlaceholderOrder.getTotalMoney(); + if(0 == xhpcPlaceholderOrder.getSource()){ + xhpcPlaceholderOrder.setChargingMode("C端用户"); + }else if(2 == xhpcPlaceholderOrder.getSource()){ + xhpcPlaceholderOrder.setChargingMode("社区用户"); + }else{ + xhpcPlaceholderOrder.setChargingMode("B端用户"); + } + if(totalMoney1.compareTo(new BigDecimal(0))>0){ + String key ="placeholderOrder:" +source+ tenantId+userId; + int number =0; + if(redisService.getCacheObject(key) !=null){ + String numberYu = redisService.getCacheObject(key).toString(); + int numbers =Integer.parseInt(numberYu); + numbers++; + number=numbers; + redisService.setCacheObject(key, numbers); + }else{ + redisService.setCacheObject(key, 1); + number=1; + } + R user = userTypeService.getUser(null, userId, source, null, tenantId); + if(number>3){ + if(user !=null && user.getData() !=null ){ + Map userMessage = (Map)user.getData(); + String phone =userMessage.get("phone").toString(); + BigDecimal balance1 =new BigDecimal(userMessage.get("balance").toString()); + BigDecimal subtract = balance1.subtract(totalMoney1); + + int i = xhpcChargeOrderService.updateUserBalance(userId, subtract,source,tenantId); + if(i==0){ + //扣钱失败 + System.out.println("<<<<<<<<<<<<<<<<扣钱失败>>>>userId>>>>>>>>>>>>>"+userId+">>subtract>>>>>>>>"+subtract+">>balance1>>>>>>>>"+balance1+">>source>>>>>>>>"+source); + }else{ + //添加流水 + xhpcChargeOrderService.addUserAccountStatement(userId,totalMoney1, subtract, xhpcPlaceholderOrder.getPlaceholderOrderId(), 7, new Date(),source); + } + HashMap paramMap = new HashMap<>(); + paramMap.put("time", xhpcPlaceholderOrder.getTotalTimeSpan()+""); + paramMap.put("sumMoney",totalMoney1.toString()); + paramMap.put("phone", phone); + paramMap.put("content", "尊敬的用户你好,你的爱车已停止充电"+xhpcPlaceholderOrder.getTotalTimeSpan()+"分钟,前30分钟免费,平台收取本次设备占用费:"+totalMoney1+"元,占位费费用将从余额扣除,占位费明细请查询翔桦充电小程序我的历史订单,充电结束请及时挪车。"); + smsService.sendNotice(paramMap); + //平台用户直接余额扣钱 + xhpcPlaceholderOrder.setActPrice(xhpcPlaceholderOrder.getTotalMoney()); + xhpcPlaceholderOrder.setActStatus(1); + } + }else{ + //发送短信 + //平台用户直接余额扣钱 + if(user !=null && user.getData() !=null ){ + Map userMessage = (Map)user.getData(); + String phone =userMessage.get("phone").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("time", xhpcPlaceholderOrder.getTotalTimeSpan()+""); + paramMap.put("sumMoney",totalMoney1.toString()); + paramMap.put("number", number+""); + paramMap.put("phone", phone); + paramMap.put("content", "尊敬的用户,你的爱车已停止充电"+xhpcPlaceholderOrder.getTotalTimeSpan()+"分钟,前30分钟免费,平台收取本次设备占用费:"+totalMoney1+"元,占位费费用将从余额扣除,占位费明细请查询翔桦充电小程序我的历史订单,试运行期间前三次免费,当前免费次数为"+number+",充电结束请及时挪车。"); + smsService.sendNotice(paramMap); + + } + xhpcPlaceholderOrder.setActPrice(new BigDecimal(0)); + xhpcPlaceholderOrder.setActStatus(1); + } + }else{ + xhpcPlaceholderOrder.setActPrice(new BigDecimal(0)); + xhpcPlaceholderOrder.setActStatus(1); + } + } + xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); return AjaxResult.success(); } + @Override + public List> getSumSourceList(HttpServletRequest request, String tenantId, Long operatorId, Long chargingStationId, Long chargingPileId, Long terminalId, String startTime, String endTime, String sourceIds, String chargingStationIds) { + List sourceList =new ArrayList<>(); + if(!"".equals(sourceIds) && sourceIds !=null){ + sourceList= Arrays.asList(sourceIds.split(",")); + } + List chargingStationIdList =new ArrayList<>(); + if(!"".equals(chargingStationIds) && chargingStationIds !=null){ + chargingStationIdList= Arrays.asList(chargingStationIds.split(",")); + } + LoginUser loginUser = tokenService.getLoginUser(request); + SysUser sysUser = loginUser.getSysUser(); + Long sysUserId = sysUser.getUserId(); + + List> list =new ArrayList<>(); + if(UserTypeUtil.SYS_USER_TYPE_FOUR.equals(sysUser.getUserType())){ + //运维管理人员 + startPage(); + list = xhpcPlaceholderOrderMapper.getSumSourceList(operatorId,chargingStationId,chargingPileId,terminalId,startTime, endTime, sourceList, chargingStationIdList,tenantId,sysUserId,2); + }else{ + if(UserTypeUtil.SYS_SUPER_TYPE_ONE == loginUser.getSuperType()){ + list = xhpcPlaceholderOrderMapper.getSumSourceList(operatorId,chargingStationId,chargingPileId,terminalId,startTime, endTime, sourceList, chargingStationIdList,loginUser.getTenantId(),sysUserId,0); + }else{ + if(!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUser.getUserId())){ + startPage(); + if(UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())){ + Long logOperatorId = sysUser.getOperatorId(); + //运营商看自己的场站 + list = xhpcPlaceholderOrderMapper.getSumSourceList(operatorId,chargingStationId,chargingPileId,terminalId,startTime, endTime, sourceList,chargingStationIdList,tenantId,logOperatorId,1); + }else{ + //查询赋值的场站 + list = xhpcPlaceholderOrderMapper.getSumSourceList(operatorId,chargingStationId,chargingPileId,terminalId,startTime, endTime, sourceList, chargingStationIdList,tenantId,sysUserId,2); + } + }else{ + startPage(); + list = xhpcPlaceholderOrderMapper.getSumSourceList(operatorId,chargingStationId,chargingPileId,terminalId,startTime, endTime, sourceList, chargingStationIdList,tenantId,sysUserId,0); + } + } + } + return list; + } + + @Override + public void getSumSourceListExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long operatorId,Long chargingStationId,Long chargingPileId,Long terminalId, String startTime, String endTime, String sourceIds, String chargingStationIds) throws IOException { + + List> list = getSumSourceList(request,tenantId,operatorId,chargingStationId,chargingPileId,terminalId,startTime, endTime, sourceIds,chargingStationIds); + + // 通过工具类创建writer,默认创建xls格式 + BigExcelWriter writer = ExcelUtil.getBigWriter("temp_" + System.currentTimeMillis() + ".xlsx"); + writer.addHeaderAlias("kudaiDianMoney", "快电总费用"); + writer.addHeaderAlias("henDaMoney", "恒大总费用"); + writer.addHeaderAlias("xinDianTuMoney", "新电途总费用"); + writer.addHeaderAlias("refundMoney", "新电途退款费用"); + writer.addHeaderAlias("refundMoney", "新电途用户已支付费用"); + writer.addHeaderAlias("xiaoJuMoney", "小桔总费用"); + writer.addHeaderAlias("cheWeiJiaMoney", "车为家总费用"); + writer.addHeaderAlias("sourceName", "用户类型"); + // 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之 + writer.setOnlyAlias(true); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(list, true); + //out为OutputStream,需要写出到的目标流 + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + + ServletOutputStream out = response.getOutputStream(); + + writer.flush(out, true); + // 关闭writer,释放内存 + writer.close(); + //此处记得关闭输出Servlet流 + IoUtil.close(out); + } + + @Override + public List> getDateIntervalPage(HttpServletRequest request,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId,String chargingStationIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type) { + + List chargingStationIdList =new ArrayList<>(); + if(!"".equals(chargingStationIds) && chargingStationIds !=null){ + chargingStationIdList= Arrays.asList(chargingStationIds.split(",")); + } + //获取登陆用户 + LoginUser loginUser = tokenService.getLoginUser(request); + SysUser sysUser = loginUser.getSysUser(); + Long sysUserId = sysUser.getUserId(); + //获取登陆用户 + List> list =new ArrayList<>(); + if(UserTypeUtil.SYS_USER_TYPE_FOUR.equals(sysUser.getUserType())){ + //运维管理人员 + startPage(); + list = xhpcPlaceholderOrderMapper.getDateIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList, internetUserId, operatorId, startTime, endTime, 2,sysUserId,tenantId); + }else{ + if(UserTypeUtil.SYS_SUPER_TYPE_ONE == loginUser.getSuperType()){ + list =xhpcPlaceholderOrderMapper.getDateIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList, internetUserId, operatorId, startTime, endTime, 0,sysUserId,loginUser.getTenantId()); + }else{ + if(!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUser.getUserId())){ + startPage(); + if(UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())){ + Long logOperatorId = sysUser.getOperatorId(); + //运营商看自己的场站 + list = xhpcPlaceholderOrderMapper.getDateIntervalPage(chargingStationId,chargingPileId,terminalId, chargingStationIdList,internetUserId, operatorId, startTime, endTime, 1,logOperatorId,tenantId); + }else{ + //查询赋值的场站 + list = xhpcPlaceholderOrderMapper.getDateIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList, internetUserId, operatorId, startTime, endTime, 2,sysUserId,tenantId); + } + }else{ + startPage(); + list =xhpcPlaceholderOrderMapper.getDateIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList, internetUserId, operatorId, startTime, endTime, 0,sysUserId,tenantId); + } + } + } + return list; + } + + + @Override + public void dateIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String chargingStationIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type) throws IOException { + List> list =new ArrayList<>(); + //获取登陆用户 + list = getDateIntervalPage(request,tenantId,chargingStationId,chargingPileId,terminalId,chargingStationIds,internetUserId,operatorId,startTime,endTime,userId,type); + + // 通过工具类创建writer,默认创建xls格式 + BigExcelWriter writer = ExcelUtil.getBigWriter("temp_" + System.currentTimeMillis() + ".xlsx"); + writer.addHeaderAlias("createTime", "日期"); + writer.addHeaderAlias("kudaiDianMoney", "快电总费用"); + writer.addHeaderAlias("henDaMoney", "恒大总费用"); + writer.addHeaderAlias("xinDianTuMoney", "新电途总费用"); + writer.addHeaderAlias("refundMoney", "新电途退款费用"); + writer.addHeaderAlias("refundMoney", "新电途用户已支付费用"); + writer.addHeaderAlias("xiaoJuMoney", "小桔总费用"); + writer.addHeaderAlias("cheWeiJiaMoney", "车为家总费用"); + writer.addHeaderAlias("actPrice", "C端用户总用"); + // 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之 + writer.setOnlyAlias(true); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(list, true); + //out为OutputStream,需要写出到的目标流 + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + + ServletOutputStream out = response.getOutputStream(); + + writer.flush(out, true); + // 关闭writer,释放内存 + writer.close(); + //此处记得关闭输出Servlet流 + IoUtil.close(out); + } + + @Override + public List> getStationIntervalPage(HttpServletRequest request,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId,String chargingStationIds, String operatorIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type) { + + List chargingStationIdList =new ArrayList<>(); + if(!"".equals(chargingStationIds) && chargingStationIds !=null){ + chargingStationIdList= Arrays.asList(chargingStationIds.split(",")); + } + List operatorUserId =new ArrayList<>(); + if(!"".equals(operatorIds) && operatorIds !=null){ + operatorUserId= Arrays.asList(operatorIds.split(",")); + } + LoginUser loginUser = tokenService.getLoginUser(request); + SysUser sysUser = loginUser.getSysUser(); + Long sysUserId = sysUser.getUserId(); + List> list =new ArrayList<>(); + + if(UserTypeUtil.SYS_USER_TYPE_FOUR.equals(sysUser.getUserType())){ + //运维管理人员 + startPage(); + list = xhpcPlaceholderOrderMapper.getStationIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList,operatorUserId,internetUserId,operatorId,startTime,endTime,2,sysUserId,tenantId); + }else{ + if(UserTypeUtil.SYS_SUPER_TYPE_ONE == loginUser.getSuperType()){ + list =xhpcPlaceholderOrderMapper.getStationIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList,operatorUserId,internetUserId,operatorId,startTime,endTime,0,sysUserId,loginUser.getTenantId()); + }else{ + if(!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUser.getUserId())){ + startPage(); + if(UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())){ + Long logOperatorId = sysUser.getOperatorId(); + //运营商看自己的场站 + list = xhpcPlaceholderOrderMapper.getStationIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList,operatorUserId,internetUserId,operatorId,startTime,endTime,1,logOperatorId,tenantId); + }else{ + //查询赋值的场站 + list = xhpcPlaceholderOrderMapper.getStationIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList,operatorUserId,internetUserId,operatorId,startTime,endTime,2,sysUserId,tenantId); + } + }else{ + startPage(); + list =xhpcPlaceholderOrderMapper.getStationIntervalPage(chargingStationId,chargingPileId,terminalId,chargingStationIdList,operatorUserId,internetUserId,operatorId,startTime,endTime,0,sysUserId,tenantId); + } + } + } + return list; + } + @Override + public void stationIntervalExport(HttpServletRequest request,HttpServletResponse response,String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String chargingStationIds,String operatorIds, Long internetUserId, Long operatorId, String startTime, String endTime, Long userId, Integer type) throws IOException { + List> list =new ArrayList<>(); + + list =getStationIntervalPage(request,tenantId,chargingStationId,chargingPileId,terminalId,chargingStationIds,operatorIds,internetUserId,operatorId,startTime,endTime,userId,type); + + // 通过工具类创建writer,默认创建xls格式 + BigExcelWriter writer = ExcelUtil.getBigWriter("temp_" + System.currentTimeMillis() + ".xlsx"); + writer.addHeaderAlias("chargingStationName", "电站名称"); + writer.addHeaderAlias("operatorName", "运营商名称"); + writer.addHeaderAlias("kudaiDianMoney", "快电总费用"); + writer.addHeaderAlias("henDaMoney", "恒大总费用"); + writer.addHeaderAlias("xinDianTuMoney", "新电途总费用"); + writer.addHeaderAlias("refundMoney", "新电途退款费用"); + writer.addHeaderAlias("refundMoney", "新电途用户已支付费用"); + writer.addHeaderAlias("xiaoJuMoney", "小桔总费用"); + writer.addHeaderAlias("cheWeiJiaMoney", "车为家总费用"); + writer.addHeaderAlias("CDuanMoney", "C端用户总用"); + writer.addHeaderAlias("sheQuMoney", "社区总费用"); + writer.addHeaderAlias("BDuanMoney", "B端总费用"); + // 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之 + writer.setOnlyAlias(true); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(list, true); + //out为OutputStream,需要写出到的目标流 + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + + ServletOutputStream out = response.getOutputStream(); + + writer.flush(out, true); + // 关闭writer,释放内存 + writer.close(); + //此处记得关闭输出Servlet流 + IoUtil.close(out); + } + + @Override + public List> appealPlaceholderOrderList(HttpServletRequest request) { + //获取登陆用户 + LoginUser loginUser = tokenService.getLoginUser(request); + String tenantId = loginUser.getTenantId(); + return xhpcPlaceholderOrderMapper.appealPlaceholderOrderList(loginUser.getUserid(),loginUser.getUserType(),tenantId); + + } + + @Override + public R applyPlaceholderOrder(HttpServletRequest request, Long placeholderOrderId, String appealUserResult) { + + XhpcPlaceholderOrder placeholderOrder = xhpcPlaceholderOrderMapper.getByPlaceholderOrderId(placeholderOrderId); + + if(placeholderOrder.getAppealStatus() !=0){ + return R.fail("该占位费订单已申述过"); + } + XhpcPlaceholderOrder xhpcPlaceholderOrder = new XhpcPlaceholderOrder(); + xhpcPlaceholderOrder.setPlaceholderOrderId(placeholderOrderId); + xhpcPlaceholderOrder.setAppealUserResult(appealUserResult); + xhpcPlaceholderOrder.setAppealStatus(1); + xhpcPlaceholderOrder.setAppealTime(new Date()); + int i = xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); + if(i>0){ + return R.ok(); + } + return R.fail("申述失败,请稍后再申述"); + } + + @Override + public R applyPlaceholderOrderProcess(HttpServletRequest request, Long placeholderOrderId, BigDecimal actPrice,String refundType,String appealResult) { + XhpcPlaceholderOrder placeholderOrder = xhpcPlaceholderOrderMapper.getByPlaceholderOrderId(placeholderOrderId); + + XhpcPlaceholderOrder xhpcPlaceholderOrder = new XhpcPlaceholderOrder(); + xhpcPlaceholderOrder.setPlaceholderOrderId(placeholderOrderId); + xhpcPlaceholderOrder.setAppealResult(appealResult); + xhpcPlaceholderOrder.setAppealProcessTime(new Date()); + BigDecimal subtractYu=new BigDecimal(0); + if(!"reject".equals(refundType)){ + //申述成功用户进行充值金额 + xhpcPlaceholderOrder.setAppealStatus(2); + if(placeholderOrder.getActPrice().compareTo(actPrice)==1){ + //剩余金额 + subtractYu = actPrice; + xhpcPlaceholderOrder.setActPrice(placeholderOrder.getActPrice().subtract(actPrice)); + }else { + subtractYu = placeholderOrder.getActPrice(); + xhpcPlaceholderOrder.setActPrice(new BigDecimal(0)); + } + xhpcPlaceholderOrder.setAppealRefundMoney(actPrice); + int i = xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); + if(i>0){ + Long userId = placeholderOrder.getUserId(); + Integer source = placeholderOrder.getSource(); + String tenantId = placeholderOrder.getTenantId(); + //用户进行发送红包 + R user = userTypeService.getUser(null, userId, source, null, tenantId); + + if(user !=null && user.getData() !=null ){ + Map userMessage = (Map)user.getData(); + BigDecimal balance1 =new BigDecimal(userMessage.get("balance").toString()); + BigDecimal subtract = balance1.add(subtractYu); + int y = xhpcChargeOrderService.updateUserBalance(userId, subtract, source,tenantId); + if(y==0){ + //增加金额失败 + System.out.println("<<<<<<<<<<<<<<<<增加金额失败>>>>placeholderOrder.getSernumber>>>>>>>>>>>>>"+placeholderOrder.getSerialNumber()); + + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + }else{ + //添加流水 + xhpcChargeOrderService.addUserAccountStatement(userId,subtractYu, subtract, xhpcPlaceholderOrder.getPlaceholderOrderId(), 7, new Date(),source); + } + } + return R.ok(); + } + }else{ + //申述失败 + xhpcPlaceholderOrder.setAppealStatus(3); + int i = xhpcPlaceholderOrderMapper.updateXhpcPlaceholderOrder(xhpcPlaceholderOrder); + if(i>0){ + return R.ok(); + } + } + return R.fail("申述失败,请稍后再申述"); + } + + @Override + public List> appealPlaceholderOrderListPC(HttpServletRequest request, String tenantId, Long operatorId, String name, Integer type, String serialNumber, Long chargingStationId) { + LoginUser loginUser = tokenService.getLoginUser(request); + //获取登陆用户 + SysUser sysUser = loginUser.getSysUser(); + Long userId = sysUser.getUserId(); + //桩的统计、该时段金额 + List> list =new ArrayList<>(); + + if(UserTypeUtil.SYS_USER_TYPE_FOUR.equals(sysUser.getUserType())){ + //运维管理人员 + startPage(); + return xhpcPlaceholderOrderMapper.appealPlaceholderOrderListPC(operatorId,name, type, serialNumber, chargingStationId,userId,2,tenantId); + }else{ + if(UserTypeUtil.SYS_SUPER_TYPE_ONE == loginUser.getSuperType()){ + list= xhpcPlaceholderOrderMapper.appealPlaceholderOrderListPC(operatorId,name, type, serialNumber, chargingStationId,userId,0,loginUser.getTenantId()); + }else{ + if(!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUser.getUserId())){ + if(UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())){ + Long logOperatorId = sysUser.getOperatorId(); + //运营商看自己的场站 + list= xhpcPlaceholderOrderMapper.appealPlaceholderOrderListPC(operatorId,name, type, serialNumber, chargingStationId,logOperatorId,1,tenantId); + + }else{ + //查询赋值的场站 + list= xhpcPlaceholderOrderMapper.appealPlaceholderOrderListPC(operatorId,name, type, serialNumber, chargingStationId,userId,2,tenantId); + + } + }else{ + list= xhpcPlaceholderOrderMapper.appealPlaceholderOrderListPC(operatorId,name, type, serialNumber, chargingStationId,userId,0,tenantId); + } + } + } + return list; + } + public static void main(String[] args) { - System.out.println("MA005DBW1250704215222124198".substring(0,9)); + System.out.println("80836000100006022509051657454064".substring(0,16)); } } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index 8fb75f8f..8717ad80 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -677,6 +677,9 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe if("小桔".equals(xhpcChargeOrder.getChargingMode())){ xhpcHistoryOrder.setChargingMode("4"); } + if("车为家".equals(xhpcChargeOrder.getChargingMode())){ + xhpcHistoryOrder.setChargingMode("7"); + } xhpcHistoryOrder.setStartTime(xhpcChargeOrder.getStartTime()); if(xhpcChargeOrder.getEndTime()==null ){ xhpcHistoryOrder.setEndTime(xhpcChargeOrder.getStartTime()); @@ -1623,7 +1626,18 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe if(xhpcPlaceholderMap !=null){ //占位订单生成 XhpcPlaceholderOrder placeholderOrder = new XhpcPlaceholderOrder(); - placeholderOrder.setChargingMode(xhpcHistoryOrder.getChargingMode()); + + if(xhpcHistoryOrder.getSource() !=1){ + if(0 == xhpcHistoryOrder.getSource()){ + placeholderOrder.setChargingMode("C端用户"); + }else if(2 == xhpcHistoryOrder.getSource()){ + placeholderOrder.setChargingMode("社区用户"); + }else{ + placeholderOrder.setChargingMode("B端用户"); + } + }else{ + placeholderOrder.setChargingMode(xhpcHistoryOrder.getChargingMode()); + } placeholderOrder.setDriverId(xhpcChargeOrder.getDriverId()); placeholderOrder.setHistoryOrderId(xhpcHistoryOrder.getHistoryOrderId()); placeholderOrder.setChargingStationId(xhpcHistoryOrder.getChargingStationId()); @@ -1981,7 +1995,9 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe if("小桔".equals(xhpcChargeOrder.getChargingMode())){ xhpcHistoryOrder.setChargingMode("4"); } - + if("车为家".equals(xhpcChargeOrder.getChargingMode())){ + xhpcHistoryOrder.setChargingMode("7"); + } Map pushOrder = redisService.getCacheMap("pushOrder:"+xhpcChargeOrder.getSerialNumber()); if(pushOrder !=null){ if(pushOrder.get("operatorId3rdpty") !=null){ diff --git a/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml index 0db7c88d..8fd67a26 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 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 d83202f1..8633c740 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml @@ -666,6 +666,11 @@ values (#{userId}, #{amount}, #{remainingSum}, #{chargeOrderId}, #{type}, #{date},#{source}) + + INSERT INTO xhpc_user_account_statement(user_id, amount, remaining_sum, placeholder_order_id, type, create_time,source) + values (#{userId}, #{amount}, #{remainingSum}, #{placeholderOrderId}, #{type}, #{date},#{source}) + + + + diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index 4439f92f..ad5df745 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -917,6 +917,11 @@ ho.act_price as actPrice, ho.total_power as chargingDegree, co.charging_time as chargingTime, + xpo.start_time as placeholderStartTime, + xpo.end_time as placeholderEndTime, + xpo.total_time_span as placeholderTotalTimeSpen, + xpo.total_money as placeholderTotalMoney, + xpo.type as placeholderType, case when ho.parking_voucher=1 then '否' else '是' end as 'barrierGateRecordName' @@ -924,6 +929,7 @@ LEFT JOIN xhpc_charging_station as cs on cs.charging_station_id = ho.charging_station_id LEFT JOIN xhpc_terminal as te on te.terminal_id = ho.terminal_id left join xhpc_charge_order as co on co.charge_order_id =ho.charge_order_id + left join xhpc_placeholder_order as xpo on ho.history_order_id = xpo.history_order_id where ho.status=0 and ho.del_flag=0 and ho.user_id =#{userId} and ho.tenant_id =#{tenantId} @@ -959,6 +965,11 @@ te.serial_number as terminalSerialNumber, co.Plate_num as plateNum, ho.stop_reason_evcs as typeName, + xpo.start_time as placeholderStartTime, + xpo.end_time as placeholderEndTime, + xpo.total_time_span as placeholderTotalTimeSpen, + xpo.total_money as placeholderTotalMoney, + xpo.type as placeholderType, case when ho.parking_voucher=2 then '是' else '否' end as 'barrierGateRecordName' @@ -966,6 +977,7 @@ LEFT JOIN xhpc_charging_station as cs on cs.charging_station_id = ho.charging_station_id LEFT JOIN xhpc_terminal as te on te.terminal_id = ho.terminal_id left join xhpc_charge_order as co on co.charge_order_id =ho.charge_order_id + left join xhpc_placeholder_order as xpo on ho.history_order_id = xpo.history_order_id where ho.status=0 and ho.del_flag=0 and ho.user_id =#{userId} diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcPlaceholderOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcPlaceholderOrderMapper.xml index 2acaf7f2..29b91422 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcPlaceholderOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcPlaceholderOrderMapper.xml @@ -41,13 +41,23 @@ + + + + + + + + + + + + + + - - - - insert into xhpc_placeholder_order @@ -259,6 +269,10 @@ select * from xhpc_placeholder_order where serial_number =#{serialNumber} and del_flag =0 and type =0 + + + + - update xhpc_placeholder_order set type=2 where TIMESTAMPDIFF(MINUTE, IFNULL(start_time, NOW()), NOW()) > 720 and (status=1 or status=2) and type =0 + update xhpc_placeholder_order set type=2 where TIMESTAMPDIFF(MINUTE, IFNULL(start_time, NOW()), NOW()) > 360 and (status=1 or status=2) and type =0 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml index 27bd265a..4a2817f0 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml index 904ff8e0..1e150ee5 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml +++ b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml @@ -201,10 +201,6 @@ and xro.source=#{source} and cup.account like concat('%', #{phone}, '%') - - and xro.source=#{source} - - and xro.recharge_order_number like concat('%', #{rechargeOrderNumber}, '%') diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/domain/XhpcDeviceMessage.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/domain/XhpcDeviceMessage.java index b3881863..443f4aa4 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/domain/XhpcDeviceMessage.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/domain/XhpcDeviceMessage.java @@ -37,6 +37,14 @@ public class XhpcDeviceMessage { * 状态 */ private Integer status; + /** + * 插枪状态 + */ + private Integer gunStatus; + /** + * 插编码 + */ + private String gunNumber; /** * 备注描述 diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java index 6892bffa..ceb29a6d 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java @@ -291,6 +291,8 @@ public class RealtimeDataLogic implements ServiceLogic { deviceMessage.setStatus(0); deviceMessage.setContent((String) req.get("hex")); deviceMessage.setChargeOrderNo((String) req.get("orderNo")); + deviceMessage.setGunStatus(Integer.parseInt(realtimeData.getVehicleGunStatus())); + deviceMessage.setGunNumber(terminalId); deviceMessageMapper.insertByDomain(deviceMessage); //实时数据推送设备充电中状态变化 executorService.execute(new Runnable() { diff --git a/xhpc-modules/xhpc-power-pile/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-power-pile/src/main/resources/bootstrap.yml index 224d1f2e..0244fca3 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-power-pile/src/main/resources/bootstrap.yml @@ -18,10 +18,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-power-pile/src/main/resources/mapper/XhpcDeviceMessageMapper.xml b/xhpc-modules/xhpc-power-pile/src/main/resources/mapper/XhpcDeviceMessageMapper.xml index 9e158c3e..08a5ab26 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/resources/mapper/XhpcDeviceMessageMapper.xml +++ b/xhpc-modules/xhpc-power-pile/src/main/resources/mapper/XhpcDeviceMessageMapper.xml @@ -10,6 +10,8 @@ + + @@ -70,6 +72,8 @@ create_by, remark, update_by, + gun_status, + gun_number, create_time, update_time )values( @@ -81,6 +85,8 @@ #{createBy}, #{remark}, #{updateBy}, + #{gunStatus}, + #{gunNumber}, sysdate(), sysdate() ) diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/domain/InvoicedOrderResponse.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/domain/InvoicedOrderResponse.java index be832b15..91904a2f 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/domain/InvoicedOrderResponse.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/domain/InvoicedOrderResponse.java @@ -42,8 +42,12 @@ public class InvoicedOrderResponse { private Long orderId; @JsonProperty("orderNumber") private String orderNumber; + @JsonProperty("totalMoney") + private BigDecimal totalMoney; @JsonProperty("orderMoney") private BigDecimal orderMoney; + @JsonProperty("placeholderMoney") + private BigDecimal placeholderMoney; @JsonProperty("orderTime") private String orderTime; diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/pojo/XhpcInvoice.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/pojo/XhpcInvoice.java index 57820b5a..d8462dbf 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/pojo/XhpcInvoice.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/pojo/XhpcInvoice.java @@ -64,6 +64,15 @@ public class XhpcInvoice implements Serializable { */ private BigDecimal invoiceOrderServiceTotalMoney; + /** + * 发票包含的订单的占位费金额 + */ + private BigDecimal placeholderMoney; + /** + * 发票包含的订单的总金额 + */ + private BigDecimal totalMoney; + /** * 公司地址 */ diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcInvoiceServiceImpl.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcInvoiceServiceImpl.java index daa5ac65..51498a3e 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcInvoiceServiceImpl.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcInvoiceServiceImpl.java @@ -352,6 +352,12 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { orderDatasDTO.setOrderId((Long) data.get("historyOrderId")); orderDatasDTO.setOrderNumber((String) data.get("serialNumber")); orderDatasDTO.setOrderMoney(new BigDecimal(data.get("actPrice").toString())); + if(data.get("placeholderMoney") !=null && new BigDecimal(data.get("placeholderMoney").toString()).compareTo(new BigDecimal(0))>0){ + orderDatasDTO.setTotalMoney(new BigDecimal(data.get("actPrice").toString()).add(new BigDecimal(data.get("placeholderMoney").toString()))); + }else{ + orderDatasDTO.setTotalMoney(new BigDecimal(data.get("actPrice").toString())); + } + orderDatasDTO.setPlaceholderMoney(new BigDecimal(data.get("placeholderMoney").toString())); //因为数据库中存储的时间类型为datetime,所以Mybatis会将其转换为LocalDateTime类型对象,我们不能直接得到Date,所以我们需要对其进行转换。 LocalDateTime createTime = (LocalDateTime) data.get("createTime"); ZoneId zoneId = ZoneId.systemDefault(); diff --git a/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml index 953f05a5..69f51a0e 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 120.26.46.180:8858 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index 576cbbde..8b7e0329 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -117,25 +117,27 @@