This commit is contained in:
2025-10-19 17:18:40 +08:00
159 changed files with 625 additions and 424 deletions
@@ -204,7 +204,7 @@ public class FamilyActivityApplyController {
if(Lang.isEmpty(courseList)) {
return Result.success(new ArrayList<>());
}
List<String> assortList = courseList.stream().map(FamilyCourse::getAssort).filter(StrUtil::isNotBlank).toList();
List<String> assortList = courseList.stream().map(FamilyCourse::getAssort).filter(StrUtil::isNotBlank).distinct().toList();
return Result.success(assortList);
}
@@ -210,6 +210,9 @@ public class FamilyUserManageController {
excelCommonExportEntity.add(new ExcelExportEntity("签到时间", "attendTimeExcel", 22));
for (FamilyCourse c : courseList) {
if(!c.isMobileSign()) {
continue;
}
String courseId = c.getId();
String courseName = c.getCourseName();
List<NutMap> v = userList.stream().filter(x -> x.getString("courseId").equals(courseId)).collect(Collectors.toList());
@@ -208,7 +208,7 @@ public class TrainSignUpApplyController {
if (Lang.isEmpty(courseList)) {
return Result.success(new ArrayList<>());
}
List<String> assortList = courseList.stream().map(TrainSignUpCourse::getAssort).filter(StrUtil::isNotBlank).toList();
List<String> assortList = courseList.stream().map(TrainSignUpCourse::getAssort).filter(StrUtil::isNotBlank).distinct().toList();
return Result.success(assortList);
}
@@ -208,6 +208,9 @@ public class TrainSignUpUserManageController {
excelCommonExportEntity.add(new ExcelExportEntity("签到时间", "attendTimeExcel", 22));
for (TrainSignUpCourse c : courseList) {
if(!c.isMobileSign()) {
continue;
}
String courseId = c.getId();
String courseName = c.getCourseName();
List<NutMap> v = userList.stream().filter(x -> x.getString("courseId").equals(courseId)).collect(Collectors.toList());
@@ -133,8 +133,8 @@ public class TrainSignUpActivityStatisticsServiceImpl extends BaseServiceImpl<Tr
u.id as userId,
u.loginname,
u.username,
u.unitname,
u.unionname,
u.unitName,
u.unionName,
u.sex,
ifnull(tsuu.mobile, u.mobile) as mobile,
tsuu.signUpTime,
@@ -36,8 +36,8 @@ public class TrainSignUpUserServiceImpl extends BaseServiceImpl<TrainSignUpBlack
u.username,
u.loginname,
ifnull(tsuu.mobile, u.mobile) as mobile,
u.unitname,
u.unionname,
u.unitName,
u.unionName,
tsuc.courseName,
tsuu.state,
( SELECT count( 1 ) FROM train_sign_up_user_course WHERE userId = tsuu.userId $var) courseTotal,
@@ -3,6 +3,7 @@ package com.budwk.app.zhgh.dayofficework.fund.member.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
@@ -10,6 +11,7 @@ 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.vo.ProcessTaskVO;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.zhgh.dayofficework.fund.member.models.FundMemberApply;
import com.budwk.app.zhgh.dayofficework.fund.member.service.FundMemberService;
import com.deepoove.poi.XWPFTemplate;
@@ -21,6 +23,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@@ -51,7 +54,13 @@ public class FundMemberCommonController {
@At
@SaCheckPermission("fundMember")
public Result info(@Valid String id) {
FundMemberApply fundMember = fundMemberService.fetch(id);
FundMemberApply fundMember;
Sys_user user = dao.fetch(Sys_user.class, Cnd.where("id", "=", id));
if (Lang.isNotEmpty(user)) {
fundMember = fundMemberService.fetch(Cnd.where("loginname", "=", user.getLoginname()));
} else {
fundMember = fundMemberService.fetch(id);
}
return Result.success(fundMember);
}
@@ -66,6 +75,9 @@ public class FundMemberCommonController {
docData.put("birthday", DateUtil.format(fundMember.getBirthday(), "yyyy年MM月dd日"));
docData.put("joinWorkTime", DateUtil.format(fundMember.getJoinWorkTime(), "yyyy年MM月dd日"));
docData.put("retireTime", DateUtil.format(fundMember.getRetireTime(), "yyyy年MM月dd日"));
if (StrUtil.isNotBlank(fundMember.getAvatar())) {
docData.put("avatar", sysOfficeTemplateUtil.createPictureRenderData(fundMember.getAvatar()));
}
// 流程实例
ProcessInstance processInstance = dao.fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", id));
@@ -8,12 +8,15 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
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.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.sys.models.Sys_user;
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;
import com.budwk.app.web.commons.base.Globals;
import com.budwk.app.zhgh.dayofficework.fund.member.models.FundMemberApply;
import com.budwk.app.zhgh.dayofficework.fund.member.models.FundMemberHis;
@@ -100,7 +103,11 @@ public class FundMemberQueryController {
public void exportExcel(Integer year, String unionId, HttpServletResponse response) {
Cnd cnd = Cnd.NEW();
cnd.and("YEAR(submitTime)", "=", year);
cnd.andEX("unionId", "=", unionId);
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("unionId", "=", SecurityUtil.getUnionId());
} else {
cnd.andEX("unionId", "=", unionId);
}
cnd.andEX(FundMemberApply::getIsJoin, "=", 1);
cnd.asc("unionId");
List<FundMemberApply> list = fundMemberService.query(cnd);
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.dayofficework.fund.member.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.result.Result;
import com.budwk.app.flow.constant.FlowConst;
@@ -12,6 +13,7 @@ import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.dayofficework.fund.member.models.FundMemberApply;
import com.budwk.app.zhgh.dayofficework.fund.member.service.FundMemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nutz.aop.interceptor.ioc.TransAop;
@@ -37,6 +39,8 @@ public class FundMemberWriteController {
@Inject
private FlowEngine flowEngine;
@Inject
private FundMemberService fundMemberService;
@Inject
private FlowCommonService flowCommonService;
@At("")
@@ -51,6 +55,9 @@ public class FundMemberWriteController {
@ApiOperation("保存申请")
@SLog(tag = "建言献策-填写申请", msg = "保存申请")
public Result save(@Param("data") FundMemberApply fundMember) {
if (StrUtil.isBlank(fundMember.getId())) {
fundMemberService.validateApply();
}
dao.insertOrUpdate(fundMember);
return Result.success();
}
@@ -62,6 +69,9 @@ public class FundMemberWriteController {
@Aop(TransAop.READ_COMMITTED)
@SLog(tag = "基金会员-填写申请", msg = "提交申请")
public Result submit(@Param("data") FundMemberApply fundMember) {
if (StrUtil.isBlank(fundMember.getId())) {
fundMemberService.validateApply();
}
fundMember.setSubmitTime(new Date());
fundMember.setIsJoin(true);
dao.insertOrUpdate(fundMember);
@@ -86,6 +96,9 @@ public class FundMemberWriteController {
@Aop(TransAop.READ_COMMITTED)
@SLog(tag = "基金会员-填写申请", msg = "重新提交申请")
public Result submitAgain(@Param("data") FundMemberApply fundMember, @Param("taskId") Long taskId) {
if (StrUtil.isBlank(fundMember.getId())) {
fundMemberService.validateApply();
}
dao.insertOrUpdate(fundMember);
Dict dict = Dict.create();
@@ -103,4 +116,12 @@ public class FundMemberWriteController {
return Result.success(box);
}
@At
@SaCheckPermission("fundMember.write")
@ApiOperation("校验是否有申请在流程中")
public Result validateApply(){
fundMemberService.validateApply();
return Result.success();
}
}
@@ -4,4 +4,9 @@ import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.dayofficework.fund.member.models.FundMemberApply;
public interface FundMemberService extends BaseService<FundMemberApply> {
/**
* 验证是否已经申请了
*/
void validateApply();
}
@@ -1,14 +1,39 @@
package com.budwk.app.zhgh.dayofficework.fund.member.service.impl;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.flow.entity.ProcessInstance;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.dayofficework.fund.member.models.FundMemberApply;
import com.budwk.app.zhgh.dayofficework.fund.member.service.FundMemberService;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
@IocBean(args = {"refer:dao"})
public class FundMemberServiceImpl extends BaseServiceImpl<FundMemberApply> implements FundMemberService {
public FundMemberServiceImpl(Dao dao) {
super(dao);
}
@Override
public void validateApply() {
FundMemberApply apply = dao().fetch(FundMemberApply.class,
Cnd.where(FundMemberApply::getLoginName, "=", SecurityUtil.getUserLoginname())
.and("isJoin", "=", 1)
.desc("submitTime"));
if (Lang.isEmpty(apply)) {
return;
}
int count = dao().count(ProcessInstance.class, Cnd.where("businessNo", "=", apply.getId())
.and(ProcessInstance::getState, "=", ProcessTaskStateEnum.DOING.getCode()));
if (count > 0) {
throw new RuntimeException("您有申请流程正在进行中,请等待流程结束后再次操作");
}
}
}
@@ -208,7 +208,7 @@ public class LiteracyApplyController {
if (Lang.isEmpty(courseList)) {
return Result.success(new ArrayList<>());
}
List<String> assortList = courseList.stream().map(LiteracyCourse::getAssort).filter(StrUtil::isNotBlank).toList();
List<String> assortList = courseList.stream().map(LiteracyCourse::getAssort).filter(StrUtil::isNotBlank).distinct().toList();
return Result.success(assortList);
}
@@ -208,6 +208,9 @@ public class LiteracyUserManageController {
excelCommonExportEntity.add(new ExcelExportEntity("签到时间", "attendTimeExcel", 22));
for (LiteracyCourse c : courseList) {
if(!c.isMobileSign()) {
continue;
}
String courseId = c.getId();
String courseName = c.getCourseName();
List<NutMap> v = userList.stream().filter(x -> x.getString("courseId").equals(courseId)).collect(Collectors.toList());
@@ -300,8 +300,8 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
List<ExcelExportEntity> excelExportEntities = new ArrayList<>();
excelExportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
excelExportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
excelExportEntities.add(new ExcelExportEntity("单位", "unitName", 20));
excelExportEntities.add(new ExcelExportEntity("分工会", "unionName", 20));
excelExportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
excelExportEntities.add(new ExcelExportEntity("所属单位", "unitName", 20));
excelExportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20));
for (QsvSubject subject : subjects) {
excelExportEntities.add(new ExcelExportEntity(subject.getTitle(), subject.getId(), 20));
@@ -0,0 +1,14 @@
package com.budwk.app.zhgh.staffmanage.personnelcheck.controller;
import org.nutz.ioc.loader.annotation.IocBean;
/**
* @version 1.0
* @Author FKY
* @nameCheckTaskGroupAuditController
* @Date 2025/10/17 16:46
* @注释
*/
@IocBean
public class CheckTaskGroupAuditController {
}
@@ -1,5 +1,16 @@
package com.budwk.app.zhgh.staffmanage.personnelcheck.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffmanage.personnelcheck.service.CheckTaskCommonService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Dao;
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;
/**
* @version 1.0
* @Author FKY
@@ -7,5 +18,28 @@ package com.budwk.app.zhgh.staffmanage.personnelcheck.controller;
* @Date 2025/10/15 10:48
* @注释
*/
@Slf4j
@IocBean
@Api("个人核对")
@Ok("json:full")
@At("/platform/personnel/check/verification/manage")
public class CheckTaskSingleController {
@Inject
private Dao dao;
@Inject
private CheckTaskCommonService checkTaskCommonService;
@At("/")
@SaCheckPermission("personnel.check.verification.single")
@Ok("beetl:/platform/zhgh/staffmanage/personnelcheck/single/index.html")
public void index() {
}
@At
@SaCheckPermission("personnel.check.verification.single")
public Result getSingleCheckTask(){
return Result.success();
}
}
@@ -1,6 +1,8 @@
package com.budwk.app.zhgh.staffmanage.personnelcheck.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.annotation.SLog;
@@ -40,8 +42,8 @@ import org.nutz.mvc.upload.UploadAdaptor;
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api("核对任务")
@Ok("json:full")
@At("/platform/personnel/check/verification/manage")
public class CheckTaskVerificationController {
@@ -79,9 +81,6 @@ public class CheckTaskVerificationController {
@SaCheckPermission("personnel.check.verification.manage")
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
public Result doAddOrModify(@Param("baseData") String data, TempFile file){
log.info("=================================主体数据:{}", data);
log.info("=================================导入文件:{}", file);
CheckTaskVerificationVO vo = JSONUtil.toBean(data, CheckTaskVerificationVO.class);
if (StrUtil.isNotBlank(vo.getId())) {
@@ -89,14 +88,28 @@ public class CheckTaskVerificationController {
// 1.重新配置核对字段,filedConfigData
dao.clear(CheckTaskFiledConfig.class, Cnd.where("taskId", "=", vo.getId()));
// 2.重新设置待核对人员表,personnelData
// dao.clear(Check)
dao.clear(CheckTaskPersonnel.class, Cnd.where("taskId", "=", vo.getId()));
}
// 修改审核流程配置
// 插入逻辑
// 1.界面可能会对相关审核步骤做修改,修改审核流程配置
dao.update(vo.getBusinessConfig());
// 2.新增或者修改事项任务
CheckTaskVerification verification = new CheckTaskVerification();
verification.setId(vo.getId());
verification.setCreateTime(vo.getCreateTime() == null ? DateUtil.date() : vo.getCreateTime());
verification.setYear(DateUtil.year(verification.getCreateTime()));
dao.insertOrUpdate(verification);
// 3.往字段表里面插入数据,最好做下字段映射,把相关字段与数据库的字段对应
// todo 字段映射
// 4.读取文件,构造数据(动态字段 data),往 CheckTaskPersonnel 表中插入数据
// todo 读取文件 转换成数据
log.info("=================================数据转换:{}", vo);
return Result.success();
}
@@ -36,6 +36,12 @@ public class CheckTaskVerificationVO {
@ApiModelProperty("结束时间")
private Date endTime;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("业务配置数据")
private CheckTaskBusinessConfig businessConfig;
@@ -97,11 +97,11 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
for (NutMap union : mapUnions) {
// 福利人数
long teacherSum = welfareSelectionList.stream().filter(v -> v.getString("welfareUnionId", "").equals(union.getString("id"))).count();
long teacherSum = welfareSelectionList.stream().filter(v -> StrUtil.isNotBlank(v.getString("welfareUnionId")) && v.getString("welfareUnionId", "").equals(union.getString("id"))).count();
union.put("teacherSum", teacherSum);
// 已选人数
long selectedNum = welfareSelectionList.stream().filter(v -> v.getString("welfareUnionId", "").equals(union.getString("id")) && v.getBoolean("has_selected")).count();
long selectedNum = welfareSelectionList.stream().filter(v -> StrUtil.isNotBlank(v.getString("welfareUnionId")) && v.getString("welfareUnionId", "").equals(union.getString("id")) && v.getBoolean("has_selected")).count();
union.put("selectedNum", selectedNum);
// 未选人数
@@ -109,7 +109,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
// 各选项的选择人数
for (WelfareProjectSubjectOption option : welfareOptions) {
long count = userSelections.stream().filter(v -> v.getString("welfareUnionId").equals(union.getString("id")) && StrUtil.isNotBlank(v.getString("selectOptionId")) && v.getString("selectOptionId").equals(option.getId())).map(v -> v.getString("selectUserId")).distinct().count();
long count = userSelections.stream().filter(v -> StrUtil.isNotBlank(v.getString("welfareUnionId")) && v.getString("welfareUnionId").equals(union.getString("id")) && StrUtil.isNotBlank(v.getString("selectOptionId")) && v.getString("selectOptionId").equals(option.getId())).map(v -> v.getString("selectUserId")).distinct().count();
union.put(option.getId(), count);
}
}