diff --git a/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementCashierController.java b/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementCashierController.java new file mode 100644 index 0000000..aa5743c --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/activity/declarereimbursement/reimbursement/controller/ActivityReimbursementCashierController.java @@ -0,0 +1,129 @@ +package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +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.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService; +import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam; +import io.swagger.annotations.ApiOperation; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import java.util.List; + +/** + * 费用报销出纳支付节点列表。 + * 这里直接复用通用流程审批能力,只负责按出纳节点筛选待办和已办数据。 + */ +@IocBean +@Ok("json") +@ApiOperation("活动报销,出纳支付") +@At("/platform/activityReimbursement/cashier") +public class ActivityReimbursementCashierController { + + @Inject + private ActivityReimbursementService activityReimbursementService; + + @At("") + @SaCheckPermission("activityReimbursement.cashier") + @Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/cashier/index.html") + public void index() { + } + + @At + @ApiOperation("活动报销,出纳支付列表") + @SaCheckPermission("activityReimbursement.cashier") + public Result pageData(CommonPageParam pageParam) { + Sql sql = Sqls.create(""" + SELECT + info.id, + info.userName, + info.mobile, + info.loginName, + info.applyTime, + info.activityName, + info.activityAddress, + info.planStartTime, + info.planEndTime, + info.declareUnitName, + info.activityType, + info.activityContent, + info.activityNumber, + info.activityReimbursementMode, + info.outlayManageSource, + info.deductionBudgetId, + info.actualMoney, + outlay.budgetReimburseType, + 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, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL, 1, 0) AS canRevoke + FROM + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo + LEFT JOIN activity_budget outlay on info.deductionBudgetId=outlay.id + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 + $condition + """); + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageParam.getSearchKeyword())) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike("info.userName", pageParam.getSearchKeyword()); + seg.orLike("info.loginName", pageParam.getSearchKeyword()); + cnd.and(seg); + } + cnd.andEX("info.unionId", "=", pageParam.getUnionId()); + cnd.andEX("info.clubId", "=", pageParam.getClubId()); + cnd.and("t.taskName", "=", "e283f33f-4ac7-4c66-9b16-e0653e8dc452"); + if (!StpUtil.hasRole(RoleConstant.SYSADMIN.name())) { + 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()); + cnd.andEX("YEAR(info.applyTime)", "=", pageParam.getYear()); + if (pageParam.getAudit()) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + + if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) { + cnd.desc("info.applyTime"); + } else { + cnd.orderBy("info." + pageParam.getPageOrderName(), PageUtil.getOrder(pageParam.getPageOrderBy())); + } + cnd.groupBy("t.id"); + sql.setCondition(cnd); + Pagination pagination = activityReimbursementService.listPageMap(pageParam.getPageNumber(), pageParam.getPageSize(), sql); + return Result.success().addData(pagination); + } +} diff --git a/src/main/resources/static/assets/platform/img/v4/xw.png b/src/main/resources/static/assets/platform/img/v4/xw.png new file mode 100644 index 0000000..c0ffbbb Binary files /dev/null and b/src/main/resources/static/assets/platform/img/v4/xw.png differ diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/cashier/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/cashier/index.html new file mode 100644 index 0000000..568f41b --- /dev/null +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/cashier/index.html @@ -0,0 +1,255 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + + + + + + + + + + + + + +
+ + +