diff --git a/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementDeputySchoolUnionController.java b/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementDeputySchoolUnionController.java index 01eab68..03ae5b7 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementDeputySchoolUnionController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementDeputySchoolUnionController.java @@ -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 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(); + } + } diff --git a/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/service/impl/ActivityReimbursementSchoolUnionServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/service/impl/ActivityReimbursementSchoolUnionServiceImpl.java index cff9723..9be6ef5 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/service/impl/ActivityReimbursementSchoolUnionServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/service/impl/ActivityReimbursementSchoolUnionServiceImpl.java @@ -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 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); diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/outlay/activityBudget/conteoller/ActivityBudgetSchoolAuditController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/outlay/activityBudget/conteoller/ActivityBudgetSchoolAuditController.java index b80dac6..f15003c 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/outlay/activityBudget/conteoller/ActivityBudgetSchoolAuditController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/outlay/activityBudget/conteoller/ActivityBudgetSchoolAuditController.java @@ -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); diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/apply/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/apply/index.html index 3feceab..fd92510 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/apply/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/apply/index.html @@ -122,7 +122,8 @@ layout("/layouts/platform.html"){ - +