diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActDetailResDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActDetailResDTO.java index 04bfc3ddcc..a9356e0bbb 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActDetailResDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActDetailResDTO.java @@ -5,7 +5,6 @@ import com.epmet.resi.partymember.dto.icpartyact.form.JoinOrgDTO; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import javax.validation.Valid; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -115,7 +114,6 @@ public class IcPartyActDetailResDTO implements Serializable { /** * 参加活动党组织 */ - @Valid private List joinOrgList; /** diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActPageResultDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActPageResultDTO.java index b5c9589d5d..1fe0c4254a 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActPageResultDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/icpartyact/result/IcPartyActPageResultDTO.java @@ -1,10 +1,12 @@ package com.epmet.resi.partymember.dto.icpartyact.result; +import com.epmet.resi.partymember.dto.icpartyact.form.JoinOrgDTO; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @Description @@ -62,6 +64,18 @@ public class IcPartyActPageResultDTO implements Serializable { */ private String publishStaffId; + //以下返参,用于导出 + /** + * 是否发布,0未发布;1已发布; + * 返回名称 + */ + private String isPublishName; + /** + * 参加人员类型,0:全体党员;1:支部委员 + */ + private String joinUserType; + private String joinUserTypeName; + private List joinOrgList; } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/controller/IcPartyActController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/controller/IcPartyActController.java index d1dddac4a5..89582f8b47 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/controller/IcPartyActController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/controller/IcPartyActController.java @@ -1,11 +1,24 @@ package com.epmet.modules.partyOrg.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.modules.partyOrg.excel.IcPartyActExpoprtExcel; import com.epmet.modules.partyOrg.service.IcPartyActService; import com.epmet.resi.partymember.dto.icpartyact.form.BatchAddPartyActFormDTO; import com.epmet.resi.partymember.dto.icpartyact.form.IcPartyActAddOrUpdateFormDTO; @@ -19,13 +32,19 @@ import com.epmet.resi.partymember.dto.partyOrg.form.YearSearchFormDTO; import com.epmet.resi.partymember.dto.partyOrg.result.ActAndScheduleListResultDTO; import com.epmet.resi.partymember.dto.partyOrg.result.HomeMonthTotalResultDTO; import com.epmet.resi.partymember.dto.partyOrg.result.YearSearchResultDTO; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** @@ -34,6 +53,7 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2022-08-18 */ +@Slf4j @RestController @RequestMapping("icPartyAct") public class IcPartyActController { @@ -47,6 +67,7 @@ public class IcPartyActController { * @param formDTO * @return */ + @NoRepeatSubmit @PostMapping("addOrUpdate") public Result> addOrUpdate(@LoginUser TokenDto tokenDto,@RequestBody IcPartyActAddOrUpdateFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -68,6 +89,7 @@ public class IcPartyActController { * @param formDTO * @return */ + @NoRepeatSubmit @PostMapping("batch-add") public Result batchAdd(@LoginUser TokenDto tokenDto,@RequestBody BatchAddPartyActFormDTO formDTO){ formDTO.getActList().forEach(dto->{ @@ -178,6 +200,7 @@ public class IcPartyActController { * @param icPartyActId * @return */ + @NoRepeatSubmit @PostMapping("publish/{icPartyActId}") public Result publicshIcPartyAct(@LoginUser TokenDto tokenDto,@PathVariable("icPartyActId")String icPartyActId){ icPartyActService.publicshIcPartyAct(tokenDto.getUserId(),icPartyActId); @@ -193,6 +216,7 @@ public class IcPartyActController { * @param icPartyActIds * @return */ + @NoRepeatSubmit @PostMapping("del") public Result deleteIcPartyAct(@LoginUser TokenDto tokenDto,@RequestBody List icPartyActIds){ if(CollectionUtils.isNotEmpty(icPartyActIds)){ @@ -215,4 +239,45 @@ public class IcPartyActController { return new Result>().ok(icPartyActService.yearSearch(formDTO)); } + @NoRepeatSubmit + @PostMapping("/export-act") + public void export(@LoginUser TokenDto tokenDto, @RequestBody IcPartyActPageFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setPublishStaffId(tokenDto.getUserId()); + formDTO.setIsPage(false); + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "党组织活动" + DateUtils.format(new Date()) + ".xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcPartyActExpoprtExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = icPartyActService.pageList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), IcPartyActExpoprtExcel.class); + list.forEach(l->{ + List orgNameList = l.getJoinOrgList().stream().map(m -> m.getJoinOrgName()).distinct().collect(Collectors.toList()); + l.setJoinOrgNameStr(orgNameList.stream().map(String::valueOf).collect(Collectors.joining(","))); + }); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/excel/IcPartyActExpoprtExcel.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/excel/IcPartyActExpoprtExcel.java new file mode 100644 index 0000000000..06dc61ed31 --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/excel/IcPartyActExpoprtExcel.java @@ -0,0 +1,79 @@ +package com.epmet.modules.partyOrg.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.epmet.resi.partymember.dto.icpartyact.form.JoinOrgDTO; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Description + * @Author yzm + * @Date 2022/8/22 12:48 + */ +@Data +public class IcPartyActExpoprtExcel { + /** + * 活动主题 + */ + @ExcelProperty(value = "活动主题") + @ColumnWidth(20) + private String topic; + + /** + * 发布活动党组织名称 + */ + @ExcelProperty(value = "所属组织") + @ColumnWidth(20) + private String publishPartyOrgName; + + /** + * 活动发布人姓名 + */ + @ExcelProperty(value = "发布人") + @ColumnWidth(10) + private String publishStaffName; + + /** + * 活动类型,来源于ic_party_act_type_dict + */ + @ExcelProperty(value = "活动类型") + @ColumnWidth(15) + private String actTypeName; + + /** + * 举办活动时间 + */ + @ExcelProperty(value = "活动开始时间") + @ColumnWidth(20) + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private Date holdTime; + + /** + * 活动地点 + */ + @ExcelProperty(value = "活动地点") + @ColumnWidth(25) + private String address; + + /** + * 是否发布,0未发布;1已发布; + */ + @ExcelProperty(value = "发布状态") + @ColumnWidth(8) + private String isPublishName; + + @ExcelProperty(value = "参加人员") + @ColumnWidth(8) + private String joinUserTypeName; + + @ExcelProperty(value = "参加活动党组织") + @ColumnWidth(40) + private String joinOrgNameStr; + + private List joinOrgList; +} + diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyActServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyActServiceImpl.java index ec14369f19..8b63ca081f 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyActServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyActServiceImpl.java @@ -235,6 +235,11 @@ public class IcPartyActServiceImpl extends BaseServiceImpl pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()).doSelectPageInfo(() -> baseDao.selectPageList(formDTO)); + if(!formDTO.getIsPage()){ + pageInfo.getList().forEach(l->{ + l.setJoinOrgList(icPartyActOrgDao.selectJoinOrgList(l.getIcPartyActId())); + }); + } return new PageData<>(pageInfo.getList(), pageInfo.getTotal()); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyActDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyActDao.xml index 8c485147af..040a6ee89e 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyActDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyActDao.xml @@ -96,7 +96,18 @@ a.HOLD_TIME, a.ADDRESS, a.IS_PUBLISH, - a.PUBLISH_STAFF_ID + a.PUBLISH_STAFF_ID, + (case when a.IS_PUBLISH='0' then '未发布' + when a.IS_PUBLISH='1' then '已发布' + else '' + end + )as isPublishName, + a.JOIN_USER_TYPE as joinUserType, + (case when a.JOIN_USER_TYPE='0' then '全体党员' + when a.JOIN_USER_TYPE='1' then '支部委员' + else '' + end + )as joinUserTypeName FROM ic_party_act a LEFT JOIN ic_party_act_type_dict d ON ( a.ACT_TYPE = d.TYPE_KEY and a.customer_id=d.customer_id)