diff --git a/src/main/java/com/budwk/app/zhgh/activity/fellowship/controller/manage/FellowshipTypeController.java b/src/main/java/com/budwk/app/zhgh/activity/fellowship/controller/manage/FellowshipTypeController.java index d2b00eb2..37550b25 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/fellowship/controller/manage/FellowshipTypeController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/fellowship/controller/manage/FellowshipTypeController.java @@ -81,7 +81,7 @@ public class FellowshipTypeController { c.and("typeId", "=", item.getString("id")); c.asc("columnIndex"); List signColumns = dao.query(FellowshipMobileSignColumn.class, c); - item.put("trainMobileSignColumnList", signColumns); + item.put("mobileSignColumnList", signColumns); }); return Result.success().addData(pagination); @@ -99,7 +99,7 @@ public class FellowshipTypeController { } int totalCount = dao.count(FellowshipType.class); type.setXh(totalCount + 1); - dao.insertWith(type, "trainMobileSignColumnList"); + dao.insertWith(type, "mobileSignColumnList"); return Result.success(); } @@ -114,7 +114,7 @@ public class FellowshipTypeController { } dao.update(type); dao.clear(FellowshipMobileSignColumn.class, Cnd.where("typeId", "=", type.getId())); - dao.insertLinks(type, "trainMobileSignColumnList"); + dao.insertLinks(type, "mobileSignColumnList"); return Result.success(); } @@ -152,7 +152,7 @@ public class FellowshipTypeController { @SaCheckLogin public Result getAllType(@Param(value = "id") String id) { List fellowshipTypeList = dao.query(FellowshipType.class, Cnd.NEW().andEX("id", "=", id).asc("xh")); - dao.fetchLinks(fellowshipTypeList, "trainMobileSignColumnList", Cnd.NEW().asc("columnIndex")); + dao.fetchLinks(fellowshipTypeList, "mobileSignColumnList", Cnd.NEW().asc("columnIndex")); return Result.success().addData(fellowshipTypeList); } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryManageController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryManageController.java new file mode 100644 index 00000000..bb5851ab --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryManageController.java @@ -0,0 +1,190 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; +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.zhgh.dayofficework.cadreTraining.model.CadreTrainingAct; +import com.budwk.app.zhgh.dayofficework.exerciseCard.vo.ExercisePeopleImportVo; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryUser; +import com.budwk.app.zhgh.dayofficework.womanSanitary.service.WomanSanitaryUserService; +import com.budwk.app.zhgh.dayofficework.womanSanitary.vo.WomanSanitaryUserImportVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +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.aop.Aop; +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.annotation.Param; +import org.nutz.mvc.upload.TempFile; +import org.nutz.mvc.upload.UploadAdaptor; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.net.URLEncoder; +import java.util.ArrayList; + + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 14:11 + */ + +@IocBean +@At("/platform/womanSanitary/manage") +@Api("人员管理") +@Ok("json:full") +@Slf4j +public class WomanSanitaryManageController { + + @Inject + private Dao dao; + @Inject + private WomanSanitaryUserService womanSanitaryUserService; + + + @At("/index") + @Ok("beetl:/platform/zhgh/dayofficework/womanSanitary/manage/index.html") + @SaCheckPermission("womanSanitary.manage") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/dayofficework/womanSanitary/manage/index.html") + @SaCheckPermission("h5.womanSanitary.manage") + public void h5Index() { + } + + @At + @ApiOperation("人员分页") + @SaCheckPermission(value = {"womanSanitary.manage", "h5.womanSanitary.manage"}, mode = SaMode.OR) + public Result pageData(@Valid PageForm pageForm, + Integer year, + String unionId, + String unitId, + String searchKeyword, + String sex) { + Cnd cnd = Cnd.NEW(); + // 年度查询条件 + cnd.andEX("year(applyTime)", "=", year); + + // 姓名和工号查询条件 + if (StrUtil.isNotBlank(searchKeyword)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike("userName", "%" + searchKeyword + "%"); + seg.orLike("loginName", "%" + searchKeyword + "%"); + cnd.and(seg); + } + + // 工会、单位名称查询条件 + cnd.andEX("unionId", "=", unionId); + cnd.andEX("unitId", "=", unitId); + + // 性别查询条件 + cnd.andEX("sex", "=", sex); + + cnd.desc("applyTime"); + Pagination pagination = womanSanitaryUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + return Result.success(pagination); + } + + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"womanSanitary.manage", "h5.womanSanitary.manage"}, mode = SaMode.OR) + public Result delete(@Param("id") String id) { + womanSanitaryUserService.delete(id); + return Result.success(); + } + + @At + @SaCheckPermission(value = {"womanSanitary.manage", "h5.womanSanitary.manage"}, mode = SaMode.OR) + public Result findOne(String id){ + WomanSanitaryUser project = womanSanitaryUserService.fetch(id); + return Result.success(project); + } + + @At + @ApiOperation("设置发放状态") + @SaCheckPermission(value = {"womanSanitary.query", "h5.womanSanitary.query"}, mode = SaMode.OR) + public Result setIssue(@Param("id") String id, @Param("issue") boolean issue) { + try { + womanSanitaryUserService.update(Chain.make("issue", issue), Cnd.where("id", "=", id)); + return Result.success(issue ? "发放成功" : "取消发放成功"); + } catch (Exception e) { + log.error("设置发放状态失败", e); + return Result.error("操作失败: " + e.getMessage()); + } + } + + @At + @ApiOperation("批量切换发放状态") + @SaCheckPermission(value = {"womanSanitary.manage", "h5.womanSanitary.manage"}, mode = SaMode.OR) + public Result batchIssue() { + try { + // 方案1: 使用SQL直接切换所有记录的状态 + Sql sql = Sqls.create("UPDATE woman_sanitary_user SET issue = !issue"); + dao.execute(sql); + + return Result.success("状态切换成功"); + } catch (Exception e) { + log.error("批量切换发放状态失败", e); + return Result.error("操作失败: " + e.getMessage()); + } + } + + @At + @Ok("void") + @ApiOperation("导入模板下载") + @SaCheckPermission("womanSanitary.manage") + public void downloadTemplate(HttpServletResponse response) { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("人员导入模版", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), WomanSanitaryUserImportVo.class) + .sheet("人员导入模版") + .doWrite(ArrayList::new); + } catch (Exception e) { + throw new RuntimeException("导出失败"); + } + } + + + + @At + @Aop(TransAop.READ_COMMITTED) + @ApiOperation("导入人员") + @SaCheckPermission("womanSanitary.manage") + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + public Result importData(TempFile file, Boolean isFlag) { + try { + System.out.println(isFlag); + NutMap nutMap = womanSanitaryUserService.handlingMemberImport(file, isFlag); + if (Lang.isNotEmpty(nutMap)) { + 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/dayofficework/womanSanitary/controller/WomanSanitaryProjectController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryProjectController.java new file mode 100644 index 00000000..74a50091 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryProjectController.java @@ -0,0 +1,108 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +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.zhgh.dayofficework.cadreTraining.model.CadreTrainingAct; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryProject; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryUser; +import com.budwk.app.zhgh.dayofficework.womanSanitary.service.WomanSanitaryProjectService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; +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; +import org.nutz.mvc.annotation.Param; + +import javax.validation.Valid; + + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 14:11 + */ + +@IocBean +@At("/platform/womanSanitary/project") +@Api("项目管理") +@Ok("json:full") +@Slf4j +public class WomanSanitaryProjectController { + + @Inject + private Dao dao; + @Inject + private WomanSanitaryProjectService womanSanitaryProjectService; + + @At("/index") + @Ok("beetl:/platform/zhgh/dayofficework/womanSanitary/project/index.html") + @SaCheckPermission("womanSanitary.project") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/dayofficework/womanSanitary/project/index.html") + @SaCheckPermission("h5.womanSanitary.project") + public void h5Index() { + } + + @At + @ApiOperation("事项分页") + @SaCheckPermission(value = {"womanSanitary.project", "h5.womanSanitary.project"}, mode = SaMode.OR) + public Result pageData(@Valid PageForm pageForm, Integer year) { + Cnd cnd = Cnd.NEW(); + cnd.andEX("year", "=", year); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + cnd.and(Cnd.likeEX("projectName", pageForm.getSearchKeyword())); + } + Pagination pagination = womanSanitaryProjectService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + return Result.success(pagination); + } + + + @At + @ApiOperation("事项保存") + @SaCheckPermission(value = {"womanSanitary.project", "h5.womanSanitary.project"}, mode = SaMode.OR) + public Result save( @Param("data") WomanSanitaryProject womanSanitaryProject) { + if (StrUtil.isBlank(womanSanitaryProject.getId())) womanSanitaryProject.setYear(DateUtil.thisYear()); + dao.insertOrUpdate(womanSanitaryProject); + return Result.success(); + } + + @At + @ApiOperation("状态切换") + @SaCheckPermission(value = {"womanSanitary.project", "h5.womanSanitary.project"}, mode = SaMode.OR) + public Result switchChange(WomanSanitaryProject womanSanitaryProject) { + womanSanitaryProjectService.updateIgnoreNull(womanSanitaryProject); + return Result.success(); + } + + + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"womanSanitary.project", "h5.womanSanitary.project"}, mode = SaMode.OR) + public Result delete(@Param("id") String id) { + womanSanitaryProjectService.delete(id); + dao.clear(WomanSanitaryUser.class, Cnd.where(WomanSanitaryUser::getProjectId, "=", id)); + return Result.success(); + } + + @At + @SaCheckPermission(value = {"womanSanitary.project", "h5.womanSanitary.project"}, mode = SaMode.OR) + public Result findOne(String id){ + WomanSanitaryProject project = womanSanitaryProjectService.fetch(id); + return Result.success(project); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryQueryController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryQueryController.java new file mode 100644 index 00000000..872b10e9 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/controller/WomanSanitaryQueryController.java @@ -0,0 +1,85 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +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.zhgh.dayofficework.cadreTraining.model.CadreTrainingAct; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryProject; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryUser; +import com.budwk.app.zhgh.dayofficework.womanSanitary.service.WomanSanitaryProjectService; +import com.budwk.app.zhgh.dayofficework.womanSanitary.service.WomanSanitaryUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; +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; +import org.nutz.mvc.annotation.Param; + +import javax.validation.Valid; + + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 14:11 + */ + +@IocBean +@At("/platform/womanSanitary/query") +@Api("查询统计") +@Ok("json:full") +@Slf4j +public class WomanSanitaryQueryController { + + @Inject + private Dao dao; + @Inject + private WomanSanitaryUserService womanSanitaryUserService; + + + @At("/index") + @Ok("beetl:/platform/zhgh/dayofficework/womanSanitary/query/index.html") + @SaCheckPermission("womanSanitary.query") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/dayofficework/womanSanitary/query/index.html") + @SaCheckPermission("h5.womanSanitary.query") + public void h5Index() { + } + + @At + @ApiOperation("分页") + @SaCheckPermission(value = {"womanSanitary.query", "h5.womanSanitary.query"}, mode = SaMode.OR) + public Result pageData(@Valid PageForm pageForm, Integer year) { + Cnd cnd = Cnd.NEW(); + cnd.andEX("year", "=", year); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + cnd.and(Cnd.likeEX("projectName", pageForm.getSearchKeyword())); + } + Pagination pagination = womanSanitaryUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + return Result.success(pagination); + } + + + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"womanSanitary.query", "h5.womanSanitary.query"}, mode = SaMode.OR) + public Result delete(@Param("id") String id) { + womanSanitaryUserService.delete(id); + dao.clear(CadreTrainingAct.class, Cnd.where(CadreTrainingAct::getId, "=", id)); + return Result.success(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/model/WomanSanitaryProject.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/model/WomanSanitaryProject.java new file mode 100644 index 00000000..4abd662d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/model/WomanSanitaryProject.java @@ -0,0 +1,74 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.model; + + +import cn.hutool.json.JSONObject; +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 14:11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table("woman_sanitary_project") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("女职工卫生费事项") +public class WomanSanitaryProject extends BaseModel implements Serializable { + + @Column + @Name + @Comment("id") + @ColDefine(type = ColType.VARCHAR, width = 32) + @Prev(els = {@EL("uuid()")}) + private String id; + + @Column + @Comment("年度") + @ColDefine(type = ColType.INT) + private Integer year; + + @Column + @Comment("项目名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String projectName; + + @Column + @Comment("活动范围Id") + @ColDefine(type = ColType.INT, width = 32) + private Integer activityGroupId; + + + @Column + @Comment("开始时间") + @ColDefine(type = ColType.DATETIME) + private Date startTime; + + @Column + @Comment("结束时间") + @ColDefine(type = ColType.DATETIME) + private Date endTime; + + @Column + @Comment("详细信息") + @ColDefine(type = ColType.TEXT) + private String content; + + @Column + @Comment("是否发布") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isOpen; + + @Column + @Comment("附件") + @ColDefine(type = ColType.MYSQL_JSON) + private List files; + +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/model/WomanSanitaryUser.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/model/WomanSanitaryUser.java new file mode 100644 index 00000000..42264ec6 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/model/WomanSanitaryUser.java @@ -0,0 +1,101 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.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; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 15:29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table("woman_sanitary_user") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("个人信息") +public class WomanSanitaryUser extends BaseModel implements Serializable { + @Name + @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 projectId; + + @Column + @Comment("项目名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String projectName; + + @Column + @Comment("userid") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String loginName; + + @Column + @Comment("申请人") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String userName; + + @Column + @Comment("所属单位Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unitId; + + @Column + @Comment("所属单位") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unitName; + + @Column + @Comment("所属工会Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column + @Comment("所属工会") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unionName; + + + @Column + @Comment("性别") + @ColDefine(type = ColType.VARCHAR, width = 4) + private String sex; + + @Column + @Comment("手机号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String mobile; + + @Column + @Comment("是否发放") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean issue; + + @Column + @Comment("发放金额") + @ColDefine(type = ColType.FLOAT, width = 10, precision = 2) + private Double money; + + @Column + @Comment("申请时间") + @ColDefine(type = ColType.DATETIME) + private Date applyTime; +} + diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/WomanSanitaryProjectService.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/WomanSanitaryProjectService.java new file mode 100644 index 00000000..5829f565 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/WomanSanitaryProjectService.java @@ -0,0 +1,8 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryProject; + + +public interface WomanSanitaryProjectService extends BaseService { +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/WomanSanitaryUserService.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/WomanSanitaryUserService.java new file mode 100644 index 00000000..2c364c8f --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/WomanSanitaryUserService.java @@ -0,0 +1,16 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryUser; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.upload.TempFile; + + +public interface WomanSanitaryUserService extends BaseService { + /** + * 导入会员数据处理 + * @param file 文件 + * @param isFlag 是否清空更新 + */ + NutMap handlingMemberImport(TempFile file, Boolean isFlag); +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/impl/WomanSanitaryProjectServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/impl/WomanSanitaryProjectServiceImpl.java new file mode 100644 index 00000000..ece826c2 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/impl/WomanSanitaryProjectServiceImpl.java @@ -0,0 +1,21 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryProject; +import com.budwk.app.zhgh.dayofficework.womanSanitary.service.WomanSanitaryProjectService; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 14:15 + */ +@Slf4j +@IocBean(args = {"refer:dao"}) +public class WomanSanitaryProjectServiceImpl extends BaseServiceImpl implements WomanSanitaryProjectService{ + public WomanSanitaryProjectServiceImpl(Dao dao) { + super(dao); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/impl/WomanSanitaryUserServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/impl/WomanSanitaryUserServiceImpl.java new file mode 100644 index 00000000..0f86dcaa --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/service/impl/WomanSanitaryUserServiceImpl.java @@ -0,0 +1,169 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.base.utils.EasyExcelUtil; +import com.budwk.app.base.utils.ManyAddOrRenewUtil; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.zhgh.dayofficework.exerciseCard.model.ExerciseCard; +import com.budwk.app.zhgh.dayofficework.exerciseCard.vo.ExercisePeopleImportVo; +import com.budwk.app.zhgh.dayofficework.womanSanitary.model.WomanSanitaryUser; +import com.budwk.app.zhgh.dayofficework.womanSanitary.service.WomanSanitaryUserService; +import com.budwk.app.zhgh.dayofficework.womanSanitary.vo.WomanSanitaryUserImportVo; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +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.Record; +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.Lang; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.upload.TempFile; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/11/1 14:15 + */ +@Slf4j +@IocBean(args = {"refer:dao"}) +public class WomanSanitaryUserServiceImpl extends BaseServiceImpl implements WomanSanitaryUserService { + public WomanSanitaryUserServiceImpl(Dao dao) { + super(dao); + } + + @Inject + private ManyAddOrRenewUtil manyAddOrRenewUtil; + + // 修改导入部分的代码 + @Aop(TransAop.READ_COMMITTED) + @Override + public NutMap handlingMemberImport(TempFile file, Boolean isFlag) { + // 修改1: 使用正确的VO类 + List ts = EasyExcelUtil.syncReadModel(file.getFile(), WomanSanitaryUserImportVo.class, 0, 1); + List list = JSONUtil.parseArray(JSONUtil.toJsonStr(ts)).toList(WomanSanitaryUserImportVo.class); + + // 获取系统用户 + Cnd cnd = Cnd.NEW(); + List dataUserList = dao().query(Sys_user.class, cnd); + Map userMap = dataUserList.stream().collect(Collectors.toMap(Sys_user::getLoginname, v -> v)); + + Sql vwUserSql = Sqls.create(""" + SELECT + id, + loginname, + username, + birthday, + mobile, + sex, + unitName, + unionName, + unionId, + unitId + FROM + `vw_user` + """); + vwUserSql.setCallback(Sqls.callback.records()); + dao().execute(vwUserSql); + List vwUserList = vwUserSql.getList(Record.class); + Map vwUserMap = vwUserList.stream().collect(Collectors.toMap(r -> r.getString("loginname"), r -> r)); + + // 修改2: 使用正确的实体类 + List userList = new ArrayList<>(); + List insertOrUpdateUserList = new ArrayList<>(); + + //返回错误记录 + List errorInfos = new ArrayList<>(); + + for (WomanSanitaryUserImportVo v : list) { + if (StrUtil.isNotBlank(v.getLoginName())) { + v.setLoginName(v.getLoginName().trim()); + } else { + v.setErrorInfo("工号不能为空!"); + errorInfos.add(v); + continue; + } + + //判断是否在系统中 + Sys_user user = userMap.get(v.getLoginName()); + + if (user == null) { + v.setErrorInfo("该人员没有录入系统中!"); + errorInfos.add(v); + continue; + } + + insertOrUpdateUserList.add(user); + + // 创建女性卫生用品用户记录并设置用户详细信息 + WomanSanitaryUser womanUser = new WomanSanitaryUser(); + womanUser.setId(R.UU32()); + + // 根据工号查询vw_user视图,设置人员信息 + Record vwUser = vwUserMap.get(v.getLoginName()); + if (vwUser != null) { + womanUser.setUserId(vwUser.getString("id")); + womanUser.setUserName(vwUser.getString("username")); + womanUser.setUnionId(vwUser.getString("unionId")); + womanUser.setUnitId(vwUser.getString("unitId")); + womanUser.setSex(vwUser.getString("sex")); + womanUser.setUnionName(vwUser.getString("unionName")); + womanUser.setUnitName(vwUser.getString("unitName")); + } + + // 设置其他基本信息 + womanUser.setLoginName(v.getLoginName()); + womanUser.setApplyTime(new Date()); // 设置当前时间为申请时间 + womanUser.setIssue(false); + + if (v.getMoney() != null) { + try { + womanUser.setMoney(Double.valueOf(v.getMoney())); + } catch (NumberFormatException e) { + v.setErrorInfo("当前额度格式错误!"); + errorInfos.add(v); + continue; + } + } + + userList.add(womanUser); + } + + if (Lang.isNotEmpty(insertOrUpdateUserList)) { + manyAddOrRenewUtil.asyncExecuteInsertOrUpdate(insertOrUpdateUserList,200); + + // 批量保存女性卫生用品用户记录 + if (Lang.isNotEmpty(userList)) { + manyAddOrRenewUtil.asyncExecuteInsert(userList,200); + } + } + + //如果有错误数据就返回给前端 + if (Lang.isNotEmpty(errorInfos)) { + NutMap nutMap = NutMap.NEW(); + nutMap.setv("totalCount", list.size()); + nutMap.setv("successCount", Math.max(list.size() - errorInfos.size(), 0)); + nutMap.setv("errorCount", errorInfos.size()); + nutMap.setv("errorList", errorInfos.stream().map(v -> { + return NutMap.NEW().addv("工号", v.getLoginName()).addv("姓名", v.getUsername()).addv("错误原因", v.getErrorInfo()); + }).collect(Collectors.toList())); + return nutMap; + } + return null; + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/vo/WomanSanitaryUserImportVo.java b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/vo/WomanSanitaryUserImportVo.java new file mode 100644 index 00000000..fe4876ee --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/womanSanitary/vo/WomanSanitaryUserImportVo.java @@ -0,0 +1,47 @@ +package com.budwk.app.zhgh.dayofficework.womanSanitary.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +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 lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @version 1.0 + * @Author hongqiwei + * @name:ExercisePeopleImportVo + * @Date 2025/10/14 10:04 + * @注释 + */ +@Data +@EqualsAndHashCode +@ContentRowHeight(20) // 内容行高 +@HeadRowHeight(20) // 表头行高 +@ColumnWidth(25) //列宽 +public class WomanSanitaryUserImportVo { + + @ExcelProperty("工号") + private String loginName; + + @ExcelProperty("姓名") + private String username; + + @ExcelProperty("性别") + private String sex; + + @ExcelProperty("工会") + private String unionName; + + @ExcelProperty("单位") + private String unitName; + + @ExcelProperty("发放金额") + private Double money; + + + @ExcelIgnore + private String errorInfo; + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java index af0fcec5..f0e9cdee 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java @@ -11,6 +11,7 @@ import com.budwk.app.base.result.Result; import com.budwk.app.sys.models.Sys_home_activity; import com.budwk.app.zhgh.dayofficework.cadreTraining.model.CadreTrainingAct; import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceProject; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceUserInfo; import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceProjectService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -101,7 +102,7 @@ public class MutualInsuranceProjectController { @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) public Result delete(@Param("id") String id) { mutualInsuranceProjectService.delete(id); - dao.clear(CadreTrainingAct.class, Cnd.where(CadreTrainingAct::getId, "=", id)); + dao.clear(MutualInsuranceUserInfo.class, Cnd.where(MutualInsuranceUserInfo::getProjectId, "=", id)); return Result.success(); } diff --git a/src/main/resources/views/platform/zhgh/activity/fellowship/apply/index.html b/src/main/resources/views/platform/zhgh/activity/fellowship/apply/index.html index 4389b909..bd241802 100644 --- a/src/main/resources/views/platform/zhgh/activity/fellowship/apply/index.html +++ b/src/main/resources/views/platform/zhgh/activity/fellowship/apply/index.html @@ -20,7 +20,7 @@ layout("/layouts/platform.html"){ @change="doSearch" > - + diff --git a/src/main/resources/views/platform/zhgh/activity/fellowship/manage/basicForm.js b/src/main/resources/views/platform/zhgh/activity/fellowship/manage/basicForm.js index 5f33c69c..b75110c6 100644 --- a/src/main/resources/views/platform/zhgh/activity/fellowship/manage/basicForm.js +++ b/src/main/resources/views/platform/zhgh/activity/fellowship/manage/basicForm.js @@ -198,14 +198,14 @@ const basicForm = { - + - +