From 5854bf826cacd363bb18020df9c22a5bef72c8c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B2=E6=A0=91=E9=80=9A?= <1976590620@qq.com> Date: Fri, 14 Feb 2020 20:21:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../elink/esua/epdc/config/StreamUtils.java | 56 +++++++++++++++++++ .../EpidemicSentryPostController.java | 14 +++++ .../service/EpidemicSentryPostService.java | 11 ++++ .../impl/EpidemicSentryPostServiceImpl.java | 50 ++++++++++++++++- 4 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java new file mode 100644 index 000000000..1caef31ae --- /dev/null +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java @@ -0,0 +1,56 @@ +package com.elink.esua.epdc.config; + +import com.elink.esua.epdc.commons.tools.exception.RenException; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; + +/** + * 接收文件转化File + * Created by liuhongwei on 2019/6/21. + */ +public class StreamUtils { + + + + public static File conversionFile(MultipartFile file){ + + File toFile =null; + InputStream ins = null; + try { + // 转化字节流 + ins = file.getInputStream(); + // 获取文件名字 + toFile = new File(file.getOriginalFilename()); + // 字节转化文件 + inputStreamToFile(ins, toFile); + ins.close(); + } catch (IOException e) { + new RenException(500,"文件转化失败"); + } + return toFile; + } + + + /** + * 流转化 + * @param ins file + * @return + * @author liuhongwei + * @date 2019/6/14 14:07 + */ + public static void inputStreamToFile(InputStream ins, File file) { + try { + OutputStream os = new FileOutputStream(file); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + os.close(); + ins.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java index 14ad90d55..90f9e1f93 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java @@ -30,6 +30,7 @@ import com.elink.esua.epdc.modules.epidemic.excel.EpidemicSentryPostExcel; import com.elink.esua.epdc.modules.epidemic.service.EpidemicSentryPostService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -104,4 +105,17 @@ public class EpidemicSentryPostController { return new Result>().ok(data); } + /*** + * 导入 + * @param file + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author qushutong + * @date 2020/2/14 12:34 + */ + @PostMapping("importExcel") + public Result importExcel(@RequestParam("file") MultipartFile file) { + return epidemicSentryPostService.insertEpidemicList(file); + } + + } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java index 41337d824..18586d1fe 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java @@ -19,8 +19,10 @@ package com.elink.esua.epdc.modules.epidemic.service; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.EpidemicSentryPostDTO; import com.elink.esua.epdc.modules.epidemic.entity.EpidemicSentryPostEntity; +import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; @@ -101,4 +103,13 @@ public interface EpidemicSentryPostService extends BaseService listSentryPostName(EpidemicSentryPostDTO dto); + + /*** + * 导入表格 + * @param + * @return void + * @author qushutong + * @date 2020/2/14 12:38 + */ + Result insertEpidemicList(MultipartFile file); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/impl/EpidemicSentryPostServiceImpl.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/impl/EpidemicSentryPostServiceImpl.java index 17eaaf785..67172a976 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/impl/EpidemicSentryPostServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/impl/EpidemicSentryPostServiceImpl.java @@ -17,22 +17,32 @@ package com.elink.esua.epdc.modules.epidemic.service.impl; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.config.StreamUtils; import com.elink.esua.epdc.modules.epidemic.dao.EpidemicSentryPostDao; import com.elink.esua.epdc.dto.EpidemicSentryPostDTO; import com.elink.esua.epdc.modules.epidemic.entity.EpidemicSentryPostEntity; +import com.elink.esua.epdc.modules.epidemic.excel.EpidemicSentryPostExcel; import com.elink.esua.epdc.modules.epidemic.redis.EpidemicSentryPostRedis; import com.elink.esua.epdc.modules.epidemic.service.EpidemicSentryPostService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -65,8 +75,8 @@ public class EpidemicSentryPostServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -106,4 +116,40 @@ public class EpidemicSentryPostServiceImpl extends BaseServiceImpl oldEntityList = baseDao.selectList(new QueryWrapper<>()); + List epidemicExcelList = ExcelImportUtil.importExcel(f, EpidemicSentryPostExcel.class, importParams); + // third_sentry_post_id 已存在更新 不存在插入 + List newEpidemicList = this.updataOrSaveExcel(epidemicExcelList, oldEntityList); + List epidemicList = ConvertUtils.sourceToTarget(newEpidemicList, EpidemicSentryPostEntity.class); + boolean b = insertBatch(epidemicList); + return new Result(); + } + + private List updataOrSaveExcel(List epidemicExcelList, List oldEntityList) { + List newEpidemicList = new ArrayList<>(); + QueryWrapper wrapper; + for (EpidemicSentryPostExcel item : epidemicExcelList) { + if (StringUtils.isNotBlank(item.getThirdSentryPostId())) { + item.setThirdSentryPostId(item.getThirdSentryPostId().trim()); + } + for (EpidemicSentryPostEntity oldItem : oldEntityList) { + if (StringUtils.isNotBlank(item.getThirdSentryPostId()) && item.getThirdSentryPostId().equals(oldItem.getThirdSentryPostId())) { + //三方哨卡Id相同时 更新 + EpidemicSentryPostEntity epidemicSentryPostEntity = ConvertUtils.sourceToTarget(item, EpidemicSentryPostEntity.class); + wrapper = new QueryWrapper<>(); + wrapper.eq("third_sentry_post_id", epidemicSentryPostEntity.getThirdSentryPostId()); + update(epidemicSentryPostEntity, wrapper); + epidemicExcelList.remove(item); + } + } + } + newEpidemicList = ConvertUtils.sourceToTarget(epidemicExcelList, EpidemicSentryPostDTO.class); + return newEpidemicList; + } + } \ No newline at end of file