Browse Source

停车场-节假日程序编写

hbjzws 1 year ago
parent
commit
4700ce4c7c
21 changed files with 943 additions and 6 deletions
  1. 1 0
      src/main/java/com/charging/chargingparking/config/WebMvcConfig.java
  2. 20 0
      src/main/java/com/charging/chargingparking/dto/ParkTimeDTO.java
  3. 16 0
      src/main/java/com/charging/chargingparking/dto/ParkTimeStatusDTO.java
  4. 3 0
      src/main/java/com/charging/chargingparking/entity/ParkingInfo.java
  5. 68 0
      src/main/java/com/charging/chargingparking/entity/ParkingTime.java
  6. 57 0
      src/main/java/com/charging/chargingparking/entity/TimeSet.java
  7. 24 0
      src/main/java/com/charging/chargingparking/mapper/ParkingTimeMapper.java
  8. 18 0
      src/main/java/com/charging/chargingparking/mapper/TimeSetMapper.java
  9. 176 0
      src/main/java/com/charging/chargingparking/modules/mobileController/ParkingTimeController.java
  10. 19 0
      src/main/java/com/charging/chargingparking/service/ParkingTimeService.java
  11. 12 0
      src/main/java/com/charging/chargingparking/service/TimeSetService.java
  12. 9 1
      src/main/java/com/charging/chargingparking/service/impl/ParkingRecordServiceImpl.java
  13. 186 0
      src/main/java/com/charging/chargingparking/service/impl/ParkingTimeServiceImpl.java
  14. 26 0
      src/main/java/com/charging/chargingparking/service/impl/TimeSetServiceImpl.java
  15. 10 1
      src/main/resources/mapper/ParkingInfoMapper.xml
  16. 33 0
      src/main/resources/mapper/ParkingTimeMapper.xml
  17. 21 0
      src/main/resources/mapper/TimeSetMapper.xml
  18. 129 4
      src/test/java/com/charging/chargingparking/ChargingParkingApplicationTests.java
  19. 15 0
      src/test/java/com/charging/chargingparking/DateTimeBetweenVo.java
  20. 62 0
      src/test/java/com/charging/chargingparking/MainTestDate.java
  21. 38 0
      src/test/java/com/charging/chargingparking/MainTestYearDate67.java

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

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

+ 20 - 0
src/main/java/com/charging/chargingparking/dto/ParkTimeDTO.java

@@ -0,0 +1,20 @@
+package com.charging.chargingparking.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class ParkTimeDTO {
+
+    //停车场保存的
+    private Integer startYear;
+    private Integer endYear;
+    private Boolean starTimeFlag;//开启时间设置标志
+    private String parkId;
+    //按照节假日标准设置的(默认全选)
+    private List<String> listSetId;
+
+    //自定义的
+}

+ 16 - 0
src/main/java/com/charging/chargingparking/dto/ParkTimeStatusDTO.java

@@ -0,0 +1,16 @@
+package com.charging.chargingparking.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class ParkTimeStatusDTO {
+
+    //停车场保存的
+    private Integer startYear;
+    private Integer endYear;
+    private Boolean starTimeFlag;//开启时间设置标志
+
+}

+ 3 - 0
src/main/java/com/charging/chargingparking/entity/ParkingInfo.java

@@ -146,4 +146,7 @@ public class ParkingInfo implements Serializable {
     private String noInParkingOutPolicy = "1";
     private String noInParkingOutPolicy = "1";
     //进出场最长间隔时长(小时)(默认是48小时)
     //进出场最长间隔时长(小时)(默认是48小时)
     private Integer maxInToOutTime = 0;
     private Integer maxInToOutTime = 0;
+    private Integer startYear;
+    private Integer endYear;
+    private Boolean starTimeFlag;//开启时间设置标志
 }
 }

+ 68 - 0
src/main/java/com/charging/chargingparking/entity/ParkingTime.java

@@ -0,0 +1,68 @@
+package com.charging.chargingparking.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 停车场费用表
+ * @TableName base_parking_fee
+ */
+@TableName(value ="base_parking_time")
+@Data
+public class ParkingTime implements Serializable {
+    /**
+     *
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 停车场id
+     */
+    private String parkId;
+
+
+    private Boolean isCustom;
+
+
+    private String setId;
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date startTime;
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date endTime;
+
+    /**
+     *
+     */
+    private String createBy;
+
+    /**
+     *
+     */
+    private Date createTime;
+
+    /**
+     *
+     */
+    private String updateBy;
+
+    /**
+     *
+     */
+    private Date updateTime;
+
+    /**
+     * 是否删除
+     */
+    private Boolean delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 57 - 0
src/main/java/com/charging/chargingparking/entity/TimeSet.java

@@ -0,0 +1,57 @@
+package com.charging.chargingparking.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+@TableName(value ="base_time_set")
+@Data
+public class TimeSet implements Serializable {
+
+    @TableId
+    private String id;
+    @TableField(value = "name_")
+    private String name;
+    private Boolean tsFlag;
+    @DateTimeFormat(pattern = "MM-dd")
+    @JsonFormat(pattern = "MM-dd")
+    private Date startTime;
+    @DateTimeFormat(pattern = "MM-dd")
+    @JsonFormat(pattern = "MM-dd")
+    private Date endTime;
+
+    /**
+     *
+     */
+    private String createBy;
+
+    /**
+     *
+     */
+    private Date createTime;
+
+    /**
+     *
+     */
+    private String updateBy;
+
+    /**
+     *
+     */
+    private Date updateTime;
+
+    /**
+     * 是否删除
+     */
+    private Boolean delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 24 - 0
src/main/java/com/charging/chargingparking/mapper/ParkingTimeMapper.java

@@ -0,0 +1,24 @@
+package com.charging.chargingparking.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.charging.chargingparking.entity.ParkingBetweenMember;
+import com.charging.chargingparking.entity.ParkingFee;
+import com.charging.chargingparking.entity.ParkingTime;
+import com.charging.chargingparking.modules.common.dto.Sort;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Entity com.charging.chargingparking.entity.ParkingFee
+ */
+@Repository
+public interface ParkingTimeMapper extends BaseMapper<ParkingTime> {
+    List<ParkingTime> search(Map<String, Object> searchParams, List<Sort> sortList);
+
+}
+
+
+
+

+ 18 - 0
src/main/java/com/charging/chargingparking/mapper/TimeSetMapper.java

@@ -0,0 +1,18 @@
+package com.charging.chargingparking.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.charging.chargingparking.entity.ParkingTime;
+import com.charging.chargingparking.entity.TimeSet;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Entity com.charging.chargingparking.entity.ParkingFee
+ */
+@Repository
+public interface TimeSetMapper extends BaseMapper<TimeSet> {
+
+}
+
+
+
+

+ 176 - 0
src/main/java/com/charging/chargingparking/modules/mobileController/ParkingTimeController.java

@@ -0,0 +1,176 @@
+package com.charging.chargingparking.modules.mobileController;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.charging.chargingparking.dto.MessageResult;
+import com.charging.chargingparking.dto.ParkTimeDTO;
+import com.charging.chargingparking.dto.ParkTimeStatusDTO;
+import com.charging.chargingparking.dto.PojoUtils;
+import com.charging.chargingparking.entity.*;
+import com.charging.chargingparking.modules.common.dto.Sort;
+import com.charging.chargingparking.service.*;
+import com.charging.chargingparking.utils.StringUtils;
+import com.github.pagehelper.Page;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.*;
+
+/**
+ * @author hbjzws
+ * @date 2023/10/25 0002 下午 4:41
+ */
+@RestController
+@Slf4j
+@RequestMapping("/parkingTime")
+public class ParkingTimeController {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private ParkingInfoService parkingInfoService;
+    @Autowired
+    private ParkingMemberService parkingMemberOrgService;
+    @Autowired
+    private ParkingTimeService parkingTimeService;
+    @Autowired
+    private TimeSetService timeSetService;
+    @ApiOperation(value = "节假日列表")
+    @RequestMapping(value = "timeSetList", method = RequestMethod.POST)
+    public MessageResult<List> timeSetList() {
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        List<TimeSet> list=timeSetService.list();
+
+        msgResult.setResult(true);
+        msgResult.setData(list);
+        return msgResult;
+    }
+    @ApiOperation(value = "节假日已设置")
+    @RequestMapping(value = "getTimeSetList", method = RequestMethod.POST)
+    public MessageResult<List> getTimeSetList(String parkId) {
+        MessageResult<List> msgResult = new MessageResult<>();
+        List<ParkingTime> listParkingTime = parkingTimeService.list(new QueryWrapper<ParkingTime>().eq("park_id", parkId).eq("is_custom",false).eq("del_flag",false));
+        msgResult.setResult(true);
+        msgResult.setData(listParkingTime);
+        return msgResult;
+    }
+    @ApiOperation(value = "停车场时间设置状态")
+    @RequestMapping(value = "getParkInfoTimeStatus", method = RequestMethod.POST)
+    public MessageResult<ParkTimeStatusDTO> getParkInfoTimeStatus(String parkId) {
+        MessageResult<ParkTimeStatusDTO> msgResult = new MessageResult<>();
+        ParkingInfo parkingInfo = parkingInfoService.getById(parkId);
+        ParkTimeStatusDTO parkTimeStatusDTO = new ParkTimeStatusDTO();
+        parkTimeStatusDTO.setStarTimeFlag(parkingInfo.getStarTimeFlag());
+        parkTimeStatusDTO.setStartYear(parkingInfo.getStartYear());
+        parkTimeStatusDTO.setEndYear(parkingInfo.getEndYear());
+        msgResult.setResult(true);
+        msgResult.setData(parkTimeStatusDTO);
+        return msgResult;
+    }
+    @ApiOperation(value = "停车场节假日设置")
+    @RequestMapping(value = "saveSet", method = RequestMethod.POST)
+   public MessageResult<Boolean> saveSet(@RequestBody ParkTimeDTO parkTimeDTO, @RequestAttribute String subject) {
+        //  public MessageResult<Boolean> saveSet(@RequestBody ParkTimeDTO parkTimeDTO) {
+        MessageResult<Boolean> msgResult = new MessageResult<>();
+
+        List<String> list =parkTimeDTO.getListSetId();
+        ParkingInfo parkingInfo = parkingInfoService.getById(parkTimeDTO.getParkId());
+        parkingInfo.setStarTimeFlag(parkTimeDTO.getStarTimeFlag());
+        parkingInfo.setStartYear(parkTimeDTO.getStartYear());
+        parkingInfo.setEndYear(parkTimeDTO.getEndYear());
+        parkingInfoService.update(parkingInfo);
+        //保存前先删除之前的非自定义的数据
+        List<ParkingTime> listParkingTime = parkingTimeService.list(new QueryWrapper<ParkingTime>().eq("park_id", parkTimeDTO.getParkId()).eq("is_custom",false).eq("del_flag",false));
+        for(ParkingTime parkingTime:listParkingTime){
+            parkingTime.setDelFlag(true);
+            parkingTimeService.removeById(parkingTime);
+        }
+        for(String setId:list){
+            ParkingTime parkingTime = new ParkingTime();
+            parkingTime.setIsCustom(false);
+            parkingTime.setParkId(parkTimeDTO.getParkId());
+            parkingTime.setSetId(setId);
+            parkingTime.setCreateTime(new Date());
+            parkingTime.setCreateBy(subject);
+            parkingTime.setUpdateTime(new Date());
+            parkingTime.setUpdateBy(subject);
+            parkingTimeService.save(parkingTime);
+        }
+        msgResult.setResult(true);
+        msgResult.setData(true);
+        return msgResult;
+    }
+    @ApiOperation(value = "停车场自定义时间设置")
+    @RequestMapping(value = "saveSingleSet", method = RequestMethod.POST)
+    public void saveSingleSet(@RequestBody ParkingTime parkingTime, @RequestAttribute String subject) {
+//        public void saveSingleSet(@RequestBody ParkingTime parkingTime) {
+//        ParkingTime parkingTime = new ParkingTime();
+//        parkingTime.setParkId("1");
+//        parkingTime.setIsCustom(true);
+//        parkingTime.setStartTime(new Date());
+//        parkingTime.setEndTime(new Date());
+        parkingTime.setIsCustom(true);
+        parkingTime.setCreateTime(new Date());
+        parkingTime.setCreateBy(subject);
+        parkingTime.setUpdateTime(new Date());
+        parkingTime.setUpdateBy(subject);
+        parkingTimeService.save(parkingTime);
+    }
+    @ApiOperation(value = "删除")
+    @PostMapping("deleteSingleSet/{id}")
+   // public MessageResult<Boolean> deleteSingleSet(@PathVariable("id") String id, @RequestAttribute String subject) {
+    public MessageResult<Boolean> deleteSingleSet(@PathVariable("id") String id) {
+
+            MessageResult<Boolean> msgResult = new MessageResult<>();
+        try {
+            ParkingTime parkingTime = parkingTimeService.getById(id);
+            parkingTime.setDelFlag(true);
+            boolean flag = parkingTimeService.removeById(parkingTime);
+
+
+            msgResult.setResult(true);
+            msgResult.setData(flag);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+    @ApiOperation(value = "列表")
+    @RequestMapping(value = "pageSingleSetList", method = RequestMethod.POST)
+    public MessageResult<Map> pageSingleSetList(
+            String parkId,
+            @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
+            @RequestParam(value = "pageSize", defaultValue = "20") int pageSize
+    ) {
+        // @RequestAttribute String subject
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String, Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("a.create_time", "desc"));
+
+        if (com.charging.chargingparking.utils.StringUtils.isNotEmpty(parkId)) {
+            searchParams.put("parkId", parkId);
+        }
+
+        Page<ParkingTime> page = parkingTimeService.pageSearch(searchParams, pageIndex, pageSize, sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+}

+ 19 - 0
src/main/java/com/charging/chargingparking/service/ParkingTimeService.java

@@ -0,0 +1,19 @@
+package com.charging.chargingparking.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.charging.chargingparking.entity.ParkingBetweenMember;
+import com.charging.chargingparking.entity.ParkingTime;
+import com.charging.chargingparking.modules.common.dto.Sort;
+import com.github.pagehelper.Page;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ */
+public interface ParkingTimeService extends IService<ParkingTime> {
+    Boolean enterTimeStatus(String parkId);
+    Boolean enterTimeStatus(String strEnterDate,String parkId);
+    Page<ParkingTime> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, List<Sort> sortList);
+}

+ 12 - 0
src/main/java/com/charging/chargingparking/service/TimeSetService.java

@@ -0,0 +1,12 @@
+package com.charging.chargingparking.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.charging.chargingparking.entity.ParkingTime;
+import com.charging.chargingparking.entity.TimeSet;
+
+/**
+ *
+ */
+public interface TimeSetService extends IService<TimeSet> {
+
+}

+ 9 - 1
src/main/java/com/charging/chargingparking/service/impl/ParkingRecordServiceImpl.java

@@ -86,7 +86,8 @@ public class ParkingRecordServiceImpl extends ServiceImpl<ParkingRecordMapper, P
 
 
     @Autowired
     @Autowired
     private ValueOperations<String, Object> valueOperations;
     private ValueOperations<String, Object> valueOperations;
-
+    @Autowired
+    private ParkingTimeService parkingTimeService;
     @Override
     @Override
     public Map<String, Object> plateRecord(AlarmInfoPlate alarmInfoPlate) throws Exception {
     public Map<String, Object> plateRecord(AlarmInfoPlate alarmInfoPlate) throws Exception {
 
 
@@ -185,6 +186,13 @@ public class ParkingRecordServiceImpl extends ServiceImpl<ParkingRecordMapper, P
 
 
         //是否开闸,验证黑白名单和道闸权限
         //是否开闸,验证黑白名单和道闸权限
         ParkingEnableVo parkingEnableVo = parkingMemberService.parkingMemberStatus(license, parkingChannel);
         ParkingEnableVo parkingEnableVo = parkingMemberService.parkingMemberStatus(license, parkingChannel);
+        //经开区税务局限制打开 add by hbjzws 2024-2-7
+        if ("836bb65f-868b-4042-acf7-dcb4c4de1f0f".equals(parkingInfo.getId())&&!parkingEnableVo.getOpen()){
+            Boolean enterStatus =parkingTimeService.enterTimeStatus(parkingInfo.getId());
+            if(enterStatus){
+                parkingEnableVo.setOpen(true);
+            }
+        }
         //parkingEnableVo.setOpen(true); 这句话正式环境不要打开(调试用)
         //parkingEnableVo.setOpen(true); 这句话正式环境不要打开(调试用)
         if (!parkingEnableVo.getOpen()) {
         if (!parkingEnableVo.getOpen()) {
             ParkingChannelVoice parkingChannelVoice = new ParkingChannelVoice();
             ParkingChannelVoice parkingChannelVoice = new ParkingChannelVoice();

+ 186 - 0
src/main/java/com/charging/chargingparking/service/impl/ParkingTimeServiceImpl.java

@@ -0,0 +1,186 @@
+package com.charging.chargingparking.service.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.*;
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.charging.chargingparking.dto.ParkingCostDTO;
+import com.charging.chargingparking.dto.ParkingFeeSubDTO;
+import com.charging.chargingparking.entity.*;
+import com.charging.chargingparking.mapper.ParkingBetweenMemberMapper;
+import com.charging.chargingparking.mapper.ParkingFeeMapper;
+import com.charging.chargingparking.mapper.ParkingTimeMapper;
+import com.charging.chargingparking.modules.common.dto.Sort;
+import com.charging.chargingparking.modules.vo.FreeTimeVo;
+import com.charging.chargingparking.service.*;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ *
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ParkingTimeServiceImpl extends ServiceImpl<ParkingTimeMapper, ParkingTime>
+        implements ParkingTimeService {
+    @Autowired
+    private ParkingTimeMapper parkingTimeMapper;
+
+    @Autowired
+    private ParkingInfoService parkingInfoService;
+    @Autowired
+    private TimeSetService timeSetService;
+    public static List<String> getDatesBetween(String startDateString, String endDateString) {
+        List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.DAY_OF_MONTH);
+        return datesBetween.stream()
+                .map(p -> DateUtil.format(p, DatePattern.NORM_DATE_PATTERN))
+                .collect(Collectors.toList());
+    }
+    public static List<String> Date67() {
+        int year = DateUtil.year(new Date());
+        List<String> dateList=new ArrayList<String>();
+        SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = new GregorianCalendar(year, 0, 1);
+        int i = 1;
+        while (calendar.get(Calendar.YEAR) < year + 1) {
+            calendar.set(Calendar.WEEK_OF_YEAR, i++);
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            if (calendar.get(Calendar.YEAR) == year) {
+                System.out.println("周日:"+simdf.format(calendar.getTime()));
+                dateList.add(simdf.format(calendar.getTime()));
+            }
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+            if (calendar.get(Calendar.YEAR) == year) {
+                System.out.println("周六:"+simdf.format(calendar.getTime()));
+                dateList.add(simdf.format(calendar.getTime()));
+            }
+        }
+        return dateList;
+    }
+
+    @Override
+    public Boolean enterTimeStatus(String strEnterDate,String parkId) {
+        List<String> listAll =new ArrayList<>();
+        ParkingInfo parkingInfo = parkingInfoService.getById(parkId);
+        if(parkingInfo!=null&&parkingInfo.getStarTimeFlag()!=null&&parkingInfo.getStarTimeFlag()&&parkingInfo.getStartYear()!=null&&parkingInfo.getEndYear()!=null){
+            if(parkingInfo.getStartYear()<=DateUtil.year(new Date())){
+                if(parkingInfo.getEndYear()>=DateUtil.year(new Date())){
+                    //取固定节假日配置
+                    List<ParkingTime> listParkingTime = list(new QueryWrapper<ParkingTime>().eq("park_id", parkingInfo.getId()).eq("is_custom",false).eq("del_flag",false));
+                    for(ParkingTime parkingTime:listParkingTime){
+                        TimeSet timeSet =timeSetService.getById(parkingTime.getSetId());
+                        if(timeSet.getTsFlag()){
+                            //是周6和周日
+                            listAll.addAll(Date67());
+                        }else{
+                            if(timeSet.getStartTime()!=null&&timeSet.getEndTime()!=null){
+                                StringBuilder sbStartStr = new StringBuilder();
+                                StringBuilder sbEndStr = new StringBuilder();
+                                sbStartStr.append(Integer.toString(DateUtil.year(new Date()))).append("-")
+                                        .append(DateUtil.format(timeSet.getStartTime(), "MM-dd"));
+                                sbEndStr.append(Integer.toString(DateUtil.year(new Date()))).append("-")
+                                        .append(DateUtil.format(timeSet.getEndTime(), "MM-dd"));
+                                List<String> list =getDatesBetween(sbStartStr.toString(),sbEndStr.toString());
+                                if(list!=null&&list.size()>0){
+                                    listAll.addAll(list);
+                                }
+                            }
+                        }
+                    }
+                    //取自定义时间配置
+                    List<ParkingTime> listParkingTimeSingle = list(new QueryWrapper<ParkingTime>().eq("park_id", parkingInfo.getId()).eq("is_custom",true).eq("del_flag",false));
+                    for(ParkingTime parkingTime:listParkingTimeSingle){
+                        if(parkingTime.getStartTime()!=null&&parkingTime.getEndTime()!=null){
+                            String stratTime =DateUtil.format(parkingTime.getStartTime(), "yyyy-MM-dd");
+                            List<String> list =getDatesBetween(DateUtil.format(parkingTime.getStartTime(), "yyyy-MM-dd"),DateUtil.format(parkingTime.getEndTime(), "yyyy-MM-dd"));
+                            if(list!=null&&list.size()>0){
+                                listAll.addAll(list);
+                            }
+                        }
+
+                    }
+                }
+            }
+        }
+        if(listAll.contains(strEnterDate)){
+            return true;
+        }else{
+            return false;
+        }
+    }
+    @Override
+    public Boolean enterTimeStatus(String parkId) {
+        List<String> listAll =new ArrayList<>();
+        String strEnterDate=DateUtil.format(new Date(), "yyyy-MM-dd");
+        ParkingInfo parkingInfo = parkingInfoService.getById(parkId);
+        if(parkingInfo!=null&&parkingInfo.getStarTimeFlag()!=null&&parkingInfo.getStarTimeFlag()&&parkingInfo.getStartYear()!=null&&parkingInfo.getEndYear()!=null){
+            if(parkingInfo.getStartYear()<=DateUtil.year(new Date())){
+                if(parkingInfo.getEndYear()>=DateUtil.year(new Date())){
+                    //取固定节假日配置
+                    List<ParkingTime> listParkingTime = list(new QueryWrapper<ParkingTime>().eq("park_id", parkingInfo.getId()).eq("is_custom",false).eq("del_flag",false));
+                    for(ParkingTime parkingTime:listParkingTime){
+                        TimeSet timeSet =timeSetService.getById(parkingTime.getSetId());
+                        if(timeSet.getTsFlag()){
+                            //是周6和周日
+                            listAll.addAll(Date67());
+                        }else{
+                            if(timeSet.getStartTime()!=null&&timeSet.getEndTime()!=null){
+                                StringBuilder sbStartStr = new StringBuilder();
+                                StringBuilder sbEndStr = new StringBuilder();
+                                sbStartStr.append(Integer.toString(DateUtil.year(new Date()))).append("-")
+                                        .append(DateUtil.format(timeSet.getStartTime(), "MM-dd"));
+                                sbEndStr.append(Integer.toString(DateUtil.year(new Date()))).append("-")
+                                        .append(DateUtil.format(timeSet.getEndTime(), "MM-dd"));
+                                List<String> list =getDatesBetween(sbStartStr.toString(),sbEndStr.toString());
+                                if(list!=null&&list.size()>0){
+                                    listAll.addAll(list);
+                                }
+                            }
+                        }
+                    }
+                    //取自定义时间配置
+                    List<ParkingTime> listParkingTimeSingle = list(new QueryWrapper<ParkingTime>().eq("park_id", parkingInfo.getId()).eq("is_custom",true).eq("del_flag",false));
+                    for(ParkingTime parkingTime:listParkingTimeSingle){
+                        if(parkingTime.getStartTime()!=null&&parkingTime.getEndTime()!=null){
+                            String stratTime =DateUtil.format(parkingTime.getStartTime(), "yyyy-MM-dd");
+                            List<String> list =getDatesBetween(DateUtil.format(parkingTime.getStartTime(), "yyyy-MM-dd"),DateUtil.format(parkingTime.getEndTime(), "yyyy-MM-dd"));
+                            if(list!=null&&list.size()>0){
+                                listAll.addAll(list);
+                            }
+                        }
+
+                    }
+                }
+            }
+        }
+        if(listAll.contains(strEnterDate)){
+            return true;
+        }else{
+            return false;
+        }
+    }
+    @Override
+    public Page<ParkingTime> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, List<Sort> sortList) {
+        Page<ParkingTime> page = PageHelper.startPage(pageNumber, pageSize).doSelectPage(() -> {
+            parkingTimeMapper.search(searchParams, sortList);
+        });
+        return page;
+    }
+
+}
+
+
+
+

+ 26 - 0
src/main/java/com/charging/chargingparking/service/impl/TimeSetServiceImpl.java

@@ -0,0 +1,26 @@
+package com.charging.chargingparking.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.charging.chargingparking.entity.ParkingTime;
+import com.charging.chargingparking.entity.TimeSet;
+import com.charging.chargingparking.mapper.ParkingTimeMapper;
+import com.charging.chargingparking.mapper.TimeSetMapper;
+import com.charging.chargingparking.service.ParkingTimeService;
+import com.charging.chargingparking.service.TimeSetService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ *
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TimeSetServiceImpl extends ServiceImpl<TimeSetMapper, TimeSet>
+        implements TimeSetService {
+
+
+}
+
+
+
+

+ 10 - 1
src/main/resources/mapper/ParkingInfoMapper.xml

@@ -143,7 +143,16 @@
                 no_in_parking_out_policy = #{noInParkingOutPolicy,jdbcType=CHAR},
                 no_in_parking_out_policy = #{noInParkingOutPolicy,jdbcType=CHAR},
             </if>
             </if>
             <if test="maxInToOutTime!=null">
             <if test="maxInToOutTime!=null">
-                max_in_to_out_time=#{maxInToOutTime,jdbcType=VARCHAR}
+                max_in_to_out_time=#{maxInToOutTime,jdbcType=VARCHAR},
+            </if>
+            <if test="startYear!=null">
+                start_year=#{startYear,jdbcType=VARCHAR},
+            </if>
+            <if test="endYear!=null">
+                end_year=#{endYear,jdbcType=VARCHAR},
+            </if>
+            <if test="starTimeFlag!=null">
+                star_time_flag=#{starTimeFlag,jdbcType=BIT}
             </if>
             </if>
         </set>
         </set>
         where id=#{id}
         where id=#{id}

+ 33 - 0
src/main/resources/mapper/ParkingTimeMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.charging.chargingparking.mapper.ParkingTimeMapper">
+
+    <resultMap id="BaseResultMap" type="com.charging.chargingparking.entity.ParkingTime">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="parkId" column="park_id" jdbcType="VARCHAR"/>
+            <result property="isCustom" column="is_custom" jdbcType="BIT"/>
+            <result property="setId" column="set_id" jdbcType="VARCHAR"/>
+            <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
+            <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
+            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="BIT"/>
+    </resultMap>
+
+        <select id="search" parameterType="hashmap" resultMap="BaseResultMap">
+                <![CDATA[
+			select * from base_parking_time a
+		]]>
+                where a.del_flag=false and a.is_custom=true
+                <if test="searchParams.parkId != null">
+                        and a.park_id = #{searchParams.parkId}
+                </if>
+                <foreach item="sort" collection="sortList" open="order by" separator=",">
+                        ${sort.name} ${sort.order}
+                </foreach>
+        </select>
+</mapper>

+ 21 - 0
src/main/resources/mapper/TimeSetMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.charging.chargingparking.mapper.TimeSetMapper">
+
+    <resultMap id="BaseResultMap" type="com.charging.chargingparking.entity.TimeSet">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="name" column="name_" jdbcType="VARCHAR"/>
+            <result property="tsFlag" column="ts_flag" jdbcType="BIT"/>
+            <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
+            <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
+            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="BIT"/>
+    </resultMap>
+
+
+</mapper>

+ 129 - 4
src/test/java/com/charging/chargingparking/ChargingParkingApplicationTests.java

@@ -4,10 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil;
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.date.DateField;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUnit;
-import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.*;
 import cn.hutool.core.io.resource.ClassPathResource;
 import cn.hutool.core.io.resource.ClassPathResource;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.NumberUtil;
@@ -47,6 +44,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 
 import static cn.hutool.core.date.DateUnit.HOUR;
 import static cn.hutool.core.date.DateUnit.HOUR;
 
 
@@ -100,7 +98,134 @@ class ChargingParkingApplicationTests {
     private ParkingShopService parkingShopService;
     private ParkingShopService parkingShopService;
     @Autowired
     @Autowired
     private ParkingBetweenMemberService parkingBetweenMemberService;
     private ParkingBetweenMemberService parkingBetweenMemberService;
+    @Autowired
+    private ParkingTimeService parkingTimeService;
+    @Autowired
+    private TimeSetService timeSetService;
+    public static List<String> getDatesBetween(String startDateString, String endDateString) {
+        List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.DAY_OF_MONTH);
+        return datesBetween.stream()
+                .map(p -> DateUtil.format(p, DatePattern.NORM_DATE_PATTERN))
+                .collect(Collectors.toList());
+    }
+    public static List<String> Date67() {
+        int year = DateUtil.year(new Date());
+        List<String> dateList=new ArrayList<String>();
+        SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = new GregorianCalendar(year, 0, 1);
+        int i = 1;
+        while (calendar.get(Calendar.YEAR) < year + 1) {
+            calendar.set(Calendar.WEEK_OF_YEAR, i++);
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            if (calendar.get(Calendar.YEAR) == year) {
+                System.out.println("周日:"+simdf.format(calendar.getTime()));
+                dateList.add(simdf.format(calendar.getTime()));
+            }
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+            if (calendar.get(Calendar.YEAR) == year) {
+                System.out.println("周六:"+simdf.format(calendar.getTime()));
+                dateList.add(simdf.format(calendar.getTime()));
+            }
+        }
+        return dateList;
+    }
+    @Test
+    void testTimeParkService()  {
+        String strEnterDate="2024-01-06";
+        String parkId="836bb65f-868b-4042-acf7-dcb4c4de1f0f";
+        Boolean ret = parkingTimeService.enterTimeStatus(strEnterDate,parkId);
+        System.out.println(ret);
+    }
+
+    @Test
+    void testTimePark() throws Exception {
+        String strEnterDate="2024-01-06";
+        List<String> listAll =new ArrayList<>();
+        ParkingInfo parkingInfo = parkingInfoService.getById("836bb65f-868b-4042-acf7-dcb4c4de1f0f");
+        DateUtil.year(new Date());
+        if(parkingInfo.getStarTimeFlag()!=null&&parkingInfo.getStarTimeFlag()&&parkingInfo.getStartYear()!=null&&parkingInfo.getEndYear()!=null){
+            if(parkingInfo.getStartYear()<=DateUtil.year(new Date())){
+                if(parkingInfo.getEndYear()>=DateUtil.year(new Date())){
+                        //取固定节假日配置
+                    List<ParkingTime> listParkingTime = parkingTimeService.list(new QueryWrapper<ParkingTime>().eq("park_id", parkingInfo.getId()).eq("is_custom",false).eq("del_flag",false));
+                    for(ParkingTime parkingTime:listParkingTime){
+                        TimeSet timeSet =timeSetService.getById(parkingTime.getSetId());
+                        if(timeSet.getTsFlag()){
+                            //是周6和周日
+                            System.out.println("周6和周日");
+                            List<String> list =Date67();
+                            for(String ds:list){
+                                System.out.println("周6和周日:"+ds);
+                            }
+                            listAll.addAll(list);
+                        }else{
+                            StringBuilder sbStartStr = new StringBuilder();
+                            StringBuilder sbEndStr = new StringBuilder();
+                            sbStartStr.append(Integer.toString(DateUtil.year(new Date()))).append("-")
+                                    .append(DateUtil.format(timeSet.getStartTime(), "MM-dd"));
+                            sbEndStr.append(Integer.toString(DateUtil.year(new Date()))).append("-")
+                                    .append(DateUtil.format(timeSet.getEndTime(), "MM-dd"));
+                            System.out.println("------:"+sbStartStr.toString());
+                            System.out.println("------:"+sbEndStr.toString());
+                            List<String> list =getDatesBetween(sbStartStr.toString(),sbEndStr.toString());
+                            for(String ds:list){
+                                System.out.println("节假日:"+ds);
+                            }
+                            if(list!=null&&list.size()>0){
+                                listAll.addAll(list);
+                            }
+
+                        }
+                    }
+                        //取自定义时间配置
+                    List<ParkingTime> listParkingTimeSingle = parkingTimeService.list(new QueryWrapper<ParkingTime>().eq("park_id", parkingInfo.getId()).eq("is_custom",true).eq("del_flag",false));
+                    for(ParkingTime parkingTime:listParkingTimeSingle){
+
+                        if(parkingTime.getStartTime()!=null&&parkingTime.getEndTime()!=null){
+                            String stratTime =DateUtil.format(parkingTime.getStartTime(), "yyyy-MM-dd");
+                            System.out.println("kais时间:"+stratTime);
+                            List<String> list =getDatesBetween(DateUtil.format(parkingTime.getStartTime(), "yyyy-MM-dd"),DateUtil.format(parkingTime.getEndTime(), "yyyy-MM-dd"));
+                            for(String ds:list){
+                                System.out.println("自定义时间:"+ds);
+                            }
+                            if(list!=null&&list.size()>0){
+                                listAll.addAll(list);
+                            }
+                        }
+
+                    }
+                }
+            }
+        }
+        for(String str:listAll){
+
+            System.out.println("-----所有免费入场时间为:"+str);
+        }
+        if(listAll.contains(strEnterDate)){
+            System.out.println("------免费入场");
+        }else{
+            System.out.println("------禁止入场");
+        }
+
+    }
 
 
+    @Test
+    void testTimeSet() throws Exception {
+        ParkingInfo parkingInfo = parkingInfoService.getById("1");
+        parkingInfo.setStarTimeFlag(true);
+        parkingInfo.setStartYear(2023);
+        parkingInfo.setEndYear(2024);
+        parkingInfoService.update(parkingInfo);
+//        List<TimeSet> list=timeSetService.list();
+//
+//        System.out.println(list.size());
+//
+//        ParkingTime parkingTime = new ParkingTime();
+//        parkingTime.setParkId("1");
+//        parkingTime.setStartTime(new Date());
+//        parkingTime.setEndTime(new Date());
+//        parkingTimeService.save(parkingTime);
+    }
 
 
     @Test
     @Test
     void testCarImport() throws Exception {
     void testCarImport() throws Exception {

+ 15 - 0
src/test/java/com/charging/chargingparking/DateTimeBetweenVo.java

@@ -0,0 +1,15 @@
+package com.charging.chargingparking;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author hbjzws
+ * @date 2024/2/1 0001 上午 11:11
+ */
+@Data
+public class DateTimeBetweenVo {
+    private Date startTime;
+    private Date endTime;
+}

+ 62 - 0
src/test/java/com/charging/chargingparking/MainTestDate.java

@@ -0,0 +1,62 @@
+package com.charging.chargingparking;
+
+import cn.hutool.core.date.DateUtil;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+
+public class MainTestDate {
+
+    public static void main(String[] args) {
+        Date startTime =DateUtil.parse("2024-01-01 08:10:00","yyyy-MM-dd HH:mm:ss");
+        Date endTime =DateUtil.parse("2024-01-02 16:55:00","yyyy-MM-dd HH:mm:ss");
+
+        List<DateTimeBetweenVo> list = new ArrayList<>();
+        DateTimeBetweenVo dateTimeBetweenVo1 = new DateTimeBetweenVo();
+        DateTimeBetweenVo dateTimeBetweenVo2 = new DateTimeBetweenVo();
+        dateTimeBetweenVo1.setStartTime(DateUtil.parse("2024-01-01 00:00:00","yyyy-MM-dd HH:mm:ss"));
+        dateTimeBetweenVo1.setEndTime(DateUtil.parse("2024-01-03 00:00:00","yyyy-MM-dd HH:mm:ss"));
+        dateTimeBetweenVo2.setStartTime(DateUtil.parse("2024-10-01 00:00:00","yyyy-MM-dd HH:mm:ss"));
+        dateTimeBetweenVo2.setEndTime(DateUtil.parse("2024-10-07 00:00:00","yyyy-MM-dd HH:mm:ss"));
+
+        list.add(dateTimeBetweenVo1);
+        list.add(dateTimeBetweenVo2);
+
+        //getWeek();
+    }
+
+    private static void getWeek() {
+        Calendar calendar = Calendar.getInstance();
+        //calendar.setTime(DateUtil.parse("2024-02-02 00:00:00","yyyy-MM-dd HH:mm:ss"));
+        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+        switch (dayOfWeek) {
+            case 1:
+                System.out.println("星期日");
+                break;
+            case 2:
+                System.out.println("星期一");
+                break;
+            case 3:
+                System.out.println("星期二");
+                break;
+            case 4:
+                System.out.println("星期三");
+                break;
+            case 5:
+                System.out.println("星期四");
+                break;
+            case 6:
+                System.out.println("星期五");
+                break;
+            case 7:
+                System.out.println("星期六");
+                break;
+            default:
+                System.out.println("获取星期失败");
+        }
+    }
+
+}

+ 38 - 0
src/test/java/com/charging/chargingparking/MainTestYearDate67.java

@@ -0,0 +1,38 @@
+package com.charging.chargingparking;
+
+import cn.hutool.core.date.DateUtil;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+public class MainTestYearDate67 {
+
+    public static void main(String[] args) throws ParseException {
+        int year = 2022;
+        List<String> dateList=new ArrayList<String>();
+        SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = new GregorianCalendar(year, 0, 1);
+        int i = 1;
+        while (calendar.get(Calendar.YEAR) < year + 1) {
+            calendar.set(Calendar.WEEK_OF_YEAR, i++);
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            if (calendar.get(Calendar.YEAR) == year) {
+                System.out.println("周日:"+simdf.format(calendar.getTime())+" 23:59:59");
+                dateList.add(simdf.format(calendar.getTime())+" 23:59:59");
+            }
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+            if (calendar.get(Calendar.YEAR) == year) {
+                System.out.println("周六:"+simdf.format(calendar.getTime())+" 00:00:00");
+                dateList.add(simdf.format(calendar.getTime())+" 00:00:00");
+            }
+        }
+        System.out.println(dateList.size());
+
+
+    }
+
+
+
+}