This commit is contained in:
2025-12-17 20:10:08 +08:00
parent 6351aaba48
commit c35bea7cc7
23 changed files with 288 additions and 241 deletions
@@ -72,7 +72,7 @@ public class WkWebSocket extends AbstractWsEndpoint implements PubSub {
ScanResult<String> scan = null;
do {
scan = jedis.scan(scan == null ? ScanParams.SCAN_POINTER_START : scan.getStringCursor(), match);
for (String key : scan.getResult()) {
for (String key : scan.getResult()) {
switch (jedis.type(key)) {
case "none":
break;
@@ -1,24 +1,33 @@
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.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.exception.BaseException;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam;
import com.budwk.app.zhgh.dayofficework.outlay.activityBudget.models.ActivityBudget;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -36,6 +45,9 @@ public class ActivityReimbursementDeputySchoolUnionController {
@Inject
private ActivityReimbursementService activityReimbursementService;
@Inject
private FlowCommonService flowCommonService;
@At("")
@SaCheckPermission("activityReimbursement.deputySchoolUnion")
@Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html")
@@ -96,8 +108,8 @@ public class ActivityReimbursementDeputySchoolUnionController {
pageParam.buildSearch(cnd, "info.");
cnd.and("t.taskName", "=", "f9b8379f-f348-4985-ba58-b6ba28deb9af");
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
cnd.andEX("outlay.budgetReimburseType", "=" , pageParam.getBudgetReimburseType());
// cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
cnd.andEX("outlay.budgetReimburseType", "=", pageParam.getBudgetReimburseType());
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
@@ -119,5 +131,44 @@ public class ActivityReimbursementDeputySchoolUnionController {
}
@At
@SLog(tag = "报销", msg = "校工会副主席审核了一条记录")
@SaCheckPermission("activityReimbursement.deputySchoolUnion")
public Result doReview(@Param("data") String param, String id) {
Dict args = Json.fromJson(Dict.class, param);
if (args.getInt("submitType") == 1) {
ActivityReimbursementInfo info = activityReimbursementService.dao().fetch(ActivityReimbursementInfo.class, id);
if (info.getActualMoney().compareTo(BigDecimal.valueOf(10000)) < 0) {
ActivityBudget budget = activityReimbursementService.dao().fetch(ActivityBudget.class, info.getDeductionBudgetId());
Sql sql1 = Sqls.create("""
SELECT
info.actualMoney
FROM
`activity_reimbursement_info` info
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
WHERE
ins.state = 20
and info.deductionBudgetId=@deductionBudgetId
""").setParam("deductionBudgetId", info.getDeductionBudgetId());
List<NutMap> infoList = activityReimbursementService.listMap(sql1);
double usedBudgetMoney = infoList.stream().mapToDouble(v -> v.getDouble("actualMoney")).sum();
//全部已使用
BigDecimal allUsedMoney = info.getActualMoney().add(BigDecimal.valueOf(usedBudgetMoney));
if (allUsedMoney.compareTo(budget.getTotalBudgetMoney()) > 0) {
return Result.error("剩余配额不足!当前活动预算:" + budget.getTotalBudgetMoney()
+ ",已使用:" + usedBudgetMoney + "元,剩余:"
+ budget.getTotalBudgetMoney().subtract(BigDecimal.valueOf(usedBudgetMoney)));
}
}
}
flowCommonService.executeTask(args);
return Result.success();
}
}
@@ -18,11 +18,16 @@ import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.union.model.OutlayMa
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.json.Json;
import org.nutz.lang.util.NutMap;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
/**
@@ -45,7 +50,32 @@ public class ActivityReimbursementSchoolUnionServiceImpl extends BaseServiceImpl
Dict args = Json.fromJson(Dict.class, param);
if (args.getInt("submitType") == 1) {
ActivityReimbursementInfo info = dao().fetch(ActivityReimbursementInfo.class, id);
OutlayUseDetail detail = new OutlayUseDetail();
ActivityBudget budget = dao().fetch(ActivityBudget.class, info.getDeductionBudgetId());
Sql sql1 = Sqls.create("""
SELECT
info.actualMoney
FROM
`activity_reimbursement_info` info
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
WHERE
ins.state = 20
and info.deductionBudgetId=@deductionBudgetId
""").setParam("deductionBudgetId", id);
List<NutMap> infoList = listMap(sql1);
double usedBudgetMoney = infoList.stream().mapToDouble(v -> v.getDouble("actualMoney")).sum();
//全部已使用
BigDecimal allUsedMoney = info.getActualMoney().add(BigDecimal.valueOf(usedBudgetMoney));
if (allUsedMoney.compareTo(budget.getTotalBudgetMoney()) > 0) {
throw new BaseException("剩余配额不足!当前活动预算:" + budget.getTotalBudgetMoney()
+ ",已使用:" + usedBudgetMoney + "元,剩余:"
+ budget.getTotalBudgetMoney().subtract(BigDecimal.valueOf(usedBudgetMoney)));
}
/* OutlayUseDetail detail = new OutlayUseDetail();
detail.setProjectName(info.getActivityName());
detail.setAdjustMoney(info.getActualMoney());
@@ -135,7 +165,7 @@ public class ActivityReimbursementSchoolUnionServiceImpl extends BaseServiceImpl
//添加使用记录到经费管理表
detail.setOutlayManageId(manageClub.getId());
dao().insert(detail);
}
}*/
}
flowCommonService.executeTask(args);
@@ -89,7 +89,7 @@ public class ActivityBudgetSchoolAuditController {
""");
Cnd cnd = Cnd.NEW();
cnd.and("t.taskName", "=", "b6f29037-972d-4b97-8677-c3b3672ef0dc");
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
// cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
cnd.andEX("info.unionId", "=", unionId);
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
cnd.andEX("info.budgetReimburseType", "=", budgetReimburseType);
@@ -50,6 +50,11 @@ public class WelfareUserSelection extends BaseModel implements Serializable {
@ColDefine(type = ColType.VARCHAR, width = 32)
private String selectUserId;
@Column
@Comment("选择用户")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userName;
@Column
@Comment("选择时间")
@ColDefine(type = ColType.DATETIME)
@@ -16,6 +16,7 @@ import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.sys.models.Sys_union;
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;
@@ -392,7 +393,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
t2.birthday
FROM
`welfare_list` t1
LEFT JOIN sys_user t2 ON t2.id = t1.userId
LEFT JOIN `vw_user` t2 ON t2.id = t1.userId
$condition
""");
Cnd cnd = Cnd.NEW();
@@ -408,6 +409,9 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
if (pageForm.getBirthMonths() != null && pageForm.getBirthMonths().length > 0) {
cnd.andEX("MONTH(t2.birthday)", "in", pageForm.getBirthMonths());
}
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name()) && AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
cnd.and("t2.unionId", "=", SecurityUtil.getUnionId());
}
cnd.andEX("t1.welfareUnitId", "in", pageForm.getUnitIds());
cnd.andEX("t1.welfareUnionId", "=", pageForm.getUnionId());
cnd.andEX("t1.personType", "in", pageForm.getPersonTypes());
@@ -219,6 +219,9 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
Cnd cnd = Cnd.NEW();
cnd.and("t1.projectId", "=", pageForm.getProjectId());
cnd.groupBy("t1.id");
if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()) || AuthUtil.hasRole(RoleConstant.BRANCH_UNION_ADMIN.name())) {
cnd.and("t1.welfareUnionId", "=", SecurityUtil.getUnionId());
}
cnd.asc("t1.welfareUnitId");
sql.setCondition(cnd);
List<NutMap> list = listMap(sql);
@@ -7,11 +7,14 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.export.ExcelExportService;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
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.service.impl.BaseServiceImpl;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.sys.models.Sys_union;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.welfare.model.WelfareProject;
import com.budwk.app.zhgh.welfare.model.WelfareProjectSubjectOption;
import com.budwk.app.zhgh.welfare.service.WelfareStatisticsService;
@@ -44,9 +47,15 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
@Override
public NutMap pageData(String projectId, String unionId) {
// 分工会数据
List<Sys_union> unions = dao().query(Sys_union.class, Cnd.NEW().andEX(Sys_union::getId, "=", unionId).asc(Sys_union::getUnionCode));
List<Sys_union> unions;
if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()) || AuthUtil.hasRole(RoleConstant.BRANCH_UNION_ADMIN.name())) {
unions = dao().query(Sys_union.class, Cnd.NEW().andEX(Sys_union::getId, "=", SecurityUtil.getUnionId()).asc(Sys_union::getUnionCode));
}else {
unions = dao().query(Sys_union.class, Cnd.NEW().andEX(Sys_union::getId, "=", unionId).asc(Sys_union::getUnionCode));
}
List<NutMap> mapUnions = BeanUtil.copyToList(unions, NutMap.class);
// 表格动态列数据
List<NutMap> dynamicTableColumns = new ArrayList<>() {{
add(NutMap.NEW().addv("label", "分工会").addv("prop", "name"));
@@ -468,6 +477,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
""");
Cnd cnd = Cnd.NEW();
cnd.and("t1.projectId", "=", projectId);
cnd.groupBy("t1.userId");
sql.setCondition(cnd);
List<NutMap> welfareSelectionList = listMap(sql);
@@ -483,6 +493,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
""");
Cnd cnd2 = Cnd.NEW();
cnd2.and("t1.welfareId", "=", projectId);
sql2.setCondition(cnd2);
List<NutMap> userSelections = listMap(sql2);