Browse Source

包租协议优惠车牌历史记录

xlq 2 weeks ago
parent
commit
4374428eee

+ 30 - 12
src/main/java/com/qmrb/system/controller/ContractPlaceNumberRelController.java

@@ -5,7 +5,12 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import com.qmrb.system.framework.security.util.SecurityUtils;
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRel;
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRelHis;
+import com.qmrb.system.service.IContractPlaceNumberRelHisService;
 import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -46,9 +51,13 @@ import lombok.RequiredArgsConstructor;
 @RestController
 @RequestMapping("/api/v1/contract_place_number_rel")
 @RequiredArgsConstructor
-public class ContractPlaceNumberRelController{
+public class ContractPlaceNumberRelController {
 
     private final IContractPlaceNumberRelService contractPlaceNumberRelService;
+
+    @Autowired
+    IContractPlaceNumberRelHisService contractPlaceNumberRelHisService;
+
     @Operation(summary = "协议车牌历史记录分页列表", security = {@SecurityRequirement(name = "Authorization")})
     @GetMapping("/getHistoryPage")
     public PageResult<ContractPlaceNumberRelVO> getHistoryPage(@ParameterObject ContractPlaceNumberRelQuery queryParams) {
@@ -56,18 +65,18 @@ public class ContractPlaceNumberRelController{
         return PageResult.success(result);
     }
 
-	@Operation(summary = "协议(客商)车牌关系分页列表", security = {@SecurityRequirement(name = "Authorization")})
+    @Operation(summary = "协议(客商)车牌关系分页列表", security = {@SecurityRequirement(name = "Authorization")})
     @GetMapping("/page")
     public PageResult<ContractPlaceNumberRelVO> getPage(@ParameterObject ContractPlaceNumberRelQuery queryParams) {
         // 校验当前登录用户id
-        if(SecurityUtils.getUserId() == null){
+        if (SecurityUtils.getUserId() == null) {
             return PageResult.success(null);
         }
         Page<ContractPlaceNumberRelVO> result = contractPlaceNumberRelService.getPage(queryParams);
         return PageResult.success(result);
     }
-    
-    
+
+
     @Operation(summary = "新增协议(客商)车牌关系", security = {@SecurityRequirement(name = "Authorization")})
     @PostMapping
     public Result<ContractPlaceNumberRelForm> saveForm(@RequestBody @Valid ContractPlaceNumberRelForm form) {
@@ -78,7 +87,7 @@ public class ContractPlaceNumberRelController{
     @Operation(summary = "协议(客商)车牌关系表单数据", security = {@SecurityRequirement(name = "Authorization")})
     @GetMapping("/{id}/form")
     public Result<ContractPlaceNumberRelForm> getForm(@Parameter(description = "协议(客商)车牌关系ID") @PathVariable Long id) {
-    	ContractPlaceNumberRelForm formData = contractPlaceNumberRelService.getFormData(id);
+        ContractPlaceNumberRelForm formData = contractPlaceNumberRelService.getFormData(id);
         return Result.success(formData);
     }
 
@@ -86,23 +95,32 @@ public class ContractPlaceNumberRelController{
     @PutMapping(value = "/{id}")
     public Result<?> updateForm(@Parameter(description = "协议(客商)车牌关系ID") @PathVariable Long id, @RequestBody @Validated ContractPlaceNumberRelForm form) {
 
-        boolean result = contractPlaceNumberRelService.updateForm(id,form);
+        boolean result = contractPlaceNumberRelService.updateForm(id, form);
         return Result.judge(result);
     }
 
     @Operation(summary = "删除协议(客商)车牌关系", security = {@SecurityRequirement(name = "Authorization")})
     @DeleteMapping("/{ids}")
-    public Result<?> deleteUsers( @Parameter(description = "协议(客商)车牌关系ID,多个以英文逗号(,)分割") @PathVariable String ids) {
-    	if(StrUtil.isBlank(ids)) {
-    		 return Result.failed(ResultCode.PARAM_ERROR, "删除的协议(客商)车牌关系数据为空");
-    	}
+    public Result<?> deleteUsers(@Parameter(description = "协议(客商)车牌关系ID,多个以英文逗号(,)分割") @PathVariable String ids) {
+        if (StrUtil.isBlank(ids)) {
+            return Result.failed(ResultCode.PARAM_ERROR, "删除的协议(客商)车牌关系数据为空");
+        }
         // 逻辑删除
         List<Long> idList = Arrays.asList(ids.split(",")).stream()
                 .map(idStr -> Long.parseLong(idStr)).collect(Collectors.toList());
         boolean result = contractPlaceNumberRelService.removeByIds(idList);
+        List<ContractPlaceNumberRel> contractPlaceNumberRels = contractPlaceNumberRelService.listByIds(idList);
+        if (result) {
+            for (ContractPlaceNumberRel contractPlaceNumberRel : contractPlaceNumberRels) {
+                // 更新历史记录表
+                ContractPlaceNumberRelHis contractPlaceNumberRelHis = new ContractPlaceNumberRelHis();
+                BeanUtils.copyProperties(contractPlaceNumberRel, contractPlaceNumberRelHis, "id");
+                contractPlaceNumberRelHis.setStatus("4");// 0停用1启用 2到期 3新增 4删除 5修改
+                contractPlaceNumberRelHisService.save(contractPlaceNumberRelHis);
+            }
+        }
         return Result.judge(result);
     }
-    
 
 
 }

+ 97 - 0
src/main/java/com/qmrb/system/controller/ContractPlaceNumberRelHisController.java

@@ -0,0 +1,97 @@
+package com.qmrb.system.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmrb.system.common.result.PageResult;
+import com.qmrb.system.common.result.Result;
+import com.qmrb.system.common.result.ResultCode;
+import com.qmrb.system.framework.resubmit.Resubmit;
+import com.qmrb.system.service.IContractPlaceNumberRelHisService;
+import com.qmrb.system.pojo.form.ContractPlaceNumberRelHisForm;
+import com.qmrb.system.pojo.vo.ContractPlaceNumberRelHisVO;
+import com.qmrb.system.pojo.query.ContractPlaceNumberRelHisQuery;
+
+import cn.hutool.core.util.StrUtil;
+import org.springframework.web.bind.annotation.RestController;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系 前端控制器
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Tag(name = "协议(客商)车牌关系接口")
+@RestController
+@RequestMapping("/api/v1/contract_place_number_rel_his")
+@RequiredArgsConstructor
+public class ContractPlaceNumberRelHisController{
+
+    private final IContractPlaceNumberRelHisService contractPlaceNumberRelHisService;
+
+	@Operation(summary = "协议(客商)车牌关系分页列表", security = {@SecurityRequirement(name = "Authorization")})
+    @GetMapping("/page")
+    public PageResult<ContractPlaceNumberRelHisVO> getPage(@ParameterObject ContractPlaceNumberRelHisQuery queryParams) {
+        Page<ContractPlaceNumberRelHisVO> result = contractPlaceNumberRelHisService.getPage(queryParams);
+        return PageResult.success(result);
+    }
+    
+    
+    @Operation(summary = "新增协议(客商)车牌关系", security = {@SecurityRequirement(name = "Authorization")})
+    @PostMapping
+    @Resubmit
+    public Result<ContractPlaceNumberRelHisForm> saveForm(@RequestBody @Valid ContractPlaceNumberRelHisForm form) {
+        ContractPlaceNumberRelHisForm result = contractPlaceNumberRelHisService.saveForm(form);
+        return Result.success(result);
+    }
+
+    @Operation(summary = "协议(客商)车牌关系表单数据", security = {@SecurityRequirement(name = "Authorization")})
+    @GetMapping("/{id}/form")
+    public Result<ContractPlaceNumberRelHisForm> getForm(@Parameter(description = "协议(客商)车牌关系ID") @PathVariable Long id) {
+    	ContractPlaceNumberRelHisForm formData = contractPlaceNumberRelHisService.getFormData(id);
+        return Result.success(formData);
+    }
+
+    @Operation(summary = "修改协议(客商)车牌关系", security = {@SecurityRequirement(name = "Authorization")})
+    @PutMapping(value = "/{id}")
+    public Result<?> updateForm(@Parameter(description = "协议(客商)车牌关系ID") @PathVariable Long id, @RequestBody @Validated ContractPlaceNumberRelHisForm form) {
+        boolean result = contractPlaceNumberRelHisService.updateForm(id,form);
+        return Result.judge(result);
+    }
+
+    @Operation(summary = "删除协议(客商)车牌关系", security = {@SecurityRequirement(name = "Authorization")})
+    @DeleteMapping("/{ids}")
+    public Result<?> deleteUsers( @Parameter(description = "协议(客商)车牌关系ID,多个以英文逗号(,)分割") @PathVariable String ids) {
+    	if(StrUtil.isBlank(ids)) {
+    		 return Result.failed(ResultCode.PARAM_ERROR, "删除的协议(客商)车牌关系数据为空");
+    	}
+        // 逻辑删除
+        List<Long> idList = Arrays.asList(ids.split(",")).stream()
+                .map(idStr -> Long.parseLong(idStr)).collect(Collectors.toList());
+        boolean result = contractPlaceNumberRelHisService.removeByIds(idList);
+        return Result.judge(result);
+    }
+    
+
+
+}

+ 29 - 0
src/main/java/com/qmrb/system/converter/ContractPlaceNumberRelHisConverter.java

@@ -0,0 +1,29 @@
+package com.qmrb.system.converter;
+
+import org.mapstruct.InheritInverseConfiguration;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRelHis;
+import com.qmrb.system.pojo.form.ContractPlaceNumberRelHisForm;
+import com.qmrb.system.pojo.vo.ContractPlaceNumberRelHisVO;
+
+/**
+ * 协议(客商)车牌关系数据项对象转换器
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface ContractPlaceNumberRelHisConverter {
+
+    Page<ContractPlaceNumberRelHisVO> entity2Page(Page<ContractPlaceNumberRelHis> page);
+
+    ContractPlaceNumberRelHisForm entity2Form(ContractPlaceNumberRelHis entity);
+
+    @InheritInverseConfiguration(name="entity2Form")
+    ContractPlaceNumberRelHis form2Entity(ContractPlaceNumberRelHisForm form);
+    
+    
+}

+ 18 - 0
src/main/java/com/qmrb/system/mapper/ContractPlaceNumberRelHisMapper.java

@@ -0,0 +1,18 @@
+package com.qmrb.system.mapper;
+
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRelHis;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系 Mapper 接口
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Mapper
+public interface ContractPlaceNumberRelHisMapper extends BaseMapper<ContractPlaceNumberRelHis> {
+
+}

+ 73 - 0
src/main/java/com/qmrb/system/pojo/entity/ContractPlaceNumberRelHis.java

@@ -0,0 +1,73 @@
+package com.qmrb.system.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.qmrb.system.common.base.BaseEntity;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("contract_place_number_rel_his")
+public class ContractPlaceNumberRelHis extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 车型 1大型 2小型
+     */
+    @TableField("car_type")
+    private String carType;
+
+    /**
+     * 联系电话
+     */
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 车牌号
+     */
+    @TableField("plate_number")
+    private String plateNumber;
+
+    /**
+     * 开始时间
+     */
+    @TableField("start_time")
+    private Date startTime;
+
+    /**
+     * 到期日期
+     */
+    @TableField("end_time")
+    private Date endTime;
+
+    /**
+     * 0停用1启用 2到期 3新增 4删除 5修改
+     */
+    @TableField("status")
+    private String status;
+
+    /**
+     * 协议ID
+     */
+    @TableField("contract_id")
+    private Long contractId;
+
+
+}

+ 1 - 1
src/main/java/com/qmrb/system/pojo/entity/SysUser.java

@@ -80,7 +80,7 @@ public class SysUser implements Serializable {
     private Integer deleted;
 
     /**
-     * 用户类型 1 系统用户 2客商
+     * 用户类型 1 系统用户 2扫码协议用户  3 包租协议用户
      */
     @TableField("user_type")
     private String userType;

+ 6 - 0
src/main/java/com/qmrb/system/pojo/form/ContractPlaceNumberRelForm.java

@@ -17,6 +17,12 @@ import java.util.Date;
 @Data
 public class ContractPlaceNumberRelForm {
 
+    /**
+     * 0停用1启用 2到期 3新增 4删除 5修改
+     */
+    @Schema(description = "0停用1启用 2到期 3新增 4删除 5修改",type="String")
+    private String updateStatus;
+
     private Long id;
     /**
      * 车型 1大型 2小型

+ 57 - 0
src/main/java/com/qmrb/system/pojo/form/ContractPlaceNumberRelHisForm.java

@@ -0,0 +1,57 @@
+package com.qmrb.system.pojo.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系表单
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Data
+public class ContractPlaceNumberRelHisForm {
+
+    private Long id;
+    /**
+     * 车型 1大型 2小型
+     */
+	@Schema(description = "车型 1大型 2小型",type="String")
+    private String carType;
+    /**
+     * 联系电话
+     */
+	@Schema(description = "联系电话",type="String")
+    private String phone;
+    /**
+     * 车牌号
+     */
+	@Schema(description = "车牌号",type="String")
+    private String plateNumber;
+    /**
+     * 开始时间
+     */
+	@Schema(description = "开始时间",type="Date")
+    private Date startTime;
+    /**
+     * 到期日期
+     */
+	@Schema(description = "到期日期",type="Date")
+    private Date endTime;
+    /**
+     * 0停用1启用 2到期
+     */
+	@Schema(description = "0停用1启用 2到期",type="String")
+    private String status;
+    /**
+     * 协议ID
+     */
+	@Schema(description = "协议ID",type="Long")
+    private Long contractId;
+
+
+}

+ 67 - 0
src/main/java/com/qmrb/system/pojo/query/ContractPlaceNumberRelHisQuery.java

@@ -0,0 +1,67 @@
+package com.qmrb.system.pojo.query;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.qmrb.system.common.base.BasePageQuery;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系查询对象
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractPlaceNumberRelHisQuery extends BasePageQuery{
+    private String startTimeBegin;
+    private String startTimeEnd;
+    private String endTimeBegin;
+    private String endTimeEnd;
+
+ 	@Schema(description="关键字")
+    private String keywords;
+
+    private Long id;
+    /**
+     * 车型 1大型 2小型
+     */
+	@Schema(description = "车型 1大型 2小型",type="String")
+    private String carType;
+    /**
+     * 联系电话
+     */
+	@Schema(description = "联系电话",type="String")
+    private String phone;
+    /**
+     * 车牌号
+     */
+	@Schema(description = "车牌号",type="String")
+    private String plateNumber;
+    /**
+     * 开始时间
+     */
+	@Schema(description = "开始时间",type="Date")
+    private Date startTime;
+    /**
+     * 到期日期
+     */
+	@Schema(description = "到期日期",type="Date")
+    private Date endTime;
+    /**
+     * 0停用1启用 2到期
+     */
+	@Schema(description = "0停用1启用 2到期",type="String")
+    private String status;
+    /**
+     * 协议ID
+     */
+	@Schema(description = "协议ID",type="Long")
+    private Long contractId;
+
+
+}

+ 78 - 0
src/main/java/com/qmrb/system/pojo/vo/ContractPlaceNumberRelHisVO.java

@@ -0,0 +1,78 @@
+package com.qmrb.system.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系视图对象
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Data
+public class ContractPlaceNumberRelHisVO {
+    /**
+     * 覆盖时间
+     */
+    @Schema(description = "覆盖时间",type="String")
+    private String coverTime;
+
+    private Long id;
+    /**
+     * 车型 1大型 2小型
+     */
+	@Schema(description = "车型 1大型 2小型",type="String")
+    private String carType;
+    /**
+     * 联系电话
+     */
+	@Schema(description = "联系电话",type="String")
+    private String phone;
+    /**
+     * 车牌号
+     */
+	@Schema(description = "车牌号",type="String")
+    private String plateNumber;
+    /**
+     * 开始时间
+     */
+	@Schema(description = "开始时间",type="Date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    /**
+     * 到期日期
+     */
+	@Schema(description = "到期日期",type="Date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+    /**
+     * 0停用1启用 2到期 3新增 4删除 5修改
+     */
+	@Schema(description = "0停用1启用 2到期 3新增 4删除 5修改",type="String")
+    private String status;
+    /**
+     * 协议ID
+     */
+	@Schema(description = "协议ID",type="Long")
+    private Long contractId;
+
+    /**
+     * 更新时间
+     */
+    @Schema(description = "更新时间",type="Date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+
+
+
+}

+ 40 - 0
src/main/java/com/qmrb/system/service/IContractPlaceNumberRelHisService.java

@@ -0,0 +1,40 @@
+package com.qmrb.system.service;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRelHis;
+import com.qmrb.system.pojo.form.ContractPlaceNumberRelHisForm;
+import com.qmrb.system.pojo.vo.ContractPlaceNumberRelHisVO;
+import com.qmrb.system.pojo.query.ContractPlaceNumberRelHisQuery;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系 服务类
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+public interface IContractPlaceNumberRelHisService extends IService<ContractPlaceNumberRelHis> {
+	
+	/**分页查询
+	 * */
+	public Page<ContractPlaceNumberRelHisVO> getPage(ContractPlaceNumberRelHisQuery queryParams);
+	
+
+	/**
+	 * 保存表单
+	 * */
+	public ContractPlaceNumberRelHisForm saveForm(@Valid ContractPlaceNumberRelHisForm form);
+	
+	/**更新
+	 * */
+	public boolean updateForm(Long id, ContractPlaceNumberRelHisForm form);
+	
+	/**获取表单数据
+	 * */
+	public ContractPlaceNumberRelHisForm getFormData(Long id);
+	
+}

+ 133 - 0
src/main/java/com/qmrb/system/service/impl/ContractPlaceNumberRelHisServiceImpl.java

@@ -0,0 +1,133 @@
+package com.qmrb.system.service.impl;
+
+
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qmrb.system.converter.ContractPlaceNumberRelHisConverter;
+import com.qmrb.system.framework.security.util.SecurityUtils;
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRelHis;
+import com.qmrb.system.pojo.entity.SysUser;
+import com.qmrb.system.pojo.form.ContractPlaceNumberRelHisForm;
+import com.qmrb.system.pojo.vo.ContractPlaceNumberRelHisVO;
+import com.qmrb.system.pojo.query.ContractPlaceNumberRelHisQuery;
+import com.qmrb.system.mapper.ContractPlaceNumberRelHisMapper;
+import com.qmrb.system.pojo.vo.ContractPlaceNumberRelVO;
+import com.qmrb.system.service.IContractPlaceNumberRelHisService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmrb.system.service.SysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.hutool.core.lang.Assert;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.Date;
+
+/**
+ * <p>
+ * 协议(客商)车牌关系 服务实现类
+ * </p>
+ *
+ * @author xue
+ * @since 2025-03-17
+ */
+@Service
+@RequiredArgsConstructor
+public class ContractPlaceNumberRelHisServiceImpl extends ServiceImpl<ContractPlaceNumberRelHisMapper, ContractPlaceNumberRelHis> implements IContractPlaceNumberRelHisService {
+
+	private final ContractPlaceNumberRelHisConverter converter;
+	@Autowired
+	SysUserService userService;
+
+	/**分页查询
+	 * */
+	@Override
+	public Page<ContractPlaceNumberRelHisVO> getPage(ContractPlaceNumberRelHisQuery queryParams) {
+		// 查询参数
+        int pageNum = queryParams.getPageNum();
+        int pageSize = queryParams.getPageSize();
+		// 获取当前登录角色
+		SysUser sysUser = userService.getOne(new LambdaQueryWrapper<SysUser>()
+						.eq(SysUser::getId, SecurityUtils.getUserId()));
+
+		// 查询数据
+		LambdaQueryWrapper<ContractPlaceNumberRelHis> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.ge(StrUtil.isNotBlank(queryParams.getStartTimeBegin()), ContractPlaceNumberRelHis::getStartTime, queryParams.getStartTimeBegin()).le(StrUtil.isNotBlank(queryParams.getStartTimeEnd()), ContractPlaceNumberRelHis::getStartTime, queryParams.getStartTimeEnd());
+		queryWrapper.ge(StrUtil.isNotBlank(queryParams.getEndTimeBegin()), ContractPlaceNumberRelHis::getEndTime, queryParams.getEndTimeBegin()).le(StrUtil.isNotBlank(queryParams.getEndTimeEnd()), ContractPlaceNumberRelHis::getEndTime, queryParams.getEndTimeEnd());
+		queryWrapper.eq(StrUtil.isNotBlank(queryParams.getPhone()), ContractPlaceNumberRelHis::getPhone, queryParams.getPhone());
+		queryWrapper.eq(("3").equals(sysUser.getUserType()), ContractPlaceNumberRelHis::getContractId, queryParams.getContractId());
+		queryWrapper.orderByDesc(ContractPlaceNumberRelHis::getUpdateTime);
+
+        // 查询数据
+        Page<ContractPlaceNumberRelHis> dictItemPage = this.page(
+                new Page<>(pageNum, pageSize),
+				queryWrapper
+        );
+
+        // 实体转换
+        Page<ContractPlaceNumberRelHisVO> pageResult = converter.entity2Page(dictItemPage);
+		for (ContractPlaceNumberRelHisVO record : pageResult.getRecords()) {
+			Date startTime = record.getStartTime();
+			Date endTime = record.getEndTime();
+			// 将 Date 转换为 LocalDateTime
+			LocalDateTime startLocalDateTime = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+			LocalDateTime endLocalDateTime = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+
+			// 计算时间差
+			Duration duration = Duration.between(startLocalDateTime, endLocalDateTime);
+
+			// 获取天、小时、分钟和秒
+			long days = duration.toDays();
+			long hours = duration.toHours() % 24;
+			long minutes = duration.toMinutes() % 60;
+			long seconds = duration.getSeconds() % 60;
+			record.setCoverTime(days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒");
+		}
+        return pageResult;
+	}
+	
+	
+
+	/**
+	 * 保存表单
+	 * */
+	@Override
+	public ContractPlaceNumberRelHisForm saveForm(@Valid ContractPlaceNumberRelHisForm form) {
+		// 实体对象转换 form->entity
+		ContractPlaceNumberRelHis entity = converter.form2Entity(form);
+        // 持久化
+        this.save(entity);
+        ContractPlaceNumberRelHisForm result = converter.entity2Form(entity);
+        return result;
+	}
+
+	/**更新
+	 * */
+	@Override
+	public boolean updateForm(Long id, ContractPlaceNumberRelHisForm form) {
+		ContractPlaceNumberRelHis entity = converter.form2Entity(form);
+		entity.setId(id);
+        boolean result = this.updateById(entity);
+        return result;
+	}
+
+	/**获取表单数据
+	 * */
+	@Override
+	public ContractPlaceNumberRelHisForm getFormData(Long id) {
+		// 获取entity
+		ContractPlaceNumberRelHis entity = this.getById(id);
+        Assert.isTrue(entity != null, "协议(客商)车牌关系不存在");
+
+        // 实体转换
+        ContractPlaceNumberRelHisForm form = converter.entity2Form(entity);
+        return form;
+	}
+	
+}

+ 22 - 1
src/main/java/com/qmrb/system/service/impl/ContractPlaceNumberRelServiceImpl.java

@@ -10,16 +10,20 @@ import com.qmrb.system.framework.security.util.SecurityUtils;
 import com.qmrb.system.pojo.entity.ContractPlaceNumberRel;
 import com.qmrb.system.pojo.entity.Contract;
 import com.qmrb.system.pojo.entity.ContractPlaceNumberRel;
+import com.qmrb.system.pojo.entity.ContractPlaceNumberRelHis;
 import com.qmrb.system.pojo.entity.SysUser;
 import com.qmrb.system.pojo.form.ContractPlaceNumberRelForm;
 import com.qmrb.system.pojo.vo.BarnRecordVO;
+import com.qmrb.system.pojo.vo.ContractPlaceNumberRelHisVO;
 import com.qmrb.system.pojo.vo.ContractPlaceNumberRelVO;
 import com.qmrb.system.pojo.query.ContractPlaceNumberRelQuery;
 import com.qmrb.system.mapper.ContractPlaceNumberRelMapper;
+import com.qmrb.system.service.IContractPlaceNumberRelHisService;
 import com.qmrb.system.service.IContractPlaceNumberRelService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmrb.system.service.IContractService;
 import com.qmrb.system.service.SysUserService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -52,6 +56,8 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
 
     @Autowired
     IContractService contractService;
+    @Autowired
+    IContractPlaceNumberRelHisService contractPlaceNumberRelHisService;
 
     /**
      * 分页查询
@@ -105,7 +111,14 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
         // 实体对象转换 form->entity
         ContractPlaceNumberRel entity = converter.form2Entity(form);
         // 持久化
-        this.save(entity);
+        boolean save = this.save(entity);
+        if (save) {
+            // 更新历史记录表
+            ContractPlaceNumberRelHis contractPlaceNumberRelHis = new ContractPlaceNumberRelHis();
+            BeanUtils.copyProperties(form,contractPlaceNumberRelHis,"id");
+            contractPlaceNumberRelHis.setStatus("3");//0停用1启用 2到期 3新增 4删除 5修改
+            contractPlaceNumberRelHisService.save(contractPlaceNumberRelHis);
+        }
         ContractPlaceNumberRelForm result = converter.entity2Form(entity);
         return result;
     }
@@ -118,6 +131,14 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
         ContractPlaceNumberRel entity = converter.form2Entity(form);
         entity.setId(id);
         boolean result = this.updateById(entity);
+        if (result){
+            // 更新历史记录表
+            ContractPlaceNumberRelHis contractPlaceNumberRelHis = new ContractPlaceNumberRelHis();
+            BeanUtils.copyProperties(form,contractPlaceNumberRelHis,"id");
+            contractPlaceNumberRelHis.setStatus(form.getUpdateStatus());//0停用1启用 2到期 3新增 4删除 5修改
+            contractPlaceNumberRelHisService.save(contractPlaceNumberRelHis);
+        }
+
         return result;
     }
 

+ 5 - 0
src/main/resources/mapper/ContractPlaceNumberRelHisMapper.xml

@@ -0,0 +1,5 @@
+<?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.qmrb.system.mapper.ContractPlaceNumberRelHisMapper">
+
+</mapper>