This commit is contained in:
@jyuhsin
2025-04-23 17:45:45 +08:00
parent 96895296f8
commit 18f298b879
26 changed files with 183 additions and 260 deletions
@@ -229,6 +229,7 @@ public class ClubUserCountController {
c.clubid
FROM
sys_club_user c
LEFT JOIN sys_club club ON club.id = c.clubid
LEFT JOIN `user` u ON u.id = c.userid
$condition
ORDER BY FIELD( c.sf, 1, 3, 4, 5, 2 )
@@ -246,6 +247,7 @@ public class ClubUserCountController {
cnd.andEX("c.giveMoney", "=", giveMoney);
cnd.andEX("c.isNormal", "=", true);
cnd.andEX("c.status", "=", 5);
cnd.and("club.state", "=", ClubRegistAuditState.SCHOOL_PASS);
sql.setCondition(cnd);
List<NutMap> listMap = baseService.listMap(sql);
//获取所有协会
@@ -290,7 +292,7 @@ public class ClubUserCountController {
LinkedHashMap<String, List<Sys_file>> fileList = new LinkedHashMap<>();
//查询协会
List<Sys_club> clubList = dao.query(Sys_club.class, Cnd.NEW().andEX("id", "=", clubId));
List<Sys_club> clubList = dao.query(Sys_club.class, Cnd.NEW().andEX("id", "=", clubId).and("state", "=", ClubRegistAuditState.SCHOOL_PASS));
clubList.forEach(item -> {
List<Sys_file> file = new ArrayList<>();
file.addAll(item.getFiles() != null ? item.getFiles() : new ArrayList<>());
@@ -172,7 +172,10 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
.add("delFlag", 1), Cnd.where("id", "=", tasks.get(0).getId()));
dao.update(Sys_local_process_instance_task.class, Chain.make("status", 1), Cnd.where("id", "=", tasks.get(1).getId()));
dao.update(Sys_local_process_instance.class,Chain.make("processInstanceStatus",1).add("nodeName",taskNodeName),Cnd.where("processUniqueId","=",processUniqueId));
}else{
} else if(ObjectUtil.isNotEmpty(tasks) && tasks.size() == 1) {
dao.update(Sys_local_process_instance_task.class, Chain.make("status", 1), Cnd.where("id", "=", tasks.get(0).getId()));
dao.update(Sys_local_process_instance.class,Chain.make("processInstanceStatus",1).add("nodeName",taskNodeName),Cnd.where("processUniqueId","=",processUniqueId));
} else{
throw new RuntimeException("无法撤回,请联系管理员!");
}
}
@@ -308,7 +308,7 @@ public class ActivityBasicScopeController {
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys_user'
AND TABLE_SCHEMA = 'zhgh_hmc'
AND TABLE_SCHEMA = 'zhgh_zjitc'
""");
List<NutMap> sqlDataList = activityBasicScopeService.listMap(sql);
// sqlDataList.forEach(v -> v.put("DATA_TYPE", new String((byte[]) v.get("DATA_TYPE"))));
@@ -232,7 +232,7 @@ public class RetiredGroupManageController {
""");
sql.setParam("groupId", groupId);
Cnd cnd = Cnd.NEW();
cnd.and("u.userState", "=", "不在职");
cnd.and("u.retired", "=", 1);
// cnd.and("u.personType", "=", "退休人员");
cnd.and("u.unitid", "in", Sqls.create("select unitId from retired_group_unit where retiredGroupId = @retiredGroupId").setParam("retiredGroupId", groupId));
@@ -236,7 +236,7 @@ public class RetiredPartyBranchManageController {
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("u.userState", "=", "退休");
cnd.and("u.retired", "=", 1);
cnd.and("u.political", "=", "中共党员");
cnd.and("rpbu.partyBranchId", "=", partyBranchId);
if (StrUtil.isNotBlank(val)) {
@@ -350,7 +350,10 @@ public class RetiredUserListController {
ViTool.excelResponse(response, "离退休人员导入模版.xlsx");
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
Workbook sheets = ExcelExportUtil.exportExcel(exportParams, RetiredUserTemplate.class, new ArrayList<>());
List<NutMap> result = new ArrayList<>();
NutMap map = new NutMap();
result.add(map);
Workbook sheets = ExcelExportUtil.exportExcel(exportParams, RetiredUserTemplate.class, result);
ServletOutputStream outputStream = response.getOutputStream();
sheets.write(outputStream);
outputStream.close();
@@ -13,73 +13,73 @@ import lombok.Data;
@Data
public class RetiredUserTemplate {
// @Excel(name = "工号")
@Excel(name = "工号", width = 20)
private String loginName;
@Excel(name = "性质")
@Excel(name = "性质", width = 20)
private String retireNature;
@Excel(name = "姓名")
@Excel(name = "姓名", width = 20)
private String username;
@Excel(name = "性别")
@Excel(name = "性别", width = 20)
private String sex;
@Excel(name = "民族")
@Excel(name = "民族", width = 20)
private String nation;
@Excel(name = "出生年月",importFormat = "yyyy-MM")
@Excel(name = "出生年月",importFormat = "yyyy-MM", width = 20)
private String birthday;
@Excel(name = "入党时间",importFormat = "yyyy-MM")
@Excel(name = "入党时间",importFormat = "yyyy-MM", width = 20)
private String partyJoiningTime;
@Excel(name = "所属支部")
@Excel(name = "所属支部", width = 20)
private String belongBranch;
@Excel(name = "工作时间",importFormat = "yyyy-MM")
@Excel(name = "工作时间",importFormat = "yyyy-MM", width = 20)
private String workStartDate;
@Excel(name = "进校时间",importFormat = "yyyy-MM")
@Excel(name = "进校时间",importFormat = "yyyy-MM", width = 20)
private String schoolTime;
@Excel(name = "文化程度")
@Excel(name = "文化程度", width = 20)
private String education;
@Excel(name = "籍贯")
@Excel(name = "籍贯", width = 20)
private String hometown;
@Excel(name = "职称")
@Excel(name = "职称", width = 20)
private String jobTitle;
@Excel(name = "待遇")
@Excel(name = "待遇", width = 20)
private String treatment;
@Excel(name = "退休时间",importFormat = "yyyy-MM")
@Excel(name = "退休时间",importFormat = "yyyy-MM", width = 20)
private String retirementTime;
@Excel(name = "身份证号码")
@Excel(name = "身份证号码", width = 20)
private String idCard;
@Excel(name = "医疗证号")
@Excel(name = "医疗证号", width = 20)
private String medicalCertificateNumber;
@Excel(name = "基础病信息")
@Excel(name = "基础病信息", width = 20)
private String basicDiseaseInfo;
@Excel(name = "原部门")
@Excel(name = "原部门", width = 20)
private String originalDepartment;
@Excel(name = "家属姓名")
@Excel(name = "家属姓名", width = 20)
private String familyName;
@Excel(name = "家庭住址")
@Excel(name = "家庭住址", width = 20)
private String homeAddress;
@Excel(name = "联系方式")
@Excel(name = "联系方式", width = 20)
private String retirePhone;
@Excel(name = "备注")
@Excel(name = "备注", width = 20)
private String retireNotes;
private String errorMsg;
@@ -5,10 +5,8 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import com.alibaba.fastjson.JSON;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.model.msgUser;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_union;
@@ -40,7 +38,6 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.ArrayList;
import java.util.List;
/**
@@ -97,9 +94,9 @@ public class MemberApplyBranchUnionAuditController {
cnd.and("record.allocationUnionId", "=", Vi.getUnionId());
}
if (pageForm.getAudit()) {
cnd.and("record.applyStateId", ">", 50);
cnd.and("record.applyStateId", ">", 20);
} else {
cnd.and("record.applyStateId", "=", 50);
cnd.and("record.applyStateId", "=", 20);
}
cnd.desc("record.applyDateTime");
sql.setCondition(cnd);
@@ -124,13 +121,13 @@ public class MemberApplyBranchUnionAuditController {
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
if (audit.getAuditType() == 2) {
// 退回修改
record.setApplyStateId(60);
record.setApplyStateId(30);
} else if (audit.getAuditType() == 1) {
// 通过
record.setApplyStateId(80);
record.setApplyStateId(50);
} else {
// 拒绝
record.setApplyStateId(70);
record.setApplyStateId(40);
}
record.setBranchUnionAuditId(audit.getId());
@@ -142,62 +139,9 @@ public class MemberApplyBranchUnionAuditController {
if (audit.getAuditType() == 2) {
MemberApplyToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(record, null);
} else if (audit.getAuditType() == 1) {
// 判断是否改变了工会关系
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
if (!ObjectUtil.equals(user.getUnionid(), record.getAllocationUnionId())) {
if (dao.count(SpecialStaff.class, Cnd.where("userId", "=", record.getUserId())) > 0) {
dao.clear(SpecialStaff.class, Cnd.where("userId", "=", record.getUserId()));
user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
}
if (!ObjectUtil.equals(user.getUnionid(), record.getAllocationUnionId())) {
SpecialStaff staff = new SpecialStaff();
staff.setUserId(record.getUserId());
staff.setPersonnelRelationUnitId(user.getUnitid());
staff.setPersonnelRelationUnitName(user.getUnitname());
staff.setUnionRelationUnionId(union.getId());
staff.setUnionRelationUnionName(union.getUnionname());
staff.setIsManyUnit(false);
staff.setSpecialStaffType("HMC_RELATION");
dao.insert(staff);
}
}
Sys_user sysUser = new Sys_user();
BeanUtil.copyProperties(record, sysUser);
sysUser.setId(user.getId());
dao.updateIgnoreNull(sysUser);
MemberApplyToDoHandler.COMPLETE_PROCESS.exec(record, null);
String content = "尊敬的%s老师,您已正式成为杭医工会会员,会员关系在%s,欢迎您的加入!"
.formatted(user.getUsername(), union.getUnionname());
System.out.println(content);
sysUserService.deleteCacheAndUpdate(record.getUserId());
msgUser msgUser=new msgUser();
msgUser.setName("User");
msgUser.setUserId(sysUser.getLoginname());
msgUser.setName(sysUser.getUsername());
List<msgUser> users = new ArrayList<>();
users.add(msgUser);
msgApi.sendMsg("入会结果通知", content, 1, 1, "SMS", users,"");
//msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 1, "入会结果通知", content, "", "");
MemberApplyToDoHandler.CREATE_SCHOOL_TASK.exec(record, null);
} else {
// 杭州医学院分工会拒绝接收还要去创建校工会的审核任务
MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会拒绝接收"));
MemberApplyToDoHandler.CREATE_SCHOOL_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核"));
String content = "工会主管您好,%s分拒绝接收%s老师,拒绝原因:%s,请您及时联系该分工会负责人或将工会关系划入其他工会。点击此消息或登录“智慧工会”可重新分配工会关系"
.formatted(union.getUnionname(), record.getUsername(), audit.getAuditOpinion());
String linkUrl = Globals.AppDomain + "/platform/member/apply/schoolUnion/audit/h5";
System.out.println(content);
//msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 2, "入会结果通知", content, "", linkUrl);
msgUser user=new msgUser();
user.setName("User");
user.setUserId(record.getLoginname());
user.setName(record.getUsername());
List<msgUser> users = new ArrayList<>();
users.add(user);
msgApi.sendMsg("入会结果通知", content, 1, 1, "SMS", users,linkUrl);
MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核拒绝"));
}
return null;
}
@@ -210,11 +154,11 @@ public class MemberApplyBranchUnionAuditController {
@SLog(type = "memberApply", tag = "会员入会申请", msg = "分工会撤回")
public Object doRevoke(String id){
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 50)
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 20)
.add("branchUnionAuditId", null), Cnd.where("id", "=", id));
dao.clear(Audit.class, Cnd.where("id", "=", record.getBranchUnionAuditId()));
// 待办撤回
localProcessService.revokeTask("MEMBER_APPLY@" + id, "分工会接收");
localProcessService.revokeTask("MEMBER_APPLY@" + id, "分工会审核");
return null;
}
}
@@ -2,7 +2,6 @@ package io.v.nutz.zhgh.staffmanage.member.controller.apply;
import cn.wizzer.framework.base.Result;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.model.msgUser;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.sys.models.Sys_user_role;
@@ -120,29 +119,14 @@ public class MemberApplyController {
if (record.getApplyStateId() != null && List.of(30, 60).contains(record.getApplyStateId())) {
MemberApplyToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(record, NutMap.NEW().addv("nodeName", "重新修改申请"));
}
// 工会审核
// 工会审核
record.setApplyStateId(20);
dao.insertOrUpdate(record);
// 审核流程开始
MemberApplyToDoHandler.START_PROCESS.exec(record, null);
MemberApplyToDoHandler.CREATE_SCHOOL_TASK.exec(record, null);
MemberApplyToDoHandler.CREATE_UNION_TASK.exec(record, null);
// 短信通知
List<String> schoolLoginNameList = commonService.getSchoolOrBranchUnionMemberAdminLoginNames("school", null);
List<msgUser> users = schoolLoginNameList.stream().map(item -> {
msgUser user = new msgUser();
user.setType("User");
user.setUserId(item);
return user;
}).collect(Collectors.toList());
//String schoolLoginNameListStr = schoolLoginNameList.stream().distinct().collect(Collectors.joining(","));
String content = "%s老师正申请加入工会,请您点击此条消息或登录“智慧工会”进行审核".formatted(record.getUsername());
String linkUrl = Globals.AppDomain + "/platform/member/apply/schoolUnion/audit/h5";
//msgApi.sendMsg(List.of("DingTalk"), schoolLoginNameListStr, 2, "入会审核通知", content, "", linkUrl);
msgApi.sendMsg("入会审核通知", content, 1, 1, "SMS", users,linkUrl);
return null;
}
@@ -1,11 +1,15 @@
package io.v.nutz.zhgh.staffmanage.member.controller.apply;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.User;
import io.v.nutz.sys.services.SysLocalProcessService;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.web.commons.utils.ShiroUtil;
@@ -28,6 +32,13 @@ 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.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @version 1.0
* @Author zzr
@@ -145,4 +156,28 @@ public class MemberApplyMineController {
}
return nutMap;
}
@At
@Ok("void")
@RequiresPermissions("member.apply.mine")
@SLog(tag = "会员入会申请", msg = "导出开卡证明")
public void doExportProve(HttpServletResponse response){
try {
User user = dao.fetch(User.class, Cnd.where("id","=",ShiroUtil.getUserId()));
Map<String, Object> map = new HashMap<String, Object>();
map.put("userName", user.getUsername());
map.put("unitName", user.getUnitname());
map.put("idCard", user.getIdcard());
map.put("date", DateUtil.format(new Date(),"yyyy年MM月dd日"));
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String("办卡申请".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
Configure config = Configure.newBuilder().build();
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/member/addIdCard.docx");
XWPFTemplate.compile(inputStream, config).render(map, response.getOutputStream());
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -1,14 +1,18 @@
package io.v.nutz.zhgh.staffmanage.member.controller.apply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import com.alibaba.fastjson.JSON;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.model.msgUser;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.models.Sys_user_role;
import io.v.nutz.sys.models.User;
import io.v.nutz.sys.services.SysLocalProcessService;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.base.Globals;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.web.commons.utils.ShiroUtil;
@@ -32,7 +36,6 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.ArrayList;
import java.util.List;
/**
@@ -50,11 +53,13 @@ public class MemberApplySchoolUnionAuditController {
@Inject
private Dao dao;
@Inject
private MsgApi msgApi;
@Inject
private SysUserService sysUserService;
@Inject
private MemberCommonService memberCommonService;
@Inject
private SysLocalProcessService localProcessService;
@Inject
private MsgApi msgApi;
@At("/")
@Ok("beetl:/platform/member/apply/schoolUnionAudit/index.html")
@@ -85,10 +90,9 @@ public class MemberApplySchoolUnionAuditController {
Cnd cnd = Cnd.NEW();
pageForm.buildSearch(cnd, "record.");
if (pageForm.getAudit()) {
cnd.and("record.applyStateId", ">", 20);
cnd.and("record.applyStateId", "!=", 70);
cnd.and("record.applyStateId", ">", 50);
} else {
cnd.and("record.applyStateId", "in", List.of(20, 70));
cnd.and("record.applyStateId", "=", 50);
}
cnd.desc("record.applyDateTime");
sql.setCondition(cnd);
@@ -102,7 +106,7 @@ public class MemberApplySchoolUnionAuditController {
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions("member.apply.schoolUnion.audit")
@SLog(type = "memberApply", tag = "会员入会申请", msg = "校工会审核")
public Object approval(@Param("audit") Audit audit, String id, String unionId) {
public Object approval(@Param("audit") Audit audit, String id) {
audit.setAuditor(ShiroUtil.getUserId());
audit.setLoginname(ShiroUtil.getPlatformLoginname());
audit.setUsername(ShiroUtil.getPlatformUsername());
@@ -112,77 +116,42 @@ public class MemberApplySchoolUnionAuditController {
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
if (audit.getAuditType() == 2) {
// 退回修改
record.setApplyStateId(30);
record.setApplyStateId(60);
} else if (audit.getAuditType() == 1) {
// 通过
record.setApplyStateId(50);
record.setApplyStateId(80);
} else {
// 拒绝
record.setApplyStateId(40);
record.setApplyStateId(70);
}
record.setAllocationUnionId(unionId);
record.setSchoolUnionAuditId(audit.getId());
dao.updateIgnoreNull(record);
MemberApplyToDoHandler.COMPLETE_SCHOOL_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核完成"));
if (audit.getAuditType() == 2) {
MemberApplyToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(record, null);
// 短信通知
// String content = "%s老师您好,您的入会申请被校工会退回,您可根据退回原因修改后再次提交,如有疑问请及时联系校工会".formatted(record.getUsername());
} else if (audit.getAuditType() == 1) {
Sql sql = Sqls.create("""
SELECT
u.loginname,
u.username,
u.unionname
FROM
`sys_user_role` userRole
LEFT JOIN sys_role role ON role.id = userRole.roleId
LEFT JOIN `user` u ON u.id = userRole.userId
WHERE
role.`code` = 'BranchUnionMemberAdmin' and u.unionid = @unionId
group by u.loginname
""").setParam("unionId", unionId);
List<NutMap> list = memberCommonService.listMap(sql);
MemberApplyToDoHandler.COMPLETE_PROCESS.exec(record, null);
// 将填写内容修改到用户表
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
Sys_user sysUser = new Sys_user();
BeanUtil.copyProperties(record, sysUser);
sysUser.setId(user.getId());
dao.updateIgnoreNull(sysUser);
if (Lang.isNotEmpty(list)) {
List<String> unionLeaderLoginNames = list.stream().map(v -> v.getString("loginname")).toList();
MemberApplyToDoHandler.CREATE_UNION_TASK.exec(record, NutMap.NEW().addv("unionLeaderLoginNames", unionLeaderLoginNames));
// 获取审核人的工会
NutMap nutMap = list.stream().findFirst().orElse(NutMap.NEW());
String unionname = nutMap.getString("unionname");
// 短信通知
String linkUrl = Globals.AppDomain + "/platform/member/apply/branchUnion/audit/h5";
for (NutMap map : list) {
String content = "%s,%s老师的入会申请已经通过校工会审核,现将工会关系转入您处,请点击此消息或登录“智慧工会”办理新会员接收手续。"
.formatted(unionname, record.getUsername());
System.out.println(content);
msgUser user=new msgUser();
user.setName("User");
user.setUserId(map.getString("loginname"));
user.setName(map.getString("username"));
List<msgUser> users = new ArrayList<>();
users.add(user);
//msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 2, "会员入会审核通知", content, "", linkUrl);
msgApi.sendMsg("会员入会审核通知", content, 1, 1, "SMS", users,linkUrl);
}
// 还要设置会员角色
int count = dao.count(Sys_user_role.class, Cnd.where("userId", "=", user.getId()).and("roleId", "=", Roles.MEMBER));
if (count == 0) {
Sys_user_role userRole = new Sys_user_role();
userRole.setUserId(user.getId());
userRole.setRoleId(Roles.MEMBER);
dao.insert(userRole);
}
sysUserService.deleteCacheAndUpdate(user.getId());
} else {
MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核拒绝"));
msgUser user=new msgUser();
user.setName("User");
user.setUserId(record.getLoginname());
user.setName(record.getUsername());
List<msgUser> users = new ArrayList<>();
users.add(user);
// 短信通知
String content = "尊敬的%s老师,您的入会申请未被通过,若有疑问请联系校工会,联系电话87692636".formatted(record.getUsername());
System.out.println(content);
//msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 1, "会员入会结果通知", content, "", "");
msgApi.sendMsg("会员入会结果通知", content, 1, 1, "SMS", users,"");
}
return null;
}
@@ -195,12 +164,11 @@ public class MemberApplySchoolUnionAuditController {
@SLog(type = "memberApply", tag = "会员入会申请", msg = "校工会撤回")
public Object doRevoke(String id) {
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 20)
.add("schoolUnionAuditId", null).add("allocationUnionId", null)
, Cnd.where("id", "=", id));
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 50)
.add("schoolUnionAuditId", null), Cnd.where("id", "=", id));
dao.clear(Audit.class, Cnd.where("id", "=", record.getSchoolUnionAuditId()));
// 待办撤回
localProcessService.revokeTask("MEMBER_APPLY@" + id, "校工会审核");
localProcessService.revokeTask("MEMBER_APPLY@" + id, "校工会审核");
return null;
}
}
@@ -75,7 +75,7 @@ public class MemberChangeBranchUnionAuditController {
""");
Cnd cnd = Cnd.NEW();
if (!ShiroUtil.hasAnyRoles("sysadmin, A06, SchoolUnionMemberAdmin")) {
cnd.and("record.allocationUnionId", "=", Vi.getUnionId());
cnd.and("record.unionId", "=", Vi.getUnionId());
}
pageForm.buildSearch(cnd, "record.");
if (pageForm.getAudit()) {
@@ -336,7 +336,7 @@ public class MemberCommonServiceImpl extends ViServiceImpl<Sys_user> implements
staff.setUnionRelationUnionId(union.getId());
staff.setUnionRelationUnionName(union.getUnionname());
staff.setIsManyUnit(false);
staff.setSpecialStaffType("HMC_RELATION");
staff.setSpecialStaffType("ZJITC_RELATION");
dao().insert(staff);
}
}
@@ -4,12 +4,14 @@ 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 io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.result.Result;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.web.commons.slog.annotation.SLog;
import io.v.nutz.zhgh.staffmanage.single.service.SingleUserService;
import io.v.nutz.zhgh.staffmanage.thirtyteach.template.ThirtyTeachTemp;
import org.apache.poi.ss.usermodel.Workbook;
@@ -135,6 +137,37 @@ public class SingleUserController {
}
}
@At
@ViReturn
@SLog(tag = "单身教工", msg = "删除", param = true, result = true)
public Object delete(String userId) {
singleUserService.update(Chain.make("marriage", "已婚"), Cnd.where("id", "=", userId));
return null;
}
/**
* 导入模板下载
* @param response
*/
@At
@Ok("void")
public void downloadImport(HttpServletResponse response) {
try {
ViTool.excelResponse(response, "单身教工导入模版.xlsx");
ExportParams exportParams = new ExportParams();
List<ExcelExportEntity> list = new ArrayList<>();
list.add(new ExcelExportEntity("工号", "loginName", 20));
list.add(new ExcelExportEntity("姓名", "userName", 20));
list.add(new ExcelExportEntity("身份证号码", "idCard", 20));
list.add(new ExcelExportEntity("出生年月", "birthday", 20));
exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, list, new ArrayList<>());
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@At
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
@@ -219,7 +219,7 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
staff.setUnionRelationUnionId(union.getId());
staff.setUnionRelationUnionName(union.getUnionname());
staff.setIsManyUnit(false);
staff.setSpecialStaffType("HMC_RELATION");
staff.setSpecialStaffType("ZJITC_RELATION");
dao().insert(staff);
}
}
@@ -7,7 +7,7 @@ import java.util.Date;
@Data
public class ThirtyTeachTemp {
// @Excel(name = "工号")
@Excel(name = "工号")
private String loginName;
@Excel(name = "姓名", width = 20d)
@@ -452,7 +452,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
//课程已报人数(携带的家属)
int hasFamilyNum = 0;
//如果携带家属并且纳入人数则mdzz
if (signUpType.getIsAddFamily() && signUpType.getIsBringFamily()) {
if (signUpType.getIsBringFamily() && signUpType.getIsAddFamily()) {
//如果携带家属已报人数=教职工+每个教职工携带的家属
AtomicInteger num = new AtomicInteger();
signUpUsers.forEach(item -> {
@@ -71,7 +71,7 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="分工会入会接收" left-text="返回" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="分工会入会审核" left-text="返回" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
placeholder="请输入工号或者姓名进行查询"
@@ -103,7 +103,6 @@ layout("/mobile/platform.html"){
<van-row>
<van-col span="24"><span style="color: grey">工作单位:</span>{{item.unitName}}</van-col>
<van-col span="24"><span style="color: grey">所属工会:</span><span>{{item.unionName}}</span></van-col>
<van-col span="24"><span style="color: grey">分配工会:</span><span>{{item.allocationUnionName}}</span></van-col>
<van-col span="24"><span style="color: grey">在职状态:</span>{{item.userState}}</van-col>
<van-col span="24"><span style="color: grey">人员类型:</span><span>{{item.personType}}</span></van-col>
</van-row>
@@ -121,12 +120,12 @@ layout("/mobile/platform.html"){
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="item.applyStateId === 50"
v-if="item.applyStateId === 20"
@click="openApproval(item)"
style="margin-right: 4px">审核
</van-button>
<van-button size="small" type="danger"
v-if="[70].includes(item.applyStateId)"
v-if="[30, 40].includes(item.applyStateId)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>
@@ -145,13 +144,11 @@ layout("/mobile/platform.html"){
</van-sticky>
<member-apply-audit-info ref="memberApplyAuditInfoRef"></member-apply-audit-info>
<div v-if="showApprovalForm">
<div class="process-title">{{ '分工会接收' }}</div>
<div class="process-title">{{ '分工会审核' }}</div>
<van-form>
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="auditTime" v-model="formData.auditTime" required></van-field>
<van-field label="审核意见" name="auditOpinion"
type="textarea" maxlength="200" show-word-limit
v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核意见" name="auditOpinion" v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="default" block @click="infoShow=false">取消</van-button>
@@ -236,7 +233,7 @@ layout("/mobile/platform.html"){
}
let msg = '确定要通过此条申请吗?'
if (approvalType === 0) {
msg = '确定要拒绝接收该教工的工会关系吗?'
msg = '拒绝后不可撤回,确定要拒绝此条申请吗?'
} else if (approvalType === 2) {
msg = '确定要退回此条申请吗?'
}
@@ -105,7 +105,6 @@ layout("/mobile/platform.html"){
<van-row>
<van-col span="24"><span style="color: grey">工作单位:</span>{{item.unitName}}</van-col>
<van-col span="24"><span style="color: grey">所属工会:</span><span>{{item.unionName}}</span></van-col>
<van-col span="24"><span style="color: grey">分配工会:</span><span>{{item.allocationUnionName}}</span></van-col>
<van-col span="24"><span style="color: grey">在职状态:</span>{{item.userState}}</van-col>
<van-col span="24"><span style="color: grey">人员类型:</span><span>{{item.personType}}</span></van-col>
</van-row>
@@ -123,12 +122,12 @@ layout("/mobile/platform.html"){
type="info" style="margin-right: 4px">查看
</van-button>
<van-button size="small" type="primary"
v-if="[20, 70].includes(item.applyStateId)"
v-if="[50].includes(item.applyStateId)"
@click="openApproval(item)"
style="margin-right: 4px">{{ item.applyStateId === 70 ? '重新审核' : '审核' }}
style="margin-right: 4px">审核
</van-button>
<van-button size="small" type="danger"
v-if="[30, 50].includes(item.applyStateId)"
v-if="[60, 70].includes(item.applyStateId)"
@click="openRevoke(item.id)"
style="margin-right: 4px">撤回
</van-button>
@@ -152,22 +151,7 @@ layout("/mobile/platform.html"){
<van-field label="审核人员" readonly name="username" v-model="formData.username" required></van-field>
<van-field label="审核时间" readonly name="auditTime" v-model="formData.auditTime" required></van-field>
<van-field label="当前工会" readonly name="unionName" v-model="unionName" required></van-field>
<van-field label="分配工会" v-model="formData.unionName" readonly clickable required
@click="unionPicker = true" placeholder="请选择分配工会"
:rules="[{ required:true, message: '请选择分配工会' }]"></van-field>
<van-popup v-model="unionPicker" position="bottom"
get-container="body"
safe-area-inset-bottom>
<van-picker
show-toolbar
:columns="unions"
@confirm="doSetAllocationUnion"
@cancel="unionPicker = false"
></van-picker>
</van-popup>
<van-field label="审核意见" name="auditOpinion"
type="textarea" maxlength="200" show-word-limit
v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
<van-field label="审核意见" name="auditOpinion" v-model="formData.auditOpinion" placeholder="请输入审核意见" required></van-field>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="default" block @click="infoShow=false">取消</van-button>
@@ -262,11 +246,6 @@ layout("/mobile/platform.html"){
this.$toast.fail('请填写审核意见')
return
}
if (!this.formData.unionId) {
this.$toast.fail('请选择分配工会')
return
}
let msg = '确定要通过此条申请吗?'
if (approvalType === 0) {
msg = '拒绝后不可撤回,确定要拒绝此条申请吗?'
@@ -282,7 +261,6 @@ layout("/mobile/platform.html"){
const resp = await $.post('/platform/member/apply/schoolUnion/audit/approval', {
audit: JSON.stringify(this.formData),
id: this.id,
unionId: this.formData.unionId
})
if (resp.code === 0) {
this.$toast.success(resp.msg)
@@ -656,7 +656,7 @@ layout("/mobile/platform.html"){
this.confirmPopup = false
await this.getProjectInfo()
setTimeout(() => {
window.location.reload()
pjaxReplace('/mobile/welfare/mine/myWelfare')
}, 1000)
},
@@ -45,8 +45,8 @@ layout("/layouts/platform.html"){
<el-table-column label="操作" width="220">
<template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[50].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[70].includes(row.applyStateId)" @click="doRevoke(row)" size="mini" type="danger">撤回</el-button>
<el-button v-if="[20].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[30,40,50].includes(row.applyStateId)" @click="doRevoke(row)" size="mini" type="danger">撤回</el-button>
</template>
</el-table-column>
</el-table>
@@ -57,7 +57,7 @@ layout("/layouts/platform.html"){
<template #view>
<member-apply-audit-info ref="memberApplyAuditInfoRef"></member-apply-audit-info>
<div v-if="showApprovalForm">
<div class="process-title" style="margin: 20px 0">分工会接收</div>
<div class="process-title" style="margin: 20px 0">分工会审核</div>
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
<el-row :gutter="20">
<el-col :span="12">
@@ -89,8 +89,8 @@ layout("/layouts/platform.html"){
<el-row type="flex" justify="end">
<el-button plain @click="$refs.guava.index()">取消</el-button>
<!-- <el-button type="danger" @click="doApproval(2)">退回申请</el-button>-->
<el-button type="danger" @click="doApproval(0)">拒绝接收</el-button>
<el-button type="primary" @click="doApproval(1)">同意接收</el-button>
<el-button type="danger" @click="doApproval(0)">拒绝申请</el-button>
<el-button type="primary" @click="doApproval(1)">同意申请</el-button>
</el-row>
</div>
</template>
@@ -116,8 +116,7 @@ layout("/layouts/platform.html"){
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "allocationUnionName", label: "分配工会", sortable: true },
{ prop: "sign", label: "签字" },
// { prop: "sign", label: "签字" },
{ prop: "stateName", label: "当前节点", sortable: true }
],
@@ -45,10 +45,8 @@ layout("/layouts/platform.html"){
<el-table-column label="操作" width="220">
<template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[20, 70].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">
{{ (row.applyStateId === 70) ? '重新审核' : '审核' }}
</el-button>
<el-button v-if="[30, 50].includes(row.applyStateId)" @click="doRevoke(row)" size="mini" type="danger">撤回</el-button>
<el-button v-if="[50].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[60, 70].includes(row.applyStateId)" @click="doRevoke(row)" size="mini" type="danger">撤回</el-button>
</template>
</el-table-column>
</el-table>
@@ -74,23 +72,6 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="分配工会关系" prop="unionId">
<el-select clearable filterable placeholder="请选择工会" style="width: 100%;"
v-model="formData.unionId">
<el-option :key="item.id" :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="当前所在工会" prop="unionName">
<el-input v-model="unionName" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="审核意见" prop="auditOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
@@ -137,8 +118,7 @@ layout("/layouts/platform.html"){
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "allocationUnionName", label: "分配工会", sortable: true },
{ prop: "sign", label: "签字" },
// { prop: "sign", label: "签字" },
{ prop: "stateName", label: "当前节点", sortable: true }
],
@@ -175,11 +155,6 @@ layout("/layouts/platform.html"){
})
},
doApproval(approvalType){
if (approvalType === 1 && !this.formData.unionId) {
this.$message.warning('请分配工会关系')
return
}
let msg = '确定要通过此条申请吗?'
if (approvalType === 0) {
msg = '拒绝后不可撤回,确定要拒绝此条申请吗?'
@@ -167,7 +167,7 @@ layout("/layouts/platform.html"){
label="操作"
width="100px" fixed="right">
<template scope="{row}">
<el-button size="mini" type="primary" @click="openView(row.userId)">查看</el-button>
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
</template>
</el-table-column>
</el-table>
@@ -218,6 +218,7 @@ layout("/layouts/platform.html"){
</el-dialog>
<el-dialog :visible.sync="userDialogVisible" title="新增党支部人员" width="40%">
<vi-title title="温馨提醒:人员下拉框中查询的是退休的人员"></vi-title>
<el-form :model="partyBranchUserFormData" label-width="80px" ref="partyBranchUserForm">
<el-form-item label="人员" prop="userIds"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
@@ -245,6 +246,7 @@ layout("/layouts/platform.html"){
</el-dialog>
<el-dialog :visible.sync="committeeDialogVisible" title="新增党支部委员" width="40%">
<vi-title title="温馨提醒:人员下拉框中查询的是退休,并且政治面貌为中共党员的人员"></vi-title>
<el-form :model="partyBranchCommitteeFormData" label-width="80px" ref="partyBranchCommitteeForm">
<el-form-item label="人员" prop="userId"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
@@ -238,7 +238,7 @@ layout("/layouts/platform.html"){
</template>
<!-- 杭州医学院多单位人员 -->
<template v-if="formData.specialStaffType == 'HMC_RELATION'">
<template v-if="formData.specialStaffType == 'ZJITC_RELATION'">
<el-row :gutter="10">
<el-col :span="24">
<el-form-item label="所属工会(工会关系)" prop="unionRelationUnionId">
@@ -246,9 +246,9 @@ layout("/layouts/platform.html"){
<!-- <el-dropdown-item :command="{type:'edit',data:row}" v-if="judgmentAuthority">-->
<!-- 编辑-->
<!-- </el-dropdown-item>-->
<!-- <el-dropdown-item :command="{type:'delete',data:row}">-->
<!-- 移除-->
<!-- </el-dropdown-item>-->
<el-dropdown-item :command="{type:'delete',data:row}">
移除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>