Merge branch 'main' of https://dd3skj.picp.vip/zhaoxinyu/v4
This commit is contained in:
+2
-1
@@ -244,7 +244,8 @@ public class ActivityBasicUnionController {
|
||||
|
||||
@At
|
||||
public Result branchUnionPartUnitTransferData(String unionId) {
|
||||
List<ActivityBasicUnit> units = dao.query(ActivityBasicUnit.class, Cnd.where("unitLevel", "=", 2).asc("unitcode"));
|
||||
// List<ActivityBasicUnit> units = dao.query(ActivityBasicUnit.class, Cnd.where("unitLevel", "=", 2).asc("unitcode"));
|
||||
List<ActivityBasicUnit> units = dao.query(ActivityBasicUnit.class, Cnd.where("unitTypeCode", "=", "1").asc("unitcode"));
|
||||
List<String> selectUnitIds = units.stream().filter(unit -> StrUtil.isNotBlank(unit.getUnionId()) && unit.getUnionId().equals(unionId)).map(ActivityBasicUnit::getId).toList();
|
||||
NutMap transferData = NutMap.NEW().addv("selectUnitIds", selectUnitIds).addv("allUnits", units);
|
||||
return Result.success(transferData);
|
||||
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.senior;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.bpm.models.BpmProcessTask;
|
||||
import com.budwk.app.flow.entity.ProcessTask;
|
||||
import com.budwk.app.flow.entity.ProcessTaskActor;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.dayofficework.message.service.GlobalMessageSendService;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName ProposalExpeditingController
|
||||
* @Author JyuHsin
|
||||
* @Date 2025/9/23 9:38
|
||||
* @Version 1.0
|
||||
* @Description TODO
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/senior/expediting")
|
||||
@Ok("json:full")
|
||||
@Api(tags = "提案-高级管理-提案催办")
|
||||
public class ProposalExpeditingController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private ProposalCommonService proposalCommonService;
|
||||
@Inject
|
||||
private GlobalMessageSendService globalMessageSendService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/proposal/senior/expediting/index.html")
|
||||
@SaCheckPermission("proposal.senior.expediting")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.senior.expediting")
|
||||
@ApiOperation("分页列表")
|
||||
public Result pageData(@Valid ProposalSearchParam pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
type.name AS typeName,
|
||||
tcs.fullName AS sessionName,
|
||||
tcd.`name` AS delegationName,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.id taskId,
|
||||
t.taskName AS taskKey,
|
||||
t.displayName taskName,
|
||||
t.taskType,
|
||||
t.performType taskPerformType,
|
||||
t.taskState,
|
||||
t.finishTime,
|
||||
t.taskParentId,
|
||||
t.variable taskVariable,
|
||||
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
|
||||
IFNULL(GROUP_CONCAT(DISTINCT nt.taskName),'结束') curTaskKey,
|
||||
CASE WHEN t.taskState = 20 AND ( rt.id IS NULL OR rt.taskState = 10 ) THEN 1 ELSE 0 END AS canRevoke,
|
||||
t.variable->>'$.unitName' AS taskUnitName,
|
||||
IF(JSON_EXTRACT(t.variable, '$.isMaster') = true, 1, 0) AS taskIsMaster
|
||||
FROM
|
||||
wf_process_task t
|
||||
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10
|
||||
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id
|
||||
LEFT JOIN proposal_info info ON info.id = ins.businessNo
|
||||
LEFT JOIN proposal_type type on type.id = info.typeId
|
||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "in", List.of("85cf23da-2dd5-4007-a1e9-bd9bfddc68f0", "c9a1586e-272b-41b8-b438-0be9f9e3781d","5ed5a1be-0cd3-4b47-a0d5-238d53b61f34"));
|
||||
|
||||
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
}
|
||||
|
||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||
|
||||
ProposalSearchParam.buildSearch(cnd, pageForm);
|
||||
cnd.groupBy("t.id");
|
||||
cnd.desc("t.createdAt");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("提案催办")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("proposal.senior.expediting")
|
||||
@SLog(tag = "提案-高级管理", msg = "提案催办")
|
||||
public Result submit(@Param(value = "taskIds") String[] taskIds,
|
||||
@Param(value = "content") String content) {
|
||||
|
||||
for (String taskId : taskIds) {
|
||||
|
||||
ProcessTask task = dao.fetch(ProcessTask.class, taskId);
|
||||
|
||||
List<ProcessTaskActor> taskActors = dao.query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "=", task.getId()));
|
||||
List<String> list = taskActors.stream().map(ProcessTaskActor::getActorId).toList();
|
||||
|
||||
String message = "您有一条待办任务," + content;
|
||||
globalMessageSendService.sendMessage(task.getDisplayName(), message, 2, list, null);
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.Period;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/9/22 20:41
|
||||
* @description
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/teacherCongress/delegate/push")
|
||||
@Ok("json:full")
|
||||
@Api(value = "/platform/teacherCongress/delegate/push", tags = "教代会代表推选")
|
||||
public class TeacherCongressDelegatePushController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/push/index.html")
|
||||
@SaCheckPermission("tc.delegate.push")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取本分工会下的非代表用户
|
||||
*
|
||||
* @param sessionId
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("tc.delegate.push")
|
||||
@SLog(tag = "民主管理-教代会代表推选", msg = "获取本分工会下的非代表用户")
|
||||
public Result getUnionUser(String sessionId, String unionId) {
|
||||
// 查询预选中的代表
|
||||
Cnd cndx = Cnd.where("sessionId", "=", sessionId);
|
||||
cndx.andEX("unionId", "=", SecurityUtil.getUnionId());
|
||||
List<Teacher_congress_delegate> delegateList = dao.query(Teacher_congress_delegate.class, cndx);
|
||||
// u.professionalTitle,
|
||||
// u.professionalLevel,
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.id AS userId,
|
||||
u.loginname as loginName,
|
||||
u.username as userName,
|
||||
|
||||
u.sex,
|
||||
u.birthday,
|
||||
u.nation,
|
||||
TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) AS age
|
||||
FROM
|
||||
`vw_user` u
|
||||
LEFT JOIN teacher_congress_delegate tcd ON tcd.userId = u.id
|
||||
AND tcd.sessionId = @sessionId
|
||||
LEFT JOIN teacher_congress_delegate_push tcdp ON tcdp.userId = tcdp.id
|
||||
AND tcdp.sessionId = @sessionId
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("sessionId", sessionId);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.member", "=", 1);
|
||||
cnd.and("tcd.userId", "is", null);
|
||||
cnd.and("tcdp.id", "is", null);
|
||||
cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
|
||||
sql.setCondition(cnd);
|
||||
List userList = baseService.listMap(sql);
|
||||
return Result.success(Map.of("userData", userList, "userValue", delegateList));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 推选代表
|
||||
*/
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Object addPreselectionDb(@Param("userValue") String[] userValue, String sessionId, String representativeType) {
|
||||
List<TeacherCongressDelegatePush> list = new ArrayList<>();
|
||||
for (String id : userValue) {
|
||||
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", id));
|
||||
|
||||
TeacherCongressDelegatePush tmd = new TeacherCongressDelegatePush();
|
||||
tmd.setUserId(user.getId());
|
||||
tmd.setSessionId(sessionId);
|
||||
tmd.setDelegationId(null);
|
||||
tmd.setUserName(user.getUsername());
|
||||
tmd.setLoginName(user.getLoginname());
|
||||
tmd.setSex(user.getSex());
|
||||
tmd.setNation(user.getNation());
|
||||
tmd.setEducation(user.getEducation());
|
||||
tmd.setAcademicDegree(user.getAcademicDegree());
|
||||
tmd.setPolitical(user.getPolitical());
|
||||
tmd.setProfessionalTitle(user.getProfessionalTitle());
|
||||
tmd.setProfessionalLevel(user.getProfessionalLevel());
|
||||
|
||||
tmd.setBirthday(user.getBirthday());
|
||||
tmd.setUnitId(user.getUnitId());
|
||||
tmd.setUnitName(user.getUnitName());
|
||||
tmd.setUnionId(user.getUnionId());
|
||||
tmd.setUnionName(user.getUnionName());
|
||||
|
||||
tmd.setOrdinaryTeacher(false);
|
||||
tmd.setSeniorTeacher(false);
|
||||
tmd.setSchoolLeader(false);
|
||||
tmd.setMiddleLevelLeader(false);
|
||||
|
||||
tmd.setMobile(user.getMobile());
|
||||
|
||||
tmd.setIsJdh(true);
|
||||
tmd.setIsGdh(false);
|
||||
tmd.setRepresentativeType(representativeType);
|
||||
if (ObjectUtil.isNotEmpty(user.getBirthday())) {
|
||||
Date birthdayDate = user.getBirthday();
|
||||
LocalDate birthday = birthdayDate.toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate();
|
||||
|
||||
LocalDate currentDate = LocalDate.now();
|
||||
int age = Period.between(birthday, currentDate).getYears();
|
||||
tmd.setAge(age);
|
||||
}
|
||||
tmd.setPushTime(new Date());
|
||||
list.add(tmd);
|
||||
}
|
||||
dao.insert(list);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
package com.budwk.app.zhgh.democratic.teachercongress.delegate.models;
|
||||
|
||||
import com.budwk.app.base.model.BaseModel;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/9/22 20:40
|
||||
* @description 代表推选表
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Table("teacher_congress_delegate_push")
|
||||
@TableMeta("{'mysql-charset':'utf8mb4'}")
|
||||
@Comment("代表推选表")
|
||||
public class TeacherCongressDelegatePush extends BaseModel {
|
||||
|
||||
@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 userId;
|
||||
|
||||
@Column
|
||||
@Comment("所属教代会ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String sessionId;
|
||||
|
||||
@Column
|
||||
@Comment("所属代表团 当用户为校领导是该字段不为空")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String delegationId;
|
||||
|
||||
@Column
|
||||
@Comment("姓名")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String userName;
|
||||
|
||||
@Column
|
||||
@Comment("工号")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String loginName;
|
||||
|
||||
@Column
|
||||
@Comment("性别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 2)
|
||||
private String sex;
|
||||
|
||||
@Column
|
||||
@Comment("出生日期")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date birthday;
|
||||
|
||||
@Column
|
||||
@Comment("民族")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
private String nation;
|
||||
|
||||
@Column
|
||||
@Comment("政治面貌")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String political;
|
||||
|
||||
@Column
|
||||
@Comment("学历")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String education;
|
||||
|
||||
@Column
|
||||
@Comment("学位")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String academicDegree;
|
||||
|
||||
@Column
|
||||
@Comment("职称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String professionalTitle;
|
||||
|
||||
@Column
|
||||
@Comment("职级")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String professionalLevel;
|
||||
|
||||
@Column
|
||||
@Comment("是否专任教师")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean ordinaryTeacher;
|
||||
|
||||
@Column
|
||||
@Comment("是否高级职称专任教师")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean seniorTeacher;
|
||||
|
||||
@Column
|
||||
@Comment("是否校领导")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean schoolLeader;
|
||||
|
||||
@Column
|
||||
@Comment("是否中层领导")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean middleLevelLeader;
|
||||
|
||||
@Column
|
||||
@Comment("行政职称===>position")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String administrativeTitle;
|
||||
|
||||
@Column
|
||||
@Comment("年龄")
|
||||
@ColDefine(type = ColType.INT)
|
||||
private Integer age;
|
||||
|
||||
@Column
|
||||
@Comment("单位ID")
|
||||
@ColDefine(type = ColType.VARCHAR)
|
||||
private String unitId;
|
||||
|
||||
@Column
|
||||
@Comment("单位名称")
|
||||
@ColDefine(type = ColType.VARCHAR)
|
||||
private String unitName;
|
||||
|
||||
@Column
|
||||
@Comment("分工会ID")
|
||||
@ColDefine(type = ColType.VARCHAR)
|
||||
private String unionId;
|
||||
|
||||
@Column
|
||||
@Comment("分工会名称")
|
||||
@ColDefine(type = ColType.VARCHAR)
|
||||
private String unionName;
|
||||
|
||||
@Column
|
||||
@Comment("手机号")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String mobile;
|
||||
|
||||
@Column
|
||||
@Comment("推送时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date pushTime;
|
||||
|
||||
|
||||
@Column
|
||||
@Comment("教代会代表类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String roleId;
|
||||
|
||||
@Column
|
||||
@Comment("教代会")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJdh;
|
||||
|
||||
@Column
|
||||
@Comment("工代会")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isGdh;
|
||||
|
||||
@Column
|
||||
@Comment("备注")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String bz;
|
||||
|
||||
@Column
|
||||
@Comment("代表类型(正式代表 列席代表)")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 4)
|
||||
private String representativeType;
|
||||
}
|
||||
+2
-1
@@ -171,7 +171,8 @@ public class TeacherCongressDelegationController {
|
||||
seg.orEX("id", "not in", unitIds);
|
||||
seg.orEX("id", "in", selectUnitIds);
|
||||
|
||||
Cnd cnd = Cnd.where("unitLevel", "=", 2);
|
||||
// Cnd cnd = Cnd.where("unitLevel", "=", 2);
|
||||
Cnd cnd = Cnd.where("unitTypeCode", "=", "1");
|
||||
if (!seg.isEmpty()) {
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
+2
-1
@@ -174,7 +174,8 @@ public class WorkerCongressDelegationController {
|
||||
seg.orEX("id", "not in", unitIds);
|
||||
seg.orEX("id", "in", selectUnitIds);
|
||||
|
||||
Cnd cnd = Cnd.where("unitLevel", "=", 2);
|
||||
// Cnd cnd = Cnd.where("unitLevel", "=", 2);
|
||||
Cnd cnd = Cnd.where("unitTypeCode", "=", "1");
|
||||
if (!seg.isEmpty()) {
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
+35
-13
@@ -17,20 +17,42 @@ import lombok.Getter;
|
||||
public enum MemberChangeType {
|
||||
|
||||
//变更类型
|
||||
NEW("新入职"),
|
||||
RESTORE("入会"),
|
||||
WITHDRAWAL("退会"),
|
||||
WORK("在职"),
|
||||
LEAVE_SCHOOL("离校"),
|
||||
RETIRE("退休"),
|
||||
RESIGN("辞职"),
|
||||
OUT("调出"),
|
||||
LEAVE_OFFICE("离职"),
|
||||
OTHER("其他减员"),
|
||||
UNIT_CHANGE("单位异动"),
|
||||
UNION_CHANGE("工会关系异动"),
|
||||
BASIC_CHANGE("基本信息异动");
|
||||
NEW("NEW", "新入职"),
|
||||
RESTORE("RESTORE", "入会"),
|
||||
WITHDRAWAL("WITHDRAWAL", "退会"),
|
||||
|
||||
ONLINE("ONLINE", "在岗"),
|
||||
FLEX("FLEX", "柔性"),
|
||||
SECONDED("SECONDED", "借调挂职"),
|
||||
REMOTE_POST("REMOTE_POST", "异地任职"),
|
||||
REHIRE_INNER("REHIRE_INNER", "内退返岗"),
|
||||
|
||||
SHORT_TRIP("SHORT_TRIP", "短期公差"),
|
||||
DOMESTIC_MEET("DOMESTIC_MEET", "境内会务"),
|
||||
QUARANTINE("QUARANTINE", "疫期隔离"),
|
||||
SICK_LEAVE("SICK_LEAVE", "病假"),
|
||||
PERSONAL_LEAVE("PERSONAL_LEAVE", "事假"),
|
||||
NURSING_LEAVE("NURSING_LEAVE", "哺乳假"),
|
||||
|
||||
MATERNITY("MATERNITY", "产假"),
|
||||
LONG_SICK("LONG_SICK", "长病假"),
|
||||
ABROAD_PUB("ABROAD_PUB", "公派出国"),
|
||||
STUDY_DOMESTIC("STUDY_DOMESTIC", "国内进修"),
|
||||
STUDY_ABROAD("STUDY_ABROAD", "境外留学"),
|
||||
OFF_JOB_START("OFF_JOB_START", "离岗创业"),
|
||||
INNER_RETIRE("INNER_RETIRE", "内部退养"),
|
||||
|
||||
EXTEND("EXTEND", "延聘"),
|
||||
REHIRE_SCH("REHIRE_SCH", "学校返聘"),
|
||||
REHIRE_DEPT("REHIRE_DEPT", "部门返聘"),
|
||||
|
||||
OFFLINE("OFFLINE", "不在岗"),
|
||||
|
||||
UNIT_CHANGE("UNIT_CHANGE", "单位异动"),
|
||||
UNION_CHANGE("UNION_CHANGE", "工会关系异动"),
|
||||
BASIC_CHANGE("BASIC_CHANGE", "基本信息异动");
|
||||
|
||||
|
||||
private final String code;
|
||||
private final String changeTypeName;
|
||||
}
|
||||
|
||||
+2
@@ -92,6 +92,7 @@ public class MemberChangeApplyController {
|
||||
|
||||
// 开启流程实例
|
||||
Dict args = Dict.create();
|
||||
args.set("origin", "personType");
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
args.set(FlowConst.FORM_DATA, memberChangeRecord);
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HYBG", memberChangeRecord.getId(), SecurityUtil.getUserId(), args);
|
||||
@@ -116,6 +117,7 @@ public class MemberChangeApplyController {
|
||||
dao.insertOrUpdate(memberChangeRecord);
|
||||
|
||||
Dict dict = Dict.create();
|
||||
dict.set("origin", "personType");
|
||||
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||
flowCommonService.executeTask(dict);
|
||||
|
||||
+35
-49
@@ -4,10 +4,12 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.budwk.app.base.annotation.RepeatSubmit;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.BpmProcessConstant;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.exception.BaseException;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
|
||||
@@ -15,6 +17,11 @@ import com.budwk.app.bpm.models.BpmProcessInstance;
|
||||
import com.budwk.app.bpm.models.BpmProcessTask;
|
||||
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
|
||||
import com.budwk.app.bpm.service.BpmService;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
import com.budwk.app.flow.entity.ProcessInstance;
|
||||
import com.budwk.app.flow.entity.ProcessTask;
|
||||
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
@@ -59,7 +66,7 @@ public class MemberChangeManageController {
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private BpmService bpmService;
|
||||
private FlowEngine flowEngine;
|
||||
@Inject
|
||||
private CommonService commonService;
|
||||
@Inject
|
||||
@@ -87,65 +94,44 @@ public class MemberChangeManageController {
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "会员高级管理-会员变更", msg = "分工会/校工会会员管理员提交变更")
|
||||
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
|
||||
public Result doSubmitChange(@Param("record") MemberChangeRecord record, @Param("approvalRemark") String approvalRemark){
|
||||
public Result doSubmitChange(MemberChangeRecord record){
|
||||
// 检验是否有变更
|
||||
if (Lang.isEmpty(record)) {
|
||||
return Result.error("未获取到异动数据");
|
||||
}
|
||||
List<NutMap> changeInfos = memberCommonService.getChangeInfos(record);
|
||||
if (Lang.isEmpty(changeInfos)) {
|
||||
return Result.error("未校验到变更数据,请确认数据是否存在变更");
|
||||
}
|
||||
|
||||
if (Lang.isEmpty(record.getChangeTypes())) {
|
||||
record.setChangeTypes(List.of(MemberChangeType.BASIC_CHANGE.name()));
|
||||
} else {
|
||||
List<String> changeTypes = record.getChangeTypes();
|
||||
changeTypes.add(MemberChangeType.BASIC_CHANGE.name());
|
||||
record.setChangeTypes(changeTypes);
|
||||
}
|
||||
|
||||
boolean schoolRoleBool = AuthUtil.hasRoleOr(RoleConstant.SCHOOL_UNION_CHAIRMAN.name(), RoleConstant.SCHOOL_UNION_MEMBER_ADMIN.name(), RoleConstant.SYSADMIN.name());
|
||||
boolean branchRoleBool = AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name());
|
||||
|
||||
record.setApplyDateTime(DateUtil.date());
|
||||
record.setChangeOrigin(schoolRoleBool ? MemberChangeOrigin.SCHOOL_UNION.name() : MemberChangeOrigin.BRANCH_UNION.name());
|
||||
// 变更类型
|
||||
MemberChangeOrigin changeOrigin = schoolRoleBool ? MemberChangeOrigin.SCHOOL_UNION : branchRoleBool ? MemberChangeOrigin.BRANCH_UNION : null;
|
||||
|
||||
if (changeOrigin == null) {
|
||||
throw new BaseException("没有权限,或未设置工会小组");
|
||||
}
|
||||
|
||||
memberCommonService.validateChangeAndSetBasicData(record);
|
||||
dao.insertOrUpdate(record);
|
||||
|
||||
bpmService.startSubmitProcessInstance(BpmProcessConstant.MEMBER_CHANGE.name(),
|
||||
"【会员变更】" + record.getUsername(), record.getId(), List.of(SecurityUtil.getUserLoginname()), null);
|
||||
|
||||
// 有这个菜单权限的,那就是默认分工会审核通过了
|
||||
BpmProcessInstance instance = dao.fetch(BpmProcessInstance.class, Cnd.where("processInstanceBusinessId", "=", record.getId()));
|
||||
BpmProcessTask task = dao.fetch(BpmProcessTask.class, Cnd.where(BpmProcessTask::getProcessInstanceId, "=", instance.getId())
|
||||
.desc(BpmProcessTask::getCreatedAt));
|
||||
BpmTaskApprovalParam param = new BpmTaskApprovalParam();
|
||||
param.setProcessInstanceId(instance.getId());
|
||||
param.setProcessInstanceBusinessId(record.getId());
|
||||
param.setProcessInstanceTaskId(task.getId());
|
||||
param.setBpmTaskApprovalType(BpmTaskApprovalTypeEnum.PASS.name());
|
||||
param.setBpmTaskApprovalTypeEnum(BpmTaskApprovalTypeEnum.PASS);
|
||||
param.setApprovalOpinion("分工会审核通过");
|
||||
// 表示分工会审核通过
|
||||
param.getBpmTaskApprovalTypeEnum();
|
||||
Map<String, Object> variables = BeanUtil.beanToMap(param);
|
||||
bpmService.completeTask(param.getProcessInstanceTaskId(), param.getBpmTaskApprovalTypeEnum(), variables, List.of(SecurityUtil.getUserLoginname()));
|
||||
|
||||
// 如果有校工会或者超管的角色,直接审核通过了
|
||||
// 开启流程实例
|
||||
Dict args = Dict.create();
|
||||
if (schoolRoleBool) {
|
||||
BpmProcessInstance committeeInstance = dao.fetch(BpmProcessInstance.class, Cnd.where("processInstanceBusinessId", "=", record.getId()));
|
||||
BpmProcessTask committeeTask = dao.fetch(BpmProcessTask.class, Cnd.where(BpmProcessTask::getProcessInstanceId, "=", committeeInstance.getId())
|
||||
.desc(BpmProcessTask::getCreatedAt));
|
||||
args.set("origin", "schoolUnion");
|
||||
} else {
|
||||
args.set("origin", "branchUnion");
|
||||
}
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
args.set(FlowConst.FORM_DATA, record);
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HYBG", record.getId(), SecurityUtil.getUserId(), args);
|
||||
|
||||
BpmTaskApprovalParam committeeParam = new BpmTaskApprovalParam();
|
||||
committeeParam.setProcessInstanceId(committeeInstance.getId());
|
||||
committeeParam.setProcessInstanceBusinessId(record.getId());
|
||||
committeeParam.setProcessInstanceTaskId(committeeTask.getId());
|
||||
committeeParam.setBpmTaskApprovalType(BpmTaskApprovalTypeEnum.PASS.name());
|
||||
committeeParam.setBpmTaskApprovalTypeEnum(BpmTaskApprovalTypeEnum.PASS);
|
||||
committeeParam.setApprovalOpinion("校工会审核通过");
|
||||
// 自动完成第一个申请任务
|
||||
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||
for (ProcessTask task : doingTaskList) {
|
||||
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
||||
}
|
||||
|
||||
memberCommonService.compareChangeInfoAndUpdateMember(committeeParam.getProcessInstanceBusinessId());
|
||||
bpmService.completeTask(committeeParam.getProcessInstanceTaskId(), committeeParam.getBpmTaskApprovalTypeEnum(), null, null);
|
||||
// 如果是管理员的话,直接完成变更,修改变更记录
|
||||
if (schoolRoleBool) {
|
||||
memberCommonService.compareChangeInfoAndUpdateMember(record);
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ public class MemberInfoBoardController {
|
||||
@At
|
||||
@SaCheckPermission(value = {"member.info.board", "h5.member.info.board"}, mode = SaMode.OR)
|
||||
public Result memberPercentage() {
|
||||
List<Sys_dict> memberApplyPersonTypeDictList = sysDictService.getSubListByCode("PERSON_TYPE");
|
||||
List<Sys_dict> memberApplyPersonTypeDictList = sysDictService.getSubListByCode("USER_PERSON_TYPE");
|
||||
List<String> personTypes = memberApplyPersonTypeDictList.stream().map(Sys_dict::getCode).collect(Collectors.toList());
|
||||
int member = memberInfoService.count(Sqls.create("select count(1) from sys_user where member = 1"));
|
||||
int user = memberInfoService.count(Sqls.create("select count(1) from sys_user").setParam("personTypes", personTypes));
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.sys.models.Sys_user;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.MemberChangeRecord;
|
||||
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
@@ -100,4 +101,10 @@ public interface MemberCommonService extends BaseService<Sys_user> {
|
||||
* @param record
|
||||
*/
|
||||
void validateChangeAndSetBasicData(MemberChangeRecord record);
|
||||
|
||||
/**
|
||||
* 验证变更信息
|
||||
* @param record
|
||||
*/
|
||||
void validateChangeAndSetBasicData(MemberChangeRecord record, MemberChangeOrigin origin);
|
||||
}
|
||||
|
||||
+11
-3
@@ -484,6 +484,13 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
|
||||
|
||||
@Override
|
||||
public void validateChangeAndSetBasicData(MemberChangeRecord record) {
|
||||
// 不传递 MemberChangeOrigin 默认个人变更
|
||||
validateChangeAndSetBasicData(record, MemberChangeOrigin.PERSONAL);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void validateChangeAndSetBasicData(MemberChangeRecord record, MemberChangeOrigin origin) {
|
||||
// 校验有没有发生变更
|
||||
List<NutMap> changeInfos = getChangeInfos(record);
|
||||
if (Lang.isEmpty(changeInfos)) {
|
||||
@@ -495,9 +502,10 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
|
||||
List<String> changeTypes = compareChangeType(record, user);
|
||||
|
||||
record.setChangeTypes(changeTypes);
|
||||
record.setUserId(SecurityUtil.getUserId());
|
||||
// 变更来源 个人
|
||||
record.setChangeOrigin(MemberChangeOrigin.PERSONAL.name());
|
||||
record.setUserId(user.getId());
|
||||
// 变更来源
|
||||
record.setChangeOrigin(origin != null ? origin.name() : MemberChangeOrigin.PERSONAL.name());
|
||||
record.setApplyDateTime(DateUtil.date());
|
||||
}
|
||||
|
||||
private String booleanVerification(Object value) {
|
||||
|
||||
Reference in New Issue
Block a user