女职工卫生费75%

This commit is contained in:
=
2025-11-03 08:52:46 +08:00
parent 1968db5e9a
commit f290949019
36 changed files with 1536 additions and 347 deletions
@@ -81,7 +81,7 @@ public class FellowshipTypeController {
c.and("typeId", "=", item.getString("id"));
c.asc("columnIndex");
List<FellowshipMobileSignColumn> 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<FellowshipType> 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);
}
@@ -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();
}
}
}
@@ -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);
}
}
@@ -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();
}
}
@@ -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<JSONObject> files;
}
@@ -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;
}
@@ -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<WomanSanitaryProject> {
}
@@ -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<WomanSanitaryUser> {
/**
* 导入会员数据处理
* @param file 文件
* @param isFlag 是否清空更新
*/
NutMap handlingMemberImport(TempFile file, Boolean isFlag);
}
@@ -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<WomanSanitaryProject> implements WomanSanitaryProjectService{
public WomanSanitaryProjectServiceImpl(Dao dao) {
super(dao);
}
}
@@ -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<WomanSanitaryUser> 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<T> ts = EasyExcelUtil.syncReadModel(file.getFile(), WomanSanitaryUserImportVo.class, 0, 1);
List<WomanSanitaryUserImportVo> list = JSONUtil.parseArray(JSONUtil.toJsonStr(ts)).toList(WomanSanitaryUserImportVo.class);
// 获取系统用户
Cnd cnd = Cnd.NEW();
List<Sys_user> dataUserList = dao().query(Sys_user.class, cnd);
Map<String, Sys_user> 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<Record> vwUserList = vwUserSql.getList(Record.class);
Map<String, Record> vwUserMap = vwUserList.stream().collect(Collectors.toMap(r -> r.getString("loginname"), r -> r));
// 修改2: 使用正确的实体类
List<WomanSanitaryUser> userList = new ArrayList<>();
List<Sys_user> insertOrUpdateUserList = new ArrayList<>();
//返回错误记录
List<WomanSanitaryUserImportVo> 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;
}
}
@@ -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
* @nameExercisePeopleImportVo
* @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;
}
@@ -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();
}