Переглянути джерело

包租车牌启用时间和到期时间校验协议生效时间

xlq 6 днів тому
батько
коміт
1aab63f158

+ 3 - 0
src/main/java/com/qmrb/system/pojo/entity/Contract.java

@@ -3,6 +3,7 @@ package com.qmrb.system.pojo.entity;
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.qmrb.system.common.base.BaseEntity;
 import java.util.Date;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -50,12 +51,14 @@ public class Contract extends BaseEntity {
      * 开始日期
      */
     @TableField("start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date startDate;
 
     /**
      * 结束日期
      */
     @TableField("end_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date endDate;
 
     /**

+ 26 - 11
src/main/java/com/qmrb/system/service/impl/ContractPlaceNumberRelServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.LocalDateTime;
@@ -62,7 +63,6 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
     IContractPlaceNumberRelHisService contractPlaceNumberRelHisService;
 
 
-
     /**
      * 分页查询
      */
@@ -114,9 +114,9 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
             if (CollectionUtil.isEmpty(records) && list.size() == 0) {
                 ContractPlaceNumberRelVO contractPlaceNumberRelVO = new ContractPlaceNumberRelVO();
                 contractPlaceNumberRelVO.setContractId(sysUser.getContractId());
-                if(list.size() == 0) {
+                if (list.size() == 0) {
                     contractPlaceNumberRelVO.setAbledNum("1");
-                }else{
+                } else {
                     contractPlaceNumberRelVO.setAbledNum(String.valueOf(list.size()));
                 }
 
@@ -148,11 +148,25 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
      */
     @Override
     public ContractPlaceNumberRelForm saveForm(@Valid ContractPlaceNumberRelForm form) {
-        // // 获取该用户的协议 赋值协议名称
-        // SysUser sysUser = userService.getOne(new LambdaQueryWrapper<SysUser>()
-        //         .eq(SysUser::getId, SecurityUtils.getUserId())
-        // );
-        // Contract contract = contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getId, sysUser.getContractId()));
+        // 获取该用户的协议 赋值协议名称
+        SysUser sysUser = userService.getOne(new LambdaQueryWrapper<SysUser>()
+                .eq(SysUser::getId, SecurityUtils.getUserId())
+        );
+        Contract contract = contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getId, sysUser.getContractId()));
+        // 日期格式化
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String formattedStartDate = contract.getStartDate() != null ? sdf.format(contract.getStartDate()) : "无";
+        String formattedEndDate = contract.getEndDate() != null ? sdf.format(contract.getEndDate()) : "无";
+
+        // 2. 校验时间范围
+        Assert.isTrue(form.getStartTime() != null && form.getEndTime() != null, "开始时间和到期时间不能为空");
+        Assert.isTrue(!form.getStartTime().after(form.getEndTime()), "开始时间不能晚于到期时间");
+        Assert.isTrue(contract.getStartDate() == null || !form.getStartTime().before(contract.getStartDate()),
+                "启用时间应在协议生效时间[" + formattedStartDate + "至" + formattedEndDate + "]");
+        Assert.isTrue(contract.getEndDate() == null || !form.getEndTime().after(contract.getEndDate()),
+                "到期时间应在协议生效时间[" + formattedStartDate + "至" + formattedEndDate + "]");
+
+
         // form.setContractName(contract.getContractName());
         // 实体对象转换 form->entity
         ContractPlaceNumberRel entity = converter.form2Entity(form);
@@ -274,12 +288,12 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
         if (CollectionUtil.isNotEmpty(list)) {
             ContractPlaceNumberRel contractPlaceNumberRel = list.get(0);
             long between = 0L;
-            if(contractPlaceNumberRel.getStartTime().before(barnRecord.getInTime())){
+            if (contractPlaceNumberRel.getStartTime().before(barnRecord.getInTime())) {
                 between = DateUtil.between(barnRecord.getInTime(), new Date(), DateUnit.MINUTE);
-            }else{
+            } else {
                 between = DateUtil.between(contractPlaceNumberRel.getStartTime(), new Date(), DateUnit.MINUTE);
             }
-            
+
             HashMap<String, Object> map = new HashMap<>();
 
             // 将 Date 转换为 Instant
@@ -289,6 +303,7 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
             LocalDateTime endTime = endTimeinstant.atZone(ZoneId.systemDefault()).toLocalDateTime();
             map.put("denomination", Double.valueOf(between));
             map.put("expireTime", endTime);
+            log.info("包租协议抵扣时长:", between, endTime);
             return map;
         }
         return null;