commit
This commit is contained in:
@@ -132,6 +132,16 @@ public class FamilyActivity extends BaseModel implements Serializable, SysHomeCo
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String onlyKey;
|
||||
|
||||
@Column
|
||||
@Comment("主办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> hostUnitIds;
|
||||
|
||||
@Column
|
||||
@Comment("承办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> undertakeUnitIds;
|
||||
|
||||
@Override
|
||||
public Sys_home_activity covertToSysHomeActivity() {
|
||||
Sys_home_activity sysHomeActivity = new Sys_home_activity();
|
||||
|
||||
@@ -114,6 +114,16 @@ public class FellowshipActivity extends BaseModel implements Serializable, SysHo
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String trainType;
|
||||
|
||||
@Column
|
||||
@Comment("主办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> hostUnitIds;
|
||||
|
||||
@Column
|
||||
@Comment("承办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> undertakeUnitIds;
|
||||
|
||||
@Override
|
||||
public Sys_home_activity covertToSysHomeActivity() {
|
||||
Sys_home_activity sysHomeActivity = new Sys_home_activity();
|
||||
|
||||
+243
@@ -0,0 +1,243 @@
|
||||
package com.budwk.app.zhgh.activity.statistics;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.sys.models.Sys_unit;
|
||||
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
||||
import com.budwk.app.zhgh.activity.family.models.FamilyActivity;
|
||||
import com.budwk.app.zhgh.activity.fellowship.models.FellowshipActivity;
|
||||
import com.budwk.app.zhgh.activity.sports.models.ActivitySchool;
|
||||
import com.budwk.app.zhgh.activity.trainSignUp.models.TrainSignUpActivity;
|
||||
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection;
|
||||
import com.budwk.app.zhgh.club.model.SysClub;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
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.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/10/30 14:32
|
||||
* @description 系统活动统计
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/activity/statistics")
|
||||
public class ActivityStatisticsController {
|
||||
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:platform/zhgh/activity/statistics/index.html")
|
||||
@SaCheckPermission("activity.statistics")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("activity.statistics")
|
||||
@ApiOperation("每个活动统计图")
|
||||
public Result getChartData(Integer year, String undertakeUnitId, String hostUnitId) {
|
||||
List<NutMap> activityTypeList = this.getData(year, undertakeUnitId, hostUnitId);
|
||||
return Result.success(activityTypeList);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("activity.statistics")
|
||||
@ApiOperation("导出全部的活动")
|
||||
public void doExport(Integer year, String undertakeUnitId, String hostUnitId, HttpServletResponse response) {
|
||||
List<NutMap> activityTypeList = this.getData(year, undertakeUnitId, hostUnitId);
|
||||
|
||||
|
||||
List<Sys_unit> unitList = dao.query(Sys_unit.class, Cnd.NEW());
|
||||
List<SysClub> clubList = dao.query(SysClub.class, Cnd.NEW());
|
||||
|
||||
clubList.forEach(club -> {
|
||||
Sys_unit unit = new Sys_unit();
|
||||
unit.setId(club.getId());
|
||||
unit.setName(club.getClubName());
|
||||
unitList.add(unit);
|
||||
});
|
||||
|
||||
|
||||
List<NutMap> activityList = new ArrayList<>();
|
||||
for (NutMap nutMap : activityTypeList) {
|
||||
List<NutMap> asList = nutMap.getAsList("activityList", NutMap.class);
|
||||
|
||||
if (nutMap.getString("activityType").equals("sports")) {
|
||||
if (Lang.isNotEmpty(asList)) {
|
||||
for (NutMap map : asList) {
|
||||
map.setv("activityName", map.getString("name"));
|
||||
map.setv("activityTypeName", nutMap.getString("activityTypeName"));
|
||||
List<String> hostUnitIds = map.getAsList("unitSponsor", String.class);
|
||||
List<String> undertakeUnitIds = map.getAsList("undertakeUnit", String.class);
|
||||
String hostUnitNames = getUnitNames(hostUnitIds, unitList);
|
||||
String undertakeUnitNames = getUnitNames(undertakeUnitIds, unitList);
|
||||
map.setv("hostUnitNames", hostUnitNames);
|
||||
map.setv("undertakeUnitNames", undertakeUnitNames);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (Lang.isNotEmpty(asList)) {
|
||||
for (NutMap map : asList) {
|
||||
map.setv("activityTypeName", nutMap.getString("activityTypeName"));
|
||||
List<String> hostUnitIds = map.getAsList("hostUnitIds", String.class);
|
||||
List<String> undertakeUnitIds = map.getAsList("undertakeUnitIds", String.class);
|
||||
if (Lang.isNotEmpty(hostUnitIds)) {
|
||||
String hostUnitNames = getUnitNames(hostUnitIds, unitList);
|
||||
map.setv("hostUnitNames", hostUnitNames);
|
||||
}
|
||||
if (Lang.isNotEmpty(undertakeUnitIds)) {
|
||||
String undertakeUnitNames = getUnitNames(undertakeUnitIds, unitList);
|
||||
map.setv("undertakeUnitNames", undertakeUnitNames);
|
||||
}
|
||||
|
||||
if (nutMap.getString("activityType").equals("culture")) {
|
||||
map.setv("activityName", map.getString("name"));
|
||||
} else if (nutMap.getString("activityType").equals("trainSignUp")) {
|
||||
map.setv("startTime", DateUtil.format(map.getTime("activityStartTime"), "yyyy-MM-dd"));
|
||||
map.setv("endTime", DateUtil.format(map.getTime("activityEndTime"), "yyyy-MM-dd"));
|
||||
}else if (nutMap.getString("activityType").equals("worksCollection")){
|
||||
map.setv("activityName", map.getString("name"));
|
||||
map.setv("startTime", DateUtil.format(map.getTime("startDateTime"), "yyyy-MM-dd"));
|
||||
map.setv("endTime", DateUtil.format(map.getTime("endDateTime"), "yyyy-MM-dd"));
|
||||
}else if (nutMap.getString("activityType").equals("family")){
|
||||
map.setv("startTime", DateUtil.format(map.getTime("activityStartTime"), "yyyy-MM-dd"));
|
||||
map.setv("endTime", DateUtil.format(map.getTime("activityEndTime"), "yyyy-MM-dd"));
|
||||
}else if (nutMap.getString("activityType").equals("fellowship")){
|
||||
map.setv("startTime", DateUtil.format(map.getTime("activityStartTime"), "yyyy-MM-dd"));
|
||||
map.setv("endTime", DateUtil.format(map.getTime("activityEndTime"), "yyyy-MM-dd"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Lang.isNotEmpty(asList)) {
|
||||
activityList.addAll(asList);
|
||||
}
|
||||
}
|
||||
try {
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
ExcelExportEntity no = new ExcelExportEntity("序号", "no", 10);
|
||||
no.setFormat("isAddIndex");
|
||||
entityList.add(no);
|
||||
entityList.add(new ExcelExportEntity("活动类型", "activityTypeName", 20));
|
||||
entityList.add(new ExcelExportEntity("活动名称", "activityName", 40));
|
||||
entityList.add(new ExcelExportEntity("活动开始时间", "startTime", 40));
|
||||
entityList.add(new ExcelExportEntity("活动结束时间", "endTime", 40));
|
||||
entityList.add(new ExcelExportEntity("主办单位", "hostUnitNames", 40));
|
||||
entityList.add(new ExcelExportEntity("承办单位", "undertakeUnitNames", 40));
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, activityList);
|
||||
CommonDownloadUtil.download("活动汇总.xlsx", workbook, response);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public List<NutMap> getData(Integer year, String undertakeUnitId, String hostUnitId) {
|
||||
List<NutMap> activityTypeList = new ArrayList<>();
|
||||
activityTypeList.add(NutMap.NEW().setv("activityType", "sports").setv("activityTypeName", "体育活动"));
|
||||
activityTypeList.add(NutMap.NEW().setv("activityType", "culture").setv("activityTypeName", "文化活动"));
|
||||
activityTypeList.add(NutMap.NEW().setv("activityType", "trainSignUp").setv("activityTypeName", "品牌活动"));
|
||||
activityTypeList.add(NutMap.NEW().setv("activityType", "worksCollection").setv("activityTypeName", "作品征集"));
|
||||
activityTypeList.add(NutMap.NEW().setv("activityType", "family").setv("activityTypeName", "亲子活动"));
|
||||
activityTypeList.add(NutMap.NEW().setv("activityType", "fellowship").setv("activityTypeName", "单身联谊"));
|
||||
|
||||
for (NutMap map : activityTypeList) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (map.getString("activityType").equals("sports")) {
|
||||
cnd.andEX("YEAR(startTime)", "=", year);
|
||||
if (StrUtil.isNotBlank(undertakeUnitId)) {
|
||||
cnd.and(new Static("JSON_CONTAINS(undertakeUnit, JSON_ARRAY('%s'))".formatted(undertakeUnitId)));
|
||||
}
|
||||
if (StrUtil.isNotBlank(hostUnitId)) {
|
||||
cnd.and(new Static("JSON_CONTAINS(unitSponsor, JSON_ARRAY('%s'))".formatted(hostUnitId)));
|
||||
}
|
||||
cnd.asc("startTime");
|
||||
List<ActivitySchool> activityList = dao.query(ActivitySchool.class, cnd);
|
||||
map.setv("count", activityList.size());
|
||||
map.setv("activityList", activityList);
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(undertakeUnitId)) {
|
||||
cnd.and(new Static("JSON_CONTAINS(undertakeUnitIds, JSON_ARRAY('%s'))".formatted(undertakeUnitId)));
|
||||
}
|
||||
if (StrUtil.isNotBlank(hostUnitId)) {
|
||||
cnd.and(new Static("JSON_CONTAINS(hostUnitIds, JSON_ARRAY('%s'))".formatted(hostUnitId)));
|
||||
}
|
||||
if (map.getString("activityType").equals("culture")) {
|
||||
cnd.andEX("YEAR(startTime)", "=", year);
|
||||
cnd.asc("startTime");
|
||||
List<ActivityTissue> activityList = dao.query(ActivityTissue.class, cnd);
|
||||
map.setv("count", activityList.size());
|
||||
map.setv("activityList", activityList);
|
||||
|
||||
} else if (map.getString("activityType").equals("trainSignUp")) {
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.asc("activitySignUpStartTime");
|
||||
List<TrainSignUpActivity> activityList = dao.query(TrainSignUpActivity.class, cnd);
|
||||
map.setv("count", activityList.size());
|
||||
map.setv("activityList", activityList);
|
||||
|
||||
} else if (map.getString("activityType").equals("worksCollection")) {
|
||||
cnd.andEX("YEAR(startDateTime)", "=", year);
|
||||
cnd.asc("startDateTime");
|
||||
List<Activity_works_collection> activityList = dao.query(Activity_works_collection.class, cnd);
|
||||
map.setv("count", activityList.size());
|
||||
map.setv("activityList", activityList);
|
||||
|
||||
} else if (map.getString("activityType").equals("family")) {
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.asc("activitySignUpStartTime");
|
||||
List<FamilyActivity> activityList = dao.query(FamilyActivity.class, cnd);
|
||||
map.setv("count", activityList.size());
|
||||
map.setv("activityList", activityList);
|
||||
|
||||
} else if (map.getString("activityType").equals("fellowship")) {
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.asc("activitySignUpStartTime");
|
||||
List<FellowshipActivity> activityList = dao.query(FellowshipActivity.class, cnd);
|
||||
map.setv("count", activityList.size());
|
||||
map.setv("activityList", activityList);
|
||||
}
|
||||
}
|
||||
}
|
||||
return activityTypeList;
|
||||
}
|
||||
|
||||
|
||||
private String getUnitNames(List<String> unitIds, List<Sys_unit> units) {
|
||||
String unitNames = units.stream()
|
||||
.filter(unit -> unitIds.contains(unit.getId())) // 筛选 id 为 '111' 或 '222' 的对象
|
||||
.map(unit -> unit.getName()) // 获取 name 属性
|
||||
.collect(Collectors.joining(",")); // 用逗号连接,你可以根据需要更改分隔符
|
||||
return unitNames;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -100,6 +100,16 @@ public class TrainSignUpActivity extends BaseModel implements Serializable, SysH
|
||||
@ColDefine(type = ColType.VARCHAR, width = 40)
|
||||
private String activityGroupName;
|
||||
|
||||
@Column
|
||||
@Comment("主办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> hostUnitIds;
|
||||
|
||||
@Column
|
||||
@Comment("承办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> undertakeUnitIds;
|
||||
|
||||
/**
|
||||
* 所有的培训班
|
||||
*/
|
||||
|
||||
+10
@@ -107,6 +107,16 @@ public class Activity_works_collection extends BaseModel {
|
||||
@Default(value = "1")
|
||||
private Boolean isSubmit;
|
||||
|
||||
@Column
|
||||
@Comment("主办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> hostUnitIds;
|
||||
|
||||
@Column
|
||||
@Comment("承办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> undertakeUnitIds;
|
||||
|
||||
@Many(field = "activityId")
|
||||
private List<Activity_works_subjectType> subjectTypes;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user