diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/controller/RetireSouvenirsBatchController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/controller/RetireSouvenirsBatchController.java new file mode 100644 index 00000000..9ce322cb --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/controller/RetireSouvenirsBatchController.java @@ -0,0 +1,216 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.model.ExcelImportRes; +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.EasyExcelUtil; +import com.budwk.app.sys.views.View_user; +import com.budwk.app.zhgh.dayofficework.healthCheckup.template.HealthCheckupImportTemp; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsBatch; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsLedger; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.service.RetireSouvenirsBatchService; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.template.RetireSouvenirsImportTemp; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.formula.functions.T; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Strings; +import org.nutz.mvc.annotation.AdaptBy; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; +import org.nutz.mvc.upload.TempFile; +import org.nutz.mvc.upload.UploadAdaptor; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @ClassName RetireSouvenirsBatchController + * @Author JyuHsin + * @Date 2025/10/14 9:51 + * @Version 1.0 + * @Description TODO + */ +@IocBean +@Ok("json:full") +@ApiOperation("批次管理") +@At("/platform/retireSouvenirs/batch") +public class RetireSouvenirsBatchController { + + @Inject + private Dao dao; + @Inject + private RetireSouvenirsBatchService batchService; + + @At("") + @Ok("beetl:/platform/zhgh/dayofficework/retiresouvenirs/batch/index.html") + @SaCheckPermission("retireSouvenirs.batch") + public void index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission("retireSouvenirs.batch") + public Result pageData(PageForm pageForm, + @Param(value = "year") Integer year) { + Sql sql = Sqls.create(""" + select + b.*, + u.username as userName, + (select count(1) from retire_souvenirs_ledger where batchId = b.id) as count + from + retire_souvenirs_batch b + left join vw_user u on u.id = b .createdBy + $condition + """); + Cnd cnd = Cnd.NEW(); + + cnd.andEX("b.year", "=", year); + cnd.and(Cnd.likeEX("b.name", pageForm.getSearchKeyword())); + + sql.setCondition(cnd); + Pagination pagination = batchService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @ApiOperation("新增/修改批次") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs.batch") + @SLog(tag = "退休人员纪念品-批次管理", msg = "新增/修改批次") + public Result submit(RetireSouvenirsBatch batch) { + batchService.insertOrUpdate(batch); + return Result.success(); + } + + @At + @ApiOperation("删除批次") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs.batch") + @SLog(tag = "退休人员纪念品-批次管理", msg = "删除批次") + public Result delete(String id) { + batchService.delete(id); + batchService.dao().clear(RetireSouvenirsLedger.class, Cnd.where(RetireSouvenirsLedger::getBatchId, "=", id)); + return Result.success(); + } + + @At + @ApiOperation("查询批次") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs") + public Result selectList() { + List list = batchService.query(Cnd.NEW().desc(RetireSouvenirsBatch::getCreatedAt)); + return Result.success(list); + } + + @At + @Ok("void") + @ApiOperation("下载人员名单导入模版") + @SaCheckPermission("retireSouvenirs.batch") + public void downloadTem(HttpServletResponse response) { + List entities = new ArrayList<>(); + entities.add(new ExcelExportEntity("工号", "loginName", 20)); + entities.add(new ExcelExportEntity("姓名", "userName", 20)); + entities.add(new ExcelExportEntity("退休时间", "retireTime", 20)); + ExportParams exportParams = new ExportParams(); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, Collections.emptyList()); + CommonDownloadUtil.download("退休人员名单导入模版.xlsx", workbook, response); + } + + @At + @ApiOperation("退休人员名单导入") + @SLog(tag = "退休人员纪念品-批次管理", msg = "人员名单导入") + @SaCheckPermission("retireSouvenirs.batch") + @Aop(TransAop.READ_COMMITTED) + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + public Result temImport(TempFile file, String batchId, String type) { + + if(StrUtil.isBlank(batchId)) { + return Result.error("批次信息为空"); + } + if("clear".equals(type)) { + dao.clear(RetireSouvenirsLedger.class, Cnd.where(RetireSouvenirsLedger::getBatchId, "=", batchId)); + } + + List ts = EasyExcelUtil.syncReadModel(file.getFile(), RetireSouvenirsImportTemp.class, 0, 1); + List importTemps = JSONUtil.parseArray(JSONUtil.toJsonStr(ts)).toList(RetireSouvenirsImportTemp.class); + + List loginNames = importTemps.stream().map(RetireSouvenirsImportTemp::getLoginName).filter(Strings::isNotBlank).toList(); + List userList = dao.query(View_user.class, Cnd.where(View_user::getLoginname, "in", loginNames)); + Map userMap = userList.stream().collect(Collectors.toMap(View_user::getLoginname, o -> o)); + + String[] patterns = { + "yyyy-MM-dd", + "yyyy/MM/dd", + "yyyy-MM", + "yyyy/MM", + "yyyyMM", + "yyyyMMdd", + "yyyy年MM月dd日", + "yyyy年M月d日" + }; + + List result = new ArrayList<>(); + for (int i = 0; i < importTemps.size(); i++) { + RetireSouvenirsImportTemp temp = importTemps.get(i); + + if (StrUtil.isBlank(temp.getLoginName())) { + temp.setErrInfo("工号为空", i + 1); + continue; + } + if (importTemps.stream().filter(s -> s.getLoginName().equals(temp.getLoginName())).count() > 1) { + temp.setErrInfo("重复数据", i + 1); + } + View_user user = userMap.get(temp.getLoginName()); + if (user == null) { + temp.setErrInfo("无此用户", i + 1); + continue; + } + + DateTime retireTime = DateUtil.parse(temp.getRetireTime(), patterns); + String format = DateUtil.format(retireTime, DatePattern.NORM_DATE_PATTERN); + + RetireSouvenirsLedger ledger = new RetireSouvenirsLedger(); + ledger.setBatchId(batchId); + ledger.setUserId(user.getId()); + ledger.setReceive(false); + ledger.setRetireTime(format); + result.add(ledger); + } + + dao.insert(result); + // 创建结果集 + ExcelImportRes excelImportRes = new ExcelImportRes<>(); + excelImportRes.setTotalRecords(importTemps.size()); + excelImportRes.setSuccessCount(Math.max(result.size() - excelImportRes.getFailedCount(), 0)); + // 添加错误记录 + excelImportRes.setErrorDetails(importTemps.stream().filter(s -> StrUtil.isNotBlank(s.getErrMsg())).toList()); + excelImportRes.setFailedCount(excelImportRes.getErrorDetails().size()); + + return Result.success(excelImportRes); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/controller/RetireSouvenirsLedgerController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/controller/RetireSouvenirsLedgerController.java new file mode 100644 index 00000000..b56112d2 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/controller/RetireSouvenirsLedgerController.java @@ -0,0 +1,227 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.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 cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +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.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.dayofficework.message.service.GlobalMessageSendService; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsLedger; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsMsg; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.service.RetireSouvenirsLedgerService; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.vo.RetireSouvenirsLedgerPageForm; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.entity.annotation.SQL; +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.List; + +/** + * @ClassName RetireSouvenirsLedgerController + * @Author JyuHsin + * @Date 2025/10/14 9:52 + * @Version 1.0 + * @Description TODO + */ +@IocBean +@Ok("json:full") +@ApiOperation("人员台账") +@At("/platform/retireSouvenirs/ledger") +public class RetireSouvenirsLedgerController { + + @Inject + private Dao dao; + @Inject + private RetireSouvenirsLedgerService ledgerService; + @Inject + private GlobalMessageSendService sendService; + + @At("") + @Ok("beetl:/platform/zhgh/dayofficework/retiresouvenirs/ledger/index.html") + @SaCheckPermission("retireSouvenirs.ledger") + public void index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission("retireSouvenirs.ledger") + public Result pageData(RetireSouvenirsLedgerPageForm pageForm) { + Sql sql = this.generateSql(pageForm); + Pagination pagination = ledgerService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @ApiOperation("删除人员") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs.ledger") + @SLog(tag = "退休人员纪念品-人员台账", msg = "删除人员") + public Result delete(String id) { + ledgerService.delete(id); + return Result.success(); + } + + @At + @ApiOperation("设置领取状态") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs.ledger") + @SLog(tag = "退休人员纪念品-人员台账", msg = "设置领取状态") + public Result receive(String id) { + RetireSouvenirsLedger ledger = ledgerService.fetch(id); + ledger.setReceive(!ledger.getReceive()); + ledgerService.update(ledger); + return Result.success(); + } + + @At + @ApiOperation("短信提醒") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs.ledger") + @SLog(tag = "退休人员纪念品-人员台账", msg = "短信提醒") + public Result msg(@Param(value = "pageForm") RetireSouvenirsLedgerPageForm pageForm, + @Param(value = "message") String message) { + Sql sql = this.generateSql(pageForm); + List listMap = ledgerService.listMap(sql); + + List msgList = listMap.stream().map(o -> { + RetireSouvenirsMsg msg = new RetireSouvenirsMsg(); + msg.setBatchId(pageForm.getBatchId()); + msg.setUserId(o.getString("userId")); + msg.setSendUserId(SecurityUtil.getUserId()); + msg.setSendUserName(SecurityUtil.getUserUsername()); + msg.setMessage(message); + msg.setSendTime(DateUtil.now()); + return msg; + }).toList(); + List list = listMap.stream().map(o -> o.getString("loginName")).toList(); + + sendService.sendMessage("智慧工会", message, list); + dao.insert(msgList); + return Result.success(); + } + + @At + @ApiOperation("查询短信发送记录") + @SaCheckPermission("retireSouvenirs.ledger") + public Result selectMsgList(String batchId, String userId) { + Cnd cnd = Cnd.NEW(); + cnd.and(RetireSouvenirsMsg::getBatchId, "=", batchId); + cnd.and(RetireSouvenirsMsg::getUserId, "=", userId); + cnd.desc(RetireSouvenirsMsg::getSendTime); + List list = dao.query(RetireSouvenirsMsg.class, cnd); + return Result.success(list); + } + + @At + @ApiOperation("删除短信发送记录") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("retireSouvenirs.ledger") + @SLog(tag = "退休人员纪念品-人员台账", msg = "删除短信发送记录") + public Result deleteMsg(String id) { + dao.delete(RetireSouvenirsMsg.class, id); + return Result.success(); + } + + @At + @Ok("void") + @SaCheckPermission("retireSouvenirs.ledger") + @ApiOperation("导出退休人员名单") + public void download(RetireSouvenirsLedgerPageForm pageForm, + HttpServletResponse response) { + Sql sql = this.generateSql(pageForm); + List listMap = ledgerService.listMap(sql); + + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("姓名", "userName", 16)); + exportEntities.add(new ExcelExportEntity("工号", "loginName", 16)); + exportEntities.add(new ExcelExportEntity("性别", "sex", 10)); + exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20)); + exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 30)); + exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 30)); + exportEntities.add(new ExcelExportEntity("退休时间", "retireTimeFormat", 20)); + exportEntities.add(new ExcelExportEntity("是否领取", "receiveStatus", 10)); + exportEntities.add(new ExcelExportEntity("签字", "sign", 20)); + + try { + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, listMap); + CommonDownloadUtil.download("退休人员名单台账.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private Sql generateSql(RetireSouvenirsLedgerPageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + l.*, + u.userName, + u.loginName, + u.sex, + u.mobile, + u.unitName, + u.unionName, + if(l.receive = true, '已领取', '未领取') as receiveStatus, + DATE_FORMAT(l.retireTime, '%Y-%m') as retireTimeFormat, + (select count(1) from retire_souvenirs_msg where batchId = l.batchId and userId = l.userId) as msgCount + FROM + retire_souvenirs_ledger l + LEFT JOIN vw_user u ON u.id = l.userId + $condition + """); + Cnd cnd = Cnd.NEW(); + + cnd.andEX("l.batchId", "=", pageForm.getBatchId()); + cnd.andEX("year(l.retireTime)", "=", pageForm.getYear()); + if("prev".equals(pageForm.getSelectTime())) { + String time = DateUtil.thisYear() + "-" + String.format("%02d", pageForm.getMonth()) + "-01"; + cnd.andEX("l.retireTime", "<", time); + } else { + cnd.andEX("month(l.retireTime)", "=", pageForm.getMonth()); + } + cnd.andEX("u.unitId", "=", pageForm.getUnitId()); + cnd.andEX("u.unionId", "=", pageForm.getUnionId()); + cnd.andEX("l.receive", "=", pageForm.getReceive()); + + if(StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("u.userName", pageForm.getSearchKeyword()); + group.orLike("u.loginName", pageForm.getSearchKeyword()); + cnd.and(group); + } + + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.asc("l.receive").asc("l.retireTime"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + + sql.setCondition(cnd); + return sql; + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsBatch.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsBatch.java new file mode 100644 index 00000000..33e0c996 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsBatch.java @@ -0,0 +1,43 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @ClassName RetireSouvenirsBatch + * @Author JyuHsin + * @Date 2025/10/14 9:52 + * @Version 1.0 + * @Description 退休人员纪念品批次管理 + */ +@Data +@Table +@Comment("退休人员纪念品-批次管理") +@EqualsAndHashCode(callSuper = true) +public class RetireSouvenirsBatch extends BaseModel { + + @Name + @Column + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("年度") + @ColDefine(type = ColType.INT) + private Integer year; + + @Column + @Comment("批次名称") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column + @Comment("备注") + @ColDefine(type = ColType.VARCHAR, width = 600) + private String remark; +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsLedger.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsLedger.java new file mode 100644 index 00000000..2a74d722 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsLedger.java @@ -0,0 +1,54 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @ClassName RetireSouvenirsLedger + * @Author JyuHsin + * @Date 2025/10/14 9:52 + * @Version 1.0 + * @Description 退休人员纪念品人员台账管理 + */ +@Data +@Table +@Comment("退休人员纪念品-人员台账") +@EqualsAndHashCode(callSuper = true) +public class RetireSouvenirsLedger extends BaseModel { + + @Name + @Column + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("批次id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String batchId; + + @Column + @Comment("人员Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column + @Comment("退休时间") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String retireTime; + + @Column + @Comment("是否领取") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean receive; + + @Column + @Comment("领取时间") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String receiveTime; +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsMsg.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsMsg.java new file mode 100644 index 00000000..633d11ff --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/model/RetireSouvenirsMsg.java @@ -0,0 +1,58 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @ClassName RetireSouvenirsMsg + * @Author JyuHsin + * @Date 2025/10/15 10:03 + * @Version 1.0 + * @Description TODO + */ +@Data +@Table +@Comment("退休人员纪念品-短信发送记录") +@EqualsAndHashCode(callSuper = true) +public class RetireSouvenirsMsg extends BaseModel { + + @Name + @Column + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("批次id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String batchId; + + @Column + @Comment("人员Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column + @Comment("发送人") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sendUserId; + + @Column + @Comment("发送人姓名") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sendUserName; + + @Column + @Comment("发送内容") + @ColDefine(type = ColType.VARCHAR, width = 600) + private String message; + + @Column + @Comment("发送时间") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String sendTime; +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/RetireSouvenirsBatchService.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/RetireSouvenirsBatchService.java new file mode 100644 index 00000000..e9ed96a4 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/RetireSouvenirsBatchService.java @@ -0,0 +1,14 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsBatch; + +/** + * @ClassName RetireSouvenirsBatchService + * @Author JyuHsin + * @Date 2025/10/14 14:22 + * @Version 1.0 + * @Description TODO + */ +public interface RetireSouvenirsBatchService extends BaseService { +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/RetireSouvenirsLedgerService.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/RetireSouvenirsLedgerService.java new file mode 100644 index 00000000..e83cdfe8 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/RetireSouvenirsLedgerService.java @@ -0,0 +1,14 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsLedger; + +/** + * @ClassName RetireSouvenirsLedgerService + * @Author JyuHsin + * @Date 2025/10/14 14:22 + * @Version 1.0 + * @Description TODO + */ +public interface RetireSouvenirsLedgerService extends BaseService { +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/impl/RetireSouvenirsBatchServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/impl/RetireSouvenirsBatchServiceImpl.java new file mode 100644 index 00000000..9a4ecea3 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/impl/RetireSouvenirsBatchServiceImpl.java @@ -0,0 +1,22 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsBatch; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.service.RetireSouvenirsBatchService; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @ClassName RetireSouvenirsBatchServiceImpl + * @Author JyuHsin + * @Date 2025/10/14 14:22 + * @Version 1.0 + * @Description TODO + */ +@IocBean(args = {"refer:dao"}) +public class RetireSouvenirsBatchServiceImpl extends BaseServiceImpl implements RetireSouvenirsBatchService { + + public RetireSouvenirsBatchServiceImpl(Dao dao) { + super(dao); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/impl/RetireSouvenirsLedgerServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/impl/RetireSouvenirsLedgerServiceImpl.java new file mode 100644 index 00000000..85ab4bb7 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/service/impl/RetireSouvenirsLedgerServiceImpl.java @@ -0,0 +1,22 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.model.RetireSouvenirsLedger; +import com.budwk.app.zhgh.dayofficework.retiresouvenirs.service.RetireSouvenirsLedgerService; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @ClassName RetireSouvenirsLedgerServiceImpl + * @Author JyuHsin + * @Date 2025/10/14 14:23 + * @Version 1.0 + * @Description TODO + */ +@IocBean(args = {"refer:dao"}) +public class RetireSouvenirsLedgerServiceImpl extends BaseServiceImpl implements RetireSouvenirsLedgerService { + + public RetireSouvenirsLedgerServiceImpl(Dao dao) { + super(dao); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/template/RetireSouvenirsImportTemp.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/template/RetireSouvenirsImportTemp.java new file mode 100644 index 00000000..1af8d967 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/template/RetireSouvenirsImportTemp.java @@ -0,0 +1,33 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.template; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.budwk.app.base.model.ExcelImportError; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @ClassName RetireSouvenirsImportTemp + * @Author JyuHsin + * @Date 2025/10/14 15:21 + * @Version 1.0 + * @Description TODO + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ContentRowHeight(20) +@HeadRowHeight(20) +@ColumnWidth(25) +public class RetireSouvenirsImportTemp extends ExcelImportError { + + @ExcelProperty("工号" ) + private String loginName; + + @ExcelProperty("姓名") + private String userName; + + @ExcelProperty("退休时间") + private String retireTime; +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/vo/RetireSouvenirsLedgerPageForm.java b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/vo/RetireSouvenirsLedgerPageForm.java new file mode 100644 index 00000000..88ce264b --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/retiresouvenirs/vo/RetireSouvenirsLedgerPageForm.java @@ -0,0 +1,23 @@ +package com.budwk.app.zhgh.dayofficework.retiresouvenirs.vo; + +import com.budwk.app.base.param.PageForm; +import lombok.Data; + +/** + * @ClassName RetireSouvenirsLedgerPageForm + * @Author JyuHsin + * @Date 2025/10/15 9:52 + * @Version 1.0 + * @Description TODO + */ +@Data +public class RetireSouvenirsLedgerPageForm extends PageForm { + + private String batchId; + private Integer year; + private Integer month; + private String unitId; + private String unionId; + private String selectTime; + private Boolean receive; +} diff --git a/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/batch/basicForm.js b/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/batch/basicForm.js new file mode 100644 index 00000000..29e928e1 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/batch/basicForm.js @@ -0,0 +1,78 @@ +const basicForm = { + template: /*language=HTML*/ ` +
+ + + + + + + + + + + + + + +
+ `, + data() { + return { + formData: { + year: new Date().getFullYear().toString(), + }, + formRules: { + year: [{required: true, message: '必填', trigger: ['blur']}], + name: [{required: true, message: '必填', trigger: ['blur']}], + }, + visible: false, + } + }, + methods: { + onOpen(row) { + if(row && row.id) { + this.$set(row, 'year', row.year.toString()) + this.formData = clone(row) + } else { + this.formData = { + year: new Date().getFullYear().toString() + } + } + this.visible = true + }, + onSubmit() { + this.$refs.formRef.validate((valid) => { + if (valid) { + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(async () => { + const resp = await this.$axios.post("/platform/retireSouvenirs/batch/submit", this.formData) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.$emit('refresh') + this.visible = false + } else { + this.$message.warning(resp.msg) + } + }) + } + }) + }, + }, + style: /*language=CSS*/ ` + + ` +} diff --git a/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/batch/index.html b/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/batch/index.html new file mode 100644 index 00000000..404f1f7e --- /dev/null +++ b/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/batch/index.html @@ -0,0 +1,163 @@ + + + + +
+ + + + + + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/ledger/index.html b/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/ledger/index.html new file mode 100644 index 00000000..cce0f635 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/dayofficework/retiresouvenirs/ledger/index.html @@ -0,0 +1,383 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +