diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcPartyErroyResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcPartyErroyResultDTO.java new file mode 100644 index 000000000..5957f88ab --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcPartyErroyResultDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: qushutong + * @Date: 2019/11/4 17:06 + * @Description: 批量导入党员错误反馈 + */ +@Data +public class EpdcPartyErroyResultDTO implements Serializable { + + private static final long serialVersionUID = 5643743407138967806L; + + /** + * 错误数据行数 + */ + private String erroLine; + + /** + * 错误数据信息 + */ + private String errorInfo; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java index 1bea21731..16b096756 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java @@ -36,19 +36,19 @@ public class PartyTask { * @author qushutong * @date 2019/10/24 16:02 */ - @Async - public void insertPartyList(MultipartFile file) { - File f = StreamUtils.conversionFile(file); - ImportParams importParams = new ImportParams(); - try { - List partyList = ExcelImportUtil.importExcel(f, PartyMembersExcel.class, importParams); - partyMembersService.saveList(partyList); - for (PartyMembersExcel partyMembers : partyList) { - System.out.println("从Excel导入数据到数据库的详细为 :{}" + JSON.toJSONString(partyMembers)); - } - System.out.println("从Excel导入数据一共 {} 行 " + partyList.size()); - } catch (Exception e1) { - throw new RuntimeException("导入失败:{}" + e1.getMessage()); - } - } +// @Async +// public void insertPartyList(MultipartFile file) { +// File f = StreamUtils.conversionFile(file); +// ImportParams importParams = new ImportParams(); +// try { +// List partyList = ExcelImportUtil.importExcel(f, PartyMembersExcel.class, importParams); +// partyMembersService.saveList(partyList); +// for (PartyMembersExcel partyMembers : partyList) { +// System.out.println("从Excel导入数据到数据库的详细为 :{}" + JSON.toJSONString(partyMembers)); +// } +// System.out.println("从Excel导入数据一共 {} 行 " + partyList.size()); +// } catch (Exception e1) { +// throw new RuntimeException("导入失败:{}" + e1.getMessage()); +// } +// } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java index cf39c417b..5a511e7bf 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java @@ -65,8 +65,8 @@ public class PartyMembersController { @Autowired private PartyMembersService partyMembersService; - @Autowired - private PartyTask partyTask; +// @Autowired +// private PartyTask partyTask; @GetMapping("page") @DataFilter(tableAlias = "pm", deptId = "grid_id", prefix = "AND", isPendingCreator = false) @@ -140,7 +140,21 @@ public class PartyMembersController { */ @PostMapping("importExcel") public Result importExcel(@RequestParam("file") MultipartFile file) { - partyTask.insertPartyList(file); - return new Result(); + return partyMembersService.insertPartyList(file); + } + + /*** + * 导出模板 + * @param params + * @param response + * @return void + * @author qushutong + * @date 2019/11/1 17:14 + */ + @GetMapping("exportMoudle") + public void exportMoudle(@RequestParam Map params, HttpServletResponse response) throws Exception { + List list = partyMembersService.exportMoudle(); + ExcelUtils.exportExcelToTarget(response, "党员模板", list, PartyMembersExcel.class); } + } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java index a3e9bea34..7a1b6d9b3 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java @@ -23,6 +23,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.PartyMembersDTO; import com.elink.esua.epdc.entity.PartyMembersEntity; import com.elink.esua.epdc.excel.PartyMembersExcel; +import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; @@ -49,12 +50,21 @@ public interface PartyMembersService extends BaseService { void delete(String[] ids); + + /*** + * + * @return + * @author qushutong + * @date 2019/11/1 17:17 + */ + List exportMoudle(); + /*** - * 批量插入 - * @param partyList + * 导入党员 + * @param file * @return void * @author qushutong - * @date 2019/10/24 14:58 + * @date 2019/11/4 10:08 */ - void saveList(List partyList); + Result insertPartyList(MultipartFile file); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java index 9280c9d27..bafb55126 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java @@ -17,6 +17,8 @@ package com.elink.esua.epdc.service.impl; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -29,9 +31,11 @@ import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum; 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.utils.Result; +import com.elink.esua.epdc.config.StreamUtils; import com.elink.esua.epdc.dao.PartyMembersDao; import com.elink.esua.epdc.dto.PartyMembersDTO; import com.elink.esua.epdc.dto.PartyTagRelationDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcPartyErroyResultDTO; import com.elink.esua.epdc.entity.PartyMembersEntity; import com.elink.esua.epdc.excel.PartyMembersExcel; import com.elink.esua.epdc.redis.PartyMembersRedis; @@ -41,11 +45,10 @@ 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.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.io.File; +import java.util.*; /** * 党员表 @@ -76,7 +79,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl> pageDIY(Map params) { IPage page = getPage(params); List list = baseDao.pageDIY(params); - return new Result>().ok(new PageData<>(list,page.getTotal())); + return new Result>().ok(new PageData<>(list, page.getTotal())); } @Override @@ -84,8 +87,8 @@ public class PartyMembersServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get("id"); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get("id"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), "id", id); @@ -104,9 +107,9 @@ public class PartyMembersServiceImpl extends BaseServiceImpl partyList) { List partyMembersEntityList = ConvertUtils.sourceToTarget(partyList, PartyMembersEntity.class); + for (int i=0;i partyMembersEntityList = baseDao.selectList(new QueryWrapper()); + List partyList = ExcelImportUtil.importExcel(f, PartyMembersExcel.class, importParams); + // 校验数据 + List epdcPartyErroyResultDtos = this.checkExcel(partyList, partyMembersEntityList); + if(epdcPartyErroyResultDtos.size()>0){ + return new Result().ok(epdcPartyErroyResultDtos); + } + saveList(partyList); + for (PartyMembersExcel partyMembers : partyList) { + System.out.println("从Excel导入数据到数据库的详细为 :{}" + JSON.toJSONString(partyMembers)); + } + System.out.println("从Excel导入数据一共 {} 行 " + partyList.size()); + } catch (Exception e1) { + throw new RuntimeException("导入失败:{}" + e1.getMessage()); + } + return new Result(); + } + + /*** + * 校验excel表格数据 + * @param partyList + * @param partyMembersEntityList + * @return java.lang.String + * @author qushutong + * @date 2019/11/4 10:25 + */ + private List checkExcel(List partyList, List partyMembersEntityList) { + // 不匹配信息 + List errorLineinfoList=new ArrayList<>(); + for (int i = 0; i < partyList.size(); i++) { + PartyMembersExcel partyMembersExcel = partyList.get(i); + String realName = partyMembersExcel.getRealName(); + String mobile = partyMembersExcel.getMobile(); + String identityNo=partyMembersExcel.getIdentityNo(); + if (StringUtils.isBlank(realName)) { + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("姓名为空"); + errorLineinfoList.add(errorLineinfoDto); + } + if (StringUtils.isBlank(identityNo)) { + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("身份证号为空"); + errorLineinfoList.add(errorLineinfoDto); + } + for (PartyMembersEntity item:partyMembersEntityList) { + if(item.getRealName().equals(realName)){ + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("姓名已存在"); + errorLineinfoList.add(errorLineinfoDto); + } + if(StringUtils.isNotBlank(item.getMobile())&&item.getMobile().equals(mobile)){ + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("手机号已存在"); + errorLineinfoList.add(errorLineinfoDto); + } + if(item.getIdentityNo().equals(identityNo)){ + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("身份证号已存在"); + errorLineinfoList.add(errorLineinfoDto); + } + } + } + return errorLineinfoList; + } + + @Override + public List exportMoudle() { + List partyMembersDTOList = new ArrayList<>(); + PartyMembersDTO partyMembersDto = new PartyMembersDTO(); + partyMembersDto.setRealName("王小花"); + partyMembersDto.setMobile("13000000000"); + partyMembersDto.setIdentityNo("370681199903038473"); + partyMembersDto.setPost(""); + partyMembersDto.setCadreFlag("下沉"); + partyMembersDto.setRegistFlag("是"); + partyMembersDto.setRegistTime(new Date()); + partyMembersDto.setStreetName("水清沟街道党工委"); + partyMembersDto.setCommunityName("九江社区党委"); + partyMembersDto.setGridName("第一网格支部"); + PartyMembersDTO partyMembersDtoTwo = new PartyMembersDTO(); + partyMembersDtoTwo.setRealName("徐小明"); + partyMembersDtoTwo.setMobile("13000000001"); + partyMembersDtoTwo.setIdentityNo("37068119499030542"); + partyMembersDtoTwo.setPost(""); + partyMembersDtoTwo.setCadreFlag("不下沉"); + partyMembersDtoTwo.setRegistFlag("否"); + partyMembersDtoTwo.setRegistTime(new Date()); + partyMembersDtoTwo.setStreetName("水清沟街道党工委"); + partyMembersDtoTwo.setCommunityName("九江社区党委"); + partyMembersDtoTwo.setGridName("第一网格支部"); + PartyMembersDTO partyMembersDtoThrid = new PartyMembersDTO(); + partyMembersDtoThrid.setRealName("王红"); + partyMembersDtoThrid.setMobile(""); + partyMembersDtoThrid.setIdentityNo("37068119499032541"); + partyMembersDtoThrid.setPost(""); + partyMembersDtoThrid.setCadreFlag(""); + partyMembersDtoThrid.setRegistFlag(""); + partyMembersDtoThrid.setRegistTime(null); + partyMembersDtoThrid.setStreetName(""); + partyMembersDtoThrid.setCommunityName(""); + partyMembersDtoThrid.setGridName(""); + partyMembersDTOList.add(partyMembersDto); + partyMembersDTOList.add(partyMembersDtoTwo); + partyMembersDTOList.add(partyMembersDtoThrid); + return partyMembersDTOList; + } + }