commit
This commit is contained in:
@@ -65,6 +65,7 @@ public class AssetStocktakingServiceImpl extends BaseServiceImpl<AssetStocktakin
|
||||
cnd.andEX("t1.assetCategoryId", "=", pageForm.getAssetCategoryId());
|
||||
cnd.andEX("t1.assetTypeCode", "=", pageForm.getAssetTypeCode());
|
||||
cnd.andEX("t1.assetUsageStateName", "=", pageForm.getAssetUsageStateName());
|
||||
cnd.groupBy("t1.id");
|
||||
sql.setCondition(cnd);
|
||||
return sql;
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.budwk.app.zhgh.healthCheckup.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
@@ -112,7 +113,7 @@ public class HealthCheckupCampusController {
|
||||
|
||||
@At
|
||||
@ApiOperation("查询所有院区")
|
||||
@SaCheckPermission("healthCheckup.campus")
|
||||
@SaCheckLogin
|
||||
public Result queryCampus() {
|
||||
try {
|
||||
List<HealthCheckupCampus> campusList = baseService.dao().query(HealthCheckupCampus.class, Cnd.NEW().asc("campusCode"));
|
||||
|
||||
+10
-9
@@ -65,6 +65,7 @@ import org.nutz.mvc.upload.UploadAdaptor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -170,6 +171,9 @@ public class HealthCheckupListController {
|
||||
public Result doAuditUser(String projectId,
|
||||
String unionId,
|
||||
Boolean flag) {
|
||||
if (StrUtil.isBlank(unionId)) {
|
||||
unionId = SecurityUtil.getUnionId();
|
||||
}
|
||||
if (flag) {
|
||||
dao.update(HealthCheckupUnionConfirm.class, Chain.make("isAudit", true)
|
||||
.add("auditTime", DateUtil.date())
|
||||
@@ -281,15 +285,12 @@ public class HealthCheckupListController {
|
||||
@ApiOperation("下载体检参加人员导入模版")
|
||||
@SaCheckPermission("healthCheckup.list.mange")
|
||||
public void downloadTem(HttpServletResponse response) {
|
||||
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();) {
|
||||
|
||||
EasyExcel.write(byteArrayOutputStream, HealthCheckupImportTemp.class)
|
||||
.sheet("参加人员导入模版")
|
||||
.doWrite(ArrayList::new);
|
||||
CommonDownloadUtil.download("参加人员导入模版.xlsx", byteArrayOutputStream.toByteArray(), response);
|
||||
} catch (Exception e) {
|
||||
log.error("下载参加人员导入模版失败", e);
|
||||
}
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
ExportParams exportParams = new ExportParams();
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, Collections.emptyList());
|
||||
CommonDownloadUtil.download("参加人员导入模版.xlsx", workbook, response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
@@ -35,6 +35,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -270,6 +271,7 @@ public class HealthCheckupSingleController {
|
||||
selection.setSelectUserId(v);
|
||||
selection.setCampus(campus);
|
||||
selection.setSubjectId(optionId);
|
||||
selection.setSelectTime(new Date());
|
||||
return selection;
|
||||
}).collect(Collectors.toList());
|
||||
manyAddOrRenewUtil.asyncExecuteFastInsert(selections,null);
|
||||
|
||||
+3
-2
@@ -53,9 +53,10 @@ public class HealthCheckupProjectServiceImpl extends BaseServiceImpl<HealthCheck
|
||||
|
||||
@Override
|
||||
public HealthCheckupProject findOne(String id) {
|
||||
if (Strings.isBlank(id)){
|
||||
return null;
|
||||
}
|
||||
HealthCheckupProject project = fetchLinks(fetch(id), "healthCheckupProjectSubjects", Cnd.NEW().asc("optionSort"));
|
||||
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.budwk.app.zhgh.integral.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -266,16 +269,71 @@ public class IntegralManageController {
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@ApiOperation("下载福利名单导入模板")
|
||||
@ApiOperation("下载积分增加导入模板")
|
||||
@SaCheckPermission("benefit.user")
|
||||
public void downloadImport(HttpServletResponse response) {
|
||||
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();) {
|
||||
EasyExcel.write(byteArrayOutputStream, BenefitUserTemp.class)
|
||||
.sheet("福利名单导入模版")
|
||||
.doWrite(ArrayList::new);
|
||||
CommonDownloadUtil.download("福利名单导入模版.xlsx", byteArrayOutputStream.toByteArray(), response);
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("增加积分", "integral", 20));
|
||||
ExportParams exportParams = new ExportParams();
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, Collections.emptyList());
|
||||
CommonDownloadUtil.download("积分增加导入模板.xlsx", workbook, response);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("integral.manage")
|
||||
@ApiOperation("导入扣减积分名单")
|
||||
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
||||
public Result doImportAdd(TempFile file){
|
||||
try {
|
||||
List<T> ts = EasyExcelUtil.syncReadModel(file.getFile(), IntegralAddTemp.class, 0, 1);
|
||||
List<IntegralAddTemp> integralTempList = JSONUtil.parseArray(JSONUtil.toJsonStr(ts)).toList(IntegralAddTemp.class);
|
||||
|
||||
List<String> loginNames = integralTempList.stream().map(IntegralAddTemp::getLoginName).toList();
|
||||
List<View_user> userList = integralManageService.dao().query(View_user.class, Cnd.NEW().andEX(View_user::getLoginname, "in", loginNames));
|
||||
Map<String, String> userMap = userList.stream().collect(Collectors.toMap(View_user::getLoginname, View_user::getId));
|
||||
|
||||
List<IntegralAddTemp> errorInfos = new ArrayList<>();
|
||||
List<IntegralDetail> insertInfos = new ArrayList<>();
|
||||
integralTempList.forEach(v -> {
|
||||
if (userMap.containsKey(v.getLoginName().trim())) {
|
||||
View_user viewUser = userList.stream().filter(user -> user.getLoginname().equals(v.getLoginName())).findFirst().orElse(null);
|
||||
IntegralDetail detail = new IntegralDetail();
|
||||
detail.setYear(String.valueOf(DateUtil.thisYear()));
|
||||
detail.setIntegral(v.getIntegral());
|
||||
detail.setIntegralTime(new Date());
|
||||
detail.setIntegralNotes("增加积分导入");
|
||||
detail.setUserId(viewUser.getId());
|
||||
detail.setUnionId(viewUser.getUnionId());
|
||||
detail.setUnitId(viewUser.getUnitId());
|
||||
detail.setUnionName(viewUser.getUnionName());
|
||||
detail.setUnitName(viewUser.getUnitName());
|
||||
insertInfos.add(detail);
|
||||
} else {
|
||||
v.setResult("获取不到该用户信息,请检查工号是否正确!");
|
||||
errorInfos.add(v);
|
||||
}
|
||||
});
|
||||
|
||||
int successCount = Lang.isNotEmpty(insertInfos) ? integralManageService.insert(insertInfos).size() : 0;
|
||||
|
||||
if (Lang.isNotEmpty(errorInfos)) {
|
||||
NutMap nutMap = new NutMap();
|
||||
nutMap.setv("totalCount", integralTempList.size());
|
||||
nutMap.setv("successCount", successCount);
|
||||
nutMap.setv("errorCount", errorInfos.size());
|
||||
nutMap.setv("errorList", errorInfos.stream().map(v -> {
|
||||
return NutMap.NEW().addv("工号", v.getLoginName()).addv("姓名", v.getUserName()).addv("错误原因", v.getResult());
|
||||
}).collect(Collectors.toList()));
|
||||
return Result.success(nutMap);
|
||||
}
|
||||
return Result.success();
|
||||
} catch (Exception e) {
|
||||
log.error("下载福利名单导入模版失败", e);
|
||||
e.printStackTrace();
|
||||
return Result.error();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,6 +416,22 @@ public class IntegralManageController {
|
||||
@ExcelProperty("扣减时间")
|
||||
private Date integralTime;
|
||||
|
||||
@ExcelIgnore
|
||||
private String result;
|
||||
}
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
public static class IntegralAddTemp {
|
||||
|
||||
@ExcelProperty("工号")
|
||||
private String loginName;
|
||||
|
||||
@ExcelProperty("姓名")
|
||||
private String userName;
|
||||
|
||||
@ExcelProperty("积分")
|
||||
private String integral;
|
||||
|
||||
@ExcelIgnore
|
||||
private String result;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ public class IntegralDetail extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Name
|
||||
@Comment("id")
|
||||
@Prev(els = {@EL("uuid()")})
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String id;
|
||||
|
||||
|
||||
+18
-2
@@ -1,11 +1,14 @@
|
||||
package com.budwk.app.zhgh.outlay.activityBudget.conteoller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
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.result.Result;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
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;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.service.ActivityBudgetService;
|
||||
@@ -68,8 +71,21 @@ public class ActivityBudgetApplyController {
|
||||
@SaCheckPermission("activity.budget.apply")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(type = "activityBudgetApply", tag = "年度预算申报-预算申报", msg = "提交年度预算申报")
|
||||
public Result doSubmit(@Param("activityBudget") ActivityBudget activityBudget, Boolean flag) {
|
||||
return activityBudgetService.doSubmit(activityBudget, flag);
|
||||
public Result submit(@Param("data") ActivityBudget activityBudget) {
|
||||
return activityBudgetService.submit(activityBudget);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("activity.budget.apply")
|
||||
@ApiOperation("保存申请")
|
||||
@SLog(type = "activityBudgetApply", tag = "年度预算申报-预算申报", msg = "保存年度预算申报")
|
||||
public Result save(@Param("data") ActivityBudget activityBudget) {
|
||||
activityBudget.setUserId(SecurityUtil.getUserId());
|
||||
activityBudget.setLoginName(SecurityUtil.getUserLoginname());
|
||||
activityBudget.setUserName(SecurityUtil.getUserUsername());
|
||||
activityBudgetService.insertOrUpdate(activityBudget);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
+9
-10
@@ -45,12 +45,6 @@ public class ActivityBudgetSchoolAuditController {
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At("/form")
|
||||
@Ok("beetl:/platform/zhgh/outlay/activityBudget/schoolAudit/form.html")
|
||||
@SaCheckPermission("activity.budget.schoolAudit")
|
||||
public void form() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@@ -70,6 +64,7 @@ public class ActivityBudgetSchoolAuditController {
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariale,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.id taskId,
|
||||
t.taskName AS taskKey,
|
||||
t.displayName taskName,
|
||||
@@ -78,12 +73,16 @@ public class ActivityBudgetSchoolAuditController {
|
||||
t.taskState,
|
||||
t.finishTime,
|
||||
t.taskParentId,
|
||||
t.variable taskVariale
|
||||
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_budget 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();
|
||||
@@ -98,16 +97,16 @@ public class ActivityBudgetSchoolAuditController {
|
||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||
}
|
||||
|
||||
cnd.desc("t.createdAt");
|
||||
|
||||
cnd.andEX("YEAR(info.applyDate)", "=", year);
|
||||
cnd.and(Cnd.likeEX("info.activityMatter", activityMatter));
|
||||
|
||||
cnd.groupBy("t.id");
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.desc("info.applyDate");
|
||||
cnd.desc("t.createdAt").desc("info.applyDate");
|
||||
} else {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pageVO = activityBudgetService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pageVO);
|
||||
|
||||
+2
-3
@@ -23,13 +23,12 @@ public class OutlayActBudgetSchoolPostInterceptor implements FlowInterceptor {
|
||||
|
||||
String formDataStr = execution.getArgs().getStr(FlowConst.FORM_DATA);
|
||||
NutMap activityBudget = Json.fromJson(NutMap.class, formDataStr);
|
||||
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
dao.update(ActivityBudget.class, Chain.make("totalBudgetMoney", execution.getArgs().getStr("tf_totalBudgetMoney")),
|
||||
Cnd.where("id", "=", activityBudget.getString("id")));
|
||||
execution.getArgs().set(FlowConst.FORM_DATA, Json.toJson(activityBudget));
|
||||
/*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.getString("id")), Cnd.where(ProcessInstance::getId, "=", instanceId));
|
||||
dao.update(ProcessInstance.class, Chain.make("businessNo", activityBudget.getString("id")), Cnd.where(ProcessInstance::getId, "=", instanceId));*/
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -17,9 +17,8 @@ public interface ActivityBudgetService extends BaseService<ActivityBudget> {
|
||||
/**
|
||||
* 提交年度预算申报
|
||||
* @param activityBudget
|
||||
* @param flag
|
||||
*/
|
||||
Result doSubmit(ActivityBudget activityBudget, Boolean flag);
|
||||
Result submit(ActivityBudget activityBudget);
|
||||
|
||||
ActivityBudget findOne(String id);
|
||||
|
||||
|
||||
+33
-15
@@ -5,6 +5,7 @@ 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.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
@@ -13,6 +14,11 @@ import com.budwk.app.base.param.PageForm;
|
||||
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.flow.constant.FlowConst;
|
||||
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.enums.ProcessSubmitTypeEnum;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
@@ -51,6 +57,9 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
|
||||
@Override
|
||||
public Sql getSqlByApplyList(PageForm pageForm, Integer year, String activityMatter,Cnd cnd) {
|
||||
|
||||
@@ -62,6 +71,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariale,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.id taskId,
|
||||
t.taskName AS taskKey,
|
||||
t.displayName taskName,
|
||||
@@ -70,7 +80,9 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
t.taskState,
|
||||
t.finishTime,
|
||||
t.taskParentId,
|
||||
t.variable taskVariale
|
||||
t.variable taskVariale,
|
||||
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask' AND taskState in (10,20)) AS startTaskId
|
||||
FROM
|
||||
activity_budget info
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||
@@ -113,10 +125,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result doSubmit(ActivityBudget activityBudget, Boolean flag) {
|
||||
if (flag) {
|
||||
activityBudget.setAuditState(1);
|
||||
}
|
||||
public Result submit(ActivityBudget activityBudget) {
|
||||
|
||||
if (StrUtil.isEmpty(activityBudget.getId())) {
|
||||
activityBudget.setUserId(SecurityUtil.getUserId());
|
||||
@@ -126,7 +135,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
if (List.of("ACTIVITY_BUDGET_TYPE_TWO").contains(activityBudget.getOutlayManageSource())) {
|
||||
int activityMatterCount = count(Cnd.where("activityMatter", "=",
|
||||
activityBudget.getActivityMatter()).and("unionId", "=", SecurityUtil.getUnionId()));
|
||||
if (flag && activityMatterCount > 0) {
|
||||
if (activityMatterCount > 0) {
|
||||
return Result.error(activityBudget.getActivityMatter() + "已填写申请!");
|
||||
}
|
||||
}
|
||||
@@ -136,9 +145,9 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
dao().clear(ActivityBudgetDetails.class, Cnd.where("budgetId", "=", activityBudget.getId()));
|
||||
}
|
||||
|
||||
if (List.of("superadmin").contains(SecurityUtil.getUserLoginname())) {
|
||||
/* if (List.of("superadmin").contains(SecurityUtil.getUserLoginname())) {
|
||||
//如果是超级管理员就可以直接提交不用审核
|
||||
if (flag) {
|
||||
|
||||
activityBudget.setAuditState(4);
|
||||
activityBudget.setTotalBudgetMoney(activityBudget.getDeclareTotalBudgetMoney());
|
||||
ActivityBudget budget = null;
|
||||
@@ -173,7 +182,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
//如果不等于校工会预算才往表里面加预算
|
||||
//代表协会可能用的是校工会的预算
|
||||
if (!activityBudget.getIsSchoolBudget()) {
|
||||
/* jf_club jfClub = dao.fetch(jf_club.class, Cnd.where("year", "=", DateUtil.getYear())
|
||||
*//* 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())) {
|
||||
@@ -181,21 +190,21 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
}
|
||||
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()));
|
||||
*//*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);
|
||||
}*/
|
||||
}
|
||||
}*//*
|
||||
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
insertOrUpdate(activityBudget);
|
||||
@@ -204,14 +213,23 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
||||
}
|
||||
//添加预算详情表
|
||||
insert(activityBudget.getBudgetDetails());
|
||||
// 开启流程实例
|
||||
Dict args = Dict.create();
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
args.set(FlowConst.FORM_DATA, activityBudget);
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("NDYSSB", activityBudget.getId(), SecurityUtil.getUserId(), args);
|
||||
|
||||
// 自动完成第一个申请任务
|
||||
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||
for (ProcessTask task : doingTaskList) {
|
||||
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityBudget findOne(String id) {
|
||||
ActivityBudget activityBudget = fetchLinks(fetch(id), "budgetDetails", Cnd.NEW().asc("detailsOrder"));
|
||||
activityBudget.setSchoolAudit(dao().fetch(Audit.class, Cnd.where("id", "=", activityBudget.getSchoolAuditId())));
|
||||
// activityBudget.setAllocationEditAuditList(dao().query(Audit.class, Cnd.where("parentId", "=", activityBudget.getId())));
|
||||
return activityBudget;
|
||||
}
|
||||
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
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.enums.ProcessSubmitTypeEnum;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/8/19 10:14
|
||||
* @description 费用报销申请
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/outlay/reimburse/apply")
|
||||
@Ok("json:full")
|
||||
@Api("费用报销申请")
|
||||
public class OutlayReimburseApplyController {
|
||||
|
||||
|
||||
@Inject
|
||||
private OutlayReimburseApplyService outlayReimburseApplyService;
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/apply/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("获取预算金额或活动")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result getBudgetMoneyOrActivity(String outlayManageSource, String clubId, String unionId, String id) {
|
||||
return Result.success(outlayReimburseApplyService.getBudgetMoneyOrActivity(outlayManageSource, clubId, unionId, id));
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("查询这个预算已经报销了的金额")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result getBxMoneyByBudgetId(String budgetId) {
|
||||
return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId));
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("判断这个报销的记录预算是否充足")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result bxAddValidate(String budgetId, String money, String outlayManageSource, String clubId) {
|
||||
return outlayReimburseApplyService.bxAddValidate(budgetId, money, outlayManageSource, clubId);
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("提交报销申请")
|
||||
@SaCheckPermission("activity.budget.apply")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(type = "outlayReimburseApply", tag = "费用报销管理-报销申请", msg = "提交年度预算申报")
|
||||
public Result submit(@Param("data") OutlayReimburse outlayReimburse) {
|
||||
//添加预算详情表
|
||||
if (StrUtil.isBlank(outlayReimburse.getId())){
|
||||
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
|
||||
outlayReimburse.setUserId(SecurityUtil.getUserId());
|
||||
outlayReimburse.setUserName(SecurityUtil.getUserUsername());
|
||||
outlayReimburse.setLoginName(SecurityUtil.getUserLoginname());
|
||||
outlayReimburse.setUnitId(SecurityUtil.getUnitId());
|
||||
outlayReimburse.setUnitName(user.getUnitName());
|
||||
outlayReimburse.setUnionId(SecurityUtil.getUnionId());
|
||||
outlayReimburse.setUnionName(user.getUnionName());
|
||||
outlayReimburse.setApplyTime(DateUtil.now());
|
||||
}
|
||||
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
||||
// 开启流程实例
|
||||
Dict args = Dict.create();
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
args.set(FlowConst.FORM_DATA, outlayReimburse);
|
||||
args.set("outlayManageSource", outlayReimburse.getOutlayManageSource());
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("FYBXSQ", outlayReimburse.getId(), SecurityUtil.getUserId(), args);
|
||||
|
||||
// 自动完成第一个申请任务
|
||||
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||
for (ProcessTask task : doingTaskList) {
|
||||
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
@ApiOperation("保存申请")
|
||||
@SLog(type = "outlayReimburseApply", tag = "费用报销管理-报销申请", msg = "保存年度预算申报")
|
||||
public Result save(@Param("data") OutlayReimburse outlayReimburse) {
|
||||
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
|
||||
outlayReimburse.setUserId(SecurityUtil.getUserId());
|
||||
outlayReimburse.setUserName(SecurityUtil.getUserUsername());
|
||||
outlayReimburse.setLoginName(SecurityUtil.getUserLoginname());
|
||||
outlayReimburse.setUnitId(SecurityUtil.getUnitId());
|
||||
outlayReimburse.setUnitName(user.getUnitName());
|
||||
outlayReimburse.setUnionId(SecurityUtil.getUnionId());
|
||||
outlayReimburse.setUnionName(user.getUnionName());
|
||||
outlayReimburse.setApplyTime(DateUtil.now());
|
||||
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
@ApiOperation("保存申请")
|
||||
public Result findOne(String id){
|
||||
return Result.success(outlayReimburseApplyService.fetch(id));
|
||||
}
|
||||
}
|
||||
+45
-43
@@ -1,12 +1,17 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyListService;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyService;
|
||||
import io.swagger.annotations.Api;
|
||||
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.mvc.annotation.At;
|
||||
@@ -18,63 +23,60 @@ import org.nutz.mvc.annotation.Ok;
|
||||
* @description 我的报销
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/outlay/reimburse/apply")
|
||||
@At("/platform/outlay/reimburse/applyList")
|
||||
@Ok("json:full")
|
||||
@Api("我的报销")
|
||||
public class OutlayReimburseApplyListController {
|
||||
|
||||
@Inject
|
||||
private OutlayReimburseApplyListService outlayReimburseApplyListService;
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/apply/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/applyList/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.applyList")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
@At("/form")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/apply/form.html")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public void form() {
|
||||
}
|
||||
|
||||
@At("/view")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/view/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public void view() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result pageData(PageForm pageForm) {
|
||||
@SaCheckPermission("outlay.reimburse.applyList")
|
||||
public Result pageData(PageForm pageForm, Integer year) {
|
||||
|
||||
|
||||
return Result.success();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
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 taskVariale,
|
||||
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||
(SELECT MAX(id) FROM wf_process_task WHERE processInstanceId = ins.id AND taskName = 'startTask' AND taskState IN (10, 20)) AS startTaskId
|
||||
FROM
|
||||
outlay_reimburse info
|
||||
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
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("info.userId", "=", SecurityUtil.getUserId());
|
||||
|
||||
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("获取预算金额或活动")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result getBudgetMoneyOrActivity(String outlayManageSource, String clubId, String unionId, String id) {
|
||||
return Result.success(outlayReimburseApplyListService.getBudgetMoneyOrActivity(outlayManageSource, clubId, unionId, id));
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("查询这个预算已经报销了的金额")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result getBxMoneyByBudgetId(String budgetId) {
|
||||
return Result.success(outlayReimburseApplyListService.getBxMoneyByActivityId(budgetId));
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("判断这个报销的记录预算是否充足")
|
||||
@SaCheckPermission("outlay.reimburse.apply")
|
||||
public Result bxAddValidate(String budgetId, String money, String outlayManageSource,String clubId) {
|
||||
return outlayReimburseApplyListService.bxAddValidate(budgetId,money, outlayManageSource,clubId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
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.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 15:18
|
||||
* @description 出纳审核
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@Slf4j
|
||||
@Api(tags = "费用报销管理-出纳审核")
|
||||
@At("/platform/outlay/reimburse/schoolCnAudit")
|
||||
public class OutlayReimburseSchoolCnAuditController {
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/schoolCnAudit/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.schoolCnAudit")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.schoolCnAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String unionId,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource,
|
||||
String activityMatter) {
|
||||
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", "=", "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.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);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+155
@@ -0,0 +1,155 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
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 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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/8/19 16:50
|
||||
* @description 会计审核
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@Slf4j
|
||||
@Api(tags = "费用报销管理-出纳审核")
|
||||
@At("/platform/outlay/reimburse/schoolKjAudit")
|
||||
public class OutlayReimburseSchoolKjAuditController {
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/schoolKjAudit/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.schoolKjAudit")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.schoolKjAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String unionId,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource,
|
||||
String activityMatter) {
|
||||
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", "=", "930aed03-677b-41d7-8920-7d9b45a7abc9");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
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());
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("删除字典表内容")
|
||||
@SaCheckPermission("outlay.reimburse.schoolKjAudit")
|
||||
@SLog(type = "outlayReimburseSchoolKjAudit", tag = "费用报销管理-校工会会计审核", msg = "删除字典表内容")
|
||||
public Result doDeleteDetailsType(@Param("id") String id) {
|
||||
Sys_dict dict = sysDictService.fetch(id);
|
||||
sysDictService.deleteAndChild(dict);
|
||||
sysDictService.clearCache();
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("添加字典表内容")
|
||||
@SaCheckPermission("outlay.reimburse.schoolKjAudit")
|
||||
@SLog(type = "outlayReimburseSchoolKjAudit", tag = "费用报销管理-校工会会计审核", msg = "添加字典表内容")
|
||||
public Result doSubmitDetailsType(@Param("detailsTypeList") Sys_dict[] detailsTypeList) {
|
||||
Sys_dict fetch = sysDictService.fetch(Cnd.where("code", "=", "ACTIVITY_BUDGET_DETAILS_TYPE"));
|
||||
|
||||
if (ObjectUtil.isEmpty(fetch)) {
|
||||
return Result.error("字典父类不存在!");
|
||||
}
|
||||
for (Sys_dict dict : detailsTypeList) {
|
||||
if (ObjectUtil.isEmpty(dict.getId())) {
|
||||
sysDictService.save(dict, fetch.getId());
|
||||
} else {
|
||||
sysDictService.updateIgnoreNull(dict);
|
||||
}
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
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 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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/8/19 16:50
|
||||
* @description 主席审核
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@Slf4j
|
||||
@Api(tags = "费用报销管理-主席审核")
|
||||
@At("/platform/outlay/reimburse/schoolZxAudit")
|
||||
public class OutlayReimburseSchoolZxAuditController {
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
|
||||
@At("/index")
|
||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/schoolZxAudit/index.html")
|
||||
@SaCheckPermission("outlay.reimburse.schoolZxAudit")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("outlay.reimburse.schoolZxAudit")
|
||||
public Result pageData(PageForm pageForm,
|
||||
Integer year,
|
||||
String unionId,
|
||||
String clubId,
|
||||
Boolean approval,
|
||||
String outlayManageSource,
|
||||
String activityMatter) {
|
||||
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", "=", "c433d966-05f4-45b4-b845-755b600d852a");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
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());
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
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.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/8/20 11:48
|
||||
* @description 校工会会计审核
|
||||
*/
|
||||
public class OutlayReimburseSchoolKjAuditPostInterceptor implements FlowInterceptor {
|
||||
@Override
|
||||
public void intercept(Execution execution) {
|
||||
String formDataStr = execution.getArgs().getStr(FlowConst.FORM_DATA);
|
||||
OutlayReimburse outlayReimburse = Json.fromJson(OutlayReimburse.class, formDataStr);
|
||||
String detailsTypeId = execution.getArgs().getStr("detailsTypeId");
|
||||
outlayReimburse.setDetailsTypeId(detailsTypeId);
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
dao.update(outlayReimburse);
|
||||
}
|
||||
}
|
||||
@@ -86,7 +86,7 @@ public class OutlayReimburse extends BaseModel implements Serializable {
|
||||
|
||||
@Column
|
||||
@Comment("支付内容")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String paymentContent;
|
||||
|
||||
@Column
|
||||
@@ -120,5 +120,10 @@ public class OutlayReimburse extends BaseModel implements Serializable {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String userSign;
|
||||
|
||||
@Column
|
||||
@Comment("明细类")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String detailsTypeId;
|
||||
|
||||
|
||||
}
|
||||
|
||||
+4
-1
@@ -7,7 +7,7 @@ import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public interface OutlayReimburseApplyListService extends BaseService<OutlayReimburse> {
|
||||
public interface OutlayReimburseApplyService extends BaseService<OutlayReimburse> {
|
||||
|
||||
|
||||
/**
|
||||
@@ -37,4 +37,7 @@ public interface OutlayReimburseApplyListService extends BaseService<OutlayReimb
|
||||
* @return
|
||||
*/
|
||||
Result bxAddValidate(String budgetId, String money, String outlayManageSource,String clubId);
|
||||
|
||||
|
||||
NutMap findOne(String id);
|
||||
}
|
||||
+11
-4
@@ -10,7 +10,7 @@ import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||
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 com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyListService;
|
||||
import com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyService;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -19,7 +19,6 @@ import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -29,8 +28,8 @@ import java.util.Objects;
|
||||
* @description
|
||||
*/
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class OutlayReimburseApplyListServiceImpl extends BaseServiceImpl<OutlayReimburse> implements OutlayReimburseApplyListService {
|
||||
public OutlayReimburseApplyListServiceImpl(Dao dao) {
|
||||
public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimburse> implements OutlayReimburseApplyService {
|
||||
public OutlayReimburseApplyServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@@ -255,6 +254,14 @@ public class OutlayReimburseApplyListServiceImpl extends BaseServiceImpl<OutlayR
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NutMap findOne(String id) {
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -163,6 +163,15 @@ public class ThirtyTeachController {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("修改荣誉证办理年月")
|
||||
@SaCheckPermission("thirtyTeach.manage")
|
||||
public Result doEditThirtyCertificateProcessingTime(String id,String thirtyCertificateProcessingTime){
|
||||
sysUserService.update(Chain.make("thirtyCertificateProcessingTime", thirtyCertificateProcessingTime), Cnd.where("id", "=", id));
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
|
||||
@@ -42,6 +42,7 @@ public class ThirtyTeachServiceImpl extends BaseServiceImpl implements ThirtyTea
|
||||
mobile,
|
||||
birthday,
|
||||
thirtyCertificateProcessingTime,
|
||||
false as isEditThirtyCertificateProcessingTime,
|
||||
TIMESTAMPDIFF(YEAR, CONCAT(arrivalAtSchoolDate, '-01'), CURDATE()) AS teachNum
|
||||
FROM
|
||||
`vw_user`
|
||||
|
||||
Reference in New Issue
Block a user