diff --git a/src/main/java/com/budwk/app/sys/models/Sys_user.java b/src/main/java/com/budwk/app/sys/models/Sys_user.java index 02c0d90e..63a3a0e4 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_user.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_user.java @@ -418,4 +418,9 @@ public class Sys_user extends BaseModel implements Serializable { @Comment("基金会员加入时间") @ColDefine(type = ColType.DATETIME) private Date aidFundMemberJoinTime; + + @Column + @Comment("基金会员退出时间") + @ColDefine(type = ColType.DATETIME) + private Date aidFundMemberQuitTime; } diff --git a/src/main/java/com/budwk/app/sys/views/View_user.java b/src/main/java/com/budwk/app/sys/views/View_user.java index fc28b178..35fa2600 100644 --- a/src/main/java/com/budwk/app/sys/views/View_user.java +++ b/src/main/java/com/budwk/app/sys/views/View_user.java @@ -210,4 +210,16 @@ public class View_user { @Column private Boolean aidFundMember; + + @Column + private String aidFundMemberUserType; + + @Column + private String aidFundDeductTime; + + @Column + private Date aidFundMemberJoinTime; + + @Column + private Date aidFundMemberQuitTime; } diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AIdFundPayRecordController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AIdFundPayRecordController.java new file mode 100644 index 00000000..a8604bad --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AIdFundPayRecordController.java @@ -0,0 +1,210 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberPay; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberPayService; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.template.AidFundPayTemp; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.AdaptBy; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.upload.TempFile; +import org.nutz.mvc.upload.UploadAdaptor; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author zhf + * @date 2026/1/20 14:54 + * @description 缴费记录 + */ +@IocBean +@At("/platform/medicalMutualAid/aidFund/payRecord") +@Api("基金会员缴费记录") +@Ok("json:full") +@Slf4j +public class AIdFundPayRecordController { + + + @Inject + private AidFundMemberPayService aidFundMemberPayService; + + + @At("") + @Ok("beetl:/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/payRecord/index.html") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public Result pageData(AidFundPageForm pageForm) { + Sql sql = aidFundMemberPayService.getSql(pageForm); + Pagination pagination = aidFundMemberPayService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + + @At + @ApiOperation("基金会员设置已缴费未缴费") + @SLog(tag = "基金会员-基金会员台账", msg = "设置已缴费未缴费") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public Result onPayed(String id, Boolean isPayed) { + if (ObjectUtil.isEmpty(id)) { + return Result.error("参数错误"); + } + aidFundMemberPayService.update(Chain.make("isPayed", isPayed), Cnd.where("id", "=", id)); + return Result.success(); + } + + + @At + @ApiOperation("清空基金会员缴费名单") + @SLog(tag = "基金会员-基金会员台账", msg = "清空基金会员缴费名单") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public Result clearPayRecord(Integer year) { + if (ObjectUtil.isEmpty(year)) { + return Result.error("参数错误"); + } + aidFundMemberPayService.clear(Cnd.where(AidFundMemberPay::getYear, "=", year)); + return Result.success(); + } + + + @At + @Ok("void") + @ApiOperation("导出缴费名单") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public void exportPayRecord(AidFundPageForm pageForm, HttpServletResponse response) { + + Sql sql = aidFundMemberPayService.getSql(pageForm); + List listMap = aidFundMemberPayService.listMap(sql); + listMap.forEach(map -> { + map.put("payedText", map.getBoolean("isPayed") ? "已缴费" : "未缴费"); + }); + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("年度", "year", 20)); + entityList.add(new ExcelExportEntity("工号", "loginname", 20)); + entityList.add(new ExcelExportEntity("姓名", "username", 20)); + entityList.add(new ExcelExportEntity("性别", "sex", 20)); + entityList.add(new ExcelExportEntity("基金会员类型", "aidFundMemberUserType", 20)); + entityList.add(new ExcelExportEntity("所属单位", "unitName", 20)); + entityList.add(new ExcelExportEntity("所属工会", "unionName", 20)); + entityList.add(new ExcelExportEntity("缴费金额", "money", 20)); + entityList.add(new ExcelExportEntity("是否缴费", "payedText", 20)); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap); + CommonDownloadUtil.download(pageForm.getYear() + "会员缴费名单.xlsx", workbook, response); + + + } + + + @At + @Ok("void") + @ApiOperation("下载导入模版") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public void downloadImportTemp(HttpServletResponse response) { + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("工号", "loginname", 20)); + exportEntities.add(new ExcelExportEntity("姓名", "username", 20)); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, new ArrayList<>()); + CommonDownloadUtil.download("会员缴费导入模版.xlsx", workbook, response); + } + + + @At + @ApiOperation("导入缴费信息") + @SaCheckPermission("member.payment.summary") + @SLog(tag = "导入缴费信息", msg = "导入缴费信息") + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + public Result doImport(TempFile file, Integer year) { + try { + if (ObjectUtil.isEmpty(year)){ + return Result.error("参数错误"); + } + List payTempList = ExcelImportUtil.importExcel(file.getFile(), AidFundPayTemp.class, new ImportParams()); + List errorInfos = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + List loginNames = payTempList.stream().map(AidFundPayTemp::getLoginname).toList(); + + List sysUserList = aidFundMemberPayService.dao().query(Sys_user.class, Cnd.where(Sys_user::getLoginname, "in", loginNames)); + List userIds = sysUserList.stream().map(Sys_user::getId).toList(); + + List payList = aidFundMemberPayService.query(Cnd.where(AidFundMemberPay::getUserId, "in", userIds).and(AidFundMemberPay::getYear, "=", year)); + + for (AidFundPayTemp payTemp : payTempList) { + String loginname = payTemp.getLoginname().trim(); + Sys_user sysUser = sysUserList.stream().filter(v -> v.getLoginname().equals(loginname)).findFirst().orElse(null); + if (ObjectUtil.isEmpty(sysUser)) { + payTemp.setResult("工号不存在"); + errorInfos.add(payTemp); + continue; + } + + AidFundMemberPay aidFundMemberPay = payList.stream().filter(v -> v.getUserId().equals(sysUser.getId())).findFirst().orElse(null); + if (ObjectUtil.isEmpty(aidFundMemberPay)) { + payTemp.setResult("未在导入年度找到该用户"); + errorInfos.add(payTemp); + continue; + } + + needInsertList.add(sysUser.getId()); + } + + + int i = 0; + if (Lang.isNotEmpty(needInsertList)) { + i = aidFundMemberPayService.update(Chain.make("isPayed", true), Cnd.where("userId", "in", needInsertList)); + } + + if (Lang.isNotEmpty(errorInfos)) { + NutMap nutMap = NutMap.NEW(); + nutMap.setv("totalCount", payTempList.size()); + nutMap.setv("successCount", i); + nutMap.setv("errorCount", errorInfos.size()); + nutMap.setv("errorList", errorInfos.stream().map(v -> { + return NutMap.NEW().addv("工号", v.getLoginname()).addv("姓名", v.getUsername()).addv("错误原因", v.getResult()); + }).collect(Collectors.toList())); + return Result.success(nutMap); + } + return Result.success(); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); + } + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundChangeRecordController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundChangeRecordController.java new file mode 100644 index 00000000..28e5ec28 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundChangeRecordController.java @@ -0,0 +1,110 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberChangeRecordService; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +/** + * @author zhf + * @date 2026/1/19 17:55 + * @description 基金会员变更记录 + */ +@IocBean +@At("/platform/medicalMutualAid/aidFund/changeRecord") +@Api("基金会员变更记录") +@Ok("json:full") +@Slf4j +public class AidFundChangeRecordController { + + + @Inject + private AidFundMemberChangeRecordService changeRecordService; + + @At("") + @Ok("beetl:/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecord/index.html") + @SaCheckPermission("medicalMutualAid.aidFund.changeRecord") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("medicalMutualAid.aidFund.changeRecord") + public Result pageData(AidFundPageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + info.*, + us.sex, + us.username, + us.loginname, + us.arrivalAtSchoolDate, + us.mobile, + us.unitName, + us.unionName, + us.aidFundMemberUserType, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke, + (select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask' AND taskState in (10,20)) AS startTaskId + FROM + `aid_fund_member_change_record` info + LEFT JOIN vw_user us ON us.id = info.userId + LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id + LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.andEX("us.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType()); + cnd.andEX("us.unitid", "=", pageForm.getUnitId()); + cnd.andEX("us.unionid", "=", pageForm.getUnionId()); + cnd.andEX("info.changeType", "=", pageForm.getChangeType()); + cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear()); + + SqlExpressionGroup group = new SqlExpressionGroup(); + group.or("ins.state","=",20); + group.or("ins.state","is",null); + cnd.and(group); + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("us.unitCode"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("info.id"); + sql.setCondition(cnd); + + Pagination pagination = changeRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundChangeRecordStatisticsController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundChangeRecordStatisticsController.java new file mode 100644 index 00000000..36d8eb01 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundChangeRecordStatisticsController.java @@ -0,0 +1,65 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import com.budwk.app.base.result.Result; +import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberChangeRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Cnd; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author zhf + * @date 2026/1/21 09:21 + * @description 变更统计 + */ +@IocBean +@At("/platform/medicalMutualAid/aidFund/changeRecordStatistics") +@Api("基金会员会员变更统计") +@Ok("json:full") +@Slf4j +public class AidFundChangeRecordStatisticsController { + + @Inject + private AidFundMemberChangeRecordService changeRecordService; + + + + @At("") + @Ok("beetl:/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecordStatistics/index.html") + @SaCheckPermission("medicalMutualAid.aidFund.changeRecordStatistics") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("medicalMutualAid.aidFund.changeRecordStatistics") + public Result pageData(AidFundPageForm pageForm){ + List unionList = changeRecordService.dao().query(Sys_union.class, Cnd.NEW()); + + List maps = new ArrayList<>(); + + unionList.forEach(union->{ + NutMap map = new NutMap(); + map.put("unionName", union.getName()); + }); + + + return Result.success(); + } + + + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundFoundationAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundFoundationAuditController.java index d339e5c9..838600a9 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundFoundationAuditController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundFoundationAuditController.java @@ -2,8 +2,6 @@ package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.page.Pagination; @@ -11,10 +9,6 @@ import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.base.utils.PageUtil; import com.budwk.app.flow.enums.ProcessTaskStateEnum; -import com.budwk.app.flow.service.FlowCommonService; -import com.budwk.app.sys.models.Sys_home_activity; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.activity.culture.models.ActivityTissue; import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberChangeRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -27,7 +21,6 @@ import org.nutz.dao.util.cri.SqlExpressionGroup; 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.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundHistoryRecordController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundHistoryRecordController.java new file mode 100644 index 00000000..83232e9f --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundHistoryRecordController.java @@ -0,0 +1,90 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.controller; + +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.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.date.DateUtil; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberHistoryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * @author zhf + * @date 2026/1/20 18:04 + * @description 会员历史台账 + */ +@IocBean +@At("/platform/medicalMutualAid/aidFund/historyRecord") +@Api("基金会员历史台账") +@Ok("json:full") +@Slf4j +public class AidFundHistoryRecordController { + + + @Inject + private AidFundMemberHistoryService aidFundMemberHistoryService; + + + @At("") + @Ok("beetl:/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/historyRecord/index.html") + @SaCheckPermission("medicalMutualAid.aidFund.historyRecord") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("medicalMutualAid.aidFund.historyRecord") + public Result pageData(AidFundPageForm pageForm) { + Sql sql = aidFundMemberHistoryService.getSql(pageForm); + Pagination pagination = aidFundMemberHistoryService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @Ok("void") + @ApiOperation("导出缴费名单") + @SaCheckPermission("medicalMutualAid.aidFund.payRecord") + public void exportHistoryRecord(AidFundPageForm pageForm, HttpServletResponse response) { + + Sql sql = aidFundMemberHistoryService.getSql(pageForm); + List listMap = aidFundMemberHistoryService.listMap(sql); + listMap.forEach(map -> { + map.put("aidFundMemberJoinTime", DateUtil.format(map.getTime("aidFundMemberJoinTime"), "yyyy-MM-dd")); + }); + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("年度", "year", 20)); + entityList.add(new ExcelExportEntity("工号", "loginname", 20)); + entityList.add(new ExcelExportEntity("姓名", "username", 20)); + entityList.add(new ExcelExportEntity("性别", "sex", 20)); + entityList.add(new ExcelExportEntity("基金会员类型", "aidFundMemberUserType", 20)); + entityList.add(new ExcelExportEntity("所属单位", "unitName", 20)); + entityList.add(new ExcelExportEntity("所属工会", "unionName", 20)); + entityList.add(new ExcelExportEntity("加入时间", "aidFundMemberJoinTime", 20)); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap); + CommonDownloadUtil.download(pageForm.getYear() + "会员历史名单.xlsx", workbook, response); + + + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundManageController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundManageController.java index aeafe06e..3e739a67 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/controller/AidFundManageController.java @@ -1,34 +1,54 @@ package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.controller; +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.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; import com.budwk.app.base.utils.PageUtil; import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.sys.models.Sys_user_role; 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.zhgh.staffbenefit.medicalMutualAid.aidFund.mode.AidFundMemberMode; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberChangeRecord; import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; -import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberChangeRecordService; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; 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.ArrayList; +import java.util.Date; +import java.util.List; + /** * @author zhf * @date 2026/1/17 16:52 @@ -47,7 +67,7 @@ public class AidFundManageController { @Inject - private AidFundMemberChangeRecordService changeRecordService; + private AidFundMemberService aidFundMemberService; @At("") @Ok("beetl:/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/manage/index.html") @@ -59,9 +79,20 @@ public class AidFundManageController { @ApiOperation("分页查询") @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) public Result pageData(AidFundPageForm pageForm) { - Sql sql = Sqls.create(""" - select * from vw_user $condition + SELECT + id, + loginname, + username, + sex, + arrivalAtSchoolDate, + unitName, + unionName, + aidFundMemberUserType, + aidFundMemberJoinTime + FROM + vw_user + $condition """); Cnd cnd = Cnd.NEW(); if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name())) { @@ -71,6 +102,10 @@ public class AidFundManageController { cnd.and(View_user::getUnionId, "=", SecurityUtil.getUnionId()); } } + + if (pageForm.getNotPayedCurrentYear()) { + cnd.and("id", "in", Sqls.create("SELECT userid FROM `aid_fund_member_pay` where `year` = YEAR(CURDATE()) and isPayed = 0")); + } cnd.andEX(Sys_user::getAidFundMemberUserType, "=", pageForm.getAidFundMemberUserType()); cnd.andEX(View_user::getUnionId, "=", pageForm.getUnionId()); cnd.andEX(View_user::getUnitId, "=", pageForm.getUnitId()); @@ -94,4 +129,114 @@ public class AidFundManageController { } + @At + @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) + @Ok("void") + @ApiOperation("导出本年新进会员") + public void exportNewMember(HttpServletResponse response) { + + Sql sql = Sqls.create(""" + SELECT + * + FROM + `vw_user` + WHERE + aidFundMember = 1 + AND YEAR(aidFundMemberJoinTime) = YEAR(NOW()) + ORDER BY + aidFundMemberJoinTime DESC + """); + List listMap = userService.listMap(sql); + + + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("姓名", "username", 20)); + entityList.add(new ExcelExportEntity("工号", "loginname", 20)); + entityList.add(new ExcelExportEntity("性别", "sex", 20)); + entityList.add(new ExcelExportEntity("会员类型", "aidFundMemberUserType", 20)); + entityList.add(new ExcelExportEntity("单位", "unitName", 20)); + entityList.add(new ExcelExportEntity("工会", "unionName", 20)); + entityList.add(new ExcelExportEntity("加入时间", "aidFundMemberJoinTime", 20)); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap); + CommonDownloadUtil.download(DateUtil.thisYear()+"年度新加入会员名单.xlsx", workbook, response); + } + + + @At + @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) + @ApiOperation("生成缴费名单") + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "基金会员-基金会员台账", msg = "生成缴费名单") + public Result createPayList(Integer year) { + aidFundMemberService.createPayList(year); + + return Result.success(); + } + + @At + @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) + @SLog(tag = "基金会员-基金会员台账", msg = "备份基金会员") + @ApiOperation("备份基金会员") + @Aop(TransAop.READ_COMMITTED) + public Result backupMember(Integer year) { + aidFundMemberService.backupMember(year); + + return Result.success(); + } + + + @At + @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) + @SLog(tag = "基金会员-基金会员台账", msg = "批量设置退会") + @ApiOperation("批量设置退会") + @Aop(TransAop.READ_COMMITTED) + public Result batchExit(@Param("ids") String[] ids) { + if (ObjectUtil.isEmpty(ids)) { + return Result.error("请选择要退会的人员"); + } + List recordArrayList = new ArrayList<>(); + for (String id : ids) { + AidFundMemberChangeRecord record = new AidFundMemberChangeRecord() + .setUserId(id) + .setApplyTime(new Date()) + .setChangeType("AIDFUND_MEMBER_CHANGE_TYPE_SEVEN"); + recordArrayList.add(record); + } + userService.update(Chain.make("aidFundMember", AidFundMemberMode.NONE.getCode()) + .add("aidFundMemberQuitTime", new Date()), Cnd.where("id", "in", ids)); + userService.insert(recordArrayList); + return Result.success(); + } + + + @At + @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) + @SLog(tag = "基金会员-基金会员台账", msg = "修改基金会员类型") + @ApiOperation("修改基金会员类型") + public Result doEditAidFundMemberUserType(String userId, String aidFundMemberUserType) { + userService.update(Chain.make("aidFundMemberUserType", aidFundMemberUserType), Cnd.where("id", "=", userId)); + return Result.success(); + } + + @At + @SaCheckPermission(value = {"medicalMutualAid.aidFund.retirementAudit", "h5.medicalMutualAid.aidFund.retirementAudit"}, mode = SaMode.OR) + @SLog(tag = "基金会员-基金会员台账", msg = "更改基金会员状态") + @ApiOperation("更改基金会员状态") + @Aop(TransAop.READ_COMMITTED) + public Result doEditChangeType(String userId, String changeType) { + + AidFundMemberChangeRecord record = new AidFundMemberChangeRecord() + .setUserId(userId) + .setApplyTime(new Date()) + .setChangeType(changeType); + aidFundMemberService.insert(record); + userService.update(Chain.make("aidFundMember", AidFundMemberMode.NONE.getCode()) + .add("aidFundMemberQuitTime", new Date()), Cnd.where("id", "=", userId)); + return Result.success(); + } + + } diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/model/AidFundMemberHistory.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/model/AidFundMemberHistory.java new file mode 100644 index 00000000..3d5d23df --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/model/AidFundMemberHistory.java @@ -0,0 +1,91 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * 医疗互助历史基金会员 + * + * @author 1V + * @date 2021/04/20 + * @since 1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = true) +@Table("aid_fund_member_history") +@Comment("历史基金会员") +public class AidFundMemberHistory extends BaseModel { + + @Column + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("年份") + @ColDefine(type = ColType.INT, width = 4) + private Integer year; + + @Column + @Comment("用户id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 120) + private String loginname; + + @Column + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String username; + + @Column + @Comment("性别") + @ColDefine(type = ColType.VARCHAR, width = 4) + private String sex; + + @Column + @Comment("基金会员人员类型") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String aidFundMemberUserType; + + @Column + @Comment("人员类型") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String personType; + + @Column + @Comment("在职状态") + @ColDefine(type = ColType.VARCHAR, width = 10) + private String userState; + + @Column + @Comment("所在单位ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unitId; + + @Column + @Comment("所在单位") + @ColDefine(type = ColType.VARCHAR, width = 120) + private String unitName; + + @Column + @Comment("所在工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column + @Comment("所在工会") + @ColDefine(type = ColType.VARCHAR, width = 120) + private String unionName; + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/param/AidFundPageForm.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/param/AidFundPageForm.java index 4d42ce63..97dc5ab8 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/param/AidFundPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/param/AidFundPageForm.java @@ -15,4 +15,13 @@ public class AidFundPageForm extends PageForm { private String aidFundMemberUserType; private String unionId; private String unitId; -} + //是否当年未缴费 + private Boolean notPayedCurrentYear; + + //基金会员变更类型 + private String changeType; + private Integer year; + + //是否扣款null全部、1已缴费、0未缴费 + private Integer isPayed; + } diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberHistoryService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberHistoryService.java new file mode 100644 index 00000000..853bf67c --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberHistoryService.java @@ -0,0 +1,12 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberHistory; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import org.nutz.dao.sql.Sql; + +public interface AidFundMemberHistoryService extends BaseService { + + Sql getSql(AidFundPageForm pageForm); + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberPayService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberPayService.java new file mode 100644 index 00000000..35d0f666 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberPayService.java @@ -0,0 +1,13 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberPay; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; + +public interface AidFundMemberPayService extends BaseService { + + + Sql getSql(AidFundPageForm pageForm); +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberService.java new file mode 100644 index 00000000..21aac065 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/AidFundMemberService.java @@ -0,0 +1,29 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.sys.models.Sys_user; + +public interface AidFundMemberService extends BaseService { + + + /** + * 生成缴费列表 + * @param year + */ + void createPayList(Integer year); + + /** + * 备份会员 + * @param year + */ + void backupMember(Integer year); + + + /** + * 获取缴费金额 + * @param user + * @param year + * @return + */ + Double getPayMoney(Sys_user user, Integer year); +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberChangeRecordServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberChangeRecordServiceImpl.java index 06c45f28..9e0fb920 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberChangeRecordServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberChangeRecordServiceImpl.java @@ -50,12 +50,12 @@ public class AidFundMemberChangeRecordServiceImpl extends BaseServiceImpl getUserPayRecordList(String userId) { - if (StrUtil.isBlank(userId)){ - userId=SecurityUtil.getUserId(); + if (StrUtil.isBlank(userId)) { + userId = SecurityUtil.getUserId(); } Sys_user user = dao().fetch(Sys_user.class, Cnd.where(Sys_user::getId, "=", userId)); if (StrUtil.isNotBlank(user.getOldLoginName())) { diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberHistoryServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberHistoryServiceImpl.java new file mode 100644 index 00000000..e82aca34 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberHistoryServiceImpl.java @@ -0,0 +1,58 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberHistory; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberHistoryService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @author zhf + * @date 2026/1/20 18:07 + * @description + */ +@IocBean(args = {"refer:dao"}) +public class AidFundMemberHistoryServiceImpl extends BaseServiceImpl implements AidFundMemberHistoryService { + public AidFundMemberHistoryServiceImpl(Dao dao) { + super(dao); + } + + @Override + public Sql getSql(AidFundPageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + hi.*, + us.aidFundMemberJoinTime + FROM + `aid_fund_member_history` hi + LEFT JOIN sys_user us ON us.id = hi.userId + $condition + """); + + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())){ + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("hi.loginname", pageForm.getSearchKeyword()); + group.orLike("hi.username", pageForm.getSearchKeyword()); + cnd.and(group); + } + cnd.andEX("hi.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType()); + cnd.andEX("hi.unitId", "=", pageForm.getUnitId()); + cnd.andEX("hi.unionId", "=", pageForm.getUnionId()); + cnd.andEX("hi.year", "=", pageForm.getYear()); + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("hi.unitName"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + sql.setCondition(cnd); + return sql; + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberPayServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberPayServiceImpl.java new file mode 100644 index 00000000..45cedd26 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberPayServiceImpl.java @@ -0,0 +1,91 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.web.commons.auth.utils.AuthUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberPay; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.param.AidFundPageForm; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberPayService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @author zhf + * @date 2026/1/20 15:04 + * @description + */ +@IocBean(args = {"refer:dao"}) +public class AidFundMemberPayServiceImpl extends BaseServiceImpl implements AidFundMemberPayService { + public AidFundMemberPayServiceImpl(Dao dao) { + super(dao); + } + + @Override + public Sql getSql(AidFundPageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + pay.isPayed, + pay.money, + pay.year, + pay.aidFundMemberUserType, + pay.id, + pay.userId, + us.username, + us.loginname, + us.sex, + us.unitName, + us.unionName + FROM + `aid_fund_member_pay` pay + LEFT JOIN vw_user us ON us.id = pay.userId + $condition + """); + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())){ + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("us.loginname", pageForm.getSearchKeyword()); + group.orLike("us.username", pageForm.getSearchKeyword()); + cnd.and(group); + } + cnd.andEX("pay.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType()); + cnd.andEX("us.unitid", "=", pageForm.getUnitId()); + cnd.andEX("us.unionid", "=", pageForm.getUnionId()); + cnd.andEX("pay.year", "=", pageForm.getYear()); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + if (AuthUtil.hasRole(RoleConstant.RETIREMENT_WORKPLACE.name())) { + // 离退休人员 + group.or("pay.aidFundMemberUserType", "=", "离退休人员"); + } + if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + //分工会主席 + group.or("us.unionid", "=", SecurityUtil.getUnionId()); + } + if (!AuthUtil.hasRoleOr(RoleConstant.RETIREMENT_WORKPLACE.name(), RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + // 非管理员 + cnd.andEX("pay.userId", "=", SecurityUtil.getUserId()); + } + cnd.and(group); + } + + if (ObjectUtil.isNotEmpty(pageForm.getIsPayed())){ + cnd.and("pay.isPayed", "=", pageForm.getIsPayed()); + } + + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("us.unitCode"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + sql.setCondition(cnd); + return sql; + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberServiceImpl.java new file mode 100644 index 00000000..d27db4f7 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/service/impl/AidFundMemberServiceImpl.java @@ -0,0 +1,121 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.sys.views.View_user; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.mode.AidFundMemberMode; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberHistory; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.model.AidFundMemberPay; +import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.service.AidFundMemberService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Strings; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * @author zhf + * @date 2026/1/19 14:49 + * @description + */ +@IocBean(args = {"refer:dao"}) +public class AidFundMemberServiceImpl extends BaseServiceImpl implements AidFundMemberService { + public AidFundMemberServiceImpl(Dao dao) { + super(dao); + } + + @Override + public void createPayList(Integer year) { + if (year > DateUtil.thisYear()) { + //如果传过来的年大于本年,代表今年生成明年的数据 + year = Calendar.getInstance().get(Calendar.YEAR) + 1; + } else { + //否者就是生成本年的 + } + + dao().clear(AidFundMemberPay.class, Cnd.where(AidFundMemberPay::getYear, "=", year)); + + List aidFundMembers = dao().query(Sys_user.class, Cnd.where("aidFundMember", "=", AidFundMemberMode.NORMAL.getCode())); + List pays = new ArrayList<>(); + + for (Sys_user member : aidFundMembers) { + AidFundMemberPay pay = new AidFundMemberPay() + .setUserId(member.getId()) + .setMoney(getPayMoney(member, year - 1)) + .setYear(year) + .setIsPayed(false) + .setPersonType(member.getPersonType()) + .setAidFundMemberUserType(member.getAidFundMemberUserType()) + .setUserState(member.getUserState()); + pays.add(pay); + } + + dao().insert(pays); + } + + @Override + public void backupMember(Integer year) { + dao().clear(AidFundMemberHistory.class, Cnd.where(AidFundMemberHistory::getYear, "=", year)); + List historyMemberArrayList = new ArrayList<>(); + List sysUserList = dao().query(View_user.class, Cnd.where(View_user::getAidFundMember, "=", AidFundMemberMode.NORMAL.getCode())); + sysUserList.forEach(user -> { + AidFundMemberHistory aidFundHistoryMember = new AidFundMemberHistory(); + aidFundHistoryMember.setYear(year); + aidFundHistoryMember.setUserId(user.getId()); + aidFundHistoryMember.setLoginname(user.getLoginname()); + aidFundHistoryMember.setUsername(user.getUsername()); + aidFundHistoryMember.setSex(user.getSex()); + aidFundHistoryMember.setAidFundMemberUserType(user.getAidFundMemberUserType()); + aidFundHistoryMember.setPersonType(user.getPersonType()); + aidFundHistoryMember.setUserState(user.getUserState()); + aidFundHistoryMember.setUnitId(user.getUnitId()); + aidFundHistoryMember.setUnitName(user.getUnitName()); + aidFundHistoryMember.setUnionId(user.getUnionId()); + aidFundHistoryMember.setUnionName(user.getUnionName()); + historyMemberArrayList.add(aidFundHistoryMember); + }); + insert(historyMemberArrayList); + } + + @Override + public Double getPayMoney(Sys_user user, Integer year) { + Double money = 180.0; + int critical = 2015; + + Date joinTime = ObjectUtil.defaultIfNull(user.getAidFundMemberJoinTime(), DateUtil.date()); + int joinYear = DateUtil.year(joinTime); + + if (joinYear < year) { + return money; + } + + //退出过的话从退出的那年开始算 + Date quitTime = user.getAidFundMemberQuitTime(); + if (quitTime != null) { + int quitYear = DateUtil.year(quitTime); + return (year + 1 - quitYear) * money + (year - quitYear) * money * 0.1; + } + + String schoolTime = user.getArrivalAtSchoolDate(); + if (Strings.isBlank(schoolTime)) { + return money; + } + + //TMD存的字符串 + //入校年份 + int schoolYear = Integer.parseInt(schoolTime.substring(0, 4)); + int beforeYear = Math.max(schoolYear, critical); + if (schoolYear < 2015) { + return (year + 1 - beforeYear + 1) * money + (year - beforeYear + 1) * money * 0.1; + } + return (year + 1 - beforeYear) * money + (year - beforeYear) * money * 0.1; + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/template/AidFundPayTemp.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/template/AidFundPayTemp.java new file mode 100644 index 00000000..ee351332 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/aidFund/template/AidFundPayTemp.java @@ -0,0 +1,20 @@ +package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.aidFund.template; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @author zhf + * @date 2026/1/20 17:39 + * @description + */ +@Data +public class AidFundPayTemp { + + @Excel(name = "工号") + private String loginname; + @Excel(name = "姓名") + private String username; + + String result; +} diff --git a/src/main/resources/static/components/plugins/sysImport/index.vue b/src/main/resources/static/components/plugins/sysImport/index.vue index dd63436e..daa6e873 100644 --- a/src/main/resources/static/components/plugins/sysImport/index.vue +++ b/src/main/resources/static/components/plugins/sysImport/index.vue @@ -1,25 +1,26 @@ diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecord/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecord/index.html new file mode 100644 index 00000000..a442f2a7 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecord/index.html @@ -0,0 +1,157 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecordStatistics/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecordStatistics/index.html new file mode 100644 index 00000000..f67a08c1 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/changeRecordStatistics/index.html @@ -0,0 +1,92 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/historyRecord/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/historyRecord/index.html new file mode 100644 index 00000000..a1a82f98 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/historyRecord/index.html @@ -0,0 +1,144 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 导出名单 + + + + + + + + + + + + + + + + +
+ + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/manage/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/manage/index.html index b344e4ea..9097997e 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/manage/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/manage/index.html @@ -17,22 +17,87 @@ layout("/layouts/platform.html"){ style="width: 100%"> + + + + + + + + + + + + + 当年未缴费【基金会员】名单 + + + 批量设置为退会 + + + + 导出{{new + Date().getFullYear()}}年新会员名单 + + + + 备份会员名单 + + + + {{year}}年 + + + + + + 生成缴费名单 + + + + {{year}}年 + + + + ref="table" row-key="id" style="width: 100%" v-loading="tableLoading"> + + + + - + + + + + + + + + + + + + + + + + + + + 取 消 + 提 交 + + + + + + + + + + + + + + + + + + + 取 消 + 提 交 + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/payRecord/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/payRecord/index.html new file mode 100644 index 00000000..b39c3728 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/payRecord/index.html @@ -0,0 +1,240 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 全部 + 已缴费 + 未缴费 + + + 导入缴费记录 + + + 导出名单 + + + 清空{{pageForm.year}}年缴费名单 + + + + + + + + + + + + + + + + + + + + + +
+ + + + +