From 38ea976f15d2b855f8cd4511f7f92719156f6955 Mon Sep 17 00:00:00 2001 From: luyan Date: Mon, 26 Jun 2023 16:09:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=87=8D=E7=82=B9=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E4=BF=A1=E6=81=AF=E3=80=81=E6=8E=92=E6=9F=A5=E3=80=81?= =?UTF-8?q?=E8=B5=B0=E8=AE=BF=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EnterpriseInterviewController.java | 76 ++++++++++++++++- .../EnterpriseInvestigateController.java | 77 +++++++++++++++++- .../controller/KeyEnterpriseController.java | 64 +++++++++++++-- .../epmet/excel/EnterpriseInterviewExcel.java | 2 +- .../excel/EnterpriseInterviewImportExcel.java | 35 ++++++++ .../EnterpriseInvestigateImportExcel.java | 31 +++++++ .../com/epmet/excel/KeyEnterpriseExcel.java | 29 +------ .../excel/enterpriseInterview_template.xlsx | Bin 0 -> 9498 bytes .../excel/enterpriseInvestigate_template.xlsx | Bin 0 -> 9442 bytes .../excel/keyEnterprise_template.xlsx | Bin 0 -> 9584 bytes 10 files changed, 277 insertions(+), 37 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewImportExcel.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInvestigateImportExcel.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/excel/enterpriseInterview_template.xlsx create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/excel/enterpriseInvestigate_template.xlsx create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/excel/keyEnterprise_template.xlsx diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInterviewController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInterviewController.java index 4d2dbd4f4b..bc57810e49 100755 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInterviewController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInterviewController.java @@ -1,8 +1,11 @@ package com.epmet.controller; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelPoiUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -13,19 +16,32 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.EnterpriseInterviewDTO; import com.epmet.dto.KeyEnterpriseDTO; import com.epmet.dto.form.EnterpriseInterviewFormDTO; +import com.epmet.dto.form.KeyEnterpriseFormDTO; +import com.epmet.entity.EnterpriseInterviewEntity; import com.epmet.excel.EnterpriseInterviewExcel; +import com.epmet.excel.EnterpriseInterviewImportExcel; import com.epmet.service.EnterpriseInterviewService; import com.epmet.service.KeyEnterpriseService; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /** - * 日照:企业走访 + * 日照:重点单位走访 * * @author generator generator@elink-cn.com * @since v1.0.0 2023-06-19 @@ -101,4 +117,62 @@ public class EnterpriseInterviewController { } } + @RequestMapping(value = "exportTemplate", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("重点单位走访信息导入模版", "UTF-8") + ".xlsx"); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/enterpriseInterview_template.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + @PostMapping("import") + public Result importExcel(@RequestParam("file") MultipartFile file) { + if (!file.isEmpty()) { + KeyEnterpriseFormDTO formDto = new KeyEnterpriseFormDTO(); + formDto.setPageSize(10000); + PageData dtoList = keyEnterpriseService.search(formDto); + if (null != dtoList && dtoList.getList().size() > 0) { + try { + ExcelImportResult formDTOList = ExcelPoiUtils.importExcel1(file.getInputStream(), 0, 1, EnterpriseInterviewImportExcel.class); + List entities = new ArrayList<>(); + if (null != formDTOList.getList() && formDTOList.getList().size() > 0) { + formDTOList.getList().stream().forEach(form -> { + dtoList.getList().forEach(dto -> { + if (dto.getUnitName().equals(form.getUnitName())) { + EnterpriseInterviewEntity entity = ConvertUtils.sourceToTarget(form, EnterpriseInterviewEntity.class); + entity.setEnterpriseId(dto.getId()); + try { + entity.setInvTime(new SimpleDateFormat("yyyy-MM-dd").parse(form.getInvTime())); + } catch (ParseException e) { + e.printStackTrace(); + } + entity.setInterviewType(form.getInterviewType().equals("电话走访") ? "0" : "1"); + entities.add(entity); + } + }); + }); + enterpriseInterviewService.saveOrUpdateBatch(entities); + } + } catch (Exception e) { + return new Result().error(8000, e.getMessage()); + } + } else { + return new Result().error(8000, "请先维护企业信息"); + } + + } else { + return new Result().error(8000, "请选择正确的文件!"); + } + return new Result().ok("导入成功!"); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInvestigateController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInvestigateController.java index a0679d4297..69a0d7ab85 100755 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInvestigateController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/EnterpriseInvestigateController.java @@ -1,8 +1,11 @@ package com.epmet.controller; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelPoiUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -13,19 +16,32 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.EnterpriseInvestigateDTO; import com.epmet.dto.KeyEnterpriseDTO; import com.epmet.dto.form.EnterpriseInvestigateFormDTO; +import com.epmet.dto.form.KeyEnterpriseFormDTO; +import com.epmet.entity.EnterpriseInvestigateEntity; import com.epmet.excel.EnterpriseInvestigateExcel; +import com.epmet.excel.EnterpriseInvestigateImportExcel; import com.epmet.service.EnterpriseInvestigateService; import com.epmet.service.KeyEnterpriseService; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /** - * 日照:企业排查管理 + * 日照:重点单位排查 * * @author generator generator@elink-cn.com * @since v1.0.0 2023-06-19 @@ -96,10 +112,67 @@ public class EnterpriseInvestigateController { } } - @PostMapping("search") public Result> search(@RequestBody EnterpriseInvestigateFormDTO formDto) { return new Result().ok(enterpriseInvestigateService.search(formDto)); } + @RequestMapping(value = "exportTemplate", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("重点单位排查信息导入模版", "UTF-8") + ".xlsx"); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/enterpriseInvestigate_template.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + @PostMapping("import") + public Result importExcel(@RequestParam("file") MultipartFile file) { + if (!file.isEmpty()) { + KeyEnterpriseFormDTO formDto = new KeyEnterpriseFormDTO(); + formDto.setPageSize(10000); + PageData dtoList = keyEnterpriseService.search(formDto); + if (null != dtoList && dtoList.getList().size() > 0) { + try { + ExcelImportResult formDTOList = ExcelPoiUtils.importExcel1(file.getInputStream(), 0, 1, EnterpriseInvestigateImportExcel.class); + List entities = new ArrayList<>(); + if (null != formDTOList.getList() && formDTOList.getList().size() > 0) { + formDTOList.getList().stream().forEach(form -> { + dtoList.getList().forEach(dto -> { + if (dto.getUnitName().equals(form.getUnitName())) { + EnterpriseInvestigateEntity entity = ConvertUtils.sourceToTarget(form, EnterpriseInvestigateEntity.class); + entity.setEnterpriseId(dto.getId()); + try { + entity.setInvTime(new SimpleDateFormat("yyyy-MM-dd").parse(form.getInvTime())); + } catch (ParseException e) { + e.printStackTrace(); + } + entity.setConsequence(form.getConsequence().equals("合格") ? "0" : "1"); + entities.add(entity); + } + }); + }); + enterpriseInvestigateService.saveOrUpdateBatch(entities); + } + } catch (Exception e) { + return new Result().error(8000, e.getMessage()); + } + } else { + return new Result().error(8000, "请先维护企业信息"); + } + + } else { + return new Result().error(8000, "请选择正确的文件!"); + } + return new Result().ok("导入成功!"); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/KeyEnterpriseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/KeyEnterpriseController.java index f8087d7719..c23a5df2b3 100755 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/KeyEnterpriseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/KeyEnterpriseController.java @@ -1,10 +1,12 @@ package com.epmet.controller; -import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.DictTypeEnum; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelPoiUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -14,22 +16,32 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.KeyEnterpriseDTO; import com.epmet.dto.form.KeyEnterpriseFormDTO; +import com.epmet.entity.KeyEnterpriseEntity; import com.epmet.excel.KeyEnterpriseExcel; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.service.KeyEnterpriseService; -import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** + * 日照:重点单位管理 + * * @author generator generator@elink-cn.com * @since v1.0.0 2023-06-19 */ @@ -94,10 +106,48 @@ public class KeyEnterpriseController { return new Result(); } - @PostMapping("exportTemplate") - public void exportTemplate(HttpServletResponse response) throws Exception { - TemplateExportParams templatePath = new TemplateExportParams("excel/keyEnterprise_template.xlsx"); - ExcelPoiUtils.exportExcel(templatePath, new HashMap<>(), "重点企业信息录入表", response); + @RequestMapping(value = "exportTemplate", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("重点单位信息导入模版", "UTF-8") + ".xlsx"); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/keyEnterprise_template.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + @PostMapping("import") + public Result importExcel(@RequestParam("file") MultipartFile file) { + if (!file.isEmpty()) { + Result> dictMapRes = adminOpenFeignClient.dictMap(DictTypeEnum.UNIT_TYPE.getCode()); + Map dictMap = dictMapRes.getData().entrySet().stream() + .collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getKey())); + try { + ExcelImportResult formDTOList = ExcelPoiUtils.importExcel1(file.getInputStream(), 0, 1, KeyEnterpriseExcel.class); + List entities = new ArrayList<>(); + if (null != formDTOList.getList() && formDTOList.getList().size() > 0) { + formDTOList.getList().stream().forEach(form -> { + if (null != form.getUnitType()) { + form.setUnitType(dictMap.get(form.getUnitType())); + entities.add(ConvertUtils.sourceToTarget(form, KeyEnterpriseEntity.class)); + } + }); + keyEnterpriseService.saveOrUpdateBatch(entities); + } + } catch (Exception e) { + return new Result().error(8000, e.getMessage()); + } + } else { + return new Result().error(8000, "请选择正确的文件!"); + } + return new Result().ok("导入成功!"); } @RequestMapping(value = "/exportExcel") diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewExcel.java index 8754bf1bab..c81b94ba2b 100755 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewExcel.java @@ -26,7 +26,7 @@ public class EnterpriseInterviewExcel { @Excel(name = "走访人员职务") private String jobType; - @Excel(name = "走访方式 ", replace = {"电话走访_0", "实际走访_1"}) + @Excel(name = "走访方式", replace = {"电话走访_0", "实际走访_1"}) private String interviewType; @Excel(name = "企业问题") diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewImportExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewImportExcel.java new file mode 100644 index 0000000000..2c29924030 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInterviewImportExcel.java @@ -0,0 +1,35 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @author yan Lu + * @description 描述 + * @create 2023/6/26 15:37 + */ +@Data +public class EnterpriseInterviewImportExcel { + + @Excel(name = "企业名称") + private String unitName; + + @Excel(name = "走访时间") + private String invTime; + + @Excel(name = "走访人员(多个以“,”相隔)") + private String staffs; + + @Excel(name = "走访人员职务") + private String jobType; + + @Excel(name = "走访方式") + private String interviewType; + + @Excel(name = "企业问题") + private String problem; + + @Excel(name = "备注") + private String remark; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInvestigateImportExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInvestigateImportExcel.java new file mode 100644 index 0000000000..5ded24422d --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseInvestigateImportExcel.java @@ -0,0 +1,31 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @author yan Lu + * @description 描述 + * @create 2023/6/26 15:57 + */ +@Data +public class EnterpriseInvestigateImportExcel { + + @Excel(name = "排查企业名称") + private String unitName; + + @Excel(name = "排查主题") + private String title; + + @Excel(name = "排查时间") + private String invTime; + + @Excel(name = "排查人员(多个以“,”相隔)") + private String staffs; + + @Excel(name = "排查结果") + private String consequence; + + @Excel(name = "备注") + private String remark; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/KeyEnterpriseExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/KeyEnterpriseExcel.java index 7d26d9e718..9a2214d439 100755 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/KeyEnterpriseExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/KeyEnterpriseExcel.java @@ -3,10 +3,8 @@ package com.epmet.excel; import cn.afterturn.easypoi.excel.annotation.Excel; import lombok.Data; -import java.util.Date; - /** - * + * * * @author generator generator@elink-cn.com * @since v1.0.0 2023-06-19 @@ -14,14 +12,12 @@ import java.util.Date; @Data public class KeyEnterpriseExcel { - @Excel(name = "主键ID") - private String id; @Excel(name = "单位名称") private String unitName; @Excel(name = "单位类型") - private Integer unitType; + private String unitType; @Excel(name = "主营业务") private String business; @@ -41,23 +37,4 @@ public class KeyEnterpriseExcel { @Excel(name = "纬度") private String latitude; - @Excel(name = "删除标识:0.未删除 1.已删除") - private Integer delFlag; - - @Excel(name = "乐观锁") - private Integer revision; - - @Excel(name = "创建人") - private String createdBy; - - @Excel(name = "创建时间") - private Date createdTime; - - @Excel(name = "更新人") - private String updatedBy; - - @Excel(name = "更新时间") - private Date updatedTime; - - -} \ No newline at end of file +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/enterpriseInterview_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/enterpriseInterview_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4b575eb4b2067019ab70019a9fa56e9f1e8eaa24 GIT binary patch literal 9498 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 Mvj@2@vPZrD1BRMh?EnA( literal 0 HcmV?d00001 diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/keyEnterprise_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/keyEnterprise_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f32ec55c7f4f299d98d154ee8de9dd1adb8f6acf GIT binary patch literal 9584 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 Bdxro3 literal 0 HcmV?d00001