2025年5月6日09:37:50

main
liuao 3 weeks ago
parent f4af67b116
commit 3f0dccca62
  1. 5
      src/main/java/com/zilber/boot/Constants/HttpStatus.java
  2. 82
      src/main/java/com/zilber/boot/module/booking/controller/BookingController.java
  3. 62
      src/main/java/com/zilber/boot/module/booking/dao/BookingMapper.java
  4. 34
      src/main/java/com/zilber/boot/module/booking/enums/ApprovalStatus.java
  5. 32
      src/main/java/com/zilber/boot/module/booking/enums/BookingType.java
  6. 33
      src/main/java/com/zilber/boot/module/booking/enums/InspectionMethod.java
  7. 41
      src/main/java/com/zilber/boot/module/booking/form/ApprovalForm.java
  8. 24
      src/main/java/com/zilber/boot/module/booking/form/BookingForm.java
  9. 115
      src/main/java/com/zilber/boot/module/booking/form/add/BookingAF.java
  10. 39
      src/main/java/com/zilber/boot/module/booking/form/modify/BookingMF.java
  11. 113
      src/main/java/com/zilber/boot/module/booking/form/pr/BookingPR.java
  12. 11
      src/main/java/com/zilber/boot/module/booking/group/Me.java
  13. 11
      src/main/java/com/zilber/boot/module/booking/group/Reject.java
  14. 167
      src/main/java/com/zilber/boot/module/booking/pojo/Booking.java
  15. 41
      src/main/java/com/zilber/boot/module/booking/service/BookingService.java
  16. 273
      src/main/java/com/zilber/boot/module/booking/service/impl/BookingServiceImpl.java
  17. 126
      src/main/java/com/zilber/boot/module/booking/vo/BookingVO.java
  18. 16
      src/main/java/com/zilber/boot/utils/AjaxResult.java
  19. 25
      src/main/java/com/zilber/boot/utils/InternalResult.java
  20. 47
      src/main/java/com/zilber/boot/utils/ValidatorUtils.java
  21. 115
      src/main/java/com/zilber/boot/utils/page/PageUtils.java
  22. 35
      src/main/java/com/zilber/boot/utils/page/Pageable.java

@ -11,7 +11,10 @@ public class HttpStatus
* 操作成功
*/
public static final int SUCCESS = 200;
/**
* 操作失败
*/
public static final int FAILED = -1;
/**
* 对象创建成功
*/

@ -0,0 +1,82 @@
package com.zilber.boot.module.booking.controller;
import com.zilber.boot.module.booking.form.ApprovalForm;
import com.zilber.boot.module.booking.form.add.BookingAF;
import com.zilber.boot.module.booking.form.modify.BookingMF;
import com.zilber.boot.module.booking.form.pr.BookingPR;
import com.zilber.boot.module.booking.service.BookingService;
import com.zilber.boot.utils.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* 预约记录(Booking)表控制层
*
* @author liuao
* @since 2025-04-25 15:50:18
*/
@RestController
@RequestMapping("/booking")
@Api(tags = "预约记录管理")
public class BookingController
{
@Autowired
private BookingService service;
@PostMapping
@ApiOperation("添加预约记录")
public AjaxResult addBooking(@RequestBody BookingAF form)
{
return new AjaxResult(service.addBooking(form));
}
@PutMapping
@ApiOperation("修改预约记录信息")
public AjaxResult updBooking(@RequestBody BookingMF form)
{
return new AjaxResult(service.updBooking(form));
}
@PutMapping("/approve")
@ApiOperation("审批预约")
public AjaxResult approve(@RequestBody ApprovalForm form)
{
return new AjaxResult(service.approve(form));
}
@GetMapping("/{id}")
@ApiOperation("获取单挑预约信息")
public AjaxResult getBooking(@PathVariable Serializable id)
{
return AjaxResult.success(service.getBooking(id));
}
@GetMapping
@ApiOperation("分页请求")
public AjaxResult getPage(BookingPR pr)
{
return AjaxResult.success(service.getPage(pr));
}
@DeleteMapping
@ApiOperation("删除单条预约记录")
public AjaxResult deleteBooking(@RequestBody BookingMF form)
{
return new AjaxResult(service.deleteBooking(form));
}
@DeleteMapping("/s")
@ApiOperation("批量删除预约记录")
public AjaxResult deleteBookings(@RequestBody List<Serializable> idList)
{
return new AjaxResult(service.deleteBookings(idList));
}
}

@ -0,0 +1,62 @@
package com.zilber.boot.module.booking.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zilber.boot.module.booking.pojo.Booking;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 预约记录(Booking)表数据库访问层
*
* @author liuao
* @since 2025-04-25 15:49:54
*/
@Mapper
@Repository
public interface BookingMapper
extends BaseMapper<Booking>
{
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
Booking queryById(String id);
/**
* 分页查询
*
* @param booking 筛选条件
* @return 查询结果
*/
List<Booking> queryList(Booking booking);
/**
* 新增数据
*
* @param booking 实例对象
* @return 实例对象
*/
int addBooking(Booking booking);
/**
* 修改数据
*
* @param booking 实例对象
* @return 实例对象
*/
int editBooking(Booking booking);
/**
* 通过主键删除数据
*
* @return 是否成功
*/
int deleteBooking(String[] ids);
}

@ -0,0 +1,34 @@
package com.zilber.boot.module.booking.enums;
/**
* @Author LJX
* @TIME 2025-04-28 10:02
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
public enum ApprovalStatus
{
NONE("0"),//待批
PASS("1"),//通过
REJECT("2"),//驳回
;
private String code;
ApprovalStatus(String code) {
this.code = code;
}
ApprovalStatus() {
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}

@ -0,0 +1,32 @@
package com.zilber.boot.module.booking.enums;
/**
* @Author LJX
* @TIME 2025-04-27 11:37
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
public enum BookingType
{
PRT("1"), //省招检测
ME("2"),//厂家委托
;
private String code;
BookingType() {
}
BookingType(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}

@ -0,0 +1,33 @@
package com.zilber.boot.module.booking.enums;
/**
* @Author LJX
* @TIME 2025-04-27 14:49
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
public enum InspectionMethod
{
FI("1"),//全检
SI("2"),//抽检
;
private String code;
InspectionMethod() {
}
InspectionMethod(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}

@ -0,0 +1,41 @@
package com.zilber.boot.module.booking.form;
import com.zilber.boot.module.booking.enums.ApprovalStatus;
import com.zilber.boot.module.booking.group.Reject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Author LJX
* @TIME 2025-04-28 10:00
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约审批表单")
public class ApprovalForm
{
@ApiModelProperty("id")
@NotNull(message = "id不能为空")
private Long id;
@ApiModelProperty("审批状态(0-待批,1-通过,2-驳回)")
@NotNull(message = "审批状态不能为空")
private ApprovalStatus approvalStatus;
@ApiModelProperty("驳回理由")
@NotNull(message = "驳回理由不能为空", groups = Reject.class)
@NotBlank(message = "驳回理由不能为空", groups = Reject.class)
private String rejectReason;
}

@ -0,0 +1,24 @@
package com.zilber.boot.module.booking.form;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author LJX
* @TIME 2025-04-27 9:43
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约记录表单")
public class BookingForm
{
}

@ -0,0 +1,115 @@
package com.zilber.boot.module.booking.form.add;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zilber.boot.module.booking.enums.BookingType;
import com.zilber.boot.module.booking.enums.InspectionMethod;
import com.zilber.boot.module.booking.form.BookingForm;
import com.zilber.boot.module.booking.group.Me;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @Author LJX
* @TIME 2025-04-27 9:12
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约记录添加表单")
public class BookingAF
extends BookingForm
{
/**
* 厂家id
*/
@ApiModelProperty(value = "厂家id")
@NotNull(message = "厂家id不能为空")
private Long factoryId;
/**
* 预约类型1-省招检测2-厂家委托
*/
@ApiModelProperty(value = "预约类型(1-省招检测,2-厂家委托)")
@NotNull(message = "预约类型不能为空")
private BookingType bookingType;
/**
* 检测方式1-全检2-抽检
*/
@ApiModelProperty(value = "检测方式(1-全检,2-抽检)")
@NotNull(message = "检测方式不能为空")
private InspectionMethod inspectionMethod;
/**
* 设备数量
*/
@ApiModelProperty(value = "设备数量")
@NotNull(message = "设备数量不能为空")
@Min(value = 1, message = "设备数量不能小于0")
private Integer equipNum;
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型")
@NotNull(message = "设备类型不能为空")
@NotBlank(message = "设备类型不能为空")
private String equipType;
/**
* 预约检测日期
*/
@ApiModelProperty(value = "预约检测日期")
@NotNull(message = "预约检测日期不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date inspectionDate;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
/**
* 中标通知书路径
*/
@ApiModelProperty(value = "中标通知书路径")
@NotNull(message = "中标通知书不能为空", groups = Me.class)
@NotBlank(message = "中标通知书不能为空", groups = Me.class)
private String loaUrl;
/**
* 地市公司
*/
@ApiModelProperty(value = "地市公司")
@NotNull(message = "地市公司不能为空", groups = Me.class)
@NotBlank(message = "地市公司不能为空", groups = Me.class)
private String localOffice;
/**
* 中标类型
*/
@ApiModelProperty(value = "中标类型")
@NotNull(message = "中标类型不能为空", groups = Me.class)
@NotBlank(message = "中标类型不能为空", groups = Me.class)
private String loaType;
/**
* 涉及工程类型
*/
@ApiModelProperty(value = "涉及工程项目")
@NotNull(message = "涉及工程项目不能为空", groups = Me.class)
@NotBlank(message = "涉及工程项目不能为空", groups = Me.class)
private String projectName;
/**
* 招标批次
*/
@ApiModelProperty(value = "招标批次")
@NotNull(message = "招标批次不能为空", groups = Me.class)
private Integer bidBatch;
}

@ -0,0 +1,39 @@
package com.zilber.boot.module.booking.form.modify;
import com.zilber.boot.module.booking.form.BookingForm;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
/**
* @Author LJX
* @TIME 2025-04-27 9:40
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约记录修改表单")
public class BookingMF
extends BookingForm
{
/**
* id
*/
@ApiModelProperty(value = "id")
@NotBlank(message = "id不能为空")
private Long id;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
}

@ -0,0 +1,113 @@
package com.zilber.boot.module.booking.form.pr;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zilber.boot.utils.page.Pageable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Author LJX
* @TIME 2025-04-27 9:49
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约记录分页请求")
public class BookingPR
extends Pageable
{
/**
* 厂家id
*/
@ApiModelProperty(value = "厂家id")
private Long factoryId;
/**
* 预约类型1-省招检测2-厂家委托
*/
@ApiModelProperty(value = "预约类型(1-省招检测,2-厂家委托)")
private String bookingType;
/**
* 检测方式1-全检2-抽检
*/
@ApiModelProperty(value = "检测方式(1-全检,2-抽检)")
private String inspectionMethod;
/**
* 设备数量
*/
@ApiModelProperty(value = "设备数量")
private Integer equipNum;
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型")
private String equipType;
/**
* 预约检测开始日期
*/
@ApiModelProperty(value = "预约检测开始日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date inspectionDateStart;
/**
* 预约检测结束日期
*/
@ApiModelProperty(value = "预约检测结束日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date inspectionDateEnd;
/**
* 地市公司
*/
@ApiModelProperty(value = "地市公司")
private String localOffice;
/**
* 中标类型
*/
@ApiModelProperty(value = "中标类型")
private String loaType;
/**
* 涉及工程类型
*/
@ApiModelProperty(value = "涉及工程名称")
private String projectName;
/**
* 招标批次
*/
@ApiModelProperty(value = "招标批次")
private Integer bidBatch;
/**
* 审批状态
*/
@ApiModelProperty("审批状态(0-待批,1-通过,2-驳回)")
private String approvalStatus;
/**
* 审批开始时间
*/
@ApiModelProperty("审批开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date approveTimeStart;
/**
* 审批结束时间
*/
@ApiModelProperty("审批结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date approveTimeEnd;
/**
* 创建者id
*/
@ApiModelProperty(value = "创建者id")
private Long creatorId;
}

@ -0,0 +1,11 @@
package com.zilber.boot.module.booking.group;
/**
* @Author LJX
* @TIME 2025-04-27 11:47
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
public interface Me {
}

@ -0,0 +1,11 @@
package com.zilber.boot.module.booking.group;
/**
* @Author LJX
* @TIME 2025-04-28 10:00
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
public interface Reject {
}

@ -0,0 +1,167 @@
package com.zilber.boot.module.booking.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zilber.boot.module.booking.enums.ApprovalStatus;
import com.zilber.boot.module.booking.form.add.BookingAF;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
/**
* 预约记录(Booking)实体类
*
* @author liuao
* @since 2025-04-25 15:49:55
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约记录")
@TableName("tc_booking")
public class Booking implements Serializable
{
private static final long serialVersionUID = -37467439775541824L;
/**
* id
*/
@ApiModelProperty(value = "id")
@TableId(type = IdType.AUTO)
private Long id;
/**
* 厂家id
*/
@ApiModelProperty(value = "厂家id")
private Long factoryId;
/**
* 预约类型1-省招检测2-厂家委托
*/
@ApiModelProperty(value = "预约类型(1-省招检测,2-厂家委托)")
private String bookingType;
/**
* 检测方式1-全检2-抽检
*/
@ApiModelProperty(value = "检测方式(1-全检,2-抽检)")
private String inspectionMethod;
/**
* 设备数量
*/
@ApiModelProperty(value = "设备数量")
private Integer equipNum;
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型")
private String equipType;
/**
* 预约检测日期
*/
@ApiModelProperty(value = "预约检测日期")
private Date inspectionDate;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
/**
* 中标通知书路径
*/
@ApiModelProperty(value = "中标通知书路径")
private String loaUrl;
/**
* 地市公司
*/
@ApiModelProperty(value = "地市公司")
private String localOffice;
/**
* 中标类型
*/
@ApiModelProperty(value = "中标类型")
private String loaType;
/**
* 涉及工程类型
*/
@ApiModelProperty(value = "涉及工程类型")
private String projectName;
/**
* 招标批次
*/
@ApiModelProperty(value = "招标批次")
private Integer bidBatch;
/**
* 审批状态
*/
@ApiModelProperty("审批状态(0-待批,1-通过,2-驳回)")
private String approvalStatus;
/**
* 驳回理由
*/
@ApiModelProperty("驳回理由")
private String rejectReason;
/**
* 审批时间
*/
@ApiModelProperty("审批时间")
private Date approveTime;
/**
* 检测状态0-待检1-通过2-不通过
*/
@ApiModelProperty("检测状态(0-待检,1-通过,2-不通过)")
private String inspectionStatus;
/**
* 检测时间
*/
@ApiModelProperty("检测时间")
private Date inspectionExeDate;
/**
* 创建者id
*/
@ApiModelProperty(value = "创建者id")
private Long creatorId;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date creationTime;
/**
* 修改人id
*/
@ApiModelProperty(value = "修改人id")
private Long updaterId;
/**
* 修改时间
*/
@ApiModelProperty(value = "修改时间")
private Date updateTime;
public Booking(BookingAF form, Long userId)
{
Calendar instance = Calendar.getInstance();
Date now = new Date();
BeanUtils.copyProperties(form, this);
this.bookingType = form.getBookingType().getCode();
this.inspectionMethod = form.getInspectionMethod().getCode();
instance.setTime(form.getInspectionDate());
instance.set(Calendar.HOUR_OF_DAY, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
this.inspectionDate = instance.getTime();
//预约审批状态为待批
this.approvalStatus = ApprovalStatus.NONE.getCode();
//
this.creatorId = userId;
this.updaterId = userId;
this.creationTime = now;
this.updateTime = now;
}
}

@ -0,0 +1,41 @@
package com.zilber.boot.module.booking.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zilber.boot.module.booking.form.ApprovalForm;
import com.zilber.boot.module.booking.form.add.BookingAF;
import com.zilber.boot.module.booking.form.modify.BookingMF;
import com.zilber.boot.module.booking.form.pr.BookingPR;
import com.zilber.boot.module.booking.pojo.Booking;
import com.zilber.boot.module.booking.vo.BookingVO;
import com.zilber.boot.utils.InternalResult;
import com.zilber.boot.utils.page.PageUtils;
import java.io.Serializable;
import java.util.List;
/**
* 预约记录(Booking)表服务接口
*
* @author liuao
* @since 2025-04-25 15:49:58
*/
public interface BookingService
extends IService<Booking>
{
InternalResult addBooking(BookingAF form);
InternalResult updBooking(BookingMF form);
InternalResult approve(ApprovalForm form);
BookingVO getBooking(Serializable id);
PageUtils getPage(BookingPR pr);
InternalResult deleteBooking(BookingMF form);
InternalResult deleteBookings(List<Serializable> idList);
}

@ -0,0 +1,273 @@
package com.zilber.boot.module.booking.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zilber.boot.Constants.HttpStatus;
import com.zilber.boot.module.booking.dao.BookingMapper;
import com.zilber.boot.module.booking.enums.ApprovalStatus;
import com.zilber.boot.module.booking.enums.BookingType;
import com.zilber.boot.module.booking.form.ApprovalForm;
import com.zilber.boot.module.booking.form.add.BookingAF;
import com.zilber.boot.module.booking.form.modify.BookingMF;
import com.zilber.boot.module.booking.form.pr.BookingPR;
import com.zilber.boot.module.booking.group.Me;
import com.zilber.boot.module.booking.group.Reject;
import com.zilber.boot.module.booking.pojo.Booking;
import com.zilber.boot.module.booking.service.BookingService;
import com.zilber.boot.module.booking.vo.BookingVO;
import com.zilber.boot.utils.InternalResult;
import com.zilber.boot.utils.SecurityUtils;
import com.zilber.boot.utils.ValidatorUtils;
import com.zilber.boot.utils.page.PageUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 预约记录(Booking)表服务实现类
*
* @author liuao
* @since 2025-04-25 15:50:01
*/
@Service
public class BookingServiceImpl
extends ServiceImpl<BookingMapper, Booking>
implements BookingService
{
/**
* 申请预约
* @param form 预约表单
* @return 处理结果
*/
@Override
public InternalResult addBooking(BookingAF form)
{
ValidatorUtils.validateEntity(form);
//如果是省招,则校验中标信息
if ( form.getBookingType().equals(BookingType.PRT))
{
ValidatorUtils.validateEntity(form, Me.class);
}
Long userId = SecurityUtils.getUserId();
Booking booking = new Booking(form, userId);
this.save(booking);
return new InternalResult(HttpStatus.SUCCESS, "预约申请成功");
}
/**
* 修改预约信息
* @param form 修改表单
* @return 修改结果
*/
@Override
public InternalResult updBooking(BookingMF form)
{
ValidatorUtils.validateEntity(form);
Booking byId = this.getById(form.getId());
if ( byId != null)
{
BeanUtils.copyProperties(form, byId);
this.updateById(byId);
}
return new InternalResult(HttpStatus.SUCCESS, "预约信息修改成功");
}
/**
* 审批预约
* @param form 预约表单
* @return 处理结果
*/
@Override
public InternalResult approve(ApprovalForm form)
{
ValidatorUtils.validateEntity(form);
if ( form.getApprovalStatus().equals(ApprovalStatus.NONE))
{
return new InternalResult(HttpStatus.SUCCESS, "未作出审批");
}
else if ( form.getApprovalStatus().equals(ApprovalStatus.REJECT))
{
ValidatorUtils.validateEntity(form, Reject.class);
}
Booking byId = this.getById(form.getId());
if ( byId != null)
{
byId.setApprovalStatus(form.getApprovalStatus().getCode());
byId.setRejectReason(form.getRejectReason());
byId.setApproveTime(new Date());
this.updateById(byId);
}
return new InternalResult(HttpStatus.SUCCESS, "审批成功");
}
/**
* 获取单条预约信息
* @param id id
* @return 单条预约记录
*/
@Override
public BookingVO getBooking(Serializable id)
{
Booking byId = this.getById(id);
if ( byId != null)
{
return new BookingVO(byId);
}
return null;
}
/**
* 分页查询
* @param pr 查询条件
* @return 分页列表
*/
@Override
public PageUtils getPage(BookingPR pr)
{
LambdaQueryWrapper<Booking> wrapper = this.wrapper(pr);
IPage<Booking> page
= page(new Page(pr.getPageNo(), pr.getPageSize()), wrapper);
if ( CollectionUtils.isNotEmpty(page.getRecords()))
{
return new PageUtils(
page.getRecords()
.stream()
.map(BookingVO::new)
.collect(Collectors.toList()),
(int) page.getTotal(),
(int) page.getSize(),
(int) page.getCurrent()
);
}
return new PageUtils(page);
}
/**
* 删除单条预约记录
* @param form 表单
* @return 处理结果
*/
@Override
public InternalResult deleteBooking(BookingMF form)
{
ValidatorUtils.validateEntity(form);
this.removeById(form.getId());
return new InternalResult(HttpStatus.SUCCESS, "预约记录删除成功");
}
/**
* 删除多条预约记录
* @param idList id列表
* @return 处理结果
*/
@Override
public InternalResult deleteBookings(List<Serializable> idList)
{
if (CollectionUtils.isNotEmpty(idList))
{
LambdaQueryWrapper<Booking> wrapper = new LambdaQueryWrapper<>();
wrapper.in(Booking::getId, idList);
this.remove(wrapper);
}
return new InternalResult(HttpStatus.SUCCESS, "预约记录删除成功");
}
/**
* 根据查询分页构造查询包装器并返回
* @param pr 查询条件
* @return 查询包装器
*/
private LambdaQueryWrapper<Booking> wrapper(BookingPR pr)
{
LambdaQueryWrapper<Booking> wrapper = new LambdaQueryWrapper<>();
if ( pr.getFactoryId() != null)
{
wrapper.eq(Booking::getFactoryId, pr.getFactoryId());
}
if (StringUtils.isNotBlank(pr.getBookingType()))
{
wrapper.eq(Booking::getBookingType, pr.getBookingType());
}
if ( StringUtils.isNotBlank(pr.getInspectionMethod()))
{
wrapper.eq(Booking::getInspectionMethod, pr.getInspectionMethod());
}
if ( pr.getEquipNum() != null)
{
wrapper.eq(Booking::getEquipNum, pr.getEquipNum());
}
if ( StringUtils.isNotBlank(pr.getEquipType()))
{
wrapper.eq(Booking::getEquipType, pr.getEquipType());
}
Calendar c = Calendar.getInstance();
if ( pr.getInspectionDateStart() != null)
{
c.setTime(pr.getInspectionDateStart());
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
wrapper.ge(Booking::getInspectionDate, c.getTime());
}
if ( pr.getInspectionDateEnd() != null)
{
c.setTime(pr.getInspectionDateEnd());
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
wrapper.le(Booking::getInspectionDate, c.getTime());
}
if ( StringUtils.isNotBlank(pr.getLocalOffice()))
{
wrapper.like(Booking::getLocalOffice, pr.getLocalOffice());
}
if ( StringUtils.isNotBlank(pr.getLoaType()))
{
wrapper.eq(Booking::getLoaType, pr.getLoaType());
}
if (StringUtils.isNotBlank(pr.getProjectName()))
{
wrapper.like(Booking::getProjectName, pr.getProjectName());
}
if ( pr.getBidBatch() != null)
{
wrapper.eq(Booking::getBidBatch, pr.getBidBatch());
}
if ( pr.getCreatorId() != null)
{
wrapper.eq(Booking::getCreatorId, pr.getCreatorId());
}
if ( StringUtils.isNotBlank(pr.getApprovalStatus()))
{
wrapper.eq(Booking::getApprovalStatus, pr.getApprovalStatus());
}
if ( pr.getApproveTimeStart() != null)
{
c.setTime(pr.getApproveTimeStart());
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
wrapper.ge(Booking::getApproveTime, c.getTime());
}
if ( pr.getApproveTimeEnd() != null)
{
c.setTime(pr.getInspectionDateEnd());
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
wrapper.le(Booking::getApproveTime, c.getTime());
}
return wrapper;
}
}

@ -0,0 +1,126 @@
package com.zilber.boot.module.booking.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zilber.boot.module.booking.pojo.Booking;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Author LJX
* @TIME 2025-04-27 9:57
* @PROJECT termicheck-platform
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("预约记录返回")
public class BookingVO
{
/**
* id
*/
@ApiModelProperty(value = "id")
private Long id;
/**
* 厂家id
*/
@ApiModelProperty(value = "厂家id")
private Long factoryId;
/**
* 预约类型1-省招检测2-厂家委托
*/
@ApiModelProperty(value = "预约类型(1-省招检测,2-厂家委托)")
private String bookingType;
/**
* 检测方式1-全检2-抽检
*/
@ApiModelProperty(value = "检测方式(1-全检,2-抽检)")
private String inspectionMethod;
/**
* 设备数量
*/
@ApiModelProperty(value = "设备数量")
private Integer equipNum;
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型")
private String equipType;
/**
* 预约检测日期
*/
@ApiModelProperty(value = "预约检测日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date inspectionDate;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
/**
* 中标通知书路径
*/
@ApiModelProperty(value = "中标通知书路径")
private String loaUrl;
/**
* 地市公司
*/
@ApiModelProperty(value = "地市公司")
private String localOffice;
/**
* 中标类型
*/
@ApiModelProperty(value = "中标类型")
private String loaType;
/**
* 涉及工程类型
*/
@ApiModelProperty(value = "涉及工程类型")
private String projectName;
/**
* 招标批次
*/
@ApiModelProperty(value = "招标批次")
private Integer bidBatch;
/**
* 创建者id
*/
@ApiModelProperty(value = "创建者id")
private Long creatorId;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date creationTime;
/**
* 修改人id
*/
@ApiModelProperty(value = "修改人id")
private Long updaterId;
/**
* 修改时间
*/
@ApiModelProperty(value = "修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
public BookingVO(Booking booking)
{
BeanUtils.copyProperties(booking, this);
}
}

@ -59,6 +59,22 @@ public class AjaxResult extends HashMap<String, Object>
}
}
public AjaxResult(InternalResult ir) {
super.put(CODE_TAG, ir.getCode());
switch (ir.getCode()) {
case HttpStatus.SUCCESS:
super.put(MSG_TAG, "操作成功");
break;
case HttpStatus.FAILED:
super.put(MSG_TAG, "操作失败");
break;
}
if (StringUtils.isNotNull(ir.getData()))
{
super.put(DATA_TAG, ir.getData());
}
}
/**
* 返回成功消息
*

@ -0,0 +1,25 @@
package com.zilber.boot.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author LJX
* @TIME 2023-11-02 14:50
* @PROJECT LFVCManager
* created by Intellij IDEA
* Description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class InternalResult {
private Integer code;
private Object data;
}

@ -0,0 +1,47 @@
package com.zilber.boot.utils;
import com.zilber.boot.exception.ServiceException;
import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.validation.beanvalidation.MessageSourceResourceBundleLocator;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Locale;
import java.util.Set;
/**
* hibernate-validator校验工具类
* 参考文档http://docs.jboss.org/hibernate/validator/6.0/reference/en-US/html_single/
*/
public class ValidatorUtils {
private static ResourceBundleMessageSource getMessageSource() {
ResourceBundleMessageSource bundleMessageSource = new ResourceBundleMessageSource();
bundleMessageSource.setDefaultEncoding("UTF-8");
bundleMessageSource.setBasenames("i18n/validation");
return bundleMessageSource;
}
/**
* 校验对象
*
* @param object 待校验对象
* @param groups 待校验的组
*/
public static void validateEntity(Object object, Class<?>... groups)
throws ServiceException {
Locale.setDefault(LocaleContextHolder.getLocale());
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(
new ResourceBundleMessageInterpolator(new MessageSourceResourceBundleLocator(getMessageSource())))
.buildValidatorFactory().getValidator();
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
if (!constraintViolations.isEmpty()) {
ConstraintViolation<Object> constraint = constraintViolations.iterator().next();
throw new ServiceException(constraint.getMessage());
}
}
}

@ -0,0 +1,115 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
* <p>
* https://www.renren.io
* <p>
* 版权所有侵权必究
*/
package com.zilber.boot.utils.page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import java.io.Serializable;
import java.util.List;
public class PageUtils implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 总记录数
*/
private int total;
/**
* 每页记录数
*/
private int pageSize;
/**
* 总页数
*/
private int totalPage;
/**
* 当前页数
*/
private int currPage;
/**
* 列表数据
*/
private List<?> list;
/**
* 分页
* @param list 列表数据
* @param totalCount 总记录数
* @param pageSize 每页记录数
* @param currPage 当前页数
*/
public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
this.list = list;
this.total = totalCount;
this.pageSize = pageSize;
this.currPage = currPage;
this.totalPage = (int) Math.ceil((double) totalCount / pageSize);
}
/**
* 分页
*/
public PageUtils(IPage<?> page) {
this.list = page.getRecords();
this.total = (int) page.getTotal();
this.pageSize = (int) page.getSize();
this.currPage = (int) page.getCurrent();
this.totalPage = (int) page.getPages();
}
public PageUtils(PageInfo<?> page) {
this.list = page.getList();
this.total = (int) page.getTotal();
this.pageSize = (int) page.getSize();
this.currPage = (int) page.getPageNum();
this.totalPage = (int) page.getPages();
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
}

@ -0,0 +1,35 @@
package com.zilber.boot.utils.page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
@ApiModel("分页查询")
public class Pageable {
@NotNull(message = "当前页数不能为空")
@ApiModelProperty(value = "当前页数", required = true)
private Integer pageNo = 1;
@NotNull(message = "每页记录数不能为空")
@ApiModelProperty(value = "每页记录数", required = true)
private Integer pageSize = 9999999;
public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
}
Loading…
Cancel
Save