工会干部培训、健身卡、省级互助保障

This commit is contained in:
=
2025-10-28 15:28:19 +08:00
parent 712b1ea597
commit a3fd6a1c26
15 changed files with 482 additions and 253 deletions
@@ -66,7 +66,7 @@ public class CadreTrainingMineController {
@SaCheckPermission(value = {"cadreTraining.mine", "h5.cadreTraining.mine"}, mode = SaMode.OR)
public Result pageData(@Valid PageForm pageForm, Integer year) {
Sql sql = Sqls.create("""
SELECT
SELECT DISTINCT
info.*,
ct.name,
ct.signUpStartTime,
@@ -3,7 +3,7 @@ package com.budwk.app.zhgh.dayofficework.cadreTraining.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import java.util.ArrayList;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.constant.RoleConstant;
@@ -17,12 +17,10 @@ import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson;
import com.budwk.app.zhgh.dayofficework.cadreTraining.model.CadreTrainingAct;
import com.budwk.app.zhgh.dayofficework.cadreTraining.model.CadreTrainingSignUp;
import com.budwk.app.zhgh.dayofficework.cadreTraining.service.CadreTrainingActService;
import com.budwk.app.zhgh.dayofficework.cadreTraining.service.CadreTrainingSignUpService;
import com.budwk.app.zhgh.dayofficework.rest.models.RestActSignUp;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd;
@@ -93,24 +91,33 @@ public class CadreTrainingSignUpController {
@At
@ApiOperation("提交申请")
@SaCheckPermission(value = {"cadreTraining.branchUnionSignUp", "h5.cadreTraining.branchUnionSignUp"}, mode = SaMode.OR)
public Result submit(@Param("data") CadreTrainingSignUp cadreTrainingSignUp) {
if (StrUtil.isBlank(cadreTrainingSignUp.getId())) cadreTrainingSignUp.setApplyTime(new Date());
public Result submit(@Param("data") CadreTrainingSignUp[] cadreTrainingSignUps) {
List<ProcessInstance> instances = new ArrayList<>();
dao.insertOrUpdate(cadreTrainingSignUp);
// 开启流程实例
Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, cadreTrainingSignUp);
ProcessInstance instance = flowEngine.startProcessInstanceByKey("GHGBPX", cadreTrainingSignUp.getId(), SecurityUtil.getUserId(), args);
for (CadreTrainingSignUp signUp : cadreTrainingSignUps) {
if (StrUtil.isBlank(signUp.getId())) {
signUp.setApplyTime(new Date());
}
dao.insertOrUpdate(signUp);
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
// 开启流程实例
Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, signUp);
ProcessInstance instance = flowEngine.startProcessInstanceByKey("GHGBPX", signUp.getId(), SecurityUtil.getUserId(), args);
instances.add(instance);
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
}
return Result.success();
}
@At
@SaCheckLogin
@ApiOperation(value = "队友搜索")
@@ -131,11 +138,14 @@ public class CadreTrainingSignUpController {
@SaCheckPermission("cadreTraining.branchUnionSignUp")
@ApiOperation("查询报名用户")
public Result listSignUser(@Param("activityId") String activityId) {
List<CadreTrainingSignUp> list = dao.query(CadreTrainingSignUp.class, Cnd.where(CadreTrainingSignUp::getCadreTrainingActId, "=", activityId).and(CadreTrainingSignUp::getUnionId, "=", SecurityUtil.getUnionId()));
List<CadreTrainingSignUp> list = dao.query(CadreTrainingSignUp.class,
Cnd.where(CadreTrainingSignUp::getCadreTrainingActId, "=", activityId)
.and(CadreTrainingSignUp::getUnionId, "=", SecurityUtil.getUnionId()));
return Result.success(list);
}
@At
@SaCheckPermission("cadreTraining.branchUnionSignUp")
@ApiOperation("查询本分工会名额")
@@ -0,0 +1,120 @@
package com.budwk.app.zhgh.dayofficework.exerciseCard.controller;
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.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.web.commons.base.Globals;
import com.budwk.app.zhgh.dayofficework.exerciseCard.model.ExerciseCard;
import com.budwk.app.zhgh.dayofficework.exerciseCard.service.ExerciseCardService;
import com.deepoove.poi.XWPFTemplate;
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.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.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Map;
/**
* @author : hongqiwei
* @description :
* @createDate : 2025/10/13 15:11
*/
@IocBean
@At("/platform/exerciseCard/mine")
@Api("查询条件")
@Ok("json:full")
@Slf4j
public class ExerciseCardMineController {
@Inject
private Dao dao;
@Inject
private ExerciseCardService exerciseCardService;
@Inject
private SysOfficeTemplateUtil sysOfficeTemplateUtil;
@At("/index")
@Ok("beetl:/platform/zhgh/dayofficework/exerciseCard/mine/index.html")
@SaCheckPermission("exerciseCard.mine")
public void index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission(value = {"exerciseCard.mine", "h5.exerciseCard.mine"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
Integer year,
String unionId,
String unitId,
String searchKeyword,
String sex) {
Cnd cnd = Cnd.NEW();
// 年度查询条件
cnd.andEX("year(applyTime)", "=", year);
cnd.andEX("userID", "=", SecurityUtil.getUserId());
cnd.desc("applyTime");
Pagination pagination = exerciseCardService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
@At
@ApiOperation("删除")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission(value = {"exerciseCard.mine", "h5.exerciseCard.mine"}, mode = SaMode.OR)
@SLog( tag = "删除工会报销", msg = "删除工会报销")
public Result delete(@Param("id") String id) {
exerciseCardService.delete(id);
return Result.success();
}
@At
@Ok("void")
@SaCheckPermission(value = {"exerciseCard.mine", "h5.exerciseCard.mine"}, mode = SaMode.OR)
@SLog(tag = "健身卡", msg = "导出证明模板")
public void doExportApply(@Valid String id, HttpServletResponse response) {
ExerciseCard info = dao.fetch(ExerciseCard.class, id);
Map<String, Object> docData = BeanUtil.beanToMap(info);
docData.put("time", DateUtil.format(new java.util.Date(), "yyyy年MM月dd日"));
String fileName = Globals.AppName + "" + info.getUserName() + "】健身卡充值证明.docx";
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("exercise_card_proof")).render(docData).writeAndClose(byteArrayOutputStream);
CommonDownloadUtil.download(fileName, byteArrayOutputStream.toByteArray(), response);
} catch (IOException e) {
log.error("健身卡充值证明,id:{},错误信息:{}", id, e.getMessage());
}
}
}
@@ -6,11 +6,14 @@ import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
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.base.service.BaseService;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessInstance;
@@ -19,11 +22,13 @@ import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.dayofficework.exerciseCard.vo.ExercisePeopleImportVo;
import com.budwk.app.zhgh.staffbenefit.maternityLeave.models.MaternityLeave;
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 com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService;
import com.deepoove.poi.XWPFTemplate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -43,8 +48,10 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.net.URLEncoder;
import java.util.*;
/**
* @version 1.0
@@ -70,6 +77,8 @@ public class MutualInsuranceApplyController {
@Inject
private FlowCommonService flowCommonService;
@Inject
private SysOfficeTemplateUtil sysOfficeTemplateUtil;
@Inject
private MutualInsuranceProjectService mutualInsuranceProjectService;
@Inject
private MutualInsuranceUserService mutualInsuranceUserService;
@@ -91,17 +100,6 @@ public class MutualInsuranceApplyController {
@SLog(tag = "生育休假-休假申请", msg = "保存休假申请")
public Result save(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo) {
if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date());
mutualInsuranceUserInfo.setIsSubmit("未提交");
dao.insertOrUpdate(mutualInsuranceUserInfo);
return Result.success();
}
@At
@ApiOperation("提交申请")
@SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR)
public Result submit(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo) {
if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date());
mutualInsuranceUserInfo.setIsSubmit("已提交");
dao.insertOrUpdate(mutualInsuranceUserInfo);
return Result.success();
}
@@ -164,5 +162,31 @@ public class MutualInsuranceApplyController {
Pagination pagination = mutualInsuranceUserService.listPageMap(1, 10, sql);
return Result.success().addData(pagination.getList());
}
@At
@Ok("void")
@ApiOperation("导入模板下载")
@SaCheckPermission("mutualInsurance.apply")
public void downloadTemplate(HttpServletResponse response) {
try {
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.setCharacterEncoding("utf-8");
String fileName = "省级互助保障给付申请书模板.docx";
String encodedFileName = URLEncoder.encode("省级互助保障给付申请书模板", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
Map<String, Object> docData = new HashMap<>();
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
XWPFTemplate template = XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("mutual_insurance_user_info1"));
template.render(docData);
template.writeAndClose(byteArrayOutputStream);
CommonDownloadUtil.download(fileName, byteArrayOutputStream.toByteArray(), response);
}
} catch (Exception e) {
log.error("模板下载失败", e);
throw new RuntimeException("导出失败");
}
}
}
@@ -75,34 +75,13 @@ public class MutualInsuranceCollectController {
String searchKeyword,
String sex) {
Sql sql = Sqls.create("""
SELECT
info.*,
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,
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask') AS startTaskId
FROM
mutual_insurance_user_info info
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
$condition
""");
SELECT
info.*
FROM
mutual_insurance_user_info info
$condition
""");
Cnd cnd = Cnd.NEW();
// 年度查询条件
// cnd.andEX("year(info.applyTime)", "=", year);
//事项id查询
cnd.andEX("info.projectId", "=", projectId);
@@ -122,15 +101,13 @@ public class MutualInsuranceCollectController {
cnd.and(seg);
}
// 只查询流程实例状态为20的数据(已完成状态)
// cnd.and("ins.state", "=", 20);
cnd.desc("info.applyTime");
sql.setCondition(cnd);
Pagination<NutMap> pagination = mutualInsuranceUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("删除")
@Aop(TransAop.READ_COMMITTED)
@@ -92,28 +92,9 @@ public class MutualInsuranceMineController {
public Result pageData(PageForm pageForm, @Param(value = "year") Integer year) {
Sql sql = Sqls.create("""
SELECT
info.*,
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,
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask') AS startTaskId
info.*
FROM
mutual_insurance_user_info info
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
$condition
""");
Cnd cnd = Cnd.NEW();
@@ -1,13 +1,16 @@
package com.budwk.app.zhgh.staffbenefit.mutualInsurance.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 org.nutz.dao.interceptor.annotation.PrevInsert;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author : hongqiwei
@@ -183,6 +186,11 @@ public class MutualInsuranceUserInfo extends BaseModel implements Serializable {
@ColDefine(type = ColType.VARCHAR, width = 200)
private String sign;
@Column
@Comment("附件")
@ColDefine(type = ColType.MYSQL_JSON)
private List<JSONObject> files;
@Column
@Comment("申请时间")
@ColDefine(type = ColType.DATETIME)