commit
This commit is contained in:
+30
-5
@@ -5,9 +5,16 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.sys.models.Sys_role;
|
||||
import com.budwk.app.sys.models.Sys_user_role;
|
||||
import com.budwk.app.sys.services.SysRoleService;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.club.model.SysClub;
|
||||
import com.budwk.app.zhgh.club.service.SysClubService;
|
||||
import com.budwk.app.zhgh.democratic.suggestionBox.models.SuggestionBox;
|
||||
import com.budwk.app.zhgh.integral.controller.IntegralManageController;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||
@@ -52,6 +59,11 @@ public class ActivityBudgetApplyController {
|
||||
@Inject
|
||||
private ActivityBudgetService activityBudgetService;
|
||||
|
||||
@Inject
|
||||
private SysClubService sysClubService;
|
||||
@Inject
|
||||
private SysRoleService sysRoleService;
|
||||
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/outlay/activityBudget/apply/index.html")
|
||||
@@ -59,11 +71,6 @@ public class ActivityBudgetApplyController {
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At("/form")
|
||||
@Ok("beetl:/platform/zhgh/outlay/activityBudget/apply/form.html")
|
||||
@SaCheckPermission("activity.budget.apply")
|
||||
public void form() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@@ -72,6 +79,7 @@ public class ActivityBudgetApplyController {
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(type = "activityBudgetApply", tag = "年度预算申报-预算申报", msg = "提交年度预算申报")
|
||||
public Result submit(@Param("data") ActivityBudget activityBudget) {
|
||||
activityBudget.setApplyDate(DateUtil.now());
|
||||
return activityBudgetService.submit(activityBudget);
|
||||
}
|
||||
|
||||
@@ -84,6 +92,7 @@ public class ActivityBudgetApplyController {
|
||||
activityBudget.setUserId(SecurityUtil.getUserId());
|
||||
activityBudget.setLoginName(SecurityUtil.getUserLoginname());
|
||||
activityBudget.setUserName(SecurityUtil.getUserUsername());
|
||||
activityBudget.setApplyDate(DateUtil.now());
|
||||
activityBudgetService.insertOrUpdate(activityBudget);
|
||||
return Result.success();
|
||||
}
|
||||
@@ -125,6 +134,22 @@ public class ActivityBudgetApplyController {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("查询协会,超级管理员查全部的")
|
||||
@SaCheckLogin
|
||||
public Result listClub(){
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
||||
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||
cnd.and("id", "in", myClubId);
|
||||
}
|
||||
List<SysClub> list = sysClubService.query(cnd);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.budwk.app.zhgh.outlay.activityBudget.conteoller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -133,7 +134,7 @@ public class ActivityBudgetApplyListController {
|
||||
|
||||
@At
|
||||
@ApiOperation("查询单个预算详细信息")
|
||||
@SaCheckPermission("activity.budget.applyList")
|
||||
@SaCheckLogin
|
||||
public Result findOne(String id) {
|
||||
return Result.success(activityBudgetService.findOne(id));
|
||||
}
|
||||
|
||||
+8
@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
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;
|
||||
@@ -97,6 +98,13 @@ public class ActivityBudgetSchoolAuditController {
|
||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
group.orLike("info.loginName", pageForm.getSearchKeyword());
|
||||
group.orLike("info.userName", pageForm.getSearchKeyword());
|
||||
cnd.and(group);
|
||||
}
|
||||
|
||||
|
||||
cnd.andEX("YEAR(info.applyDate)", "=", year);
|
||||
cnd.and(Cnd.likeEX("info.activityMatter", activityMatter));
|
||||
|
||||
-130
@@ -1,130 +0,0 @@
|
||||
package com.budwk.app.zhgh.outlay.activityBudget.interceptor;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowInterceptor;
|
||||
import com.budwk.app.flow.engine.core.Execution;
|
||||
import com.budwk.app.flow.engine.core.ServiceContext;
|
||||
import com.budwk.app.flow.entity.ProcessInstance;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudgetDetails;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.service.ActivityBudgetService;
|
||||
import com.budwk.app.zhgh.outlay.outlayManage.school.model.OutlayManageSchool;
|
||||
import com.budwk.app.zhgh.outlay.outlayManage.union.model.OutlayManageUnion;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.json.Json;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/7/28 17:01
|
||||
* @description 活动预算申报提交后置拦截器
|
||||
*/
|
||||
public class OutlayActBudgetApplyPostInterceptor implements FlowInterceptor {
|
||||
|
||||
|
||||
@Override
|
||||
public void intercept(Execution execution) {
|
||||
String formDataStr = execution.getArgs().getStr(FlowConst.FORM_DATA);
|
||||
ActivityBudget activityBudget = Json.fromJson(ActivityBudget.class, formDataStr);
|
||||
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
|
||||
if (StrUtil.isEmpty(activityBudget.getId())) {
|
||||
activityBudget.setUserId(SecurityUtil.getUserId());
|
||||
activityBudget.setLoginName(SecurityUtil.getUserLoginname());
|
||||
activityBudget.setUserName(SecurityUtil.getUserUsername());
|
||||
//查询分工会这个项目有没有申报过
|
||||
// if (List.of("ACTIVITY_BUDGET_TYPE_TWO").contains(activityBudget.getBudgetTypeCode())) {
|
||||
// int activityMatterCount = dao.count(ActivityBudget.class, Cnd.where("activityMatter", "=",
|
||||
// activityBudget.getActivityMatter()).and("unionId", "=", SecurityUtil.getUnionId()));
|
||||
// if (activityMatterCount > 0) {
|
||||
// return Result.error(activityBudget.getActivityMatter() + "已填写申请!");
|
||||
// }
|
||||
// }
|
||||
}
|
||||
//删除预算详情表
|
||||
if (StrUtil.isNotBlank(activityBudget.getId())) {
|
||||
dao.clear(ActivityBudgetDetails.class, Cnd.where("budgetId", "=", activityBudget.getId()));
|
||||
}
|
||||
|
||||
if (List.of("superadmin").contains(SecurityUtil.getUserLoginname())) {
|
||||
//如果是超级管理员就可以直接提交不用审核
|
||||
activityBudget.setTotalBudgetMoney(activityBudget.getDeclareTotalBudgetMoney());
|
||||
ActivityBudget budget = null;
|
||||
if (StrUtil.isNotBlank(activityBudget.getId())) {
|
||||
budget = dao.fetch(ActivityBudget.class, activityBudget.getId());
|
||||
}
|
||||
//如果申报的是校工会预算
|
||||
if (activityBudget.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_ONE")) {
|
||||
OutlayManageSchool outlayManageSchool = dao.fetch(OutlayManageSchool.class, Cnd.where("year", "=", DateUtil.thisYear()));
|
||||
if (ObjectUtil.isNotEmpty(outlayManageSchool)) {
|
||||
if (StrUtil.isNotBlank(activityBudget.getId())) {
|
||||
//如果传过来有预算Id,代表是修改的,那么就减去原来的金额
|
||||
outlayManageSchool.setTotalQuota(outlayManageSchool.getTotalQuota().subtract(budget.getTotalBudgetMoney()));
|
||||
}
|
||||
//直接修改为现在传过来的金额
|
||||
outlayManageSchool.setTotalQuota(outlayManageSchool.getTotalQuota().add(activityBudget.getTotalBudgetMoney()));
|
||||
dao.updateIgnoreNull(outlayManageSchool);
|
||||
}
|
||||
} else if (activityBudget.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_TWO")) {
|
||||
//如果申报的是分工会预算
|
||||
OutlayManageUnion outlayManageUnion = dao.fetch(OutlayManageUnion.class,
|
||||
Cnd.where("year", "=", DateUtil.thisYear())
|
||||
.and("unionId", "=", activityBudget.getUnionId()));
|
||||
if (ObjectUtil.isNotEmpty(outlayManageUnion)) {
|
||||
if (StrUtil.isNotBlank(activityBudget.getId())) {
|
||||
outlayManageUnion.setTotalQuota(outlayManageUnion.getTotalQuota().subtract(budget.getTotalBudgetMoney()));
|
||||
}
|
||||
outlayManageUnion.setTotalQuota(outlayManageUnion.getTotalQuota().add(activityBudget.getTotalBudgetMoney()));
|
||||
dao.updateIgnoreNull(outlayManageUnion);
|
||||
}
|
||||
} else if (activityBudget.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||
//如果不等于校工会预算才往表里面加预算
|
||||
//代表协会可能用的是校工会的预算
|
||||
// if (!activityBudget.getIsSchoolBudget()) {
|
||||
// jf_club jfClub = dao.fetch(jf_club.class, Cnd.where("year", "=", DateUtil.getYear())
|
||||
// .and("club_id", "=", activityBudget.getClubId()));
|
||||
// if (ObjectUtil.isNotEmpty(jfClub)) {
|
||||
// if (StrUtil.isNotBlank(activityBudget.getId())) {
|
||||
// jfClub.setTotalQuota(jfClub.getTotalQuota().subtract(budget.getTotalBudgetMoney()));
|
||||
// }
|
||||
// jfClub.setTotalQuota(jfClub.getTotalQuota().add(activityBudget.getTotalBudgetMoney()));
|
||||
// dao.updateIgnoreNull(jfClub);
|
||||
// }
|
||||
// }
|
||||
} else if (activityBudget.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_FOUR")) {
|
||||
// 更新其他经费表
|
||||
// JfOther jfOther = dao.fetch(JfOther.class, Cnd.where("year", "=", DateUtil.getYear()));
|
||||
// if (ObjectUtil.isNotEmpty(jfOther)) {
|
||||
// if (StrUtil.isNotBlank(activityBudget.getId())) {
|
||||
// jfOther.setTotalQuota(jfOther.getTotalQuota().subtract(budget.getTotalBudgetMoney()));
|
||||
// }
|
||||
// jfOther.setTotalQuota(jfOther.getTotalQuota().add(activityBudget.getTotalBudgetMoney()));
|
||||
// dao.updateIgnoreNull(jfOther);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
dao.insertOrUpdate(activityBudget);
|
||||
// for (ActivityBudgetDetails details : activityBudget.getBudgetDetails()) {
|
||||
// details.setBudgetId(activityBudget.getId());
|
||||
// }
|
||||
// //添加预算详情表
|
||||
// dao.insert(activityBudget.getBudgetDetails());
|
||||
|
||||
execution.getArgs().set(FlowConst.FORM_DATA,Json.toJson(activityBudget));
|
||||
|
||||
int instanceId = execution.getArgs().getInt(FlowConst.PROCESS_INSTANCE_ID_KEY);
|
||||
dao.update(ProcessInstance.class, Chain.make("businessNo", activityBudget.getId()), Cnd.where(ProcessInstance::getId, "=", instanceId));
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -6,6 +6,7 @@ import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@@ -20,7 +21,7 @@ public interface ActivityBudgetService extends BaseService<ActivityBudget> {
|
||||
*/
|
||||
Result submit(ActivityBudget activityBudget);
|
||||
|
||||
ActivityBudget findOne(String id);
|
||||
NutMap findOne(String id);
|
||||
|
||||
|
||||
void doExport(Integer year, String activityMatter, HttpServletResponse response);
|
||||
|
||||
+11
-10
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
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.entity.ProcessTaskActor;
|
||||
@@ -15,6 +16,7 @@ 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.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
|
||||
import java.util.List;
|
||||
@@ -31,6 +33,11 @@ public class ActivityBudgetApplyStatisticsServiceImpl extends BaseServiceImpl im
|
||||
super(dao);
|
||||
}
|
||||
|
||||
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
|
||||
|
||||
@Override
|
||||
public Sql getsql(Integer year, String unionId, String clubId, String outlayManageSource, String activityMatter) {
|
||||
Sql sql = Sqls.create("""
|
||||
@@ -38,9 +45,11 @@ public class ActivityBudgetApplyStatisticsServiceImpl extends BaseServiceImpl im
|
||||
YEAR(ab.applyDate) year,
|
||||
ab.*,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo
|
||||
ins.businessNo,
|
||||
abb.activityMatter activityMatterTwo
|
||||
FROM
|
||||
activity_budget ab
|
||||
LEFT JOIN activity_budget abb ON abb.id = ab.schoolBudgetId
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = ab.id
|
||||
$condition
|
||||
""");
|
||||
@@ -82,17 +91,9 @@ public class ActivityBudgetApplyStatisticsServiceImpl extends BaseServiceImpl im
|
||||
//查出流程实例
|
||||
ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where("businessNo", "=", id));
|
||||
if (ObjectUtil.isNotEmpty(instance)) {
|
||||
//查询流程任务
|
||||
List<ProcessTask> taskList = dao().query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()));
|
||||
List<Long> taskIds = taskList.stream().map(ProcessTask::getId).toList();
|
||||
//删除流程任务下面所有的人员
|
||||
dao().clear(ProcessTask.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "in", taskIds));
|
||||
//删除流程任务
|
||||
dao().clear(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()));
|
||||
//删除流程实例
|
||||
dao().delete(ProcessInstance.class, instance.getId());
|
||||
//删除预算
|
||||
dao().delete(ActivityBudget.class, id);
|
||||
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+18
-14
@@ -64,26 +64,30 @@ public class ActivityBudgetQueryStatisticsServiceImpl extends BaseServiceImpl im
|
||||
return listMap(sql);
|
||||
|
||||
} else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||
/* Sql sql = Sqls.create("""
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@year `year`,
|
||||
sc.`code` AS clubCode,
|
||||
sc.`name` AS clubName,
|
||||
COALESCE ( SUM( ab.totalBudgetMoney ), 0 ) AS totalBudgetMoney
|
||||
@YEAR `year`,
|
||||
sc.clubCode,
|
||||
sc.clubName,
|
||||
ab.clubId,
|
||||
COALESCE(SUM(ab.totalBudgetMoney), 0) AS totalBudgetMoney
|
||||
FROM
|
||||
sys_club sc
|
||||
LEFT JOIN activity_budget ab ON ab.clubId = sc.id
|
||||
AND ab.outlayManageSource = 'ACTIVITY_BUDGET_TYPE_THREE'
|
||||
AND ab.auditState = 4
|
||||
AND YEAR(ab.applyDate)=@year
|
||||
activity_budget ab
|
||||
LEFT JOIN sys_club sc ON ab.clubId = sc.id
|
||||
LEFT JOIN wf_process_instance wpi ON wpi.businessNo = ab.id
|
||||
$condition
|
||||
""").setParam("year", year);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("sc.id", "=", clubId);
|
||||
cnd.groupBy("sc.id");
|
||||
cnd.asc("sc.`code`");
|
||||
cnd.andEX("ab.clubId", "=", clubId);
|
||||
cnd.andEX("ab.isSchoolBudget", "=", 0);
|
||||
cnd.andEX("ab.outlayManageSource", "=", "ACTIVITY_BUDGET_TYPE_THREE");
|
||||
cnd.andEX("wpi.state", "=", 20);
|
||||
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
||||
cnd.groupBy("ab.clubId");
|
||||
cnd.asc("sc.clubCode");
|
||||
sql.setCondition(cnd);
|
||||
return listMap(sql);*/
|
||||
sql.setCondition(cnd);
|
||||
return listMap(sql);
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
+16
-5
@@ -88,7 +88,6 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
|
||||
AND t.taskState = 10
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
$condition
|
||||
""");
|
||||
if (StrUtil.isNotBlank(activityMatter)) {
|
||||
@@ -136,7 +135,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
int activityMatterCount = count(Cnd.where("activityMatter", "=",
|
||||
activityBudget.getActivityMatter()).and("unionId", "=", SecurityUtil.getUnionId()));
|
||||
if (activityMatterCount > 0) {
|
||||
return Result.error(activityBudget.getActivityMatter() + "已填写申请!");
|
||||
// return Result.error(activityBudget.getActivityMatter() + "已填写申请!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -228,9 +227,21 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityBudget findOne(String id) {
|
||||
ActivityBudget activityBudget = fetchLinks(fetch(id), "budgetDetails", Cnd.NEW().asc("detailsOrder"));
|
||||
// activityBudget.setAllocationEditAuditList(dao().query(Audit.class, Cnd.where("parentId", "=", activityBudget.getId())));
|
||||
public NutMap findOne(String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ab.*,
|
||||
abb.activityMatter activityMatterTwo
|
||||
FROM
|
||||
activity_budget ab
|
||||
LEFT JOIN activity_budget abb ON abb.id = ab.schoolBudgetId
|
||||
WHERE
|
||||
ab.id = @id
|
||||
""").setParam("id",id);
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
execute(sql);
|
||||
NutMap activityBudget = (NutMap) sql.getResult();
|
||||
activityBudget.put("budgetDetails", dao().query(ActivityBudgetDetails.class, Cnd.where("budgetId", "=", id)));
|
||||
return activityBudget;
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,11 @@ public class OutlayUseDetail extends BaseModel implements Serializable {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String activityNumber;
|
||||
|
||||
@Column
|
||||
@Comment("业务Id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String outlayReimburseId;
|
||||
|
||||
@Column
|
||||
@Comment("活动时间")
|
||||
@ColDefine(type = ColType.VARCHAR)
|
||||
|
||||
+1
@@ -115,6 +115,7 @@ public class OutlayManageUnionController {
|
||||
WHERE
|
||||
YEAR(ab.applyDate) = @year
|
||||
AND ab.outlayManageSource = 'ACTIVITY_BUDGET_TYPE_TWO'
|
||||
AND ab.isSchoolBudget =0
|
||||
AND wpi.state = 20
|
||||
""").setParam("year", DateUtil.thisYear());
|
||||
List<NutMap> budgetList = baseService.listMap(sql);
|
||||
|
||||
+3
-3
@@ -1,5 +1,6 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
@@ -71,7 +72,7 @@ public class OutlayReimburseApplyController {
|
||||
@ApiOperation("查询这个预算已经报销了的金额")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result getBxMoneyByBudgetId(String budgetId) {
|
||||
return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId));
|
||||
return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId,null));
|
||||
}
|
||||
|
||||
|
||||
@@ -136,8 +137,7 @@ public class OutlayReimburseApplyController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
@ApiOperation("保存申请")
|
||||
@SaCheckLogin
|
||||
public Result findOne(String id){
|
||||
return Result.success(outlayReimburseApplyService.fetch(id));
|
||||
}
|
||||
|
||||
+3
-1
@@ -70,10 +70,12 @@ public class OutlayReimburseApplyListController {
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
|
||||
AND t.taskState = 10
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", year);
|
||||
cnd.and("info.userId", "=", SecurityUtil.getUserId());
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
+10
-12
@@ -9,6 +9,7 @@ import com.budwk.app.base.service.BaseService;
|
||||
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.outlay.outlayReimburse.vo.OutlayReimbursePageForm;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -49,13 +50,7 @@ public class OutlayReimburseSchoolCnAuditController {
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.schoolCnAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String unionId,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource,
|
||||
String activityMatter) {
|
||||
public Result pageData(OutlayReimbursePageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
@@ -88,16 +83,19 @@ public class OutlayReimburseSchoolCnAuditController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "=", "714574d6-29c3-4a2c-bc63-ecef38a0d6d0");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
||||
|
||||
if (approval) {
|
||||
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("info.outlayManageSource", "=", pageForm.getOutlayManageSource());
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear());
|
||||
if (pageForm.getApproval()) {
|
||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||
} else {
|
||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", year);
|
||||
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
|
||||
cnd.groupBy("t.id");
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.desc("t.createdAt").desc("info.applyTime");
|
||||
|
||||
+12
-11
@@ -13,6 +13,7 @@ import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.vo.OutlayReimbursePageForm;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -56,13 +57,7 @@ public class OutlayReimburseSchoolKjAuditController {
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.schoolKjAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String unionId,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource,
|
||||
String activityMatter) {
|
||||
public Result pageData(OutlayReimbursePageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
@@ -95,16 +90,22 @@ public class OutlayReimburseSchoolKjAuditController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "=", "930aed03-677b-41d7-8920-7d9b45a7abc9");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
||||
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("info.outlayManageSource", "=", pageForm.getOutlayManageSource());
|
||||
cnd.andEX("info.detailsTypeId", "=", pageForm.getDetailsTypeId());
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear());
|
||||
|
||||
if (approval) {
|
||||
if (pageForm.getApproval()) {
|
||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||
} else {
|
||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", year);
|
||||
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
|
||||
|
||||
cnd.groupBy("t.id");
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.desc("t.createdAt").desc("info.applyTime");
|
||||
|
||||
+12
-11
@@ -13,6 +13,7 @@ import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.vo.OutlayReimbursePageForm;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -56,13 +57,7 @@ public class OutlayReimburseSchoolZxAuditController {
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.schoolZxAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String unionId,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource,
|
||||
String activityMatter) {
|
||||
public Result pageData(OutlayReimbursePageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
@@ -95,16 +90,22 @@ public class OutlayReimburseSchoolZxAuditController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "=", "c433d966-05f4-45b4-b845-755b600d852a");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
||||
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("info.outlayManageSource", "=", pageForm.getOutlayManageSource());
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear());
|
||||
cnd.andEX("info.detailsTypeId", "=", pageForm.getDetailsTypeId());
|
||||
|
||||
if (approval) {
|
||||
if (pageForm.getApproval()) {
|
||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||
} else {
|
||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", year);
|
||||
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
|
||||
|
||||
cnd.groupBy("t.id");
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.desc("t.createdAt").desc("info.applyTime");
|
||||
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
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.service.BaseService;
|
||||
import com.budwk.app.base.utils.PageUtil;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseSummaryService;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.vo.OutlayReimbursePageForm;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
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.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/8/20 17:43
|
||||
* @description 报销汇总
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/outlay/reimburse/summary")
|
||||
@Ok("json:full")
|
||||
@Api("我的报销")
|
||||
public class OutlayReimburseSummaryController {
|
||||
|
||||
@Inject
|
||||
private OutlayReimburseSummaryService outlayReimburseSummaryService;
|
||||
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/summary/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.summary")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.summary")
|
||||
public Result pageData(OutlayReimbursePageForm pageForm) {
|
||||
Sql sql = outlayReimburseSummaryService.getSql(pageForm);
|
||||
Pagination pagination = outlayReimburseSummaryService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("outlay.reimburse.summary")
|
||||
public void doExportUserExcel(@Param("data") OutlayReimbursePageForm pageForm, HttpServletResponse response) {
|
||||
try {
|
||||
Sql sql = outlayReimburseSummaryService.getSql(pageForm);
|
||||
List<NutMap> map = outlayReimburseSummaryService.listMap(sql);
|
||||
|
||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ACTIVITY_BUDGET_TYPE");
|
||||
List<Sys_dict> dictList2 = sysDictService.getSubListByCode("ACTIVITY_BUDGET_DETAILS_TYPE");
|
||||
|
||||
map.forEach(item -> {
|
||||
Sys_dict dict = dictList.stream().filter(sys_dict -> sys_dict.getCode().equals(item.getString("outlayManageSource"))).findFirst().orElse(null);
|
||||
item.put("outlayManageSourceName", dict.getName());
|
||||
Sys_dict dict2 = dictList2.stream().filter(sys_dict -> sys_dict.getCode().equals(item.getString("detailsTypeId"))).findFirst().orElse(null);
|
||||
item.put("detailsTypeName", dict2.getName());
|
||||
|
||||
if (List.of("ACTIVITY_BUDGET_TYPE_ONE", "ACTIVITY_BUDGET_TYPE_FOUR").contains(item.getString("outlayManageSource"))) {
|
||||
item.put("helpUnitName", dict.getName());
|
||||
}else if (item.getString("outlayManageSource").equals("ACTIVITY_BUDGET_TYPE_TWO")){
|
||||
item.put("helpUnitName", item.getString("unionName"));
|
||||
}else if (item.getString("outlayManageSource").equals("ACTIVITY_BUDGET_TYPE_THREE")){
|
||||
item.put("helpUnitName", item.getString("clubName"));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
ExcelExportEntity no = new ExcelExportEntity("序号", "no", 10);
|
||||
no.setFormat("isAddIndex");
|
||||
entityList.add(no);
|
||||
|
||||
entityList.add(new ExcelExportEntity("经办人工号", "loginName", 20));
|
||||
entityList.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entityList.add(new ExcelExportEntity("活动类型", "outlayManageSourceName", 20));
|
||||
entityList.add(new ExcelExportEntity("申报单位", "helpUnitName", 20));
|
||||
entityList.add(new ExcelExportEntity("金额", "money", 20));
|
||||
entityList.add(new ExcelExportEntity("明细类", "detailsTypeName", 50));
|
||||
entityList.add(new ExcelExportEntity("申报时间", "applyTime", 20));
|
||||
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("报销汇总名单.xlsx", "UTF-8"));
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, map);
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
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.service.BaseService;
|
||||
import com.budwk.app.base.utils.PageUtil;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/8/19 16:50
|
||||
* @description 分工会主席审核
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@Slf4j
|
||||
@Api(tags = "费用报销管理-分工会主席审核")
|
||||
@At("/platform/outlay/reimburse/unionAudit")
|
||||
public class OutlayReimburseUnionAuditController {
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/unionAudit/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.unionAudit")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.unionAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
YEAR(info.applyTime) year,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariale,
|
||||
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 outlay_reimburse info ON info.id = ins.businessNo
|
||||
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();
|
||||
cnd.and("t.taskName", "=", "d818a045-14c9-4668-993c-e18a1f4fc0c7");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
||||
|
||||
if (approval) {
|
||||
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.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.andEX("YEAR(info.applyTime)", "=", year);
|
||||
cnd.groupBy("t.id");
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.desc("t.createdAt").desc("info.applyTime");
|
||||
} else {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pageVO = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pageVO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.interceptor;
|
||||
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowInterceptor;
|
||||
import com.budwk.app.flow.engine.core.Execution;
|
||||
import com.budwk.app.flow.engine.core.ServiceContext;
|
||||
import com.budwk.app.flow.entity.ProcessInstance;
|
||||
import com.budwk.app.zhgh.democratic.suggestionBox.models.SuggestionBox;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.json.Json;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/7/30 15:58
|
||||
* @description
|
||||
*/
|
||||
public class OutlayReimburseApplyPostInterceptor implements FlowInterceptor {
|
||||
@Override
|
||||
public void intercept(Execution execution) {
|
||||
String formDataStr = execution.getArgs().getStr(FlowConst.FORM_DATA);
|
||||
OutlayReimburse outlayReimburse = Json.fromJson(OutlayReimburse.class, formDataStr);
|
||||
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
dao.insertOrUpdate(outlayReimburse);
|
||||
execution.getArgs().set("outlayManageSource", outlayReimburse.getOutlayManageSource());
|
||||
execution.getArgs().set(FlowConst.FORM_DATA, Json.toJson(outlayReimburse));
|
||||
|
||||
int instanceId = execution.getArgs().getInt(FlowConst.PROCESS_INSTANCE_ID_KEY);
|
||||
dao.update(ProcessInstance.class, Chain.make("businessNo", outlayReimburse.getId()), Cnd.where(ProcessInstance::getId, "=", instanceId));
|
||||
}
|
||||
}
|
||||
+78
@@ -1,7 +1,25 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.interceptor;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.budwk.app.base.exception.BaseException;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowInterceptor;
|
||||
import com.budwk.app.flow.engine.core.Execution;
|
||||
import com.budwk.app.flow.engine.core.ServiceContext;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||
import com.budwk.app.zhgh.outlay.outlayManage.model.OutlayUseDetail;
|
||||
import com.budwk.app.zhgh.outlay.outlayManage.school.model.OutlayManageSchool;
|
||||
import com.budwk.app.zhgh.outlay.outlayManage.union.model.OutlayManageUnion;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
||||
import lombok.SneakyThrows;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.json.Json;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
@@ -11,6 +29,66 @@ import com.budwk.app.flow.engine.core.Execution;
|
||||
public class OutlayReimburseSchoolZxAuditPostInterceptor implements FlowInterceptor {
|
||||
@Override
|
||||
public void intercept(Execution execution) {
|
||||
String formDataStr = execution.getArgs().getStr(FlowConst.FORM_DATA);
|
||||
OutlayReimburse outlayReimburse = Json.fromJson(OutlayReimburse.class, formDataStr);
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
OutlayUseDetail detail = new OutlayUseDetail();
|
||||
|
||||
detail.setProjectName(outlayReimburse.getActivityMatter());
|
||||
detail.setAdjustMoney(outlayReimburse.getMoney());
|
||||
detail.setAdjustMoney(outlayReimburse.getMoney());
|
||||
detail.setAdjustReason(outlayReimburse.getPaymentContent());
|
||||
detail.setAdjustUserId(SecurityUtil.getUserId());
|
||||
detail.setAdjustUserName(SecurityUtil.getUserUsername());
|
||||
detail.setAdjustLoginName(SecurityUtil.getUserLoginname());
|
||||
detail.setOutlayReimburseId(outlayReimburse.getId());
|
||||
detail.setActivityTime(outlayReimburse.getActivityTime());
|
||||
// 更新校工会经费表
|
||||
if (outlayReimburse.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_ONE")) {
|
||||
OutlayManageSchool school = dao.fetch(OutlayManageSchool.class, Cnd.where("year", "=", DateUtil.thisYear()));
|
||||
if (ObjectUtil.isEmpty(school)) {
|
||||
throw new BaseException("该年份没有设置金额!");
|
||||
}
|
||||
school.setUsedQuota(school.getUsedQuota().add(outlayReimburse.getMoney()));
|
||||
dao.updateIgnoreNull(school);
|
||||
|
||||
//添加使用记录到经费管理表
|
||||
detail.setOutlayManageId(school.getId());
|
||||
dao.insert(detail);
|
||||
} else if (outlayReimburse.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_TWO")) {
|
||||
|
||||
ActivityBudget budget = dao.fetch(ActivityBudget.class, Cnd.where("id", "=", outlayReimburse.getBudgetId()));
|
||||
if (ObjectUtil.isNotEmpty(budget)&&budget.getIsSchoolBudget()){
|
||||
//如果分工会报销了校工会的余额
|
||||
OutlayManageSchool school = dao.fetch(OutlayManageSchool.class, Cnd.where("year", "=", DateUtil.thisYear()));
|
||||
if (ObjectUtil.isEmpty(school)) {
|
||||
throw new BaseException("该年份没有设置金额!");
|
||||
}
|
||||
school.setUsedQuota(school.getUsedQuota().add(outlayReimburse.getMoney()));
|
||||
dao.updateIgnoreNull(school);
|
||||
|
||||
//添加使用记录到经费管理表
|
||||
detail.setOutlayManageId(school.getId());
|
||||
dao.insert(detail);
|
||||
}else{
|
||||
// 更新分工会活动经费表
|
||||
OutlayManageUnion manageUnion = dao.fetch(OutlayManageUnion.class,
|
||||
Cnd.where("year", "=", DateUtil.thisYear())
|
||||
.and("unionId", "=", outlayReimburse.getUnionId()));
|
||||
if (ObjectUtil.isEmpty(manageUnion)) {
|
||||
throw new BaseException("该年份没有设置金额!");
|
||||
}
|
||||
if (manageUnion.getTotalQuota().subtract(manageUnion.getUsedQuota()).compareTo(outlayReimburse.getMoney()) < 0) {
|
||||
throw new BaseException("剩余配额不足!剩余:" + manageUnion.getTotalQuota().subtract(manageUnion.getUsedQuota()));
|
||||
}
|
||||
manageUnion.setUsedQuota(manageUnion.getUsedQuota().add(outlayReimburse.getMoney()));
|
||||
dao.updateIgnoreNull(manageUnion);
|
||||
|
||||
//添加使用记录到经费管理表
|
||||
detail.setOutlayManageId(manageUnion.getId());
|
||||
dao.insert(detail);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +84,12 @@ public class OutlayReimburse extends BaseModel implements Serializable {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String activityTime;
|
||||
|
||||
|
||||
@Column
|
||||
@Comment("活动人数")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String activityNumber;
|
||||
|
||||
@Column
|
||||
@Comment("支付内容")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
|
||||
+2
-1
@@ -24,9 +24,10 @@ public interface OutlayReimburseApplyService extends BaseService<OutlayReimburse
|
||||
/**
|
||||
* 查询这个预算已经报销了的金额
|
||||
* @param budgetId
|
||||
* @param isSchoolBudget 是否是校会预算
|
||||
* @return
|
||||
*/
|
||||
BigDecimal getBxMoneyByActivityId(String budgetId);
|
||||
BigDecimal getBxMoneyByActivityId(String budgetId,Boolean isSchoolBudget);
|
||||
|
||||
/**
|
||||
* 判断这个报销的记录预算是否充足
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.service;
|
||||
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.vo.OutlayReimbursePageForm;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
|
||||
public interface OutlayReimburseSummaryService extends BaseService {
|
||||
|
||||
|
||||
Sql getSql(OutlayReimbursePageForm outlayReimbursePageForm);
|
||||
}
|
||||
+10
-3
@@ -40,6 +40,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
||||
String sqlStr = """
|
||||
SELECT
|
||||
ab.id,
|
||||
ab.isSchoolBudget,
|
||||
ab.schoolBudgetId,
|
||||
ab.totalBudgetMoney,
|
||||
ab.isRepeatReimburse,
|
||||
@@ -120,7 +121,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getBxMoneyByActivityId(String budgetId) {
|
||||
public BigDecimal getBxMoneyByActivityId(String budgetId,Boolean isSchoolBudget) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
rei.money
|
||||
@@ -131,6 +132,11 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
||||
rei.budgetId = @budgetId
|
||||
AND ins.state = 20
|
||||
""").setParam("budgetId", budgetId);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (isSchoolBudget!=null){
|
||||
cnd.and("isSchoolBudget", "=", isSchoolBudget);
|
||||
}
|
||||
|
||||
List<NutMap> reiList = listMap(sql);
|
||||
|
||||
BigDecimal totalMoney = reiList.stream()
|
||||
@@ -152,8 +158,8 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
||||
//判断是否可以重复报
|
||||
if (budget.getIsRepeatReimburse()) {
|
||||
//1.查询已经报销了的总金额
|
||||
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId);
|
||||
if (budget.getIsSchoolBudget()) {
|
||||
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId,budget.getIsSchoolBudget());
|
||||
//如果是分工会进来并且报销的活动是校会预算
|
||||
// 1. 计算本次加上之前的报销总金额
|
||||
BigDecimal totalReimbursement = bXMoney.add(moneyBig);
|
||||
@@ -164,6 +170,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
||||
return Result.success();
|
||||
}
|
||||
} else {
|
||||
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId,budget.getIsSchoolBudget());
|
||||
//如果是自己的项目就能超20%
|
||||
//1.算出现在还能报销多少钱
|
||||
BigDecimal twentyPercent = budget.getTotalBudgetMoney().multiply(new BigDecimal("20")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
|
||||
@@ -196,7 +203,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
||||
//如果报销的项目是可以重复报销的
|
||||
if (budget.getIsRepeatReimburse()) {
|
||||
//这个预算已经报销了多少钱
|
||||
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId);
|
||||
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId,null);
|
||||
//查出这个活动有没有跟其他预算关联,如果跟其他预算关联了,代表当前这条预算是分工会也能报校工会也能报,
|
||||
// schoolBudgetId字段不为空就代表这条预算是使用的校工会的金额
|
||||
List<ActivityBudget> budgetList = dao().query(ActivityBudget.class,
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.vo;
|
||||
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/8/21 09:19
|
||||
* @description
|
||||
*/
|
||||
@Data
|
||||
public class OutlayReimbursePageForm extends PageForm {
|
||||
private Integer year;
|
||||
private String unionId;
|
||||
private String outlayManageSource;
|
||||
private String detailsTypeId;
|
||||
|
||||
private Boolean approval;
|
||||
private String clubId;
|
||||
}
|
||||
Reference in New Issue
Block a user