From 20497ec5ece206898ab42f8b0375c9bc67ca74b6 Mon Sep 17 00:00:00 2001 From: xjm Date: Wed, 25 Sep 2024 17:15:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=B9=E8=AE=AD=E8=AE=A1=E5=88=92=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PersonnelPlanController.java | 65 +++++++++++++++++++ .../project/xyt/model/PersonnelPlan.java | 8 +++ 2 files changed, 73 insertions(+) diff --git a/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java b/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java index d976c43..947d04f 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java @@ -12,14 +12,20 @@ import com.gunshi.project.xyt.service.FileAssociationsService; import com.gunshi.project.xyt.service.PersonnelPlanService; import com.gunshi.project.xyt.validate.markers.Insert; import com.gunshi.project.xyt.validate.markers.Update; +import com.ruoyi.common.utils.poi.ExcelUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -151,4 +157,63 @@ public class PersonnelPlanController extends AbstractCommonFileController{ return R.ok(data); } + + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @Operation(summary = "上传") + public R> uploading(@RequestPart("file") MultipartFile file) throws IOException { + + //判断文件是否有数据 + if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) { + throw new IllegalArgumentException("上传文件为空"); + } + + ExcelUtil util = new ExcelUtil< >(PersonnelPlan.class); + + List plans = util.importExcel(file.getInputStream()); + + return R.ok(plans); + } + + + + @PostMapping("/download") + @Operation(summary = "下载") + public void download(@RequestBody PersonnelPlanPage page, HttpServletResponse response) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + + Date stm = page.getStm(); + if (Objects.nonNull(stm)){ + query.ge(PersonnelPlan::getStm, stm); + } + + Date etm = page.getEtm(); + if (Objects.nonNull(etm)){ + query.le(PersonnelPlan::getEtm, etm); + } + + String name = page.getName(); + if (StringUtils.isNotBlank(name)){ + query.like(PersonnelPlan::getName, name); + } + + String applicant = page.getApplicant(); + if (StringUtils.isNotBlank(applicant)){ + query.like(PersonnelPlan::getApplicant, applicant); + } + + List list = query.list(); + ExcelUtil util = new ExcelUtil< >(PersonnelPlan.class); + + util.exportExcel(response, list, "培训计划"); + + } + + @GetMapping("/template") + @Operation(summary = "下载模板") + public void download(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); + + util.importTemplateExcel(response, "培训计划"); + } + } diff --git a/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java b/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java index f1610fc..9bb6f25 100644 --- a/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java +++ b/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java @@ -10,6 +10,7 @@ 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 com.ruoyi.common.annotation.Excel; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -49,6 +50,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { /** * 培训班名称 */ + @Excel(name = "培训班名称",sort = 1) @TableField(value="name") @Schema(description="培训班名称") @Size(max = 30,message = "培训班名称最大长度要小于 30") @@ -67,6 +69,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { /** * 主办单位 */ + @Excel(name = "主办单位",sort = 4) @TableField(value="unit") @Schema(description="主办单位") @Size(max = 100,message = "主办单位最大长度要小于 100") @@ -76,6 +79,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { /** * 开始培训时间 */ + @Excel(name = "开始培训时间",sort = 2) @Schema(description="开始培训时间 格式:yyyy-MM-dd") @NotNull(message = "开始培训时间不能为空") @TableField(value="stm") @@ -85,6 +89,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { /** * 结束培训时间 */ + @Excel(name = "结束培训时间",sort = 3) @Schema(description="结束培训时间 格式:yyyy-MM-dd") @NotNull(message = "结束培训时间不能为空") @TableField(value="etm") @@ -108,6 +113,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { /** * 培训地点 */ + @Excel(name = "培训地点",sort = 6) @Schema(description="培训地点") @TableField(value="addr") @Size(max = 200,message = "主办单位最大长度要小于 200") @@ -117,6 +123,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { /** * 培训内容 */ + @Excel(name = "培训内容",sort = 5) @Schema(description="培训内容") @TableField(value="content") @Size(max = 500,message = "培训内容最大长度要小于 500") @@ -171,6 +178,7 @@ public class PersonnelPlan extends CommUpdate implements Serializable { @Schema(description="填报人") @TableField(value="applicant") @Size(max = 50,message = "填报人最大长度要小于 50") + @Excel(name = "填报人",sort = 7) private String applicant; /**