diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java index eb5dfce..9b5748a 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java @@ -49,6 +49,7 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -176,8 +177,12 @@ public class MemberChangeManageController { return Result.success(map); } - - public void doExport() { - + @At + @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) + @Ok("void") + @ApiOperation("导出会员名单") + public void doExport(MemberManagePageForm pageForm, HttpServletResponse response) { + memberCommonService.assembleExcel(pageForm, response); } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java index 7f1dd50..c764e9b 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java @@ -12,6 +12,7 @@ import org.nutz.dao.Cnd; import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.Static; import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; import java.util.List; @@ -59,6 +60,9 @@ public class MemberManagePageForm extends PageForm { //变更来源 private List changeOrigins; + //动态列名 json + private List columns; + public static void buildSearch(Cnd cnd, MemberManagePageForm pageForm) { if (cnd == null) { cnd = Cnd.NEW(); @@ -90,7 +94,7 @@ public class MemberManagePageForm extends PageForm { cnd.andEX("u.personType", "=", pageForm.getPersonType()); if (StrUtil.isNotBlank(pageForm.getChangeDateBefore()) && StrUtil.isNotBlank(pageForm.getChangeDateEnd())) { - cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd()))); + cnd.and(new Static(java.lang.String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd()))); } if (Lang.isNotEmpty(pageForm.getChangeTypes())) { diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java index 4b2879d..35c766d 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java @@ -10,6 +10,7 @@ import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm import org.nutz.dao.sql.Sql; import org.nutz.lang.util.NutMap; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -115,4 +116,11 @@ public interface MemberCommonService extends BaseService { * @param type 类型: apply or change */ void validateApplyOrChangeIsDoing(String userId, String type); + + /** + * 导出会员名单 + * @param pageForm + * @param response + */ + void assembleExcel(MemberManagePageForm pageForm, HttpServletResponse response); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java index e93ca2f..320e3b1 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java @@ -1,5 +1,9 @@ package com.budwk.app.zhgh.staffmanage.member.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; @@ -10,6 +14,7 @@ import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.base.utils.CommonDownloadUtil; import com.budwk.app.flow.engine.FlowEngine; import com.budwk.app.flow.entity.ProcessInstance; import com.budwk.app.flow.enums.ProcessTaskStateEnum; @@ -20,6 +25,7 @@ import com.budwk.app.sys.services.SysUserService; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.web.commons.base.Globals; import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope; import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin; import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType; @@ -30,6 +36,8 @@ import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService; import com.budwk.app.zhgh.staffmanage.specialstaff.model.SpecialStaff; import com.budwk.app.zhgh.welfare.model.WelfareList; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; @@ -42,10 +50,13 @@ import org.nutz.dao.util.cri.Static; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +import org.nutz.json.JsonException; import org.nutz.lang.Lang; import org.nutz.lang.random.R; import org.nutz.lang.util.NutMap; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -566,4 +577,90 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement } return value.toString(); } + + /** + * 导出会员名单 + * @param pageForm + * @param response + */ + @Override + public void assembleExcel(MemberManagePageForm pageForm, HttpServletResponse response) { + Sql sql = Sqls.create(""" + SELECT + u.id, + u.sex, + u.loginname, + u.username, + u.mobile, + u.unitId, + u.unitName, + u.unionId, + u.unionName, + u.birthday, + u.manyUnit, + CASE WHEN IFNULL(u.member,0)=0 THEN \'否\' WHEN u.member=1 THEN \'是\' ELSE \'未知\' END AS member, + u.userState, + u.preparedBy, + u.personType, + CASE WHEN IFNULL(u.welfareMember,0)=0 THEN \'否\' WHEN u.welfareMember=1 THEN \'是\' ELSE \'未知\' END AS welfareMember, + u.isModelWorker, + his.id hisId, + his.changeTypes, + his.changeTime + FROM + vw_user u + LEFT JOIN sys_user_history his ON his.loginname = u.loginname + $condition + """); + Cnd cnd = Cnd.NEW(); + MemberManagePageForm.buildSearch(cnd, pageForm); + cnd.desc("his.changeTime"); + cnd.groupBy("u.id"); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { + cnd.and("u.unionId", "=", SecurityUtil.getUnionId()); + } + sql.setCondition(cnd); + List resultListData = this.listMap(sql); + try { + //转换 “异动类型” 枚举值 + if (!CollectionUtil.isEmpty(resultListData)) { + List> memberChangeType = Globals.EnumMap.get("MemberChangeType"); + for (NutMap partObj : resultListData) { + List changeTypes = Json.fromJsonAsList(String.class, partObj.getString("changeTypes")); + String changeTypeNames = changeTypes.stream() + .filter(StringUtils::isNotBlank) + .map(changeType -> { + List> menuList = memberChangeType.stream() + .filter(e -> e.get("code").equals(changeType)) + .collect(Collectors.toList()); + if (!CollectionUtil.isEmpty(menuList)) { + return menuList.stream().map(e -> (String) e.get("changeTypeName")).collect(Collectors.joining(",")); + } else { + return "未知"; + } + }).collect(Collectors.joining("、")); + partObj.put("changeTypes", changeTypeNames); + } + } + List entityList = new ArrayList<>(); + ExcelExportEntity no = new ExcelExportEntity("序号", "no", 10); + no.setFormat("isAddIndex"); + entityList.add(no); + if (CollectionUtil.isNotEmpty(pageForm.getColumns())) { + for (NutMap e : pageForm.getColumns()) { + entityList.add(new ExcelExportEntity(e.getString("label"), e.getString("prop"), 40)); + } + } + entityList.add(new ExcelExportEntity("更新时间", "changeTime", 20)); + entityList.add(new ExcelExportEntity("异动类型", "changeTypes", 20)); + entityList.add(new ExcelExportEntity("会员", "member", 40)); + entityList.add(new ExcelExportEntity("福利会员", "welfareMember", 40)); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, resultListData); + CommonDownloadUtil.download("会员名单.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html index b1fbb26..ffaabe3 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html @@ -49,7 +49,7 @@ layout("/layouts/platform.html"){ - + diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js index 3415b4f..1350e78 100644 --- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js +++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js @@ -25,7 +25,7 @@ const INFO = { {{ viewData.userState }} {{ viewData.personType }} - {{ viewData.preparedBy || '暂无' }} + {{ viewData.preparedBy || '暂无' }}