From a8f38885f17c0723f1cbb83e4af4f7fb606cadd6 Mon Sep 17 00:00:00 2001 From: wany <13995595726@qq.com> Date: Wed, 9 Oct 2024 11:36:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DispatchRecordController.java | 73 ++++++++++++ .../xyt/entity/so/DispatchRecordPageSo.java | 33 ++++++ .../xyt/entity/vo/DispatchRecordVo.java | 62 +++++++++++ .../xyt/mapper/DispatchRecordMapper.java | 15 +++ .../project/xyt/model/DispatchRecord.java | 105 ++++++++++++++++++ .../xyt/service/DispatchRecordService.java | 61 ++++++++++ 6 files changed, 349 insertions(+) create mode 100644 src/main/java/com/gunshi/project/xyt/controller/DispatchRecordController.java create mode 100644 src/main/java/com/gunshi/project/xyt/entity/so/DispatchRecordPageSo.java create mode 100644 src/main/java/com/gunshi/project/xyt/entity/vo/DispatchRecordVo.java create mode 100644 src/main/java/com/gunshi/project/xyt/mapper/DispatchRecordMapper.java create mode 100644 src/main/java/com/gunshi/project/xyt/model/DispatchRecord.java create mode 100644 src/main/java/com/gunshi/project/xyt/service/DispatchRecordService.java diff --git a/src/main/java/com/gunshi/project/xyt/controller/DispatchRecordController.java b/src/main/java/com/gunshi/project/xyt/controller/DispatchRecordController.java new file mode 100644 index 0000000..16583d2 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/DispatchRecordController.java @@ -0,0 +1,73 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.so.DispatchRecordPageSo; +import com.gunshi.project.xyt.model.DispatchRecord; +import com.gunshi.project.xyt.service.DispatchRecordService; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; +import java.util.List; + +/** + * 描述: 调度记录 + * author: xusan + * date: 2024-10-09 09:56:28 + */ +@Tag(name = "调度记录") +@RestController +@RequestMapping(value="/dispatchRecord") +public class DispatchRecordController { + + @Autowired + private DispatchRecordService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody DispatchRecord dto) { + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody DispatchRecord dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/del") + public R del(@RequestBody @Validated List ids) { + return R.ok(service.removeBatchByIds(ids)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated DispatchRecordPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(@RequestBody @Validated DispatchRecordPageSo page, HttpServletResponse response) { + service.export(page,response); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/DispatchRecordPageSo.java b/src/main/java/com/gunshi/project/xyt/entity/so/DispatchRecordPageSo.java new file mode 100644 index 0000000..1034956 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/DispatchRecordPageSo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.xyt.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class DispatchRecordPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="操作人名称") + private String opUserName; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeSo; + + @Schema(description="状态(0执行中 1完成)") + private Integer status; + +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/DispatchRecordVo.java b/src/main/java/com/gunshi/project/xyt/entity/vo/DispatchRecordVo.java new file mode 100644 index 0000000..8a9fd92 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/DispatchRecordVo.java @@ -0,0 +1,62 @@ +package com.gunshi.project.xyt.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +public class DispatchRecordVo { + + @Schema(description="调度开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @ExcelProperty({"调度开始时间"}) + @ColumnWidth(20) + @DateTimeFormat(DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date startTime; + + @Schema(description="调度结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @ExcelProperty({"调度结束时间"}) + @ColumnWidth(20) + @DateTimeFormat(DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date endTime; + + @Schema(description="状态(0执行中 1完成)") + @ExcelIgnore + private Integer status; + + @ExcelProperty({"调度原因"}) + @ColumnWidth(50) + private String dispatchReason; + + @Schema(description="调度详情") + @ExcelProperty({"调度详情"}) + @ColumnWidth(50) + private String dispatchDetail; + + @Schema(description="操作人") + @ExcelProperty({"操作人"}) + private String opUserName; + + @Schema(description="调度状态") + @ExcelProperty({"调度状态"}) + private String statusName; + + public void setStatus(Integer status){ + this.status = status; + if (this.status == 0) { + this.statusName = "执行中"; + } else if (this.status == 1) { + this.statusName = "完成"; + } + } +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/DispatchRecordMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/DispatchRecordMapper.java new file mode 100644 index 0000000..6e1582d --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/DispatchRecordMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.DispatchRecord; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 调度记录 + * author: xusan + * date: 2024-10-09 09:56:28 + */ +@Mapper +public interface DispatchRecordMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/DispatchRecord.java b/src/main/java/com/gunshi/project/xyt/model/DispatchRecord.java new file mode 100644 index 0000000..ed968e1 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/DispatchRecord.java @@ -0,0 +1,105 @@ +package com.gunshi.project.xyt.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 调度记录 +* author: xusan +* date: 2024-10-09 09:56:28 +*/ +@Schema(description="调度记录") +@Data +@TableName("public.dispatch_record") +public class DispatchRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 调度开始时间 + */ + @TableField(value="start_time") + @Schema(description="调度开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startTime; + + /** + * 调度结束时间 + */ + @TableField(value="end_time") + @Schema(description="调度结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date endTime; + + /** + * 状态(0执行中 1完成) + */ + @TableField(value="status") + @Schema(description="状态(0执行中 1完成)") + private Integer status; + + /** + * 操作人id + */ + @TableField(value="op_user_id") + @Schema(description="操作人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long opUserId; + + /** + * 操作人名称 + */ + @TableField(value="op_user_name") + @Schema(description="操作人名称") + @Size(max = 100,message = "操作人名称最大长度要小于 100") + private String opUserName; + + /** + * 调度原因 + */ + @TableField(value="dispatch_reason") + @Schema(description="调度原因") + @Size(max = 500,message = "dispatch_reason最大长度要小于 500") + private String dispatchReason; + + /** + * 调度详情 + */ + @TableField(value="dispatch_detail") + @Schema(description="调度详情") + @Size(max = 500,message = "dispatch_detail最大长度要小于 500") + private String dispatchDetail; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/service/DispatchRecordService.java b/src/main/java/com/gunshi/project/xyt/service/DispatchRecordService.java new file mode 100644 index 0000000..b73b049 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/DispatchRecordService.java @@ -0,0 +1,61 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.xyt.entity.so.DispatchRecordPageSo; +import com.gunshi.project.xyt.entity.vo.DispatchRecordVo; +import com.gunshi.project.xyt.mapper.DispatchRecordMapper; +import com.gunshi.project.xyt.model.DispatchRecord; +import com.gunshi.project.xyt.util.ExcelUtil; +import com.gunshi.project.xyt.util.MyBeanUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 调度记录 + * author: xusan + * date: 2024-10-09 09:56:28 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class DispatchRecordService extends ServiceImpl +{ + + public Page pageQuery(DispatchRecordPageSo page) { + return this.page(page.getPageSo().toPage(),commonWrapper(page)); + } + + private LambdaQueryWrapper commonWrapper(DispatchRecordPageSo page){ + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if(StringUtils.isNotEmpty(page.getOpUserName())){ + wrapper.like(DispatchRecord::getOpUserName,page.getOpUserName()); + } + if(page.getStatus() != null){ + wrapper.eq(DispatchRecord::getStatus,page.getStatus()); + } + if(page.getDateTimeSo() != null && page.getDateTimeSo().getStart() != null){ + wrapper.gt(DispatchRecord::getStartTime,page.getDateTimeSo().getStart()); + } + if(page.getDateTimeSo() != null && page.getDateTimeSo().getEnd() != null){ + wrapper.lt(DispatchRecord::getStartTime,page.getDateTimeSo().getEnd()); + } + wrapper.orderByDesc(DispatchRecord::getCreateTime); + return wrapper; + } + + public void export(DispatchRecordPageSo page, HttpServletResponse response) { + List list = this.list(commonWrapper(page)); + List dispatchRecordVos = MyBeanUtil.collectionCopy(list, DispatchRecordVo.class); + ExcelUtil.exportExcel(dispatchRecordVos,"调度指令", DispatchRecordVo.class,response,"调度指令"); + } +} + +