This commit is contained in:
=
2025-12-17 20:43:40 +08:00
14 changed files with 142 additions and 195 deletions
@@ -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);