This commit is contained in:
Paidax
2024-11-29 09:03:59 +08:00
commit 2ffadd89a7
3480 changed files with 879405 additions and 0 deletions
@@ -0,0 +1,184 @@
package io.v.nutz.zhgh.activity.controller.applets;
import io.v.nutz.zhgh.activity.models.ActivitySchoolApply;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.models.Sys_user;
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.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.adaptor.JsonAdaptor;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-03-16 10:19
* @description: 小程序活动
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/applets/list")
public class ActivityListController {
@Inject("Sys_user")
private ViService<Sys_user> sysUserService;
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@At
@ViReturn
public Object pageData(PageForm page, @Param(value = "userId",required = false) String userId,
@Param(value = "time",required = false) String time) {
Sql sql = Sqls.create("""
SELECT
school.id,
school.`name`,
school.address,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
school.image,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND app.`status` = 2 ) personNum,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND ( app.applyUser = @userid OR app.userId = @userid )) > 0 applied
FROM
activity_school school
LEFT JOIN activity_school_apply asa ON asa.activityId = school.id
$condition
""").setParam("userid", userId);
CndPlus cnd = CndPlus.create();
cnd.and("school.close", "!=", true);
cnd.and("school.isSave", "!=", true);
cnd.where().andLike("school.applyWay ", "3");
if (time.equals("recent")) {
cnd.and(new Static("CURRENT_DATE() < school.endTime"));
} else if (time.equals("history")) {
cnd.and(new Static("CURRENT_DATE() > school.endTime"));
}
if (Strings.isNotBlank(userId)) {
cnd.and("asa.applyUser", "=", userId);
}
cnd.groupBy("school.id");
cnd.desc("school.startTime");
sql.setCondition(cnd);
return activitySchoolService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
public Object getActivity(String id, String userId) {
Sql sql = Sqls.create("""
SELECT
school.id,
school.`name`,
school.address,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
school.image,
school.applyWay,
school.eventNotification,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND app.`status` = 2 ) personNum,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND ( app.applyUser = @userId OR app.userId = @userid )) > 0 applied
FROM
activity_school school
WHERE
school.id = @id
$condition
""").setParam("id", id).setParam("userId", userId);
return activitySchoolService.fetch(sql);
}
@At
@ViReturn
@AdaptBy(type = JsonAdaptor.class)
public Object doApply(@Param("apply") ActivitySchoolApply apply) {
apply.setStatus(2);
activitySchoolApplyService.insert(apply);
return null;
}
@At
@ViReturn
@AdaptBy(type = JsonAdaptor.class)
public Object doUniteApply(@Param("apply") List<ActivitySchoolApply> apply, @Param("activityId") String activityId, @Param("unionId") String unionId) {
activitySchoolApplyService.clear(Cnd.where("activityId", "=", activityId).and("unionId", "=", unionId));
apply.forEach(v -> {
v.setStatus(2);
v.setActivityId(activityId);
activitySchoolApplyService.insert(v);
});
return null;
}
@At
@ViReturn
@AdaptBy(type = JsonAdaptor.class)
public Object removeApply(@Param("activityId") String activityId, @Param("userId") String userId) {
activitySchoolApplyService.clear(Cnd.where("activityId", "=", activityId).and("applyUser", "=", userId));
return null;
}
@At
@ViReturn
@AdaptBy(type = JsonAdaptor.class)
public Object findUser(@Param("userId") String userId, @Param("searchName") String searchName) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT id applyUser, loginname, username, sex, mobile, unitid unitId, unionid unionId FROM `user` $condition
""").setParam("userId", userId).setParam("roleId", Roles.UNION_MANGER);
cnd.and("unionid", "in", "(SELECT sur.unionid FROM sys_user_role sur WHERE sur.userId = '" + userId + "' AND sur.roleId = '" + Roles.UNION_MANGER + "')");
if (Strings.isNotBlank(searchName)) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.andLike("username", searchName).orLike("loginname", searchName);
cnd.and(group);
}
sql.setCondition(cnd);
return sysUserService.listMap(sql);
}
@At
@ViReturn
@AdaptBy(type = JsonAdaptor.class)
public Object getApplyPerson(@Param("activityId") String activityId, @Param("unionId") String unionId) {
Cnd cnd = Cnd.NEW();
cnd.and("activityId", "=", activityId).and("unionId", "=", unionId);
return activitySchoolApplyService.query(cnd);
}
}
@@ -0,0 +1,465 @@
package io.v.nutz.zhgh.activity.controller.basic;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.zhgh.activity.models.ActivityUserCnd;
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
import io.v.nutz.zhgh.activity.services.ActivityBasicScopeService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.SimpleService;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.sys.models.Sys_role;
import io.v.nutz.web.commons.utils.ShiroUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ArrayUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.POST;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author zxy
* @Description 活动人员分组设置
* @createTime 2022年01月04日 10:15:00
*/
@IocBean
@At("/platform/activity/basic/scope")
@Ok("json:full")
@Slf4j
public class ActivityBasicScopeController {
@Inject
private SimpleService simpleService;
@Inject
private ActivityBasicScopeService activityBasicScopeService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:platform/activity/basic/ActivityScope.html")
@RequiresPermissions("activity.basic.scope")
public void index() {
}
/**
* 查询可以设置活动的人员
*
* @param pageForm 页面形式
* @param unionId 工会id
* @param unitId 单位id
* @param personTypes 人类型
* @param userStates 用户状态
* @param memberTypes 成员类型
* @param sexTypes 性类型
* @param age 年龄
* @param teacherMeetingId 教师会议id
* @param roleIds 角色id
* @param userId 用户id
* @param clubId 俱乐部id
* @param reverseSelection 逆向选择
* @return {@link Object}
*/
@At
@ViReturn
@POST
@RequiresPermissions("activity.basic.scope")
public Object pageData(PageForm pageForm,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@Param(value = "personTypes", required = false) String[] personTypes,
@Param(value = "userStates", required = false) String[] userStates,
@Param(value = "memberTypes", required = false) String[] memberTypes,
@Param(value = "sexTypes", required = false) String[] sexTypes,
@Param(value = "age", required = false) String[] age,
@Param(value = "teacherMeetingId", required = false) String teacherMeetingId,
@Param(value = "roleIds", required = false) String[] roleIds,
@Param(value = "userId", required = false) String[] userId,
@Param(value = "clubId", required = false) String clubId,
@Param(value = "reverseSelection") boolean reverseSelection,
@Param(value = "activityGroupId", required = false) Integer activityGroupId,
@Param(value = "activityUserCnd", required = false) String activityUserCndStr) {
Sql sql = Sqls.create("""
SELECT
DISTINCT(u.id) as id,
u.loginname AS loginName,
u.username AS userName,
u.sex,
u.birthday,
u.mobile,
u.personType,
u.userState,
u.unitname AS unitName,
u.unionname AS unionName,
TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) AS age
FROM
`user` u
LEFT JOIN sys_user_role sur on sur.userid = u.id
LEFT JOIN sys_club_user clubuser ON clubuser.userid=u.id
$condition
""");
try {
Cnd cnd = getCnd(pageForm, unionId, unitId, personTypes, userStates, memberTypes, sexTypes, age, teacherMeetingId, roleIds, userId, clubId, reverseSelection, activityGroupId, activityUserCndStr);
sql.setCondition(cnd);
return simpleService.list(pageForm, sql);
} catch (NumberFormatException e) {
return Result.error(e.getMessage() + "请输入数字类型的值");
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
/**
* 设置活动人员
*
* @param unionId 工会id
* @param unitId 单位id
* @param personTypes 人员类型
* @param userStates 在职状态
* @return Result
*/
@At
@ViReturn
@POST
@RequiresPermissions("activity.basic.scope")
public Object doSetActivityUser(PageForm pageForm,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@Param(value = "personTypes", required = false) String[] personTypes,
@Param(value = "userStates", required = false) String[] userStates,
@Param(value = "memberTypes", required = false) String[] memberTypes,
@Param(value = "sexTypes", required = false) String[] sexTypes,
@Param(value = "age", required = false) String[] age,
@Param(value = "activityGroupId", required = false) Integer activityGroupId,
@Param(value = "setGroupType", required = false) Integer setGroupType,
@Param(value = "setGroupId", required = false) Integer setGroupId,
@Param(value = "setGroupName", required = false) String setGroupName,
@Param(value = "teacherMeetingId", required = false) String teacherMeetingId,
@Param(value = "roleIds", required = false) String[] roleIds,
@Param(value = "userId", required = false) String[] userId,
@Param(value = "clubId", required = false) String clubId,
@Param(value = "reverseSelection") boolean reverseSelection,
@Param(value = "activityUserCnd", required = false) String activityUserCndStr) {
Sql sql = Sqls.create("""
SELECT DISTINCT
( u.id ) AS userId
FROM
`user` u
LEFT JOIN sys_user_role sur ON sur.userid = u.id
LEFT JOIN sys_club_user clubuser ON clubuser.userid=u.id
$condition
""");
Cnd cnd = getCnd(pageForm, unionId, unitId, personTypes, userStates, memberTypes, sexTypes, age, teacherMeetingId, roleIds, userId, clubId, reverseSelection, activityGroupId, activityUserCndStr);
sql.setCondition(cnd);
sql.setCallback(Sqls.callback.entities());
sql.setEntity(dao.getEntity(ActivityUserScope.class));
dao.execute(sql);
List<ActivityUserScope> list = sql.getList(ActivityUserScope.class);
NutMap groupMap = null;
int maxCount = 0;
if (setGroupType == 1) {
groupMap = simpleService.fetch(Sqls.create("select groupName from activity_user_scope where groupId = @groupId").setParam("groupId", setGroupId));
} else if (setGroupType == 2) {
maxCount = simpleService.count(Sqls.create("select max(groupId) from activity_user_scope"));
}
for (ActivityUserScope userScope : list) {
if (setGroupType == 1) {
userScope.setGroupId(setGroupId);
userScope.setGroupName(groupMap.getString("groupName"));
} else if (setGroupType == 2) {
userScope.setGroupId(maxCount + 1);
userScope.setGroupName(setGroupName);
}
userScope.setCreator((String) ShiroUtil.getPrincipalProperty("id"));
}
if (list.size() < 500) {
dao.insert(list);
return setGroupType == 1 ? setGroupId : maxCount + 1;
}
//多线程插入
activityBasicScopeService.largeDataInsert(list);
return setGroupType == 1 ? setGroupId : maxCount + 1;
}
/**
* 获取组别
*
* @return
*/
@At
@ViReturn
// @RequiresPermissions("activity.basic.scope")
public Object getActivityUserScopeGroup() {
Sql sql = Sqls.create("""
SELECT
groupId,
groupName
FROM
activity_user_scope
$condition
""");
Cnd cnd = Cnd.NEW();
if (!ShiroUtil.hasAnyRoles("sysadmin,H06,H10")) {
if (ShiroUtil.hasAnyRoles(new String[]{"H04", "club01"})) {
cnd.and("creator", "=", ShiroUtil.getPrincipalProperty("id"));
}
}
cnd.and("groupId", "IS NOT", null);
cnd.and("groupName", "IS NOT", null);
cnd.groupBy("groupId");
sql.setCondition(cnd);
return simpleService.listMap(sql);
}
/**
* 查看该人员是否在活动范围中
*
* @param activityGroupId
* @return
*/
@At
@ViReturn
// @RequiresPermissions("activity.basic.scope")
public Object getScopeUser(String activityGroupId, @Param(value = "userId", required = false) String userId) {
String userid = StrUtil.isNotBlank(userId) ? userId : ShiroUtil.getUserId();
return simpleService.dao().count(ActivityUserScope.class, Cnd.where("groupId", "=", activityGroupId).and("userId", "=", userid));
}
@At
@ViReturn
public Object getRoleListByMenuId(String menuId) {
return simpleService.dao().query(Sys_role.class, Cnd.where("system_name", "=", menuId).desc("code"));
}
/**
* 判断用户权限及获取工会id
*
* @return java.lang.Object
* @author zhf
* @description
*/
@At
@ViReturn
public Object getRolesAndUnion() {
return new NutMap() {{
addv("is_H10", ShiroUtil.hasRole("H10"));
addv("is_A06", ShiroUtil.hasRole("A06"));
addv("is_H04", ShiroUtil.hasRole("H04"));
addv("is_H02", ShiroUtil.hasRole("club01"));
addv("is_H03", ShiroUtil.hasRole("SchoolUnionMemberAdmin"));
addv("is_sysadmin", ShiroUtil.hasRole("sysadmin"));
addv("unionid", Vi.getUnionId());
}};
}
/**
* 获取用户信息表列
* 提供两种方式
*
* @return {@link Object}
*/
@At
@ViReturn
public Object getUserTableColumnInfo() {
try {
//2.从数据库查询
Sql sql = Sqls.create("""
SELECT
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys_user'
AND TABLE_SCHEMA = 'zhgh_jiangnan'
""");
List<NutMap> sqlDataList = activityBasicScopeService.listMap(sql);
// sqlDataList.forEach(v -> v.put("DATA_TYPE", new String((byte[]) v.get("DATA_TYPE"))));
sqlDataList.forEach(v -> v.put("DATA_TYPE", v.getString("DATA_TYPE")));
return sqlDataList;
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
return Result.error(e.getMessage());
}
}
@At
@ViReturn
@RequiresPermissions("activity.basic.scope")
public void doExportUser(PageForm pageForm,
@Param(value = "props", required = false) String props,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@Param(value = "personTypes", required = false) String[] personTypes,
@Param(value = "userStates", required = false) String[] userStates,
@Param(value = "memberTypes", required = false) String[] memberTypes,
@Param(value = "sexTypes", required = false) String[] sexTypes,
@Param(value = "age", required = false) String[] age,
@Param(value = "teacherMeetingId", required = false) String teacherMeetingId,
@Param(value = "roleIds", required = false) String[] roleIds,
@Param(value = "userId", required = false) String[] userId,
@Param(value = "clubId", required = false) String clubId,
@Param(value = "reverseSelection") boolean reverseSelection,
@Param(value = "activityGroupId", required = false) Integer activityGroupId,
@Param(value = "activityUserCnd", required = false) String activityUserCndStr, HttpServletResponse response) {
Sql sql = Sqls.create("""
SELECT
DISTINCT(u.id) as id,
u.loginname AS loginName,
u.username AS userName,
u.sex,
u.birthday,
u.mobile,
u.personType,
u.userState,
u.unitname AS unitName,
u.unionname AS unionName,
TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) AS age
FROM
`user` u
LEFT JOIN sys_user_role sur on sur.userid = u.id
LEFT JOIN sys_club_user clubuser ON clubuser.userid=u.id
$condition
""");
try {
Cnd cnd = getCnd(pageForm, unionId, unitId, personTypes, userStates, memberTypes, sexTypes, age, teacherMeetingId, roleIds, userId, clubId, reverseSelection, activityGroupId, activityUserCndStr);
sql.setCondition(cnd);
List<NutMap> map = simpleService.listMap(sql);
List<ExcelExportEntity> entityList = new ArrayList<>();
ExcelExportEntity no = new ExcelExportEntity("序号", "no", 10);
no.setFormat("isAddIndex");
entityList.add(no);
Map<String, String> propMap = Json.fromJson(Map.class, props);
propMap.forEach((k, v) -> {
entityList.add(new ExcelExportEntity(v, k, 40));
});
ViTool.excelResponse(response, "人员名单.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, map);
workbook.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
private Cnd getCnd(PageForm pageForm,
String unionId,
String unitId,
String[] personTypes,
String[] userStates,
String[] memberTypes,
String[] sexTypes,
String[] age,
String teacherMeetingId,
String[] roleIds,
String[] userId,
String clubId,
boolean reverseSelection,
Integer activityGroupId,
String activityUserCndStr) {
String IN_OR_NIN_OP = reverseSelection ? "NOT IN" : "IN";
String EQ_OR_NEQ_OP = reverseSelection ? "!=" : "=";
Cnd cnd = Cnd.NEW();
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
}
if (activityGroupId != null) {
Sql sqlx = Sqls.createf("SELECT userId FROM activity_user_scope where groupId = '%s'", activityGroupId);
cnd.and("u.id", reverseSelection ? "IN" : "NOT IN", sqlx);
}
cnd.andEX("u.id", IN_OR_NIN_OP, userId);
if (Lang.isNotEmpty(memberTypes)) {
if (ArrayUtils.contains(memberTypes, "工会会员")) {
cnd.and("u.member", EQ_OR_NEQ_OP, 1);
}
if (ArrayUtils.contains(memberTypes, "福利会员")) {
cnd.and("u.welfareMember", EQ_OR_NEQ_OP, 1);
}
if (ArrayUtils.contains(memberTypes, "基金会员")) {
cnd.and(new Static(" u.loginname " + IN_OR_NIN_OP + " (select loginname from sick_fund_member)"));
}
}
if (!Lang.isEmptyArray(age)) {
if (!age[1].equals("0")) {
if (reverseSelection) {
cnd.andNot("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", age);
} else {
cnd.and("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", age);
}
}
}
try {
SqlExpressionGroup sqlExpressionGroup = ActivityUserCnd.formatSql("u", activityUserCndStr, reverseSelection);
if (!sqlExpressionGroup.isEmpty()) {
cnd.and(sqlExpressionGroup);
}
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, unionId);
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, unitId);
cnd.andEX("u.personType", IN_OR_NIN_OP, personTypes);
cnd.andEX("u.userState", IN_OR_NIN_OP, userStates);
cnd.andEX("u.sex", IN_OR_NIN_OP, sexTypes);
cnd.andEX("sur.jdhid", EQ_OR_NEQ_OP, teacherMeetingId);
cnd.andEX("sur.roleid", IN_OR_NIN_OP, roleIds);
cnd.andEX("clubuser.clubid", EQ_OR_NEQ_OP, clubId);
} catch (Exception e) {
throw new RuntimeException(e);
}
return cnd;
}
}
@@ -0,0 +1,125 @@
package io.v.nutz.zhgh.activity.controller.basic;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.activity.models.ActivityBasicSettings;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.AsyncService;
import io.v.nutz.base.service.ViService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
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 java.util.ArrayList;
import java.util.List;
/**
* @author zhf
* @date 2021/2/23 15:44
* @description 活动基础设置
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/basic/basic/settings")
public class ActivityBasicSettingsController {
@Inject("ActivityBasicSettings")
private ViService<ActivityBasicSettings> basicSettingsViService;
@Inject
private AsyncService asyncService;
@At("")
@Ok("beetl:platform/activity/basic/ActivityBasic.html")
@RequiresPermissions("activity.basic.settings")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.basic.settings")
public Object pageData(String parentId, PageForm pageForm) {
CndPlus cnd = CndPlus.create();
/* pageForm.setPageSize(50);
pageForm.setPageNumber(1);*/
cnd.andEx("parentId", "=", parentId);
cnd.asc("code");
return basicSettingsViService.list(pageForm, cnd);
}
@At
@ViReturn
@RequiresPermissions("activity.basic.settings")
public Object getTreeData() {
List list = new ArrayList();
ActivityBasicSettings parentId = basicSettingsViService.fetch(Cnd.where("parentId", "=", "0"));
if (parentId != null) {
parentId.setChild(child(parentId.getId()));
list.add(parentId);
return Result.success().addData(list);
}
return null;
}
private List<ActivityBasicSettings> child(String parentId) {
List<ActivityBasicSettings> basicSettings = basicSettingsViService.query(Cnd.where("parentId", "=", parentId).asc("code"));
basicSettings.forEach(v -> {
v.setChild(child(v.getId()));
});
return basicSettings;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.settings")
public Object doAdd(ActivityBasicSettings activityBasicSettings) {
if (basicSettingsViService.count(Cnd.where("code", "=", activityBasicSettings.getCode())) > 0) {
return Result.error("代码已存在");
}
basicSettingsViService.update(Chain.make("hasChildren", true), Cnd.where("id", "=", activityBasicSettings.getParentId()));
basicSettingsViService.insert(activityBasicSettings);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.settings")
public Object doEditType(ActivityBasicSettings activityBasicSettings) {
basicSettingsViService.updateIgnoreNull(activityBasicSettings);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.settings")
public Object doDelete(String id) {
basicSettingsViService.delete(id);
basicSettingsViService.clear(Cnd.where("parentId", "=", id));
return null;
}
@At
@ViReturn
@RequiresAuthentication
public Object getActivityTwoLevelType(String code) {
ActivityBasicSettings fetch = basicSettingsViService.fetch(Cnd.where("code", "=", code));
List<ActivityBasicSettings> query = basicSettingsViService.query(Cnd.where("parentId", "=", fetch.getId()).asc("code"));
return query;
}
}
@@ -0,0 +1,213 @@
package io.v.nutz.zhgh.activity.controller.basic;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.SimpleService;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.sys.models.User;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.base.utils.ViTool;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.POST;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zxy
* @Description TODO
* @createTime 2022年01月04日 10:15:00
*/
@IocBean
@At("/platform/activity/basic/user")
@Ok("json:full")
@Slf4j
public class ActivityBasicUserController {
@Inject
private SimpleService simpleService;
@At("")
@Ok("beetl:platform/activity/basic/ActivityUser.html")
@RequiresPermissions("activity.basic.user")
public void index() {
}
@At
@ViReturn
@POST
@RequiresPermissions("activity.basic.user")
public Object pageData(PageForm pageForm,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@Param(value = "personType", required = false) String personType,
@Param(value = "userState", required = false) String userState,
@Param(value = "groupId", required = false) Integer groupId,
@Param(value = "activityUnionId", required = false) String activityUnionId,
@Param(value = "activityUnitId", required = false) String activityUnitId) {
Sql sql = Sqls.create("""
SELECT
aus.id,
u.username AS userName,
u.loginname AS loginName,
u.sex,
u.birthday,
u.mobile,
u.personType,
u.userState,
u.unitname AS unitName,
u.unionname AS unionName,
aus.groupId,
aus.groupName,
actun.unionname AS activityUnionName
FROM
activity_user_scope aus
LEFT JOIN `user` u ON u.id = aus.userId
LEFT JOIN activity_basic_unit actit ON actit.id=u.unitid
LEFT JOIN activity_basic_union actun ON actit.unionid=actun.id
$condition
""");
Cnd cnd = Cnd.NEW();
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
}
cnd.andEX("actit.unionid", "=", activityUnionId);
cnd.andEX("actit.id", "=", activityUnitId);
cnd.andEX("aus.groupId", "=", groupId);
cnd.andEX("u.unionid", "=", unionId);
cnd.andEX("u.unitid", "=", unitId);
cnd.andEX("u.personType", "=", personType);
cnd.andEX("u.userState", "=", userState);
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
cnd.andEX("aus.creator", "=", ShiroUtil.getPrincipalProperty("id"));
}
sql.setCondition(cnd);
return simpleService.list(pageForm, sql);
}
/**
* 删除一条记录
*
* @param id
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.basic.user")
public Object doDelete(@Param(value = "id", required = false) String id,
@Param(value = "groupId", required = false) Integer groupId,
@Param(value = "searchKeyword", required = false) String searchKeyword,
@Param(value = "searchName", required = false) String searchName,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "unitId", required = false) String unitId,
@Param(value = "activityUnionId", required = false) String activityUnionId,
@Param(value = "activityUnitId", required = false) String activityUnitId,
@Param(value = "personType", required = false) String personType,
@Param(value = "userState", required = false) String userState) {
Cnd cnd = Cnd.NEW();
if (StrUtil.isNotBlank(id)) {
cnd.and("id", "=", id);
simpleService.dao().clear(ActivityUserScope.class, cnd);
} else {
List<User> users = simpleService.dao().query(User.class, Cnd.NEW());
if (StrUtil.isNotBlank(searchKeyword) && StrUtil.isNotBlank(searchName)) {
users = users.stream().filter(v -> v.getLoginname().equals(searchKeyword) || v.getUsername().equals(searchKeyword)).collect(Collectors.toList());
}
if (StrUtil.isNotBlank(unionId)) {
users = users.stream().filter(v -> StrUtil.isNotBlank(v.getUnionid()) && v.getUnionid().equals(unionId)).collect(Collectors.toList());
}
if (StrUtil.isNotBlank(unitId)) {
users = users.stream().filter(v -> StrUtil.isNotBlank(v.getUnitid()) && v.getUnitid().equals(unitId)).collect(Collectors.toList());
}
if (StrUtil.isNotBlank(personType)) {
users = users.stream().filter(v -> StrUtil.isNotBlank(v.getPersonType()) && v.getPersonType().equals(personType)).collect(Collectors.toList());
}
if (StrUtil.isNotBlank(userState)) {
users = users.stream().filter(v -> StrUtil.isNotBlank(v.getUserState()) && v.getUserState().equals(userState)).collect(Collectors.toList());
}
if (StrUtil.isNotBlank(activityUnitId)) {
users = users.stream().filter(v -> StrUtil.isNotBlank(v.getActivityUnitId()) && v.getActivityUnitId().equals(activityUnitId)).collect(Collectors.toList());
}
if (StrUtil.isNotBlank(activityUnionId)) {
users = users.stream().filter(v -> StrUtil.isNotBlank(v.getActivityUnionId()) && v.getActivityUnionId().equals(activityUnionId)).collect(Collectors.toList());
}
List<String> ids = users.stream().map(User::getId).collect(Collectors.toList());
cnd.andEX("userId", "in", ids);
cnd.andEX("groupId", "=", groupId);
if (Lang.isEmpty(ids)) {
return null;
}
simpleService.dao().clear(ActivityUserScope.class, cnd);
}
return null;
}
@At
@Ok("void")
public void doExportUser(Integer groupId, HttpServletResponse response) {
try {
Sql sql = Sqls.create("""
SELECT
u.username AS userName,
u.loginname AS loginName,
u.sex,
u.mobile,
u.unitname AS unitName,
u.unionName AS unionName
FROM
activity_user_scope aus
LEFT JOIN `user` u ON u.id = aus.userId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("aus.groupId", "=", groupId);
sql.setCondition(cnd);
List<NutMap> listMap = simpleService.listMap(sql);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
exportEntities.add(new ExcelExportEntity("工会", "unionName", 20));
exportEntities.add(new ExcelExportEntity("单位", "unitName", 20));
exportEntities.add(new ExcelExportEntity("手机号码", "mobile", 20));
ViTool.excelResponse(response, "活动分组人员.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), exportEntities, listMap);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,185 @@
package io.v.nutz.zhgh.activity.controller.basic;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.zhgh.activity.models.ActivityBasicSettings;
import io.v.nutz.zhgh.activity.models.ActivityEvent;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
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.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.Arrays;
/**
* @author zhf
* @date 2021/2/24 14:09
* @description 比赛项目
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/basic/event")
public class ActivityEventController {
//运动类型id
public static final String EXERCISE_TYPE = "f708d6343c9542b791d32532f860d120";
//比赛组别id
public static final String COMPETITION_CATEGORY = "60f9c36cadce493494a2373cc64d216f";
//距离id
public static final String DISTANCE = "d6d9196e87184729abd0dca1bd5df984";
@Inject("ActivityEvent")
private ViService<ActivityEvent> activityEventViService;
@Inject("ActivityBasicSettings")
private ViService<ActivityBasicSettings> basicSettingsViService;
@At("")
@Ok("beetl:platform/activity/basic/ActivityEvent.html")
@RequiresPermissions("activity.basic.event")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object focusGroup() {
return basicSettingsViService.query(Cnd.where("parentId", "=", COMPETITION_CATEGORY).asc("code"));
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object exerciseType() {
return basicSettingsViService.query(Cnd.where("parentId", "=", EXERCISE_TYPE));
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object focusDistance() {
return basicSettingsViService.query(Cnd.where("parentId", "=", DISTANCE).asc("name"));
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object changeExercise_typeList(String exerciseType) {
return basicSettingsViService.query(Cnd.where("parentId", "=", exerciseType));
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object pageData(PageForm page, @Param(value = "group", required = false) String group, @Param(value = "events", required = false) String events, @Param(value = "isMenWomen", required = false) String[] isMenWomen, @Param(value = "activityId", required = false) String activityId) {
Sql sql = Sqls.create("""
SELECT
even.*,
ba.`name` baname,
di.`name` diname,
sp.`name` spname,
exe.`name` exename
FROM
activity_event even
LEFT JOIN activity_school_event ase ON ase.eventId = even.id
LEFT JOIN activity_basic_settings ba ON even.competitionCategory = ba.id
LEFT JOIN activity_basic_settings di ON even.distance = di.id
LEFT JOIN activity_basic_settings sp ON even.sports = sp.id
LEFT JOIN activity_basic_settings exe ON even.exerciseType = exe.id $condition
""");
Cnd cnd = CndPlus.create();
SqlExpressionGroup sqlExpressionGroup = new SqlExpressionGroup();
if (StrUtil.isNotBlank(page.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("projectCode", page.getSearchKeyword());
seg.orLike("allName", page.getSearchKeyword());
cnd.and(seg);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("2"))) {
sqlExpressionGroup.and("even.isMenWomen", "=", 1);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("3"))) {
sqlExpressionGroup.or("even.isMenWomen", "=", 2);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("4"))) {
sqlExpressionGroup.and("even.projectType", "=", 1);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("5"))) {
sqlExpressionGroup.or("even.projectType", "=", 2);
}
if (sqlExpressionGroup.getExps().size() > 0) {
cnd.and(sqlExpressionGroup);
}
cnd.groupBy("even.id");
cnd.andEX("even.competitionCategory", "=", group);
cnd.andEX("exe.id", "=", events);
cnd.andEX("ase.activityId", "=", activityId);
cnd.desc("projectCode");
cnd.asc("projectType");
cnd.desc("baname");
cnd.asc("isMenWomen");
sql.setCondition(cnd);
return activityEventViService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object doAdd(ActivityEvent activityEvent) {
activityEvent.setWhetherEnable(true);
activityEventViService.insert(activityEvent);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object doEdit(ActivityEvent activityEvent) {
activityEventViService.update(activityEvent);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object doDelete(String id) {
activityEventViService.delete(id);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object doAssignmentDate(String[] eventIds, String startAgeDate, String endAgeDate) {
for (String eventId : eventIds) {
activityEventViService.update(Chain.make("startAgeDate", startAgeDate).add("endAgeDate", endAgeDate), Cnd.where("id", "=", eventId));
}
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.event")
public Object getProjectCodeIsExist(String projectCode) {
return activityEventViService.fetch(Cnd.where("projectCode", "=", projectCode));
}
}
@@ -0,0 +1,595 @@
package io.v.nutz.zhgh.activity.controller.basic;
import cn.wizzer.framework.base.Result;
import io.v.nutz.sys.models.*;
import io.v.nutz.zhgh.activity.models.ActivityBasicUnion;
import io.v.nutz.zhgh.activity.models.ActivityBasicUnit;
import io.v.nutz.zhgh.activity.models.ActivitySchoolApply;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.lang.Lang;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.services.SysDictService;
import io.v.nutz.sys.services.SysRoleService;
import io.v.nutz.sys.services.SysUserRoleService;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.controller.ViCommonCon;
import io.v.nutz.web.commons.utils.ShiroUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.List;
/**
* TODO
*
* @Author zhf
* @Date 2022/7/28 13:56
*/
@IocBean
@At({"/platform/activity/basic/union", "/platform/activity/basic/union2"})
@Ok("json:full")
@Slf4j
public class ActivityUnionController {
@Inject("ActivityBasicUnion")
private ViService<ActivityBasicUnion> sysUnionService;
@Inject("ActivityBasicUnit")
private ViService<ActivityBasicUnit> sysUnitService;
@At("")
@Ok("beetl:platform/activity/basic/ActivityUnion.html")
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public void index() {
}
private boolean checkRole() {
if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) {
return true;
}
return false;
}
/**
* 修改角色
*
* @param unionid
* @param roleId
* @param userId
* @param type 1 添加 2 删除
* @return
*/
@At
@ViReturn
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object changeSchoolUnionRole(String unionid, String roleId, String roleCode, String userId, int type) {
if (type == 1) {
Sys_user_role role = new Sys_user_role();
role.setUserId(userId);
Sys_role sysRole = sysRoleService.fetch(Cnd.where("code", "=", roleCode));
role.setRoleId(sysRole.getId());
if (Strings.isNotBlank(unionid)) {
role.setUnionid(unionid);
}
sysUserRoleService.insert(role);
} else if (type == 2) {
Cnd cnd = Cnd.where("roleId", "=", roleId).and("userId", "=", userId);
sysUserRoleService.clear(cnd);
}
sysUserService.clearCache();
sysRoleService.clearCache();
return null;
}
/**
* 获取校工会 / 院级工会 的角色/人员
*
* @return
*/
@At
@ViReturn
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object schoolUnionRoles(String unionid, String searchName, String searchKeyword) {
Sql sql = Sqls.create("""
SELECT
role.`name` rolename,
role.id roleid,
u.id,
u.username,
u.loginname,
u.mobile
FROM
sys_user_role sur
LEFT JOIN sys_role role ON sur.roleId = role.id
LEFT JOIN sys_dict dict ON dict.`code` = role.`code`
LEFT JOIN `user` u ON sur.userId = u.id
$condition
order by FIELD( role.`code`, 'wyh01', 'wyh02', 'A06', 'wyh03', 'tamange', 'flwyh01', 'H10', 'xghng', 'SchoolUnionAccountant' )
""");
Cnd cnd = Cnd.NEW();
if (Strings.isNotBlank(unionid)) {
cnd.and(new Static("dict.parentId = ( SELECT id FROM sys_dict WHERE `code` = 'GrassrootsCadres' LIMIT 1)"));
cnd.and("u.unionid", "=", unionid);
} else {
cnd.and(new Static("dict.parentId = ( SELECT id FROM sys_dict WHERE `code` = 'SchoolRoles' LIMIT 1)"));
}
if (Lang.notNull(searchName, searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
sql.setCondition(cnd);
return sysDictService.list(sql);
}
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object unionTree() {
try {
ActivityBasicUnit basicUnit = sysUnionService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", Vi.getUnit().getId()));
Record record = new Record();
record.set("unionname", "工会委员会");
if (checkRole()) {
record.set("sysadmin", true);
record.set("childrens", sysUnionService.query(Cnd.NEW().asc("unioncode")));
} else {
record.set("sysadmin", true);
Sql sql = Sqls.create("""
SELECT
gh.*
FROM
activity_basic_union gh
WHERE
gh.id = @id
""").setParam("id", basicUnit.getUnionid());
record.set("childrens", sysUnionService.list(sql));
}
return Result.success().addData(record);
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object unionPageData(String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) {
try {
ActivityBasicUnit basicUnit = sysUnionService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", Vi.getUnit().getId()));
Sql sql = Sqls.create("SELECT\n" +
"\tgh.*,\n" +
"\tun.isEnable AS unisEnable,\n" +
"\t(SELECT COUNT(*) FROM activity_basic_unit WHERE unionid=gh.id) unitnum,\n" +
"\tGROUP_CONCAT( fzr.username,'(',fzr.loginname,')' ) fzr\n" +
"FROM\n" +
"\tactivity_basic_union gh\n" +
"\tLEFT JOIN sys_union un ON un.id = gh.id\n" +
"\tLEFT JOIN sys_user_role sur ON gh.id = sur.unionid \n" +
"\tAND (sur.roleId = @ghfzrrole)\n" +
"\tLEFT JOIN sys_user fzr ON sur.userId = fzr.id $condition");
sql.setParam("ghfzrrole", Roles.UNION_MANGER);
Cnd cnd = Cnd.NEW();
cnd.groupBy("gh.id");
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.and(searchName, "like", "%" + searchKeyword + "%");
}
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
cnd.and("gh.id", "=", basicUnit.getUnionid());
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderBy)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.asc("unioncode");
}
sql.setCondition(cnd);
return Result.success().addData(sysUnionService.listPageMap(pageNumber, pageSize, sql));
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@Inject
private SysDictService sysDictService;
/**
* 添加工会
*
* @param union
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object doAddUnion(ActivityBasicUnion union) {
try {
union.setSource("activity");
sysUnionService.insert(union);
if (!ShiroUtil.hasAnyRoles("sysadmin.H04")) {
sysUnitService.dao().update(ActivityBasicUnit.class, Chain.make("unionid", union.getId()), Cnd.where("id", "=", Vi.getUnit().getId()));
}
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
/**
* 查看工会信息
*
* @param id
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object editUnion(String id) {
try {
return Result.success().addData(sysUnionService.fetch(id));
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
/**
* 修改工会
*
* @param union
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object doEditUnion(ActivityBasicUnion union) {
try {
sysUnionService.update(union);
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
private void flushDict() {
sysDictService.clear(Cnd.where("parentId", "=", ViCommonCon.DICT_UNION_ID));
List<ActivityBasicUnion> unions = sysUnionService.query();
for (ActivityBasicUnion union : unions) {
Sys_dict dict = new Sys_dict();
dict.setParentId(ViCommonCon.DICT_UNION_ID);
dict.setName(union.getUnionname());
dict.setCode(union.getUnioncode());
sysDictService.insert(dict);
}
}
/**
* 删除工会
*
* @param id
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object doDeleteUnion(String id, boolean flag) {
try {
if (flag) {
sysUnionService.delete(id);
sysUnionService.dao().clear(ActivitySchoolApply.class, Cnd.where("activityUnionId", "=", id));
} else {
List<ActivityBasicUnit> unitList = sysUnitService.query(Cnd.where("unionId", "=", id));
unitList.forEach(v -> {
Sys_unit unit = sysUnionService.dao().fetch(Sys_unit.class, v.getId());
sysUnitService.update(Chain.make("unionid", unit.getUnionid()), Cnd.where("id", "=", unit.getId()));
});
}
//再清除单位对应的工会id
sysUnionService.update("activity_basic_unit", Chain.make("unionid", ""), Cnd.where("unionid", "=", id));
//再删除工会负责人的权限
// sysUnionService.clear("sys_user_role", Cnd.where("unionid", "=", id).and("roleid", "=", Roles.UNION_MANGER));
// flushDict();
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
/**
* 获取工会的用户和负责人
*
* @param id
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object getUserAndFzr(String id) {
try {
Sql sql = Sqls.create("SELECT u.id,u.username,u.loginname,CONCAT( u.username, '', u.loginname, '','-',u.unitname ) name from `user` u left join activity_basic_unit un on u.unitid=un.id WHERE un.unionid = @id").setParam("id", id);
Sql sql1 = Sqls.create("SELECT u.id,u.username,u.loginname,CONCAT( u.username, '', u.loginname, '','-',u.unitname ) name from `user` u left join activity_basic_unit un on u.unitid=un.id left join sys_user_role sur on u.id = sur.userId WHERE sur.unionid = @id and sur.userId is not null and sur.roleId = @roleid").setParam("id", id).setParam("roleid", Roles.UNION_MANGER);
return Result.success().addData(Record.create().set("data", sysUnionService.list(sql)).set("value", sysUnionService.list(sql1)));
} catch (Exception e) {
return Result.error();
}
}
/**
* 修改工会负责人
*
* @param unionid
* @param userids
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object doEditFzr(String unionid, String userids) {
try {
//再删除工会负责人的权限
sysUnionService.clear("sys_user_role", Cnd.where("unionid", "=", unionid).and("roleid", "=", Roles.UNION_MANGER));
for (String id : Json.fromJsonAsList(String.class, userids)) {
sysUnionService.insert("sys_user_role", Chain.make("roleid", Roles.UNION_MANGER).add("userid", id).add("unionid", unionid));
}
sysUserService.clearCache();
sysRoleService.clearCache();
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@At
public Object getUnitsByUnion(String unionid) {
try {
if (Strings.isNotBlank(unionid)) {
return Result.success().addData(sysUnitService.query(Cnd.where("unionid", "=", unionid).and("unitlevel", "=", 2)));
}
return Result.success();
} catch (Exception e) {
return Result.error();
}
}
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object hyPageData(String unitid, String unionid, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) {
try {
// Sql sql = Sqls.create("SELECT u.id,u.username,u.loginname,u.sex,un.`name` unitname,u.mobile from sys_user u left join sys_unit un on u.unitid = un.id $condition");
Sql sql = Sqls.create("SELECT u.id,u.username,u.loginname,u.sex,u.unitname,u.mobile from member u $condition");
Cnd cnd = Cnd.NEW();
cnd.and("u.unitid", "in", Sqls.create("select id from activity_basic_unit where unionid=@unionid").setParam("unionid", unionid));
// cnd.and("u.unionid", "=", unionid);
if (Strings.isNotBlank(unitid)) {
cnd.and("u.unitid", "=", unitid);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.and(searchName, "like", "%" + searchKeyword + "%");
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderBy)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.asc("u.unitid");
}
sql.setCondition(cnd);
return Result.success().addData(sysUnionService.listPage(pageNumber, pageSize, sql));
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@Inject
private SysUserRoleService sysUserRoleService;
@At
@Ok("json")
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object delSpy(String userid, String roleid) {
try {
sysUserRoleService.clear(Cnd.where("userid", "=", userid).and("roleid", "=", roleid));
sysRoleService.clearCache();
return Result.success();
} catch (Exception e) {
return Result.error();
}
}
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object doAddSpy(String[] userids, String[] roleids) {
try {
for (String userid : userids) {
for (String roleid : roleids) {
sysUserRoleService.clear(Cnd.where("userId", "=", userid).and("roleId", "=", roleid));
Sys_user user = sysUserService.fetch(userid);
ActivityBasicUnit unit = sysUnitService.fetch(user.getUnitid());
Sys_user_role sysUserRole = new Sys_user_role();
sysUserRole.setUserId(userid);
sysUserRole.setRoleId(roleid);
sysUserRole.setUnionid(unit.getUnionid());
sysUserRoleService.insert(sysUserRole);
}
}
sysRoleService.clearCache();
return Result.success();
} catch (Exception e) {
return Result.error();
}
}
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object spyPageData(String qxid, String unionid, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) {
try {
Sql sql = Sqls.create("SELECT\n" +
"\tsur.roleId,\n" +
"\tsur.userId,\n" +
"\tu.username,\n" +
"\tu.loginname,\n" +
"\tun.`name` unitname,\n" +
"\tfgh.unionname,\n" +
"\trole.`name` rolename\n" +
"FROM\n" +
"\t`sys_user_role` sur\n" +
"\tleft join sys_role role on sur.roleId = role.id\n" +
"\tLEFT JOIN sys_user u ON u.id = sur.userId\n" +
"\tLEFT JOIN activity_basic_unit un ON u.unitid = un.id\n" +
"\tLEFT JOIN activity_basic_union fgh ON un.unionid = fgh.id $condition");
Cnd cnd = Cnd.NEW();
cnd.and("un.unionid", "=", unionid);
if (Strings.isNotBlank(qxid)) {
cnd.and("sur.roleId", "=", qxid);
} else {
cnd.and("sur.roleId in (SELECT role.id from sys_dict dict left join sys_role role on dict.`code` = role.`code` WHERE parentId = '" + ViCommonCon.DICT_SPYJS_ID + "') and 1", "=", 1);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderBy)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.asc("sur.roleId");
}
sql.setCondition(cnd);
return Result.success().addData(sysUnionService.listPage(pageNumber, pageSize, sql));
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@Inject
private SysRoleService sysRoleService;
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object getDwAndZcdw(String unionid) {
try {
SqlExpressionGroup group = new SqlExpressionGroup();
group.and("unionid", "is", null).or("unionid", "=", "").or("unionid", "=", unionid);
return Result.success().addData(Record.create().set("data", sysUnitService.query(Cnd.where("unitlevel", "=", 2))).set("value", sysUnitService.query(Cnd.where("unionid", "=", unionid).and("unitlevel", "=", 2))));
} catch (Exception e) {
return Result.error();
}
}
/**
* 修改工会组成单位
*
* @param unionid
* @param unitids
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object doEditZcdw(String unionid, String unitids) {
try {
sysUnitService.execute(Sqls.create("UPDATE activity_basic_unit set unionid = null WHERE unionid=@id").setParam("id", unionid));
for (String id : Json.fromJsonAsList(String.class, unitids)) {
sysUnitService.update(Chain.make("unionid", unionid), Cnd.where("id", "=", id));
}
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@Inject
private SysUserService sysUserService;
/**
* 根据关键字和工会id找用户
*
* @param query
* @param unionid
* @return
*/
@At
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object getUserByUnionId(String query, String unionid) {
try {
return Result.success().addData(sysUserService.listPage(1, 50, Sqls.create("SELECT u.id,u.username,u.loginname,u.sex,u.mobile,u.zw,u.email\n" +
"from sys_user u left join activity_basic_unit un on u.unitid = un.id WHERE un.unionid = @unionid and (u.username LIKE @query or u.loginname like @query)").setParam("unionid", unionid).setParam("query", "%" + query + "%")));
} catch (Exception e) {
return Result.error();
}
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object isEnableChange(String id, boolean isEnable) {
sysUnionService.update(Chain.make("isEnable", isEnable), Cnd.where("id", "=", id));
return null;
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object getActivityUnions() {
return sysUnionService.query();
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.basic.union", "activity.basic.union2"}, logical = Logical.OR)
public Object getActivityUnits(String unionId) {
if (Strings.isBlank(unionId)) {
return sysUnitService.dao().query(ActivityBasicUnit.class, Cnd.where("unitlevel", "=", 2).asc("id"));
}
return sysUnitService.dao().query(ActivityBasicUnit.class, Cnd.where("unionid", "=", unionId).and("unitlevel", "=", 2).asc("id"));
}
}
@@ -0,0 +1,212 @@
package io.v.nutz.zhgh.activity.controller.basic;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.activity.models.ActivityBasicUnit;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.AsyncService;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.models.Sys_unit;
import io.v.nutz.sys.services.SysUnitClassService;
import io.v.nutz.sys.services.SysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
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.Strings;
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.ArrayList;
import java.util.List;
/**
* TODO
*
* @Author zhf
* @Date 2022/7/28 10:46
*/
@IocBean
@At("/platform/activity/basic/unit")
@Ok("json:full")
@Slf4j
public class ActivityUnitController {
@Inject("ActivityBasicUnit")
private ViService<ActivityBasicUnit> sysUnitService;
@Inject
private SysUnitClassService sysUnitClassService;
@At("")
@Ok("beetl:platform/activity/basic/ActivityUnit.html")
@RequiresPermissions("activity.basic.unit")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.basic.unit")
public Object pageData(@Param(value = "parentId", required = false) String parentId, PageForm pageForm) {
CndPlus cnd = CndPlus.create();
cnd.andEx("parentId", "=", parentId);
return sysUnitService.list(pageForm, cnd);
}
@At
@ViReturn
@RequiresPermissions("activity.basic.unit")
public Object findOne(String id) {
return sysUnitService.fetch(id);
}
@At
@ViReturn
@RequiresPermissions("activity.basic.unit")
public Object doAdd(ActivityBasicUnit activityBasicUnit) {
if (sysUnitService.count(Cnd.where("unitcode", "=", activityBasicUnit.getUnitcode())) > 0) {
return Result.error("单位代码已存在");
}
sysUnitService.update(Chain.make("hasChildren", true), Cnd.where("id", "=", activityBasicUnit.getParentId()));
sysUnitService.insert(activityBasicUnit);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.unit")
public Object doEdit(Sys_unit sys_unit) {
if (sysUnitService.count(Cnd.where("unitcode", "=", sys_unit.getUnitcode()).and("id", "!=", sys_unit.getId())) > 0) {
return Result.error("单位代码已存在");
}
sysUnitService.update(sys_unit);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.basic.unit")
public Object doDelete(String id) {
ActivityBasicUnit unit = sysUnitService.fetch(id);
int count = sysUnitService.count(Cnd.where("parentId", "=", unit.getParentId()).and("id", "!=", id));
sysUnitService.update(Chain.make("hasChildren", count > 0), Cnd.where("id", "=", unit.getParentId()));
delete(id);
return null;
}
private void delete(String id) {
Cnd cnd = Cnd.where("parentId", "=", id);
List<ActivityBasicUnit> units = sysUnitService.query(cnd);
for (ActivityBasicUnit unit : units) {
delete(unit.getId());
}
sysUnitService.clear(cnd);
sysUnitService.delete(id);
}
/**
* 获取树形数据
*
* @return
*/
@At
@RequiresPermissions("activity.basic.unit")
public Object getUnitTreeData() {
try {
List list = new ArrayList();
ActivityBasicUnit school = sysUnitService.fetch(Cnd.NEW());
if(school == null) {
return Result.success();
}
school.setChild(child(school.getId()));
list.add(school);
return Result.success().addData(list);
} catch (Exception e) {
e.printStackTrace();
return Result.error("获取单位信息失败");
}
}
@Inject
private AsyncService asyncService;
private List<ActivityBasicUnit> child(String parentId) {
List<ActivityBasicUnit> units = sysUnitService.query(Cnd.where("parentId", "=", parentId));
units.forEach(unit -> {
unit.setChild(child(unit.getId()));
});
return units;
}
@At
@Ok("json")
@RequiresPermissions("activity.basic.unit")
public Object getUnit2() {
try {
return Result.success().addData(sysUnitService.query(Cnd.where("unitlevel", "=", 2).asc("location")));
} catch (Exception e) {
return Result.error();
}
}
@Inject
private SysUserService sysUserService;
@At
@ViReturn
@RequiresPermissions("activity.basic.unit")
public Object findPersonByUnitId(PageForm pageForm, String unitId) {
NutMap map = new NutMap();
CndPlus cndPlus = CndPlus.create();
cndPlus.andEx("unitid", "=", unitId);
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
cndPlus.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
}
cndPlus.asc("member");
Sql sql = Sqls.create("""
SELECT
su.*
FROM
sys_user su
LEFT JOIN sys_user_role sur ON sur.userId = su.id
$condition
""");
CndPlus cndPlus2 = CndPlus.create();
cndPlus2.andEx("sur.roleId", "=", Roles.UNIT_MANGER);
cndPlus2.andEx("su.unitid", "=", unitId);
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
cndPlus2.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
}
sql.setCondition(cndPlus2);
map.setv("userList", sysUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cndPlus));
map.setv("principal", sysUserService.listMap(sql));
return map;
}
}
@@ -0,0 +1,883 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.SimpleService;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_unit;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.*;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolTeamService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.async.Async;
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.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Strings;
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.*;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2021-02-24 16:31
* @description: 活动报名
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/apply")
@RequiresAuthentication
public class ActivityApplyController {
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
protected SysUserService sysUserService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@Inject
private ActivitySchoolTeamService activitySchoolTeamService;
@Inject
private SimpleService simpleService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventViService;
@At("")
@Ok("beetl:platform/activity/school/ActivityApply.html")
@RequiresPermissions("activity.apply")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object applyPageData(PageForm page,
@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String eventId) {
Cnd cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
apply.*,team.`name`,acts.name actsname,ev.allName
FROM
Activity_School_Apply apply LEFT JOIN activity_school_team team ON apply.teamId=team.id
LEFT JOIN activity_school acts ON acts.id=apply.activityId
LEFT JOIN activity_event ev ON ev.id = apply.eventId $condition
""");
cnd.and("apply.activityUnionId", "=", getUnionId());
/* if (!ShiroUtil.hasAnyRoles("A06,sysadmin")) {
SqlExpressionGroup group = new SqlExpressionGroup();
if (ShiroUtil.hasAnyRoles("H01")) {
group.or("applyUser", "=", ShiroUtil.getPrincipalProperty("id"));
}
if (ShiroUtil.hasAnyRoles("H04")) {
group.or("unionId", "=", getUnionId());
}
cnd.and(group);
}*/
Vi.cndPlus(cnd, "apply.activityId", "=", activityId);
Vi.cndPlus(cnd, "apply.eventId", "=", eventId);
cnd.asc("team.`name`");
cnd.desc("apply.identity");
sql.setCondition(cnd);
return activitySchoolService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
public Object activityData(@Param(value = "year", required = false) Integer year,
@Param(value = "isActivity", required = false) Integer isActivity) {
Sql sql = Sqls.create("""
SELECT
ba.`name` activityLevelName,
school.id,
school.planId,
school.NAME,
school.address,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
school.unitSponsor,
school.unitJointly,
school.gameStyle,
school.funding,
school.applyWay,
school.personType,
school.activityLevel,
school.applyType,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND app.`status` = 2 ) apply_num,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND ( app.applyUser = @userid OR app.userId = @userid )) > 0 applyed,
(SELECT COUNT(1) FROM activity_school_apply app WHERE app.activityId=school.id AND app.unionId=@unionId AND app.unionLeader=TRUE) LeaderCount,
(SELECT COUNT(1) FROM activity_school_apply app WHERE app.activityId=school.id AND app.unionId=@unionId AND app.unionCoach=TRUE) CoachCount
FROM
activity_school school
LEFT JOIN activity_basic_settings ba ON ba.`code` = school.activityLevel
$condition
""").setParam("userid", ShiroUtil.getPrincipalProperty("id")).setParam("unionId", getUnionId());
CndPlus cnd = CndPlus.create();
cnd.and("school.close", "!=", true);
cnd.and("school.isSave", "!=", true);
//查询报名中
if (isActivity == 2) {
cnd.and(new Static("now() >applyStartTime and now() < applyEndTime"));
}//查询已结束的
else if (isActivity == 3) {
cnd.and(new Static("now() > school.applyEndTime"));
}
if (!ShiroUtil.hasAnyRoles("H04,gh08,sysadmin")) {
cnd.and(new Static("JSON_CONTAINS(school.applyWay,JSON_ARRAY( 1))>0"));
cnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId=school.activityGroupId AND userId='%s') >0".formatted(ShiroUtil.getUserId())));
}
Vi.cndPlus(cnd, "YEAR(school.applyStartTime)", "=", year);
cnd.desc("school.applyStartTime");
sql.setCondition(cnd);
return activitySchoolService.listMap(sql);
}
/**
* 获取这个活动统一报名的信息
*
* @param activityId 活动id
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object getUniteApplyInfo(@Param(value = "endAgeDate", required = false) String endAgeDate,
@Param(value = "startAgeDate", required = false) String startAgeDate,
@Param(value = "activityId") String activityId,
@Param(value = "eventId", required = false) String eventId,
@Param(value = "schoolEventId", required = false) String schoolEventId,
@Param(value = "projectType", required = false) String projectType,
@Param(value = "isMenWomen", required = false) Integer isMenWomen) {
String union_id = getUnionId();
Map result = new HashMap();
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
//根据当前登入人的单位查询他所属的活动分工会属于哪个
ActivityBasicUnit activityBasicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, unit.getId());
ActivitySchool activity = activitySchoolService.fetch(activityId);
Sql sql = Sqls.create("""
SELECT
u.id,
u.username,
u.unitid,
u.loginname,
u.sex,
u.birthday,
un.`name` unitname,
uni.`id` unionId,
uni.`unionname` unionName
FROM
`user` u
LEFT JOIN activity_basic_unit un ON u.unitid = un.id
LEFT JOIN activity_basic_union uni ON un.unionid=uni.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and(new Static("u.id not in (SELECT IFNULL(app.userId,'') from activity_school_apply app WHERE app.activityId = '" + activityId + "' AND app.eventId='" + eventId + "')"));
cnd.and(new Static("u.id IN (SELECT userId FROM activity_user_scope aus WHERE aus.groupId='" + activity.getActivityGroupId() + "')"));
cnd.and("un.unionid", "=", activityBasicUnit.getUnionid());
if (isMenWomen != null && isMenWomen == 1) cnd.and("u.sex", "=", "");
if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "");
if (Strings.isNotBlank(startAgeDate)&&projectType.equals("1")) {
cnd.and("u.birthday", ">", startAgeDate);
cnd.and("u.birthday", "<=", endAgeDate);
}
sql.setCondition(cnd);
List<NutMap> userList = activitySchoolService.listMap(sql);
userList.forEach(v -> {
if (Strings.isNotBlank(v.getString("birthday"))) {
v.put("age", cn.hutool.core.date.DateUtil.ageOfNow(v.getString("birthday")));
}
});
result.put("users", userList);
/*AND asa.`status` = 2*/
Sql applySql = Sqls.create("""
SELECT
asa.*
FROM
activity_school_apply asa
LEFT JOIN activity_school_team team ON asa.teamId = team.id
LEFT JOIN sys_unit unit ON asa.unitId = unit.id
WHERE
asa.eventId = @eventId
AND asa.activityId=@activityId
AND asa.activityUnionId = @unionid
AND asa.`status` != 3
ORDER BY
asa.identity DESC,
asa.sex
""").setParam("eventId", eventId).setParam("unionid", union_id).setParam("activityId", activityId);
List<NutMap> list = activitySchoolApplyService.listMap(applySql);
//团体人数
List<NutMap> awardsModeT = list.stream().filter(v -> v.getString("awardsMode").equals("2")).collect(Collectors.toList());
//单项人数
List<NutMap> awardsModeG = list.stream().filter(v -> v.getString("awardsMode").equals("1")).collect(Collectors.toList());
list.forEach(v -> {
if (Strings.isNotBlank(v.getString("birthday"))) {
v.setv("age", cn.hutool.core.date.DateUtil.ageOfNow(v.getString("birthday")));
}
v.setv("identity", Json.fromJsonAsList(String.class, v.getString("identity")));
});
result.put("list", list);
result.put("awardsModeT", awardsModeT);
result.put("awardsModeG", awardsModeG);
result.put("team", activitySchoolTeamService.query(Cnd.where("eventId", "=", eventId).and("activityId", "=", activityId).asc("location")));
result.put("activity", activity);
List<NutMap> events = (List<NutMap>) getEvents(activityId);
NutMap eve = events.stream().filter(v -> v.getString("id").equals(schoolEventId)).findFirst().orElse(null);
result.put("getEvent", eve);
return result;
}
/**
* 根据活动名称查找小队
*
* @param id
* @return
*/
@At
@ViReturn
public Object getTeamId(String id) {
return activitySchoolTeamService.query(Cnd.where("activityId", "=", id).asc("location"));
}
/**
* 根据活动加项目查找小队
*
* @param activityId
* @return
*/
@At
@ViReturn
public Object getActivityTeamId(String activityId, String eventId) {
return activitySchoolTeamService.query(Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).asc("location"));
}
/**
* 领队的查找方法
*
* @param keyWord
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object leaderSearch(@Param(value = "eventId", required = false) String eventId,
@Param(value = "keyWord", required = false) String keyWord,
@Param(value = "personType", required = false) String personType) {
String union_id = getUnionId();
Sql sql = Sqls.create("""
SELECT
u.id,
u.username,
u.unitid,
u.loginname,
u.sex,
u.mobile,
un.`name` unitname
FROM
sys_user u
LEFT JOIN activity_basic_unit un ON u.unitid = un.id
$condition
""");
Cnd cnd = Cnd.NEW();
if (personType.equals(1)) {
cnd.and("u.member", "=", "1");
}
cnd.and(new Static("u.id not in (SELECT IFNULL(app.userId,'') from activity_school_apply app WHERE app.eventId = '" + eventId + "' AND app.identity = 3)"));
cnd.and("un.unionid", "=", union_id);
cnd.limit(1, 20);
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("u.username", keyWord);
group.orLike("u.loginname", keyWord);
cnd.and(group);
sql.setCondition(cnd);
return activitySchoolApplyService.list(sql);
}
/**
* 统一报名
*
* @param applies
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object doApply(@Param(value = "data", required = false) ActivitySchoolApply[] applies,
@Param(value = "appliedData3", required = false) ActivitySchoolApply[] applies2,
@Param(value = "eventId", required = false) String eventId,
@Param(value = "activityId") String activityId,
@Param(value = "pass", required = false) boolean pass) {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", unit.getId()));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
for (ActivitySchoolApply apply : applies) {
apply.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
apply.setStatus(pass ? 2 : 0);
apply.setAwardsMode("2");
apply.setApplyDate(DateUtil.getDate());
apply.setActivityUnionId(basicUnit.getUnionid());
apply.setActivityUnionName(basicUnion.getUnionname());
}
for (ActivitySchoolApply apply2 : applies2) {
apply2.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
apply2.setStatus(pass ? 2 : 0);
apply2.setAwardsMode("1");
apply2.setApplyDate(DateUtil.getDate());
apply2.setActivityUnionId(basicUnit.getUnionid());
apply2.setActivityUnionName(basicUnion.getUnionname());
}
if (applies.length > 0) {
activitySchoolApplyService.doApplies(activityId, basicUnit.getUnionid(), eventId, Arrays.asList(applies));
}
if (applies2.length > 0) {
activitySchoolApplyService.doApplies(activityId, basicUnit.getUnionid(), eventId, Arrays.asList(applies2));
}
return null;
}
/**
* 个人报名
*
* @param personalEnter
* @param teammateEnter
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object doAddTeammateEnter(@Param(value = "personalEnter") ActivitySchoolApply personalEnter,
@Param(value = "teammateEnter") ActivitySchoolApply teammateEnter) {
personalEnter.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
personalEnter.setStatus(2);
personalEnter.setAwardsMode("2");
personalEnter.setApplyDate(DateUtil.getDate());
if (teammateEnter.getUserId() != null) {
teammateEnter.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
teammateEnter.setStatus(2);
teammateEnter.setAwardsMode("2");
teammateEnter.setApplyDate(DateUtil.getDate());
activitySchoolApplyService.insert(teammateEnter);
}
activitySchoolApplyService.insert(personalEnter);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object doDelete(String id) {
activitySchoolApplyService.delete(id);
return null;
}
private String getUnionId() {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", unit.getId()));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
return unit == null ? "" : basicUnion.getId();
}
/**
* 根据id查询人
*
* @param userId
* @return
*/
@At
@RequiresPermissions("activity.apply")
public Object getUserData(String userId) {
Sql sql = Sqls.create("""
SELECT
us.sex,
us.username,
us.loginname,
us.mobile,
er.unitid,
er.unitname,
er.unionid,
er.unionname
FROM
sys_user us
LEFT JOIN `user` er ON us.id = er.id WHERE us.id=@userId
""");
sql.setParam("userId", userId);
return Result.success().addData(sysUserService.list(sql).get(0));
}
/**
* 查询该小队报名人数
*
* @param teamId
* @return
*/
@At
@RequiresPermissions("activity.apply")
public Object getActivityCount(String teamId) {
Sql sql = Sqls.create("""
SELECT COUNT(*) FROM activity_school_apply WHERE teamId=@teamId and activityUnionId=@unionId
""");
sql.setParam("teamId", teamId);
sql.setParam("unionId", getUnionId());
return activitySchoolApplyService.count(sql);
}
/**
* 查询该人有没有参加过这个活动
*
* @param eventId
* @return
*/
@At
@RequiresPermissions("activity.apply")
public Object getActivityUserCount(String eventId) {
Sql sql = Sqls.create("""
SELECT COUNT(*) FROM activity_school_apply WHERE userId=@userId and eventId=@eventId
""");
sql.setParam("userId", ShiroUtil.getPrincipalProperty("id"));
sql.setParam("eventId", eventId);
return activitySchoolApplyService.count(sql);
}
@At
@RequiresPermissions("activity.apply")
public Object getUserUnion(String query) {
String union_id = getUnionId();
Sql sql = Sqls.create("select u.* FROM `user` u LEFT JOIN activity_basic_unit un ON u.unitid = un.id $condition");
Cnd cnd = Cnd.NEW();
if (Strings.isNotBlank(query)) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("u.username", query);
group.orLike("u.loginname", query);
cnd.and(group);
}
cnd.and("un.unionid", "=", union_id);
sql.setCondition(cnd);
return sysUserService.list(sql);
}
@At
@RequiresPermissions("activity.apply")
public Object findUserOne(String id) {
try {
Sql sql = Sqls.create("""
SELECT
u.id,
u.username,
u.unitid,
u.loginname,
u.sex,
u.birthday,
un.`name` unitname,
uni.`id` unionId,
uni.`unionname` unionName
FROM
`user` u
LEFT JOIN activity_basic_unit un ON u.unitid = un.id
LEFT JOIN activity_basic_union uni ON un.unionid=uni.id
Where u.id = @id
""").setParam("id", id);
NutMap nutMap = activitySchoolService.fetch(sql);
if (Strings.isNotBlank(nutMap.getString("birthday"))) {
nutMap.setv("age", cn.hutool.core.date.DateUtil.ageOfNow(nutMap.getString("birthday")));
}
return Result.success().addData(nutMap);
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@At
@RequiresPermissions("activity.apply")
public Object doDeleteTeamUser(String id) {
return activitySchoolApplyService.clear(Cnd.where("id", "=", id));
}
@At
public Object getActivits(Integer year) {
return activitySchoolService.query(Cnd.where("YEAR(applyStartTime)", "=", year).desc("applyStartTime"));
}
/**
* 根据活动查询项目
*
* @param activityId
* @return
*/
@At
public Object getEvents(String activityId) {
Cnd cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
act.*,
ev.competitionCategory,
ev.distance,
ev.sports,
ev.projectType,
ev.whetherEnable,
ev.note,
ev.allName,
ev.isMenWomen,
ev.isInterest
FROM
activity_school_event act
LEFT JOIN activity_event ev ON act.eventId = ev.id $condition
""");
Vi.cndPlus(cnd, "activityId", "=", activityId);
sql.setCondition(cnd);
return activitySchoolService.listMap(sql);
}
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object joinMemberFamily(String[] applysId) {
for (String s : applysId) {
activitySchoolApplyService.clear(Cnd.where("id", "=", s));
}
return null;
}
@At
@ViReturn
public Object pageData(@Param(value = "applyType", required = false) String applyType,
@Param(value = "isAudit", required = false) String isAudit,
@Param(value = "groupName", required = false) String groupName,
@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String eventId,
@Param(value = "year", required = false) Integer year, PageForm page,
@Param(value = "isMenWomen", required = false) String[] isMenWomen) {
Cnd cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
ase.*,
school.`name`,
school.applyWay,
school.applyStartTime,
school.applyEndTime,
school.applyType,
school.activityGroupId,
eve.allName,
eve.isInterest,
eve.projectType,
eve.isMenWomen,
(SELECT ast.`name` FROM activity_school_apply app LEFT JOIN activity_school_team ast ON ast.id = app.teamId WHERE app.eventId = ase.eventId AND app.activityId = ase.activityId AND app.userId = @userId) activityTeamName,
(SELECT COUNT(1) FROM activity_school_apply WHERE eventId=ase.eventId AND activityId=ase.activityId and status=2 and activityUnionId=@unionId) applyNum,
(SELECT COUNT(1) FROM activity_school_apply WHERE eventId = ase.eventId AND activityId = ase.activityId AND userId=@userId) userApply,
(SELECT COUNT(1) FROM activity_school_apply WHERE eventId=ase.eventId AND activityId=ase.activityId and status=2) totalApplyNum,
(SELECT COUNT(1) FROM activity_school_apply WHERE eventId=ase.eventId AND activityId=ase.activityId and status=0 and activityUnionId=@unionId) apply_num_bc
FROM
activity_school_event ase
LEFT JOIN activity_school school ON ase.activityId = school.id
LEFT JOIN activity_event eve ON ase.eventId=eve.id
LEFT JOIN activity_basic_settings abs ON abs.id=eve.competitionCategory
$condition
""").setParam("unionId", getUnionId()).setParam("userId", ShiroUtil.getUserId());
if (!ShiroUtil.hasAnyRoles("H04,sysadmin")) {
cnd.where().andLike("school.applyWay ", "1");
cnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId=school.activityGroupId AND userId='%s') >0".formatted(ShiroUtil.getUserId())));
}
Vi.cndPlus(cnd, "abs.`name`", "=", groupName);
//如果不是超级管理员就按男女查询,isMenWomen 1是男2是女projectType 2是团体
/* if (!ShiroUtil.hasAnyRoles("sysadmin,H04,A06")) {
if (StrUtil.isNotBlank(applyType)) {
if (!applyType.equals("1")) {Z
if (ShiroUtil.getPrincipalProperty("sex").equals("男")) {
cnd.and(new Static("(eve.isMenWomen =1 OR eve.isMenWomen IS NULL )"));
} else {
cnd.and(new Static("(eve.isMenWomen =2 OR eve.isMenWomen IS NULL)"));
}
}
}
}*/
if (Strings.isNotBlank(isAudit)) {
cnd.and(new Static("(SELECT COUNT(1) FROM activity_school_apply WHERE eventId = ase.eventId AND activityId = ase.activityId AND userId='%s')%s0".formatted(ShiroUtil.getUserId(), (isAudit.equals("true") ? ">" : "="))));
}
Vi.cndPlus(cnd, "ase.activityId", "=", activityId);
Vi.cndPlus(cnd, "ase.eventId", "=", eventId);
Vi.cndPlus(cnd, "YEAR(school.applyStartTime)", "=", year);
cnd.asc("eve.projectType").desc("eve.allName");
sql.setCondition(cnd);
return activitySchoolEventViService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
/**
* 如果当前项目是综合类活动就添加工会总领队和教练
*
* @param LeaderData
* @param CoachData
* @return
*/
@At
@ViReturn
public Object doLeaderCoachHead(@Param(value = "staffData", required = false) ActivitySchoolApply staffData,
@Param(value = "LeaderData", required = false) ActivitySchoolApply LeaderData,
@Param(value = "CoachData", required = false) ActivitySchoolApply CoachData,
@Param(value = "headData", required = false) ActivitySchoolApply headData,
String activityId) {
Cnd cnd = Cnd.NEW();
SqlExpressionGroup group = new SqlExpressionGroup();
group.or("unionStaff", "=", true);
group.or("unionLeader", "=", true);
group.or("unionCoach", "=", true);
group.or("unionHead", "=", true);
cnd.and(group);
cnd.and("activityId", "=", activityId);
cnd.and("activityUnionId", "=", getUnionId());
activitySchoolApplyService.clear(cnd);
if (staffData.getUserId() != null) {
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", staffData.getUnitId()));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
staffData.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
staffData.setApplyDate(DateUtil.getDate());
staffData.setUnitname(basicUnit.getName());
staffData.setActivityUnionId(basicUnion.getId());
staffData.setActivityUnionName(basicUnion.getUnionname());
activitySchoolApplyService.insert(staffData);
}
if (LeaderData.getUserId() != null) {
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", LeaderData.getUnitId()));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
LeaderData.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
LeaderData.setApplyDate(DateUtil.getDate());
LeaderData.setUnitname(basicUnit.getName());
LeaderData.setActivityUnionId(basicUnion.getId());
LeaderData.setActivityUnionName(basicUnion.getUnionname());
activitySchoolApplyService.insert(LeaderData);
}
if (CoachData.getUserId() != null) {
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", CoachData.getUnitId()));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
CoachData.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
CoachData.setApplyDate(DateUtil.getDate());
CoachData.setUnitname(basicUnit.getName());
CoachData.setActivityUnionId(basicUnion.getId());
CoachData.setActivityUnionName(basicUnion.getUnionname());
activitySchoolApplyService.insert(CoachData);
}
if (headData.getUserId() != null) {
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", headData.getUnitId()));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
headData.setApplyUser(ShiroUtil.getPrincipalProperty("id").toString());
headData.setApplyDate(DateUtil.getDate());
headData.setUnitname(basicUnit.getName());
headData.setActivityUnionId(basicUnion.getId());
headData.setActivityUnionName(basicUnion.getUnionname());
activitySchoolApplyService.insert(headData);
}
return null;
}
@At
@ViReturn
public Object getUnionCoachLeaderHead(@Param(value = "activityId", required = false) String activityId) {
Map result = new HashMap();
Sql sql = Sqls.create("""
SELECT apply.*,us.unitname FROM activity_school_apply apply LEFT JOIN `user` us ON us.id=apply.userId WHERE apply.activityId=@activityId and apply.unionId=@unionId
""");
sql.setParam("unionId", getUnionId());
sql.setParam("activityId", activityId);
List<NutMap> list = activitySchoolApplyService.listMap(sql);
NutMap unionCoach = list.stream().filter(v -> {
return v.getBoolean("unionCoach");
}).findFirst().orElse(null);
NutMap unionLeader = list.stream().filter(v -> {
return v.getBoolean("unionLeader");
}).findFirst().orElse(null);
NutMap unionHead = list.stream().filter(v -> {
return v.getBoolean("unionHead");
}).findFirst().orElse(null);
NutMap unionStaff = list.stream().filter(v -> {
return v.getBoolean("unionStaff");
}).findFirst().orElse(null);
result.put("unionCoach", unionCoach);
result.put("unionLeader", unionLeader);
result.put("unionHead", unionHead);
result.put("unionStaff", unionStaff);
List userOptions = List.of();
ArrayList arrayList = new ArrayList<>(userOptions);
if (unionCoach != null) {
arrayList.add(sysUserService.fetch(unionCoach.getString("userId")));
}
if (unionLeader != null) {
arrayList.add(sysUserService.fetch(unionLeader.getString("userId")));
}
if (unionHead != null) {
arrayList.add(sysUserService.fetch(unionHead.getString("userId")));
}
if (unionStaff != null) {
arrayList.add(sysUserService.fetch(unionStaff.getString("userId")));
}
result.put("userOptions", arrayList);
return result;
}
@At
@ViReturn
public Object getActivityData(@Param(value = "activityId", required = false) String activityId) {
return activitySchoolApplyService.query(Cnd.where("activityId", "=", activityId).and("awardsMode", "=", 1));
}
@At
@ViReturn
public Object doDeleteApply(@Param(value = "activityId", required = false) String activityId,
@Param(value = "userId", required = false) String userId,
@Param(value = "eventId", required = false) String eventId) {
return activitySchoolApplyService.clear(Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).and("userId", "=", userId));
}
/**
* 删除报名人员
*
* @param activityId 活动
* @param userId 用户
* @return
*/
@At
@Async
public Object doDeleteActivityRegister(
@Param(value = "activityId", required = false) String activityId,
@Param(value = "userId", required = false) String userId) {
Cnd cnd = Cnd.where("tissueId", "=", activityId).and("userId", "=", userId);
simpleService.dao().clear(ActivityTissuePerson.class, cnd);
return Result.success();
}
@At
@ViReturn
@RequiresPermissions("activity.apply")
@Ok("json:{ignoreNull:true}")
public Object getSysUser(String queryString, String[] loginnames) {
Cnd cnd = Cnd.NEW();
cnd.andEX("loginname", "not in", loginnames);
if (StrUtil.isNotBlank(queryString)) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.andLike("username", queryString).orLike("loginname", queryString);
cnd.and(group);
}
Sql sql = Sqls.create("""
SELECT
id,
loginname,
username,
sex,
unitid,
unionid,
unionname,
birthday
FROM
`user`
$condition
LIMIT 30
""");
sql.setCondition(cnd);
List<NutMap> list = sysUserService.listMap(sql);
return list;
}
@At
@ViReturn
@RequiresPermissions("activity.apply")
@Ok("json:{ignoreNull:true}")
public Object getUnits() {
List<Sys_unit> sysUnits = simpleService.dao().query(Sys_unit.class, Cnd.where("unitlevel", "=", 2).asc("unitcode"));
return sysUnits;
}
}
@@ -0,0 +1,87 @@
package io.v.nutz.zhgh.activity.controller.school;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
import org.nutz.mvc.annotation.Ok;
/**
* @author: Aaron
* @create: 2021-02-24 16:32
* @description: 活动日历
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/calendar")
@RequiresAuthentication
public class ActivityCalendarController {
@Inject
private ActivitySchoolService activitySchoolService;
@At("")
@Ok("beetl:platform/activity/school/ActivityCalendar.html")
@RequiresPermissions("activity.calendar")
public void index() {
}
@At
@ViReturn
public Object getData() {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
school.id,
school.`name`,
school.address,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
un.`name` unitName
FROM
activity_school school
LEFT JOIN sys_unit un ON un.id = school.unitSponsor
$condition
""");
cnd.desc("school.startTime");
sql.setCondition(cnd);
return activitySchoolService.listMap(sql);
}
@At
@ViReturn
public Object getWyData() {
Sql sql = Sqls.create("""
SELECT
id,
`name`,
address,
applyStartTime,
applyEndTime,
startTime,
endTime,
type activityType
FROM
activity_tissue
WHERE
signUpMethod = 1
""");
return activitySchoolService.listMap(sql);
}
}
@@ -0,0 +1,734 @@
package io.v.nutz.zhgh.activity.controller.school;
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.afterturn.easypoi.excel.export.ExcelExportService;
import cn.hutool.core.util.StrUtil;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.OfficeTemplateUtil;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.sys.models.Sys_union;
import io.v.nutz.sys.models.Sys_unit;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.services.SysUnionService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.*;
import io.v.nutz.zhgh.activity.services.ActivityPlanService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
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.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2021-02-23 14:32
* @description: 活动通用
**/
@At("/platform/activity/common")
@IocBean
@RequiresAuthentication
@Ok("json:full")
public class ActivityCommonController {
/*@Inject
private HdTypeService hdTypeService;*/
@Inject
private SysUnionService sysUnionService;
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private ActivityPlanService activityPlanService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@Inject("ActivityEvent")
private ViService<ActivityEvent> activityEventService;
@Inject("ActivitySchoolTeam")
private ViService<ActivitySchoolTeam> activitySchoolTeamViService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventService;
@Inject
private OfficeTemplateUtil officeTemplateUtil;
/**
* 获取活动类型
*
* @return
*/
/* @At
@ViReturn
public Object getType() {
return hdTypeService.query(Cnd.where("parentid", "=", "0").asc("pxbh"));
}*/
@At
@ViReturn
public Object getActivityType() {
return activityPlanService.list(Sqls.create("select * from activity_basic_settings where parentId = 'b3b6bafe6dd74aa8b69691b6b75b50fd' order by code asc"));
}
/**
* 获取小队
*
* @return
*/
@At
@ViReturn
public Object getTeam() {
return activitySchoolTeamViService.query(Cnd.orderBy().asc("location"));
}
/**
* 获取活动项目
*
* @return
*/
@At
@ViReturn
public Object getEvents(Integer type) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
ae.*
FROM
activity_event ae
LEFT JOIN activity_basic_settings ba ON ae.competitionCategory = ba.id
$condition
""");
cnd.and("ae.whetherEnable", "=", 1);
if (type != null && type == 1) {
cnd.and("ae.projectType", "=", 2);
} else if (type != null && type == 3) {
cnd.and("ae.projectType", "=", 1);
}
cnd.and(new Static("""
1=1
ORDER BY
ae.isMenWomen DESC,
CASE
ba.`name`
WHEN '甲组' THEN
1
WHEN '乙组' THEN
2
WHEN '丙组' THEN
3
WHEN '丁组' THEN
4
WHEN '团体' THEN
5
END
"""));
sql.setCondition(cnd);
return activityEventService.listMap(sql);
}
/**
* 获取校级活动计划
*
* @return
*/
@At
@ViReturn
public Object getSchoolActivityPlan(@Param(value = "type",required = false) Integer type) {
return activityPlanService.listMap(Sqls.create("select * from activity_plan where type = @type").setParam("type", type));
}
private String getUnionId() {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
return unit == null ? "" : unit.getUnionid();
}
@At
@ViReturn
public Object findOne(String id) {
String unionid = getUnionId();
Sql sql = Sqls.create("""
SELECT
act.*,
plan.`name` plan
FROM
activity_school act
LEFT JOIN activity_plan plan ON act.planId = plan.id
WHERE
act.id = @id
""").setParam("id", id);
NutMap nutMap = activitySchoolService.listMap(sql).get(0);
Sql eventSql = Sqls.create("""
SELECT
ase.*,
ae.allName,
ae.projectType,
sch.applyType
FROM
activity_school_event ase
LEFT JOIN activity_event ae ON ae.id = ase.eventId
LEFT JOIN activity_school sch ON sch.id=ase.activityId
WHERE
activityId = @activityId
""").setParam("activityId", id);
List<NutMap> eventMap = activitySchoolEventService.listMap(eventSql);
nutMap.setv("events", eventMap);
Sql sql1 = Sqls.create("""
SELECT
app.*,
team.`name` team,
unit.`name` unitname
FROM
activity_school_apply app
LEFT JOIN activity_school_team team ON app.teamId = team.id
LEFT JOIN sys_unit unit ON app.unitId = unit.id
WHERE
app.activityId = @id
ORDER BY
app.identity DESC,
team.location ASC,
app.sex
""").setParam("id", id);
if (!ShiroUtil.hasAnyRoles("sysadmin,A06") && ShiroUtil.hasRole("H04")) {
sql1.setVar("union", " AND app.unionId = '" + unionid + "' ");
}
List<NutMap> applies = activitySchoolApplyService.listMap(sql1);
List<Integer> applyWay = Json.fromJsonAsList(Integer.class, nutMap.getString("applyWay"));
if (applyWay.stream().anyMatch(v -> v.equals(2))) {
List<NutMap> apply = new ArrayList();
Cnd unionCnd = Cnd.NEW();
if (!ShiroUtil.hasAnyRoles("sysadmin,A06") && ShiroUtil.hasRole("H04")) {
unionCnd.and("id", "=", unionid);
}
List<Sys_union> unions = sysUnionService.query(unionCnd);
for (Sys_union union : unions) {
String union_id = union.getId();
NutMap map = new NutMap();
List<NutMap> applyList = applies.stream().filter(v -> {
return v.getString("unionId").equals(union_id);
}).collect(Collectors.toList());
map.setv("id", union_id);
map.setv("unionname", union.getUnionname());
map.setv("unioncode", union.getUnioncode());
map.setv("num", applyList.size());
map.setv("apply", applyList);
apply.add(map);
}
nutMap.setv("apply", apply);
}
return nutMap;
}
@At
@Ok("void")
public void exportXlsx(String id, String unionId, HttpServletResponse response) throws IOException {
Sql sql = Sqls.create("""
SELECT
app.username,
app.loginname,
app.identity,
app.activityUnionName,
app.unionName,
app.unitname,
app.unionId,
app.activityUnionId,
app.sex,
ev.allName,
sc.`name` activityName,
app.`team` teamName
FROM
`activity_school_apply` app
LEFT JOIN `user` u ON u.id = app.userId
LEFT JOIN activity_event ev ON ev.id = app.eventId
LEFT JOIN activity_school sc ON sc.id = app.activityId
WHERE
activityId = @id
$cnd
ORDER BY
ev.projectCode desc,
app.activityUnionName DESC,
app.`team` ASC,
CASE
WHEN JSON_SEARCH( app.identity, 'one', '7' ) IS NOT NULL THEN
1
WHEN JSON_SEARCH( app.identity, 'one', '3' ) IS NOT NULL THEN
2
WHEN JSON_SEARCH( app.identity, 'one', '2' ) IS NOT NULL THEN
3
WHEN JSON_SEARCH( app.identity, 'one', '1' ) IS NOT NULL THEN
4
ELSE 5 END;
""").setParam("id", id);
if (Strings.isNotBlank(unionId)) {
sql.setVar("cnd", "and app.activityUnionId='" + unionId + "'");
}
List<NutMap> list = activitySchoolApplyService.listMap(sql);
List<ExcelExportEntity> entityList = new ArrayList<>();
ExcelExportEntity no = new ExcelExportEntity("序号", "no", 10);
no.setFormat("isAddIndex");
entityList.add(no);
entityList.add(new ExcelExportEntity("项目名称", "allName", 50));
entityList.add(new ExcelExportEntity("所属队", "teamName", 20));
entityList.add(new ExcelExportEntity("姓名", "username", 20));
entityList.add(new ExcelExportEntity("工号", "loginname", 20));
entityList.add(new ExcelExportEntity("所在单位", "unitname", 50));
entityList.add(new ExcelExportEntity("所在分工会", "unionName", 50));
entityList.add(new ExcelExportEntity("报名分工会", "activityUnionName", 50));
entityList.add(new ExcelExportEntity("身份", "sf", 30));
entityList.add(new ExcelExportEntity("备注", "applyUnitName", 30));
List<NutMap> applyUnitNameList = new ArrayList<>();
list.forEach(map -> {
if (StrUtil.isBlank(map.getString("allName"))){
map.setv("allName", "工会领队、教练、工作人员");
}
ActivitySchoolApply schoolApply = Lang.map2Object(map, ActivitySchoolApply.class);
if (StrUtil.isAllNotBlank(schoolApply.getUnionId(), schoolApply.getActivityUnionId()) && !schoolApply.getUnionId().equals(schoolApply.getActivityUnionId())) {
List<NutMap> applyList = list.stream().filter(v -> v.getString("activityUnionId").equals(map.getString("activityUnionId"))).collect(Collectors.toList());
List<String> unionNameList = applyList.stream().map(a -> a.getString("unionName")).distinct().collect(Collectors.toList());
map.setv("applyUnitName", String.join(",", unionNameList));
applyUnitNameList.add(new NutMap().addv("allName", map.getString("allName")).addv("applyUnitNameList", unionNameList));
}
String sf = schoolApply.getIdentity().stream().map(personType::getName).collect(Collectors.toList()).toString();
map.put("sf", sf.replace("[", "").replace("]", ""));
});
Map<String, List<NutMap>> userListMap = list.stream().collect(Collectors.groupingBy(n -> n.getString("allName")));
Workbook workbook = new XSSFWorkbook();
userListMap.forEach((k, v) -> {
for (NutMap map : v) {
NutMap applyUnitNameMap = applyUnitNameList.stream().filter(it -> it.getList("applyUnitNameList", String.class).contains(map.getString("unitname"))
&& it.getString("allName").equals(k)).findFirst().orElse(null);
if (Lang.isNotEmpty(applyUnitNameMap)) {
map.put("applyUnitName", String.join(",", applyUnitNameMap.getList("applyUnitNameList", String.class)));
}
}
ExcelExportService service = new ExcelExportService();
ExportParams exportParams = new ExportParams();
exportParams.setSheetName(k);
exportParams.setType(ExcelType.XSSF);
service.createSheetForMap(workbook, exportParams, entityList, v);
});
ViTool.excelResponse(response, "报名汇总表.xlsx");
ServletOutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.close();
}
private static class personType {
private static String getName(String v) {
switch (v) {
case "1":
return "运动员";
case "2":
return "教练";
case "3":
return "领队";
case "4":
return "处级领导";
case "5":
return "替补";
case "6":
return "团长";
case "7":
return "工作人员";
default:
return "";
}
}
}
/**
* 导出
*
* @param id
* @param response
*/
@At
@Ok("void")
public void export(String id, String unionId, HttpServletResponse response) throws IOException {
ActivitySchool activity = activitySchoolService.fetch(id);
Map map = new HashMap();
List list = new ArrayList();
CndPlus unionCnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT * FROM sys_union un $condition
""");
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (ShiroUtil.hasRole("H04")) {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
unionCnd.and("un.id", "=", unit.getUnionid());
}
} else {
unionCnd.andEX("un.id", "=", unionId);
}
unionCnd.and(new Static("(SELECT count(1) from activity_school_apply app WHERE app.unionId = un.id and app.status = 2 and app.activityId='%s') > 0".formatted(id)));
sql.setCondition(unionCnd);
List<Sys_union> unions = sysUnionService.listEntity(sql);
CndPlus cnd = CndPlus.create();
Sql sql1 = Sqls.create("""
SELECT
ae.allName,
app.*,
team.`name` teamName,
unit.`name` unitName,
gh.unionname AS unionName
FROM
activity_school_apply app
LEFT JOIN activity_event ae ON ae.id = app.eventId
LEFT JOIN activity_school_team team ON app.teamId = team.id
LEFT JOIN sys_unit unit ON app.unitId = unit.id
LEFT JOIN sys_union gh ON gh.id = unit.unionid
$condition
""");
cnd.andEX("app.activityId", "=", id);
cnd.andEX("app.unionId", "=", unionId);
cnd.desc("app.divisionLevelLeadership").asc("team.location").asc("app.sex");
sql1.setCondition(cnd);
List<ActivitySchoolApply> applies = activitySchoolApplyService.listEntity(sql1, ActivitySchoolApply.class);
List<NutMap> mapList = activitySchoolApplyService.listMap(sql1);
for (NutMap apply : mapList) {
String oldUsername = apply.getString("username");
String username = apply.getString("username");
String sex = apply.getString("sex");
boolean unionHead = apply.getBoolean("unionHead");
boolean coach = Json.fromJsonAsList(String.class, apply.getString("identity")).stream().anyMatch(v -> v.equals("2"));
boolean leader = Json.fromJsonAsList(String.class, apply.getString("identity")).stream().anyMatch(v -> v.equals("3"));
boolean substitute = Json.fromJsonAsList(String.class, apply.getString("identity")).stream().anyMatch(v -> v.equals("5"));
boolean divisionLevelLeadership = Json.fromJsonAsList(String.class, apply.getString("identity")).stream().anyMatch(v -> v.equals("4"));
boolean women = "".equals(sex);
if (women || divisionLevelLeadership || coach || leader) {
username += "";
if (women) {
username += "";
}
if (coach && username.equals(oldUsername)) {
username += "教练 ";
}
if (leader && username.equals(oldUsername)) {
username += "领队 ";
}
if (unionHead && username.equals(oldUsername)) {
username += "团长 ";
}
if (substitute && username.equals(oldUsername)) {
username += "替补 ";
}
if (divisionLevelLeadership && username.equals(oldUsername)) {
username += "处级领导 ";
}
username += "";
String subUserName = username.substring(0, username.length() - 2);
if (!women && subUserName.equals(oldUsername)) {
apply.setv("username", oldUsername);
} else {
apply.setv("username", username);
}
// apply.setv("username", (!women && username.equals(oldUsername)) ? oldUsername : username);
}
}
for (Sys_union union : unions) {
String union_id = union.getId();
Map m = new HashMap<>();
m.put("id", union_id);
m.put("name", union.getUnionname());
List<NutMap> users = mapList.stream().filter(v -> {
return v.getString("unionId").equals("2b113edb7e7d4494a9cdfd7672a0ed90");
}).collect(Collectors.toList());
/* List<NutMap> users = mapList.stream().filter(v -> {
return v.getString("unionId").equals(union_id);
}).collect(Collectors.toList());*/
List<NutMap> collect1 = users.stream().filter(v -> v.getString("team") != null).collect(Collectors.toList());
Map<String, List<NutMap>> allName = collect1.stream().collect(Collectors.groupingBy(all -> all.getString("allName"), Collectors.toList()));
LinkedHashMap<String, List<NutMap>> collect = collect1.stream().filter(v -> {
return Json.fromJsonAsList(String.class, v.getString("identity")).stream().anyMatch(x -> x.equals("1") || x.equals("2") || x.equals("3") || x.equals("4") || x.equals("5"));
}).collect(Collectors.groupingBy(record -> record.getString("team"), LinkedHashMap::new, Collectors.toList()));
List<Map> teams = new ArrayList();
List<NutMap> leaderList = new ArrayList<>();
collect.forEach((key, val) -> {
List<NutMap> ydy = val.stream().filter(v -> Json.fromJsonAsList(String.class, v.getString("identity")).stream().anyMatch(x -> x.equals("1") || x.equals("5"))).collect(Collectors.toList());
List<NutMap> coach = val.stream().filter(v -> Json.fromJsonAsList(String.class, v.getString("identity")).stream().anyMatch(x -> x.equals("2"))).collect(Collectors.toList());
List<NutMap> leader = val.stream().filter(v -> Json.fromJsonAsList(String.class, v.getString("identity")).stream().anyMatch(x -> x.equals("3"))).collect(Collectors.toList());
List<NutMap> divisionLevelLeadership = val.stream().filter(v -> Json.fromJsonAsList(String.class, v.getString("identity")).stream().anyMatch(x -> x.equals("4"))).collect(Collectors.toList());
Map mm = new HashMap<>();
mm.put("name", key);
mm.put("coach", coach);
mm.put("leader", leader);
mm.put("divisionLevelLeadership", divisionLevelLeadership);
mm.put("users", ydy);
if (key.equals("第1队") && leader.size() > 0) {
leaderList.add(leader.get(0));
}
teams.add(mm);
});
m.put("id1", teams);
if (activity.getApplyType() == 1) {
m.put("id3", leaderList);
} else {
//教练
List<NutMap> id2 = users.stream().filter(v -> StrUtil.isNotBlank(v.getString("unionCoach")) && v.getBoolean("unionCoach")).collect(Collectors.toList());
m.put("id2", id2);
if (id2.size() > 0) m.put("coachName", "基层工会教练:");
//领队
List<NutMap> id3 = users.stream().filter(v -> StrUtil.isNotBlank(v.getString("unionLeader")) && v.getBoolean("unionLeader")).collect(Collectors.toList());
m.put("id3", id3);
if (id3.size() > 0) m.put("leaderName", "基层工会领队:");
//领队
List<NutMap> id4 = users.stream().filter(v -> StrUtil.isNotBlank(v.getString("unionHead")) && v.getBoolean("unionHead")).collect(Collectors.toList());
m.put("id4", id4);
if (id4.size() > 0) m.put("unionHead", "基层工会团长:");
}
list.add(m);
}
map.put("list", list);
String fileName = activity.getName() + "人员名单";
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.newBuilder().bind("users", policy).build();
String templateUrl = "";
if (activity.getApplyType() == 1) {
templateUrl = officeTemplateUtil.getPath("activity_list1");
} else if (activity.getApplyType() == 2) {
templateUrl = officeTemplateUtil.getPath("activity_list");
}
XWPFTemplate.compile(templateUrl, config).render(map).writeAndClose(response.getOutputStream());;
}
/* @At
public void export(String id, HttpServletResponse response) throws IOException {
ActivitySchool activity = activitySchoolService.fetch(id);
Map map = new HashMap();
List list = new ArrayList();
Cnd unionCnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT * FROM sys_union un $condition
""");
if (!ShiroUtil.hasAnyRoles("sysadmin,A06") && ShiroUtil.hasRole("H04")) {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
unionCnd.and("un.id", "=", unit.getUnionid());
}
unionCnd.and(new Static("(SELECT count(1) from activity_school_apply app WHERE app.unionId = un.id and app.status = 2) > 0"));
sql.setCondition(unionCnd);
List<Sys_union> unions = sysUnionService.listEntity(sql);
Sql sql1 = Sqls.create("""
SELECT
app.*,
team.`name` team,
unit.`name` unitname
FROM
activity_school_apply app
LEFT JOIN activity_school_team team ON app.teamId = team.id
LEFT JOIN sys_unit unit ON app.unitId = unit.id
WHERE
app.activityId = @id
ORDER BY
app.divisionLevelLeadership DESC,
app.identity DESC,
team.location ASC,
app.sex
""").setParam("id", id);
List<Record> applies = activitySchoolApplyService.list(sql1);
for (Record apply : applies) {
String username = apply.getString("username");
String sex = apply.getString("sex");
boolean division_level_leadership = Boolean.parseBoolean(apply.getString("divisionLevelLeadership"));
boolean women = "女".equals(sex);
if (women || division_level_leadership) {
username += "";
if (women) {
username += "女";
}
if (division_level_leadership) {
if (women) {
username += " 处级领导";
} else {
username += "处级领导";
}
}
username += "";
apply.set("username", username);
}
}
for (Sys_union union : unions) {
String union_id = union.getId();
Map m = new HashMap<>();
m.put("id", union_id);
m.put("name", union.getUnionname());
List<Record> users = applies.stream().filter(v -> {
return v.getString("unionId").equals(union_id);
}).collect(Collectors.toList());
//运动员
Map<String, List<Record>> collect = users.stream().filter(v -> {
return v.getInt("identity") == 1;
}).collect(Collectors.groupingBy(record -> record.getString("team"), LinkedHashMap::new, Collectors.toList()));
List<Map> teams = new ArrayList();
collect.forEach((key, val) -> {
Map mm = new HashMap<>();
mm.put("name", key);
mm.put("users", val);
teams.add(mm);
});
m.put("id1", teams);
//教练
List<Record> id2 = users.stream().filter(v -> {
return v.getInt("identity") == 2;
}).collect(Collectors.toList());
id2 = id2;
m.put("id2", id2);
//领队
List<Record> id3 = users.stream().filter(v -> {
return v.getInt("identity") == 3;
}).collect(Collectors.toList());
m.put("id3", id3);
list.add(m);
}
map.put("list", list);
String fileName = activity.getName() + "人员名单";
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.newBuilder().bind("users", policy).build();
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/activity/list.docx");
XWPFTemplate.compile(inputStream, config).render(map, response.getOutputStream());
inputStream.close();
}*/
@At
@ViReturn
public Object findOnePlan(String id) {
return activityPlanService.findOne(id);
}
}
@@ -0,0 +1,237 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.zhgh.activity.models.ActivitySchoolApply;
import io.v.nutz.zhgh.activity.models.SchoolAssignGrades;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.services.SysUnitService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
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.Strings;
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;
/**
* Created by djx on 2019/6/28.
* 活动成绩管理Controller
*/
@IocBean
@At("/platform/activity/school/grades")
public class ActivityGradesController {
/* @Inject
private HdXhdService hdXhdService;*/
@Inject
private SysUnitService sysUnitService;
@Inject
private ActivitySchoolService activitySchoolService;
@At("")
@Ok("beetl:platform/activity/school/ActivityGrades.html")
@RequiresPermissions("activity.school.grades")
public void index() {
}
@At
@Ok("json")
@ViReturn
public Object data(String name, String activityId, String eventId, String jsms, String year, int pageNumber, int pageSize) {
Sql sql = Sqls.create("""
SELECT
school.id,
school.planId,
school.`name`,
school.address,
ase.eventId,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
school.unitSponsor,
school.unitJointly,
school.gameStyle,
ase.awardsMode,
school.funding,
school.applyWay,
ase.combinationMethod,
school.personType,
school.activityLevel,
even.allName,
( SELECT COUNT(1) FROM activity_school_apply WHERE eventId=ase.eventId AND activityId=ase.activityId ) applyNum\s
FROM
activity_school school
LEFT JOIN activity_school_event ase ON ase.activityId=school.id
LEFT JOIN activity_event even ON even.id = ase.eventId
$condition
""");
CndPlus cnd = CndPlus.create();
// cnd.and(new Static("CURRENT_DATE() >= school.endTime"));
if (Strings.isNotBlank(name)) {
cnd.where().andLike("school.name", name);
}
if (Strings.isNotBlank(jsms)) {
cnd.and("asa.gameStyle", "=", jsms);
}
cnd.andEx("YEAR(school.startTime)", "=", year);
if (Strings.isNotBlank(activityId)) {
cnd.and("school.id", "=", activityId);
}
if (Strings.isNotBlank(eventId)) {
cnd.and("ase.eventId", "=", eventId);
}
cnd.desc("school.startTime");
sql.setCondition(cnd);
Pagination pagination = activitySchoolService.listPageMap(pageNumber, pageSize, sql);
NutMap map = new NutMap();
map.put("hds", pagination);
map.put("unit", sysUnitService.query(Cnd.where("unitlevel", "=", "2")));
return map;
}
@Inject
private ViService<ActivitySchoolApply> activitySchoolApplyViService;
@At
@Ok("json")
public Object findUnit(String id) {
Sql sql = Sqls.create("""
SELECT
apply.activityId,
apply.unitId,
us.unitname,
apply.id
FROM
activity_school_apply apply
LEFT JOIN `user` us ON apply.unitId = us.unitid
WHERE apply.activityId=@id
GROUP BY
us.unitname
""");
sql.params().set("id", id);
List<Record> re = activitySchoolApplyViService.list(sql);
return Result.success().addData(re);
}
/*查询参赛人员*/
@At
@Ok("json")
public Object findCyRy(String unitid, String hdid) {
Sql sql = Sqls.create("""
SELECT
us.username,
us.sex
FROM
activity_school_apply apply
LEFT JOIN `user` us ON apply.userId = us.id
WHERE identity=1 AND apply.activityId=@hdid AND apply.unitId=@unitid
""").setParam("hdid", hdid).setParam("unitid", unitid);
return Result.success().addData(activitySchoolApplyViService.list(sql));
}
@Inject("SchoolAssignGrades")
private ViService<SchoolAssignGrades> schoolAssignGradesViService;
/*团队获奖设置*/
@At
@Ok("json")
public Object tdDo(@Param("grades") SchoolAssignGrades[] grades, String unitid, String eventId) {
schoolAssignGradesViService.clear(Cnd.where("unitId", "=", unitid).and("eventId", "=", eventId));
schoolAssignGradesViService.insert(grades);
return Result.success();
}
@At
@Ok("json")
public Object findGrUser(String id, String eventId, @Param("searchKeyword") String searchKeyword, @Param("unit") String unit, @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
us.unitname,
apply.*
FROM
activity_school_apply apply
LEFT JOIN `user` us ON apply.userId = us.id $condition
""");
Vi.cndPlus(cnd, "apply.activityId", "=", id);
Vi.cndPlus(cnd, "apply.eventId", "=", eventId);
Vi.cndPlus(cnd, "apply.unitId", "=", unit);
Vi.cndPlus(cnd, "apply.userId", "NOT IN", "(SELECT userId FROM school_assign_grades WHERE userId IS NOT NULL)");
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("us.username", searchKeyword);
group.orLike("us.loginname", searchKeyword);
cnd.and(group);
sql.setCondition(cnd);
return Result.success().addData(schoolAssignGradesViService.listPage(pageNumber, pageSize, sql));
}
@At
@Ok("json")
public Object findSaveCj(String id, String eventId) {
return Result.success().addData(schoolAssignGradesViService.query(Cnd.where("activityId", "=", id).and("eventId", "=", eventId)));
}
@At
@Ok("json")
public Object findGrCj(String id, String eventId) {
return Result.success().addData(schoolAssignGradesViService.query(Cnd.where("activityId", "=", id).and("eventId", "=", eventId)));
}
/*个人获奖设置*/
@At
@Ok("json")
public Object grjxDo(@Param("grades") SchoolAssignGrades[] grades, String unitid, String eventId) {
/*hdXhdService.clear("hd_hdcj", Cnd.where("hdid", "=", nutMap.getString("hdid")));
List<NutMap> list = Json.fromJsonAsList(NutMap.class, nutMap.getString("data"));
for (int i = 0; i < list.size(); i++) {
NutMap cc = list.get(i);
hdXhdService.insert("hd_hdcj", Chain.make("id", R.UU32()).add("hdid", cc.getString("hdid")).add("userid", cc.getString("userid")).add("mc", cc.getString("mc")).add("unitid", cc.getString("unitid")).add("hdms", cc.getString("hdms")).add("jpmc", cc.getString("jpmc")).add("money", cc.getString("money")).add("jplx", cc.getString("jplx")));
}
if (nutMap.getString("save").equals("1")) {
hdXhdService.update(Chain.make("sftj", "1"), Cnd.where("id", "=", nutMap.getString("hdid")));
}*/
schoolAssignGradesViService.insert(grades);
return Result.success();
}
}
@@ -0,0 +1,341 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.result.Result;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.sys.services.SysMsgService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.*;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.aop.Aop;
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: Aaron
* @create: 2021-02-22 14:52
* @description: 活动信息管理
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/school/info/mange")
@RequiresAuthentication
public class ActivityInfoManageController {
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private Vi vi;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventService;
@Inject
private SysMsgService sysMsgService;
@At("")
@Ok("beetl:platform/activity/school/ActivityManage.html")
@RequiresPermissions("activity.school.info")
public void index() {
}
@At
@ViReturn
public Object pageData(PageForm page,
@Param(value = "year", required = false) Integer year,
@Param(value = "name", required = false) String name,
@Param(value = "gameStyle", required = false) String gameStyle,
@Param(value = "query", required = false) String query,
@Param(value = "activityId", required = false) String activityId,
@Param(value = "activityLevel", required = false) String activityLevel) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
cl.`name` clubName,
un.unionname,
ba.`name` activityLevelName,
school.id,
school.planId,
school.name,
school.address,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
school.unitSponsor,
school.unitJointly,
school.gameStyle,
school.funding,
school.applyWay,
school.personType,
school.activityLevel,
school.isSave,
school.activityGroupId,
school.activityCode,
school.foundDate,
school.applyType,
school.isDisabled,
(SELECT COUNT(1) FROM activity_school_apply asa WHERE asa.activityId = school.id) applyNum
FROM
activity_school school
LEFT JOIN activity_basic_settings ba ON ba.`code` = school.activityLevel
LEFT JOIN sys_union un ON un.id = school.belongUnionId
LEFT JOIN sys_club cl ON cl.id = school.belongClubId
$condition
""");
if ("one".equals(query)) {
cnd.and(new Static("now() > school.applyStartTime and now() < school.applyEndTime"));
} else if ("two".equals(query)) {
cnd.and(new Static("now() > school.applyEndTime and now() < school.startTime"));
} else if ("three".equals(query)) {
cnd.and(new Static("now() > school.startTime and now() < school.endTime"));
} else if ("four".equals(query)) {
cnd.and(new Static("now() > school.endTime"));
}
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (ShiroUtil.hasRole("H04")) {
cnd.and("school.belongUnionId", "=", Vi.getUnionId());
}
if (ShiroUtil.hasRole("club01")) {
cnd.and("school.belongClubId", "in", vi.getMangeClubStr());
}
}
cnd.andEx("school.activityLevel", "=", activityLevel);
cnd.andEx("school.gameStyle", "=", gameStyle);
cnd.andEx("YEAR(school.applyStartTime)", "=", year);
cnd.andEx("school.id", "=", activityId);
cnd.desc("school.startTime");
sql.setCondition(cnd);
return activitySchoolService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions("activity.school.info")
public Object doAdd(@Param(value = "data", required = false) ActivitySchool activitySchool, @Param(value = "events", required = false) ActivitySchoolEvent[] events) {
List<ActivityBasicUnion> activityBasicUnions = activitySchoolService.dao().query(ActivityBasicUnion.class, Cnd.where("isEnable", "=", true));
ActivityBasicUnit activityBasicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", ShiroUtil.getUnitId()));
if (activitySchool.getActivityLevel() == 40002) {
activitySchool.setBelongUnionId(activityBasicUnit.getUnionid());
}
activitySchool.setFoundDate(DateUtil.getDate());
String id = activitySchoolService.doAdd(activitySchool, events);
activityBasicUnions.forEach(v -> {
ActivityUnion activityUnion = new ActivityUnion();
activityUnion.setActivityId(id);
activityUnion.setUnionname(v.getUnionname());
activitySchoolService.insert(activityUnion);
});
List<Sys_file> image = activitySchool.getImage();
ActivityTissue activityTissue = new ActivityTissue();
activityTissue.setApplyTime(DateUtil.getDate());
activityTissue.setType(activitySchool.getActivityLevel());
activityTissue.setProjectTypeCode("50004");
activityTissue.setActivityCode(activitySchool.getActivityCode());
activityTissue.setName(activitySchool.getName());
activityTissue.setUserId(ShiroUtil.getUserId());
if (activitySchool.getActivityLevel() == 40002) {
activitySchool.setBelongUnionId(activityBasicUnit.getUnionid());
}
activityTissue.setState(3);
activityTissue.setClubId(activitySchool.getBelongClubId());
activityTissue.setAddress(activitySchool.getAddress());
activityTissue.setApplyStartTime(activitySchool.getApplyStartTime());
activityTissue.setApplyEndTime(activitySchool.getApplyEndTime());
activityTissue.setStartTime(activitySchool.getStartTime());
activityTissue.setEndTime(activitySchool.getEndTime());
activityTissue.setGroupId(activitySchool.getActivityGroupId());
activityTissue.setSignUpMethod(2);
if (image != null) {
activityTissue.setCover(image.get(0).getId());
}
activitySchoolService.insert(activityTissue);
activitySchoolService.update("activity_tissue", Chain.make("id", activitySchool.getId()), Cnd.where("id", "=", activityTissue.getId()));
activitySchoolEventService.clear(Cnd.where("eventId", "=", "allItems"));
activitySchoolEventService.clear(Cnd.where("eventId", "IS", null));
if (activitySchool.getXlFlag() != null && activitySchool.getXlFlag()) {
String time = activitySchool.getStartTime() + "" + activitySchool.getEndTime();
sysMsgService.sendMsgByActivityGroupId(activitySchool.getId(), activitySchool.getActivityGroupId(), "体育比赛活动", activitySchool.getName(), "/platform/activity/apply", "/mobile/activity/unionActivity", time);
}
return id;
}
@At
@ViReturn
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions("activity.school.info")
public Object doEdit(@Param(value = "data", required = false) ActivitySchool activitySchool,
@Param(value = "events", required = false) ActivitySchoolEvent[] events) {
ActivitySchool school = activitySchoolService.fetch(activitySchool.getId());
ActivityTissue activityTissue = activitySchoolService.dao().fetch(ActivityTissue.class,activitySchool.getId());
if (school.getActivityLevel() == 40002) {
school.setBelongUnionId(Vi.getUnionId());
}
activityTissue.setGroupId(activitySchool.getActivityGroupId());
activityTissue.setApplyStartTime(activitySchool.getApplyStartTime());
activityTissue.setApplyEndTime(activitySchool.getApplyEndTime());
activityTissue.setStartTime(activitySchool.getStartTime());
activityTissue.setEndTime(activitySchool.getEndTime());
activitySchoolService.update(activityTissue);
activitySchoolService.doEdit(activitySchool, events, school.getApplyEndTime());
activitySchoolEventService.clear(Cnd.where("eventId", "=", "allItems"));
activitySchoolEventService.clear(Cnd.where("eventId", "IS", null));
sysMsgService.deleteMsgByActivityId(activitySchool.getId());
if (activitySchool.getXlFlag() != null && activitySchool.getXlFlag()) {
String time = activitySchool.getStartTime() + "" + activitySchool.getEndTime();
sysMsgService.sendMsgByActivityGroupId(activitySchool.getId(), activitySchool.getActivityGroupId(), "体育比赛活动", activitySchool.getName(), "/platform/activity/apply", "/mobile/activity/unionActivity", time);
}
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.school.info")
public Object doDelete(String id) {
activitySchoolService.doDelete(id);
return null;
}
@At
@ViReturn
public Object findOne(String id) {
NutMap nutMap = activitySchoolService.fetch(Sqls.create("SELECT * FROM `activity_school` WHERE id = @id").setParam("id", id));
Sql sql = Sqls.create("""
SELECT
ase.*,
ae.projectType
FROM
activity_school_event ase
LEFT JOIN activity_event ae ON ae.id = ase.eventId
WHERE
ase.activityId = @activityId
""").setParam("activityId", id);
nutMap.setv("schoolEvents", activitySchoolEventService.listMap(sql));
return nutMap;
}
@Inject("ActivityEvent")
private ViService<ActivityEvent> activityEventViService;
@At
@ViReturn
public Object getEventData(String id) {
return activityEventViService.fetch(id);
}
@At
@ViReturn
public Object getEventApply(@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String[] eventId) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
ev.allName
FROM
activity_school_apply asa LEFT JOIN activity_event ev ON ev.id=asa.eventId
$condition
""");
cnd.and("asa.activityId", "=", activityId);
cnd.and("asa.eventId", "in", eventId);
cnd.groupBy("ev.allName");
sql.setCondition(cnd);
return activityEventViService.list(sql);
}
@At
@ViReturn
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions("activity.school.info")
public Object doAssignmentDate(@Param(value = "eventIds", required = false) String[] eventIds,
ActivitySchoolEvent[] events) {
for (ActivitySchoolEvent event : events) {
ActivityEvent activityEvent = activityEventViService.fetch(event.getEventId());
if (!event.getEventId().equals("allItems")) {
event.setStartAgeDate(activityEvent.getStartAgeDate());
event.setEndAgeDate(activityEvent.getEndAgeDate());
activitySchoolEventService.updateIgnoreNull(event);
}
}
return Result.success(events);
}
@At
@ViReturn
public Object getUnionLimit(@Param(value = "activityScopeId", required = false) String activityScopeId) {
Sql sql = Sqls.create("""
SELECT
gh.id,
gh.unionname,
gh.unioncode,
(select count(1) from `user` where unionid = gh.id $cnd) as teacherCount,
NULL as ratio,
NULL as limitCount
FROM
sys_union gh
order by gh.unioncode
""");
if (StrUtil.isNotBlank(activityScopeId)) {
sql.setVar("cnd", "AND id in (select userId from activity_user_scope where groupId = '" + activityScopeId + "')");
}
return activitySchoolEventService.listMap(sql);
}
@At
@ViReturn
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object activityStatusChange(String id, Boolean isDisabled) {
activitySchoolService.update(Chain.make("isDisabled", isDisabled), Cnd.where("id", "=", id));
activitySchoolService.dao().update(ActivityTissue.class, Chain.make("isDisabled", isDisabled), Cnd.where("id", "=", id));
return null;
}
}
@@ -0,0 +1,77 @@
package io.v.nutz.zhgh.activity.controller.school;
import io.v.nutz.zhgh.activity.models.ActivityPlan;
import io.v.nutz.zhgh.activity.services.ActivityPlanService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
/**
* @author: Aaron
* @create: 2021-03-01 14:26
* @description: 活动计划
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/school/plan")
@RequiresAuthentication
public class ActivityPlanController {
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private ActivityPlanService activityPlanService;
@At("")
@Ok("beetl:platform/activity/school/ActivityPlan.html")
@RequiresPermissions("activity.plan")
public void index() {
}
@At
@ViReturn
public Object pageData(PageForm page, @Param(value = "year",required = false) String year,
@Param(value = "name",required = false) String name) {
CndPlus cnd = CndPlus.create();
cnd.andEx("ap.type", "=", 1);
return activityPlanService.pageData(page, year, name, null, cnd);
}
@At
@ViReturn
public Object doAdd(String name,String time,String content, String event) {
ActivityPlan activityPlan = new ActivityPlan();
activityPlan.setName(name);
activityPlan.setTime(time);
activityPlan.setContent(content);
activityPlan.setEvent(event);
activityPlan.setType("1");
activityPlanService.insert(activityPlan);
return null;
}
@At
@ViReturn
public Object doEdit(ActivityPlan activityPlan) {
activityPlanService.updateIgnoreNull(activityPlan);
return null;
}
@At
@ViReturn
public Object doDelete(String id) {
activityPlanService.delete(id);
return null;
}
}
@@ -0,0 +1,241 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.activity.models.ActivityResults;
import io.v.nutz.zhgh.activity.models.ActivitySchoolEvent;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.models.Sys_union;
import io.v.nutz.sys.services.SysUnionService;
import lombok.Data;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author zhf
* @date 2021/5/27 15:57
* @description 奖品名单
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/prize/list")
@RequiresAuthentication
public class ActivityPrizeListController {
@At("")
@Ok("beetl:platform/activity/school/ActivityPrize.html")
@RequiresPermissions("activity.prize.list")
public void index() {
}
@Inject
private SysUnionService sysUnionService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> eventViService;
@Inject("ActivityResults")
private ViService<ActivityResults> resultsViService;
private static NutMap nullMap = NutMap.NEW();
;
/**
* 各个分工会奖品
*
* @param activityId
* @param unionId
* @return
*/
@At
@ViReturn
public Object getPrizes(Integer year, String activityId, String unionId) {
Dao dao = resultsViService.dao();
// List<ActivitySchool> activitySchoolList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year));
//
// Optional<ActivitySchool> ydhOptional = activitySchoolList.stream().filter(v -> v.getName().contains("运动会")).findFirst();
//
// if (ydhOptional.isEmpty()) {
// return Map.of("团体项目", nullMap, "男子项目", nullMap, "女子项目", nullMap, "其他", nullMap);
// }
Sql sql = Sqls.create("""
SELECT
acr.activityId,
ace.allName,
acr.userId,
acr.ranking,
acr.numberOfPeople,
ace.isMenWomen,
acs.`name` as activityName,
u.username,
RIGHT(ace.allName,4) xmlx,
LEFT(ace.allName,2) xblx
FROM activity_school_event acse
left join activity_school acs on acs.id = acse.activityId AND acs.id=@activityId
left join activity_event ace on ace.id = acse.eventId
left join activity_results acr on acr.eventId = acse.eventId
left join sys_user u on u.id = acr.userId
$condition
""").setParam("activityId", activityId);
Cnd cnd = Cnd.NEW();
cnd.and("acr.activityId", "=", activityId);
cnd.and("YEAR(acs.applyStartTime)", "=", year);
// cnd.and("ace.isInterest", "=", 0);
cnd.and("acr.unionId", "=", unionId);
cnd.asc("ace.allName").asc("acr.ranking");
sql.setCondition(cnd);
sql.setCallback(Sqls.callback.maps());
dao.execute(sql);
List<NutMap> allList = sql.getList(NutMap.class);
if (Lang.isEmpty(allList)) {
return Map.of("团体项目", nullMap, "男子项目", nullMap, "女子项目", nullMap, "其他", nullMap);
}
// List<NutMap> yhdlist = allList.stream().filter(v -> v.getString("activityId").equals(ydhOptional.get().getId())).collect(Collectors.toList());
// List<NutMap> otherList = allList.stream().filter(v -> !v.getString("activityId").equals(ydhOptional.get().getId())).collect(Collectors.toList());
Map maleMap = NutMap.NEW();
Map femaleMap = NutMap.NEW();
Map teamMap = NutMap.NEW();
Map otherMap = NutMap.NEW();
// if (Lang.isNotEmpty(yhdlist)) {
Map<String, List<NutMap>> xmlxList = allList.stream().collect(Collectors.groupingBy(v -> v.getString("xmlx")));
if (Lang.isNotEmpty(xmlxList.get("(团体)"))) {
teamMap = xmlxList.get("(团体)").stream().collect(Collectors.groupingBy(v -> v.getString("allName")));
}
if (Lang.isNotEmpty(xmlxList.get("(单项)")) && xmlxList.get("(单项)").stream().anyMatch(v -> v.getString("xblx").equals("男子"))) {
maleMap = xmlxList.get("(单项)").stream().filter(v -> v.getString("xblx").equals("男子")).collect(Collectors.groupingBy(h -> h.getString("allName")));
}
if (Lang.isNotEmpty(xmlxList.get("(单项)")) && xmlxList.get("(单项)").stream().anyMatch(v -> v.getString("xblx").equals("女子"))) {
femaleMap = xmlxList.get("(单项)").stream().filter(v -> v.getString("xblx").equals("女子")).collect(Collectors.groupingBy(h -> h.getString("allName")));
}
return Map.of("团体项目", teamMap, "男子项目", maleMap, "女子项目", femaleMap, "其他", otherMap);
}
@At
@ViReturn
public Object summary(String activityId) {
NutMap map = new NutMap();
List<NutMap> result = new ArrayList<>();
//查询所有的工会
List<Sys_union> query = sysUnionService.query();
for (Sys_union sys_union : query) {
NutMap nutMap = new NutMap();
//记录总人数
int totalPeople = 0;
nutMap.setv("unionname", sys_union.getUnionname());
for (int i = 1; i <= 8; i++) {
Sql sql = Sqls.create("""
SELECT
IFNULL((
SELECT
COUNT( 1 )
FROM
activity_results ar1
WHERE
ar1.activityId = ar2.activityId
AND ar1.ranking = ar2.ranking
AND ar1.isTeamPersonal = 1
AND ar1.unionId = ar2.unionId
),
0
) num,
IFNULL( SUM( numberOfPeople ), 0 ) numberOfPeople
FROM
activity_results ar2 $condition
""");
CndPlus cnd = new CndPlus();
cnd.and("ar2.activityId", "=", activityId);
cnd.and("ar2.ranking", "=", i);
cnd.and("ar2.unionId", "=", sys_union.getId());
cnd.and("ar2.isTeamPersonal", "in", "1,2");
sql.setCondition(cnd);
int number = 0;
List<Record> list = resultsViService.list(sql);
if (list.size() > 0) {
number = list.get(0).getInt("num") + list.get(0).getInt("numberOfPeople");
}
totalPeople += number;
if (i == 1) {
nutMap.setv("one", number);
} else if (i == 2) {
nutMap.setv("two", number);
} else if (i == 3) {
nutMap.setv("three", number);
} else if (i == 4) {
nutMap.setv("four", number);
} else if (i == 5) {
nutMap.setv("fives", number);
} else if (i == 6) {
nutMap.setv("six", number);
} else if (i == 7) {
nutMap.setv("seven", number);
} else if (i == 8) {
nutMap.setv("eight", number);
}
}
nutMap.setv("totalPeople", totalPeople);
result.add(nutMap);
}
map.put("score", result);
return Result.success().addData(map);
}
@Data
private class Ranking {
private int one;
private int two;
private int three;
private int four;
private int fives;
private int six;
private int seven;
private int eight;
}
}
@@ -0,0 +1,472 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.sys.models.*;
import io.v.nutz.sys.services.SysClubService;
import io.v.nutz.sys.services.SysUnionService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.controller.school.constant.SchoolActivityApplyExportEntity;
import io.v.nutz.zhgh.activity.models.*;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
import org.nutz.trans.Molecule;
import org.nutz.trans.Trans;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2021-03-05 10:18
* @description: 报名信息阅览
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/reading")
@RequiresAuthentication
public class ActivityReadingController {
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@Inject
private SysUnionService sysUnionService;
@Inject
private SysClubService sysClubService;
@Inject
private BaseService baseService;
@Inject
private Vi vi;
@At("")
@Ok("beetl:platform/activity/school/ActivityReading.html")
@RequiresPermissions("activity.reading")
public void index() {
}
@At
@ViReturn
public Object getNearActivity(Integer year, String activityLevel) {
Cnd cnd = Cnd.NEW();
cnd.and("close", "!=", true);
cnd.and("YEAR(startTime)", "=", year);
cnd.and("activityLevel", "=", activityLevel);
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (activityLevel.equals("40002")) {
cnd.and("belongUnionId", "=", getUnionId());
}
if (activityLevel.equals("40003")) {
cnd.and("belongClubId", "in", vi.getMangeClubStr());
}
}
return activitySchoolService.query(cnd.desc("applyEndTime"));
}
@At
@ViReturn
public Object getData(String id, Integer year, String activityLevel) {
String unitId = getUnitId();
String unionid = getUnionId();
ActivityBasicUnit basicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", unitId));
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionid()));
ActivitySchool activitySchool = activitySchoolService.fetch(id);
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
app.*,
school.`name` activityName,
school.applyType applyType,
school.belongUnionId belongUnionId,
school.belongClubId belongClubId,
team.`name` team,
unit.`name` unitname,
ev.allName,
ev.id evid,
ev.projectType
FROM
activity_school_apply app
LEFT JOIN activity_school school ON school.id = app.activityId
LEFT JOIN activity_school_team team ON app.teamId = team.id
LEFT JOIN activity_event ev ON ev.id = app.eventId
LEFT JOIN sys_unit unit ON app.unitId = unit.id
$condition
""");
cnd.and("app.activityId", "=", id);
cnd.and("app.status", "=", 2);
sql.setCondition(cnd);
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (ShiroUtil.hasAnyRoles("H04,gh08") && activityLevel.equals("40002")) {
cnd.and("app.activityUnionId", "=", basicUnit.getUnionid());
cnd.and("school.belongUnionId", "=", basicUnit.getUnionid());
}
if (ShiroUtil.hasAnyRoles("H02,") && activityLevel.equals("40003")) {
cnd.and("school.belongClubId", "in", vi.getMangeClubStr());
}
}
cnd.desc("ev.allName").asc("ev.projectType").asc("team.`name`");
List<NutMap> applies = activitySchoolApplyService.listMap(sql);
List<NutMap> apply = new ArrayList();
Cnd unionCnd = Cnd.NEW();
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (ShiroUtil.hasAnyRoles("H04,gh08")) {
unionCnd.and("id", "=", basicUnit.getUnionid());
}
}
if (activityLevel.equals("40002")) {
unionCnd.and("id", "=", activitySchool.getBelongUnionId());
}
unionCnd.and("isEnable", "=", true);
unionCnd.asc("unioncode");
if (!activityLevel.equals("40003")) {
List<ActivityBasicUnion> unions = sysUnionService.dao().query(ActivityBasicUnion.class, unionCnd);
for (ActivityBasicUnion union : unions) {
String unionId = union.getId();
NutMap map = new NutMap();
List<NutMap> applyList = applies.stream().filter(v -> StrUtil.isNotBlank(v.getString("activityUnionId")) &&
v.getString("activityUnionId").equals(unionId)).collect(Collectors.toList());
List<String> unionNameList = applyList.stream().map(a -> a.getString("unionName")).distinct().collect(Collectors.toList());
applyList.forEach(a -> {
if (!a.getString("unionId").equals(unionId)) {
a.setv("bz", String.join(",", unionNameList));
}
});
map.setv("id", unionId);
map.setv("unionname", union.getUnionname());
map.setv("unioncode", union.getUnioncode());
map.setv("num", applyList.size());
map.setv("apply", applyList);
apply.add(map);
}
} else {
NutMap map = new NutMap();
Sys_club sysClub = sysClubService.fetch(cnd.where("id", "=", activitySchool.getBelongClubId()));
map.setv("id", sysClub.getId());
map.setv("unionname", sysClub.getName());
map.setv("unioncode", sysClub.getCode());
map.setv("num", applies.size());
map.setv("apply", applies);
apply.add(map);
}
return apply;
}
private String getUnitId() {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_unit unit = user.getUnit();
String unitId = unit == null ? "" : unit.getId();
return unitId;
}
private String getUnionId() {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
Sys_union unit = user.getUnion();
String unionId = unit == null ? "" : unit.getId();
return unionId;
}
@At
@Ok("void")
@ViReturn
@RequiresAuthentication
public void doExportByEnroll(String id, String unionId, HttpServletResponse response) throws Exception {
//查询该活动的信息
ActivitySchool school = activitySchoolService.fetch(id);
Sys_union sysUnion = sysUnionService.fetch(unionId);
//领队
ActivitySchoolApply leader = activitySchoolApplyService.fetch(Cnd.where("unionLeader", "=", 1).and("activityId", "=", id).and("unionId", "=", unionId));
//教练
ActivitySchoolApply coach = activitySchoolApplyService.fetch(Cnd.where("unionCoach", "=", 1).and("activityId", "=", id).and("unionId", "=", unionId));
//团长
ActivitySchoolApply head = activitySchoolApplyService.fetch(Cnd.where("unionHead", "=", 1).and("activityId", "=", id).and("unionId", "=", unionId));
Sql sql = Sqls.create("""
SELECT
apply.loginname,
apply.username,
apply.sex,
IF(apply.sex='男',1,2) AS sexOrder,
`event`.allName,
groupSetting.`name` AS groupName,
projectNameSetting.location AS projectNameLocation,
IF ( distanceSetting.`name` is NULL, 0,distanceSetting.`name`) AS distance,
(case groupSetting.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 else 5 end) AS groupNameOrder,
CONCAT( IF ( distanceSetting.`name` is NULL, '', CONCAT( distanceSetting.`name`, '米' )), projectNameSetting.`name`) AS projectName,
apply.awardsMode
FROM
`activity_school_apply` apply
LEFT JOIN activity_event `event` ON `event`.id = apply.eventId
LEFT JOIN activity_basic_settings groupSetting ON groupSetting.id = `event`.competitionCategory
LEFT JOIN activity_basic_settings projectNameSetting ON projectNameSetting.id = `event`.sports
LEFT JOIN activity_basic_settings distanceSetting ON distanceSetting.id = `event`.distance
WHERE
apply.activityId = @id
AND apply.unionId = @unionId
AND JSON_CONTAINS(apply.identity,JSON_Array( '1' ))
ORDER BY
FIELD( apply.sex, '男', '女 ' ),
FIELD(groupSetting.`name`,'甲组','乙组','丙组','丁组'),
projectNameSetting.location DESC
""");
sql.setParam("id", id).setParam("unionId", unionId);
List<NutMap> list = activitySchoolApplyService.listMap(sql);
Map<String, List<NutMap>> loginnameMap = list.stream().collect(Collectors.groupingBy(v -> v.getString("loginname")));
List<SchoolActivityApplyExportEntity> exportList = new ArrayList<>();
loginnameMap.forEach((k, v) -> {
SchoolActivityApplyExportEntity entity = new SchoolActivityApplyExportEntity();
for (int i = 0; i < v.size(); i++) {
switch (i) {
case 0 -> {
if (v.get(i).getInt("awardsMode") == 1) {
entity.setUserName(v.get(i).getString("username"));
entity.setSex(v.get(i).getString("sex"));
// entity.setGroupName(v.get(i).getString("groupName"));
entity.setSexOrder(v.get(i).getInt("sexOrder"));
} else {
entity.setUserName(sysUnion.getUnionname());
entity.setSex(null);
// entity.setGroupName("团体");
entity.setSexOrder(3);
}
entity.setGroupName(v.get(i).getString("groupName"));
entity.setAwardsMode(v.get(i).getInt("awardsMode"));
entity.setGroupNameOrder(v.get(i).getInt("groupNameOrder"));
entity.setProjectNameOne(v.get(i).getString("projectName"));
entity.setProjectNameLocation(v.get(i).getInt("projectNameLocation"));
entity.setDistance(v.get(i).getInt("distance"));
}
case 1 -> entity.setProjectNameTwo(v.get(i).getString("projectName"));
case 2 -> entity.setProjectNameThree(v.get(i).getString("projectName"));
case 3 -> entity.setProjectNameFour(v.get(i).getString("projectName"));
case 4 -> entity.setProjectNameFive(v.get(i).getString("projectName"));
case 5 -> entity.setProjectNameSix(v.get(i).getString("projectName"));
}
}
exportList.add(entity);
});
/**
* 排序顺序
* 1.单人还是团体
* 2.性别
* 3.组别
* 4.项目location 对应activity_basic_settings location
* 5.距离 有些项目为空 为空的默认给0 对应activity_basic_settings distance
*/
List<SchoolActivityApplyExportEntity> sortedExportList = exportList.stream().sorted(
Comparator.comparing(SchoolActivityApplyExportEntity::getAwardsMode)
.thenComparing(SchoolActivityApplyExportEntity::getSexOrder)
.thenComparing(SchoolActivityApplyExportEntity::getGroupNameOrder)
.thenComparing(SchoolActivityApplyExportEntity::getProjectNameLocation)
.thenComparing(SchoolActivityApplyExportEntity::getDistance)
).collect(Collectors.toList());
ViTool.excelResponse(response, school.getName() + "报名人员名单.xlsx");
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
exportParams.setTitle("参赛队名:" + sysUnion.getUnionname() + " 团长:" + (head != null ? head.getUsername() : "暂无") + ",领队:" + (leader != null ? leader.getUsername() : "暂无") + ",教练:" + (coach != null ? coach.getUsername() : "暂无"));
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, SchoolActivityApplyExportEntity.class, sortedExportList);
ServletOutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.close();
}
@At
@RequiresAuthentication
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
public Object importUserActivitys(TempFile file, String activityId) {
try {
Trans.exec(new Molecule<String>() {
@Override
public void run() {
List<ActivityImport.applyUser> applyUsers = ExcelImportUtil.importExcel(file.getFile(), ActivityImport.applyUser.class, new ImportParams());
applyUsers.forEach(v -> {
//首先查询有没有这个人
User user = baseService.dao().fetch(User.class, Cnd.where("loginname", "=", v.getLoginName()));
if (user == null) {
setObj(v.getLoginName() + "此用户不存在请检查");
throw new RuntimeException(v.getLoginName() + "此用户不存在请检查");
}
if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H10")) {
if (!user.getUnionid().equals(getUnionId())) {
setObj(v.getLoginName() + "此用户不是本工会人员");
throw new RuntimeException(v.getLoginName() + "此用户不是本工会人员");
}
}
//根据code查询有没有这个项目
ActivityEvent activityEvent = baseService.dao().fetch(ActivityEvent.class, Cnd.where("projectCode", "=", v.getProjectCode()));
//查询活动单位
ActivityBasicUnit activityBasicUnit = baseService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", user.getUnitid()));
if (activityBasicUnit == null) {
setObj("请检查" + user.getLoginname() + "的活动单位是否正确");
throw new RuntimeException("请检查" + user.getLoginname() + "的活动单位是否正确");
}
//查询活动工会
ActivityBasicUnion basicUnion = activitySchoolService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", activityBasicUnit.getUnionid()));
if (basicUnion == null) {
setObj("请检查" + user.getLoginname() + "的活动单位:" + activityBasicUnit.getName() + "是否有活动工会");
throw new RuntimeException("请检查" + user.getLoginname() + "的活动单位:" + activityBasicUnit.getName() + "是否有活动工会");
}
ActivitySchoolApply activitySchoolApply = new ActivitySchoolApply();
activitySchoolApply.setActivityId(activityId);
activitySchoolApply.setUnitId(user.getUnitid());
activitySchoolApply.setUnionId(user.getUnionid());
activitySchoolApply.setApplyUser(ShiroUtil.getUserId());
activitySchoolApply.setUserId(user.getId());
activitySchoolApply.setLoginname(user.getLoginname());
activitySchoolApply.setUsername(user.getUsername());
activitySchoolApply.setSex(user.getSex());
activitySchoolApply.setMobile(user.getMobile());
activitySchoolApply.setApplyDate(DateUtil.getDate());
activitySchoolApply.setStatus(2);
activitySchoolApply.setUnitname(user.getUnitname());
activitySchoolApply.setActivityUnionId(basicUnion.getId());
activitySchoolApply.setActivityUnionName(basicUnion.getUnionname());
//判断是否有除运动员以外的身份
if (v.getIdentity() != null && v.getIdentity().equals("教练")) {
activitySchoolApply.setUnionCoach(true);
} else if (v.getIdentity() != null && v.getIdentity().equals("领队")) {
activitySchoolApply.setUnionLeader(true);
} else if (v.getIdentity() != null && v.getIdentity().equals("团长")) {
activitySchoolApply.setUnionHead(true);
} else if (v.getIdentity() != null && v.getIdentity().equals("工作人员")) {
activitySchoolApply.setUnionStaff(true);
}
if (v.getProjectCode() == null && v.getIdentity() != null) {
//如果这个人没有报名的项目并且有职位,说明这个人不是运动员,直接加入数据
baseService.insert(activitySchoolApply);
} else {
//否则是运动员
// Integer identity = getIdentity(v.getIdentity());
// activitySchoolApply.setIdentity(List.of(String.valueOf(identity)));
if (activityEvent == null) {
setObj("请检查" + v.getProjectCode() + "项目编号是否存在");
throw new RuntimeException("请检查" + v.getProjectCode() + "项目编号是否存在");
}
//然后在查询这个活动有没有这个项目
ActivitySchoolEvent schoolEvent = baseService.dao().fetch(ActivitySchoolEvent.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", activityEvent.getId()));
if (schoolEvent == null) {
setObj(v.getProjectCode() + "项目编号在此活动中没有,请检查数据是否正确");
throw new RuntimeException(v.getProjectCode() + "项目编号在此活动中没有,请检查数据是否正确");
}
//查询这个人在这次活动的项目中有没有报过,有报过就删除再添加
ActivitySchoolApply schoolApply = baseService.dao().fetch(ActivitySchoolApply.class, Cnd.where("activityId", "=", activityId).and("userId", "=", user.getId()).and("eventId", "=", schoolEvent.getEventId()));
if (schoolApply != null) {
baseService.dao().delete(ActivitySchoolApply.class, schoolApply.getId());
}
//查询这个活动下的项目第一个小队是多少
ActivitySchoolTeam schoolTeam = baseService.dao().fetch(ActivitySchoolTeam.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", schoolEvent.getEventId()).asc("location"));
if (schoolTeam == null && activityEvent.getProjectType().equals("2")) {
setObj("请检查" + v.getProjectCode() + "编号项目下是否存在小队");
throw new RuntimeException("请检查" + v.getProjectCode() + "编号项目下是否存在小队");
}
activitySchoolApply.setEventId(schoolEvent.getEventId());
activitySchoolApply.setAwardsMode(activityEvent.getProjectType());
if (activityEvent.getProjectType().equals("2")) {
activitySchoolApply.setTeamId(schoolTeam.getId());
activitySchoolApply.setTeam(schoolTeam.getName());
}
activitySchoolApply.setIdentity(List.of(String.valueOf(1)));
baseService.insert(activitySchoolApply);
}
});
}
});
return Result.success();
} catch (Throwable e) {
return Result.error(e.getMessage());
}
}
private Integer getIdentity(String identity) {
if (identity.equals("运动员")) {
return 1;
} else if (identity.equals("教练")) {
return 2;
} else if (identity.equals("领队")) {
return 3;
} else if (identity.equals("处级领导")) {
return 4;
} else if (identity.equals("替补")) {
return 5;
}
return 1;
}
}
@@ -0,0 +1,227 @@
package io.v.nutz.zhgh.activity.controller.school;
import io.v.nutz.zhgh.activity.models.ActivitySchoolEvent;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.RCSCloudAPI;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.services.SysUnionService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2021-03-03 17:27
* @description: 活动报名提醒
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/remind")
@RequiresAuthentication
public class ActivityRemindController {
@Inject
private ActivitySchoolService activitySchoolService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventViService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@Inject
private SysUnionService sysUnionService;
@Inject
private Vi vi;
@At("")
@Ok("beetl:platform/activity/school/ActivityRemind.html")
@RequiresPermissions("activity.remind")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.remind")
public Object pageData(PageForm page, @Param(value = "name", required = false) String name,
@Param(value = "activityId", required = false) String activityId) {
Sql sql = Sqls.create("""
SELECT
school.id,
school.planId,
school.`name`,
school.address,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
school.unitSponsor,
school.unitJointly,
school.gameStyle,
school.funding,
school.applyWay,
school.personType,
school.activityLevel,
(SELECT COUNT(1) FROM activity_school_apply asa WHERE asa.activityId = school.id) applyNum
FROM
activity_school school
$condition
""");
CndPlus cnd = CndPlus.create();
cnd.and("school.close", "!=", true);
cnd.and("school.isSave", "!=", true);
cnd.and(new Static("CURRENT_DATE() >= school.applyStartTime AND CURRENT_DATE() <= school.applyEndTime"));
cnd.andEx("school.id", "=", activityId);
if (Strings.isNotBlank(name)) {
cnd.where().andLike("school.name", name);
}
cnd.desc("school.startTime");
sql.setCondition(cnd);
return activitySchoolService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions("activity.remind")
public Object getUnionRemind(String activityId) {
Sql sql = Sqls.create("""
SELECT
un.id,
un.unionname,
(
SELECT
GROUP_CONCAT(su.mobile)
FROM
sys_user_role sur
LEFT JOIN sys_user su ON su.id = sur.userId
LEFT JOIN sys_role sr ON sr.id = sur.roleId
WHERE
sur.unionid = un.id
AND sr.id = @roleId
) telephone,
(
SELECT
GROUP_CONCAT(su.username)
FROM
sys_user_role sur
LEFT JOIN sys_user su ON su.id = sur.userId
LEFT JOIN sys_role sr ON sr.id = sur.roleId
WHERE
sur.unionid = un.id
AND sr.id = @roleId
) unionleader,
( SELECT COUNT( 1 ) FROM activity_school_apply asp WHERE asp.unionId = un.id AND asp.activityId = @activityId ) num
FROM
`sys_union` un
ORDER BY
un.unioncode
""").setParam("roleId", Roles.UNION_MANGER).setParam("activityId", activityId);
List<Record> unions = sysUnionService.list(sql);
unions.forEach(v -> {
v.set("users", activitySchoolApplyService.query(Cnd.where("unionId", "=", v.getString("id")).and("activityId", "=", activityId).desc("identity")));
});
return unions;
}
@At
@ViReturn
@RequiresPermissions("activity.remind")
public Object sendRemind(@Param(value = "phone", required = false) String phone,
@Param(value = "unionname", required = false) String unionname) {
String[] pe = phone.split(",");
for (String p : pe) {
RCSCloudAPI.sendTplSms("399ac7a7901c49df9f5939d0f10d566b", p, "@1@=" + unionname + "", "");
}
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.remind")
public Object sendAllRemind(String activityId) {
Sql sql = Sqls.create("""
SELECT
un.id,
un.unionname,
(
SELECT
su.mobile
FROM
sys_user_role sur
LEFT JOIN sys_user su ON su.id = sur.userId
LEFT JOIN sys_role sr ON sr.id = sur.roleId
WHERE
sur.unionid = un.id
AND sr.id = @roleId
) telephone,
( SELECT COUNT( 1 ) FROM activity_school_apply asp WHERE asp.unionId = un.id AND asp.activityId = @activityId ) num
FROM
`sys_union` un
ORDER BY
un.unioncode
""").setParam("roleId", Roles.UNION_MANGER).setParam("activityId", activityId);
List<Record> unions = sysUnionService.list(sql);
List<Record> collect = unions.stream().filter(v -> {
return v.getInt("num") <= 0 && v.getString("telephone") != null;
}).collect(Collectors.toList());
collect.forEach(v -> {
RCSCloudAPI.sendTplSms("399ac7a7901c49df9f5939d0f10d566b", v.getString("telephone"), "@1@=" + v.getString("unionname") + "", "");
});
return null;
}
@At
@ViReturn
public Object getActivitys() {
Cnd cnd = Cnd.NEW();
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (ShiroUtil.hasRole("H04")) {
cnd.and("belongUnionId", "=", Vi.getUnionId());
}
if (ShiroUtil.hasRole("club01")) {
cnd.and("belongClubId", "in", vi.getMangeClubStr());
}
}
return activitySchoolService.query(cnd);
}
}
@@ -0,0 +1,315 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.activity.models.ActivityBasicUnion;
import io.v.nutz.zhgh.activity.models.ActivityBasicUnit;
import io.v.nutz.zhgh.activity.models.ActivityResults;
import io.v.nutz.zhgh.activity.models.ActivitySchoolApply;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.models.Sys_user;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.crypto.hash.Sha256Hash;
import org.apache.shiro.util.ByteSource;
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.random.R;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.trans.Trans;
import java.util.Arrays;
/**
* @author zhf
* @date 2021/5/19 14:58
* @description 运动会成绩录入
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/results/input")
@RequiresAuthentication
public class ActivityResultsController {
@Inject("ActivityResults")
private ViService<ActivityResults> resultsViService;
@Inject("ActivitySchoolApply")
private ViService<ActivitySchoolApply> activitySchoolApplyViService;
@At("")
@Ok("beetl:platform/activity/school/ActivityResults.html")
@RequiresPermissions("activity.results.input")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object pageData(@Param(value = "groupName", required = false) String groupName,
PageForm page,
@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String eventId,
@Param(value = "isMenWomen", required = false) String[] isMenWomen) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
ase.id,
ase.activityId,
ase.eventId,
ae.projectType awardsMode,
ae.allName,
ae.isMenWomen,
school.`name` ,
( SELECT COUNT( 1 ) FROM activity_results ar WHERE ar.eventId = ase.eventId and ar.activityId=ase.activityId) rs
FROM
activity_school_event ase
LEFT JOIN activity_event ae ON ase.eventId = ae.id
LEFT JOIN activity_school school ON school.id = ase.activityId
LEFT JOIN activity_basic_settings abs ON abs.id=ae.competitionCategory
$condition
""");
cnd.and("ase.activityId", "=", activityId);
Vi.cndPlus(cnd, "abs.`name`", "=", groupName);
cnd.andEx("ae.id", "=", eventId);
SqlExpressionGroup sqlExpressionGroup = new SqlExpressionGroup();
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("2"))) {
sqlExpressionGroup.and("ae.isMenWomen", "=", 1);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("3"))) {
sqlExpressionGroup.or("ae.isMenWomen", "=", 2);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("4"))) {
sqlExpressionGroup.and("ae.projectType", "=", 1);
}
if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("5"))) {
sqlExpressionGroup.or("ae.projectType", "=", 2);
}
if (sqlExpressionGroup.getExps().size() > 0) {
cnd.and(sqlExpressionGroup);
}
cnd.desc("allName");
sql.setCondition(cnd);
return resultsViService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object doAdd(@Param(value = "activityResults") ActivityResults[] activityResults, String activityId, String eventId) {
resultsViService.clear(Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId));
resultsViService.insert(activityResults);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object doAddUser(ActivitySchoolApply activitySchoolApply) {
Sys_user sysUser = sysUserViService.fetch(Cnd.where("loginname", "=", activitySchoolApply.getLoginname()));
if (sysUser != null && sysUser.getLoginname().equals(activitySchoolApply.getLoginname()) && !sysUser.getUsername().equals(activitySchoolApply.getUsername())) {
return Result.error("工号已存在,请检查姓名和工号是否一致!");
}
if (sysUser == null) {
Trans.exec(() -> {
Sys_user user = new Sys_user();
user.setId(R.UU32());
user.setSalt(R.UU32());
user.setPassword(new Sha256Hash("dd3s@#2022", ByteSource.Util.bytes(R.UU32()), 1024).toHex());
user.setUsername(activitySchoolApply.getUsername());
user.setLoginname(activitySchoolApply.getLoginname());
user.setSex(activitySchoolApply.getSex());
user.setUnitid(activitySchoolApply.getUnitId());
user.setMobile(activitySchoolApply.getMobile());
sysUserViService.insert(user);
ActivityBasicUnit activityBasicUnit = activitySchoolApplyViService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", user.getUnitid()));
ActivityBasicUnion basicUnion = activitySchoolApplyViService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", activityBasicUnit.getUnionid()));
activitySchoolApply.setUserId(user.getId());
activitySchoolApply.setApplyDate(DateUtil.getDate());
activitySchoolApply.setSex(user.getSex());
activitySchoolApply.setUnitId(user.getUnitid());
activitySchoolApply.setActivityUnionId(basicUnion.getId());
activitySchoolApply.setActivityUnionName(basicUnion.getUnionname());
activitySchoolApplyViService.insert(activitySchoolApply);
});
return null;
}
ActivityBasicUnit activityBasicUnit = activitySchoolApplyViService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", sysUser.getUnitid()));
ActivityBasicUnion basicUnion = activitySchoolApplyViService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", activityBasicUnit.getUnionid()));
activitySchoolApply.setUserId(sysUser.getId());
activitySchoolApply.setApplyDate(DateUtil.getDate());
activitySchoolApply.setSex(sysUser.getSex());
activitySchoolApply.setUnitId(sysUser.getUnitid());
activitySchoolApply.setActivityUnionId(basicUnion.getId());
activitySchoolApply.setActivityUnionName(basicUnion.getUnionname());
activitySchoolApplyViService.insert(activitySchoolApply);
return null;
}
/**
* 查询个人参赛人员
*
* @param activityId
* @param eventId
* @param isMenWomen
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object getUserList(String activityId,
@Param(value = "eventId", required = false) String eventId,
@Param(value = "isMenWomen", required = false) Integer isMenWomen) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
u.id,u.username,u.loginname,u.unionId,
u.unionname,u.sex
FROM
activity_school_apply asa
LEFT JOIN `user` u ON u.id = asa.userId $condition
""");
cnd.and("asa.activityId", "=", activityId);
cnd.and("asa.eventId", "=", eventId);
cnd.and("asa.awardsMode", "=", 1);
if (isMenWomen != null && isMenWomen == 1) cnd.and("u.sex", "=", "");
if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "");
sql.setCondition(cnd);
return activitySchoolApplyViService.listMap(sql);
}
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object getUnionDetails(String activityId, String eventId, String unionId) {
return activitySchoolApplyViService.count(Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).and("unionId", "=", unionId));
}
/**
* 查询团体参赛分工会
*
* @param activityId
* @param eventId
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object getUnionList(@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String eventId) {
Sql sql = Sqls.create("""
SELECT
un.id,
un.unionname
FROM
activity_school_apply asa
LEFT JOIN sys_union un ON un.id = asa.unionId
WHERE
asa.activityId = @activityId
AND asa.eventId = @eventId
GROUP BY
un.unionname
""").setParam("activityId", activityId).setParam("eventId", eventId);
return activitySchoolApplyViService.list(sql);
}
@Inject("Sys_user")
private ViService<Sys_user> sysUserViService;
/**
* 根据活动项目性别查询有没有获奖人员
*
* @return
*/
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object getUserData(@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String eventId,
@Param(value = "isMenWomen", required = false) Integer isMenWomen) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
ar.id,
ar.userId,
ar.activityId,
ar.eventId,
u.username,
u.unionId unionId,
u.unionname,
u.sex,
ar.integral,
ar.numberOfPeople,
ar.ranking,
ar.isTeamPersonal
FROM
`activity_results` ar
LEFT JOIN `user` u ON ar.userId = u.id $condition
""");
cnd.and("ar.activityId", "=", activityId);
cnd.and("ar.eventId", "=", eventId);
if (isMenWomen != null && isMenWomen == 1) cnd.and("u.sex", "=", "");
if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "");
cnd.asc("ar.ranking");
sql.setCondition(cnd);
return resultsViService.listMap(sql);
}
@At
@ViReturn
@RequiresPermissions("activity.results.input")
public Object getUnionData(@Param(value = "activityId", required = false) String activityId,
@Param(value = "eventId", required = false) String eventId) {
Sql sql = Sqls.create("""
SELECT
ar.id,
ar.activityId,
ar.eventId,
ar.ranking,
ar.unionId,
ar.numberOfPeople,
ar.integral,
ar.isTeamPersonal
FROM
activity_results ar
WHERE
ar.isTeamPersonal = 2
AND ar.activityId = @activityId
AND ar.eventId = @eventId
ORDER BY ar.ranking asc
""").setParam("activityId", activityId).setParam("eventId", eventId);
return resultsViService.listMap(sql);
}
}
@@ -0,0 +1,98 @@
package io.v.nutz.zhgh.activity.controller.school;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* @author zhf
* @date 2021/3/4 16:39
* @description 活动审核
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/review")
@RequiresAuthentication
public class ActivityReviewController {
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@At("")
@Ok("beetl:platform/activity/school/ActivityReview.html")
@RequiresPermissions("activity.review")
public void index() {
}
@At
@ViReturn
public Object pageData(PageForm page, String name, String events) {
Sql sql = Sqls.create("""
SELECT
apply.id,
apply.loginname,
apply.username,
apply.mobile,
apply.identity,
school.id schoolId,
school.eventsId,
school.applyStartTime,
school.applyEndTime,
school.startTime,
school.endTime,
even.allName
FROM
activity_school_apply apply
LEFT JOIN activity_school school ON apply.activityId = school.id
LEFT JOIN activity_event even ON even.id = school.eventsId
$condition
""");
CndPlus cnd = CndPlus.create();
cnd.and(new Static("CURRENT_DATE() >= school.applyStartTime AND CURRENT_DATE() <= school.applyEndTime"));
cnd.andEx("school.eventsId", "=", events);
if (Strings.isNotBlank(name)) {
cnd.where().andLike("school.name", name);
}
cnd.and("apply.`status`", "=", 1);
cnd.desc("school.startTime");
sql.setCondition(cnd);
return activitySchoolService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
public Object doPassFail(String id, String status) {
Chain chain = Chain.make("status", status);
Cnd cnd = Cnd.where("id", "=", id);
return activitySchoolApplyService.update(chain, cnd);
}
}
@@ -0,0 +1,610 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.wizzer.framework.base.Result;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import io.v.nutz.zhgh.activity.models.ActivityResults;
import io.v.nutz.zhgh.activity.models.ActivitySchool;
import io.v.nutz.zhgh.activity.models.ActivitySchoolEvent;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.OfficeTemplateUtil;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.service.ViService;
import io.v.nutz.sys.models.Sys_union;
import io.v.nutz.sys.services.SysUnionService;
import io.v.nutz.base.utils.ViTool;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
* @author zhf
* @date 2021/5/24 14:12
* @description 运动会成绩统计
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/score/statistics")
@RequiresAuthentication
public class ActivityScoreStatisticsController {
@Inject
private SysUnionService sysUnionService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> eventViService;
@Inject("ActivityResults")
private ViService<ActivityResults> resultsViService;
@Inject("ActivitySchool")
private ViService<ActivitySchool> schoolViService;
@Inject
private OfficeTemplateUtil officeTemplateUtil;
@At("")
@Ok("beetl:platform/activity/school/ScoreStatistics.html")
@RequiresPermissions("activity.score.statistics")
public void index() {
}
@At
@ViReturn
public Object isMaleFemale(String activityId, String sex, Integer awardsMode) {
NutMap map = new NutMap();
List<NutMap> result = new ArrayList<>();
//查询所有的工会
List<Sys_union> query = sysUnionService.query();
CndPlus cndX = new CndPlus();
//查询所有的项目
Sql sqlX = Sqls.create("""
SELECT
ev.id,
ev.eventId,
ba.`name` baname,
eve.projectType awardsMode,
eve.allName label,
eve.isMenWomen
FROM
activity_school_event ev
LEFT JOIN activity_event eve ON ev.eventId = eve.id
LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition
""");
cndX.and("ev.activityId", "=", activityId);
if (awardsMode < 3) {
cndX.and("eve.projectType", "=", awardsMode);
cndX.and("eve.isInterest", "=", false);
cndX.and("eve.isMenWomen", "=", sex.equals("") ? 1 : 2);
}
if (awardsMode == 3) {
cndX.and("eve.isInterest", "=", true);
}
if (awardsMode == 4) {
cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("") ? 1 : 2).or("eve.isMenWomen", "is", null));
}
cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end"));
sqlX.setCondition(cndX);
List<Record> eventList = eventViService.list(sqlX);
//查询每个工会下每个项目的成绩
for (Sys_union sys_union : query) {
NutMap nutMap = new NutMap();
//记录总积分
double totalScore = 0;
nutMap.setv("unionname", sys_union.getUnionname());
for (Record event : eventList) {
Sql sqlC = Sqls.create("""
SELECT
IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral,
ev.allName,ev.projectType,abs.`name` AS zb,ev.isInterest
FROM
activity_results ar
LEFT JOIN activity_event ev ON ar.eventId = ev.id
LEFT JOIN activity_basic_settings abs ON abs.id=ev.competitionCategory $condition
""");
CndPlus cndC = new CndPlus();
if ((awardsMode == 1 && event.getString("awardsMode").equals("1")) || (awardsMode == 2 && event.getString("awardsMode").equals("2"))) {
cndC.and("ev.isInterest", "=", false);
cndC.and("ev.isMenWomen", "=", sex.equals("") ? 1 : 2);
} else if (awardsMode == 3) {
cndC.and("ev.isInterest", "=", true);
} else if (awardsMode == 4) {
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("") ? 1 : 2).or("ev.isMenWomen", "is", null));
}
cndC.and("ar.eventId", "=", event.getString("eventid"));
cndC.and("ar.unionid", "=", sys_union.getId());
cndC.and("ar.activityId", "=", activityId);
sqlC.setCondition(cndC);
Double score = 0.0;
List<NutMap> list = resultsViService.listMap(sqlC);
boolean isInterest = list.get(0).getBoolean("isInterest");
if (list.size() > 0) {
score = list.get(0).getDouble("integral");
}
if (list.get(0).getString("allName") != null) {
if (!isInterest) {
nutMap.setv(list.get(0).getString("allName"), score);
} else {
nutMap.setv(list.get(0).getString("allName"), score / 2);
}
}
totalScore += isInterest ? (score / 2) : score;
if (list.get(0).getString("zb") != null) {
nutMap.setv("projectType", list.get(0).getString("projectType"));
nutMap.setv("zb", list.get(0).getString("zb"));
}
}
nutMap.setv("totalScore", totalScore);
result.add(nutMap);
}
map.put("score", result);
map.put("eventList", eventList);
return Result.success().addData(map);
}
@At
@ViReturn
public Object isTopEight(String activityId, String sex, Integer awardsMode) {
NutMap map = new NutMap();
List<Record> result = new ArrayList<>();
CndPlus cndX = new CndPlus();
//查询所有的项目
Sql sqlX = Sqls.create("""
SELECT
ev.id,
ev.eventId,
ba.`name` baname,
eve.projectType awardsMode,
eve.allName label
FROM
activity_school_event ev
LEFT JOIN activity_event eve ON ev.eventId = eve.id
LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition
""");
cndX.and("ev.activityId", "=", activityId);
if (awardsMode == 1) {
cndX.and("eve.isMenWomen", "!=", sex.equals("") ? 2 : 1);
cndX.and("eve.projectType", "=", 1);
} else {
cndX.and("eve.projectType", "=", 2);
}
cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end"));
sqlX.setCondition(cndX);
List<Record> eventList = eventViService.list(sqlX);
Sql sqlC = Sqls.create("");
CndPlus cnd = new CndPlus();
if (awardsMode == 1) {
sqlC = Sqls.create("""
SELECT
CONCAT( apply.username, '(', apply.activityUnionName, ')' ) username,
ar.integral,
ar.ranking,
eve.allName
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN activity_school_apply apply ON apply.userId = ar.userId
AND ar.activityId = apply.activityId $condition
""");
cnd.and("ar.isTeamPersonal", "=", awardsMode);
cnd.and("apply.sex", "=", sex);
cnd.and("ar.activityId", "=", activityId);
cnd.and("ar.ranking", "<=", 8);
cnd.groupBy("ar.id");
} else {
sqlC = Sqls.create("""
SELECT
CONCAT(sun.unionname) username,
eve.allName,ar.ranking
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN sys_union sun ON sun.id = ar.unionId $condition
""");
cnd.and("ar.isTeamPersonal", "=", awardsMode);
cnd.and("ar.activityId", "=", activityId);
cnd.and("ar.ranking", "<=", 8);
}
sqlC.setCondition(cnd);
List<Record> list = resultsViService.list(sqlC);
map.put("userList", list);
map.put("eventList", eventList);
return Result.success().addData(map);
}
@At
@ViReturn
public Object getActivitys(Integer year) {
return schoolViService.query(Cnd.where("YEAR(applyEndTime)", "=", year));
}
@At
@ViReturn
public Object isScoreTopEight(String activityId, String sex) {
NutMap map = new NutMap();
List<NutMap> result = new ArrayList<>();
CndPlus cndX = new CndPlus();
//查询所有的项目
Sql sqlX = Sqls.create("""
SELECT
ev.id,
ev.eventId,
ba.`name` baname,
eve.projectType awardsMode,
eve.allName label
FROM
activity_school_event ev
LEFT JOIN activity_event eve ON ev.eventId = eve.id
LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition
""");
cndX.and("ev.activityId", "=", activityId);
cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("") ? 1 : 2).or("eve.isMenWomen", "is", null));
cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end"));
sqlX.setCondition(cndX);
List<Record> eventList = eventViService.list(sqlX);
//查询所有的工会
List<Sys_union> query = sysUnionService.query();
for (Sys_union sys_union : query) {
NutMap nutMap = new NutMap();
//记录总积分
double totalScore = 0;
nutMap.setv("unionname", sys_union.getUnionname());
for (Record event : eventList) {
Sql sqlC = Sqls.create("""
SELECT
IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral,
ev.allName,ev.isInterest
FROM
activity_results ar
LEFT JOIN activity_event ev ON ar.eventId = ev.id $condition
""");
CndPlus cndC = new CndPlus();
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("") ? 1 : 2).or("ev.isMenWomen", "is", null));
cndC.and("ar.unionid", "=", sys_union.getId());
cndC.and("ar.eventId", "=", event.getString("eventid"));
cndC.and("ar.activityId", "=", activityId);
sqlC.setCondition(cndC);
Double score = 0.0;
List<NutMap> list = resultsViService.listMap(sqlC);
boolean isInterest = list.get(0).getBoolean("isInterest");
if (list.size() > 0) {
score = list.get(0).getDouble("integral");
}
totalScore += isInterest ? (score / 2) : score;
}
nutMap.setv("totalScore", totalScore);
result.add(nutMap);
}
map.put("score", result);
return Result.success().addData(map);
}
@At
@ViReturn
public Object getAnnualResults(Integer year) {
ArrayList<Map> resultMap = new ArrayList<>();
Dao dao = sysUnionService.dao();
List<Sys_union> unionList = sysUnionService.query();
List<ActivitySchool> activitySchoolList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year));
List<String> labelList = activitySchoolList.stream().map(v -> v.getName()).collect(Collectors.toList());
labelList.add(0, "分工会");
unionList.forEach(u -> {
NutMap unionMap = Lang.obj2nutmap(u);
AtomicReference<Double> scoreSum = new AtomicReference<>((double) 0);
activitySchoolList.forEach(x -> {
Sql sql = Sqls.create("""
SELECT sum(integral) as sumScore FROM `activity_results` ar
where ar.activityId = @activityId and ar.unionId = @unionId
""");
sql.setParam("activityId", x.getId());
sql.setParam("unionId", u.getId());
sql.setCallback(Sqls.callback.map());
dao.execute(sql);
NutMap scoreMap = (NutMap) sql.getResult();
double score = scoreMap.getDouble("sumScore");
scoreSum.updateAndGet(v -> new Double((v + score)));
unionMap.put(x.getName(), score);
});
unionMap.put("总分", scoreSum.get());
unionMap.put("分工会", unionMap.getString("unionname"));
resultMap.add(unionMap);
});
labelList.add("总分");
return Map.of("label", labelList, "score", resultMap);
}
@At
@ViReturn
public Object getYear8(Integer isMenWomen, Integer year) {
ArrayList<Map> resultMap = new ArrayList<>();
// int isMenWomen = sex.equals("男") ? 1 : 2;
Dao dao = sysUnionService.dao();
List<Sys_union> unionList = sysUnionService.query();
List<ActivitySchool> activityList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year));
List<String> activityIdList = activityList.stream().map(ActivitySchool::getId).collect(Collectors.toList());
List<String> activityNameList = activityList.stream().map(ActivitySchool::getName).collect(Collectors.toList());
List<String> eventIdList = dao.query(ActivitySchoolEvent.class, Cnd.where("activityId", "in", activityIdList)).stream().map(v -> v.getEventId()).collect(Collectors.toList());
activityNameList.add(0, "分工会");
Sql sql = Sqls.create("""
SELECT
ae.isMenWomen,
ae.isInterest,
ar.integral,
ar.unionId,
ar.activityId
FROM
activity_event ae
LEFT JOIN activity_results ar ON ar.eventId = ae.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("ae.id", "in", eventIdList);
cnd.and("ar.activityId", "in", activityIdList);
sql.setCondition(cnd);
sql.setCallback(Sqls.callback.maps());
dao.execute(sql);
List<NutMap> list = sql.getList(NutMap.class);
unionList.forEach(u -> {
NutMap unionMap = Lang.obj2nutmap(u);
AtomicReference<Double> scoreSum = new AtomicReference<>((double) 0);
activityList.forEach(a -> {
double sexScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isMenWomen") == isMenWomen && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum();
double qwScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isInterest") == 1 && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum();
scoreSum.updateAndGet(v -> new Double((double) (v + (sexScore + (qwScore * 0.5)))));
unionMap.put(a.getName(), sexScore + (qwScore * 0.5));
});
unionMap.put("总分", scoreSum.get());
unionMap.put("分工会", unionMap.getString("unionname"));
resultMap.add(unionMap);
});
activityNameList.add("总分");
return Map.of("label", activityNameList, "score", resultMap);
}
@At
@ViReturn
public void doGetYear8(HttpServletResponse response, Integer isMenWomen, Integer year) throws Exception {
List<NutMap> result = new ArrayList<>();
List<Sys_union> unionList = sysUnionService.query();
unionList.forEach(u -> {
NutMap nutMap = new NutMap();
nutMap.setv("unionname", u.getUnionname());
double score = 0;
for (int i = 1; i <= 2; i++) {
Sql sql = Sqls.create("""
SELECT
SUM( ar.integral ) score
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN activity_school `as` ON `as`.id = ar.activityId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("YEAR ( `as`.applyStartTime )", "=", year);
cnd.and("ar.unionId", "=", u.getId());
if (i == 1) {
cnd.and("eve.isMenWomen", "=", isMenWomen);
sql.setCondition(cnd);
List<NutMap> list = resultsViService.listMap(sql);
score += list.get(0).getDouble("score");
} else {
cnd.and("eve.isInterest", "=", 1);
sql.setCondition(cnd);
List<NutMap> list = resultsViService.listMap(sql);
score += list.get(0).getDouble("score") * 0.5;
}
}
nutMap.setv("score", score);
result.add(nutMap);
});
List<NutMap> scoreList = result.stream().sorted(Comparator.comparing(ActivityScoreStatisticsController::getDouble).reversed()).collect(Collectors.toList()).subList(0, 8);
for (int i = 0; i < scoreList.size(); i++) {
scoreList.get(i).put("ranking", i + 1);
}
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.newBuilder().bind("scoreList", policy).build();
HashMap<String, Object> map = new HashMap<>();
map.put("year", year);
map.put("sex", isMenWomen == 1 ? '男' : '女');
map.put("scoreList", scoreList);
String fileName = "%s年运动会%s子积分表".formatted(year, isMenWomen == 1 ? '男' : '女');
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1") + "\".docx");
XWPFTemplate.compile(officeTemplateUtil.getPath("activity_getYear8"), config).render(map).writeAndClose(response.getOutputStream());;
}
public static Double getDouble(NutMap o) {
return o.getDouble("score");
}
@At
@Ok("void")
@ViReturn
public void doExport8ByActivity(HttpServletResponse response, String activityId, Integer isMenWomen) throws Exception {
List<NutMap> result = new ArrayList<>();
List<Sys_union> unionList = sysUnionService.query();
unionList.forEach(u -> {
NutMap nutMap = new NutMap();
nutMap.setv("unionname", u.getUnionname());
double score = 0;
for (int i = 1; i <= 2; i++) {
Sql sql = Sqls.create("""
SELECT
SUM( ar.integral ) score
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN activity_school `as` ON `as`.id = ar.activityId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("activityId", "=", activityId);
cnd.and("ar.unionId", "=", u.getId());
if (i == 1) {
cnd.and("eve.isMenWomen", "=", isMenWomen);
sql.setCondition(cnd);
List<NutMap> list = resultsViService.listMap(sql);
score += list.get(0).getDouble("score");
} else {
cnd.and("eve.isInterest", "=", 1);
sql.setCondition(cnd);
List<NutMap> list = resultsViService.listMap(sql);
score += list.get(0).getDouble("score") * 0.5;
}
}
nutMap.setv("score", score);
result.add(nutMap);
});
List<NutMap> scoreList = result.stream().sorted(Comparator.comparing(ActivityScoreStatisticsController::getDouble).reversed()).collect(Collectors.toList()).subList(0, 8);
for (int i = 0; i < scoreList.size(); i++) {
scoreList.get(i).put("ranking", i + 1);
}
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.newBuilder().bind("scoreList", policy).build();
HashMap<String, Object> map = new HashMap<>();
map.put("sex", isMenWomen == 1 ? '男' : '女');
map.put("scoreList", scoreList);
String fileName = "%s子积分表".formatted(isMenWomen == 1 ? '男' : '女');
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1") + "\".docx");
XWPFTemplate.compile(officeTemplateUtil.getPath("activity_getYear8"), config).render(map, response.getOutputStream());
}
@At
@Ok("void")
@ViReturn
public void doExcelCj(String activityId, String unionId, HttpServletResponse response) throws IOException {
Sql sql = Sqls.create("""
SELECT
un.unioncode,
un.unionname,
us.loginname,
us.username,
us.sex,
eve.projectCode,
abs.`name` competitionCategoryName,
eve.allName,
ar.integral,
CEILING(
IF
( us.loginname IS NOT NULL, ar.integral, ar.integral / 2 )) jf,
ar.ranking
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN activity_basic_settings abs ON abs.id = eve.competitionCategory
LEFT JOIN activity_school_apply apply ON apply.userId = ar.userId
AND ar.activityId = apply.activityId
LEFT JOIN sys_union un ON un.id = ar.unionId
LEFT JOIN sys_user us ON us.id = ar.userId
$condition
ORDER BY
un.unioncode ASC,
us.sex DESC,
FIELD( abs.`name`, '甲组', '乙组', '丙组', '丁组', '团体' ) ASC
""");
Cnd cnd = Cnd.NEW();
cnd.and("ar.activityId", "=", activityId);
cnd.andEX("ar.unionId", "=", unionId);
cnd.groupBy("ar.id");
sql.setCondition(cnd);
List<NutMap> list = schoolViService.listMap(sql);
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("分工会代码", "unioncode", 40));
entityList.add(new ExcelExportEntity("分工会名称", "unionname", 20));
entityList.add(new ExcelExportEntity("工号", "loginname", 20));
entityList.add(new ExcelExportEntity("姓名", "username", 20));
entityList.add(new ExcelExportEntity("性别", "sex", 20));
entityList.add(new ExcelExportEntity("项目代码", "projectCode", 20));
entityList.add(new ExcelExportEntity("组别", "competitionCategoryName", 20));
entityList.add(new ExcelExportEntity("项目名称", "allName", 40));
entityList.add(new ExcelExportEntity("成绩", "integral", 20));
entityList.add(new ExcelExportEntity("名次", "ranking", 20));
entityList.add(new ExcelExportEntity("积分", "jf", 20));
ViTool.excelResponse(response, "成绩名单.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, list);
workbook.write(response.getOutputStream());
}
}
@@ -0,0 +1,482 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import io.v.nutz.zhgh.activity.models.ActivitySchool;
import io.v.nutz.zhgh.activity.models.ActivitySchoolEvent;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.sys.models.Sys_union;
import io.v.nutz.sys.services.SysUnionService;
import io.v.nutz.base.utils.ViTool;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@IocBean
@Ok("json:full")
@At("/platform/activity/statistics/export")
@RequiresAuthentication
public class ActivityStatisticsTypeExportController {
@Inject
private SysUnionService sysUnionService;
@Inject
private BaseService baseService;
@Ok("void")
@At
public void getYear8(Integer isMenWomen, Integer year, HttpServletResponse response) {
ArrayList<Map> resultMap = new ArrayList<>();
List<Sys_union> unionList = sysUnionService.query();
List<ActivitySchool> activityList = baseService.dao().query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year));
List<String> activityIdList = activityList.stream().map(ActivitySchool::getId).collect(Collectors.toList());
List<String> activityNameList = activityList.stream().map(ActivitySchool::getName).collect(Collectors.toList());
List<String> eventIdList = baseService.dao().query(ActivitySchoolEvent.class, Cnd.where("activityId", "in", activityIdList)).stream().map(v -> v.getEventId()).collect(Collectors.toList());
activityNameList.add(0, "分工会");
Sql sql = Sqls.create("""
SELECT
ae.isMenWomen,
ae.isInterest,
ar.integral,
ar.unionId,
ar.activityId
FROM
activity_event ae
LEFT JOIN activity_results ar ON ar.eventId = ae.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("ae.id", "in", eventIdList);
cnd.and("ar.activityId", "in", activityIdList);
sql.setCondition(cnd);
List<NutMap> list = baseService.listMap(sql);
unionList.forEach(u -> {
NutMap unionMap = Lang.obj2nutmap(u);
AtomicReference<Double> scoreSum = new AtomicReference<>((double) 0);
activityList.forEach(a -> {
double sexScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isMenWomen") == isMenWomen && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum();
double qwScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isInterest") == 1 && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum();
scoreSum.updateAndGet(v -> new Double((double) (v + (sexScore + (qwScore * 0.5)))));
unionMap.put(a.getName(), sexScore + (qwScore * 0.5));
});
unionMap.put("总分", scoreSum.get());
unionMap.put("分工会", unionMap.getString("unionname"));
resultMap.add(unionMap);
});
activityNameList.add("总分");
resultMap.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("总分").toString()))).reversed());
for (int i = 0; i < resultMap.size(); i++) {
resultMap.get(i).put("名次", i + 1);
}
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("名次", "名次", 20));
activityNameList.forEach(v -> {
entityList.add(new ExcelExportEntity(v, v, 40));
});
try {
ViTool.excelResponse(response, "年度" + (isMenWomen == 1 ? "男子" : "女子") + "团体总分.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, resultMap);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@Ok("void")
@At
public void getAnnualResults(Integer year, HttpServletResponse response) {
ArrayList<Map> resultMap = new ArrayList<>();
Dao dao = sysUnionService.dao();
List<Sys_union> unionList = sysUnionService.query();
List<ActivitySchool> activitySchoolList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year));
List<String> labelList = activitySchoolList.stream().map(v -> v.getName()).collect(Collectors.toList());
labelList.add(0, "分工会");
unionList.forEach(u -> {
NutMap unionMap = Lang.obj2nutmap(u);
AtomicReference<Double> scoreSum = new AtomicReference<>((double) 0);
activitySchoolList.forEach(x -> {
Sql sql = Sqls.create("""
SELECT sum(integral) as sumScore FROM `activity_results` ar
where ar.activityId = @activityId and ar.unionId = @unionId
""");
sql.setParam("activityId", x.getId());
sql.setParam("unionId", u.getId());
sql.setCallback(Sqls.callback.map());
dao.execute(sql);
NutMap scoreMap = (NutMap) sql.getResult();
double score = scoreMap.getDouble("sumScore");
scoreSum.updateAndGet(v -> new Double((v + score)));
unionMap.put(x.getName(), score);
});
unionMap.put("总分", scoreSum.get());
unionMap.put("分工会", unionMap.getString("unionname"));
resultMap.add(unionMap);
});
labelList.add("总分");
resultMap.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("总分").toString()))).reversed());
for (int i = 0; i < resultMap.size(); i++) {
resultMap.get(i).put("名次", i + 1);
}
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("名次", "名次", 20));
labelList.forEach(v -> {
entityList.add(new ExcelExportEntity(v, v, 40));
});
try {
ViTool.excelResponse(response, "年度团体总分.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, resultMap);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@At
@Ok("void")
public void isMaleFemale(String activityId, String sex, Integer awardsMode, HttpServletResponse response) {
NutMap map = new NutMap();
List<NutMap> result = new ArrayList<>();
//查询所有的工会
List<Sys_union> query = sysUnionService.query();
CndPlus cndX = new CndPlus();
//查询所有的项目
Sql sqlX = Sqls.create("""
SELECT
ev.id,
ev.eventId,
ba.`name` baname,
eve.projectType awardsMode,
eve.allName label,
eve.isMenWomen
FROM
activity_school_event ev
LEFT JOIN activity_event eve ON ev.eventId = eve.id
LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition
""");
cndX.and("ev.activityId", "=", activityId);
if (awardsMode < 3) {
cndX.and("eve.projectType", "=", awardsMode);
cndX.and("eve.isInterest", "=", false);
cndX.and("eve.isMenWomen", "=", sex.equals("") ? 1 : 2);
}
if (awardsMode == 3) {
cndX.and("eve.isInterest", "=", true);
}
if (awardsMode == 4) {
cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("") ? 1 : 2).or("eve.isMenWomen", "is", null));
}
cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end"));
sqlX.setCondition(cndX);
List<Record> eventList = baseService.list(sqlX);
//查询每个工会下每个项目的成绩
for (Sys_union sys_union : query) {
NutMap nutMap = new NutMap();
//记录总积分
double totalScore = 0;
nutMap.setv("unionname", sys_union.getUnionname());
for (Record event : eventList) {
Sql sqlC = Sqls.create("""
SELECT
IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral,
ev.allName,ev.projectType,abs.`name` AS zb,ev.isInterest
FROM
activity_results ar
LEFT JOIN activity_event ev ON ar.eventId = ev.id
LEFT JOIN activity_basic_settings abs ON abs.id=ev.competitionCategory $condition
""");
CndPlus cndC = new CndPlus();
if ((awardsMode == 1 && event.getString("awardsMode").equals("1")) || (awardsMode == 2 && event.getString("awardsMode").equals("2"))) {
cndC.and("ev.isInterest", "=", false);
cndC.and("ev.isMenWomen", "=", sex.equals("") ? 1 : 2);
} else if (awardsMode == 3) {
cndC.and("ev.isInterest", "=", true);
} else if (awardsMode == 4) {
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("") ? 1 : 2).or("ev.isMenWomen", "is", null));
}
cndC.and("ar.eventId", "=", event.getString("eventid"));
cndC.and("ar.unionid", "=", sys_union.getId());
cndC.and("ar.activityId", "=", activityId);
sqlC.setCondition(cndC);
Double score = 0.0;
List<NutMap> list = baseService.listMap(sqlC);
boolean isInterest = list.get(0).getBoolean("isInterest");
if (list.size() > 0) {
score = list.get(0).getDouble("integral");
}
if (list.get(0).getString("allName") != null) {
if (!isInterest) {
nutMap.setv(list.get(0).getString("allName"), score);
} else {
nutMap.setv(list.get(0).getString("allName"), score / 2);
}
}
totalScore += isInterest ? (score / 2) : score;
if (list.get(0).getString("zb") != null) {
nutMap.setv("projectType", list.get(0).getString("projectType"));
nutMap.setv("zb", list.get(0).getString("zb"));
}
}
nutMap.setv("totalScore", totalScore);
result.add(nutMap);
}
result.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("totalScore").toString()))).reversed());
for (int i = 0; i < result.size(); i++) {
result.get(i).put("名次", i + 1);
}
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("名次", "名次", 20));
entityList.add(new ExcelExportEntity("分工会", "unionname", 40));
eventList.forEach(v -> {
entityList.add(new ExcelExportEntity(v.getString("label"), v.getString("label"), 40));
});
entityList.add(new ExcelExportEntity("总分", "totalScore", 40));
try {
ViTool.excelResponse(response, "分工会" + sex + "项目积分.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, result);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@At
@Ok("void")
public void isTopEight(String activityId, String sex, Integer awardsMode, HttpServletResponse response) {
NutMap map = new NutMap();
List<Record> result = new ArrayList<>();
CndPlus cndX = new CndPlus();
//查询所有的项目
Sql sqlX = Sqls.create("""
SELECT
ev.id,
ev.eventId,
ba.`name` baname,
eve.projectType awardsMode,
eve.allName label
FROM
activity_school_event ev
LEFT JOIN activity_event eve ON ev.eventId = eve.id
LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition
""");
cndX.and("ev.activityId", "=", activityId);
if (awardsMode == 1) {
cndX.and("eve.isMenWomen", "!=", sex.equals("") ? 2 : 1);
cndX.and("eve.projectType", "=", 1);
} else {
cndX.and("eve.projectType", "=", 2);
}
cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end"));
sqlX.setCondition(cndX);
List<Record> eventList = baseService.list(sqlX);
List<NutMap> nutMaps = new ArrayList<>();
for (int i = 0; i < 8; i++) {
NutMap nutMap = new NutMap();
Sql sqlC = Sqls.create("");
CndPlus cnd = new CndPlus();
if (awardsMode == 1) {
sqlC = Sqls.create("""
SELECT
CONCAT( apply.username, '(', apply.activityUnionName, ')' ) username,
ar.integral,
ar.ranking,
eve.allName
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN activity_school_apply apply ON apply.userId = ar.userId
AND ar.activityId = apply.activityId $condition
""");
cnd.and("ar.isTeamPersonal", "=", awardsMode);
cnd.and("apply.sex", "=", sex);
cnd.and("ar.activityId", "=", activityId);
cnd.and("ar.ranking", "=", i + 1);
cnd.groupBy("ar.id");
} else {
sqlC = Sqls.create("""
SELECT
CONCAT(sun.unionname) username,
eve.allName,ar.ranking
FROM
activity_results ar
LEFT JOIN activity_event eve ON ar.eventId = eve.id
LEFT JOIN sys_union sun ON sun.id = ar.unionId $condition
""");
cnd.and("ar.isTeamPersonal", "=", awardsMode);
cnd.and("ar.activityId", "=", activityId);
cnd.and("ar.ranking", "=", i + 1);
}
sqlC.setCondition(cnd);
List<Record> list = baseService.list(sqlC);
list.forEach(l -> {
nutMap.setv(l.getString("allName"), l.getString("username"));
});
nutMaps.add(nutMap);
}
for (int i = 0; i < nutMaps.size(); i++) {
nutMaps.get(i).put("名次", i + 1);
}
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("名次", "名次", 20));
eventList.forEach(v -> {
entityList.add(new ExcelExportEntity(v.getString("label"), v.getString("label"), 40));
});
String sex2 = awardsMode == 2 ? "团体" : sex.equals("") ? "男子" : "女子";
try {
ViTool.excelResponse(response, sex2 + "项目前八.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, nutMaps);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@At
@Ok("void")
public void isScoreTopEight(String activityId, String sex, HttpServletResponse response) {
NutMap map = new NutMap();
List<NutMap> result = new ArrayList<>();
CndPlus cndX = new CndPlus();
//查询所有的项目
Sql sqlX = Sqls.create("""
SELECT
ev.id,
ev.eventId,
ba.`name` baname,
eve.projectType awardsMode,
eve.allName label
FROM
activity_school_event ev
LEFT JOIN activity_event eve ON ev.eventId = eve.id
LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition
""");
cndX.and("ev.activityId", "=", activityId);
cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("") ? 1 : 2).or("eve.isMenWomen", "is", null));
cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end"));
sqlX.setCondition(cndX);
List<Record> eventList = baseService.list(sqlX);
//查询所有的工会
List<Sys_union> query = sysUnionService.query();
for (Sys_union sys_union : query) {
NutMap nutMap = new NutMap();
//记录总积分
double totalScore = 0;
nutMap.setv("unionname", sys_union.getUnionname());
for (Record event : eventList) {
Sql sqlC = Sqls.create("""
SELECT
IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral,
ev.allName,ev.isInterest
FROM
activity_results ar
LEFT JOIN activity_event ev ON ar.eventId = ev.id $condition
""");
CndPlus cndC = new CndPlus();
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("") ? 1 : 2).or("ev.isMenWomen", "is", null));
cndC.and("ar.unionid", "=", sys_union.getId());
cndC.and("ar.eventId", "=", event.getString("eventid"));
cndC.and("ar.activityId", "=", activityId);
sqlC.setCondition(cndC);
Double score = 0.0;
List<NutMap> list = baseService.listMap(sqlC);
boolean isInterest = list.get(0).getBoolean("isInterest");
if (list.size() > 0) {
score = list.get(0).getDouble("integral");
}
totalScore += isInterest ? (score / 2) : score;
}
nutMap.setv("totalScore", totalScore);
result.add(nutMap);
}
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("名次", "名次", 20));
entityList.add(new ExcelExportEntity("分工会", "unionname", 40));
entityList.add(new ExcelExportEntity("总分", "totalScore", 40));
result.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("totalScore").toString()))).reversed());
for (int i = 0; i < result.size(); i++) {
result.get(i).put("名次", i + 1);
}
try {
ViTool.excelResponse(response, "分工会" + sex + "子总分.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, result);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,73 @@
package io.v.nutz.zhgh.activity.controller.school.constant;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* TODO
*
* @Author zhf
* @Date 2022/7/11 15:48
*/
@Data
@Accessors(chain = true)
public class SchoolActivityApplyExportEntity {
@Excel(name = "号码", width = 20d)
private String number;
@Excel(name = "姓名", width = 20d)
private String userName;
@Excel(name = "性别", width = 20d)
private String sex;
private Integer sexOrder;
@Excel(name = "组别", width = 20d)
private String groupName;
private Integer groupNameOrder;
@Excel(name = "项目1", width = 20d)
private String projectNameOne;
@Excel(name = "报名成绩", width = 20d)
private String scoreOne;
@Excel(name = "项目2", width = 20d)
private String projectNameTwo;
@Excel(name = "报名成绩", width = 20d)
private String scoreTwo;
@Excel(name = "项目3", width = 20d)
private String projectNameThree;
@Excel(name = "报名成绩", width = 20d)
private String scoreThree;
@Excel(name = "项目4", width = 20d)
private String projectNameFour;
@Excel(name = "报名成绩", width = 20d)
private String scoreFour;
@Excel(name = "项目5", width = 20d)
private String projectNameFive;
@Excel(name = "报名成绩", width = 20d)
private String scoreFive;
@Excel(name = "项目6", width = 20d)
private String projectNameSix;
@Excel(name = "报名成绩", width = 20d)
private String scoreSix;
@Excel(name = "身高", width = 20d)
private String height;
@Excel(name = "体重", width = 20d)
private String weight;
@Excel(name = "备注", width = 20d)
private String remark;
@Excel(name = "身份证", width = 20d)
private String idCard;
@Excel(name = "注册号", width = 20d)
private String registerNum;
private Integer awardsMode;
private Integer projectNameLocation;
private int distance;
}
@@ -0,0 +1,164 @@
package io.v.nutz.zhgh.activity.controller.site;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.activity.models.ActivityType;
import io.v.nutz.zhgh.activity.services.ActivityCommonService;
import io.v.nutz.zhgh.activity.services.ActivityTypeService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.model.AuditState;
import io.v.nutz.base.model.AuditStateUser;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Author JyuHsin
* @Date 2022/5/11
* @Description
*/
@IocBean
@At("/platform/activity/site/type")
public class ActivityTypeController {
@Inject
private Dao dao;
@Inject
private ActivityTypeService activityTypeService;
@Inject
private ActivityCommonService activityCommonService;
@At("")
@Ok("beetl:/platform/activity/site/SiteType.html")
@RequiresPermissions("activity.site.type")
public void index(HttpServletRequest request) {
}
@At("/findAll")
@Ok("json:full")
@ViReturn
public Object findAll() {
List<ActivityType> meetingTypeList = dao.query(ActivityType.class, Cnd.NEW().asc("sortNum"));
dao.fetchLinks(meetingTypeList, "^auditStateList$");
for (ActivityType ActivityType : meetingTypeList) {
List<AuditState> auditStateList = ActivityType.getAuditStateList();
dao.fetchLinks(auditStateList, "^auditStateUserList$");
}
return meetingTypeList;
}
@At
@Ok("json:full")
@ViReturn
@RequiresPermissions("activity.site.type")
public Object findOne(String module) {
List<AuditState> auditStateList = dao.query(AuditState.class, Cnd.where("module", "=", module));
auditStateList.forEach(v -> {
v.setAuditStateUserList(dao.query(AuditStateUser.class, Cnd.where("stateId", "=", v.getStateId())));
});
return auditStateList;
}
@At("/doHandle")
@Ok("json:full")
@ViReturn
@RequiresPermissions("activity.site.type")
public Object doHandle(@Param("data") String data) {
ActivityType activityType = Json.fromJson(ActivityType.class, data);
if (null == activityType.getId()) {
int count = dao.count(AuditState.class, Cnd.where("module", "=", activityType.getModuleName()));
if (count > 0) {
return Result.error("模块名称已存在,换一个试试");
}
activityTypeService.add(activityType);
} else {
activityTypeService.edit(activityType);
}
return null;
}
@At("/delete/?")
@Ok("json:full")
@ViReturn
@RequiresPermissions("activity.site.type")
public Object delete(Integer id) {
if (id == 1) {
return Result.error("此记录不可删除");
}
ActivityType activityType = dao.fetch(ActivityType.class, id);
dao.clear(ActivityType.class, Cnd.where("id", "=", id));
dao.count(AuditState.class, Cnd.where("module", "=", activityType.getModuleName()));
return null;
}
@At("/findUserList")
@Ok("json:full")
@ViReturn
@RequiresPermissions("activity.site.type")
public Object findUserList(@Param("keyWords") String[] keyWords) {
Sql sql = Sqls.create("""
SELECT
id,
username,
loginname,
mobile,
sex,
unitname,
unionname,
unionid,
unitid
FROM
`user`
$condition
""");
Cnd cnd = Cnd.NEW();
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String keyWord : keyWords) {
seg.andLike("loginname", keyWord);
seg.orLike("username", keyWord);
}
cnd.and(seg);
sql.setCondition(cnd);
return Daos.query(dao, sql.toString(), Sqls.callback.maps());
}
@At
@Ok("json:full")
@ViReturn
public Object findMaxStateId() {
return activityTypeService.findMaxStateId();
}
@At
@Ok("json:full")
@ViReturn
@RequiresPermissions("activity.site.type")
public Object checkStateId(@Param("stateId") Integer stateId, @Param("stateIndex") Integer stateIndex) {
if (stateId == null) {
return Result.error("参数错误");
}
int count = dao.count(AuditState.class, Cnd.where("stateId", "=", stateId));
if (count == 0) {
return Result.success().addData(stateId);
} else {
return Result.success(activityTypeService.findMaxStateId() + 10 * stateIndex);
}
}
}
@@ -0,0 +1,100 @@
package io.v.nutz.zhgh.activity.controller.site;
import io.v.nutz.zhgh.activity.models.ActivitySiteInfo;
import io.v.nutz.zhgh.activity.services.SiteInfoService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.PageUtil;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @author: Aaron
* @create: 2020-12-13 09:39
* @description: 场地管理
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/site/mange")
public class SiteManageController {
@Inject
private SiteInfoService siteInfoService;
@At("")
@Ok("beetl:platform/activity/site/SiteManage.html")
@RequiresPermissions("activity.site.manage")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.site.manage")
public Object pageData(@Param(value = "siteType",required = false) String siteType,
@Param(value = "year",required = false) Integer year,
@Param(value = "searchName",required = false) String searchName,
@Param(value = "searchKeyword",required = false) String searchKeyword,
@Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) {
Cnd cnd = Cnd.NEW();
if (year != null && year != 0) {
cnd.and("YEAR(create_time)", "=", year);
}
if (Strings.isNotBlank(siteType)) {
cnd.and("typeId", "=", siteType);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderName)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.desc("create_time");
}
return siteInfoService.listPage(pageNumber, pageSize, cnd);
}
@At
@ViReturn
@RequiresPermissions("activity.site.manage")
public Object doAdd(@Param("data") ActivitySiteInfo activitySiteInfo) {
siteInfoService.insert(activitySiteInfo);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.site.manage")
public Object doEdit(@Param("data") ActivitySiteInfo activitySiteInfo) {
siteInfoService.updateIgnoreNull(activitySiteInfo);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.site.manage")
public Object doDelete(String id) {
siteInfoService.delete(id);
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.site.manage")
public Object findOneSite(String id) {
return siteInfoService.fetch(id);
}
}
@@ -0,0 +1,103 @@
package io.v.nutz.zhgh.activity.controller.site;
import io.v.nutz.zhgh.activity.services.SiteReserveService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @FileName io.v.nutz.activity.controller.site.SiteRecordController
* @Description: 预约记录查询
* @Author zxc
* @Date 2022/5/19:15:21
* @Version V1.0
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/site/record")
public class SiteRecordController {
@Inject
private SiteReserveService siteReserveService;
@At("")
@Ok("beetl:platform/activity/site/SiteRecord.html")
@RequiresPermissions("activity.site.record")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.site.record")
public Object pageData(@Param(value = "month",required = false) String month,
@Param(value = "siteType",required = false) String siteType,
@Param(value = "searchName",required = false) String searchName,
@Param(value = "searchKeyword",required = false) String searchKeyword,
@Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
asr.*,
asi.`name` site_name,
ass.`stateName` state_name,
ass.`stateColor` state_color,
ass.stateAuditType,
count(sqid) days,
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
FROM
activity_site_reserve asr
LEFT JOIN
activity_site_info asi ON asi.id = asr.site_id
LEFT JOIN
audit_state ass ON ass.stateId = asr.reserve_state
LEFT JOIN
sys_user u on u.id = asr.reserve_person_id
$condition
""");
if (ShiroUtil.hasAnyRoles(new String[]{"gh10"})) {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
cnd.and("u.unitid", "=", user.getUnitid());
}
if (Strings.isNotBlank(siteType)) {
cnd.and("asi.typeId", "=", siteType);
}
if (Strings.isNotBlank(month)) {
cnd.and("left(reserve_day, 7)", "=", month);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderName)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.asc("asr.reserve_state").desc("u.unitid");
}
cnd.groupBy("sqid");
sql.setCondition(cnd);
return siteReserveService.listPage(pageNumber, pageSize, sql);
}
}
@@ -0,0 +1,431 @@
package io.v.nutz.zhgh.activity.controller.site;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.activity.models.ActivitySiteInfo;
import io.v.nutz.zhgh.activity.models.ActivitySiteReserve;
import io.v.nutz.zhgh.activity.services.ActivityCommonService;
import io.v.nutz.zhgh.activity.services.SiteInfoService;
import io.v.nutz.zhgh.activity.services.SiteReserveService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.services.SysUnitService;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Strings;
import org.nutz.lang.random.R;
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.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2020-12-13 14:33
* @description: 场地预约
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/site/reserve")
public class SiteReserveController {
@Inject
private SiteInfoService siteInfoService;
@Inject
private SiteReserveService siteReserveService;
@Inject
private SysUserService sysUserService;
@Inject
private ActivityCommonService activityCommonService;
@Inject
private SysUnitService sysUnitService;
@Inject
private MsgApi msgApi;
@At("")
@Ok("beetl:platform/activity/site/SiteReserve.html")
@RequiresPermissions("activity.site.reserve")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object pageData(@Param(value = "siteType",required = false) String siteType,
@Param(value = "time",required = false) String time,
@Param(value = "siteId",required = false) String siteId,
@Param(value = "searchName",required = false) String searchName,
@Param(value = "searchKeyword",required = false) String searchKeyword,
@Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
asr.*,
asi.`name` site_name,
ass.`stateName` state_name,
ass.`stateColor` state_color,
ass.stateAuditType,
count(sqid) days,
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
FROM
activity_site_reserve asr
LEFT JOIN
activity_site_info asi ON asi.id = asr.site_id
LEFT JOIN
audit_state ass ON ass.stateId = asr.reserve_state
$condition
""");
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "SchoolUnionActivityVenueAdmin"})) {
cnd.and("reserve_person_id", "=", ShiroUtil.getPrincipalProperty("id"));
}
if (Strings.isNotBlank(time)) {
cnd.and("left(asr.reserve_day, 7)", "=", time);
}
if (Strings.isNotBlank(siteId)) {
cnd.and("site_id", "=", siteId);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderName)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.asc("asr.reserve_state").desc("asr.reserve_day");
}
if (Strings.isNotBlank(siteType)) {
cnd.and("typeId", "=", siteType);
}
cnd.groupBy("sqid");
sql.setCondition(cnd);
return siteReserveService.listPage(pageNumber, pageSize, sql);
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object doDelete(String id, Integer op) {
ActivitySiteReserve fetch = siteReserveService.fetch(id);
if (op == 1) {
siteReserveService.clear(Cnd.NEW().and("sqid", "=", fetch.getSqid()));
} else if (op == 2) {
//siteReserveService.update(Chain.make("reserve_state", 50), Cnd.where("id", "=", id));
siteReserveService.clear(Cnd.NEW().and("sqid", "=", fetch.getSqid()));
}
return null;
}
@At
@RequiresPermissions("activity.site.reserve")
public Object isCanRollBack(String id) {
//根据活动id查询第一个审核节点
ActivitySiteReserve fetch = siteReserveService.fetch(id);
String moduleName = activityCommonService.findModuleNameByActivityId(fetch.getSite_id());
Integer stateCode = activityCommonService.findStartStateCodeByModuleName(moduleName);
return fetch.getReserve_state() > stateCode;
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object doAdd(@Param("data") ActivitySiteReserve activitySiteReserve, @Param("days") String[] days) {
if(activitySiteReserve.getReserve_type() == 1 && days.length > 1) {
return Result.error("个人预约只支持预约明天的时间");
}
//主要来查询个人预约时的人数上限
ActivitySiteInfo siteInfo = siteInfoService.dao().fetch(ActivitySiteInfo.class, activitySiteReserve.getSite_id());
String moduleName = activityCommonService.findModuleNameByActivityId(activitySiteReserve.getSite_id());
Integer limitNum = siteInfo.getLimitNum();
for (String day : days) {
String time = day + " " + activitySiteReserve.getStart_time();
int compare = DateUtil.compare(new Date(), DateUtil.parse(time), "yyyy-MM-dd HH:mm");
if(compare > 0) {
return Result.error("您预约的【%s】时间已过".formatted(time));
}
if(activitySiteReserve.getReserve_type() == 1 && !day.equals(DateUtil.format(DateUtil.offsetDay(new Date(), 1), "yyyy-MM-dd"))) {
return Result.error("个人预约只支持预约明天的时间");
}
List<ActivitySiteReserve> list = siteReserveService.query(Cnd.NEW()
.and("reserve_day", "=", day)
.and("start_time", "=", activitySiteReserve.getStart_time())
.and("end_time", "=", activitySiteReserve.getEnd_time())
.and("site_id", "=", activitySiteReserve.getSite_id())
.and(new Static(" reserve_state in (select stateId from audit_state where stateAuditType != 1 and module = '%s')".formatted(moduleName))));
ActivitySiteReserve reserve = list.stream().filter(o -> o.getReserve_person_id().equals(ShiroUtil.getPrincipalProperty("id"))).findAny().orElse(null);
if (reserve != null) {
return Result.error("您已预约该时间段!");
}
if(activitySiteReserve.getReserve_type() == 1) {
if((list.size() + 1) > limitNum) {
return Result.error("【%s】时间段预约人数已满!".formatted(time));
}
} else {
if(list.size() > 0) {
return Result.error("【%s】时间段已有预约!".formatted(time));
}
}
}
String r = R.UU32();
activitySiteReserve.setSqid(r);
Integer stateCode = activityCommonService.findStartStateCodeByModuleName(moduleName);
if (stateCode == null) {
return null;
}
for (String d : days) {
activitySiteReserve.setReserve_day(d);
activitySiteReserve.setReserve_state(stateCode);
activitySiteReserve.setReserve_person_id(ShiroUtil.getPrincipalProperty("id").toString());
siteReserveService.insert(activitySiteReserve);
}
//发送微信提醒审核人
//查询状态码对应的审核人
Sql sql = Sqls.create("""
select userId,u.loginname,u.username,u.unitname from audit_state_user asu
left join `user` u on u.id = asu.userId left join audit_state s on s.stateId=asu.stateId $condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("asu.stateId", "=", stateCode);
cnd.and("s.stateAuditType", "=", "0");
if ("infantRoom".equals(moduleName)) {
//获取当前登录人的单位id
String unitId = ShiroUtil.getPrincipalProperty("unitid").toString();
cnd.and("u.unitid", "=", unitId);
}
sql.setCondition(cnd);
List<Record> list = siteReserveService.list(sql);
list.forEach(item -> {
String content = "%s老师您好!%s老师预约%s日使用%s,请您通过门户网站或点击详情登录智慧工会平台进行审核。"
.formatted(item.getString("username"),
activitySiteReserve.getReserve_person(),
StringUtils.join(days, ","),
siteInfoService.fetch(activitySiteReserve.getSite_id()).getName());
Sys_user sys_user = sysUserService.fetch(item.getString("userId"));
NutMap map = new NutMap();
map.setv("keyword1", NutMap.NEW().setv("value", "场地预约"));
map.setv("keyword2", NutMap.NEW().setv("value", item.getString("username")
+ "(" + item.getString("loginname") + ")"));
map.setv("keyword3", NutMap.NEW().setv("value", item.getString("unitname")));
map.setv("keyword4", NutMap.NEW().setv("value", content));
map.setv("keyword5", NutMap.NEW().setv("value", DateUtil.now()));
//msgApi.sendMsg(sys_user.getWeAppOpenid(), msgApi.DSH_TEMPLATE_ID, Globals.AppDomain + "/mobile/activity/site/audit", map);
});
return null;
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object findAllOpenSite(@Param(value = "time",required = false) String time,
@Param(value = "siteType",required = false) String siteType) {
String sb = "SELECT " +
"asi.*," +
"( SELECT count( 1 ) FROM activity_site_reserve WHERE site_id = asi.id AND reserve_state = (select stateId from audit_state where module = (select moduleName from activity_type where id = asi.typeId) and stateAuditType = 3) ";
if (StrUtil.isNotBlank(time)) {
sb += " AND left(reserve_day, 7) = '" + time + "'";
}
sb += " ) count FROM activity_site_info asi $condition ";
Sql sql = Sqls.create(sb);
Cnd cnd = Cnd.NEW();
cnd.and("state", "=", true);
if (StrUtil.isNotBlank(siteType)) {
cnd.and("typeId", "=", siteType);
}
sql.setCondition(cnd);
return siteInfoService.list(sql);
}
@At
@RequiresPermissions("activity.site.reserve")
public Object findUser(@Param(value = "keywords",required = false) String keywords) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("SELECT ur.username,ur.id,ut.name unit_name,ur.unitid,ur.mobile FROM sys_user ur LEFT JOIN sys_unit ut ON ut.id=ur.unitid $condition LIMIT 0,30 ");
if (Strings.isNotBlank(keywords)) {
cnd.where().orLike("loginname", keywords).orLike("username", keywords);
}
sql.setCondition(cnd);
List<Record> list = sysUserService.list(sql);
return Result.success().addData(list);
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object findReserveInfo(@Param(value = "siteId",required = false) String siteId,
@Param(value = "day",required = false) String day) {
Sql sql = Sqls.create("SELECT ar.*,`as`.stateAuditType FROM activity_site_reserve ar left join audit_state `as` on ar.reserve_state=`as`.stateId $condition");
String moduleName = activityCommonService.findModuleNameByActivityId(siteId);
//根据moduleName找审核失败的数据
Sql s = Sqls.create("""
select
stateId
from
audit_state
where
stateAuditType = 1 and
module = @module
""").setParam("module", moduleName);
List<Record> list = siteReserveService.list(s);
List<String> stateList = list.stream().map(o -> o.getString("stateId")).collect(Collectors.toList());
Cnd cnd = Cnd.NEW();
cnd.and("site_id", "=", siteId);
if (StrUtil.isNotBlank(day)) {
cnd.and("reserve_day", "=", day);
cnd.and("reserve_state", "not in ", stateList);
}
sql.setCondition(cnd);
return siteReserveService.list(sql);
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object checkReserve(String reserve_day, String start_time, String end_time, String site_id) {
Cnd cnd = Cnd.NEW();
cnd.and("site_id", "=", site_id)
.and("reserve_state", "!=", 40)
.and("reserve_day", "=", reserve_day);
SqlExpressionGroup group = new SqlExpressionGroup();
group.or("start_time", "<=", start_time).and("end_time", ">=", start_time);
group.or("start_time", "<=", end_time).and("start_time", ">=", end_time);
cnd.and(group);
return siteReserveService.count(cnd);
}
@At
@ViReturn
@RequiresPermissions("activity.site.reserve")
public Object findOne(String id) {
ActivitySiteReserve fetch = siteReserveService.fetch(id);
Sql sql = Sqls.create("""
SELECT
asr.*,
asi.`name` site_name,
ass.`stateName` state_name,
ass.stateAuditType,
su.username,
sm.username smusername,
su.sex,
su.loginname,
count(sqid) days,
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
FROM
activity_site_reserve asr
LEFT JOIN activity_site_info asi ON asi.id = asr.site_id
LEFT JOIN audit_state ass ON ass.stateId = asr.reserve_state
LEFT JOIN sys_user su ON su.id = asr.reserve_person_id
LEFT JOIN sys_user sm ON sm.id = asr.site_manager_id
WHERE
asr.sqid = @id
group by sqid
""").setParam("id", fetch.getSqid());
NutMap record = (NutMap) Daos.query(siteReserveService.dao(), sql.toString(), Sqls.callback.map());
String auditList = record.getString("auditList");
if (auditList != null) {
List<NutMap> nutMaps = Json.fromJsonAsList(NutMap.class, auditList);
nutMaps.forEach(item -> {
item.put("auditListName", item.getBoolean("auditState") ? "审核通过" : "审核拒绝");
Sys_user auditUSer = sysUserService.fetch(item.getString("auditUser"));
item.put("auditUserName", auditUSer.getUsername());
item.put("auditUserUnionName", sysUnitService.fetch(auditUSer.getUnitid()).getName());
Sql sqlStr = Sqls.create("select stateName from audit_state where stateId = '" + item.getString("stateCode") + "'");
Record re = sysUserService.list(sqlStr).get(0);
item.put("auditStateName", re.getString("stateName"));
});
record.put("auditListTable", nutMaps);
} else {
record.put("auditListTable", new ArrayList<>());
}
Cnd cnd = Cnd.NEW();
String site_id = record.getString("site_id");
String reserve_day = record.getString("reserve_day");
String moduleName = activityCommonService.findModuleNameByActivityId(record.getString("site_id"));
//根据moduleName找审核失败的数据
Sql s = Sqls.create("""
select
stateId
from
audit_state
where
stateAuditType = 1 and
module = @module
""").setParam("module", moduleName);
List<NutMap> list = siteReserveService.listMap(s);
List<String> stateList = list.stream().map(o -> o.getString("stateId")).collect(Collectors.toList());
Sql i = Sqls.create("""
SELECT
ar.*,
`as`.stateAuditType
FROM
activity_site_reserve ar
left join audit_state `as` on `as`.stateId = ar.reserve_state
$condition
""");
cnd.and("site_id", "=", site_id)
//.and("reserve_day", "=", reserve_day)
.and("reserve_state", "not in", stateList);
i.setCondition(cnd);
List<NutMap> list1 = siteReserveService.listMap(i);
record.put("site_info", list1);
return record;
}
}
@@ -0,0 +1,258 @@
package io.v.nutz.zhgh.activity.controller.site;
import cn.hutool.core.date.DateUtil;
import io.v.nutz.zhgh.activity.models.ActivitySiteInfo;
import io.v.nutz.zhgh.activity.models.ActivitySiteReserve;
import io.v.nutz.zhgh.activity.services.ActivityCommonService;
import io.v.nutz.zhgh.activity.services.SiteInfoService;
import io.v.nutz.zhgh.activity.services.SiteReserveService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.model.AuditState;
import io.v.nutz.zhgh.msgNotify.service.MsgNotifyService;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
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.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2020-12-15 13:52
* @description: 预约审核
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/site/review")
public class SiteReviewController {
@Inject
private SiteInfoService siteInfoService;
@Inject
private SiteReserveService siteReserveService;
@Inject
private ActivityCommonService activityCommonService;
@Inject
private MsgApi msgApi;
@Inject
private MsgNotifyService msgNotifyService;
@Inject
private SysUserService sysUserService;
@At("")
@Ok("beetl:platform/activity/site/SiteReview.html")
@RequiresPermissions("activity.site.review")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("activity.site.review")
public Object pageData(@Param(value = "month",required = false) String month,
@Param(value = "siteType",required = false) String siteType,
@Param(value = "searchName",required = false) String searchName,
@Param(value = "searchKeyword",required = false) String searchKeyword,
@Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy,
@Param(value = "isAudit",required = false) Boolean isAudit) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
asr.*,
asi.`name` site_name,
ass.`stateName` state_name,
ass.`stateColor` state_color,
ass.stateAuditType,
count(sqid) days,
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
FROM
activity_site_reserve asr
LEFT JOIN
activity_site_info asi ON asi.id = asr.site_id
LEFT JOIN
audit_state ass ON ass.stateId = asr.reserve_state
LEFT JOIN
`user` u on u.id = asr.reserve_person_id
$condition
""");
/*if (ShiroUtil.hasAnyRoles(new String[]{"gh10"})) {
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
cnd.and("u.unitid", "=", user.getUnitid());
}*/
/*if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) {
cnd.and(new Static("if(asi.typeId=1, u.unionId = '" + Vi.getUnionId() + "', 1=1)"));
}*/
//查询未审核,获取当前用户可以审核的节点
Sql s = Sqls.create("""
select stateId from audit_state_user where userId=@userId
""").setParam("userId", ShiroUtil.getPrincipalProperty("id"));
List<Record> sList = siteReserveService.list(s);
List<String> stateList = sList.stream().map(o -> o.getString("stateId")).collect(Collectors.toList());
List<AuditState> audit = siteInfoService.dao().query(AuditState.class, Cnd.where("stateId", "in", stateList));
SqlExpressionGroup sqlExpressionGroup = new SqlExpressionGroup();
audit.forEach(v->{
if (Strings.isNotBlank(v.getAuditAfterType())){
// CustomAuditTypeHandle instance = Enum.instance(CustomAuditTypeHandle.class, v.getAuditAfterType());
// if(instance != null) {
// instance.next(sqlExpressionGroup);
// }
}
});
if (!sqlExpressionGroup.isEmpty()) {
cnd.and(sqlExpressionGroup);
}
if (isAudit == null) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.and(new Static("JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', '" + ShiroUtil.getPrincipalProperty("id") + "'))"))
.or("reserve_state", "in", stateList);
cnd.and(group);
} else if (isAudit) {
//查询已审核
cnd.and(new Static("JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', '" + ShiroUtil.getPrincipalProperty("id") + "'))"));
} else {
cnd.and("reserve_state", "in", stateList);
}
if (Strings.isNotBlank(siteType)) {
cnd.and("asi.typeId", "=", siteType);
}
if (Strings.isNotBlank(month)) {
cnd.and("left(reserve_day, 7)", "=", month);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderName)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
} else {
cnd.asc("asr.reserve_state").desc("u.unitid");
}
cnd.groupBy("asi.id");
sql.setCondition(cnd);
return siteReserveService.listPage(pageNumber, pageSize, sql);
}
@At
@ViReturn
@RequiresPermissions("activity.site.review")
public Object doReview(String[] id, Audit audit, Boolean isPass) {
siteReserveService.insert(audit);
for (String s : id) {
ActivitySiteReserve fetch = siteReserveService.fetch(s);
Integer stateCode = fetch.getReserve_state();
Integer afterStateCode = activityCommonService.findAfterStateCode(stateCode, isPass);
List<ActivitySiteReserve> reserves = siteReserveService.query(Cnd.NEW().and("sqid", "=", fetch.getSqid()));
String days = "";
for (ActivitySiteReserve siteReserve : reserves) {
siteReserve.setReserve_state(afterStateCode);
List<NutMap> auditList = siteReserve.getAuditList();
if (Lang.isEmpty(auditList)) {
auditList = new ArrayList<>();
}
auditList.add(NutMap.NEW().addv("stateCode", stateCode).addv("auditId", audit.getId())
.addv("auditUser", ShiroUtil.getPrincipalProperty("id"))
.addv("auditState", isPass)
.addv("auditOption", audit.getAuditOpinion())
);
siteReserve.setAuditList(auditList);
days += siteReserve.getReserve_day() + ",";
siteReserveService.update(siteReserve);
}
days = days.substring(0, days.length() - 1);
Integer successCode = activityCommonService.findSuccessStateCode(fetch.getSite_id());
ActivitySiteInfo siteInfo = siteInfoService.fetch(fetch.getSite_id());
if (afterStateCode.equals(successCode) && siteInfo.getTypeId() == 1) {
String content = "%s老师您好!您提交的%s使用申请已通过审批,如有疑问,欢迎咨询校工会。"
.formatted(fetch.getReserve_person(), siteInfo.getName());
Sys_user user = sysUserService.dao().fetch(Sys_user.class, fetch.getReserve_person_id());
// msgApi.sendMsg(content, List.of(user.getLoginname()));
} else if (!afterStateCode.equals(successCode)) {
//发送微信提醒审核人
//查询状态码对应的审核人
Sql sql = Sqls.create("""
select userId,u.loginname,u.username,u.unitname from audit_state_user asu
left join `user` u on u.id = asu.userId left join audit_state s on s.stateId=asu.stateId $condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("asu.stateId", "=", afterStateCode);
cnd.and("s.stateAuditType", "=", "0");
String moduleName = activityCommonService.findModuleNameByActivityId(fetch.getSite_id());
if ("infantRoom".equals(moduleName)) {
//获取当前登录人的单位id
String unitId = ShiroUtil.getPrincipalProperty("unitid").toString();
cnd.and("u.unitid", "=", unitId);
}
sql.setCondition(cnd);
List<Record> list = siteReserveService.list(sql);
for (Record item : list) {
String content = "%s老师您好!%s老师预约%s日使用%s,请您通过门户网站或点击详情登录智慧工会平台进行审核。"
.formatted(item.getString("username"),
fetch.getReserve_person(),
days,
siteInfo.getName());
Sys_user sys_user = sysUserService.fetch(item.getString("userId"));
NutMap map = new NutMap();
map.setv("keyword1", NutMap.NEW().setv("value", "场地预约"));
map.setv("keyword2", NutMap.NEW().setv("value", item.getString("username")
+ "(" + item.getString("loginname") + ")"));
map.setv("keyword3", NutMap.NEW().setv("value", item.getString("unitname")));
map.setv("keyword4", NutMap.NEW().setv("value", content));
map.setv("keyword5", NutMap.NEW().setv("value", DateUtil.now()));
// msgApi.sendMsg(sys_user.getWeAppOpenid(), msgApi.DSH_TEMPLATE_ID, Globals.AppDomain + "/mobile/activity/site/audit", map);
}
}
}
return null;
}
}
@@ -0,0 +1,109 @@
package io.v.nutz.zhgh.activity.controller.union;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.zhgh.activity.models.ActivityTissue;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Chain;
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.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* TODO
*
* @Author zhf
* @Date 2022/12/4 9:31
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/audit")
public class ActivityAuditController {
@Inject
private BaseService baseService;
@At("/union")
@Ok("beetl:platform/activity/union/unionActivityAudit.html")
@RequiresPermissions("activity.union.audit")
public void unionIndex() {
}
@At("/club")
@Ok("beetl:platform/activity/union/clubActivityAudit.html")
@RequiresPermissions("activity.club.audit")
public void clubIndex() {
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.club.audit", "activity.union.audit", "activity.union.audit"}, logical = Logical.OR)
public Object pageData(PageForm page, boolean state,
@Param(value = "year", required = false) String year,
@Param(value = "name", required = false) String name,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "type", required = false) Integer type) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
tissue.*,
uni.unionname ,
club.`name` clubName,
abs.`name` projectTypeName
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
$condition
""");
cnd.andEx("YEAR(tissue.startTime)", "=", year);
cnd.andEx("tissue.unionId", "=", unionId);
cnd.andEx("tissue.type", "=", type);
cnd.andEx("tissue.state", state ? ">" : "=", 1);
if (Strings.isNotBlank(name)) {
cnd.where().andLike("tissue.name", name);
}
if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) {
cnd.orderBy(page.getPageOrderName(), page.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
} else {
cnd.desc("tissue.startTime");
}
sql.setCondition(cnd);
return baseService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.club.audit", "activity.union.audit", "activity.union.audit"}, logical = Logical.OR)
public Object doReview(String id, boolean flag, Audit audit) {
audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString());
baseService.insert(audit);
baseService.dao().update(ActivityTissue.class, Chain.make("state", flag ? 3 : 2).add("auditId", audit.getId()), Cnd.where("id", "=", id));
return null;
}
}
@@ -0,0 +1,118 @@
package io.v.nutz.zhgh.activity.controller.union;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.zhgh.activity.models.ActivityTissue;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.SimpleService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Calendar;
/**
* @author zhf
* @date 2021/11/2 10:07
* @description
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/apply")
public class ActivityUnionApplyController {
@Inject
private SimpleService simpleService;
@Inject
private BaseService baseService;
@At("/union")
@Ok("beetl:platform/activity/union/unionActivityApply.html")
@RequiresPermissions("activity.union.apply")
public void unionIndex() {
}
@At("/club")
@Ok("beetl:platform/activity/union/clubActivityApply.html")
@RequiresPermissions("activity.club.apply")
public void clubIndex() {
}
@At("/school")
@Ok("beetl:platform/activity/union/schoolActivityApply.html")
@RequiresPermissions("activity.school.apply")
public void schoolIndex() {
}
private static final NutMap activityCodeMap = new NutMap() {{
put("40002", "JC");
put("40003", "XH");
put("40001", "GH");
}};
/**
* 活动编号生成
*
* @param activity_type
* @return
*/
@At
@ViReturn
public Object generateActivityCode(String activity_type) {
Cnd cnd = Cnd.NEW();
int year = Calendar.getInstance().get(Calendar.YEAR);
cnd.and("LEFT(activityCode,6)", "=", year + activityCodeMap.getString(activity_type));
String code = String.format("%03d", baseService.dao().count(ActivityTissue.class, cnd) + 1);
return year + activityCodeMap.getString(activity_type) + code;
}
@At
@ViReturn
public Object getUnionData(@Param(value = "activityScopeGroupId", required = false) String activityScopeGroupId) {
if (StrUtil.isBlank(activityScopeGroupId)) {
Sql sql = Sqls.create("""
SELECT
gh.id,
gh.unionname,
count( u.id ) AS teacherCount
FROM
sys_union gh
LEFT JOIN `user` u ON u.unionid = gh.id
GROUP BY
gh.id
""");
return simpleService.listMap(sql);
} else {
// count( u.id ) AS unionNum,
Sql sql = Sqls.create("""
SELECT
gh.id,
gh.unionname,
( SELECT count( 1 ) FROM `user` WHERE id IN ( SELECT userid FROM activity_user_scope WHERE groupId = @activityScopeGroupId ) AND unionId = gh.id ) as teacherCount
FROM
sys_union gh
LEFT JOIN `user` u ON u.unionid = gh.id
GROUP BY
gh.id
""");
sql.setParam("activityScopeGroupId", activityScopeGroupId);
return simpleService.listMap(sql);
}
}
}
@@ -0,0 +1,193 @@
package io.v.nutz.zhgh.activity.controller.union;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.page.Pagination;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.service.SimpleService;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.ActivityTissuePerson;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
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;
import java.util.stream.Collectors;
/**
* @ClassName ActivityUnionApplyUserController
* @Description pc端活动报名
* @Author zhf
* @Date 2024/1/12 15:38
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/applyUser")
public class ActivityUnionApplyUserController {
@Inject
private SimpleService simpleService;
@Inject
private BaseService baseService;
@At("/union")
@Ok("beetl:platform/activity/union/unionActivityApplyUser.html")
@RequiresPermissions("activity.union.applyUser")
public void unionIndex() {
}
@At("/club")
@Ok("beetl:platform/activity/union/clubActivityApplyUser.html")
@RequiresPermissions("activity.club.applyUser")
public void clubIndex() {
}
@At("/school")
@Ok("beetl:platform/activity/union/schoolActivityApplyUser.html")
@RequiresPermissions("activity.school.applyUser")
public void schoolIndex() {
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.club.applyUser", "activity.union.applyUser", "activity.school.applyUser"}, logical = Logical.OR)
public Object pageData(PageForm page,
@Param(value = "year", required = false) String year,
@Param(value = "name", required = false) String name,
@Param(value = "type", required = false) Integer type) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
tissue.*,
uni.unionname ,
club.`name` clubName,
abs.`name` projectTypeName
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
$condition
""");
cnd.andEx("YEAR(tissue.startTime)", "=", year);
cnd.andEx("tissue.isDisabled", "=", true);
cnd.andEx("tissue.type", "=", type);
cnd.andEx("tissue.state", "=", 3);
cnd.andEx("tissue.projectTypeCode", "!=", 50004);
cnd.andEx("tissue.signUpMethod", "in", List.of(1, 2));
if (Strings.isNotBlank(name)) {
cnd.where().andLike("tissue.name", name);
}
if (!ShiroUtil.hasAnyRoles("A06,sysadmin")) {
cnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId=tissue.groupId AND userId='%s') >0".formatted(ShiroUtil.getUserId())));
}
if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) {
cnd.orderBy(page.getPageOrderName(), page.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
} else {
cnd.desc("tissue.startTime");
}
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
List<NutMap> list = pagination.getList();
list.forEach(v -> {
String activityId = v.getString("id");
int signUpMethod = v.getInt("signUpMethod");
if (signUpMethod == 1||signUpMethod == 3) {
int count = baseService.dao().count(ActivityTissuePerson.class,
Cnd.where("tissueId", "=", activityId)
.and("applyUserId", "=", ShiroUtil.getUserId()));
v.setv("countUser", count);
} else if (signUpMethod == 2) {
Sql sqlApplyUser = Sqls.create("""
SELECT
COUNT(*)
FROM
`activity_tissue_person` atp
LEFT JOIN `user` u ON u.id = atp.userId
where atp.tissueId=@tissueId and u.unionid=@unionid
""").setParam("tissueId", activityId).setParam("unionid", Vi.getUnionId());
int count = baseService.count(sqlApplyUser);
v.setv("countUser", count);
}
});
pagination.setList(list);
return pagination;
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.club.applyUser", "activity.union.applyUser", "activity.school.applyUser"}, logical = Logical.OR)
public Object selfUnionUsers(String groupId) {
Sql sql = Sqls.create("""
SELECT
u.id,
u.username,
u.loginname,
u.sex,
u.userState,
u.unitname,
u.unionname
FROM
`user` u
LEFT JOIN activity_user_scope aus ON u.id = aus.userId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("u.unionId", "=", Vi.getUnionId());
cnd.and("aus.groupId", "=", groupId);
cnd.groupBy("u.id");
cnd.asc("u.unitname").asc("u.unionname");
sql.setCondition(cnd);
List<NutMap> list = baseService.listMap(sql);
return list;
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.club.applyUser", "activity.union.applyUser", "activity.school.applyUser"}, logical = Logical.OR)
public Object getReportedUser(String tissueId) {
Sql sql = Sqls.create("""
SELECT
atp.userId
FROM
activity_tissue_person atp
LEFT JOIN `user` u ON atp.userId = u.id
WHERE
atp.tissueId = @tissueId
AND u.unionid = @unionId
""");
sql.setParam("tissueId", tissueId);
sql.setParam("unionId", Vi.getUnionId());
List<NutMap> list = baseService.listMap(sql);
List<String> userIds = list.stream().map(v -> v.getString("userId")).collect(Collectors.toList());
return userIds;
}
}
@@ -0,0 +1,322 @@
package io.v.nutz.zhgh.activity.controller.union;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.OfficeTemplateUtil;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.sys.models.Sys_home_activity;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.services.SysMsgService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.ActivityTissue;
import io.v.nutz.zhgh.activity.models.ActivityTissuePerson;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.zhgh.activity.services.ActivityTissueService;
import io.v.nutz.zhgh.mobileHome.service.MobileHomeService;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
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.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
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.io.IOException;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-03-08 16:07
* @description: 分工会活动信息管理
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/info/mange")
public class ActivityUnionManageController {
@Inject
private Vi vi;
@Inject
private ActivitySchoolService activitySchoolService;
@Inject
private ActivityTissueService activityTissueService;
@Inject("Sys_user")
private ViService<Sys_user> sysUserService;
@Inject
private OfficeTemplateUtil officeTemplateUtil;
@Inject
private SysMsgService sysMsgService;
@Inject("ActivityTissuePerson")
private ViService<ActivityTissuePerson> tissuePersonService;
@At("/union")
@Ok("beetl:platform/activity/union/unionActivity.html")
@RequiresPermissions("activity.union.info")
public void unionIndex() {
}
@At("/club")
@Ok("beetl:platform/activity/union/clubActivity.html")
@RequiresPermissions("activity.club.info")
public void clubIndex() {
}
@At("/school")
@Ok("beetl:platform/activity/union/schoolActivity.html")
@RequiresPermissions("activity.school.info2")
public void schoolIndex() {
}
@Inject
private MobileHomeService mobileHomeService;
@At
@ViReturn
@RequiresAuthentication
public Object pageData(PageForm page, @Param(value = "year", required = false) String year,
@Param(value = "name", required = false) String name,
@Param(value = "unionId", required = false) String unionId,
@Param(value = "type", required = false) Integer type) {
return activityTissueService.pageData(page, year, name, unionId, type);
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object findUser(@Param(value = "serachWord", required = false) String serachWord,
@Param(value = "activity_type", required = false) Integer activity_type) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT id userId,username userName,loginname loginName,sex,mobile,unitname unitName,unionname unionName FROM `user` $condition
""");
if (!ShiroUtil.hasRole("sysadmin")) {
if (activity_type == 40002) {
cnd.and("unionId", "=", vi.getUnionId());
} else if (activity_type == 40003) {
cnd.and("id", "in", " SELECT userid FROM sys_club_user WHERE clubid = '%s' ".formatted(vi.getClubId()));
}
}
if (Strings.isNotBlank(serachWord)) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.andLike("username", serachWord);
group.orLike("loginname", serachWord);
cnd.and(group);
}
sql.setCondition(cnd);
return sysUserService.listPageMap(1, 30, sql);
}
/**
* 校工会添加
*
* @param tissue
* @return
*/
@At
@ViReturn
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object doAdd(@Param(value = "tissue") ActivityTissue tissue) {
tissue.setUserId(ShiroUtil.getUserId());
tissue.setApplyTime(DateUtil.getDate());
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
tissue.setState(1);
} else {
tissue.setState(3);
}
if (tissue.getType() == 40002) {
tissue.setUnionId(Vi.getUnionId());
} else if (tissue.getType() == 40003) {
tissue.setClubId(vi.getClubId());
}
tissue.getGoods().forEach(v -> {
v.setActivityCode(tissue.getActivityCode());
v.setReid(tissue.getId());
});
tissue.getCover();
activityTissueService.insertWith(tissue, "tissuePersonList");
activitySchoolService.dao().insert(tissue.getGoods());
if (tissue.getIsEnrollSystem()) {
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
activitySchoolService.dao().insertOrUpdate(sysHomeActivity);
}
return null;
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object doEdit(@Param("tissue") ActivityTissue tissue) {
if (tissue.getIsPushHome() != 0) {
mobileHomeService.handle(tissue, "ActivityTissue", "/mobile/activity/unionActivity", tissue.getIsPushHome());
} else {
mobileHomeService.delete(tissue.getId());
}
activityTissueService.doEdit(tissue);
return null;
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object doDelete(String id) {
activityTissueService.doDelete(id);
return null;
}
@At
@ViReturn
public Object findOne(String id) {
return activityTissueService.findOne(id);
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object searchTissueUser(String id, @Param(value = "search", required = false) String search) {
Cnd cnd = Cnd.NEW();
cnd.and("tissueId", "=", id);
if (Strings.isNotBlank(search)) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.andLike("userName", search);
group.orLike("loginName", search);
cnd.and(group);
}
return tissuePersonService.query(cnd);
}
@At
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public void export(String id, HttpServletResponse response) throws IOException {
try {
Sql sql = Sqls.create("""
SELECT
tissue.*,
uni.unionname,
club.`name` clubName
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
WHERE
tissue.id = @id
""").setParam("id", id);
NutMap nutMap = activityTissueService.fetch(sql);
List<ActivityTissuePerson> personList = tissuePersonService.query(Cnd.where("tissueId", "=", nutMap.getString("id")));
nutMap.setv("users", personList);
nutMap.setv("unitName", nutMap.getString("unionname") != null ? nutMap.getString("unionname") : nutMap.getString("clubName"));
nutMap.setv("time", new SimpleDateFormat("yyyy年MM月dd日").format(new Date()));
String fileName = nutMap.getString("name") + "活动登记表";
nutMap.setv("fileName", fileName);
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.newBuilder().bind("users", policy).build();
XWPFTemplate.compile(officeTemplateUtil.getPath("activity_tissue"), config).render(nutMap).writeAndClose(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@At
@Ok("void")
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public void doExportUser(String id, @Param(value = "unionId", required = false) String unionId, HttpServletResponse response) throws IOException {
Sql sql = Sqls.create("""
SELECT
u.id,
u.loginname,
u.username,
u.unitname,
u.unionname,
u.sex,
u.mobile,
atp.applyDateTime
FROM
`activity_tissue_person` atp
LEFT JOIN `user` u ON u.id = atp.userId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("atp.tissueId", "=", id);
cnd.andEX("u.unionId", "=", unionId);
sql.setCondition(cnd);
List<ActivityTissuePerson> tissuePeople = tissuePersonService.listEntity(sql);
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("姓名", "userName", 20));
entityList.add(new ExcelExportEntity("工号", "loginName", 20));
entityList.add(new ExcelExportEntity("性别", "sex", 20));
entityList.add(new ExcelExportEntity("联系方式", "mobile", 20));
entityList.add(new ExcelExportEntity("单位", "unitName", 20));
entityList.add(new ExcelExportEntity("工会", "unionName", 20));
try {
ViTool.excelResponse(response, "参赛人数.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, tissuePeople);
workbook.write(response.getOutputStream());
} catch (Exception e) {
}
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object activityStatusChange(String id, String isDisabled) {
activityTissueService.update(Chain.make("isDisabled", "1".equals(isDisabled)), Cnd.where("id", "=", id));
activityTissueService.dao().update(Sys_home_activity.class,
Chain.make("enable", "1".equals(isDisabled)),
Cnd.where("id", "=", id));
return null;
}
}
@@ -0,0 +1,135 @@
package io.v.nutz.zhgh.activity.controller.union;
import io.v.nutz.zhgh.activity.models.ActivityPlan;
import io.v.nutz.zhgh.activity.services.ActivityPlanService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
/**
* @author: Aaron
* @create: 2021-03-08 16:08
* @description: 分工会活动计划管理
**/
@IocBean
@Ok("json:full")
@At("/platform/activity/plan")
public class ActivityUnionPlanController {
@Inject
private Vi vi;
@Inject
private ActivityPlanService activityPlanService;
@At("/union")
@Ok("beetl:platform/activity/union/unionPlan.html")
@RequiresPermissions("activityYear.union.plan")
public void unionIndex() {
}
@At("/addUnionPlan")
@Ok("beetl:platform/activity/union/addUnionPlan.html")
@RequiresPermissions("activityYear.union.addPlan")
public void addUnionPlan() {
}
@At("/club")
@Ok("beetl:platform/activity/union/clubPlan.html")
@RequiresPermissions("activityYear.club.plan")
public void clubIndex() {
}
@At("/addClubPlan")
@Ok("beetl:platform/activity/union/addClubPlan.html")
@RequiresPermissions("activityYear.club.addPlan")
public void addClubPlan() {
}
@At("/school")
@Ok("beetl:platform/activity/union/schoolPlan.html")
@RequiresPermissions("activityYear.school.plan")
public void schoolIndex() {
}
@At("/addSchoolPlan")
@Ok("beetl:platform/activity/union/addSchoolPlan.html")
@RequiresPermissions("activityYear.school.addPlan")
public void addSchoolPlan() {
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.club.plan", "activityYear.school.plan", "activityYear.union.plan"}, logical = Logical.OR)
public Object pageData(PageForm page,
@Param(value = "year", required = false) String year,
@Param(value = "name", required = false) String name,
@Param(value = "tissueId", required = false) String tissueId,
@Param(value = "type", required = false) Integer type) {
CndPlus cnd = CndPlus.create();
cnd.and("ap.type", "=", type);
return activityPlanService.pageData(page, year, name, tissueId, cnd);
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.school.addPlan", "activityYear.union.addPlan", "activityYear.club.addPlan"}, logical = Logical.OR)
public Object doAdd(@Param(value = "name", required = false) String name,
@Param(value = "time", required = false) String time,
@Param(value = "content", required = false) String content,
@Param(value = "event", required = false) String event,
@Param(value = "type", required = false) String type,
@Param(value = "money", required = false) Double money,
@Param(value = "activityType", required = false) String activityType) {
ActivityPlan activityPlan = new ActivityPlan();
activityPlan.setName(name);
activityPlan.setMoney(money);
activityPlan.setTime(time);
activityPlan.setContent(content);
activityPlan.setEvent(event);
activityPlan.setActivityType(activityType);
if (type.equals("40002")) {
activityPlan.setType("40002");
activityPlan.setTissueId(Vi.getUnionId());
} else if (type.equals("40003")) {
activityPlan.setType("40003");
activityPlan.setTissueId(vi.getClubId());
} else {
activityPlan.setType("40001");
}
activityPlanService.insert(activityPlan);
return null;
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.school.addPlan", "activityYear.union.addPlan", "activityYear.club.addPlan"}, logical = Logical.OR)
public Object doEdit(ActivityPlan activityPlan) {
activityPlanService.updateIgnoreNull(activityPlan);
return null;
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.club.plan", "activityYear.school.plan", "activityYear.union.plan"}, logical = Logical.OR)
public Object doDelete(String id) {
activityPlanService.delete(id);
return null;
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.club.plan", "activityYear.school.plan", "activityYear.union.plan"}, logical = Logical.OR)
public Object findOne(String id) {
return activityPlanService.fetch(id);
}
}
@@ -0,0 +1,128 @@
package io.v.nutz.zhgh.activity.controller.union;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.ActivityTissue;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Lang;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName ActivityUnionUserStatisticsController
* @Description TODO
* @Author zhf
* @Date 2023/7/5 10:29
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/user/statistics")
public class ActivityUnionUserStatisticsController {
@At("/union")
@Ok("beetl:platform/activity/union/unionStatisticsActivity.html")
@RequiresPermissions("activity.union.user.statistics")
public void unionIndex() {
}
@At("/club")
@Ok("beetl:platform/activity/union/clubStatisticsActivity.html")
@RequiresPermissions("activity.club.user.statistics")
public void clubIndex() {
}
@At("/school")
@Ok("beetl:platform/activity/union/schoolStatisticsActivity.html")
@RequiresPermissions("activity.school.user.statistics")
public void schoolIndex() {
}
@Inject
private BaseService baseService;
@Inject
private Vi vi;
@At
@ViReturn
@RequiresPermissions(value = {"activity.school.user.statistics", "activity.club.user.statistics", "activity.union.user.statistics"}, logical = Logical.OR)
public Object pageData(PageForm page,
@Param(value = "type", required = false) Integer type,
@Param(value = "activityId", required = false) String activityId,
@Param(value = "unionId", required = false) String unionId) {
ActivityTissue tissue = baseService.dao().fetch(ActivityTissue.class, activityId);
if (Lang.isEmpty(tissue)){
return null;
}
Sql sql = Sqls.create("""
SELECT
u.id,
u.loginname,
u.username,
u.unitname,
u.unionname,
u.sex,
u.mobile,
atp.applyUserId,
atp.id atpId ,
atp.applyDateTime
FROM
`activity_tissue_person` atp
LEFT JOIN `user` u ON u.id = atp.userId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("atp.tissueId", "=", activityId);
cnd.andEX("u.unionId", "=", unionId);
if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) {
if (!tissue.getUserId().equals(ShiroUtil.getUserId())) {
if (type == 40002) {
cnd.and("unionId", "=", Vi.getUnionId());
} else if (type == 40003) {
cnd.and("u.id", "in", " SELECT userid FROM sys_club_user WHERE clubid = '%s' ".formatted(vi.getClubId()));
}
}
}
if (Strings.isNotBlank(page.getSearchName()) && Strings.isNotBlank(page.getSearchKeyword())) {
cnd.where().andLike(page.getSearchName(), page.getSearchKeyword());
}
if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) {
cnd.orderBy(page.getPageOrderName(), page.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
} else {
cnd.desc("atp.applyDateTime");
}
sql.setCondition(cnd);
return baseService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions(value = {"activity.school.user.statistics", "activity.club.user.statistics", "activity.union.user.statistics"}, logical = Logical.OR)
public Object getActivityByYearOrType(@Param(value = "year", required = false) Integer year,
@Param(value = "type", required = false) Integer type) {
Cnd cnd = Cnd.NEW();
cnd.and("type", "=", type);
cnd.andEX("YEAR(startTime)", "=", year);
cnd.desc("startTime");
return baseService.dao().query(ActivityTissue.class, cnd);
}
}
@@ -0,0 +1,207 @@
package io.v.nutz.zhgh.activity.controller.union;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.zhgh.activity.models.ActivityYearSummary;
import io.v.nutz.zhgh.activity.services.ActivityYearSummaryService;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.boot.starter.ftp.FtpService;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
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.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author JyuHsin
* @Date 2022/6/29
* @Description
*/
@IocBean
@Ok("json:full")
@At("/platform/activity/yearSummary")
public class ActivityUnionYearSummaryController {
private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Inject
private BaseService baseService;
@Inject
private FtpService ftpService;
@Inject
private Vi vi;
@Inject
private ActivityYearSummaryService activityYearSummaryService;
@At("/union")
@Ok("beetl:platform/activity/summary/union/unionSummary.html")
@RequiresPermissions("activityYear.union.summary")
public void unionIndex() {
}
@At("/addUnionSummary")
@Ok("beetl:platform/activity/summary/union/addSummary.html")
@RequiresPermissions("activityYear.union.addSummary")
public void addUnionSummary() {
}
@At("/club")
@Ok("beetl:platform/activity/summary/club/clubSummary.html")
@RequiresPermissions("activityYear.club.summary")
public void clubIndex() {
}
@At("/addClubSummary")
@Ok("beetl:platform/activity/summary/club/addSummary.html")
@RequiresPermissions("activityYear.club.addSummary")
public void addClubSummary() {
}
@At("/school")
@Ok("beetl:platform/activity/summary/school/schoolSummary.html")
@RequiresPermissions("activityYear.school.summary")
public void schoolIndex() {
}
@At("/addSchoolSummary")
@Ok("beetl:platform/activity/summary/school/addSummary.html")
@RequiresPermissions("activityYear.school.addSummary")
public void addSchoolSummary() {
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.school.summary", "activityYear.union.summary", "activityYear.club.summary"}, logical = Logical.OR)
public Object pageData(@Param(value = "year", required = false) String year,
@Param(value = "tissueId", required = false)String tissueId,
@Param(value = "summaryType", required = false)String summaryType,
@Param(value = "pageSize", required = false)Integer pageSize,
@Param(value = "pageNumber", required = false)Integer pageNumber,
@Param(value = "summaryFrom", required = false)String summaryFrom) {
Cnd cnd = Cnd.NEW();
String str = "select " +
" su.*," +
" year(su.ctime) as `year`, " +
" dic.name as typename," +
" u.username ";
if ("2".equals(summaryFrom)) {
str += ",un.unionname as name";
}
if ("3".equals(summaryFrom)) {
str += ",club.name as name";
}
str += " from activity_summary su ";
str += " left join `user` u on su.userId = u.id";
if ("2".equals(summaryFrom)) {
str += " left join sys_union un on su.tissueId = un.id";
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) {
cnd.and("su.tissueId", "=", Vi.getUnionId());
}
}
if ("3".equals(summaryFrom)) {
str += " left join sys_club club on su.tissueId = club.id";
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) {
cnd.and("su.tissueId", "=", vi.getClubId());
}
}
str += " left join sys_dict dic on su.summaryType = dic.id ";
str += " $condition";
Sql sql = Sqls.create(str);
if (StrUtil.isNotBlank(year)) {
cnd.and("year(su.ctime)", "=", year);
}
if (StrUtil.isNotBlank(tissueId)) {
cnd.and("su.tissueId", "=", tissueId);
}
if (StrUtil.isNotBlank(summaryType)) {
cnd.and("su.summaryType", "=", summaryType);
}
if (StrUtil.isNotBlank(summaryFrom)) {
cnd.and("su.summaryFrom", "=", summaryFrom);
}
sql.setCondition(cnd);
return activityYearSummaryService.listPageMap(pageNumber, pageSize, sql);
}
@At
@Ok("json")
@RequiresPermissions(value = {"activityYear.school.addSummary", "activityYear.union.addSummary", "activityYear.club.addSummary"}, logical = Logical.OR)
public Object doHandle(@Param("..") ActivityYearSummary activityYearSummary) {
try {
if (activityYearSummary.getId() == null) {
activityYearSummary.setCtime(SIMPLE_DATE_FORMAT.format(new Date()));
activityYearSummaryService.insert(activityYearSummary);
} else {
activityYearSummaryService.updateIgnoreNull(activityYearSummary);
}
return Result.success().addMsg("上传成功!");
} catch (Exception e) {
e.printStackTrace();
return Result.error().addMsg("上传失败!");
}
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.school.summary", "activityYear.union.summary", "activityYear.club.summary"}, logical = Logical.OR)
public Object findOne(String id) {
Sql sql = Sqls.create("""
select su.*,u.username,u.loginname from
activity_summary su
left join
`user` u on su.userId = u.id
$condition
""");
sql.setCondition(Cnd.NEW().and("su.id", "=", id));
return activityYearSummaryService.fetch(sql);
}
@At
@ViReturn
@RequiresPermissions(value = {"activityYear.school.summary", "activityYear.union.summary", "activityYear.club.summary"}, logical = Logical.OR)
public Object doDelete(String id) {
ActivityYearSummary summary = activityYearSummaryService.fetch(id);
List<NutMap> files = summary.getFiles();
for (NutMap file : files) {
Record filedata = baseService.dao().fetch("sys_file", Cnd.where("id", "=", id));
if (filedata != null) {
baseService.clear("sys_file", Cnd.where("id", "=", file.getString("id")));
ftpService.delete(filedata.getString("filepath"));
}
}
activityYearSummaryService.delete(id);
return Result.success();
}
@At
public Object getMyClub() {
Sql sql = Sqls.create("""
SELECT sur.stid FROM sys_user_role sur
$condition
""");
sql.setCondition(Cnd.NEW().and("sur.userId", "=", ShiroUtil.getPrincipalProperty("id")).and("sur.roleId", "=", Roles.club01));
List<Record> list = baseService.list(sql);
List<String> stids = list.stream().map(x -> x.getString("stid")).collect(Collectors.toList());
return stids;
}
}
@@ -0,0 +1,28 @@
package io.v.nutz.zhgh.activity.models;
import io.v.nutz.base.annontation.SelectEnum;
@SelectEnum
public enum ActivityAuditTypeEnum {
ALL("ALL", "不限制"),
CLUB("CLUB", "审核本协会"),
DW("DW", "审核本单位"),
FGH("FGH", "审核本分工会");
public String value;
public String desc;
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
private ActivityAuditTypeEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
}
@@ -0,0 +1,66 @@
package io.v.nutz.zhgh.activity.models;
import cn.wizzer.framework.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.DB;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* @author zhf
* @date 2021/2/23 15:36
* @description 活动基础设置
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Table("activity_basic_settings")
@Comment("活动基础设置")
public class ActivityBasicSettings extends BaseModel implements Serializable {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("父级ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String parentId;
@Column
@Comment("代码")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String code;
@Column
@Comment("名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String name;
@Column
@Comment("备注")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String note;
@Column
@Comment("有子节点")
private boolean hasChildren;
@Column
@Comment("排序字段")
@Prev({
@SQL(db = DB.MYSQL, value = "SELECT IFNULL(MAX(location),0)+1 FROM activity_basic_settings"),
@SQL(db = DB.ORACLE, value = "SELECT COALESCE(MAX(location),0)+1 FROM activity_basic_settings")
})
private Integer location;
private List<ActivityBasicSettings> child;
}
@@ -0,0 +1,33 @@
package io.v.nutz.zhgh.activity.models;
import io.v.nutz.sys.models.Sys_union;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
/**
* TODO
*
* @Author zhf
* @Date 2022/7/28 13:49
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Table
@Comment("活动联合工会")
public class ActivityBasicUnion extends Sys_union {
@Column
@Name
@Comment("工会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true, nullEffective = true)
private String id;
@Column
@Comment("添加来源")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String source;
}
@@ -0,0 +1,134 @@
package io.v.nutz.zhgh.activity.models;
import io.v.nutz.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.DB;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.io.Serializable;
import java.util.List;
/**
* TODO
*
* @Author zhf
* @Date 2022/7/28 10:57
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Table
@TableIndexes({@Index(name = "INDEX_SYS_UNIT_PATH", fields = {"path"}, unique = true),
@Index(name = "INDEX_SYS_UNIT_UNITCODE", fields = {"unitcode"}, unique = true),
@Index(name = "INDEX_SYS_UNION", fields = {"unionid"}, unique = false),
})
@Comment("活动联合单位")
public class ActivityBasicUnit extends BaseModel implements Serializable {
private static final long serialVersionUID = 1L;
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(els = {@EL("uuid()")})
private String id;
@Column
@Comment("父级ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String parentId;
@Column
@Comment("树路径")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String path;
@Column
@Comment("单位名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String name;
@Column
@Comment("单位别名")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String aliasName;
@Column
@Comment("机构编码")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unitcode;
@Column
@Comment("单位介绍")
@ColDefine(type = ColType.VARCHAR, width = 255)
private String note;
@Column
@Comment("单位地址")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String address;
@Column
@Comment("联系电话")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String telephone;
@Column
@Comment("单位邮箱")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String email;
@Column
@Comment("单位网站")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String website;
@Column
@Comment("排序字段")
@Prev({
@SQL(db = DB.MYSQL, value = "SELECT IFNULL(MAX(location),0)+1 FROM sys_unit"),
@SQL(db = DB.ORACLE, value = "SELECT COALESCE(MAX(location),0)+1 FROM sys_unit")
})
private Integer location;
@Column
@Comment("有子节点")
private boolean hasChildren;
@Column
@Comment("单位logo")
@ColDefine(type = ColType.VARCHAR, width = 255)
private String logo;
@Column
@Comment("单位级别")
@ColDefine(type = ColType.INT, width = 3)
private int unitlevel;
@Column
@Comment("工会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionid;
@Column
@Comment("所属校区")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String xqid;
@Column
@Comment("所属类别id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String classid;
@Column
@Comment("福利单位id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String welfareUnitId;
private List<ActivityBasicUnit> child;
}
@@ -0,0 +1,93 @@
package io.v.nutz.zhgh.activity.models;
import cn.wizzer.framework.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
/**
* @author zhf
* @date 2021/2/24 14:29
* @description 比赛组别
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Table("activity_event")
@Comment("活动比赛组别")
public class ActivityEvent extends BaseModel implements Serializable {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("比赛组别")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String competitionCategory;
@Column
@Comment("距离")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String distance;
@Column
@Comment("运动项目")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String sports;
@Column
@Comment("项目类型")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String projectType;
@Column
@Comment("比赛项目编号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String projectCode;
@Column
@Comment("男女分组")
@ColDefine(type = ColType.INT, width = 50)
private Integer isMenWomen;
@Column
@Comment("是否趣味")
@ColDefine(type = ColType.BOOLEAN)
private boolean isInterest;
@Column
@Comment("属于那个运动类型")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String exerciseType;
@Column
@Comment("项目全名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String allName;
@Column
@Comment("开始时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String startAgeDate;
@Column
@Comment("结束时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String endAgeDate;
@Column
@Comment("是否启用")
@ColDefine(type = ColType.BOOLEAN)
private Boolean whetherEnable;
@Column
@Comment("备注")
@ColDefine(type = ColType.TEXT)
private String note;
}
@@ -0,0 +1,28 @@
package io.v.nutz.zhgh.activity.models;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import lombok.experimental.Accessors;
public interface ActivityImport {
@Data
@Accessors(chain = true)
class applyUser {
@Excel(name = "工会", width = 20d)
private String unionName;
@Excel(name = "工号", width = 20d)
private String loginName;
@Excel(name = "姓名", width = 20d)
private String userName;
@Excel(name = "性别", width = 20d)
private String sex;
@Excel(name = "项目编号", width = 20d)
private String projectCode;
@Excel(name = "身份", width = 20d)
private String identity;
}
}
@@ -0,0 +1,69 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
/**
* @author: Aaron
* @create: 2021-03-01 14:29
* @description: 活动计划
**/
@Data
@Table("activity_plan")
@Comment("活动计划")
public class ActivityPlan {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("计划名称")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String name;
@Column
@Comment("计划时间")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String time;
@Column
@Comment("项目数组")
@ColDefine(type = ColType.VARCHAR, width = 500)
private String event;
@Column
@Comment("项目id")
@ColDefine(type = ColType.VARCHAR, width = 500)
private String eventId;
@Column
@Comment("计划内容")
@ColDefine(type = ColType.TEXT)
private String content;
@Column
@Comment("预算费用")
@ColDefine(type = ColType.FLOAT)
private Double money;
@Column
@Comment("计划类型(1-校活动、2-分工会活动、3协会社团活动)")
@ColDefine(type = ColType.VARCHAR, width = 7)
private String type;
@Column
@Comment("分工会ID或社团ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String tissueId;
@Column
@Comment("活动类型")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityType;
}
@@ -0,0 +1,76 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
/**
* @author zhf
* @date 2021/5/19 14:43
* @description 运动会成绩
*/
@Data
@Table("activity_results")
@Comment("活动运动会成绩")
public class ActivityResults implements Serializable {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
/**
* 单项活动使用
*/
@Column
@Comment("用户id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("用户男女")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String sex;
@Column
@Comment("对应的活动")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityId;
@Column
@Comment("对应的项目")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String eventId;
@Column
@Comment("名次")
@ColDefine(type = ColType.INT, width = 2)
private Integer ranking;
@Column
@Comment("工会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionId;
@Column
@Comment("人数")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String numberOfPeople;
@Column
@Comment("积分")
@ColDefine(type = ColType.FLOAT, width = 5)
private double integral;
@Column
@Comment("个人1团队2")
@ColDefine(type = ColType.INT, width = 2)
private Integer isTeamPersonal;
}
@@ -0,0 +1,208 @@
package io.v.nutz.zhgh.activity.models;
import cn.wizzer.framework.base.model.BaseModel;
import io.v.nutz.sys.models.Sys_file;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-02-22 11:31
* @description: 校级活动
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Table("activity_school")
@Comment("校级活动")
public class ActivitySchool extends BaseModel implements Serializable {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("关联计划")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String planId;
@Column
@Comment("活动名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String name;
@Column
@Comment("活动地址")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String address;
@Column
@Comment("关联活动类型")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String typeId;
@Column
@Comment("活动编号")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String activityCode;
@Column
@Comment("报名开始时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String applyStartTime;
@Column
@Comment("报名结束时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String applyEndTime;
@Column
@Comment("活动开始时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String startTime;
@Column
@Comment("活动结束时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String endTime;
@Column
@Comment("关联主办单位")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> unitSponsor;
@Column
@Comment("关联承办单位")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> undertakeUnit;
@Column
@Comment("关联协办单位")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> unitJointly;
@Column
@Comment("活动项目")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> eventsIds;
@Column
@Comment("活动方式(1:竞赛 2:非竞赛)")
@ColDefine(type = ColType.INT, width = 2)
private Integer gameStyle;
@Column
@Comment("活动类型(2:综合类活动 1:单一活动)")
@ColDefine(type = ColType.INT, width = 2)
private Integer applyType;
@Column
@Comment("可报名范围组别")
@ColDefine(type = ColType.VARCHAR, width = 32)
private Integer activityGroupId;
@Column
@Comment("经费预算")
@ColDefine(type = ColType.FLOAT, width = 10, precision = 2)
private Double funding;
@Column
@Comment("报名方式(1:个人 2:分工会 3:小程序)")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Integer> applyWay;
@Column
@Comment("报名人员类型(1:会员 2:普通教职工)")
@ColDefine(type = ColType.INT, width = 2)
private Integer personType;
@Column
@Comment("运动员资格(竞赛)")
@ColDefine(type = ColType.TEXT)
private String athleteQualification;
@Column
@Comment("报名方法(竞赛)")
@ColDefine(type = ColType.TEXT)
private String registrationMethod;
@Column
@Comment("竞赛方法(竞赛)")
@ColDefine(type = ColType.TEXT)
private String competitionMethod;
@Column
@Comment("奖励方法(竞赛)")
@ColDefine(type = ColType.TEXT)
private String rewardMethod;
@Column
@Comment("注意事项(竞赛)")
@ColDefine(type = ColType.TEXT)
private String precautions;
@Column
@Comment("活动通知(非竞赛)")
@ColDefine(type = ColType.TEXT)
private String eventNotification;
@Column
@Comment("是否关闭")
@ColDefine(type = ColType.BOOLEAN)
private Boolean close;
@Column
@Comment("活动级别(40001-校级、40002-分工会、40003-社团或协会)")
@ColDefine(type = ColType.INT, width = 10)
private Integer activityLevel;
@Column
@Comment("是否保存")
@ColDefine(type = ColType.BOOLEAN)
private Integer isSave;
@Column
@Comment("小程序活动封面")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> image;
@Many(field = "activityId")
private List<ActivitySchoolEvent> schoolEvents;
@Column
@Comment("活动所属工会")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String belongUnionId;
@Column
@Comment("活动所属社团")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String belongClubId;
@Column
@Comment("创建时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String foundDate;
@Column
@Comment("是否发送系统消息")
@ColDefine(type = ColType.BOOLEAN)
private Boolean xlFlag;
@Column
@Comment("是否开启")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isDisabled;
@Column
@Comment("小程序活动封面")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> files;
}
@@ -0,0 +1,170 @@
package io.v.nutz.zhgh.activity.models;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-02-22 11:31
* @description: 校活动报名
*/
@Data
@Table("activity_school_apply")
@TableIndexes({
@Index(name = "ASA_ACTIVITY", fields = {"activityId"}, unique = false),
@Index(name = "ASA_UNIT", fields = {"unitId"}, unique = false),
@Index(name = "ASA_UNION", fields = {"unionId"}, unique = false),
@Index(name = "ASA_USER", fields = {"userId"}, unique = false),
@Index(name = "ASA_APPLYUSER", fields = {"userId"}, unique = false),
})
public class ActivitySchoolApply implements Serializable {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("对应的活动")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityId;
@Column
@Comment("对应的项目")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String eventId;
@Column
@Comment("对应的是单项还是团体(1是个人2是团体)")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String awardsMode;
@Column
@Comment("所属队")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String teamId;
@Column
@Comment("所属单位")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unitId;
@Column
@Comment("所属工会")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionId;
@Column
@Comment("所属工会名称")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionName;
@Column
@Comment("所属活动工会")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityUnionId;
@Column
@Comment("所属活动工会名称")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityUnionName;
@Column
@Comment("报名人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String applyUser;
@Column
@Comment("参加人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("出生年月")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String birthday;
@Column
@Comment("报名时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String applyDate;
@Column
@Comment("身份(1 运动员 2 教练 3 领队4 处级领导5 替补6 团长7工作人员)")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> identity;
@Column
@Comment("是否处级领导")
@ColDefine(type = ColType.BOOLEAN)
private Boolean divisionLevelLeadership;
@Column
@Comment("是否兼运动员")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isAthlete;
@Column
@Comment("是否为工会总领队")
@ColDefine(type = ColType.BOOLEAN)
private Boolean unionLeader;
@Column
@Comment("是否为工会总教练")
@ColDefine(type = ColType.BOOLEAN)
private Boolean unionCoach;
@Column
@Comment("是否为工会团长")
@ColDefine(type = ColType.BOOLEAN)
private Boolean unionHead;
@Column
@Comment("是否为工会工作人员")
@ColDefine(type = ColType.BOOLEAN)
private Boolean unionStaff;
@Column
@Comment("状态(0 保存 1 待审核 2 报名成功 3 审核不通过)")
private Integer status;
@Column
@Comment("单位名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String unitname;
@Column
@Comment("小队名称")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String team;
@Column
@Comment("工号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String loginname;
@Column
@Comment("姓名")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String username;
@Column
@Comment("电话")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String mobile;
@Column
@Comment("性别")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String sex;
}
@@ -0,0 +1,149 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.util.NutMap;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-04-06 10:05
* @description: 校级活动活动项目关联表
**/
@Data
@Table("Activity_school_event")
@Comment("校级活动活动项目关联表")
public class ActivitySchoolEvent {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("活动ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityId;
@Column
@Comment("项目ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String eventId;
@Column
@Comment("比赛模式(1:单项 2:团队)")
@ColDefine(type = ColType.MYSQL_JSON)
private Integer awardsMode;
@Column
@Comment("组合方式(1:单项报名人数 2:团体报名人数)")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Integer> combinationMethod;
@Column
@Comment("组合方式1:最多人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer restrictTotalPeople;
@Column
@Comment("组合方式1:报名方式(1-单人、2-双人)")
@ColDefine(type = ColType.INT, width = 2)
private Integer registrationWays;
@Column
@Comment("组合方式2:最少人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer restrictMinNum;
@Column
@Comment("组合方式2:最多人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer restrictMaxNum;
@Column
@Comment("组合方式2:最大队数")
@ColDefine(type = ColType.INT, width = 8)
private Integer restrictTotalTeam;
@Column
@Comment("组合方式2:运动员最多人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer athletesMaxNum;
@Column
@Comment("组合方式2:运动员最少人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer athletesMinNum;
@Column
@Comment("组合方式2:领队人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer leanderNum;
@Column
@Comment("组合方式2:教练人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer coachNum;
@Column
@Comment("组合方式2:女队人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer restrictGirlNum;
@Column
@Comment("组合方式2:男队人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer restrictBoyNum;
@Column
@Comment("组合方式2:副处长(级)以上至少人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer deputyDirectorNum;
@Column
@Comment("组合方式2:替补人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer substituteNum;
@Column
@Comment("每人限报项目数")
@ColDefine(type = ColType.INT, width = 2)
private Integer restrictRegNumber;
@Column
@Comment("开始年龄")
@ColDefine(type = ColType.VARCHAR,width = 10)
private String startAgeDate;
@Column
@Comment("截至年龄")
@ColDefine(type = ColType.VARCHAR, width = 10)
private String endAgeDate;
@Column
@Comment("是否只报领队")
@ColDefine(type = ColType.BOOLEAN)
private boolean isLeader;
@Column
@Comment("每对运动员男女不做限制")
@ColDefine(type = ColType.BOOLEAN)
private boolean isManGirlNum;
@One(field = "activityId", key = "id")
private ActivitySchool activitySchool;
@Column
@Comment("分工会人数限制")
@ColDefine(type = ColType.MYSQL_JSON)
private List<NutMap> unionLimit;
@Column
@Comment("报名人数限制模式")
@ColDefine(type = ColType.INT)
private Integer applyUserModel;
}
@@ -0,0 +1,62 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.DB;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
/**
* @author: Aaron
* @create: 2021-02-22 11:31
* @description: 校活动 队
*/
@Data
@Table("activity_school_team")
@TableIndexes({
@Index(name = "AST_ACTIVITY", fields = {"activityId"}, unique = false),
})
@Comment("校活动-队")
public class ActivitySchoolTeam implements Serializable {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("对应的活动")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityId;
@Column
@Comment("项目ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String eventId;
@Column
@Comment("队名")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String name;
@Column
@Comment("最少人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer minNum;
@Column
@Comment("最多人数")
@ColDefine(type = ColType.INT, width = 8)
private Integer maxNum;
@Column
@Comment("排序")
@Prev({
@SQL(db = DB.MYSQL, value = "SELECT IFNULL(MAX(location),0)+1 FROM Activity_School_Team"),
@SQL(db = DB.ORACLE, value = "SELECT COALESCE(MAX(location),0)+1 FROM Activity_School_Team")
})
private Integer location;
}
@@ -0,0 +1,90 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import java.util.List;
/**
* @author: Aaron
* @create: 2020-12-13 09:31
* @description: 活动场地信息
**/
@Data
@Table("activity_site_info")
@Comment("活动场地信息")
public class ActivitySiteInfo {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("场地名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String name;
@Column
@Comment("场地地址")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String address;
@Column
@Comment("联系人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String contact_person;
@Column
@Comment("联系电话")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String contact_phone;
@Column
@Comment("开启状态")
@ColDefine(type = ColType.BOOLEAN)
private Boolean state;
@Column
@Comment("开放时段")
@ColDefine(type = ColType.MYSQL_JSON)
private List open_hours;
@Column
@Comment("创建人")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String create_username;
@Column
@Comment("创建时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String create_time;
@Column
@Comment("活动类型")
@ColDefine(type = ColType.INT)
private Integer typeId;
@Column
@Comment("是否多次预约")
@ColDefine(type = ColType.BOOLEAN)
private Boolean multiple;
@Column
@Comment("限定工作日预约")
@ColDefine(type = ColType.BOOLEAN)
private Boolean workday;
@Column
@Comment("限制男女,0表示不限制,1表示限制男,2表示限制女")
@ColDefine(type = ColType.INT)
private Integer sexLimit;
@Column
@Comment("个人预约限定人数")
@ColDefine(type = ColType.INT)
private Integer limitNum;
}
@@ -0,0 +1,135 @@
package io.v.nutz.zhgh.activity.models;
import cn.wizzer.framework.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.util.NutMap;
import java.util.List;
/**
* @author: Aaron
* @create: 2020-12-13 14:19
* @description: 活动场地预约信息
**/
@EqualsAndHashCode(callSuper = true)
@Data
@Table("activity_site_reserve")
@Comment("活动场地预约信息")
public class ActivitySiteReserve extends BaseModel {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("场地id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String site_id;
@Column
@Comment("预约人")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String reserve_person;
@Column
@Comment("预约人ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String reserve_person_id;
@Column
@Comment("预约人单位")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String reserve_person_unit;
@Column
@Comment("预约人联系方式")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String reserve_person_phone;
@Column
@Comment("预约事由")
@ColDefine(type = ColType.VARCHAR, width = 1000)
private String reserve_cause;
@Column
@Comment("预约状态id")
@ColDefine(type = ColType.INT, width = 4)
private Integer reserve_state;
@Column
@Comment("预约日期(天)")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String reserve_day;
@Column
@Comment("预约开始时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String start_time;
@Column
@Comment("预约结束时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String end_time;
@Column
@Comment("场地管理员id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String site_manager_id;
@Column
@Comment("场地管理员审核时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String site_manager_time;
@Column
@Comment("场地管理员退回理由")
@ColDefine(type = ColType.VARCHAR, width = 500)
private String back_out_opinion;
@Column
@Comment("主席审核人id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String chairman_review_person;
@Column
@Comment("主席审核时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String chairman_review_time;
@Column
@Comment("主席审核意见")
@ColDefine(type = ColType.VARCHAR, width = 500)
private String chairman_review_opinion;
@Column
@Comment("审核记录")
@ColDefine(type = ColType.VARCHAR, width = 500)
private List<NutMap> auditList;
@Column
@Comment("反馈意见")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String back_option;
@Column
@Comment("申请id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String sqid;
@Column
@Comment("参与人员")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String joinUser;
@Column
@Comment("预约类型(1.个人预约,2.单位预约)")
@ColDefine(type = ColType.INT, width = 10)
private Integer reserve_type;
}
@@ -0,0 +1,266 @@
package io.v.nutz.zhgh.activity.models;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.model.BaseModel;
import io.v.nutz.base.model.Goods;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.sys.models.Sys_home_activity;
import io.v.nutz.sys.services.SysHomeConvert;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.util.NutMap;
import java.io.Serializable;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-03-09 13:57
* @description: 社团或分工会活动校工会活动
**/
@Data
@Table("activity_tissue")
@Comment("社团或分工会活动校工会活动")
public class ActivityTissue extends BaseModel implements Serializable, SysHomeConvert {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("创建人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("联系方式")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String mobile;
@Column
@Comment("举办单位")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String helpUnitIds;
@Column
@Comment("协办单位")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> unitId;
@Column
@Comment("活动名称")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String name;
@Column
@Comment("活动编号")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String activityCode;
@Column
@Comment("活动项目类型")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String projectTypeCode;
@Column
@Comment("活动计划开始时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String startPlannedDate;
@Column
@Comment("活动计划结束时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String endPlannedDate;
@Column
@Comment("报名开始时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String applyStartTime;
@Column
@Comment("报名结束时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String applyEndTime;
@Column
@Comment("活动开始时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String startTime;
@Column
@Comment("活动结束时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String endTime;
@Column
@Comment("创建时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String applyTime;
@Column
@Comment("活动人数")
@ColDefine(type = ColType.INT, width = 6)
private Integer peopleNum;
@Column
@Comment("活动地点")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String address;
@Column
@Comment("发票")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> billFiles;
@Column
@Comment("照片")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> photoFiles;
@Column
@Comment("其他")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> otherFiles;
@Column
@Comment("活动类型")
@ColDefine(type = ColType.INT, width = 10)
private Integer type;
@Column
@Comment("创建人所属工会")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionId;
@Column
@Comment("创建人所属社团")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String clubId;
@Column
@Comment("活动内容")
@ColDefine(type = ColType.TEXT)
private String activityContent;
@Column
@Comment("活动考核内容")
@ColDefine(type = ColType.TEXT)
private String activityExamineContent;
@Column
@Comment("报名方式(1.个人 2.分工会 null.不需要报名)")
@ColDefine(type = ColType.INT)
private Integer signUpMethod;
@Column
@Comment("限制方式(1.总人数限制 2.分工会人数限制 null.不限制)")
@ColDefine(type = ColType.INT)
private Integer userNumberLimit;
@Column
@Comment("是否需要签到")
@ColDefine(type = ColType.BOOLEAN)
private boolean needSign;
@Column
@Comment("签到经纬度")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> location;
@Column
@Comment("签到范围")
@ColDefine(type = ColType.INT)
private Integer rangeMeter;
@Column
@Comment("总人数限制")
@ColDefine(type = ColType.INT)
private Integer totalUserNumberLimit;
@Column
@Comment("组队人数")
@ColDefine(type = ColType.INT)
private Integer teamNum;
@Column
@Comment("分工会人数限制")
@ColDefine(type = ColType.MYSQL_JSON)
private List<NutMap> unionUserNumberLimit;
@Column
@Comment("活动总结")
@ColDefine(type = ColType.TEXT)
private String activitySummary;
@Column
@Comment("活动分组id")
@ColDefine(type = ColType.INT)
private Integer groupId;
@Column
@Comment("封面图")
@ColDefine(type = ColType.VARCHAR)
private String cover;
@Column
@Comment("审核状态")
@ColDefine(type = ColType.INT)
private Integer state;
@Column
@Comment("审核id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String auditId;
@Column
@Comment("是否报名系统")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isEnrollSystem;
@Many(field = "tissueId")
private List<ActivityTissuePerson> tissuePersonList;
@Many(field = "reid")
private List<Goods> goods;
@Column
@Comment("是否发送系统消息")
@ColDefine(type = ColType.BOOLEAN)
private Boolean xlFlag;
@Column
@Comment("是否开启")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isDisabled;
@Column
@Comment("是否推送移动端首页")
@ColDefine(type = ColType.INT)
private Integer isPushHome;
@Override
public Sys_home_activity covertToSysHomeActivity() {
Sys_home_activity sysHomeActivity = new Sys_home_activity();
sysHomeActivity.setId(this.getId());
sysHomeActivity.setName(this.getName());
sysHomeActivity.setCover(this.getCover());
if (this.getType() == 40001) {
sysHomeActivity.setUrl("/platform/activity/applyUser/school");
} else if (this.getType() == 40002) {
sysHomeActivity.setUrl("/platform/activity/applyUser/union");
} else if (this.getType() == 40003) {
sysHomeActivity.setUrl("/platform/activity/applyUser/club");
}
sysHomeActivity.setH5Url("/mobile/activity/unionActivity");
if (StrUtil.isNotBlank(this.getApplyStartTime())) {
sysHomeActivity.setStartDate(DateUtil.parseDate(this.getApplyStartTime()));
sysHomeActivity.setEndDate(DateUtil.parseDate(this.getApplyEndTime()));
}
sysHomeActivity.setAllowUserGroupId(this.getGroupId());
sysHomeActivity.setEnable(this.getIsDisabled());
sysHomeActivity.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeActivity;
}
}
@@ -0,0 +1,94 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
/**
* @author: Aaron
* @create: 2021-03-09 14:02
* @description: 活动人员列表
**/
@Data
@Table("activity_tissue_person")
@Comment("活动人员列表")
public class ActivityTissuePerson {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("分工会或社团活动ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String tissueId;
@Column
@Comment("用户ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("报名人ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String applyUserId;
@Column
@Comment("报名人姓名")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String applyUserUserName;
@Column
@Comment("签字ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String signId;
@Column
@Comment("用户姓名")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String userName;
@Column
@Comment("用户工号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String loginName;
@Column
@Comment("用户性别")
@ColDefine(type = ColType.VARCHAR, width = 2)
private String sex;
@Column
@Comment("用户手机号")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String mobile;
@Column
@Comment("用户单位")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String unitName;
@Column
@Comment("用户工会")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String unionName;
@Column
@Comment("是否签到")
@ColDefine(type = ColType.BOOLEAN)
private boolean isSign;
@Column
@Comment("签到时间")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String signTime;
@Column
@Comment("报名时间")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String applyDateTime;
}
@@ -0,0 +1,39 @@
package io.v.nutz.zhgh.activity.models;
import io.v.nutz.base.model.AuditState;
import lombok.Data;
import lombok.experimental.Accessors;
import org.nutz.dao.entity.annotation.*;
import java.util.List;
@Table
@Data
@Accessors(chain = true)
@Comment("活动场地类型")
public class ActivityType {
@Id
@Comment("ID")
@ColDefine(type = ColType.INT)
private Integer id;
@Column
@Comment("名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String meetingTypeName;
@Column
@Comment("模块名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String moduleName;
@Column
@Comment("排序")
@ColDefine(type = ColType.INT)
private int sortNum;
@Many(field = "meetingTypeId")
private List<AuditState> auditStateList;
}
@@ -0,0 +1,38 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
/**
* TODO
*
* @Author zhf
* @Date 2022/7/29 14:12
*/
@Data
@Table
@Comment("活动工会")
public class ActivityUnion {
@Column
@Name
@Comment("工会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true, nullEffective = true)
private String id;
@Column
@Comment("工会名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String unionname;
@Column
@Comment("活动id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityId;
}
@@ -0,0 +1,72 @@
package io.v.nutz.zhgh.activity.models;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.zhgh.data.constant.ConditionalOperational;
import io.v.nutz.zhgh.data.constant.MatchMethod;
import lombok.Data;
import org.nutz.dao.util.cri.SqlExpression;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Data
public class ActivityUserCnd {
private MatchMethod matchMethod;
private List<Rule> rules;
/**
* sql格式
*
* @param userTablePrefix 用户表前缀
* @param activityUserCndStr 活动用户cnd str
* @param reverseSelection 逆向选择
* @return {@link SqlExpressionGroup}
* @throws Exception 异常
*/
public static SqlExpressionGroup formatSql(String userTablePrefix, String activityUserCndStr, boolean reverseSelection) throws Exception {
SqlExpressionGroup seg = new SqlExpressionGroup();
if (StrUtil.isBlank(activityUserCndStr)) {
return seg;
}
String prefix = StrUtil.blankToDefault(userTablePrefix, "user");
ActivityUserCnd activityUserCnd = Json.fromJson(ActivityUserCnd.class, activityUserCndStr);
if (activityUserCnd.getMatchMethod() != null && Lang.isNotEmpty(activityUserCnd.getRules())) {
List<Rule> filterRules = activityUserCnd.getRules().stream().filter(v -> StrUtil.isAllNotBlank(v.getName(), v.getCnd())).collect(Collectors.toList());
ConditionalOperational[] conditionalOperationals = ConditionalOperational.values();
Map<String, ConditionalOperational> conditionalOperationalMap = Arrays.stream(conditionalOperationals).collect(Collectors.toMap(v -> v.getValue(), v -> v));
for (Rule rule : filterRules) {
ConditionalOperational conditionalOperational = conditionalOperationalMap.get(rule.getCnd());
conditionalOperational.exec(seg, prefix + "." + rule.getName(), rule.getValue(), activityUserCnd.getMatchMethod());
}
}
if (reverseSelection) {
List<SqlExpression> exps = seg.getExps();
for (SqlExpression exp : exps) {
exp.setNot(true);
}
}
return seg;
}
@Data
public static class Rule {
private String name;
private String cnd;
private String value;
}
}
@@ -0,0 +1,52 @@
package io.v.nutz.zhgh.activity.models;
import cn.wizzer.framework.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.nutz.dao.entity.annotation.*;
import java.io.Serial;
import java.io.Serializable;
/**
* @author zxy
* @Description 活动人员范围设置
* @createTime 2022年01月04日 11:36:00
*/
@Table
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Comment("活动人员范围设置")
public class ActivityUserScope extends BaseModel implements Serializable {
@Serial
private static final long serialVersionUID = -5794884307112120554L;
@Id
@Comment("id")
private Integer id;
@Column
@ColDefine
@Comment("groupId")
private Integer groupId;
@Column
@ColDefine(type = ColType.VARCHAR)
@Comment("name")
private String groupName;
@Column
@ColDefine(type = ColType.VARCHAR, width = 32)
@Comment("userid")
private String userId;
@Column
@ColDefine(type = ColType.VARCHAR, width = 32)
@Comment("创建人")
private String creator;
}
@@ -0,0 +1,55 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.util.NutMap;
import java.util.List;
/**
* @Author JyuHsin
* @Date 2022/6/29
* @Description
*/
@Data
@Table("activity_summary")
@Comment("活动总结")
public class ActivityYearSummary {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("提交人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("提交时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String ctime;
@Column
@Comment("工会/协会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String tissueId;
@Column
@Comment("总结类型")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String summaryType;
@Column
@Comment("总结来源(1-校活动、2-分工会活动、3协会社团活动)")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String summaryFrom;
@Column
@Comment("文件")
@ColDefine(type = ColType.MYSQL_JSON)
private List<NutMap> files;
}
@@ -0,0 +1,67 @@
package io.v.nutz.zhgh.activity.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
/**
* @author zhf
* @date 2021/4/10 15:26
* @description
*/
@Data
@Table("school_assign_grades")
@Comment("活动获奖")
public class SchoolAssignGrades {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("对应的活动")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityId;
@Column
@Comment("单项活动才有userid")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("对应的项目")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String eventId;
@Column
@Comment("所属单位")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unitId;
@Column
@Comment("荣誉奖项")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String mc;
@Column
@Comment("奖品名称")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String jpmc;
@Column
@Comment("金额")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String money;
@Column
@Comment("奖品类型")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String jplx;
}
@@ -0,0 +1,24 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
import io.v.nutz.base.service.ViService;
import org.nutz.dao.Cnd;
import org.nutz.dao.sql.Sql;
import java.util.List;
/**
* @author zxy
* @Description TODO
* @createTime 2022年01月06日 09:02:00
*/
public interface ActivityBasicScopeService extends ViService<ActivityUserScope> {
Sql createSql(Cnd cnd);
/**
* 大量数据插入
*/
void largeDataInsert(List<ActivityUserScope> list) ;
}
@@ -0,0 +1,65 @@
package io.v.nutz.zhgh.activity.services;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import java.util.List;
/**
* 会议通用方法
*/
@IocBean
public interface ActivityCommonService {
/**
* 根据typeId查询所属模块名称
*
* @param typeId
* @return
*/
String findModuleNameByTypeId(Integer typeId);
/**
* 根据MeetId查询所属模块名称
*
* @param meetingId
* @return
*/
String findModuleNameByActivityId(String meetingId);
/**
* 根据模块名称查找对应stateCode 最开始的那个
*
* @param moduleName
* @return
*/
Integer findStartStateCodeByModuleName(String moduleName);
Integer findAfterStateCode(Integer stateCode, boolean isPass);
Integer findAfterStateCodeByModuleName(Integer stateCode, String moduleName);
/**
* 根据会议id查询请假成功的code
*
* @param meetingId
* @return
*/
Integer findSuccessStateCode(String meetingId);
/**
* 获取当前用户关联哪些会议
*
* @return
*/
Object find();
/**
* 查询当前登录用户能审核的状态Id
*
* @return
*/
List<Integer> findStateIdForMeCanAudit();
List<NutMap> getNextAuditUser(Integer stateCode, String moduleName);
}
@@ -0,0 +1,35 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivityPlan;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
/**
* @author: Aaron
* @create: 2021-03-09 10:27
* @description:
**/
public interface ActivityPlanService extends ViService<ActivityPlan> {
/**
* 首页数据
*
* @param page
* @param year
* @param name
* @param tissueId
* @param cnd
* @return
*/
Object pageData(PageForm page, String year, String name, String tissueId, CndPlus cnd);
/**
* 根据id查询单个
*
* @param id
* @return
*/
Object findOne(String id);
}
@@ -0,0 +1,18 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivitySchoolApply;
import io.v.nutz.base.service.ViService;
import java.util.List;
/**
* @author Aaron
*/
public interface ActivitySchoolApplyService extends ViService<ActivitySchoolApply> {
void doApplies(List<ActivitySchoolApply> applies);
void doApplies(String activity, String union_id, String eventId,List<ActivitySchoolApply> applies);
void doApply(ActivitySchoolApply apply);
}
@@ -0,0 +1,18 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivitySchool;
import io.v.nutz.zhgh.activity.models.ActivitySchoolEvent;
import io.v.nutz.base.service.ViService;
/**
* @author Aaron
*/
public interface ActivitySchoolService extends ViService<ActivitySchool> {
String doAdd(ActivitySchool activitySchool, ActivitySchoolEvent[] events);
void doEdit(ActivitySchool activitySchool, ActivitySchoolEvent[] events, String applyEndTime);
void doDelete(String id);
}
@@ -0,0 +1,12 @@
package io.v.nutz.zhgh.activity.services;
import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.zhgh.activity.models.ActivitySchoolTeam;
/**
* @author Aaron
*/
public interface ActivitySchoolTeamService extends BaseService<ActivitySchoolTeam> {
}
@@ -0,0 +1,47 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivityTissue;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
/**
* @author: Aaron
* @create: 2021-03-09 10:27
* @description:
**/
public interface ActivityTissueService extends ViService<ActivityTissue> {
/**
* 首页数据
*
* @param page
* @param year
* @param name
* @param unionId
* @return
*/
Object pageData(PageForm page, String year, String name, String unionId,Integer type);
/**
* 删除
*
* @param id
*/
void doDelete(String id);
/**
* 编辑
*
* @param tissue
*/
void doEdit(ActivityTissue tissue);
/**
* 根据id查询单个
*
* @param id
* @return
*/
Object findOne(String id);
}
@@ -0,0 +1,24 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivityType;
import io.v.nutz.base.service.ViService;
/**
* 会议类型 流程 service
*/
public interface ActivityTypeService extends ViService<ActivityType> {
/**
* 找出最大的那行stateId
*
* @return
*/
int findMaxStateId();
void add(ActivityType activityType);
void edit(ActivityType activityType);
void delete(ActivityType activityType);
}
@@ -0,0 +1,12 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivityYearSummary;
import io.v.nutz.base.service.ViService;
/**
* @Author JyuHsin
* @Date 2022/6/29
* @Description
*/
public interface ActivityYearSummaryService extends ViService<ActivityYearSummary> {
}
@@ -0,0 +1,8 @@
package io.v.nutz.zhgh.activity.services;
import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.zhgh.activity.models.ActivitySiteInfo;
public interface SiteInfoService extends BaseService<ActivitySiteInfo> {
}
@@ -0,0 +1,8 @@
package io.v.nutz.zhgh.activity.services;
import io.v.nutz.zhgh.activity.models.ActivitySiteReserve;
import io.v.nutz.base.service.BaseService;
public interface SiteReserveService extends BaseService<ActivitySiteReserve> {
}
@@ -0,0 +1,82 @@
package io.v.nutz.zhgh.activity.services.impl;
import cn.hutool.core.collection.CollectionUtil;
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
import io.v.nutz.zhgh.activity.services.ActivityBasicScopeService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.service.impl.ViServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.NutTxDao;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.IocBean;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author zxy
* @Description TODO
* @createTime 2022年01月06日 09:03:00
*/
@IocBean(args = {"refer:dao"})
@Slf4j
public class ActivityBasicScopeServiceImpl extends ViServiceImpl<ActivityUserScope> implements ActivityBasicScopeService {
public ActivityBasicScopeServiceImpl(Dao dao) {
super(dao);
}
@Override
public Sql createSql(Cnd cnd) {
return null;
}
/**
* 大量数据插入
* 注:Future.get()可以同步等待线程执行完成,并且可以监听执行结果
* 你也可以用countDownLatch
*/
@Override
public void largeDataInsert(List<ActivityUserScope> list) {
log.info("开始时间" + DateUtil.getDateTime());
List<List<ActivityUserScope>> splitList = CollectionUtil.split(list, 500);
NutTxDao nutTxDao = new NutTxDao(dao()).setDebug(true);
nutTxDao.beginRC();
ExecutorService executorService = Executors.newWorkStealingPool();
List<Callable<Object>> taskList = new ArrayList<>();
for (List<ActivityUserScope> everyList : splitList) {
taskList.add(() -> nutTxDao.insert(everyList).size());
}
List<Future<Object>> futureList = null;
AtomicInteger atomicInteger = new AtomicInteger();
try {
futureList = executorService.invokeAll(taskList);
for (Future<Object> future : futureList) {
atomicInteger.getAndAdd((Integer) future.get());
}
if (atomicInteger.get() != list.size()) {
throw new RuntimeException("插入数据与期望数据条数不符");
}
nutTxDao.commit();
} catch (Exception e) {
nutTxDao.rollback();
throw new RuntimeException(e);
} finally {
executorService.shutdown();
}
log.info("结束时间" + DateUtil.getDateTime());
}
}
@@ -0,0 +1,130 @@
package io.v.nutz.zhgh.activity.services.impl;
import io.v.nutz.zhgh.activity.models.ActivitySiteInfo;
import io.v.nutz.zhgh.activity.models.ActivityType;
import io.v.nutz.zhgh.activity.services.ActivityCommonService;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.enums.AuditTypeEnum;
import io.v.nutz.base.model.AuditState;
import io.v.nutz.base.service.impl.ViServiceImpl;
import io.v.nutz.web.commons.utils.ShiroUtil;
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 org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@IocBean(args = {"refer:dao"})
public class ActivityCommonServiceImpl extends ViServiceImpl implements ActivityCommonService {
@Inject
private Vi vi;
public ActivityCommonServiceImpl(Dao dao) {
super(dao);
}
@Override
public String findModuleNameByTypeId(Integer typeId) {
ActivityType activityType = dao().fetch(ActivityType.class, Cnd.where("id", "=", typeId));
if (Lang.isNotEmpty(activityType)) {
return activityType.getModuleName();
}
return null;
}
@Override
public String findModuleNameByActivityId(String activityId) {
ActivitySiteInfo activitySiteInfo = dao().fetch(ActivitySiteInfo.class, activityId);
if (Lang.isNotEmpty(activitySiteInfo) && null != activitySiteInfo.getTypeId()) {
return findModuleNameByTypeId(activitySiteInfo.getTypeId());
}
return null;
}
@Override
public Integer findStartStateCodeByModuleName(String moduleName) {
List<AuditState> auditStateList = dao().query(AuditState.class, Cnd.where("module", "=", moduleName).asc("stateId"));
Optional<Integer> minOptional = auditStateList.stream().map(v -> v.getStateId()).min(Comparator.comparingInt(a -> a)).stream().findFirst();
return minOptional.orElse(null);
}
@Override
public Integer findAfterStateCode(Integer stateCode, boolean isPass) {
AuditState auditState = dao().fetch(AuditState.class, stateCode);
return isPass ? auditState.getAfterPassStateId() : auditState.getAfterRejectStateId();
}
@Override
public Integer findSuccessStateCode(String meetingId) {
String moduleName = findModuleNameByActivityId(meetingId);
Cnd cnd = Cnd.where("module", "=", moduleName).and("stateAuditType", "=", AuditTypeEnum.PROCESS_PASS.getValue());
AuditState auditState = dao().fetch(AuditState.class, cnd);
return auditState.getStateId();
}
@Override
public Integer findAfterStateCodeByModuleName(Integer stateCode, String moduleName) {
AuditState auditState = dao().fetch(AuditState.class, Cnd.where("stateId", "=", stateCode));
if (Lang.isNotEmpty(auditState)) {
return auditState.getAfterStateId();
}
return null;
}
@Override
public Object find() {
List<ActivityType> typeList = dao().query(ActivityType.class, null);
List<String> typeModuleNameList = typeList.stream().map(ActivityType::getModuleName).collect(Collectors.toList());
List<AuditState> auditStateList = dao().query(AuditState.class, Cnd.where("module", "in", typeModuleNameList));
for (AuditState state : auditStateList) {
dao().fetchLinks(state, "auditStateUserList");
}
return null;
}
@Override
public List<Integer> findStateIdForMeCanAudit() {
Cnd cnd = Cnd.NEW();
cnd.and("stateId", "in", Sqls.create("select stateId from audit_state_user where userId = @userid").setParam("userid", ShiroUtil.getPrincipalProperty("id")));
List<AuditState> auditStateList = dao().query(AuditState.class, cnd);
return auditStateList.stream().map(v -> v.getStateId()).collect(Collectors.toList());
}
/*根据状态码获取下一节点审核人*/
@Override
public List<NutMap> getNextAuditUser(Integer stateCode, String moduleName) {
Sql sql = Sqls.create("""
select
au.userId as userId,
u.username as userName,
u.loginname as loginName,
u.unitname as unitName,
u.mobile as mobile
from
audit_state_user au
left join
`user` u on au.userid = u.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("stateId", "=", stateCode);
sql.setCondition(cnd);
return listMap(sql);
}
}
@@ -0,0 +1,84 @@
package io.v.nutz.zhgh.activity.services.impl;
import io.v.nutz.zhgh.activity.models.ActivityPlan;
import io.v.nutz.zhgh.activity.services.ActivityPlanService;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.impl.ViServiceImpl;
import io.v.nutz.web.commons.utils.ShiroUtil;
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 org.nutz.lang.Strings;
/**
* @author: Aaron
* @create: 2021-03-09 10:29
* @description:
**/
@IocBean(args = {"refer:dao"})
public class ActivityPlanServiceImpl extends ViServiceImpl<ActivityPlan> implements ActivityPlanService {
public ActivityPlanServiceImpl(Dao dao) {
super(dao);
}
@Inject
private Vi vi;
@Override
public Object pageData(PageForm page, String year, String name, String tissueId, CndPlus cnd) {
Sql sql = Sqls.create("""
SELECT
ap.*,
ab.name as activityTypeName,
year(ap.time) as `year`,
(SELECT GROUP_CONCAT(ev.allName) from activity_event ev WHERE JSON_CONTAINS(ap.`event`, CONCAT('"',ev.id,'"'))) allName,
((SELECT COUNT(1) FROM activity_school acs WHERE acs.planId = ap.id) >0 ) carryOut
FROM
activity_plan ap
left join activity_basic_settings ab on ab.id = ap.activityType
$condition
""");
cnd.andEx("YEAR(ap.time)", "=", year);
cnd.andEx("ap.tissueId", "=", tissueId);
if (Strings.isNotBlank(name)) {
cnd.where().andLike("ap.name", name);
}
if (!ShiroUtil.hasAnyRoles("sysadmin,H10,A06")) {
if (ShiroUtil.hasRole("H04")) {
cnd.and("tissueId", "in", vi.getMangeUnionStr());
} else if (ShiroUtil.hasRole("club01")) {
cnd.and("tissueId", "in", vi.getMangeClubStr());
}
}
cnd.desc("ap.time");
sql.setCondition(cnd);
return this.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@Override
public Object findOne(String id) {
Sql sql = Sqls.create("""
SELECT
ap.*,
(SELECT GROUP_CONCAT(ev.allName) from activity_event ev WHERE JSON_CONTAINS(ap.`event`, CONCAT('"',ev.id,'"'))) allName
FROM
activity_plan ap
WHERE
ap.id = @id
""").setParam("id", id);
return this.listMap(sql).get(0);
}
}
@@ -0,0 +1,44 @@
package io.v.nutz.zhgh.activity.services.impl;
import io.v.nutz.zhgh.activity.models.ActivitySchoolApply;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.base.service.impl.ViServiceImpl;
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.IocBean;
import java.util.List;
@IocBean(args = {"refer:dao"})
public class ActivitySchoolApplyServiceImpl extends ViServiceImpl<ActivitySchoolApply> implements ActivitySchoolApplyService {
public ActivitySchoolApplyServiceImpl(Dao dao) {
super(dao);
}
@Aop(TransAop.READ_COMMITTED)
public void doApplies(List<ActivitySchoolApply> applies) {
/*for (ActivitySchoolApply apply : applies) {
insert(apply);
}*/
dao().insert(applies);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void doApplies(String activity, String union_id, String eventId,List<ActivitySchoolApply> applies) {
clear(Cnd.where("activityId", "=", activity).and("unionId", "=", union_id).and("eventId","=",eventId));
doApplies(applies);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void doApply(ActivitySchoolApply apply) {
insert(apply);
}
}
@@ -0,0 +1,138 @@
package io.v.nutz.zhgh.activity.services.impl;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.zhgh.activity.models.*;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolTeamService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.service.impl.ViServiceImpl;
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.lang.Lang;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: Aaron
* @create: 2021-02-22 15:50
* @description: 活动信息管理 service
**/
@IocBean(args = {"refer:dao"})
public class ActivitySchoolServiceImpl extends ViServiceImpl<ActivitySchool> implements ActivitySchoolService {
public ActivitySchoolServiceImpl(Dao dao) {
super(dao);
}
@Inject
private ActivitySchoolTeamService activitySchoolTeamService;
@Inject
private ActivitySchoolApplyService activitySchoolApplyService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventService;
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventViService;
@Override
@Aop(TransAop.READ_COMMITTED)
public String doAdd(ActivitySchool activitySchool, ActivitySchoolEvent[] events) {
activitySchool.setClose(false);
ActivitySchool school = insert(activitySchool);
addTeam(school.getId(), events);
return school.getId();
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void doEdit(ActivitySchool activitySchool, ActivitySchoolEvent[] events, String applyEndTime) {
if (StrUtil.isNotBlank(applyEndTime)) {
long time = DateUtil.formatDate(applyEndTime);
long l = System.currentTimeMillis();
if (l < time) {
/* activitySchoolApplyService.clear(Cnd.where("activityId", "=", activitySchool.getId()));
activitySchoolEventService.clear(Cnd.where("activityId", "=", activitySchool.getId()));
activitySchoolTeamService.clear(Cnd.where("activityId", "=", activitySchool.getId()));
addTeam(activitySchool.getId(), events);*/
}
}
update(activitySchool);
List<ActivitySchoolEvent> query = activitySchoolEventViService.query(Cnd.where("activityId", "=", activitySchool.getId()));
List<ActivitySchoolEvent> collect = query.stream().filter(v -> {
return !activitySchool.getEventsIds().contains(v.getEventId());
}).collect(Collectors.toList());
List<ActivitySchoolEvent> collect1 = Lang.array2list(events).stream().filter(v -> {
return !query.stream().map(x -> x.getEventId()).collect(Collectors.toList()).contains(v.getEventId()) && (v.getId() == null || !v.getId().equals("allItems"));
}).collect(Collectors.toList());
if (collect.size() > 0) {
collect.forEach(v -> {
activitySchoolApplyService.clear(Cnd.where("activityId", "=", activitySchool.getId()).and("eventId", "=", v.getEventId()));
activitySchoolEventService.clear(Cnd.where("activityId", "=", activitySchool.getId()).and("eventId", "=", v.getEventId()));
activitySchoolTeamService.clear(Cnd.where("activityId", "=", activitySchool.getId()).and("eventId", "=", v.getEventId()));
});
}
if (collect1.size() > 0) {
addTeam(activitySchool.getId(), collect1.toArray(new ActivitySchoolEvent[collect1.size()]));
}
for (ActivitySchoolEvent event : events) {
update(event);
}
/* activitySchoolTeamService.clear(Cnd.where("activityId", "=", activitySchool.getId()));
addTeam(activitySchool.getId(), events);*/
}
@Aop(TransAop.READ_COMMITTED)
private void addTeam(String schoolId, ActivitySchoolEvent[] events) {
if (events.length > 0) {
Arrays.stream(events).forEach(v -> {
v.setActivityId(schoolId);
activitySchoolEventService.insert(v);
Integer totalTeam = v.getRestrictTotalTeam();
if (totalTeam != null && totalTeam > 0) {
for (int i = 1; i <= totalTeam; i++) {
ActivitySchoolTeam team = new ActivitySchoolTeam();
team.setActivityId(schoolId);
team.setEventId(v.getEventId());
team.setName(String.format("第%d队", i));
team.setMinNum(v.getRestrictMinNum());
team.setMaxNum(v.getRestrictMaxNum());
activitySchoolTeamService.insert(team);
}
}
});
}
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void doDelete(String id) {
activitySchoolApplyService.clear(Cnd.where("activityId", "=", id));
activitySchoolEventService.clear(Cnd.where("activityId", "=", id));
activitySchoolTeamService.clear(Cnd.where("activityId", "=", id));
activitySchoolEventService.dao().clear(ActivityTissue.class, Cnd.where("id", "=", id));
dao().clear(ActivityUnion.class, Cnd.where("activityId", "=", id));
this.delete(id);
}
}
@@ -0,0 +1,18 @@
package io.v.nutz.zhgh.activity.services.impl;
import cn.wizzer.framework.base.service.BaseServiceImpl;
import io.v.nutz.zhgh.activity.models.ActivitySchoolTeam;
import io.v.nutz.zhgh.activity.services.ActivitySchoolTeamService;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
@IocBean(args = {"refer:dao"})
public class ActivitySchoolTeamServiceImpl extends BaseServiceImpl<ActivitySchoolTeam> implements ActivitySchoolTeamService {
public ActivitySchoolTeamServiceImpl(Dao dao) {
super(dao);
}
}
@@ -0,0 +1,193 @@
package io.v.nutz.zhgh.activity.services.impl;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.model.Audit;
import io.v.nutz.base.model.Goods;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.service.impl.ViServiceImpl;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_home_activity;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.ActivityTissue;
import io.v.nutz.zhgh.activity.models.ActivityTissuePerson;
import io.v.nutz.zhgh.activity.services.ActivityTissueService;
import io.v.nutz.zhgh.jf.model.ActivityBx;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import java.util.List;
/**
* @author: Aaron
* @create: 2021-03-09 10:29
* @description:
**/
@IocBean(args = {"refer:dao"})
public class ActivityTissueServiceImpl extends ViServiceImpl<ActivityTissue> implements ActivityTissueService {
public ActivityTissueServiceImpl(Dao dao) {
super(dao);
}
@Inject
private Vi vi;
@Inject("ActivityTissuePerson")
private ViService<ActivityTissuePerson> tissuePersonService;
@Override
public Object pageData(PageForm page, String year, String name, String unionId, Integer type) {
CndPlus cnd = CndPlus.create();
Sql sql = Sqls.create("""
SELECT
tissue.*,
uni.unionname ,
club.`name` clubName,
abs.`name` projectTypeName
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
$condition
""");
cnd.andEx("YEAR(tissue.startTime)", "=", year);
cnd.andEx("tissue.projectTypeCode", "!=", "50004");
cnd.andEx("tissue.unionId", "=", unionId);
cnd.andEx("tissue.type", "=", type);
if (Strings.isNotBlank(name)) {
cnd.where().andLike("tissue.name", name);
}
if (!ShiroUtil.hasAnyRoles("sysadmin,H10,A06")) {
cnd.and("tissue.userId", "=", ShiroUtil.getUserId());
/* if (ShiroUtil.hasRole("H04")) {
cnd.and("tissue.unionId", "in", vi.getMangeUnionStr());
} else if (ShiroUtil.hasRole("club01")) {
cnd.and("tissue.clubId", "in", vi.getMangeClubStr());
}*/
}
if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) {
cnd.orderBy(page.getPageOrderName(), page.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
} else {
cnd.desc("tissue.startTime");
}
sql.setCondition(cnd);
return this.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void doDelete(String id) {
this.delete(id);
tissuePersonService.clear(Cnd.where("tissueId", "=", id));
dao().clear(Goods.class, Cnd.where("reid", "=", id));
dao().delete(Sys_home_activity.class, id);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void doEdit(ActivityTissue tissue) {
tissuePersonService.clear(Cnd.where("tissueId", "=", tissue.getId()));
tissuePersonService.dao().clear(Goods.class, Cnd.where("reid", "=", tissue.getId()));
if (tissue.getSignUpMethod() == null) {
tissue.setUserNumberLimit(null);
tissue.setTotalUserNumberLimit(null);
tissue.setUnionUserNumberLimit(null);
}
if (tissue.getUserNumberLimit() == null) {
tissue.setTotalUserNumberLimit(null);
tissue.setUnionUserNumberLimit(null);
} else if (tissue.getUserNumberLimit() == 1) {
tissue.setUnionUserNumberLimit(null);
} else if (tissue.getUserNumberLimit() == 2) {
tissue.setTotalUserNumberLimit(null);
}
this.update(tissue);
List<ActivityTissuePerson> tissuePersonList = tissue.getTissuePersonList();
tissuePersonList.forEach(v -> {
v.setTissueId(tissue.getId());
});
tissuePersonService.insert(tissuePersonList);
tissue.getGoods().forEach(v -> {
v.setActivityCode(tissue.getActivityCode());
v.setReid(tissue.getId());
});
tissuePersonService.dao().insert(tissue.getGoods());
/* if (Lang.isNotEmpty(tissue.getBillFiles())) {
tissuePersonService.dao().update(ActivityBx.class, Chain.make("billFiles", tissue.getBillFiles()),
Cnd.where("activity_id", "=", tissue.getId()));
}
if (Lang.isNotEmpty(tissue.getOtherFiles())) {
tissuePersonService.dao().update(ActivityBx.class, Chain.make("otherFiles", tissue.getOtherFiles()),
Cnd.where("activity_id", "=", tissue.getId()));
}
if (Lang.isNotEmpty(tissue.getPhotoFiles())) {
tissuePersonService.dao().update(ActivityBx.class, Chain.make("photoFiles", tissue.getPhotoFiles()),
Cnd.where("activity_id", "=", tissue.getId()));
}*/
if (tissue.getIsEnrollSystem()) {
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
dao().insertOrUpdate(sysHomeActivity);
} else {
dao().delete(Sys_home_activity.class, tissue.getId());
}
}
@Override
public Object findOne(String id) {
Sql sql = Sqls.create("""
SELECT
tissue.*,
uni.unionname,
club.`name` clubName,
u.username,
u.loginname,
abs.`name` projectTypeName
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN `user` u ON u.id=tissue.userId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
WHERE
tissue.id = @id
""").setParam("id", id);
NutMap nutMap = this.fetch(sql);
List<ActivityTissuePerson> personList = tissuePersonService.query(Cnd.where("tissueId", "=", nutMap.getString("id")));
List<Goods> goodsList = tissuePersonService.dao().query(Goods.class, Cnd.where("reid", "=", nutMap.getString("id")));
nutMap.setv("tissuePersonList", personList);
nutMap.setv("goods", goodsList);
if (Strings.isNotBlank(nutMap.getString("auditId"))) {
nutMap.setv("audit", tissuePersonService.dao().fetch(Audit.class, nutMap.getString("auditId")));
}
return nutMap;
}
}
@@ -0,0 +1,103 @@
package io.v.nutz.zhgh.activity.services.impl;
import io.v.nutz.zhgh.activity.models.ActivityType;
import io.v.nutz.zhgh.activity.services.ActivityCommonService;
import io.v.nutz.zhgh.activity.services.ActivityTypeService;
import io.v.nutz.base.model.AuditState;
import io.v.nutz.base.model.AuditStateUser;
import io.v.nutz.base.service.impl.ViServiceImpl;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import java.util.List;
@IocBean(args = {"refer:dao"})
public class ActivityTypeServiceImpl extends ViServiceImpl<ActivityType> implements ActivityTypeService {
@Inject
private ActivityCommonService activityCommonService;
public ActivityTypeServiceImpl(Dao dao) {
super(dao);
}
@Override
public int findMaxStateId() {
return dao().func(AuditState.class, "max", "stateId");
}
/**
* 根据模块名称查找stateId
*
* @param moduleName
* @return
*/
private String[] findStateIdArray(String moduleName) {
//查询该类型原来关联的stateId
Sql stateSql = Sqls.create("select stateId from audit_state where module = @moduleName").setParam("moduleName", moduleName);
return (String[]) Daos.query(dao(), stateSql.toString(), Sqls.callback.strs());
}
/**
* 添加流程信息
*
* @param activityType
*/
private void insertAuditInfo(ActivityType activityType) {
List<AuditState> auditStateList = activityType.getAuditStateList();
if (Lang.isNotEmpty(auditStateList)) {
for (int i = 0; i < auditStateList.size(); i++) {
AuditState state = auditStateList.get(i);
state.setModule(activityType.getModuleName());
state.setMeetingTypeId(activityType.getId());
dao().insertWith(state, "^auditStateUserList$");
}
}
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void add(ActivityType activityType) {
dao().insert(activityType);
insertAuditInfo(activityType);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void edit(ActivityType activityType) {
dao().update(activityType);
//查询该类型原来关联的stateId
String[] stateIdStr = findStateIdArray(activityType.getModuleName());
//删除原来审核状态下的审核人员
dao().clear(AuditStateUser.class, Cnd.where("stateId", "in", stateIdStr));
//删除原来的审核状态
dao().clear(AuditState.class, Cnd.where("stateId", "in", stateIdStr));
//添加新的审核流程
insertAuditInfo(activityType);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void delete(ActivityType activityType) {
//查询该类型原来关联的stateId
String[] stateIdStr = findStateIdArray(activityType.getModuleName());
//删除原来审核状态下的审核人员
dao().clear(AuditStateUser.class, Cnd.where("stateId", "in", stateIdStr));
//删除原来的审核状态
dao().clear(AuditState.class, Cnd.where("stateId", "in", stateIdStr));
dao().delete(activityType);
}
}
@@ -0,0 +1,19 @@
package io.v.nutz.zhgh.activity.services.impl;
import io.v.nutz.zhgh.activity.models.ActivityYearSummary;
import io.v.nutz.zhgh.activity.services.ActivityYearSummaryService;
import io.v.nutz.base.service.impl.ViServiceImpl;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
/**
* @Author JyuHsin
* @Date 2022/6/29
* @Description
*/
@IocBean(args = {"refer:dao"})
public class ActivityYearSummaryServiceImpl extends ViServiceImpl<ActivityYearSummary> implements ActivityYearSummaryService {
public ActivityYearSummaryServiceImpl(Dao dao) {
super(dao);
}
}
@@ -0,0 +1,21 @@
package io.v.nutz.zhgh.activity.services.impl;
import cn.wizzer.framework.base.service.BaseServiceImpl;
import io.v.nutz.zhgh.activity.models.ActivitySiteInfo;
import io.v.nutz.zhgh.activity.services.SiteInfoService;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
/**
* @author: Aaron
* @create: 2020-12-13 09:38
* @description:
**/
@IocBean(args = {"refer:dao"})
public class SiteInfoServiceImpl extends BaseServiceImpl<ActivitySiteInfo> implements SiteInfoService {
public SiteInfoServiceImpl(Dao dao) {
super(dao);
}
}
@@ -0,0 +1,20 @@
package io.v.nutz.zhgh.activity.services.impl;
import io.v.nutz.zhgh.activity.models.ActivitySiteReserve;
import io.v.nutz.zhgh.activity.services.SiteReserveService;
import io.v.nutz.base.service.impl.BaseServiceImpl;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
/**
* @author: Aaron
* @create: 2020-12-13 14:32
* @description:
**/
@IocBean(args = {"refer:dao"})
public class SiteReserveServiceImpl extends BaseServiceImpl<ActivitySiteReserve> implements SiteReserveService {
public SiteReserveServiceImpl(Dao dao) {
super(dao);
}
}
@@ -0,0 +1,67 @@
package io.v.nutz.zhgh.benefiting.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName BenefitingExhibitController
* @Description TODO 惠民服务 商品展示
* @Author zzr
* @Date 2023/7/27 14:40
*/
@IocBean
@Ok("json:full")
@At("/platform/benefiting/exhibit")
public class BenefitingExhibitController {
@Inject
private BaseService baseService;
@At("")
@Ok("beetl:/platform/benefiting/exhibit.html")
@RequiresPermissions("benefiting.people.exhibit")
public void index() {}
@At
@ViReturn
@RequiresPermissions("benefiting.people.exhibit")
public Object pageData(PageForm pageForm,
@Param(value = "year", required = false) Integer year,
@Param(value = "projectId", required = false) String projectId,
@Param(value = "types", required = false) String[] types,
@Param(value = "goodsName", required = false) String goodsName) {
Sql sql = Sqls.create("""
SELECT
be.*,
bp.projectName,
bp.`year`,
bt.typeName
FROM
`benefiting_exhibit` be
LEFT JOIN `benefiting_project` bp ON be.projectId = bp.id
left join `benefiting_type` bt on be.typeId=bt.id
$condition
""");
CndPlus cnd = CndPlus.create();
cnd.andEX("bp.`year`","=",year);
cnd.andEX("be.projectId","=",projectId);
cnd.and(Cnd.likeEX("be.goodsName",goodsName));
if (types != null && types.length > 0) {
cnd.andEX("be.typeId", "in", types);
}
sql.setCondition(cnd);
return baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
}
}
@@ -0,0 +1,99 @@
package io.v.nutz.zhgh.benefiting.controller;
import cn.hutool.core.date.DateUtil;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.zhgh.benefiting.model.BenefitingExhibit;
import io.v.nutz.zhgh.benefiting.model.BenefitingProject;
import io.v.nutz.zhgh.benefiting.service.BenefitingProjectService;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName BenefitingProjectManageController
* @Description TODO 惠民服务 项目管理
* @Author zzr
* @Date 2023/7/27 14:40
*/
@IocBean
@Ok("json:full")
@At("/platform/benefiting/manage")
public class BenefitingProjectManageController {
@Inject
private BenefitingProjectService benefitingProjectService;
@At("")
@Ok("beetl:/platform/benefiting/manage.html")
@RequiresPermissions("benefiting.people.manage")
public void index() {}
@At
@ViReturn
@RequiresPermissions("benefiting.people.manage")
public Object pageData(PageForm pageForm,
@Param(value = "year",required = false)Integer year,
@Param(value = "projectName",required = false)String projectName){
Cnd cnd = Cnd.NEW();
cnd.andEX("year", "=", year);
cnd.andEX("projectName", "=", projectName);
cnd.desc("createTime");
return benefitingProjectService.list(pageForm,cnd);
}
@At
@ViReturn
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions("benefiting.people.manage")
public Object doAdd(BenefitingProject project, @Param(value = "deleteRowIds", required = false) String[] deleteRowIds){
if (Strings.isBlank(project.getId())){
project.setYear(DateUtil.thisYear());
project.setCreateTime(DateUtil.dateSecond());
benefitingProjectService.insertWith(project, "benefitingExhibits");
}else {
benefitingProjectService.dao().clear(BenefitingExhibit.class, Cnd.where("id", "in", deleteRowIds));
project.getBenefitingExhibits().forEach(v -> {
v.setProjectId(project.getId());
});
benefitingProjectService.dao().insertOrUpdate(project.getBenefitingExhibits());
benefitingProjectService.update(project);
}
return null;
}
@At
@ViReturn
@RequiresPermissions("benefiting.people.manage")
public Object findOne(String id){
return benefitingProjectService.findOne(id);
}
@At
@ViReturn
@RequiresPermissions("benefiting.people.manage")
public Object doDelete(String id){
benefitingProjectService.delete(id);
benefitingProjectService.dao().clear(BenefitingExhibit.class, Cnd.where("projectId", "=", id));
return null;
}
@At
@ViReturn
@RequiresPermissions("benefiting.people.manage")
public Object getAll(){
return benefitingProjectService.query();
}
}
@@ -0,0 +1,104 @@
package io.v.nutz.zhgh.benefiting.controller;
import cn.wizzer.framework.base.Result;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.zhgh.benefiting.model.BenefitingType;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName BenefitingTypeController
* @Description TODO 惠民服务 类型管理
* @Author zzr
* @Date 2023/7/27 14:40
*/
@IocBean
@Ok("json:full")
@At("/platform/benefiting/type")
public class BenefitingTypeController {
@Inject
private BaseService baseService;
@At("")
@Ok("beetl:/platform/benefiting/type.html")
@RequiresPermissions("benefiting.people.type")
public void index() {}
@At
@ViReturn
@RequiresPermissions("benefiting.people.type")
public Object pageData(PageForm pageForm, @Param(value = "typeName",required = false)String typeName){
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("select * from benefiting_type $condition");
cnd.and(Cnd.likeEX("typeName",typeName));
cnd.asc("sortNum");
sql.setCondition(cnd);
return baseService.listPageMap(pageForm.getPageNumber(),pageForm.getPageSize(),sql);
}
@At
@RequiresPermissions("benefiting.people.type")
public Object doAdd(BenefitingType type) {
try {
int count = baseService.count("benefiting_type", Cnd.where("typeCode", "=", type.getTypeCode()));
if (count > 0) {
return Result.error("编码重复");
}
baseService.dao().insert(type);
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@At
@RequiresPermissions("benefiting.people.type")
public Object doEdit(BenefitingType type) {
try {
int count = baseService.count("benefiting_type", Cnd.where("typeCode", "=", type.getTypeCode()).and("id", "!=", type.getId()));
if (count > 0) {
return Result.error("编码重复");
}
baseService.dao().update(type);
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@At
@RequiresPermissions("benefiting.people.type")
public Object doDelete(String id) {
try {
//baseService.clear("benefiting_type", Cnd.where("id", "=", id));
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
@At
@ViReturn
@RequiresPermissions("benefiting.people.type")
public Object findAllType(){
return baseService.dao().query(BenefitingType.class,Cnd.NEW());
}
}
@@ -0,0 +1,74 @@
package io.v.nutz.zhgh.benefiting.model;
import io.v.nutz.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
/**
* @ClassName BenefitingExhibit
* @Description TODO 惠民服务 商品表
* @Author zzr
* @Date 2023/7/27 14:40
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Table
@Comment("惠民服务 商品表")
public class BenefitingExhibit extends BaseModel {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true)
private String id;
@Column
@Comment("项目id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String projectId;
@Column
@Comment("类别id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String typeId;
@Column
@Comment("排序编号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String sortNum;
@Column
@Comment("货物名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String goodsName;
@Column
@Comment("货物价格")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String goodsPrice;
@Column
@Comment("货物库存")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String goodsCount;
@Column
@Comment("货物图片")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String imgUrl;
@Column
@Comment("厂商")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String manufacturer;
@Column
@Comment("货物详情")
@ColDefine(type = ColType.TEXT)
private String description;
}
@@ -0,0 +1,55 @@
package io.v.nutz.zhgh.benefiting.model;
import io.v.nutz.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.util.Date;
import java.util.List;
/**
* @ClassName BenefitingProject
* @Description TODO 惠民服务 项目表
* @Author zzr
* @Date 2023/7/27 14:40
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Table
@Comment("惠民服务 项目表")
public class BenefitingProject extends BaseModel {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true)
private String id;
@Column
@Comment("年度")
@ColDefine(type = ColType.INT, width = 4)
private Integer year;
@Column
@Comment("项目名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String projectName;
@Column
@Comment("创建时间")
@ColDefine(type = ColType.DATETIME)
private Date createTime;
@Column
@Comment("封面")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String cover;
@Many(field = "projectId")
private List<BenefitingExhibit> benefitingExhibits;
}
@@ -0,0 +1,44 @@
package io.v.nutz.zhgh.benefiting.model;
import io.v.nutz.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
/**
* @ClassName BenefitingType
* @Description TODO 惠民服务 类别表
* @Author zzr
* @Date 2023/7/27 14:40
*/
@EqualsAndHashCode(callSuper = true)
@Table
@Data
@Comment("惠民服务 类别表")
public class BenefitingType extends BaseModel {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true)
private String id;
@Column
@Comment("排序编号")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String sortNum;
@Column
@Comment("类别编码")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String typeCode;
@Column
@Comment("类别名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String typeName;
}
@@ -0,0 +1,10 @@
package io.v.nutz.zhgh.benefiting.service;
import io.v.nutz.zhgh.benefiting.model.BenefitingProject;
import io.v.nutz.base.service.ViService;
public interface BenefitingProjectService extends ViService<BenefitingProject> {
BenefitingProject findOne(String id);
}
@@ -0,0 +1,21 @@
package io.v.nutz.zhgh.benefiting.service.impl;
import io.v.nutz.zhgh.benefiting.model.BenefitingProject;
import io.v.nutz.zhgh.benefiting.service.BenefitingProjectService;
import io.v.nutz.base.service.impl.ViServiceImpl;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
@IocBean(args = {"refer:dao"})
public class BenefitingManageServiceImpl extends ViServiceImpl<BenefitingProject> implements BenefitingProjectService {
public BenefitingManageServiceImpl(Dao dao) {
super(dao);
}
@Override
public BenefitingProject findOne(String id) {
return fetchLinks(fetch(id), "benefitingExhibits", Cnd.NEW().asc("sortNum"));
}
}
@@ -0,0 +1,187 @@
package io.v.nutz.zhgh.blessing.controller;
import com.alibaba.fastjson.JSON;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.result.Result;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.zhgh.blessing.models.Blessing;
import io.v.nutz.zhgh.blessing.models.BlessingUser;
import io.v.nutz.zhgh.blessing.service.BlessingService;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.sys.models.Sys_task;
import io.v.nutz.sys.services.SysTaskService;
import io.v.nutz.task.services.TaskPlatformService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Strings;
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 org.nutz.trans.Trans;
import org.quartz.CronExpression;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@IocBean
@Ok("json:full")
@At("/platform/blessing/applyList")
public class BlessingController {
@Inject
private BlessingService blessingService;
@Inject
private TaskPlatformService taskPlatformService;
@Inject
private SysTaskService sysTaskService;
@Inject
private MsgApi msgApi;
@At("")
@Ok("beetl:/platform/blessing/applyList.html")
@RequiresPermissions("blessing.applyList")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("blessing.applyList")
public Object pageData(PageForm pageForm,
@Param(value = "blessingName", required = false) String blessingName) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
bl.*,
aus.groupName
FROM
`blessing` bl
LEFT JOIN activity_user_scope aus ON aus.groupId = bl.activityGroupId
$condition
""");
if (Strings.isNotBlank(blessingName)) {
cnd.where().andLike("bl.blessingName", blessingName);
}
cnd.groupBy("aus.groupId");
sql.setCondition(cnd);
return blessingService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions("blessing.applyList")
public Object doAdd(@Param("Blessing") Blessing blessing) {
Trans.exec(() -> {
if (blessing.getBlessingMode().equals("other")) {
blessing.setBlessingCron(Vi.getCron(new Date(System.currentTimeMillis() + 30 * 1000)));
blessing.setIsSend("1");
}
if (Strings.isNotBlank(blessing.getBlessingCron()) && !blessing.getBlessingCron().equals("* * * * * ? *")) {
blessingService.insert(blessing);
if (blessing.getIsSend().equals("1")) {
blessing.setApplyDate(DateUtil.getDate());
blessingService.addTask(blessing);
}
}
});
return null;
}
@At
@RequiresPermissions("blessing.applyList")
public Object doEdit(@Param("Blessing") Blessing blessing) {
try {
Trans.exec(() -> {
if (!List.of("* * * * * ?", "* * * * * ? *").contains(blessing.getBlessingCron())) {
if (blessing.getIsSend().equals("1")) {
blessingService.editTask(blessing);
}
blessing.setApplyDate(DateUtil.getDate());
blessingService.updateIgnoreNull(blessing);
} else {
throw new RuntimeException("表达式不正确");
}
});
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.getMessage());
}
}
@At
@ViReturn
@RequiresPermissions("blessing.applyList")
public Object doDelete(String id) {
Trans.exec(() -> {
blessingService.delete(id);
Sys_task sysTask = sysTaskService.fetch(Cnd.where("name", "=", id));
blessingService.dao().clear(BlessingUser.class, Cnd.where("blessingId", "=", id));
if (sysTask != null) {
taskPlatformService.delete(sysTask.getId(), sysTask.getId());
sysTaskService.delete(sysTask.getId());
}
});
return null;
}
@At
@ViReturn
public Object findOne(String id) {
try {
Blessing blessing = blessingService.fetch(id);
NutMap nutMap = NutMap.WRAP(JSON.parseObject(JSON.toJSONString(blessing)));
List<String> result = new ArrayList<>();
try {
CronExpression cronExpression = new CronExpression(nutMap.getString("blessingCron"));
Date lastTime = new Date();
for (int i = 0; i < 5; i++) {
lastTime = cronExpression.getNextValidTimeAfter(lastTime);
if (lastTime != null) {
result.add(DateUtil.formatDateTime(lastTime));
} else {
String[] newStr = nutMap.getString("blessingCron").split(" ");
String second = (newStr[0].equals("?") || newStr[0].equals("*")) ? "00" : newStr[0];
String minute = (newStr[1].equals("?") || newStr[1].equals("*")) ? "00" : newStr[1];
String hour = (newStr[2].equals("?") || newStr[2].equals("*")) ? "00" : newStr[2];
String day = (newStr[3].equals("?") || newStr[3].equals("*")) ? "00" : newStr[3];
String month = (newStr[4].equals("?") || newStr[4].equals("*")) ? "00" : newStr[4];
String s6 = (newStr[5].equals("?") || newStr[5].equals("*")) ? "00" : newStr[5];
String year = (newStr[6].equals("?") || newStr[6].equals("*")) ? "00" : newStr[6];
String Time = year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second;
result.add(Time);
break;
}
}
} catch (ParseException e) {
e.printStackTrace();
}
nutMap.setv("blessingDate", result);
return nutMap;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
@@ -0,0 +1,96 @@
package io.v.nutz.zhgh.blessing.controller;
import cn.hutool.core.collection.CollectionUtil;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.result.Result;
import io.v.nutz.base.service.BaseService;
import io.v.nutz.zhgh.blessing.models.BlessingGift;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.ArrayList;
/**
* @Author zzr
* @Date 2023/5/24
* @Description
*/
@IocBean
@Ok("json:full")
@At("/platform/blessing/giftList")
public class BlessingGiftController {
@At("")
@Ok("beetl:/platform/blessing/giftList.html")
@RequiresPermissions("blessing.gift")
public void index() {
}
@Inject
private Dao dao;
@Inject
private BaseService baseService;
@At
@ViReturn
@RequiresPermissions("blessing.gift")
public Object pageData(PageForm pageForm, @Param("giftName") String giftName) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
bg.*,
su.username
FROM
`blessing_gift` bg
LEFT JOIN `sys_user` su ON su.id = bg.createBy
$condition
""");
if (Strings.isNotBlank(giftName)) {
cnd.where().andLike("bg.giftName", giftName);
}
cnd.asc("bg.sortField");
sql.setCondition(cnd);
return baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions("blessing.gift")
public Object doSubmit(BlessingGift blessingGift){
if (CollectionUtil.isEmpty(blessingGift.getFiles())){
blessingGift.setFiles(new ArrayList<>());
}
dao.insertOrUpdate(blessingGift);
return null;
}
@At
@Aop(TransAop.READ_COMMITTED)
@RequiresPermissions("blessing.gift")
public Object doDelete(String id) {
try {
dao.clear("blessing_gift", Cnd.where("id", "=", id));
return Result.success();
} catch (Exception e) {
e.printStackTrace();
return Result.error();
}
}
}
@@ -0,0 +1,82 @@
package io.v.nutz.zhgh.blessing.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.zhgh.blessing.service.BlessingService;
import io.v.nutz.base.query.PageForm;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
@IocBean
@Ok("json:full")
@RequiresAuthentication
@At("/platform/blessing/userList")
public class BlessingUserController {
@At("")
@Ok("beetl:/platform/blessing/blessingUser.html")
@RequiresPermissions("blessing.user")
public void index() {
}
@Inject
private BlessingService blessingService;
@At
@ViReturn
public Object pageData(PageForm pageForm, @Param(value = "data",required = false) String data,
@Param(value = "unionId",required = false) String unionId,
@Param(value = "unitId",required = false) String unitId,
@Param(value = "personType",required = false) String personType,
@Param(value = "userState",required = false) String userState,
@Param(value = "sex",required = false) String sex,
@Param(value = "blessingName",required = false) String blessingName) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
u.loginname,
u.username,
u.sex,
u.personType,
u.userState,
u.unionname,
u.unitname,
u.birthday,
blu.*,
bl.blessingName
FROM
blessing_user blu
LEFT JOIN blessing bl ON bl.id = blu.blessingId
LEFT JOIN `user` u ON u.id = blu.userId
$condition
""");
if (Strings.isNotBlank(pageForm.getSearchKeyword()) && Strings.isNotBlank(pageForm.getSearchName())) {
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
}
if (Strings.isNotBlank(blessingName)) {
cnd.where().andLike("bl.blessingName", blessingName);
}
cnd.andEX("u.unionid", "=", unionId);
cnd.andEX("u.unitid", "=", unitId);
cnd.andEX("u.personType", "=", personType);
cnd.andEX("u.userState", "=", userState);
cnd.andEX("u.sex", "=", sex);
cnd.andEX("blu.applyDate", "=", data);
cnd.desc("blu.blessingId");
cnd.desc("blu.applyDate");
cnd.desc("u.unitid");
sql.setCondition(cnd);
return blessingService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
}
}
@@ -0,0 +1,61 @@
package io.v.nutz.zhgh.blessing.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import java.util.List;
@Data
@Table
@Comment("生日祝福表")
public class Blessing {
@Column
@Name
@Comment("id")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("祝福名称")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String blessingName;
@Column
@Comment("发送范围")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String activityGroupId;
@Column
@Comment("祝福模式")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String blessingMode;
@Column
@Comment("是否发送,0未开启,1 进行中,2,已完成")
@ColDefine(type = ColType.VARCHAR, width = 2)
private String isSend;
@Column
@Comment("发送方式")
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> sendTypes;
@Column
@Comment("祝福内容")
@ColDefine(type = ColType.TEXT)
private String blessingContent;
@Column
@Comment("cron表达式")
@ColDefine(type = ColType.TEXT)
private String blessingCron;
@Column
@Comment("创建时间")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String applyDate;
}
@@ -0,0 +1,59 @@
package io.v.nutz.zhgh.blessing.models;
import io.v.nutz.sys.models.Sys_file;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import java.util.List;
/**
* @author: zzr
* @create: 2024/5/26
* @description: 礼物榜
*/
@Data
@Table
@Comment("生日祝福 礼物榜")
public class BlessingGift {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("礼物名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String giftName;
@Column
@Comment("礼物文件名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String fileName;
@Column
@Comment("礼物图片")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> files;
@Column
@Comment("排序字段")
@ColDefine(type = ColType.VARCHAR, width = 10)
private String sortField;
@Column
@Comment("创建人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String createBy;
@Column
@Comment("创建时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String createDate;
}
@@ -0,0 +1,36 @@
package io.v.nutz.zhgh.blessing.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
@Data
@Table
@Comment("生日祝福 人员")
public class BlessingUser {
@Column
@Name
@Comment("id")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("接收人ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("祝福ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String blessingId;
@Column
@Comment("发送时间")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String applyDate;
}
@@ -0,0 +1,47 @@
package io.v.nutz.zhgh.blessing.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
/**
* @Author zzr
* @Date 2023/5/25
* @Description 生日祝福中间表
*/
@Data
@Table
@Comment("生日祝福中间表")
public class Greeting {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("职工生日")
@ColDefine(type = ColType.VARCHAR, width = 4)
private String birthday;
@Column
@Comment("职工ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("职工姓名")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String username;
@Column
@Comment("职工编号")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String loginname;
}
@@ -0,0 +1,55 @@
package io.v.nutz.zhgh.blessing.models;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
/**
* @Author zzr
* @Date 2023/5/31
* @Description 礼物记录表
*/
@Data
@Table
@Comment("生日祝福礼物记录表")
public class GreetingInfo {
@Column
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("赠送者ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String presenter;
@Column
@Comment("收到者ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String received;
@Column
@Comment("礼物ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String giftId;
@Column
@Comment("送礼时间")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String giftTime;
@Column
@Comment("祝福语")
@ColDefine(type = ColType.VARCHAR, width = 255)
private String message;
@Column
@Comment("是否发送贺卡")
@ColDefine(type = ColType.BOOLEAN, width = 255)
private boolean isSend;
}
@@ -0,0 +1,24 @@
package io.v.nutz.zhgh.blessing.service;
import io.v.nutz.zhgh.blessing.models.Blessing;
import io.v.nutz.base.service.ViService;
public interface BlessingService extends ViService<Blessing> {
/**
* 添加任务
*
* @param blessing
*/
void addTask(Blessing blessing);
/**
* 修改任务
*
* @param blessing
*/
void editTask(Blessing blessing);
}
@@ -0,0 +1,69 @@
package io.v.nutz.zhgh.blessing.service.impl;
import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.zhgh.blessing.models.Blessing;
import io.v.nutz.zhgh.blessing.service.BlessingService;
import io.v.nutz.base.service.impl.ViServiceImpl;
import io.v.nutz.sys.models.Sys_task;
import io.v.nutz.sys.services.SysTaskService;
import io.v.nutz.task.services.TaskPlatformService;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.trans.Trans;
import java.util.HashMap;
@IocBean(args = {"refer:dao"})
public class BlessingServiceImpl extends ViServiceImpl<Blessing> implements BlessingService {
public BlessingServiceImpl(Dao dao) {
super(dao);
}
private final String JOB_CLASS = "io.v.nutz.task.job.BlessingJob"; //调用类
@Inject
private BaseService baseService;
@Inject
private TaskPlatformService taskPlatformService;
@Inject
private SysTaskService sysTaskService;
@Override
public void addTask(Blessing blessing) {
Trans.exec(() -> {
Sys_task sys_task = new Sys_task();
sys_task.setName(blessing.getId());
sys_task.setNote(blessing.getBlessingName());
sys_task.setJobClass(JOB_CLASS);
sys_task.setCron(blessing.getBlessingCron());
sys_task.setData(Json.toJson(new HashMap<String, Object>() {{
put("blessingId", blessing.getId());
}}));
sys_task.setDisabled(false);
sys_task = sysTaskService.insert(sys_task);
taskPlatformService.add(sys_task.getId(), sys_task.getId(), sys_task.getJobClass(), sys_task.getCron(), sys_task.getNote(), sys_task.getData());
});
}
@Override
public void editTask(Blessing blessing) {
Sys_task sys_task = sysTaskService.fetch(Cnd.where("name", "=", blessing.getId()));
if (Lang.isNotEmpty(sys_task)){
sys_task.setCron(blessing.getBlessingCron());
sysTaskService.updateIgnoreNull(sys_task);
taskPlatformService.delete(sys_task.getId(), sys_task.getId());
taskPlatformService.add(sys_task.getId(), sys_task.getId(), sys_task.getJobClass(), sys_task.getCron(), sys_task.getNote(), sys_task.getData());
}else{
addTask(blessing);
}
}
}
@@ -0,0 +1,37 @@
package io.v.nutz.zhgh.contribution.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.zhgh.contribution.models.ContributionType;
import io.v.nutz.base.service.ViService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.nutz.dao.Cnd;
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;
/**
* @author zhf
* @date 2021/12/20 14:59
* @description
*/
@IocBean
@Ok("json:full")
@At("/platform/contribution/common")
@RequiresAuthentication
public class ContributionCommonCon {
@Inject("ContributionType")
private ViService<ContributionType> contributionTypeViService;
@At
@ViReturn
public Object getContributionType() {
Cnd cnd = Cnd.NEW();
cnd.desc("typeCode");
return contributionTypeViService.query(cnd);
}
}
@@ -0,0 +1,97 @@
package io.v.nutz.zhgh.contribution.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.zhgh.contribution.models.Contribution;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @author zhf
* @date 2021/12/20 14:16
* @description
*/
@IocBean
@Ok("json:full")
@At("/platform/contribution/list")
@RequiresAuthentication
public class ContributionController {
@Inject("Contribution")
private ViService<Contribution> contributionViService;
@At("/")
@Ok("beetl:platform/contribution/contributionList.html")
@RequiresPermissions("contribution.list")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("contribution.list")
public Object pageData(PageForm page,@Param(value = "contributionName",required = false) String contributionName) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
con.*,
type.typeName
FROM
`contribution` con
LEFT JOIN contribution_type type ON type.typeCode = con.contributionTypeCode
$condition
""");
if (Strings.isNotBlank(contributionName)) {
cnd.where().andLike("con.contributionName", contributionName);
}
cnd.asc("con.contributionTypeCode");
sql.setCondition(cnd);
return contributionViService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@ViReturn
@RequiresPermissions("contribution.list")
public Object doAdd(@Param("contribution") Contribution contribution) {
contribution.setContributionCreationDate(DateUtil.getDate());
return contributionViService.insert(contribution);
}
@At
@ViReturn
@RequiresPermissions("contribution.list")
public Object doEdit(@Param("contribution") Contribution contribution) {
return contributionViService.updateIgnoreNull(contribution);
}
@At
@ViReturn
@RequiresPermissions("contribution.list")
public Object doDelete(String id) {
return contributionViService.delete(id);
}
@At
@RequiresPermissions("contribution.list")
public Object getContribution() {
Cnd cnd = Cnd.NEW();
cnd.and("isContributionEnable", "=", 1);
cnd.desc("contributionCreationDate");
return contributionViService.query(cnd);
}
}
@@ -0,0 +1,159 @@
package io.v.nutz.zhgh.contribution.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.zhgh.contribution.models.ContributionApply;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import lombok.Data;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Strings;
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.nio.charset.StandardCharsets;
import java.util.List;
/**
* @author zhf
* @date 2021/12/24 8:59
* @description
*/
@IocBean
@Ok("json:full")
@At("/platform/contribution/detailed")
@RequiresAuthentication
public class ContributionDetailedCommonCon {
@Inject("ContributionApply")
private ViService<ContributionApply> contributionApplyViService;
@At("/")
@Ok("beetl:platform/contribution/detailed.html")
@RequiresPermissions("contribution.detailed")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("contribution.detailed")
public Object pageData(PageForm page, @Param(value = "unionId",required = false) String unionId,
@Param(value = "unitId",required = false) String unitId,
@Param(value = "payMode",required = false) String payMode,
@Param(value = "contributionName",required = false) String contributionName) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
apply.*,
us.username,
us.loginname,
us.unionname,
us.unitname
FROM
`contribution_apply` apply
LEFT JOIN `user` us ON us.id = apply.userId
$condition
""");
cnd.andEX("us.unionid", "=", unionId);
cnd.andEX("us.unitid", "=", unitId);
cnd.andEX("apply.payMode", "=", payMode);
if (Strings.isNotBlank(contributionName)) {
cnd.where().andLike("apply.contributionName", contributionName);
}
cnd.desc("apply.contributionTime");
sql.setCondition(cnd);
return contributionApplyViService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@At
@Ok("void")
@RequiresPermissions("contribution.detailed")
public void doExport(@Param(value = "unionId",required = false) String unionId,
@Param(value = "unitId",required = false) String unitId,
@Param(value = "payMode",required = false) String payMode,
@Param(value = "contributionName",required = false) String contributionName,
HttpServletResponse response) {
try {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
apply.*,
us.username,
us.loginname,
us.unionname,
us.unitname
FROM
`contribution_apply` apply
LEFT JOIN `user` us ON us.id = apply.userId
$condition
""");
cnd.andEX("us.unionid", "=", unionId);
cnd.andEX("us.unitid", "=", unitId);
cnd.andEX("apply.payMode", "=", payMode);
if (Strings.isNotBlank(contributionName)) {
cnd.where().andLike("apply.contributionName", contributionName);
}
cnd.desc("apply.contributionTime");
sql.setCondition(cnd);
List<ExportEntity> applyList = contributionApplyViService.listEntity(sql, ExportEntity.class);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(("捐款明细.xls").getBytes(StandardCharsets.UTF_8), "ISO8859-1"));
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), ExportEntity.class, applyList);
workbook.write(response.getOutputStream());
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Data
public static class ExportEntity {
@Excel(name = "捐款项目", width = 20d)
private String contributionName;
@Excel(name = "捐款人工号", width = 20d)
private String loginname;
@Excel(name = "捐款人姓名", width = 20d)
private String username;
@Excel(name = "联系方式", width = 20d)
private String mobile;
@Excel(name = "所属工会", width = 20d)
private String unionname;
@Excel(name = "所属单位", width = 20d)
private String unitname;
@Excel(name = "善款金额", width = 20d)
private String money;
@Excel(name = "捐赠方式", width = 20d)
private String payMode;
@Excel(name = "捐赠时间", width = 20d)
private String contributionTime;
}
}
@@ -0,0 +1,102 @@
package io.v.nutz.zhgh.contribution.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.zhgh.contribution.models.ContributionApply;
import io.v.nutz.base.service.ViService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.Strings;
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.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.stream.Collectors;
/**
* @ClassName ContributionStatisticsController
* @Description TODO
* @Author zhf
* @Date 2023/5/12 14:57
*/
@IocBean
@Ok("json:full")
@At("/platform/contribution/statistics")
@RequiresAuthentication
public class ContributionStatisticsController {
@Inject("ContributionApply")
private ViService<ContributionApply> contributionApplyViService;
@At("/")
@Ok("beetl:platform/contribution/statistics.html")
@RequiresPermissions("contribution.statistics")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("contribution.statistics")
public Object pageData(@Param(value = "unionId",required = false) String unionId,
@Param(value = "contributionName",required = false) String contributionName) {
List<NutMap> unionMap = contributionApplyViService.listMap(Sqls.create("select * from sys_union ORDER BY unioncode ASC"));
if (Strings.isBlank(contributionName)) {
return unionMap;
}
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
apply.*,
us.unionid,
us.username,
us.loginname,
us.unionname,
us.unitname
FROM
`contribution_apply` apply
LEFT JOIN `user` us ON us.id = apply.userId
""");
sql.setCondition(cnd);
List<NutMap> nutMaps = contributionApplyViService.listMap(sql);
unionMap.forEach(v -> {
//这个项目每个分工会有多少个人捐款
List<NutMap> userList = nutMaps.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(n -> n.getString("userId")))), ArrayList::new)
);
long count = userList.stream().filter(n ->
n.getString("unionid").equals(v.getString("id")) &&
n.getString("contributionName").equals(contributionName)).count();
v.setv("contributionUserNum", count);
//捐款多少笔
long count2 = nutMaps.stream().filter(n ->
n.getString("unionid").equals(v.getString("id")) &&
n.getString("contributionName").equals(contributionName)).count();
v.setv("contributionNum", count2);
//一共捐了多少钱
List<NutMap> userList2 = userList.stream().filter(n -> n.getString("unionid").equals(v.getString("id")) &&
n.getString("contributionName").equals(contributionName)).collect(Collectors.toList());
double money = userList2.stream().mapToDouble(n -> n.getDouble("money")).sum();
v.setv("money", money);
});
if (Strings.isNotBlank(unionId)) {
unionMap = unionMap.stream().filter(v -> v.getString("id").equals(unionId)).collect(Collectors.toList());
}
return unionMap;
}
}
@@ -0,0 +1,73 @@
package io.v.nutz.zhgh.contribution.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.zhgh.contribution.models.ContributionType;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.ViService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @author zhf
* @date 2021/12/20 9:59
* @description
*/
@IocBean
@Ok("json:full")
@At("/platform/contribution/type")
@RequiresAuthentication
public class contributionTypeController {
@Inject("ContributionType")
private ViService<ContributionType> contributionTypeViService;
@At("/")
@Ok("beetl:platform/contribution/contributionType.html")
@RequiresPermissions("contribution.type")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("contribution.type")
public Object pageData(PageForm page) {
Cnd cnd = Cnd.NEW();
if (Strings.isNotBlank(page.getSearchName()) && Strings.isNotBlank(page.getSearchKeyword())) {
cnd.where().andLike(page.getSearchName(), page.getSearchKeyword());
}
cnd.asc("typeCode");
return contributionTypeViService.listPage(page.getPageNumber(), page.getPageSize(), cnd);
}
@At
@ViReturn
@RequiresPermissions("contribution.type")
public Object doAdd(@Param("data") ContributionType contributionType) {
return contributionTypeViService.insert(contributionType);
}
@At
@ViReturn
@RequiresPermissions("contribution.type")
public Object doEdit(@Param("data") ContributionType contributionType) {
return contributionTypeViService.updateIgnoreNull(contributionType);
}
@At
@ViReturn
@RequiresPermissions("contribution.type")
public Object doDelete(String id) {
return contributionTypeViService.delete(id);
}
}

Some files were not shown because too many files have changed in this diff Show More