From 06aa6ff96625a644bc0a20730805f631d8d0738e Mon Sep 17 00:00:00 2001 From: wany <13995595726@qq.com> Date: Tue, 20 Aug 2024 15:58:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=A4=A7=E4=BA=8B=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProjectEventsController.java | 68 +++++++++++ .../xyt/entity/so/CommonDataPageSo.java | 30 +++++ .../xyt/mapper/ProjectEventsMapper.java | 10 ++ .../project/xyt/model/ProjectEvents.java | 71 +++++++++++ .../xyt/service/ProjectEventsService.java | 112 ++++++++++++++++++ 5 files changed, 291 insertions(+) create mode 100644 src/main/java/com/gunshi/project/xyt/controller/ProjectEventsController.java create mode 100644 src/main/java/com/gunshi/project/xyt/entity/so/CommonDataPageSo.java create mode 100644 src/main/java/com/gunshi/project/xyt/mapper/ProjectEventsMapper.java create mode 100644 src/main/java/com/gunshi/project/xyt/model/ProjectEvents.java create mode 100644 src/main/java/com/gunshi/project/xyt/service/ProjectEventsService.java diff --git a/src/main/java/com/gunshi/project/xyt/controller/ProjectEventsController.java b/src/main/java/com/gunshi/project/xyt/controller/ProjectEventsController.java new file mode 100644 index 0000000..c724ca6 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/ProjectEventsController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.so.CommonDataPageSo; +import com.gunshi.project.xyt.model.ProjectEvents; +import com.gunshi.project.xyt.service.ProjectEventsService; +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.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +/** + * 描述: 工程大事记 + * author: wanyan + * date: 2024-08-20 17:40:37 + */ +@Tag(name = "工程大事记") +@RestController +@RequestMapping(value="/projectEvents") +public class ProjectEventsController extends AbstractCommonFileController{ + + @Autowired + private ProjectEventsService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ProjectEvents dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ProjectEvents dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated CommonDataPageSo so) { + return R.ok(service.queryList(so)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated CommonDataPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "ProjectEvents"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/CommonDataPageSo.java b/src/main/java/com/gunshi/project/xyt/entity/so/CommonDataPageSo.java new file mode 100644 index 0000000..f7d4e42 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/CommonDataPageSo.java @@ -0,0 +1,30 @@ +package com.gunshi.project.xyt.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +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 CommonDataPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="名称") + private String name; + + @Schema(description = "时间范围") + private DateRangeSo dateSo; + +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/ProjectEventsMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/ProjectEventsMapper.java new file mode 100644 index 0000000..18d8fdc --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/ProjectEventsMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.ProjectEvents; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ProjectEventsMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/ProjectEvents.java b/src/main/java/com/gunshi/project/xyt/model/ProjectEvents.java new file mode 100644 index 0000000..3576334 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/ProjectEvents.java @@ -0,0 +1,71 @@ +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.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 工程大事记 + */ +@Schema(description="工程大事记") +@Data +@TableName(value = "public.project_events") +public class ProjectEvents implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "name") + @Schema(description="名称") + @NotEmpty(message = "名称不可为空",groups = {Insert.class,Update.class}) + private String name; + + /** + * 发生日期 + */ + @TableField(value = "events_date") + @Schema(description="发生日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "日期不能为空",groups = {Insert.class,Update.class}) + private Date eventsDate; + + /** + * 类型(1综合大事记 2专题大事记) + */ + @TableField(value = "events_type") + @Schema(description="类型(1综合大事记 2专题大事记)") + private Integer eventsType; + + + @TableField(value = "events_desc") + @Schema(description="事件内容描述") + @NotEmpty(message = "事件内容描述不可为空",groups = {Insert.class,Update.class}) + private String eventsDesc; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/service/ProjectEventsService.java b/src/main/java/com/gunshi/project/xyt/service/ProjectEventsService.java new file mode 100644 index 0000000..a11eea2 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/ProjectEventsService.java @@ -0,0 +1,112 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.CommonDataPageSo; +import com.gunshi.project.xyt.mapper.ProjectEventsMapper; +import com.gunshi.project.xyt.model.ProjectEvents; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 水库历史水位表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ProjectEventsService extends ServiceImpl { + + @Autowired + private FileAssociationsService fileService; + + public Page pageQuery(CommonDataPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(ProjectEvents::getName, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(ProjectEvents::getEventsDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(ProjectEvents::getEventsDate, page.getDateSo().getEnd()); + } + query.orderByDesc(ProjectEvents::getEventsDate); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (ProjectEvents record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } + + public String getGroupId() { + return "ProjectEvents"; + } + + public ProjectEvents saveData(ProjectEvents dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public ProjectEvents updateData(ProjectEvents dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + + public List queryList(CommonDataPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(ProjectEvents::getName, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(ProjectEvents::getEventsDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(ProjectEvents::getEventsDate, page.getDateSo().getEnd()); + } + query.orderByDesc(ProjectEvents::getEventsDate); + List list = this.list(query); + fillAttach(list); + return list; + } +} + +