12 changed files with 452 additions and 0 deletions
@ -0,0 +1,2 @@
|
||||
package cn.iocoder.yudao.framework.common.util.pdf;public class HtmlToPdfInterceptor { |
||||
} |
@ -0,0 +1,2 @@
|
||||
package cn.iocoder.yudao.framework.common.util.pdf;public class WkHtmlToPdfUtil { |
||||
} |
@ -0,0 +1,90 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.jobinfo; |
||||
|
||||
import org.springframework.web.bind.annotation.*; |
||||
import org.springframework.validation.annotation.Validated; |
||||
import org.springframework.security.access.prepost.PreAuthorize; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
import io.swagger.v3.oas.annotations.Parameter; |
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
|
||||
|
||||
import java.util.*; |
||||
import java.io.IOException; |
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam; |
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; |
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; |
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo.*; |
||||
import cn.iocoder.yudao.module.system.dal.dataobject.jobinfo.JobInfoDO; |
||||
import cn.iocoder.yudao.module.system.service.jobinfo.JobInfoService; |
||||
|
||||
import javax.annotation.Resource; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
import javax.validation.Valid; |
||||
|
||||
@Tag(name = "管理后台 - 工作汇报") |
||||
@RestController |
||||
@RequestMapping("/system/job-info") |
||||
@Validated |
||||
public class JobInfoController { |
||||
|
||||
@Resource |
||||
private JobInfoService jobInfoService; |
||||
|
||||
@PostMapping("/create") |
||||
@Operation(summary = "创建工作汇报") |
||||
public CommonResult<Long> createJobInfo(@Valid @RequestBody JobInfoSaveReqVO createReqVO) { |
||||
return success(jobInfoService.createJobInfo(createReqVO)); |
||||
} |
||||
|
||||
@PutMapping("/update") |
||||
@Operation(summary = "更新工作汇报") |
||||
public CommonResult<Boolean> updateJobInfo(@Valid @RequestBody JobInfoSaveReqVO updateReqVO) { |
||||
jobInfoService.updateJobInfo(updateReqVO); |
||||
return success(true); |
||||
} |
||||
|
||||
@DeleteMapping("/delete") |
||||
@Operation(summary = "删除工作汇报") |
||||
@Parameter(name = "id", description = "编号", required = true) |
||||
public CommonResult<Boolean> deleteJobInfo(@RequestParam("id") Long id) { |
||||
jobInfoService.deleteJobInfo(id); |
||||
return success(true); |
||||
} |
||||
|
||||
@GetMapping("/get") |
||||
@Operation(summary = "获得工作汇报") |
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024") |
||||
public CommonResult<JobInfoRespVO> getJobInfo(@RequestParam("id") Long id) { |
||||
JobInfoDO jobInfo = jobInfoService.getJobInfo(id); |
||||
return success(BeanUtils.toBean(jobInfo, JobInfoRespVO.class)); |
||||
} |
||||
|
||||
@GetMapping("/page") |
||||
@Operation(summary = "获得工作汇报分页") |
||||
public CommonResult<PageResult<JobInfoRespVO>> getJobInfoPage(@Valid JobInfoPageReqVO pageReqVO) { |
||||
PageResult<JobInfoDO> pageResult = jobInfoService.getJobInfoPage(pageReqVO); |
||||
return success(BeanUtils.toBean(pageResult, JobInfoRespVO.class)); |
||||
} |
||||
|
||||
@GetMapping("/export-excel") |
||||
@Operation(summary = "导出工作汇报 Excel") |
||||
@ApiAccessLog(operateType = EXPORT) |
||||
public void exportJobInfoExcel(@Valid JobInfoPageReqVO pageReqVO, |
||||
HttpServletResponse response) throws IOException { |
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); |
||||
List<JobInfoDO> list = jobInfoService.getJobInfoPage(pageReqVO).getList(); |
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "工作汇报.xls", "数据", JobInfoRespVO.class, |
||||
BeanUtils.toBean(list, JobInfoRespVO.class)); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo; |
||||
|
||||
import lombok.*; |
||||
import java.util.*; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam; |
||||
import org.springframework.format.annotation.DateTimeFormat; |
||||
import java.time.LocalDateTime; |
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
||||
|
||||
@Schema(description = "管理后台 - 工作汇报分页 Request VO") |
||||
@Data |
||||
@EqualsAndHashCode(callSuper = true) |
||||
@ToString(callSuper = true) |
||||
public class JobInfoPageReqVO extends PageParam { |
||||
|
||||
@Schema(description = "汇报标题") |
||||
private String title; |
||||
|
||||
@Schema(description = "汇报人姓名", example = "赵六") |
||||
private String jobName; |
||||
|
||||
@Schema(description = "创建时间") |
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
||||
private LocalDateTime[] createTime; |
||||
|
||||
} |
@ -0,0 +1,45 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; |
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; |
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.*; |
||||
|
||||
import java.time.LocalDate; |
||||
import java.util.*; |
||||
import org.springframework.format.annotation.DateTimeFormat; |
||||
import java.time.LocalDateTime; |
||||
import com.alibaba.excel.annotation.*; |
||||
|
||||
@Schema(description = "管理后台 - 工作汇报 Response VO") |
||||
@Data |
||||
@ExcelIgnoreUnannotated |
||||
public class JobInfoRespVO { |
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26792") |
||||
@ExcelProperty("id") |
||||
private Long id; |
||||
|
||||
@Schema(description = "汇报标题") |
||||
@ExcelProperty("汇报标题") |
||||
private String title; |
||||
|
||||
@Schema(description = "汇报日期") |
||||
@ExcelProperty("汇报日期") |
||||
@JsonSerialize(using = LocalDateSerializer.class) // 序列化(响应)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class) // 反序列化(请求)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd") |
||||
private LocalDate jobDate; |
||||
|
||||
@Schema(description = "汇报人姓名", example = "赵六") |
||||
@ExcelProperty("汇报人姓名") |
||||
private String jobName; |
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@ExcelProperty("创建时间") |
||||
private LocalDateTime createTime; |
||||
|
||||
} |
@ -0,0 +1,37 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.*; |
||||
|
||||
import java.time.LocalDate; |
||||
import java.util.*; |
||||
import org.springframework.format.annotation.DateTimeFormat; |
||||
import java.time.LocalDateTime; |
||||
import com.alibaba.excel.annotation.*; |
||||
|
||||
@Schema(description = "管理后台 - 工作汇报 Response VO") |
||||
@Data |
||||
@ExcelIgnoreUnannotated |
||||
public class JobInfoRespVO { |
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26792") |
||||
@ExcelProperty("id") |
||||
private Long id; |
||||
|
||||
@Schema(description = "汇报标题") |
||||
@ExcelProperty("汇报标题") |
||||
private String title; |
||||
|
||||
@Schema(description = "汇报日期") |
||||
@ExcelProperty("汇报日期") |
||||
private LocalDate jobDate; |
||||
|
||||
@Schema(description = "汇报人姓名", example = "赵六") |
||||
@ExcelProperty("汇报人姓名") |
||||
private String jobName; |
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@ExcelProperty("创建时间") |
||||
private LocalDateTime createTime; |
||||
|
||||
} |
@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.*; |
||||
|
||||
import java.time.LocalDate; |
||||
import java.util.*; |
||||
|
||||
@Schema(description = "管理后台 - 工作汇报新增/修改 Request VO") |
||||
@Data |
||||
public class JobInfoSaveReqVO { |
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26792") |
||||
private Long id; |
||||
|
||||
@Schema(description = "汇报标题") |
||||
private String title; |
||||
|
||||
@Schema(description = "汇报内容") |
||||
private String content; |
||||
|
||||
@Schema(description = "汇报日期") |
||||
private LocalDate jobDate; |
||||
|
||||
@Schema(description = "汇报人姓名", example = "赵六") |
||||
private String jobName; |
||||
|
||||
} |
@ -0,0 +1,49 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.jobinfo; |
||||
|
||||
import lombok.*; |
||||
|
||||
import java.time.LocalDate; |
||||
import java.util.*; |
||||
import java.time.LocalDateTime; |
||||
import java.time.LocalDateTime; |
||||
import com.baomidou.mybatisplus.annotation.*; |
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
||||
|
||||
/** |
||||
* 工作汇报 DO |
||||
* |
||||
* @author 芋道源码 |
||||
*/ |
||||
@TableName("hb_job_info") |
||||
@KeySequence("hb_job_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data |
||||
@EqualsAndHashCode(callSuper = true) |
||||
@ToString(callSuper = true) |
||||
@Builder |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
public class JobInfoDO extends BaseDO { |
||||
|
||||
/** |
||||
* id |
||||
*/ |
||||
@TableId |
||||
private Long id; |
||||
/** |
||||
* 汇报标题 |
||||
*/ |
||||
private String title; |
||||
/** |
||||
* 汇报内容 |
||||
*/ |
||||
private String content; |
||||
/** |
||||
* 汇报日期 |
||||
*/ |
||||
private LocalDate jobDate; |
||||
/** |
||||
* 汇报人姓名 |
||||
*/ |
||||
private String jobName; |
||||
|
||||
} |
@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.jobinfo; |
||||
|
||||
import java.util.*; |
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
||||
import cn.iocoder.yudao.module.system.dal.dataobject.jobinfo.JobInfoDO; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
import cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo.*; |
||||
|
||||
/** |
||||
* 工作汇报 Mapper |
||||
* |
||||
* @author 芋道源码 |
||||
*/ |
||||
@Mapper |
||||
public interface JobInfoMapper extends BaseMapperX<JobInfoDO> { |
||||
|
||||
default PageResult<JobInfoDO> selectPage(JobInfoPageReqVO reqVO) { |
||||
return selectPage(reqVO, new LambdaQueryWrapperX<JobInfoDO>() |
||||
.eqIfPresent(JobInfoDO::getTitle, reqVO.getTitle()) |
||||
.likeIfPresent(JobInfoDO::getJobName, reqVO.getJobName()) |
||||
.betweenIfPresent(JobInfoDO::getCreateTime, reqVO.getCreateTime()) |
||||
.orderByDesc(JobInfoDO::getId)); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,56 @@
|
||||
package cn.iocoder.yudao.module.system.service.jobinfo; |
||||
|
||||
import java.util.*; |
||||
import cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo.*; |
||||
import cn.iocoder.yudao.module.system.dal.dataobject.jobinfo.JobInfoDO; |
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam; |
||||
|
||||
import javax.validation.Valid; |
||||
|
||||
/** |
||||
* 工作汇报 Service 接口 |
||||
* |
||||
* @author 芋道源码 |
||||
*/ |
||||
public interface JobInfoService { |
||||
|
||||
/** |
||||
* 创建工作汇报 |
||||
* |
||||
* @param createReqVO 创建信息 |
||||
* @return 编号 |
||||
*/ |
||||
Long createJobInfo(@Valid JobInfoSaveReqVO createReqVO); |
||||
|
||||
/** |
||||
* 更新工作汇报 |
||||
* |
||||
* @param updateReqVO 更新信息 |
||||
*/ |
||||
void updateJobInfo(@Valid JobInfoSaveReqVO updateReqVO); |
||||
|
||||
/** |
||||
* 删除工作汇报 |
||||
* |
||||
* @param id 编号 |
||||
*/ |
||||
void deleteJobInfo(Long id); |
||||
|
||||
/** |
||||
* 获得工作汇报 |
||||
* |
||||
* @param id 编号 |
||||
* @return 工作汇报 |
||||
*/ |
||||
JobInfoDO getJobInfo(Long id); |
||||
|
||||
/** |
||||
* 获得工作汇报分页 |
||||
* |
||||
* @param pageReqVO 分页查询 |
||||
* @return 工作汇报分页 |
||||
*/ |
||||
PageResult<JobInfoDO> getJobInfoPage(JobInfoPageReqVO pageReqVO); |
||||
|
||||
} |
@ -0,0 +1,75 @@
|
||||
package cn.iocoder.yudao.module.system.service.jobinfo; |
||||
|
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.validation.annotation.Validated; |
||||
import org.springframework.transaction.annotation.Transactional; |
||||
|
||||
import java.util.*; |
||||
import cn.iocoder.yudao.module.system.controller.admin.jobinfo.vo.*; |
||||
import cn.iocoder.yudao.module.system.dal.dataobject.jobinfo.JobInfoDO; |
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam; |
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
||||
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.jobinfo.JobInfoMapper; |
||||
|
||||
import javax.annotation.Resource; |
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
||||
|
||||
/** |
||||
* 工作汇报 Service 实现类 |
||||
* |
||||
* @author 芋道源码 |
||||
*/ |
||||
@Service |
||||
@Validated |
||||
public class JobInfoServiceImpl implements JobInfoService { |
||||
|
||||
@Resource |
||||
private JobInfoMapper jobInfoMapper; |
||||
|
||||
@Override |
||||
public Long createJobInfo(JobInfoSaveReqVO createReqVO) { |
||||
// 插入
|
||||
JobInfoDO jobInfo = BeanUtils.toBean(createReqVO, JobInfoDO.class); |
||||
jobInfoMapper.insert(jobInfo); |
||||
// 返回
|
||||
return jobInfo.getId(); |
||||
} |
||||
|
||||
@Override |
||||
public void updateJobInfo(JobInfoSaveReqVO updateReqVO) { |
||||
// 校验存在
|
||||
validateJobInfoExists(updateReqVO.getId()); |
||||
// 更新
|
||||
JobInfoDO updateObj = BeanUtils.toBean(updateReqVO, JobInfoDO.class); |
||||
jobInfoMapper.updateById(updateObj); |
||||
} |
||||
|
||||
@Override |
||||
public void deleteJobInfo(Long id) { |
||||
// 校验存在
|
||||
validateJobInfoExists(id); |
||||
// 删除
|
||||
jobInfoMapper.deleteById(id); |
||||
} |
||||
|
||||
private void validateJobInfoExists(Long id) { |
||||
if (jobInfoMapper.selectById(id) == null) { |
||||
throw exception(JOB_INFO_NOT_EXISTS); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public JobInfoDO getJobInfo(Long id) { |
||||
return jobInfoMapper.selectById(id); |
||||
} |
||||
|
||||
@Override |
||||
public PageResult<JobInfoDO> getJobInfoPage(JobInfoPageReqVO pageReqVO) { |
||||
return jobInfoMapper.selectPage(pageReqVO); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,12 @@
|
||||
<?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="cn.iocoder.yudao.module.system.dal.mysql.jobinfo.JobInfoMapper"> |
||||
|
||||
<!-- |
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。 |
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。 |
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 |
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ |
||||
--> |
||||
|
||||
</mapper> |
Loading…
Reference in new issue