Bläddra i källkod

1.增加快充和慢充的业务逻辑
2.为51充电,增加停车场列表接口

hbjzws 2 år sedan
förälder
incheckning
6fc6c06738

+ 0 - 0
loggerPath_IS_UNDEFINED/logfile.log


+ 1 - 0
src/main/java/com/charging/chargingparking/config/WebMvcConfig.java

@@ -63,6 +63,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/parkingRecord/temporaryCarNumInPark")
 				.excludePathPatterns("/aliPay/**")
 				.excludePathPatterns("/wxPay/**")
+				.excludePathPatterns("/parkingMember/getParkingInfo")
 				.excludePathPatterns("/parkingMember/addParkingMember")
 				.excludePathPatterns("/parkingMemberInfo/userGetCarMember")
 				.excludePathPatterns("/parkingMemberInfo/validQrCode")

+ 2 - 0
src/main/java/com/charging/chargingparking/dto/AddParkingMember.java

@@ -41,4 +41,6 @@ public class AddParkingMember {
 
    // @NotNull(message = "手机号不能为空")
     private String memberPhone;
+
+    private Integer gunType;
 }

+ 2 - 0
src/main/java/com/charging/chargingparking/entity/ParkingMember.java

@@ -119,4 +119,6 @@ public class ParkingMember implements Serializable {
      * 会员类型(0:临时车,1:会员车)
      */
     private Integer memberType;
+
+    private Integer gunType;
 }

+ 26 - 1
src/main/java/com/charging/chargingparking/modules/mobileController/ParkingMemberController.java

@@ -2,9 +2,15 @@ package com.charging.chargingparking.modules.mobileController;
 
 import cn.hutool.core.util.StrUtil;
 import com.charging.chargingparking.dto.AddParkingMember;
+import com.charging.chargingparking.dto.MessageResult;
+import com.charging.chargingparking.entity.ParkingInfo;
 import com.charging.chargingparking.entity.ParkingMemberLog;
+import com.charging.chargingparking.service.ParkingInfoService;
 import com.charging.chargingparking.service.ParkingMemberLogService;
 import com.charging.chargingparking.service.ParkingMemberService;
+import com.charging.chargingparking.utils.RespVO;
+import com.charging.chargingparking.utils.RespVOBuilder;
+import com.charging.chargingparking.utils.SMSUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -14,7 +20,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
-import java.util.Date;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.util.*;
 
 /**
  * @author 墨鱼_mo
@@ -27,10 +35,27 @@ public class ParkingMemberController {
 
     @Autowired
     private ParkingMemberService parkingMemberService;
+    @Autowired
+    private ParkingInfoService parkingInfoService;
 
     @Autowired
     private ParkingMemberLogService parkingMemberLogService;
+    /**
+     * 为51充电联盟提供的接口,提供停车场列表
+     */
+    @RequestMapping("getParkingInfo")
+    public RespVO getParkingInfo() {
+        List<ParkingInfo> list = parkingInfoService.list();
+        List<Map> listM =new ArrayList<>();
+        for(ParkingInfo parkingInfo:list){
+            Map map = new HashMap();
+            map.put("id",parkingInfo.getId());
+            map.put("name",parkingInfo.getParkingName());
+            listM.add(map);
+        }
+        return RespVOBuilder.ok(listM);
 
+    }
     /**
      * 为51充电联盟提供的接口,用于添加会员
      * @param addParkingMember

+ 69 - 37
src/main/java/com/charging/chargingparking/service/impl/ParkingMemberServiceImpl.java

@@ -97,6 +97,9 @@ public class ParkingMemberServiceImpl extends ServiceImpl<ParkingMemberMapper, P
                 min = addParkingMember.getMemberMin();
             }
 
+            if(addParkingMember.getMemberEndTime()==null&&addParkingMember.getMemberStartTime()!=null&&addParkingMember.getMemberMin()!=null){
+                addParkingMember.setMemberEndTime(DateUtil.offsetMinute(addParkingMember.getMemberStartTime(),addParkingMember.getMemberMin()));
+            }
 
             //会员不存在,则新增会员
             if (parkingMember == null) {
@@ -132,13 +135,22 @@ public class ParkingMemberServiceImpl extends ServiceImpl<ParkingMemberMapper, P
 
 
                 //夜间(23:00:00~07:00:00)免费停车的停车场,如果是在此时间段充电的用户默认赠送会员至07:00:00
-                if (parkingInfo.getNightFree()) {
-                    if (parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temStartDate2)) >= 0 && parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temEndDate2)) <= 0) {
-                        parkingMember1.setMemberEndTime(DateUtil.offsetDay(DateUtil.parse(temEndDate3), 1));
-                    }
-                    if (parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temStartDate3)) >= 0 && parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temEndDate3)) <= 0) {
-                        parkingMember1.setMemberEndTime(DateUtil.parse(temEndDate3));
+                if (parkingInfo.getNightFree()&&"1".equals(parkingInfo.getId())) {
+                    parkingMember1.setGunType(addParkingMember.getGunType());
+                    if(2==parkingMember1.getGunType()){
+                        if (parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temStartDate2)) >= 0 && parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temEndDate2)) <= 0) {
+                            parkingMember1.setMemberEndTime(DateUtil.offsetDay(DateUtil.parse(temEndDate3), 1));
+                        }
+                        if (parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temStartDate3)) >= 0 && parkingMember1.getMemberEndTime().compareTo(DateUtil.parse(temEndDate3)) <= 0) {
+                            parkingMember1.setMemberEndTime(DateUtil.parse(temEndDate3));
+                        }
+                    }else{
+                        //慢充按照实际充电时间计算
+                        if(parkingMember1.getMemberEndTime().compareTo(addParkingMember.getMemberEndTime())<0){
+                            parkingMember1.setMemberEndTime(addParkingMember.getMemberEndTime());
+                        }
                     }
+
                 }
 
 
@@ -151,7 +163,25 @@ public class ParkingMemberServiceImpl extends ServiceImpl<ParkingMemberMapper, P
                 parkingMemberLog.setContent(StrUtil.format("{}会员新增,会员时长{}分钟", addParkingMember.getCarNum(), min));
                 parkingMemberLogService.save(parkingMemberLog);
             } else {
-
+                Integer oldGunType= parkingMember.getGunType();
+                if(addParkingMember.getGunType()!=null&&2==addParkingMember.getGunType()){
+                    parkingMember.setGunType(2);
+                }
+                if(1==oldGunType&&2==addParkingMember.getGunType()){
+                    //如果之前是慢充,现在是快充,要将之前的会员时间先延长
+                    String temDate1 = DateUtil.format(parkingMember.getMemberEndTime(), "yyyy-MM-dd");
+                    String temStartDate2 = temDate1 + " 23:00:00";
+                    String temEndDate2 = temDate1 + " 23:59:59";
+                    String temStartDate3 = temDate1 + " 00:00:00";
+                    String temEndDate3 = temDate1 + " 07:00:00";
+
+                    if (parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temStartDate2)) >= 0 && parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate2)) <= 0) {
+                        parkingMember.setMemberEndTime(DateUtil.offsetDay(DateUtil.parse(temEndDate3), 1));
+                    }
+                    if (parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temStartDate3)) >= 0 && parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate3)) <= 0) {
+                        parkingMember.setMemberEndTime(DateUtil.parse(temEndDate3));
+                    }
+                }
                 //锦天停车场已存在会员不累加会员时间
                 if (!"5f8d343e-63d1-4ef0-9844-855ca020d92b".equals(parkingInfo.getId())) {
                     //如果会员存在并且未出场则时间累加
@@ -184,36 +214,38 @@ public class ParkingMemberServiceImpl extends ServiceImpl<ParkingMemberMapper, P
                     } else {
                         if ("0".equals(parkingRecord.getReleaseStatus())) {
                             //add by hbjzws 2023-06-23对交集的处理,减少会员有效时长
-                            String temDate0 = DateUtil.format(parkingMember.getMemberStartTime(), "yyyy-MM-dd");
-                            String temDate1 = DateUtil.format(parkingMember.getMemberEndTime(), "yyyy-MM-dd");
-                            String temStartDate0 = temDate0 + " 23:00:00";
-                            String temEndDate1 = temDate1 + " 07:00:00";
-                            //区间内
-                            if(parkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))<=0&&
-                                    parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))<=0
-                            ){
-                                min=0;
-                            }
-                            //半区间1
-                            if(parkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))>0&&
-                                    parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))<=0
-                            ){
-
-                                min=Convert.toInt(DateUtil.between(addParkingMember.getMemberStartTime(), DateUtil.parse(temStartDate0), DateUnit.MINUTE));
-                            }
-                            //半区间2
-                            if(parkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))<=0&&
-                                    parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))>0
-                            ){
-
-                                min=Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), DateUtil.parse(temEndDate1), DateUnit.MINUTE));
-                            }
-                            //区间外都有
-                            if(parkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))>0&&
-                                    parkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))>0
-                            ){
-                                min=Convert.toInt(DateUtil.between(addParkingMember.getMemberStartTime(), DateUtil.parse(temStartDate0), DateUnit.MINUTE));
-                                min=min+Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), DateUtil.parse(temEndDate1), DateUnit.MINUTE));
+                            if(2==parkingMember.getGunType()){
+                                String temDate0 = DateUtil.format(parkingMember.getMemberStartTime(), "yyyy-MM-dd");
+                                String temDate1 = DateUtil.format(parkingMember.getMemberEndTime(), "yyyy-MM-dd");
+                                String temStartDate0 = temDate0 + " 23:00:00";
+                                String temEndDate1 = temDate1 + " 07:00:00";
+                                //区间内
+                                if(addParkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))>0&&
+                                        addParkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))<=0
+                                ){
+                                    min=0;
+                                }
+                                //半区间1(前处理)
+                                if(addParkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))<=0&&
+                                        addParkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))<=0
+                                ){
+
+                                    min=Convert.toInt(DateUtil.between(addParkingMember.getMemberStartTime(), DateUtil.parse(temStartDate0), DateUnit.MINUTE));
+                                }
+                                //半区间2(后处理)
+                                if(addParkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))>0&&
+                                        addParkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))>0
+                                ){
+
+                                    min=Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), DateUtil.parse(temEndDate1), DateUnit.MINUTE));
+                                }
+                                //区间外都有
+                                if(addParkingMember.getMemberStartTime().compareTo(DateUtil.parse(temStartDate0))<=0&&
+                                        addParkingMember.getMemberEndTime().compareTo(DateUtil.parse(temEndDate1))>0
+                                ){
+                                    min=Convert.toInt(DateUtil.between(addParkingMember.getMemberStartTime(), DateUtil.parse(temStartDate0), DateUnit.MINUTE));
+                                    min=min+Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), DateUtil.parse(temEndDate1), DateUnit.MINUTE));
+                                }
                             }
                             parkingMember.setMemberEndTime(DateUtil.offset(parkingMember.getMemberEndTime(), DateField.MINUTE, min));
                             //  parkingMember.setMemberType(addParkingMember.getMemberType());

+ 117 - 3
src/test/java/com/charging/chargingparking/ChargingParkingApplicationTests.java

@@ -81,8 +81,82 @@ class ChargingParkingApplicationTests {
 
     @Autowired
     private ParkingChannelVoiceService parkingChannelVoiceService;
+    @Test
+    void contextLoads51() throws Exception {
+        AddParkingMember addParkingMember = new AddParkingMember();
+        addParkingMember.setCarNum("鄂DD70315");
+        addParkingMember.setParkingUname("1");
+        addParkingMember.setMemberStartTime(DateUtil.parse("2023-06-19 21:17:12","yyyy-MM-dd HH:mm:ss"));
+        addParkingMember.setMemberEndTime(DateUtil.parse("2023-06-19 22:42:23","yyyy-MM-dd HH:mm:ss"));
+        addParkingMember.setMemberMin(Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), addParkingMember.getMemberStartTime(), DateUnit.MINUTE)));
+        addParkingMember.setGunType(1);
+        parkingMemberService.addParkingMember(addParkingMember,false,null);
+    }
 
+    @Test
+    void contextLoads51111() throws Exception {
+        AddParkingMember addParkingMember = new AddParkingMember();
+        addParkingMember.setCarNum("鄂DD70315");
+        addParkingMember.setParkingUname("1");
+        addParkingMember.setMemberStartTime(DateUtil.parse("2023-06-19 23:17:12","yyyy-MM-dd HH:mm:ss"));
+        addParkingMember.setMemberEndTime(DateUtil.parse("2023-06-20 06:42:23","yyyy-MM-dd HH:mm:ss"));
+        addParkingMember.setMemberMin(Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), addParkingMember.getMemberStartTime(), DateUnit.MINUTE)));
+        addParkingMember.setGunType(2);
+        parkingMemberService.addParkingMember(addParkingMember,false,null);
+    }
+    @Test
+    void contextLoads512() throws Exception {
+        AddParkingMember addParkingMember = new AddParkingMember();
+        addParkingMember.setCarNum("鄂DD70315");
+        addParkingMember.setParkingUname("1");
+        addParkingMember.setMemberStartTime(DateUtil.parse("2023-06-19 23:05:11","yyyy-MM-dd HH:mm:ss"));
+        addParkingMember.setMemberEndTime(DateUtil.parse("2023-06-20 03:38:31","yyyy-MM-dd HH:mm:ss"));
+        addParkingMember.setMemberMin(Convert.toInt(DateUtil.between(addParkingMember.getMemberEndTime(), addParkingMember.getMemberStartTime(), DateUnit.MINUTE)));
+
+        parkingMemberService.addParkingMember(addParkingMember,false,null);
+    }
+
+    @Test
+    void contextLoadsTime2() {
+        //区间内
+        String temDate0 =  "2023-06-28 23:05:00";
+        String temStartDate0 =  "2023-06-28 23:00:00";
+        String temEndDate1 =  "2023-06-29 07:00:00";
+        String temDate1 =  "2023-06-29 06:00:00";
+        System.out.println(DateUtil.parse(temDate0).compareTo(DateUtil.parse(temStartDate0))>0);
+        System.out.println(DateUtil.parse(temDate1).compareTo(DateUtil.parse(temEndDate1))<=0);
+    }
+    @Test
+    void contextLoadsTime4() {
+        //半区间1(前处理)
+        String temDate0 =  "2023-06-28 22:05:00";
+        String temStartDate0 =  "2023-06-28 23:00:00";
+        String temEndDate1 =  "2023-06-29 07:00:00";
+        String temDate1 =  "2023-06-29 06:00:00";
+        System.out.println(DateUtil.parse(temDate0).compareTo(DateUtil.parse(temStartDate0))<=0);
+        System.out.println(DateUtil.parse(temDate1).compareTo(DateUtil.parse(temEndDate1))<=0);
+    }
+    @Test
+    void contextLoadsTime3() {
+        //半区间1(后处理)
+        String temDate0 =  "2023-06-28 23:05:00";
+        String temStartDate0 =  "2023-06-28 23:00:00";
+        String temEndDate1 =  "2023-06-29 07:00:00";
+        String temDate1 =  "2023-06-29 09:00:00";
+        System.out.println(DateUtil.parse(temDate0).compareTo(DateUtil.parse(temStartDate0))>0);
+        System.out.println(DateUtil.parse(temDate1).compareTo(DateUtil.parse(temEndDate1))>0);
+    }
 
+    @Test
+    void contextLoadsTime1() {
+        //区间外
+        String temDate0 =  "2023-06-28 05:05:00";
+        String temStartDate0 =  "2023-06-28 23:00:00";
+        String temEndDate1 =  "2023-06-29 07:00:00";
+        String temDate1 =  "2023-06-29 08:00:00";
+        System.out.println(DateUtil.parse(temDate0).compareTo(DateUtil.parse(temStartDate0))<=0);
+        System.out.println(DateUtil.parse(temDate1).compareTo(DateUtil.parse(temEndDate1))>0);
+    }
     @Test
     void contextLoadsRecord() {
 //        JSONObject jsonObject = new JSONObject();
@@ -110,24 +184,59 @@ class ChargingParkingApplicationTests {
 
 
     }
+    @Test
+    void contextLoadsFee2() {
 
+        try {
+            ParkingRecord parkingRecord0 = parkingRecordService.getById("1657052359020298242");
+            Date outParkingTime =parkingRecord0.getOutParkingTime();
+            long parkingTimeLong = DateUtil.between(parkingRecord0.getInParkingTime(), outParkingTime, DateUnit.MINUTE);
+            //add by hbjzws 2023-06-28 增加对出场跟入场匹配过长的问题
+            int maxTTime =24*60*7;
+            if(Convert.toInt(parkingTimeLong)>maxTTime){
+                Date orgInTime =parkingRecord0.getInParkingTime();
+                parkingRecord0.setInParkingTime(DateUtil.offsetMinute(outParkingTime,-maxTTime));
+                log.warn(StrUtil.format("停车记录时间过长,存在进场与出场记录不匹配的问题,原先进场时间为:{},修改后的进场时间为{}",DateUtil.format(orgInTime,"yyyy-MM-dd HH:mm:ss"),DateUtil.format(parkingRecord0.getInParkingTime(),"yyyy-MM-dd HH:mm:ss")));
+            }
+
+
+            ParkingCostDTO parkingCostDTO  = parkingFeeService.parkingCost2(parkingRecord0);
+
+            System.out.println(parkingCostDTO);
+            BigDecimal parkingCost = parkingCostDTO.getNeedAmount();
+            parkingRecord0.setTotalAmount(parkingCost);
+            parkingRecordService.updateById(parkingRecord0);
+          /*  QueryWrapper<ParkingMember> parkingMemberQueryWrapper = new QueryWrapper<>();
+            parkingMemberQueryWrapper.eq("member_car_num", parkingRecord.getCarNum());
+            parkingMemberQueryWrapper.eq("park_id", parkingRecord.getParkId());
+            parkingMemberQueryWrapper.eq("cloud_del_flag", false);
+            parkingMemberQueryWrapper.orderByDesc("create_time");
+            parkingMemberQueryWrapper.last("LIMIT 1");
+            ParkingMember parkingMember = parkingMemberService.getOne(parkingMemberQueryWrapper);
+            System.out.println(parkingMember);*/
+        } catch (Exception ex) {
+
+        }
+
+
+    }
     @Test
     void contextLoads() {
 
         try {
-            ParkingRecord parkingRecord = parkingRecordService.getById("1656957553552179201");
+            ParkingRecord parkingRecord = parkingRecordService.getById("1673893161755262978");
             ParkingCostDTO parkingCostDTO  = parkingFeeService.parkingCost2(parkingRecord);
 
             System.out.println(parkingCostDTO);
 
-            QueryWrapper<ParkingMember> parkingMemberQueryWrapper = new QueryWrapper<>();
+          /*  QueryWrapper<ParkingMember> parkingMemberQueryWrapper = new QueryWrapper<>();
             parkingMemberQueryWrapper.eq("member_car_num", parkingRecord.getCarNum());
             parkingMemberQueryWrapper.eq("park_id", parkingRecord.getParkId());
             parkingMemberQueryWrapper.eq("cloud_del_flag", false);
             parkingMemberQueryWrapper.orderByDesc("create_time");
             parkingMemberQueryWrapper.last("LIMIT 1");
             ParkingMember parkingMember = parkingMemberService.getOne(parkingMemberQueryWrapper);
-            System.out.println(parkingMember);
+            System.out.println(parkingMember);*/
         } catch (Exception ex) {
 
         }
@@ -137,6 +246,11 @@ class ChargingParkingApplicationTests {
 
     @Test
     void testMember() {
+
+        ParkingInfo parkingInfo = parkingInfoService.getById("1");
+        parkingInfo.setMaxInToOutTime(48);
+        parkingInfoService.updateById(parkingInfo);
+        System.out.println(parkingInfo);
        /* try {
             Boolean result = parkingMemberService.parkingMemberStatus("鄂D9758J", "1");
             System.out.println(result);