first commit
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<version>3.6.1</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<modules>
|
||||
<module>ruoyi-system</module>
|
||||
<module>ruoyi-job</module>
|
||||
<module>ruoyi-file</module>
|
||||
<module>ruoyi-member</module>
|
||||
<module>ruoyi-jdh</module>
|
||||
<module>ruoyi-proposal</module>
|
||||
<module>ruoyi-activity</module>
|
||||
<module>ruoyi-staffService</module>
|
||||
<module>ruoyi-threeEducation</module>
|
||||
<module>ruoyi-additional</module>
|
||||
</modules>
|
||||
|
||||
<artifactId>ruoyi-modules</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<description>
|
||||
ruoyi-modules业务模块
|
||||
</description>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ruoyi-modules</artifactId>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<version>3.6.1</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ruoyi-modules-activity</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>15</maven.compiler.source>
|
||||
<maven.compiler.target>15</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- SpringCloud Alibaba Nacos -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Nacos Config -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Sentinel -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot Actuator -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Swagger UI -->
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
<version>${swagger.fox.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Mysql Connector -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common DataSource -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-datasource</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common DataScope -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-datascope</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common Log -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-log</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common Swagger -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-swagger</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- nutz -->
|
||||
<dependency>
|
||||
<groupId>org.nutz</groupId>
|
||||
<artifactId>nutz-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-api-activity</artifactId>
|
||||
<version>3.6.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-api-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.afterturn</groupId>
|
||||
<artifactId>easypoi-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>15</source>
|
||||
<target>15</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.ruoyi.activity;
|
||||
|
||||
import com.ruoyi.common.security.annotation.EnableCustomConfig;
|
||||
import com.ruoyi.common.security.annotation.EnableRyFeignClients;
|
||||
import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* @ClassName RuoYiActivityApplication
|
||||
* @Description TODO
|
||||
* @Author JyuHsin
|
||||
* @Date 2022/12/13 16:54
|
||||
* @Version 1.0
|
||||
*/
|
||||
@EnableCustomConfig
|
||||
@EnableCustomSwagger2
|
||||
@EnableRyFeignClients
|
||||
@SpringBootApplication
|
||||
public class RuoYiActivityApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(RuoYiActivityApplication.class, args);
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.ruoyi.activity.config;
|
||||
|
||||
import org.apache.catalina.connector.Connector;
|
||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @ClassName TomcatConfig
|
||||
* @Description TODO
|
||||
* @Author zhaoxinyu
|
||||
* @Date 2022/12/19 13:46
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Configuration
|
||||
public class TomcatConfig {
|
||||
|
||||
@Bean
|
||||
public TomcatServletWebServerFactory webServerFactory() {
|
||||
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
|
||||
factory.addConnectorCustomizers((Connector connector) -> {
|
||||
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
|
||||
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
|
||||
});
|
||||
return factory;
|
||||
}
|
||||
|
||||
}
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
package com.ruoyi.activity.controller.basic;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.constant.ActivityBasicScopePageForm;
|
||||
import com.ruoyi.activity.api.domain.template.UserTemp;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicScopeService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/4
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/basic/scope")
|
||||
public class ActivityBasicScopeController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
public RedisTemplate redisTemplate;
|
||||
@Autowired
|
||||
private ActivityBasicScopeService activityBasicScopeService;
|
||||
|
||||
|
||||
@Autowired
|
||||
public ActivityBasicScopeController(ActivityBasicScopeService activityBasicScopeService) {
|
||||
this.activityBasicScopeService = activityBasicScopeService;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody ActivityBasicScopePageForm pageForm) {
|
||||
Pagination pagination = activityBasicScopeService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("getActivityUserScopeGroup")
|
||||
public AjaxResult getActivityUserScopeGroup() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
groupId,
|
||||
groupName
|
||||
FROM
|
||||
activity_user_scope
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin,H06,H10")) {
|
||||
if (AuthUtil.hasAnyRoles("H04, H02")) {
|
||||
cnd.and("creator", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
}
|
||||
cnd.and("groupId", "IS NOT", null);
|
||||
cnd.and("groupName", "IS NOT", null);
|
||||
cnd.groupBy("groupId");
|
||||
sql.setCondition(cnd);
|
||||
List list = activityBasicScopeService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pageForm
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 设置活动人员
|
||||
* @author zhf
|
||||
* @date 2023/1/11 13:46
|
||||
*/
|
||||
|
||||
@PostMapping("/doSetActivityUser")
|
||||
public AjaxResult doSetActivityUser(@RequestBody ActivityBasicScopePageForm pageForm,
|
||||
@RequestParam(required = false, value = "setGroupType") Integer setGroupType,
|
||||
@RequestParam(required = false, value = "setGroupId") Integer setGroupId,
|
||||
@RequestParam(required = false, value = "setGroupName") String setGroupName) {
|
||||
|
||||
Integer activityUser = activityBasicScopeService.doSetActivityUser(pageForm, setGroupType, setGroupId, setGroupName);
|
||||
return AjaxResult.success(activityUser);
|
||||
}
|
||||
|
||||
@PostMapping("/doImport")
|
||||
public Object doImport(MultipartFile file) {
|
||||
String matchUserLoginNamesKey = "ActivityBasicScopeController.doImport.time=" + System.currentTimeMillis();
|
||||
|
||||
try {
|
||||
List<UserTemp> userImportList = ExcelImportUtil.importExcel(file.getInputStream(), UserTemp.class, new ImportParams());
|
||||
|
||||
//判断人员哪些存在哪些不存在
|
||||
Sql sql = Sqls.queryString("""
|
||||
SELECT
|
||||
u.loginName
|
||||
FROM
|
||||
`user` u
|
||||
""");
|
||||
dao.execute(sql);
|
||||
String[] sysLoginNames = (String[]) sql.getResult();
|
||||
|
||||
//存在的工号
|
||||
List<String> existsLoginNames = new ArrayList<>();
|
||||
|
||||
for (UserTemp excelUser : userImportList) {
|
||||
if (ArrayUtil.contains(sysLoginNames, excelUser.getLoginName())) {
|
||||
existsLoginNames.add(excelUser.getLoginName());
|
||||
} else {
|
||||
excelUser.setRemarks("系统查不到此人");
|
||||
}
|
||||
}
|
||||
|
||||
//匹配不到的用户
|
||||
List<UserTemp> errorExcelTempUsers = userImportList.stream().filter(v -> StrUtil.isNotBlank(v.getRemarks())).collect(Collectors.toList());
|
||||
|
||||
NutMap nutMap = NutMap.NEW();
|
||||
nutMap.setv("totalCount", userImportList.size());
|
||||
nutMap.setv("successCount", existsLoginNames.size());
|
||||
nutMap.setv("errorCount", errorExcelTempUsers.size());
|
||||
nutMap.setv("errorList", errorExcelTempUsers.stream().map(v -> {
|
||||
return NutMap.NEW().addv("工号", v.getLoginName()).addv("姓名", v.getUserName()).addv("错误原因", v.getRemarks());
|
||||
}).collect(Collectors.toList()));
|
||||
nutMap.setv("existsLoginNameRedisKey", matchUserLoginNamesKey);
|
||||
|
||||
//保存存在的工号
|
||||
if (Lang.isNotEmpty(existsLoginNames)) {
|
||||
redisTemplate.opsForList().leftPushAll(matchUserLoginNamesKey, existsLoginNames.toArray(new String[0]));
|
||||
redisTemplate.expire(matchUserLoginNamesKey, Duration.ofDays(60 * 3));
|
||||
}
|
||||
return AjaxResult.success("核对成功", nutMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return AjaxResult.error();
|
||||
}
|
||||
|
||||
@PostMapping("/doExportUser")
|
||||
public void doExportUser(@RequestParam String props, @RequestBody ActivityBasicScopePageForm pageForm, HttpServletResponse response) {
|
||||
activityBasicScopeService.doExportUser(props, pageForm, response);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.ruoyi.activity.controller.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicSettings;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicSettingsService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 活动基础设置
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/9 9:25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/basic/settings")
|
||||
public class ActivityBasicSettingsController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivityBasicSettingsService basicSettingsService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:basic:settings")
|
||||
public Object pageData(@RequestParam(value = "parentId", required = false) String parentId, @RequestBody PageForm pageForm) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("parentId", "=", parentId);
|
||||
cnd.asc("code");
|
||||
return AjaxResult.success(basicSettingsService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd));
|
||||
}
|
||||
|
||||
@GetMapping("getTreeData")
|
||||
@RequiresPermissions("activity:basic:settings")
|
||||
public Object getTreeData() {
|
||||
List list = new ArrayList();
|
||||
ActivityBasicSettings parentId = basicSettingsService.fetch(Cnd.where("parentId", "=", "0"));
|
||||
if (parentId != null) {
|
||||
parentId.setChildren(child(parentId.getId()));
|
||||
list.add(parentId);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<ActivityBasicSettings> child(String parentId) {
|
||||
List<ActivityBasicSettings> basicSettings = basicSettingsService.query(Cnd.where("parentId", "=", parentId).asc("code"));
|
||||
|
||||
basicSettings.forEach(v -> {
|
||||
v.setChildren(child(v.getId()));
|
||||
});
|
||||
|
||||
return basicSettings;
|
||||
}
|
||||
|
||||
@PostMapping("/doAddType")
|
||||
@RequiresPermissions("activity:basic:settings")
|
||||
public AjaxResult doAddType(@RequestBody ActivityBasicSettings activityBasicSettings) {
|
||||
if (basicSettingsService.count(Cnd.where("code", "=", activityBasicSettings.getCode())) > 0) {
|
||||
return AjaxResult.error("代码已存在");
|
||||
}
|
||||
basicSettingsService.update(Chain.make("hasChildren", true), Cnd.where("id", "=", activityBasicSettings.getParentId()));
|
||||
basicSettingsService.insert(activityBasicSettings);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doEditType")
|
||||
@RequiresPermissions("activity:basic:settings")
|
||||
public AjaxResult doEditType(@RequestBody ActivityBasicSettings activityBasicSettings) {
|
||||
basicSettingsService.updateIgnoreNull(activityBasicSettings);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doDelete")
|
||||
@RequiresPermissions("activity:basic:settings")
|
||||
public Object doDelete(@RequestParam String id) {
|
||||
basicSettingsService.delete(id);
|
||||
basicSettingsService.clear(Cnd.where("parentId", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/getActivityTwoLevelType")
|
||||
@RequiresPermissions("activity:basic:settings")
|
||||
public Object getActivityTwoLevelType(@RequestParam String code) {
|
||||
ActivityBasicSettings fetch = basicSettingsService.fetch(Cnd.where("code", "=", code));
|
||||
List<ActivityBasicSettings> query = basicSettingsService.query(Cnd.where("parentId", "=", fetch.getId()).asc("code"));
|
||||
return AjaxResult.success(query);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+256
@@ -0,0 +1,256 @@
|
||||
package com.ruoyi.activity.controller.basic;
|
||||
|
||||
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.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.constant.ActivityBasicScopePageForm;
|
||||
import com.ruoyi.activity.api.domain.template.UserTemp;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicScopeService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.redis.service.RedisService;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.annotation.RequiresRoles;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/11 16:03
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/basic/user")
|
||||
public class ActivityBasicUserController {
|
||||
|
||||
@Autowired
|
||||
private ActivityBasicScopeService basicScopeService;
|
||||
@Autowired
|
||||
public RedisTemplate redisTemplate;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresRoles(value = {"admin", "A06", "H01"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody ActivityBasicScopePageForm pageForm) {
|
||||
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
aus.id,
|
||||
u.userName,
|
||||
u.loginName ,
|
||||
u.sex,
|
||||
u.birthday,
|
||||
u.mobile,
|
||||
u.personType,
|
||||
u.userState,
|
||||
u.deptName AS unitName,
|
||||
u.unionName,
|
||||
aus.groupId,
|
||||
aus.groupName,
|
||||
actun.unionname AS activityUnionName
|
||||
FROM
|
||||
activity_user_scope aus
|
||||
LEFT JOIN `user` u ON u.userId = aus.userId
|
||||
LEFT JOIN activity_basic_unit actit ON actit.dept_id = u.deptId
|
||||
LEFT JOIN activity_basic_union actun ON actit.union_id = 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.union_id", "=", pageForm.getActivityUnionId());
|
||||
cnd.andEX("actit.dept_id", "=", pageForm.getActivityUnitId());
|
||||
cnd.andEX("aus.groupId", "=", pageForm.getActivityGroupId());
|
||||
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("u.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("u.userState", "=", pageForm.getUserState());
|
||||
cnd.andEX("u.unionGroupId", "=", pageForm.getUnionGroupId());
|
||||
cnd.andEX("u.threeUnitId", "=", pageForm.getThreeUnitId());
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
cnd.andEX("aus.creator", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getExistsLoginNameRedisKey()) && redisTemplate.hasKey(pageForm.getExistsLoginNameRedisKey())) {
|
||||
List<String> loginNames = redisTemplate.opsForList().range(pageForm.getExistsLoginNameRedisKey(), 0, -1);
|
||||
cnd.andEX("u.loginname", "in", loginNames);
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = basicScopeService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("/doDelete")
|
||||
@RequiresPermissions("activity:basic:user")
|
||||
public AjaxResult doDelete(@RequestParam(required = false, value = "id") String id,
|
||||
@RequestBody ActivityBasicScopePageForm pageForm) {
|
||||
|
||||
basicScopeService.doDelete(id, pageForm);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/downloadImport")
|
||||
@RequiresPermissions("activity.basic.user")
|
||||
public void downloadImport(HttpServletResponse response) {
|
||||
try {
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("人员导入模板.xlsx", StandardCharsets.UTF_8)));
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
entityList.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
entityList.add(new ExcelExportEntity("姓名", "username", 20));
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, new ArrayList<>());
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/doExportUser")
|
||||
public void doExportUser(@RequestParam Integer groupId, HttpServletResponse response) {
|
||||
try {
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("活动分组人员.xlsx", StandardCharsets.UTF_8)));
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
u.deptName AS unitName,
|
||||
u.unionName AS unionName
|
||||
FROM
|
||||
activity_user_scope aus
|
||||
LEFT JOIN `user` u ON u.userId = aus.userId
|
||||
$condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("aus.groupId", "=", groupId);
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> listMap = basicScopeService.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));
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, listMap);
|
||||
workbook.write(response.getOutputStream());
|
||||
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 清空查询条件
|
||||
*
|
||||
* @param existsLoginNameRedisKey
|
||||
* @return java.lang.Object
|
||||
* @author zhf
|
||||
* @description
|
||||
*/
|
||||
@PostMapping("/clearSearchCnd")
|
||||
@RequiresPermissions("activity.basic.user")
|
||||
public Object clearSearchCnd(String existsLoginNameRedisKey) {
|
||||
if (StrUtil.isNotBlank(existsLoginNameRedisKey)) {
|
||||
redisTemplate.delete(existsLoginNameRedisKey);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doImport")
|
||||
@RequiresPermissions("activity.basic.user")
|
||||
public Object doImport(@RequestParam String groupId, MultipartFile file) {
|
||||
String matchUserLoginNamesKey = "ActivityBasicUserController.doImport.groupId=" + groupId + "time=" + System.currentTimeMillis();
|
||||
|
||||
try {
|
||||
List<UserTemp> userImportList = ExcelImportUtil.importExcel(file.getInputStream(), UserTemp.class, new ImportParams());
|
||||
|
||||
//判断人员哪些存在哪些不存在
|
||||
Sql sql = Sqls.queryString("""
|
||||
SELECT
|
||||
u.loginName
|
||||
FROM
|
||||
activity_user_scope aus
|
||||
LEFT JOIN user u ON u.userId = aus.userId
|
||||
WHERE
|
||||
aus.groupId = @groupId
|
||||
""").setParam("groupId", groupId);
|
||||
basicScopeService.execute(sql);
|
||||
String[] sysLoginNames = (String[]) sql.getResult();
|
||||
|
||||
//存在的工号
|
||||
List<String> existsLoginNames = new ArrayList<>();
|
||||
|
||||
for (UserTemp excelUser : userImportList) {
|
||||
if (ArrayUtil.contains(sysLoginNames, excelUser.getLoginName())) {
|
||||
existsLoginNames.add(excelUser.getLoginName());
|
||||
} else {
|
||||
excelUser.setRemarks("系统查不到此人");
|
||||
}
|
||||
}
|
||||
|
||||
//匹配不到的用户
|
||||
List<UserTemp> errorExcelTempUsers = userImportList.stream().filter(v -> StrUtil.isNotBlank(v.getRemarks())).collect(Collectors.toList());
|
||||
|
||||
NutMap nutMap = NutMap.NEW();
|
||||
nutMap.setv("totalCount", userImportList.size());
|
||||
nutMap.setv("successCount", existsLoginNames.size());
|
||||
nutMap.setv("errorCount", errorExcelTempUsers.size());
|
||||
nutMap.setv("errorList", errorExcelTempUsers.stream().map(v -> {
|
||||
return NutMap.NEW().addv("工号", v.getLoginName()).addv("姓名", v.getUserName()).addv("错误原因", v.getRemarks());
|
||||
}).collect(Collectors.toList()));
|
||||
nutMap.setv("existsLoginNameRedisKey", matchUserLoginNamesKey);
|
||||
|
||||
//保存存在的工号
|
||||
if (Lang.isNotEmpty(existsLoginNames)) {
|
||||
redisTemplate.opsForList().leftPushAll(matchUserLoginNamesKey, existsLoginNames.toArray(new String[0]));
|
||||
redisTemplate.expire(matchUserLoginNamesKey, Duration.ofDays(60 * 3));
|
||||
}
|
||||
return AjaxResult.success("核对成功", nutMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return AjaxResult.error();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+159
@@ -0,0 +1,159 @@
|
||||
package com.ruoyi.activity.controller.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicSettings;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityEvent;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicSettingsService;
|
||||
import com.ruoyi.activity.service.basic.ActivityEventService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 比赛项目
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/9 14:50
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/basic/event")
|
||||
public class ActivityEventController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivityBasicSettingsService basicSettingsService;
|
||||
@Autowired
|
||||
private ActivityEventService activityEventService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:basic:event")
|
||||
public Object pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false) String group,
|
||||
@RequestParam(required = false) String events,
|
||||
@RequestParam(required = false, name = "isMenWomen[]") List<String> isMenWomen,
|
||||
@RequestParam(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 = Cnd.NEW();
|
||||
SqlExpressionGroup sqlExpressionGroup = new SqlExpressionGroup();
|
||||
if (Lang.isNotEmpty(isMenWomen)) {
|
||||
|
||||
|
||||
if (isMenWomen.stream().anyMatch(a -> a.equals("2"))) {
|
||||
sqlExpressionGroup.and("even.isMenWomen", "=", 1);
|
||||
}
|
||||
if (isMenWomen.stream().anyMatch(a -> a.equals("3"))) {
|
||||
sqlExpressionGroup.or("even.isMenWomen", "=", 2);
|
||||
}
|
||||
if (isMenWomen.stream().anyMatch(a -> a.equals("4"))) {
|
||||
sqlExpressionGroup.and("even.projectType", "=", 1);
|
||||
}
|
||||
if (isMenWomen.stream().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 AjaxResult.success(activityEventService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据code查询下面的子集
|
||||
*
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getParentIdByCodeOrId")
|
||||
@RequiresPermissions("activity:basic:event")
|
||||
public AjaxResult getParentIdByCodeOrId(@RequestParam(value = "code", required = false) Integer code,
|
||||
@RequestParam(value = "id", required = false) String id) {
|
||||
if (code != null || Strings.isNotBlank(id)) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.orEX("code", "=", code);
|
||||
cnd.orEX("id", "=", id);
|
||||
ActivityBasicSettings basicSettings = basicSettingsService.fetch(cnd);
|
||||
List<ActivityBasicSettings> basicSettingsList = basicSettingsService.query(Cnd.where("parentId", "=", basicSettings.getId()).asc("code"));
|
||||
return AjaxResult.success(basicSettingsList);
|
||||
}
|
||||
return AjaxResult.success(new ArrayList<>());
|
||||
}
|
||||
|
||||
@PostMapping("/doAdd")
|
||||
@RequiresPermissions("activity:basic:event")
|
||||
public AjaxResult doAdd(@RequestBody ActivityEvent activityEvent) {
|
||||
int projectCode = activityEventService.count(Cnd.where("projectCode", "=", activityEvent.getProjectCode()));
|
||||
if (projectCode > 0) {
|
||||
return AjaxResult.error("编号已存在");
|
||||
}
|
||||
activityEvent.setWhetherEnable(true);
|
||||
activityEventService.insert(activityEvent);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doEdit")
|
||||
@RequiresPermissions("activity:basic:event")
|
||||
public AjaxResult doEdit(@RequestBody ActivityEvent activityEvent) {
|
||||
activityEventService.update(activityEvent);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doAssignmentDate")
|
||||
@RequiresPermissions("activity:basic:event")
|
||||
public AjaxResult doAssignmentDate(@RequestParam(required = false, name = "eventIds[]") List<String> eventIds,
|
||||
@RequestParam String startAgeDate,
|
||||
@RequestParam String endAgeDate) {
|
||||
for (String eventId : eventIds) {
|
||||
activityEventService.update(Chain.make("startAgeDate", startAgeDate).add("endAgeDate", endAgeDate), Cnd.where("id", "=", eventId));
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/doDelete/{id}")
|
||||
@RequiresPermissions("activity:basic:event")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
activityEventService.delete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
package com.ruoyi.activity.controller.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnion;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnit;
|
||||
import com.ruoyi.activity.service.basic.ActivityUnionService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 活动工会
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/12 11:19
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/basic/union")
|
||||
public class ActivityUnionController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivityUnionService basicUnionService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
|
||||
/**
|
||||
* 树形数据
|
||||
*/
|
||||
@RequestMapping("/tree")
|
||||
@RequiresPermissions("activity:basic:union")
|
||||
public AjaxResult tree() {
|
||||
NutMap nutMap = NutMap.NEW();
|
||||
nutMap.setv("unionName", "工会委员会");
|
||||
List<ActivityBasicUnion> list = basicUnionService.query();
|
||||
nutMap.setv("children", list);
|
||||
return AjaxResult.success(Lang.list(nutMap));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页数据
|
||||
*/
|
||||
@RequestMapping("/listPage")
|
||||
@RequiresPermissions("activity:basic:union")
|
||||
public AjaxResult listPage(Integer pageNumber, Integer pageSize, String unionName) {
|
||||
return AjaxResult.success(basicUnionService.pageData(pageNumber, pageSize, unionName));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分工会
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
@RequiresPermissions("activity:basic:union")
|
||||
public AjaxResult update(@RequestBody ActivityBasicUnion union) {
|
||||
basicUnionService.updateIgnoreNull(union);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增分工会
|
||||
*/
|
||||
@PostMapping("/add")
|
||||
@RequiresPermissions("activity:basic:union")
|
||||
public AjaxResult add(@RequestBody ActivityBasicUnion union) {
|
||||
basicUnionService.insert(union);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除分工会
|
||||
*/
|
||||
@PostMapping("/remove/{id}")
|
||||
@RequiresPermissions("activity:basic:union")
|
||||
public AjaxResult remove(@PathVariable String id) {
|
||||
basicUnionService.remove(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询该分工会下的人
|
||||
*/
|
||||
@RequestMapping("/unionUsers/{id}")
|
||||
public AjaxResult unionUsers(@PathVariable String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId,
|
||||
u.deptId,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.deptName
|
||||
FROM
|
||||
`user` u
|
||||
LEFT JOIN activity_basic_unit it ON u.deptId = it.dept_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("it.union_id", "=", id);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(basicUnionService.listMap(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询该分工会下的管理员
|
||||
*/
|
||||
@RequestMapping("/unionAdmins/{id}")
|
||||
public AjaxResult unionAdmins(@PathVariable String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId,
|
||||
u.deptId,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
dept.dept_name AS deptNames
|
||||
FROM
|
||||
`user` u
|
||||
LEFT JOIN activity_basic_unit dept ON dept.dept_id = u.deptId
|
||||
$condition
|
||||
""").setParam("unionId", id);
|
||||
List<FeignCnd> cndList = List.of(
|
||||
new FeignCnd("role_id", "=", Roles.FGH_ADMIN)
|
||||
);
|
||||
List<SysUserRole> sysUserRoles = remoteUserRoleService.getUserRole(cndList).getData();
|
||||
List<Long> userids = sysUserRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("dept.union_id", "=", id);
|
||||
cnd.and("u.userId", "in", userids);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(basicUnionService.listMap(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 没有分配分工会的二级单位
|
||||
*/
|
||||
@GetMapping("/units")
|
||||
public AjaxResult units(@Valid @RequestParam String id) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("parentId", "=", 100);
|
||||
cnd.and("status", "=", 0);
|
||||
cnd.and("delFlag", "=", 0);
|
||||
cnd.and("union_id", "is", null);
|
||||
List<ActivityBasicUnit> units = basicUnionService.dao().query(ActivityBasicUnit.class, cnd);
|
||||
return AjaxResult.success(units);
|
||||
}
|
||||
|
||||
/**
|
||||
* 本分工会的二级单位
|
||||
*/
|
||||
@GetMapping("/selfUnits")
|
||||
public AjaxResult selfUnits(@Valid @RequestParam String id) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("unit_level", "=", 2);
|
||||
// cnd.and("status", "=", 0);
|
||||
// cnd.and("delFlag", "=", 0);
|
||||
cnd.and("unionId", "=", id);
|
||||
List<ActivityBasicUnit> units = basicUnionService.dao().query(ActivityBasicUnit.class, cnd);
|
||||
return AjaxResult.success(units);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配二级单位
|
||||
*/
|
||||
@PostMapping("/setUnit")
|
||||
public AjaxResult setUnit(@RequestParam String units, @RequestParam String unionId) {
|
||||
String[] unitArray = units.split(",");
|
||||
if (unitArray.length > 0) {
|
||||
try {
|
||||
basicUnionService.setUnit(unionId, unitArray);
|
||||
return AjaxResult.success();
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error();
|
||||
}
|
||||
} else {
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package com.ruoyi.activity.controller.basic;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnit;
|
||||
import com.ruoyi.activity.service.basic.ActivityUnitService;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 活动单位
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/12 9:11
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/basic/unit")
|
||||
public class ActivityUnitController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private ActivityUnitService activityUnitService;
|
||||
|
||||
/**
|
||||
* 获取部门列表
|
||||
*/
|
||||
@RequiresPermissions("activity:basic:unit")
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody ActivityBasicUnit basicUnit) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(basicUnit.getDeptName())) {
|
||||
cnd.and(Cnd.likeEX("deptName", basicUnit.getDeptName()));
|
||||
}
|
||||
cnd.andEX("deptCode", "=", basicUnit.getDeptCode());
|
||||
cnd.andEX("status", "=", basicUnit.getStatus());
|
||||
cnd.desc("deptCode");
|
||||
|
||||
List<ActivityBasicUnit> basicUnits = activityUnitService.query(cnd);
|
||||
return success(basicUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改部门
|
||||
*/
|
||||
@RequiresPermissions("activity:basic:unit")
|
||||
@PostMapping("/updateDept")
|
||||
public AjaxResult updateDept(@RequestBody ActivityBasicUnit basicUnit) {
|
||||
AjaxResult ajaxResult = activityUnitService.updateDept(basicUnit);
|
||||
return ajaxResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增部门
|
||||
*/
|
||||
@RequiresPermissions("activity:basic:unit")
|
||||
@PostMapping("/addDept")
|
||||
public AjaxResult addDept(@RequestBody ActivityBasicUnit basicUnit) {
|
||||
AjaxResult ajaxResult = activityUnitService.addDept(basicUnit);
|
||||
return ajaxResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除部门
|
||||
*/
|
||||
@RequiresPermissions("activity:basic:unit")
|
||||
@DeleteMapping("handleDelete/{deptId}")
|
||||
public AjaxResult handleDelete(@PathVariable Long deptId) {
|
||||
int count = activityUnitService.count(Cnd.where("parentId", "=", deptId));
|
||||
if (count > 0) {
|
||||
return warn("存在下级部门,不允许删除");
|
||||
}
|
||||
activityUnitService.delete(deptId);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据部门编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("activity:basic:unit")
|
||||
@GetMapping(value = "/getInfo/{deptId}")
|
||||
public AjaxResult getInfo(@PathVariable Long deptId) {
|
||||
return success(activityUnitService.fetch(deptId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+227
@@ -0,0 +1,227 @@
|
||||
package com.ruoyi.activity.controller.common;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicSettings;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnion;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnit;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicScopeService;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicSettingsService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.system.api.RemoteDeptService;
|
||||
import com.ruoyi.system.api.RemoteUnionService;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/5
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/common")
|
||||
public class ActivityCommonController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ActivityBasicScopeService activityBasicScopeService;
|
||||
@Autowired
|
||||
private ActivityBasicSettingsService basicSettingsService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUnionService remoteUnionService;
|
||||
|
||||
@Autowired
|
||||
private RemoteDeptService remoteDeptService;
|
||||
|
||||
@RequestMapping("getEnumSelect")
|
||||
public AjaxResult getEnumSelect(String enumName) {
|
||||
try {
|
||||
String enumPackage = "com.ruoyi.activity.api.constant";
|
||||
Class<Enum> clazz = (Class<Enum>) Class.forName(enumPackage + "." + enumName);
|
||||
Enum[] objs = clazz.getEnumConstants();
|
||||
List<NutMap> ls = new ArrayList<>();
|
||||
for (Enum obj : objs) {
|
||||
String name = obj.name();
|
||||
NutMap nutMap = Lang.obj2nutmap(obj);
|
||||
nutMap.put("name", name);
|
||||
ls.add(nutMap);
|
||||
}
|
||||
return AjaxResult.success(ls);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询全部角色
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getRoleList")
|
||||
public AjaxResult getRoleList() {
|
||||
List<Record> roleList = remoteUserRoleService.getAllRole().getData();
|
||||
return AjaxResult.success(roleList);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询全部活动工会
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getActivityUnions")
|
||||
public AjaxResult getActivityUnions() {
|
||||
List<ActivityBasicUnion> basicUnions = dao.query(ActivityBasicUnion.class, Cnd.NEW().asc("unionCode"));
|
||||
return AjaxResult.success(basicUnions);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部活动单位
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getActivityUnits")
|
||||
public AjaxResult getActivityUnits(@RequestParam(required = false, value = "unionId") String id) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("unionId", "=", id);
|
||||
cnd.asc("deptCode");
|
||||
List<ActivityBasicUnit> basicUnits = dao.query(ActivityBasicUnit.class, cnd);
|
||||
return AjaxResult.success(basicUnits);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前人管理的协会
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getClubsByRole")
|
||||
public AjaxResult getClubsByRole() {
|
||||
return AjaxResult.success();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 查询所有活动组别
|
||||
* @author zhf
|
||||
* @date 2023/1/10 17:13
|
||||
*/
|
||||
|
||||
@GetMapping("/getActivityUserScopeGroup")
|
||||
public AjaxResult getActivityUserScopeGroup() {
|
||||
List<NutMap> activityUserScopeGroup = activityBasicScopeService.getActivityUserScopeGroup();
|
||||
return AjaxResult.success(activityUserScopeGroup);
|
||||
}
|
||||
|
||||
private static final NutMap activityCodeMap = new NutMap() {{
|
||||
put("40002", "JC");
|
||||
put("40003", "XH");
|
||||
put("40001", "GH");
|
||||
}};
|
||||
|
||||
/**
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description活动编号生成
|
||||
* @author zhf
|
||||
* @date 2023/1/16 9:47
|
||||
*/
|
||||
|
||||
@GetMapping("/generateActivityCode")
|
||||
public AjaxResult 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", activityBasicScopeService.dao().count(ActivityTissue.class, cnd) + 1);
|
||||
String activityCode = year + activityCodeMap.getString(activity_type) + code;
|
||||
|
||||
return AjaxResult.success().put("data", activityCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param code
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 查询活动基础二级信息
|
||||
* @author zhf
|
||||
* @date 2023/1/31 14:45
|
||||
*/
|
||||
@GetMapping("/getActivityTwoLevelType")
|
||||
public AjaxResult getActivityTwoLevelType(String code) {
|
||||
ActivityBasicSettings fetch = basicSettingsService.fetch(Cnd.where("code", "=", code));
|
||||
List<ActivityBasicSettings> query = basicSettingsService.query(Cnd.where("parentId", "=", fetch.getId()).asc("code"));
|
||||
return AjaxResult.success(query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param unionId
|
||||
* @param roleId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 根据角色id或者工会查询用户信息
|
||||
* @author zhf
|
||||
* @date 2023/1/31 14:45
|
||||
*/
|
||||
|
||||
@GetMapping("/getUserByRoleOrUnionId")
|
||||
public AjaxResult getUserByRoleOrUnionId(@RequestParam(required = false, value = "unionId") String unionId,
|
||||
@RequestParam(required = false, value = "roleId") Integer roleId) {
|
||||
List<FeignCnd> cndList = List.of(
|
||||
new FeignCnd("unionId", "=", unionId),
|
||||
new FeignCnd("role_id", "=", roleId)
|
||||
);
|
||||
List<SysUserRole> sysUserRoles = remoteUserRoleService.getUserRole(cndList).getData();
|
||||
|
||||
|
||||
if (Lang.isNotEmpty(sysUserRoles)) {
|
||||
Sql sql = Sqls.create("select userName,loginName,mobile from `user` $condition");
|
||||
List<Long> ids = sysUserRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("userId", "in", ids);
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> nutMapList = basicSettingsService.listMap(sql);
|
||||
|
||||
return AjaxResult.success(nutMapList);
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/getScopeUserCount")
|
||||
public AjaxResult getScopeUserCount(Integer activityGroupId) {
|
||||
return AjaxResult.success(activityBasicScopeService.getScopeUserCount(activityGroupId));
|
||||
}
|
||||
|
||||
@GetMapping("/getUserScope")
|
||||
public AjaxResult getUserScope(Integer activityGroupId) {
|
||||
return AjaxResult.success(activityBasicScopeService.getUserScope(activityGroupId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package com.ruoyi.activity.controller.common;
|
||||
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicScopeService;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 文化活动公用查询
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/13 14:52
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/culture/common")
|
||||
public class CultureActivityCommonController {
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
@Autowired
|
||||
private ActivityBasicScopeService basicScopeService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
@Autowired
|
||||
private ActivityCultureApplyService cultureApplyService;
|
||||
|
||||
|
||||
@GetMapping("/findUser")
|
||||
public AjaxResult findUser(@RequestParam(value = "searchWord", required = false) String searchWord,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
userName,
|
||||
loginName,
|
||||
sex,
|
||||
mobile,
|
||||
deptName unitName,
|
||||
unionName
|
||||
FROM
|
||||
`user`
|
||||
$condition
|
||||
limit 0,20
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
if (activityType == 40002) {
|
||||
cnd.and("unionId", "=", SecurityUtils.getUnionId());
|
||||
} else if (activityType == 40003) {
|
||||
List<FeignCnd> cndList = List.of(
|
||||
new FeignCnd("userId", "=", SecurityUtils.getUserId()),
|
||||
new FeignCnd("roleId", "=", Roles.CLUB_PRESIDENT)
|
||||
);
|
||||
List<SysUserRole> userRoles = remoteUserRoleService.getUserRole(cndList).getData();
|
||||
if (Lang.isNotEmpty(userRoles)) {
|
||||
|
||||
} else {
|
||||
cnd.and("1", "!=", "1");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(searchWord)) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
group.andLike("userName", searchWord);
|
||||
group.orLike("loginName", searchWord);
|
||||
cnd.and(group);
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(baseService.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/findOne")
|
||||
public AjaxResult findOne(String id) {
|
||||
return cultureApplyService.findOne(id);
|
||||
}
|
||||
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
package com.ruoyi.activity.controller.culture;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyService;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 文化活动申请
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/13 14:19
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/culture/apply")
|
||||
public class ActivityCultureApplyController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
@Autowired
|
||||
private ActivityCultureApplyService cultureApplyService;
|
||||
|
||||
|
||||
/**
|
||||
* @param activityScopeGroupId 空查所有人,不为空查这个组别下的人数
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 查询每个分工会下的人数,
|
||||
* @author zhf
|
||||
* @date 2023/1/15 13:54
|
||||
*/
|
||||
@GetMapping("/getUnionData")
|
||||
public AjaxResult getUnionData(@RequestParam(value = "activityScopeGroupId", required = false) String activityScopeGroupId) {
|
||||
if (StrUtil.isBlank(activityScopeGroupId)) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
gh.id,
|
||||
gh.unionname AS unionName,
|
||||
count( u.userId ) AS unionNum,
|
||||
ROUND( count( u.userId ) * 0.5 ) AS limitNum
|
||||
FROM
|
||||
`union` gh
|
||||
LEFT JOIN `user` u ON u.unionid = gh.id
|
||||
GROUP BY
|
||||
gh.id
|
||||
""");
|
||||
return AjaxResult.success(baseService.listMap(sql));
|
||||
} else {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
gh.id,
|
||||
gh.unionname AS unionName,
|
||||
(
|
||||
SELECT
|
||||
count( 1 )
|
||||
FROM
|
||||
`user`
|
||||
WHERE
|
||||
userId IN ( SELECT userid FROM activity_user_scope WHERE groupId = @activityScopeGroupId )\s
|
||||
AND unionId = gh.id
|
||||
) AS unionNum,
|
||||
ROUND( count( u.userId ) * 0.5 ) AS limitNum
|
||||
FROM
|
||||
`union` gh
|
||||
LEFT JOIN `user` u ON u.unionid = gh.id
|
||||
GROUP BY
|
||||
gh.id
|
||||
""").setParam("activityScopeGroupId", activityScopeGroupId);
|
||||
return AjaxResult.success(baseService.listMap(sql));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doAdd")
|
||||
public AjaxResult doAdd(@RequestBody ActivityTissue tissue) {
|
||||
|
||||
cultureApplyService.doAdd(tissue);
|
||||
return AjaxResult.success("创建成功");
|
||||
}
|
||||
|
||||
@PostMapping("/doEdit")
|
||||
public AjaxResult doEdit(@RequestBody ActivityTissue tissue) {
|
||||
|
||||
cultureApplyService.doEdit(tissue);
|
||||
return AjaxResult.success("修改成功");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
package com.ruoyi.activity.controller.culture;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissuePerson;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyUserService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName ActivityCultureApplyUserController
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2024/6/18 16:35
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/culture/applyUser")
|
||||
public class ActivityCultureApplyUserController {
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
@Autowired
|
||||
private ActivityCultureApplyUserService activityCultureApplyUserService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityApplyUser","activity:culture:UnionActivityApplyUser","activity:culture:ClubActivityApplyUser"}, logical = Logical.OR)
|
||||
public Object pageData(@RequestBody PageForm page,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
tissue.*,
|
||||
uni.unionname ,
|
||||
abs.`name` projectTypeName
|
||||
FROM
|
||||
activity_tissue tissue
|
||||
LEFT JOIN `union` uni ON uni.id = tissue.unionId
|
||||
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
|
||||
$condition
|
||||
""");
|
||||
|
||||
cnd.andEX("YEAR(tissue.startTime)", "=", year);
|
||||
cnd.andEX("tissue.type", "=", activityType);
|
||||
cnd.andEX("tissue.state", "=", 3);
|
||||
cnd.andEX("tissue.projectTypeCode", "!=", 50004);
|
||||
cnd.andEX("tissue.signUpMethod", "in", List.of(1, 2,3));
|
||||
|
||||
if (Strings.isNotBlank(name)) {
|
||||
cnd.where().andLike("tissue.name", name);
|
||||
}
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("A06,admin")) {
|
||||
}
|
||||
cnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId=tissue.groupId AND userId='%s') >0".formatted(SecurityUtils.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", "=", SecurityUtils.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.userId = atp.userId
|
||||
where atp.tissueId=@tissueId and u.unionid=@unionid
|
||||
""").setParam("tissueId", activityId).setParam("unionid", SecurityUtils.getUnionId());
|
||||
int count = baseService.count(sqlApplyUser);
|
||||
v.setv("countUser", count);
|
||||
}
|
||||
});
|
||||
pagination.setList(list);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("/doSingleRegister")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityApplyUser","activity:culture:UnionActivityApplyUser","activity:culture:ClubActivityApplyUser"}, logical = Logical.OR)
|
||||
public AjaxResult doSingleRegister(@RequestParam String activityId) {
|
||||
return activityCultureApplyUserService.doSingleRegister(activityId);
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/doSingleCancelRegister")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityApplyUser","activity:culture:UnionActivityApplyUser","activity:culture:ClubActivityApplyUser"}, logical = Logical.OR)
|
||||
public AjaxResult doSingleCancelRegister(@RequestParam String activityId) {
|
||||
return activityCultureApplyUserService.doSingleCancelRegister(activityId);
|
||||
}
|
||||
|
||||
@GetMapping("/selfUnionUsers")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityApplyUser","activity:culture:UnionActivityApplyUser","activity:culture:ClubActivityApplyUser"}, logical = Logical.OR)
|
||||
public AjaxResult selfUnionUsers(@RequestParam String groupId) {
|
||||
return AjaxResult.success(activityCultureApplyUserService.selfUnionUsers(groupId));
|
||||
}
|
||||
|
||||
@GetMapping("/getReportedUser")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityApplyUser","activity:culture:UnionActivityApplyUser","activity:culture:ClubActivityApplyUser"}, logical = Logical.OR)
|
||||
public AjaxResult getReportedUser(@RequestParam String tissueId) {
|
||||
return AjaxResult.success(activityCultureApplyUserService.getReportedUser(tissueId));
|
||||
}
|
||||
|
||||
@PostMapping("/doSaveUnionRegister")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityApplyUser","activity:culture:UnionActivityApplyUser","activity:culture:ClubActivityApplyUser"}, logical = Logical.OR)
|
||||
public AjaxResult doSaveUnionRegister(@RequestParam String activityId,
|
||||
@RequestParam(name = "personIds[]") Long[] personIds) {
|
||||
return activityCultureApplyUserService.doSaveUnionRegister(activityId,personIds);
|
||||
}
|
||||
|
||||
}
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
package com.ruoyi.activity.controller.culture;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
import com.ruoyi.system.api.RemoteUnionService;
|
||||
import com.ruoyi.system.api.domain.SysUnion;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/17
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/culture/audit")
|
||||
public class ActivityCultureAuditController {
|
||||
|
||||
@Autowired
|
||||
private ActivityCultureApplyService cultureApplyService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUnionService remoteUnionService;
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"activity:culture:unionActivityAudit", "activity:culture:clubActivityAudit"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "state", required = false) String state,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "type", required = false) Integer type) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
tissue.*,
|
||||
abs.`name` projectTypeName
|
||||
FROM
|
||||
activity_tissue tissue
|
||||
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);
|
||||
if (Strings.isNotBlank(state)) {
|
||||
cnd.andEX("tissue.state", state.equals("1") ? ">" : "=", 1);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(name)) {
|
||||
cnd.where().andLike("tissue.name", name);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
} else {
|
||||
cnd.desc("tissue.startTime");
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = cultureApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
|
||||
List<NutMap> list = pagination.getList();
|
||||
|
||||
//查询所有工会
|
||||
List<SysUnion> unionList = remoteUnionService.listAll().getData();
|
||||
Map<String, String> unionMap = unionList.stream().collect(Collectors.toMap(SysUnion::getId, SysUnion::getUnionName));
|
||||
//查询所有协会
|
||||
List<Sys_club> clubList = remoteClubService.getClubs().getData();
|
||||
Map<String, String> clubMap = clubList.stream().collect(Collectors.toMap(Sys_club::getId, Sys_club::getName));
|
||||
|
||||
list.forEach(item -> {
|
||||
item.put("unionName", unionMap.get(item.getString("unionId")));
|
||||
item.put("clubName", clubMap.get(item.getString("clubId")));
|
||||
});
|
||||
return AjaxResult.success(pagination);
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@RequiresPermissions(value = {"activity:culture:unionActivityAudit", "activity:culture:clubActivityAudit"}, logical = Logical.OR)
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(value = "id", required = false) String id,
|
||||
@RequestParam(value = "flag", required = false) boolean flag) {
|
||||
audit.setLoginName(SecurityUtils.getNickName());
|
||||
cultureApplyService.dao().insert(audit);
|
||||
cultureApplyService.dao().update(ActivityTissue.class, Chain.make("state", flag ? 3 : 2).add("auditId", audit.getId()), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package com.ruoyi.activity.controller.culture;
|
||||
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissuePerson;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/16 14:02
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/culture/manage")
|
||||
public class ActivityCultureManageController {
|
||||
|
||||
@Autowired
|
||||
private ActivityCultureApplyService cultureApplyService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "clubId", required = false) String clubId,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType) {
|
||||
return cultureApplyService.pageData(page, year, name, unionId, clubId, activityType);
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/doDelete")
|
||||
public AjaxResult doDelete(String id) {
|
||||
cultureApplyService.doDelete(id);
|
||||
return AjaxResult.success("删除成功");
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("/searchTissueUser")
|
||||
public AjaxResult searchTissueUser(String id, @RequestParam(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 AjaxResult.success(cultureApplyService.dao().query(ActivityTissuePerson.class, cnd));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
package com.ruoyi.activity.controller.culture;
|
||||
|
||||
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.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissuePerson;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyUserService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @ClassName ActivityCultureUserStatisticsController
|
||||
* @Description 报名人员统计
|
||||
* @Author zhf
|
||||
* @Date 2024/6/19 14:35
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/culture/applyUser/statistics")
|
||||
public class ActivityCultureUserStatisticsController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivityCultureApplyUserService activityCultureApplyUserService;
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityUserStatistics", "activity:culture:UnionActivityUserStatistics", "activity:culture:ClubActivityUserStatistics"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
atp.id,
|
||||
atp.tissueId,
|
||||
atp.userId,
|
||||
atp.loginName,
|
||||
atp.userName,
|
||||
atp.unitName,
|
||||
atp.unionName,
|
||||
atp.sex,
|
||||
atp.mobile,
|
||||
atp.applyUserId,
|
||||
atp.applyUserName,
|
||||
atp.applyDateTime
|
||||
FROM
|
||||
`activity_tissue_person` atp
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("atp.tissueId", "=", activityId);
|
||||
cnd.andEX("atp.unionId", "=", unionId);
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
if (List.of(40001, 40002).contains(activityType)) {
|
||||
cnd.and("atp.unionId", "=", SecurityUtils.getUnionId());
|
||||
} else if (activityType == 40003) {
|
||||
List<NutMap> clubMap = remoteClubService.getClubsByRole().getData();
|
||||
List<String> stids = clubMap.stream().map(v -> v.getString("stid")).collect(Collectors.toList());
|
||||
cnd.and("atp.userId", "in", remoteClubService.getClubUserIdByIdList(stids).getData());
|
||||
}
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(page.getSearchName()) && Strings.isNotBlank(page.getSearchKeyword())) {
|
||||
cnd.where().andLike(page.getSearchName(), page.getSearchKeyword());
|
||||
}else if (Strings.isBlank(page.getSearchName())&&Strings.isNotBlank(page.getSearchKeyword())){
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("atp.userName", page.getSearchKeyword());
|
||||
seg.orLike("atp.loginName", page.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
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 AjaxResult.success(activityCultureApplyUserService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getActivityByYearOrType")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityUserStatistics", "activity:culture:UnionActivityUserStatistics", "activity:culture:ClubActivityUserStatistics"}, logical = Logical.OR)
|
||||
public AjaxResult getActivityByYearOrType(@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType) {
|
||||
Cnd cnd = Cnd.where("type", "=", activityType);
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
cnd.and("signUpMethod", "in", List.of(1, 2, 3));
|
||||
if (activityType == 40002) {
|
||||
cnd.and("unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
}
|
||||
cnd.and("projectTypeCode", "!=", 50004);
|
||||
cnd.andEX("YEAR(startTime)", "=", year).desc("startTime");
|
||||
return AjaxResult.success(activityCultureApplyUserService.dao().query(ActivityTissue.class, cnd));
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/doDeleteActivityUser")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityUserStatistics", "activity:culture:UnionActivityUserStatistics", "activity:culture:ClubActivityUserStatistics"}, logical = Logical.OR)
|
||||
public AjaxResult doDeleteActivityUser(@RequestParam String activityId,
|
||||
@RequestParam String applyUserId,
|
||||
@RequestParam String id) {
|
||||
activityCultureApplyUserService.doDeleteActivityUser(activityId, applyUserId, id);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doExportUser")
|
||||
@RequiresPermissions(value = {"activity:culture:SchoolActivityUserStatistics", "activity:culture:UnionActivityUserStatistics", "activity:culture:ClubActivityUserStatistics"}, logical = Logical.OR)
|
||||
public void doExportUser(@RequestParam String activityId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId, HttpServletResponse response) {
|
||||
try {
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("活动报名人员.xlsx", StandardCharsets.UTF_8)));
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
atp.loginName,
|
||||
atp.userName,
|
||||
atp.unitName,
|
||||
atp.unionName,
|
||||
atp.sex,
|
||||
atp.mobile,
|
||||
atp.applyUserName,
|
||||
atp.applyDateTime
|
||||
FROM
|
||||
`activity_tissue_person` atp
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("atp.tissueId", "=", activityId);
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<ActivityTissuePerson> tissuePeople = activityCultureApplyUserService.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));
|
||||
entityList.add(new ExcelExportEntity("报名人", "applyUserName", 20));
|
||||
entityList.add(new ExcelExportEntity("报名时间", "applyDateTime", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, tissuePeople);
|
||||
workbook.write(response.getOutputStream());
|
||||
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+371
@@ -0,0 +1,371 @@
|
||||
package com.ruoyi.activity.controller.culture.mobile;
|
||||
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissuePerson;
|
||||
import com.ruoyi.activity.service.culture.ActivityCultureApplyService;
|
||||
import com.ruoyi.activity.service.culture.mobile.MobileActivityCultureApplyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @ClassName mobileActivityCultureManageController
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2023/3/1 19:36
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mobile/culture/manage")
|
||||
public class MobileActivityCultureManageController {
|
||||
|
||||
@Autowired
|
||||
private ActivityCultureApplyService cultureApplyService;
|
||||
@Autowired
|
||||
private MobileActivityCultureApplyService mobileActivityCultureApplyService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "activityStatus", required = false) int activityStatus,
|
||||
@RequestParam(value = "activityLevel", required = false) String activityLevel) {
|
||||
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
`name`,
|
||||
address,
|
||||
startTime,
|
||||
endTime,
|
||||
applyStartTime,
|
||||
applyEndTime,
|
||||
projectTypeCode,
|
||||
signUpMethod,
|
||||
cover
|
||||
FROM
|
||||
activity_tissue ti
|
||||
$condition
|
||||
UNION
|
||||
SELECT
|
||||
id,
|
||||
`name`,
|
||||
address,
|
||||
startTime,
|
||||
endTime,
|
||||
applyStartTime,
|
||||
applyEndTime,
|
||||
'50004' AS projectTypeCode,
|
||||
1 AS signUpMethod,
|
||||
image AS cover
|
||||
FROM
|
||||
activity_school sc
|
||||
$school
|
||||
$schoolTime
|
||||
$schoolLevel
|
||||
$orderBy
|
||||
""");
|
||||
Cnd allCnd = Cnd.NEW();
|
||||
allCnd.andEX("type", "=", activityLevel);
|
||||
if (Lang.isNotEmpty(year)) {
|
||||
allCnd.and(Cnd.exps("YEAR(applyStartTime)", "=", year).or("YEAR(applyEndTime)", "=", year));
|
||||
}
|
||||
allCnd.and("state", "=", "3");
|
||||
allCnd.andEX("projectTypeCode", "!=", "50004");
|
||||
allCnd.and("signUpMethod", "is not", null);
|
||||
allCnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId= ti.groupId AND userId='%s') >0".formatted(SecurityUtils.getUserId())));
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
if (AuthUtil.hasRole("H04")) {
|
||||
allCnd.andEX("signUpMethod", "in", Lang.array(1, 2));
|
||||
} else {
|
||||
allCnd.andEX("signUpMethod", "=", 1);
|
||||
}
|
||||
}
|
||||
sql.setVar("school", """
|
||||
WHERE
|
||||
YEAR ( startTime )= %s
|
||||
AND ( SELECT COUNT( 1 ) FROM activity_user_scope WHERE groupId = sc.activityGroupId AND userId = '%s' ) > 0
|
||||
AND JSON_CONTAINS(applyWay -> '$[*]','1','$' )
|
||||
""".formatted(year, SecurityUtils.getUserId()));
|
||||
switch (activityStatus) {
|
||||
case 2 -> {
|
||||
allCnd.and(new Static("applyStartTime < now()"));
|
||||
allCnd.and(new Static("applyEndTime > now()"));
|
||||
sql.setVar("schoolTime", "AND applyStartTime < now() AND applyEndTime > now()");
|
||||
}
|
||||
case 3 -> {
|
||||
allCnd.and(new Static("startTime < now()"));
|
||||
allCnd.and(new Static("endTime > now()"));
|
||||
sql.setVar("schoolTime", "AND startTime < now() AND endTime > now()");
|
||||
|
||||
}
|
||||
case 4 -> {
|
||||
allCnd.and(new Static("endTime < now()"));
|
||||
sql.setVar("schoolTime", "AND endTime < now()");
|
||||
}
|
||||
}
|
||||
if (Strings.isNotBlank(activityLevel)) {
|
||||
sql.setVar("schoolLevel", "AND activityLevel='%s'".formatted(activityLevel));
|
||||
}
|
||||
sql.setVar("orderBy", "ORDER BY startTime DESC");
|
||||
sql.setCondition(allCnd);
|
||||
return AjaxResult.success(cultureApplyService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return
|
||||
* @author zhf
|
||||
* @description 验证当前用户是否报名
|
||||
*/
|
||||
@GetMapping("/isRegisterForMe")
|
||||
public AjaxResult isRegisterForMe(String activityId) {
|
||||
int count = cultureApplyService.dao().count(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId).and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success(count > 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 是否签到
|
||||
*/
|
||||
@GetMapping("/isSign")
|
||||
public AjaxResult isSign(String activityId) {
|
||||
ActivityTissue tissue = cultureApplyService.dao().fetch(ActivityTissue.class, Cnd.where("id", "=", activityId));
|
||||
ActivityTissuePerson tissuePerson = cultureApplyService.dao().fetch(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId).and("userId", "=", SecurityUtils.getUserId()));
|
||||
if (Lang.isEmpty(tissuePerson)) {
|
||||
return AjaxResult.success(false);
|
||||
}
|
||||
return AjaxResult.success(tissuePerson.isSign());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return 人数
|
||||
* @author zhf
|
||||
* @description 查询当前活动报名人数
|
||||
*/
|
||||
@GetMapping("/getHasRegUserNum")
|
||||
public AjaxResult getHasRegUserNum(String activityId) {
|
||||
ActivityTissue tissue = cultureApplyService.dao().fetch(ActivityTissue.class, Cnd.where("id", "=", activityId));
|
||||
Integer userNumberLimit = tissue.getUserNumberLimit();
|
||||
if (userNumberLimit == null || userNumberLimit == 1) {
|
||||
return AjaxResult.success(cultureApplyService.dao().count(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId)));
|
||||
} else if (userNumberLimit == 2) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
count( 1 )
|
||||
FROM
|
||||
activity_tissue_person atp
|
||||
LEFT JOIN `user` u ON u.userId = atp.userId
|
||||
WHERE
|
||||
u.unionid = @unionId
|
||||
AND atp.tissueId = @activityId
|
||||
""");
|
||||
sql.setParam("unionId", SecurityUtils.getUnionId()).setParam("activityId", activityId);
|
||||
return AjaxResult.success(cultureApplyService.count(sql));
|
||||
}
|
||||
return AjaxResult.success(0);
|
||||
}
|
||||
|
||||
@PostMapping("/singleSignUp")
|
||||
public AjaxResult singleSignUp(String activityId) {
|
||||
mobileActivityCultureApplyService.singleSignUp(activityId);
|
||||
return AjaxResult.success("签到成功!");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param page
|
||||
* @return java.lang.Object
|
||||
* @author zhf
|
||||
* @description 我的活动
|
||||
*/
|
||||
@PostMapping("/myPageData")
|
||||
public Object myPageData(@RequestBody PageForm page) {
|
||||
String sqlStr = """
|
||||
SELECT
|
||||
act.id,
|
||||
act.`name`,
|
||||
act.activityCode,
|
||||
act.applyStartTime,
|
||||
act.applyEndTime,
|
||||
act.startTime,
|
||||
act.endTime,
|
||||
act.address,
|
||||
act.activityContent,
|
||||
act.signUpMethod,
|
||||
act.userNumberLimit,
|
||||
act.totalUserNumberLimit,
|
||||
act.unionUserNumberLimit,
|
||||
act.cover,
|
||||
act.location,
|
||||
act.rangeMeter,
|
||||
act.needSign,
|
||||
act.projectTypeCode,
|
||||
abs.`name` AS projectTypeName,
|
||||
creater.userName AS createUserName,
|
||||
creater.mobile as createUserMobile
|
||||
FROM
|
||||
activity_tissue act
|
||||
LEFT JOIN activity_basic_settings abs ON abs.`code`=act.projectTypeCode
|
||||
LEFT JOIN `user` creater ON creater.userId = act.userId
|
||||
WHERE
|
||||
|
||||
(
|
||||
act.id IN (SELECT tissueId FROM activity_tissue_person where userId = @userId AND tissueId IS NOT NULL)
|
||||
OR
|
||||
act.id IN (SELECT activityId FROM activity_school_apply where userId = @userId AND activityId IS NOT NULL)
|
||||
)
|
||||
""";
|
||||
|
||||
Sql sql = Sqls.create(sqlStr).setParam("userId", SecurityUtils.getUserId());
|
||||
return AjaxResult.success(cultureApplyService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 单个活动信息
|
||||
*/
|
||||
@GetMapping("/findOne")
|
||||
public AjaxResult findOne(String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
act.id,
|
||||
act.`name`,
|
||||
act.activityCode,
|
||||
act.applyStartTime,
|
||||
act.applyEndTime,
|
||||
act.startTime,
|
||||
act.endTime,
|
||||
act.address,
|
||||
act.activityContent,
|
||||
act.signUpMethod,
|
||||
act.userNumberLimit,
|
||||
act.totalUserNumberLimit,
|
||||
act.unionUserNumberLimit,
|
||||
act.cover,
|
||||
act.location,
|
||||
act.rangeMeter,
|
||||
act.needSign,
|
||||
act.projectTypeCode,
|
||||
act.teamNum,
|
||||
abs.`name` AS projectTypeName,
|
||||
creater.userName AS createUserName,
|
||||
creater.mobile as createUserMobile
|
||||
FROM
|
||||
activity_tissue act
|
||||
LEFT JOIN activity_basic_settings abs ON abs.`code`=act.projectTypeCode
|
||||
LEFT JOIN `user` creater ON creater.userId = act.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("act.id", "=", id);
|
||||
sql.setCondition(cnd);
|
||||
NutMap activityMap = cultureApplyService.fetch(sql);
|
||||
if (Lang.isNotEmpty(activityMap.getInt("userNumberLimit")) && activityMap.getInt("userNumberLimit") == 2) {
|
||||
List<NutMap> unionUserNumberLimit = activityMap.getAs("unionUserNumberLimit", List.class);
|
||||
Optional<NutMap> limitUnionOptional = unionUserNumberLimit.stream().filter(v -> v.getString("id").equals(SecurityUtils.getUnionId())).findFirst();
|
||||
limitUnionOptional.ifPresent(map -> activityMap.put("limitUnion", map));
|
||||
}
|
||||
return AjaxResult.success(activityMap);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param searchKey
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 查询可报名的人员
|
||||
*/
|
||||
@GetMapping("/searchNoRegisterUser")
|
||||
public AjaxResult searchNoRegisterUser(@RequestParam(required = false) String searchKey, @RequestParam(required = false) String activityId) {
|
||||
|
||||
ActivityTissue tissue = cultureApplyService.dao().fetch(ActivityTissue.class, Cnd.where("id", "=", activityId));
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId id,
|
||||
loginName,
|
||||
userName,
|
||||
sex,
|
||||
deptName AS unitName
|
||||
FROM
|
||||
`user`
|
||||
$condition
|
||||
""");
|
||||
String unionId = SecurityUtils.getUnionId();
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("unionId", "=", unionId);
|
||||
if (Lang.isNotEmpty(searchKey)) {
|
||||
cnd.and(Cnd.exps(Cnd.likeEX("username", searchKey.trim())).or(Cnd.likeEX("loginname", searchKey.trim())));
|
||||
}
|
||||
|
||||
cnd.and(new Static("""
|
||||
userId not in (SELECT userid FROM activity_tissue_person WHERE tissueId = '%s')
|
||||
""".formatted(activityId)));
|
||||
if (tissue.getGroupId() != null) {
|
||||
cnd.and(new Static("""
|
||||
userId IN ( SELECT userid FROM activity_user_scope WHERE groupId IN ( SELECT groupId FROM activity_tissue WHERE id = '%s' AND groupId IS NOT NULL ) )
|
||||
""".formatted(activityId)));
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(cultureApplyService.listPageMap(1, 10, sql));
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 查询已经报名的人员
|
||||
*/
|
||||
|
||||
@GetMapping("/selectRegisterList")
|
||||
public AjaxResult selectRegisterList(String activityId) {
|
||||
ActivityTissue activityTissue = mobileActivityCultureApplyService.dao().fetch(ActivityTissue.class, activityId);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
atp.userId AS id,
|
||||
atp.userName,
|
||||
atp.unionId,
|
||||
atp.applyUserId
|
||||
FROM
|
||||
activity_tissue_person atp
|
||||
$condition
|
||||
""");
|
||||
cnd.and("atp.tissueId", "=", activityId);
|
||||
if (activityTissue.getSignUpMethod() != 3) {
|
||||
cnd.and("atp.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = mobileActivityCultureApplyService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.mp;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalk;
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalkEnroll;
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkActivityManageService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/h5/activity")
|
||||
public class FitnessWalkActivityH5Controller {
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkActivityManageService fitnessWalkActivityManageService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param active 1->最新 2->历史
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestParam Integer active) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
w.id,
|
||||
w.mainName,
|
||||
w.branchName,
|
||||
w.activityModel,
|
||||
w.apply_start_time,
|
||||
w.apply_end_time,
|
||||
w.start_time,
|
||||
w.end_time,
|
||||
w.surface,
|
||||
( SELECT count( 1 ) FROM fitness_walk_enroll fwe WHERE fwe.fitnessWalkId = w.id AND fwe.userId = @userId ) enrollCount
|
||||
FROM
|
||||
fitness_walk w
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("w.start_time", active == 1 ? ">=" : "<", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
sql.setCondition(cnd);
|
||||
sql.setParam("userId", SecurityUtils.getLoginUser().getUserid());
|
||||
|
||||
List<NutMap> list = fitnessWalkActivityManageService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动报名信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/activityInfo")
|
||||
public AjaxResult activityInfo(@RequestParam String id) {
|
||||
FitnessWalk fitnessWalk = fitnessWalkActivityManageService.fetch(id);
|
||||
fitnessWalkActivityManageService.fetchLinks(fitnessWalk, "pts", Cnd.NEW().asc("code"));
|
||||
return AjaxResult.success(fitnessWalk);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得报名人数
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/registerNum")
|
||||
public AjaxResult registerNum(@RequestParam String id) {
|
||||
int count = dao.count(FitnessWalkEnroll.class, Cnd.where("fitnessWalkId", "=", id));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的报名信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/myRegisterInfo")
|
||||
public AjaxResult myRegisterInfo(@RequestParam String id) {
|
||||
FitnessWalkEnroll enroll = dao.fetch(FitnessWalkEnroll.class, Cnd.where("fitnessWalkId", "=", id).and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success(enroll);
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动报名
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/doEnroll")
|
||||
public AjaxResult doEnroll(@RequestParam String id) {
|
||||
int count = dao.count(FitnessWalkEnroll.class, Cnd.where("fitnessWalkId", "=", id).and("userId", "=", SecurityUtils.getUserId()));
|
||||
if (count > 0) {
|
||||
return AjaxResult.warn("您似乎已经报过名了!");
|
||||
}
|
||||
FitnessWalkEnroll fitnessWalkEnroll = new FitnessWalkEnroll();
|
||||
fitnessWalkEnroll.setFitnessWalkId(id);
|
||||
fitnessWalkEnroll.setUserId(String.valueOf(SecurityUtils.getUserId()));
|
||||
fitnessWalkEnroll.setDeptId(String.valueOf(SecurityUtils.getDeptId()));
|
||||
fitnessWalkEnroll.setUnionId(SecurityUtils.getUnionId());
|
||||
dao.insert(fitnessWalkEnroll);
|
||||
return AjaxResult.success("报名成功");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.mp;
|
||||
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalkGift;
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkActivityManageService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/h5/gift")
|
||||
public class FitnessWalkGiftH5Controller {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkActivityManageService walkActivityManageService;
|
||||
|
||||
/**
|
||||
* 礼物券记录
|
||||
*
|
||||
* @param active 1->未使用 2—>已使用
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/gifts")
|
||||
public AjaxResult gifts(@RequestParam Integer active) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
fwg.*,
|
||||
fw.mainName,
|
||||
fw.branchName,
|
||||
fw.gift_name,
|
||||
fw.id as activityId
|
||||
FROM
|
||||
`fitness_walk_gift` fwg
|
||||
LEFT JOIN fitness_walk fw ON fw.id = fwg.fitnessWalkId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("used", "=", active == 1 ? 0 : 1);
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = walkActivityManageService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 该活动的礼品券信息
|
||||
*
|
||||
* @param fitnessWalkId 健身走id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/giftTicketInfoByActId")
|
||||
public AjaxResult giftTicketInfoByActId(@RequestParam String fitnessWalkId) {
|
||||
FitnessWalkGift gift = dao.fetch(FitnessWalkGift.class, Cnd.where("fitnessWalkId", "=", fitnessWalkId).and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success(gift);
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的领取信息
|
||||
*
|
||||
* @param giftId 礼品券id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/giftTicketInfoById")
|
||||
public AjaxResult giftTicketInfoById(@RequestParam String giftId) {
|
||||
FitnessWalkGift gift = dao.fetch(FitnessWalkGift.class, Cnd.where("id", "=", giftId));
|
||||
return AjaxResult.success(gift);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成礼品券
|
||||
*
|
||||
* @param fitnessWalkId 健身走id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/generateGiftTicket")
|
||||
public AjaxResult generateGiftTicket(@RequestParam String fitnessWalkId) {
|
||||
FitnessWalkGift gift = new FitnessWalkGift();
|
||||
gift.setFitnessWalkId(fitnessWalkId);
|
||||
gift.setUserId(String.valueOf(SecurityUtils.getUserId()));
|
||||
gift.setGrantTime(new Date());
|
||||
gift.setUsed(false);
|
||||
dao.insert(gift);
|
||||
return AjaxResult.success().put("data", gift.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用礼品券
|
||||
*
|
||||
* @param giftId 礼物id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/userGiftTicket/{giftId}")
|
||||
public AjaxResult userGiftTicket(@PathVariable String giftId) {
|
||||
dao.update(FitnessWalkGift.class, Chain.make("useTime", new Date()).add("used", true), Cnd.where("id", "=", giftId));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.mp;
|
||||
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalkGps;
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkActivityManageService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/h5/gps")
|
||||
public class FitnessWalkGpsH5Controller {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkActivityManageService activityManageService;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param fitnessWalkGps 健身走gps模式运动记录
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("save")
|
||||
public AjaxResult save(@RequestBody FitnessWalkGps fitnessWalkGps) {
|
||||
fitnessWalkGps.setUserId(String.valueOf(SecurityUtils.getUserId()));
|
||||
dao.insert(fitnessWalkGps);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 总距离
|
||||
*
|
||||
* @param fitnessWalkId 健身走id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/totalDistance/{fitnessWalkId}")
|
||||
public AjaxResult totalDistance(@PathVariable String fitnessWalkId) {
|
||||
Sql sql = Sqls.create("SELECT sum(distance) FROM `fitness_walk_gps` $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
cnd.and("fitnessWalkId", "=", fitnessWalkId);
|
||||
sql.setCondition(cnd);
|
||||
Long totalDistance = (Long) Daos.query(dao, sql.toString(), Sqls.callback.longValue());
|
||||
return AjaxResult.success().put("data", totalDistance);
|
||||
}
|
||||
|
||||
/**
|
||||
* 运动历史数据
|
||||
*
|
||||
* @param fitnessWalkId 健身走id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/historyData/{fitnessWalkId}")
|
||||
public AjaxResult historyData(@PathVariable String fitnessWalkId) {
|
||||
List<FitnessWalkGps> list = dao.query(FitnessWalkGps.class, Cnd.where("fitnessWalkId", "=", fitnessWalkId).and("userId", "=", SecurityUtils.getUserId()).desc("startTime"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/historyOneData/{fitnessWalkId}")
|
||||
public AjaxResult historyOneData(@PathVariable String fitnessWalkId) {
|
||||
FitnessWalkGps oneData = dao.fetch(FitnessWalkGps.class, Cnd.where("id", "=", fitnessWalkId));
|
||||
return AjaxResult.success(oneData);
|
||||
}
|
||||
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.mp;
|
||||
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityUserScope;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 健身走小程序登录
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/03/14
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/mp")
|
||||
public class FitnessWalkMpLoginController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@RequestMapping("/getUserInfo")
|
||||
public AjaxResult getUserInfo() {
|
||||
R<String> schoolCodeR = remoteConfigService.selectConfigByKey("sys.schoolCode");
|
||||
String schoolCode = null;
|
||||
if (schoolCodeR.getCode() == R.SUCCESS) {
|
||||
schoolCode = schoolCodeR.getMsg();
|
||||
}
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId AS userid,
|
||||
u.userName as username,
|
||||
u.loginName as loginname,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
u.birthday,
|
||||
u.deptName as unitname,
|
||||
u.deptId as unitid,
|
||||
u.member,
|
||||
u.unionId as unionid,
|
||||
u.unionName as unionname,
|
||||
group_concat(r.role_key) roles
|
||||
FROM
|
||||
`user` u
|
||||
left join sys_user_role sur on sur.user_id = u.userId
|
||||
left join sys_role r on r.role_id = sur.role_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.userId", "=", SecurityUtils.getLoginUser().getSysUser().getUserId());
|
||||
cnd.groupBy("u.userId");
|
||||
sql.setCondition(cnd);
|
||||
NutMap userMap = (NutMap) Daos.query(dao, sql.toString(), Sqls.callback.map());
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
if (Lang.isNotEmpty(userMap)) {
|
||||
userMap.setv("schoolCode", schoolCode);
|
||||
return AjaxResult.success(userMap);
|
||||
} else {
|
||||
return AjaxResult.error("系统查询不到您的信息,请与工会管理员联系!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证用户范围
|
||||
*
|
||||
* @return {@link NutMap}
|
||||
*/
|
||||
@RequestMapping("/validateUserScope")
|
||||
public AjaxResult validateUserScope(@RequestParam String activityGroupId, @RequestParam String userId) {
|
||||
int count = dao.count(ActivityUserScope.class, Cnd.where("groupId", "=", activityGroupId).and("userId", "=", userId));
|
||||
return AjaxResult.success().put("data", count);
|
||||
}
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.mp;
|
||||
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalkGift;
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalkSign;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 健身走签到
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/04/12
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/h5/sign")
|
||||
public class FitnessWalkSignH5Controller {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 签到信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/signInfo")
|
||||
public AjaxResult signInfo(@RequestParam String id) {
|
||||
List<FitnessWalkSign> signList = dao.query(FitnessWalkSign.class, Cnd.where("fitnessWalkId", "=", id).and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success(signList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 签到
|
||||
*
|
||||
* @param fitnessWalkId 活动id
|
||||
* @param pointId 点id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/doSign")
|
||||
public AjaxResult doSign(@RequestParam String fitnessWalkId, @RequestParam String pointId) {
|
||||
FitnessWalkSign sign = new FitnessWalkSign();
|
||||
sign.setFitnessWalkId(fitnessWalkId);
|
||||
sign.setPointId(pointId);
|
||||
sign.setSignTime(new Date());
|
||||
sign.setUserId(String.valueOf(SecurityUtils.getUserId()));
|
||||
dao.insert(sign);
|
||||
return AjaxResult.success("签到成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 该活动的礼品券信息
|
||||
*
|
||||
* @param fitnessWalkId 健身走id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/giftTicketInfoByActId")
|
||||
public AjaxResult giftTicketInfoByActId(@RequestParam String fitnessWalkId) {
|
||||
FitnessWalkGift gift = dao.fetch(FitnessWalkGift.class, Cnd.where("fitnessWalkId", "=", fitnessWalkId).and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success(gift);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/4/14
|
||||
* @Description
|
||||
*/
|
||||
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkSignInStatisticsService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/distanceRank")
|
||||
public class FitNessWalkDistanceRankController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkSignInStatisticsService fitnessWalkSignInStatisticsService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fitnessWalk:distanceRank")
|
||||
public AjaxResult pageData(@RequestParam(required = false) Integer year,
|
||||
@RequestParam(required = false) String mainName,
|
||||
@RequestParam(required = false) String branchActivity,
|
||||
@RequestParam(required = false) String unionId,
|
||||
@RequestParam(required = false) Integer limit) {
|
||||
|
||||
List<String> fitNessActivityId = fitnessWalkSignInStatisticsService.getFitNessActivityId(mainName, branchActivity, year);
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
sum(g.distance) as distance,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
u.sex
|
||||
FROM
|
||||
fitness_walk_gps g
|
||||
left join `user` u on u.userId = g.userId
|
||||
$condition
|
||||
limit %s
|
||||
""".formatted(limit == null ? 10 : limit));
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("fitnessWalkId", "in", fitNessActivityId);
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
|
||||
cnd.groupBy("g.userId");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(fitnessWalkSignInStatisticsService.listMap(sql));
|
||||
}
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalk;
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalkPoint;
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 健身走活动管理
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/13
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/activityManage")
|
||||
public class FitnessWalkActivityManageController {
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkActivityManageService fitnessWalkActivityManageService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @param year 年度
|
||||
* @param activityName 活动名称
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fitnessWalk:activityManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false) Integer year,
|
||||
@RequestParam(required = false) String activityName
|
||||
) {
|
||||
Pagination pagination = fitnessWalkActivityManageService.pageData(pageForm, year, activityName);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("/historyActivities")
|
||||
@RequiresPermissions("activity:fitnessWalk:activityManage")
|
||||
public AjaxResult historyActivities() {
|
||||
Sql sql = Sqls.create("select id,mainName,branchName from fitness_walk");
|
||||
List<NutMap> list = fitnessWalkActivityManageService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/activityGroup")
|
||||
@RequiresPermissions("activity:fitnessWalk:activityManage")
|
||||
public AjaxResult activityGroup() {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doSubmit")
|
||||
@RequiresPermissions("activity:fitnessWalk:activityManage")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult doSubmit(@RequestBody FitnessWalk fitnessWalk) {
|
||||
try {
|
||||
if (StrUtil.isBlank(fitnessWalk.getId())) {
|
||||
fitnessWalkActivityManageService.insertWith(fitnessWalk, "pts");
|
||||
} else {
|
||||
for (FitnessWalkPoint pt : fitnessWalk.getPts()) {
|
||||
pt.setFitnessWalkId(fitnessWalk.getId());
|
||||
}
|
||||
dao.insertOrUpdate(fitnessWalk.getPts());
|
||||
fitnessWalkActivityManageService.update(fitnessWalk);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return AjaxResult.warn(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/delete")
|
||||
@RequiresPermissions("activity:fitnessWalk:activityManage")
|
||||
public AjaxResult delete(@RequestParam String id) {
|
||||
try {
|
||||
fitnessWalkActivityManageService.deleteActivity(id);
|
||||
return AjaxResult.success();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/activityInfo")
|
||||
@RequiresPermissions("activity:fitnessWalk:activityManage")
|
||||
public AjaxResult activityInfo(@RequestParam String id) {
|
||||
FitnessWalk fitnessWalk = fitnessWalkActivityManageService.fetch(id);
|
||||
fitnessWalkActivityManageService.fetchLinks(fitnessWalk, "pts", Cnd.NEW().asc("code"));
|
||||
return AjaxResult.success(fitnessWalk);
|
||||
}
|
||||
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkStepService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 健身走计步模式排行榜
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/03/14
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/leaderBoard")
|
||||
public class FitnessWalkLeaderBoardController {
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkStepService fitnessWalkStepService;
|
||||
|
||||
@RequestMapping("getData")
|
||||
public AjaxResult getData(String hdid, Integer type, String userId) {
|
||||
List<NutMap> data = new ArrayList<>();
|
||||
if (type == 1 || type == 0) {
|
||||
data = fitnessWalkStepService.getDataOfLeaderboard(hdid, type, userId, "", "", "", "");
|
||||
} else if (type == 2) {
|
||||
data = fitnessWalkStepService.getDataOfPrize(hdid, "", "", "", "");
|
||||
}
|
||||
return AjaxResult.success(data);
|
||||
}
|
||||
|
||||
@RequestMapping("pageData")
|
||||
public AjaxResult pageData(String hdid, String searchName, String searchKeyword, String unionId, String unitId) {
|
||||
if (StrUtil.isBlank(hdid)) {
|
||||
return AjaxResult.warn("参数错误!");
|
||||
}
|
||||
|
||||
String userId = String.valueOf(SecurityUtils.getUserId());
|
||||
List<NutMap> today = fitnessWalkStepService.getDataOfLeaderboard(hdid, 0, userId, unionId, unitId, searchName, searchKeyword);
|
||||
List<NutMap> summary = fitnessWalkStepService.getDataOfLeaderboard(hdid, 1, userId, unionId, unitId, searchName, searchKeyword);
|
||||
List<NutMap> yesterday = fitnessWalkStepService.getDataOfPrize(hdid, unionId, unitId, searchName, searchKeyword);
|
||||
|
||||
NutMap map = NutMap.NEW();
|
||||
map.put("today", Map.of("list", today));
|
||||
map.put("summary", Map.of("list", summary));
|
||||
map.put("yesterday", Map.of("list", yesterday));
|
||||
return AjaxResult.success(map);
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
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.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
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.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/prize")
|
||||
public class FitnessWalkPrizeController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private String getSql() {
|
||||
return """
|
||||
SELECT
|
||||
u.loginname,
|
||||
u.username,
|
||||
u.unionname,
|
||||
u.deptName as unitname,
|
||||
al.applyDate,
|
||||
date_format( al.applyDate, '%Y-%m-%d' ) AS prizeData\s
|
||||
FROM
|
||||
`jsz_award_list` al
|
||||
LEFT JOIN `user` u ON u.userId = al.userId
|
||||
$condition
|
||||
""";
|
||||
}
|
||||
|
||||
@RequestMapping("/prizeDataList")
|
||||
public AjaxResult prizeDataList(@Param("activityId") String activityId) {
|
||||
Date toDay = new Date();
|
||||
Sql sql = Sqls.create(getSql());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("activityId", "=", activityId);
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = (List<NutMap>) Daos.query(dao, sql.toString(), Sqls.callback.maps());
|
||||
List<NutMap> yesterdayList = list.stream().filter(v -> v.getString("applyDate").substring(0, 10).equals(DateUtil.format(DateUtil.offsetDay(toDay, -1), "yyyy-MM-dd"))).collect(Collectors.toList());
|
||||
return AjaxResult.success(Map.of("toDayList", Collections.emptyList(), "yesterdayList", yesterdayList, "totalList", list));
|
||||
}
|
||||
|
||||
@RequestMapping("/exportExcel")
|
||||
public void exportExcel(@Param("activityId") String activityId,
|
||||
@Param("currentSelectedType") String currentSelectedType,
|
||||
HttpServletResponse response) {
|
||||
Date toDay = new Date();
|
||||
|
||||
Sql sql = Sqls.create(getSql());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("activityId", "=", activityId);
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<NutMap> exportList = new ArrayList<>();
|
||||
|
||||
List<NutMap> list = (List<NutMap>) Daos.query(dao, sql.toString(), Sqls.callback.maps());
|
||||
if ("yesterdayList".equals(currentSelectedType)) {
|
||||
exportList = list.stream().filter(v -> v.getString("applyDate").substring(0, 10).equals(DateUtil.format(DateUtil.offsetDay(toDay, -1), "yyyy-MM-dd"))).collect(Collectors.toList());
|
||||
} else {
|
||||
exportList = list;
|
||||
}
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>() {{
|
||||
add(new ExcelExportEntity("姓名", "username", 20));
|
||||
add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
add(new ExcelExportEntity("单位", "unitname", 20));
|
||||
add(new ExcelExportEntity("分工会", "unionname", 20));
|
||||
add(new ExcelExportEntity("日期", "prizeData", 20));
|
||||
}};
|
||||
|
||||
try {
|
||||
// ViTool.excelResponse(response, "导出数据.xlsx");
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, exportList);
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
import com.ruoyi.activity.service.fitnessWalk.WxMpCloudHttpConstants;
|
||||
import com.ruoyi.activity.service.fitnessWalk.WxMpCloudHttpUtil;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 健身走运动排行榜
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/runRank")
|
||||
public class FitnessWalkRunRankController {
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@GetMapping("/pageData")
|
||||
public AjaxResult pageData() {
|
||||
try {
|
||||
R<String> schoolCodeR = remoteConfigService.selectConfigByKey("sys.schoolCode");
|
||||
String schoolCode = null;
|
||||
if (schoolCodeR.getCode() == R.SUCCESS) {
|
||||
schoolCode = schoolCodeR.getMsg();
|
||||
}
|
||||
NutMap rankAll = WxMpCloudHttpUtil.getCloudResult(WxMpCloudHttpConstants.CLOUD_URL, "rankAll", NutMap.NEW().addv("schoolCode", schoolCode));
|
||||
return AjaxResult.success(rankAll);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+316
@@ -0,0 +1,316 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
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 com.ruoyi.activity.service.fitnessWalk.FitnessWalkActivityManageService;
|
||||
import com.ruoyi.activity.service.fitnessWalk.FitnessWalkSignInStatisticsService;
|
||||
import com.ruoyi.activity.service.fitnessWalk.WxMpCloudHttpConstants;
|
||||
import com.ruoyi.activity.service.fitnessWalk.WxMpCloudHttpUtil;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/signInStatistics")
|
||||
@Slf4j
|
||||
public class FitnessWalkSignInStatisticsController {
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkActivityManageService activityManageService;
|
||||
|
||||
@Autowired
|
||||
private FitnessWalkSignInStatisticsService signInStatisticsService;
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@GetMapping("/mainActivity")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public AjaxResult mainActivity(@RequestParam int year, @RequestParam String mode) {
|
||||
List<NutMap> list = activityManageService.mainActivity(year, mode);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/branchActivity")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public AjaxResult branchActivity(@RequestParam String mainName, @RequestParam int year, @RequestParam String mode) {
|
||||
List<NutMap> list = activityManageService.branchActivity(mainName, year, mode);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getFitnessData")
|
||||
@RequiresLogin
|
||||
public AjaxResult getFitnessData() {
|
||||
R<String> schoolCodeR = remoteConfigService.selectConfigByKey("sys.schoolCode");
|
||||
String schoolCode = null;
|
||||
if (schoolCodeR.getCode() == R.SUCCESS) {
|
||||
schoolCode = schoolCodeR.getMsg();
|
||||
}
|
||||
String query = "db.collection('activity').where({schoolCode:'%s'}).orderBy('apply_start_time', 'desc').get()".formatted(schoolCode);
|
||||
NutMap result = WxMpCloudHttpUtil.getWxResult(WxMpCloudHttpConstants.QUERY_URL, query);
|
||||
List<NutMap> data = result.getList("data", NutMap.class);
|
||||
return AjaxResult.success(data.size() > 0 ? data : new ArrayList<>());
|
||||
}
|
||||
|
||||
/**
|
||||
* 分工会报名参加人数
|
||||
*
|
||||
* @param mainName 主活动
|
||||
* @param branchActivity 分活动
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/unionNumData")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public AjaxResult unionNumData(@RequestParam(required = false) String mainName,
|
||||
@RequestParam(required = false) Integer year,
|
||||
@RequestParam(required = false) String branchActivity) {
|
||||
List<NutMap> list = null;
|
||||
try {
|
||||
list = signInStatisticsService.unionNumData(mainName, branchActivity, year);
|
||||
return AjaxResult.success(list);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分工会报名用户
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @param mainName 主活动
|
||||
* @param branchActivity 分活动
|
||||
* @param unionId 工会id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/getRegisterUser")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public AjaxResult getRegisterUser(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false) String mainName,
|
||||
@RequestParam(required = false) String branchActivity,
|
||||
@RequestParam String unionId) {
|
||||
try {
|
||||
Pagination pagination = signInStatisticsService.getRegisterUser(pageForm, mainName, branchActivity, unionId);
|
||||
return AjaxResult.success(pagination);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分工会签到用户
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @param mainName 主活动
|
||||
* @param branchActivity 分活动
|
||||
* @param unionId 工会id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/getSignUser")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public AjaxResult getSignUser(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false) String mainName,
|
||||
@RequestParam(required = false) String branchActivity,
|
||||
@RequestParam String unionId) {
|
||||
try {
|
||||
Pagination pagination = signInStatisticsService.getSignUser(pageForm, mainName, branchActivity, unionId);
|
||||
return AjaxResult.success(pagination);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出活动报名人员
|
||||
*
|
||||
* @param mainName 主活动
|
||||
* @param branchActivity 分活动
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/doExportRegister")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public void doExportRegister(@RequestParam(required = false) String mainName, @RequestParam(required = false) String branchActivity, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> dataList = signInStatisticsService.doExportRegister(mainName, branchActivity);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("单位", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("工会", "unionName", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, dataList);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("活动报名人员.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出礼品领取情况
|
||||
*
|
||||
* @param mainName 主活动
|
||||
* @param branchActivity 分活动
|
||||
* @param flag 是否领取
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/doGiftExport")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public void doGiftExport(@RequestParam(required = false) String mainName, @RequestParam(required = false) String branchActivity, @RequestParam boolean flag, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> dataList = signInStatisticsService.doGiftExport(mainName, branchActivity, flag);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("单位", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("工会", "unionName", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, dataList);
|
||||
response.setContentType("application/octet-stream");
|
||||
String fileName = flag ? "已领取礼品的用户" : "未领取礼品的用户";
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(fileName + ".xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 按分工会导出导出全部
|
||||
*
|
||||
* @param mainName 主活动
|
||||
* @param branchActivity 分活动
|
||||
* @param year 年份
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/exportAllUnionData")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public void exportAllUnionData(@RequestParam(required = false) String mainName,
|
||||
@RequestParam(required = false) Integer year,
|
||||
@RequestParam(required = false) String branchActivity,
|
||||
HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> dataList = signInStatisticsService.unionNumData(mainName, branchActivity, year);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("院级工会", "unionName", 20));
|
||||
entities.add(new ExcelExportEntity("报名人数", "enrollCount", 20));
|
||||
entities.add(new ExcelExportEntity("参加人数", "signCount", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, dataList);
|
||||
response.setContentType("application/octet-stream");
|
||||
String fileName = "院级工会报名统计表";
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(fileName + ".xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("/doExportSummary")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public void doExportSummary(@RequestParam(required = false) String mainName, @RequestParam(required = false) String branchActivity, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> dataList = signInStatisticsService.doExportSummary(mainName, branchActivity);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
entities.add(new ExcelExportEntity("电话", "mobile", 20));
|
||||
entities.add(new ExcelExportEntity("工会", "unionName", 20));
|
||||
entities.add(new ExcelExportEntity("单位", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("是否参加", "isTakePartIn", 20));
|
||||
entities.add(new ExcelExportEntity("签到点位数", "signCount", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, dataList);
|
||||
response.setContentType("application/octet-stream");
|
||||
String fileName = "活动汇总表";
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(fileName + ".xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出签到人员
|
||||
*
|
||||
* @param mainName 活动id
|
||||
* @param branchActivity 活动标签
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/doExportSign")
|
||||
@RequiresPermissions("activity:fitnessWalk:signInStatistics")
|
||||
public void doExportSign(@RequestParam(required = false) String mainName, @RequestParam(required = false) String branchActivity, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> dataList = signInStatisticsService.doExportSign(mainName, branchActivity);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
entities.add(new ExcelExportEntity("电话", "mobile", 20));
|
||||
entities.add(new ExcelExportEntity("工会", "unionName", 20));
|
||||
entities.add(new ExcelExportEntity("单位", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("点位总数", "pointCount", 20));
|
||||
entities.add(new ExcelExportEntity("签到点位数", "signCount", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, dataList);
|
||||
response.setContentType("application/octet-stream");
|
||||
String fileName = "活动参与人员";
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(fileName + ".xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.JszWxStep;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 健身走步数
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/03/14
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fitnessWalk/stepCount")
|
||||
public class FitnessWalkStepCountController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* get week step
|
||||
*
|
||||
* @param userId user id
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("getWeekStep")
|
||||
public AjaxResult getWeekStep(@Param("userId") String userId, @Param("activityId") String activityId) {
|
||||
Assert.notBlank(activityId);
|
||||
Assert.notBlank(userId);
|
||||
Cnd cnd = Cnd.where("userId", "=", userId);
|
||||
cnd.and("activityId", "=", activityId);
|
||||
cnd.and("applyDate", ">", DateUtil.offsetDay(new Date(), -7));
|
||||
cnd.asc("applyDate");
|
||||
List<JszWxStep> wxSteps = dao.query(JszWxStep.class, cnd);
|
||||
|
||||
List<HashMap> results = new ArrayList<>();
|
||||
for (int i = 7; i >= 0; i--) {
|
||||
int offset = (i) * -1;
|
||||
DateTime offsetDay = DateUtil.offsetDay(new Date(), offset);
|
||||
String dateStr = offsetDay.toString("yyyy-MM-dd");
|
||||
|
||||
Optional<JszWxStep> jszWxStepOptional = wxSteps.stream().filter(v -> DateUtil.format(v.getApplyDate(), "yyyy-MM-dd").equals(dateStr)).findFirst();
|
||||
|
||||
results.add(new HashMap<>() {{
|
||||
put("day", dateStr);
|
||||
put("step", jszWxStepOptional.isPresent() ? jszWxStepOptional.get().getStep() : 0);
|
||||
}});
|
||||
|
||||
}
|
||||
return AjaxResult.success(results);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新步数
|
||||
*
|
||||
* @param activityId 活动id
|
||||
* @param userId 用户id
|
||||
* @param step 一步
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("updateStep")
|
||||
public Object updateStep(String activityId, String userId, Integer step) {
|
||||
Assert.notBlank(activityId);
|
||||
Assert.notBlank(userId);
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("userId", "=", userId);
|
||||
cnd.and("applyDate", "=", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
cnd.and("activityId", "=", activityId);
|
||||
|
||||
JszWxStep wxStep = dao.fetch(JszWxStep.class, cnd);
|
||||
if (Lang.isEmpty(wxStep)) {
|
||||
wxStep = new JszWxStep();
|
||||
wxStep.setActivityId(activityId);
|
||||
wxStep.setUserId(userId);
|
||||
wxStep.setApplyDate(new Date());
|
||||
}
|
||||
wxStep.setStep(step);
|
||||
dao.insertOrUpdate(wxStep);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package com.ruoyi.activity.controller.fitnessWalk.pc;
|
||||
|
||||
public class FitnessWalkStepCountRankController {
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.constant.FourOneActivityForm;
|
||||
import com.ruoyi.activity.service.fourOneActivity.FourOneActivityService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
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.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:05
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/apply")
|
||||
public class FourOneActivityApplyController {
|
||||
|
||||
@Autowired
|
||||
private FourOneActivityService fourOneActivityService;
|
||||
|
||||
|
||||
@PostMapping("/doEdit")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneApply")
|
||||
public AjaxResult doEdit(@RequestBody FourOneActivityForm fourOneActivityForm, @RequestParam Boolean flag) {
|
||||
|
||||
fourOneActivityService.doEdit(fourOneActivityForm, flag);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doSave")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneApply")
|
||||
public AjaxResult doSave(@RequestBody FourOneActivityForm fourOneActivityForm, @RequestParam Boolean flag) {
|
||||
|
||||
fourOneActivityService.doSave(fourOneActivityForm, flag);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/findUser")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneApply")
|
||||
public AjaxResult findUser(@RequestParam(value = "searchWord", required = false) String searchWord,Integer userId) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
userName,
|
||||
loginName,
|
||||
sex,
|
||||
mobile,
|
||||
deptName unitName,
|
||||
unionName
|
||||
FROM
|
||||
`user`
|
||||
$condition
|
||||
limit 0,20
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
if (Strings.isNotBlank(searchWord)) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
group.andLike("userName", searchWord);
|
||||
group.orLike("loginName", searchWord);
|
||||
cnd.and(group);
|
||||
}
|
||||
cnd.andEX("userId", "=", userId);
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(fourOneActivityService.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.constant.FourOneActivityForm;
|
||||
import com.ruoyi.activity.service.fourOneActivity.FourOneActivityService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:14
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/applyList")
|
||||
public class FourOneActivityApplyListController {
|
||||
|
||||
@Autowired
|
||||
private FourOneActivityService fourOneActivityService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneApplyList")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") String year) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( a.activityApplyDate ) AS `year`,
|
||||
a.*,
|
||||
st.stateName
|
||||
FROM
|
||||
`four_one_activity` a
|
||||
LEFT JOIN audit_state st ON st.stateId = a.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.andEX("YEAR(a.activityApplyDate)", "=", year);
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("a.activityApplyUserId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(fourOneActivityService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@GetMapping("/findOne")
|
||||
public AjaxResult findOne(@RequestParam String id) {
|
||||
|
||||
return AjaxResult.success(fourOneActivityService.findOne(id));
|
||||
|
||||
}
|
||||
|
||||
@DeleteMapping("/doDelete")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneApplyList")
|
||||
public AjaxResult doDelete(String id) {
|
||||
fourOneActivityService.doDelete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doMakings")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneApplyList")
|
||||
public AjaxResult doMakings(@RequestBody FourOneActivityForm fourOneActivityForm,
|
||||
@RequestParam Boolean flag,
|
||||
@RequestParam String id) {
|
||||
fourOneActivityService.doMakings(fourOneActivityForm, flag, id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.domain.fourOneActivity.FourOneActivity;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 评审
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:14
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/assess")
|
||||
public class FourOneActivityAssessController {
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneAssess")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") String year,
|
||||
@RequestParam(required = false, value = "isAudit") boolean isAudit,
|
||||
@RequestParam(required = false, value = "unionId") String unionId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( a.activityApplyDate ) AS `year`,
|
||||
a.*,
|
||||
st.stateName
|
||||
FROM
|
||||
`four_one_activity` a
|
||||
LEFT JOIN audit_state st ON st.stateId = a.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.and("a.stateId", isAudit ? ">" : "=", "4580");
|
||||
cnd.andEX("a.activityApplyUserUnionId", "=", unionId);
|
||||
cnd.andEX("YEAR(a.activityApplyDate)", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(baseService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/doReview")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneAssess")
|
||||
public AjaxResult doReview(String id, String assessGrade) {
|
||||
baseService.dao().update(FourOneActivity.class, Chain.make("assessGrade", assessGrade).add("stateId", "4590"), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.service.fourOneActivity.FourOneActivityService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:14
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/schoolAudit")
|
||||
public class FourOneActivitySchoolAuditController {
|
||||
|
||||
@Autowired
|
||||
private FourOneActivityService fourOneActivityService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneSchoolAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") String year,
|
||||
@RequestParam boolean isAudit,
|
||||
@RequestParam(required = false, value = "unionId") String unionId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( a.activityApplyDate ) AS `year`,
|
||||
a.*,
|
||||
st.stateName
|
||||
FROM
|
||||
`four_one_activity` a
|
||||
LEFT JOIN audit_state st ON st.stateId = a.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.and("a.stateId", isAudit ? ">" : "=", "4550");
|
||||
cnd.andEX("a.activityApplyUserUnionId", "=", unionId);
|
||||
cnd.andEX("YEAR(a.activityApplyDate)", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(fourOneActivityService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/doReview")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneSchoolAudit")
|
||||
public AjaxResult doReview(@RequestParam String id, @RequestParam(required = false, value = "flag") Boolean flag, @RequestBody Audit audit) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getLoginUser().toString());
|
||||
audit.setAuditPass(flag);
|
||||
fourOneActivityService.insert(audit);
|
||||
fourOneActivityService.update(Chain.make("stateId", flag ? 4570 : 4560).add("schoolAuditId", audit.getId()), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/statistics")
|
||||
public class FourOneActivityStatisticsController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") String year,
|
||||
@RequestParam(required = false, value = "assessGrade") String assessGrade,
|
||||
@RequestParam(required = false, value = "unionId") String unionId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( a.activityApplyDate ) AS `year`,
|
||||
a.*,
|
||||
st.stateName
|
||||
FROM
|
||||
`four_one_activity` a
|
||||
LEFT JOIN audit_state st ON st.stateId = a.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.and("a.stateId", "=", "4590");
|
||||
cnd.andEX("a.assessGrade", "=", assessGrade);
|
||||
cnd.andEX("a.activityApplyUserUnionId", "=", unionId);
|
||||
cnd.andEX("YEAR(a.activityApplyDate)", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(baseService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.service.fourOneActivity.FourOneActivityService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:26
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/unionAudit")
|
||||
public class FourOneActivityUnionAuditController {
|
||||
|
||||
@Autowired
|
||||
private FourOneActivityService fourOneActivityService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneUnionAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") String year,
|
||||
@RequestParam boolean isAudit) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( a.activityApplyDate ) AS `year`,
|
||||
a.*,
|
||||
st.stateName
|
||||
FROM
|
||||
`four_one_activity` a
|
||||
LEFT JOIN audit_state st ON st.stateId = a.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.and("a.stateId", isAudit ? ">" : "=", "4510");
|
||||
if (!AuthUtil.hasAnyRoles("admin")) {
|
||||
cnd.andEX("a.activityApplyUserUnionId", "=", SecurityUtils.getUnionId());
|
||||
|
||||
}
|
||||
cnd.andEX("YEAR(a.activityApplyDate)", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(fourOneActivityService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/doReview")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneUnionAudit")
|
||||
public AjaxResult doReview(@RequestParam String id, @RequestParam(required = false, value = "flag") Boolean flag, @RequestBody Audit audit) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getLoginUser().toString());
|
||||
audit.setAuditPass(flag);
|
||||
fourOneActivityService.insert(audit);
|
||||
fourOneActivityService.update(Chain.make("stateId", flag ? 4530 : 4520).add("unionAuditId", audit.getId()), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.ruoyi.activity.controller.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.service.fourOneActivity.FourOneActivityService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:27
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fourOneActivity/unionPartyAudit")
|
||||
public class FourOneActivityUnionPartyAuditController {
|
||||
|
||||
@Autowired
|
||||
private FourOneActivityService fourOneActivityService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneUnionPartyAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") String year,
|
||||
@RequestParam boolean isAudit) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( a.activityApplyDate ) AS `year`,
|
||||
a.*,
|
||||
st.stateName
|
||||
FROM
|
||||
`four_one_activity` a
|
||||
LEFT JOIN audit_state st ON st.stateId = a.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.and("a.stateId", isAudit ? ">" : "=", "4530");
|
||||
if (!AuthUtil.hasAnyRoles("sysamin")) {
|
||||
cnd.andEX("a.activityApplyUserUnionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
cnd.andEX("YEAR(a.activityApplyDate)", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(fourOneActivityService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/doReview")
|
||||
@RequiresPermissions("activity:fourOneActivity:fourOneUnionPartyAudit")
|
||||
public AjaxResult doReview(@RequestParam String id, @RequestParam(required = false, value = "flag") Boolean flag, @RequestBody Audit audit) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getLoginUser().toString());
|
||||
audit.setAuditPass(flag);
|
||||
fourOneActivityService.insert(audit);
|
||||
fourOneActivityService.update(Chain.make("stateId", flag ? 4550 : 4540).add("unionPartyAuditId", audit.getId()), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+236
@@ -0,0 +1,236 @@
|
||||
package com.ruoyi.activity.controller.opusLevy;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevy;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevyChildType;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevyParentType;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevySubmitInfo;
|
||||
import com.ruoyi.activity.service.opusLevy.OpusActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
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.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/13
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/opusLevy/activityManage")
|
||||
public class ActivityManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OpusActivityManageService opusActivityManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:opusLevy:activityManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "activityName", required = false) String activityName,
|
||||
@RequestParam(value = "activityType", required = false) String activityType) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
hd.*,
|
||||
u.`userName` createUserName
|
||||
FROM
|
||||
hd_wm_xx hd
|
||||
LEFT JOIN `user` u ON hd.createUserId = u.`userId`
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("type", "=", activityType);
|
||||
if (Strings.isNotBlank(activityName)) {
|
||||
cnd.where().andLike("activityName", activityName);
|
||||
}
|
||||
if (year != null) {
|
||||
cnd.and("YEAR(createTime)", "=", year);
|
||||
}
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("hd.createUserId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
cnd.desc("createTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("mobilePageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult mobilePageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "type", required = false) Integer type) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
u.username
|
||||
FROM
|
||||
hd_wm_xx xx
|
||||
LEFT JOIN `user` u ON u.userId = xx.createUserId
|
||||
WHERE
|
||||
activityGroupId IN ( SELECT groupId FROM `activity_user_scope` $condition)
|
||||
AND YEAR ( startTime )= @year
|
||||
""").setParam("year", year);
|
||||
cnd.and("xx.state", "=", true);
|
||||
cnd.andEX("xx.type", "=", type);
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doHandle")
|
||||
@RequiresPermissions("activity:opusLevy:activityManage")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult doHandle(@RequestBody OpusLevy opusLevy) {
|
||||
|
||||
if (StrUtil.isNotBlank(opusLevy.getId())) {
|
||||
opusActivityManageService.doEdit(opusLevy);
|
||||
} else {
|
||||
opusLevy.setState(false);
|
||||
opusActivityManageService.doAdd(opusLevy);
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("activity:opusLevy:activityManage")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
|
||||
dao.clear(OpusLevySubmitInfo.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(OpusLevyParentType.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(OpusLevyChildType.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(OpusLevy.class, Cnd.where("id", "=", id));
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("changeStatus")
|
||||
@RequiresPermissions("activity:opusLevy:activityManage")
|
||||
public AjaxResult changeStatus(String id, Boolean flag) {
|
||||
dao.update(OpusLevy.class, Chain.make("state", flag), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
OpusLevy opusLevy = dao.fetch(OpusLevy.class, id);
|
||||
dao.fetchLinks(opusLevy, "^parentTypeList$", Cnd.orderBy().asc("location"));
|
||||
if (opusLevy.getParentTypeList() != null && opusLevy.getParentTypeList().size() > 0) {
|
||||
opusLevy.getParentTypeList().forEach(item -> {
|
||||
dao.fetchLinks(opusLevy.getParentTypeList(), "^childTypeList$", Cnd.orderBy().asc("location"));
|
||||
});
|
||||
}
|
||||
return AjaxResult.success(opusLevy);
|
||||
}
|
||||
|
||||
@GetMapping("getActivityByGroup")
|
||||
@RequiresLogin
|
||||
public AjaxResult getActivityByGroup(Integer type) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Cnd xxCnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT * FROM hd_wm_xx $xxCnd and activityGroupId in (SELECT groupId FROM `activity_user_scope` $condition)
|
||||
""");
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
xxCnd.and("state", "=", true);
|
||||
xxCnd.andEX("type", "=", type);
|
||||
sql.setVar("xxCnd", xxCnd);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(opusActivityManageService.listMap(sql));
|
||||
}
|
||||
|
||||
@GetMapping("getActivityList")
|
||||
@RequiresLogin
|
||||
public AjaxResult getActivityList(Integer type, Integer year) {
|
||||
List<OpusLevy> list = dao.query(OpusLevy.class, Cnd.NEW().andEX("type", "=", type)
|
||||
.andEX("year(createTime)", "=", year));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getParentTypeList")
|
||||
@RequiresLogin
|
||||
public AjaxResult getParentTypeList(String id) {
|
||||
List<OpusLevyParentType> list = dao.query(OpusLevyParentType.class, Cnd.where("activityId", "=", id)
|
||||
.asc("location"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getChildTypeList")
|
||||
@RequiresLogin
|
||||
public AjaxResult getChildTypeList(String id) {
|
||||
List<OpusLevyChildType> list = dao.query(OpusLevyChildType.class, Cnd.where("parentTypeId", "=", id)
|
||||
.asc("location"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "getByteArrayByFile")
|
||||
public String getByteArrayByFile(@RequestParam(required = false) MultipartFile file,
|
||||
@RequestParam(required = false) String link,
|
||||
HttpServletResponse response) throws IOException {
|
||||
InputStream inputStream = null;
|
||||
if (file != null) {
|
||||
inputStream = file.getInputStream();
|
||||
return this.getBase64FromInputStream(inputStream);
|
||||
} else if (StrUtil.isNotBlank(link)) {
|
||||
inputStream = HttpUtil.createGet(link).execute().bodyStream();
|
||||
}
|
||||
return this.getBase64FromInputStream(inputStream);
|
||||
}
|
||||
|
||||
public String getBase64FromInputStream(InputStream in) {
|
||||
// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
|
||||
byte[] data = null;
|
||||
// 读取图片字节数组
|
||||
try {
|
||||
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
|
||||
byte[] buff = new byte[100];
|
||||
int rc = 0;
|
||||
while ((rc = in.read(buff, 0, 100)) > 0) {
|
||||
swapStream.write(buff, 0, rc);
|
||||
}
|
||||
data = swapStream.toByteArray();
|
||||
} catch (IOException e) {
|
||||
} finally {
|
||||
if (in != null) {
|
||||
try {
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
//返回的字符串传到前台,添加到src属性中去,即可显示图片
|
||||
return "data:image/jpeg;base64," + new String(Base64.encodeBase64(data));
|
||||
}
|
||||
}
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
package com.ruoyi.activity.controller.opusLevy;
|
||||
|
||||
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 com.ruoyi.activity.api.constant.opusLevy.OpusLevyAuditState;
|
||||
import com.ruoyi.activity.service.opusLevy.OpusActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/14
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/opusLevy/awardInfo")
|
||||
public class AwardInfoController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OpusActivityManageService opusActivityManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:opusLevy:awardInfo")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "activityType", required = false) String activityType,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT DISTINCT
|
||||
( xx.submitUserId ),
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
( SELECT COUNT( DISTINCT ( a.parentTypeId )) FROM hd_wm_sbxx a WHERE a.submitUserId = xx.`submitUserId` and a.activityId = @hdid AND state=@state) AS prizeCount
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("hdid", activityId).setParam("state", OpusLevyAuditState.SCHOOL_PASS);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("xx.activityId", "=", activityId);
|
||||
cnd.andEX("YEAR(xx.submitTime)", "=", year);
|
||||
cnd.andEX("xx.state", "=", OpusLevyAuditState.SCHOOL_PASS);
|
||||
if (!AuthUtil.hasRole("H10") && !AuthUtil.hasRole("A06") && !AuthUtil.hasRole("admin")) {
|
||||
cnd.andEX("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
cnd.andEX("u.deptId", "=", unionId);
|
||||
cnd.asc("u.userName").asc("u.unionId").asc("u.deptId");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("exportExcel")
|
||||
@RequiresLogin
|
||||
public void exportExcel(String id, Integer num, HttpServletResponse response) throws IOException {
|
||||
if (num == 1) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT DISTINCT
|
||||
( xx.submitUserId ),
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
( SELECT COUNT( DISTINCT ( a.parentTypeId )) FROM hd_wm_sbxx a WHERE a.submitUserId = xx.`submitUserId` and a.activityId = @hdid AND state=@state) AS prizeCount
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("hdid", id).setParam("state", OpusLevyAuditState.SCHOOL_PASS);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("xx.activityId", "=", id);
|
||||
cnd.andEX("xx.state", "=", OpusLevyAuditState.SCHOOL_PASS);
|
||||
cnd.asc("u.userName").asc("u.unionId").asc("u.deptId");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> winnerList = opusActivityManageService.listMap(sql);
|
||||
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("单位", "deptName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("分工会", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("获奖次数", "prizeCount", 20));
|
||||
|
||||
String fileName = "获奖人员名单.xlsx";
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, winnerList);
|
||||
workbook.write(response.getOutputStream());
|
||||
} else {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
gh.unionName,
|
||||
count( DISTINCT sbxx.submitUserId ) as joinNum,
|
||||
count(DISTINCT sbxx.submitUserId,sbxx.parentTypeId) as prizeNum
|
||||
FROM
|
||||
`union` gh
|
||||
LEFT JOIN `user` u ON u.unionId = gh.id
|
||||
LEFT JOIN hd_wm_sbxx sbxx ON sbxx.submitUserId = u.userId
|
||||
AND sbxx.activityId = @hdid
|
||||
AND sbxx.state = @state
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("hdid", id);
|
||||
sql.setParam("state", OpusLevyAuditState.SCHOOL_PASS);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.groupBy("gh.id");
|
||||
cnd.asc("gh.unionCode");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> unionList = opusActivityManageService.listMap(sql);
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
exportEntities.add(new ExcelExportEntity("分工会", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("参加人数", "joinNum", 20));
|
||||
exportEntities.add(new ExcelExportEntity("应发奖品数", "prizeNum", 20));
|
||||
|
||||
String fileName = "分工会获奖信息.xlsx";
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, unionList);
|
||||
workbook.write(response.getOutputStream());
|
||||
}
|
||||
}
|
||||
}
|
||||
+279
@@ -0,0 +1,279 @@
|
||||
package com.ruoyi.activity.controller.opusLevy;
|
||||
|
||||
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.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevy;
|
||||
import com.ruoyi.activity.service.opusLevy.OpusActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteDictService;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/14
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/opusLevy/opusInfo")
|
||||
public class OpusInfoController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OpusActivityManageService opusActivityManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteDictService remoteDictService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:opusLevy:opusInfo")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "parentType", required = false) String parentType,
|
||||
@RequestParam(value = "childType", required = false) String childType,
|
||||
@RequestParam(value = "activityType", required = false) String activityType,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.mobile as userMobile,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName,
|
||||
wmxx.activityName,
|
||||
state.stateColor,
|
||||
state.stateName
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
LEFT JOIN audit_state state ON state.stateId = xx.state
|
||||
LEFT JOIN hd_wm_xx wmxx ON wmxx.id=xx.activityId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin, A06")) {
|
||||
cnd.and("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
cnd.andEX("u.deptId", "=", unitId);
|
||||
cnd.andEX("wmxx.type", "=", activityType);
|
||||
cnd.andEX("xx.parentTypeId", "=", parentType);
|
||||
cnd.andEX("xx.childTypeId", "=", childType);
|
||||
cnd.andEX("year(xx.submitTime)", "=", year);
|
||||
|
||||
cnd.desc("xx.submitTime").asc("u.unionId").asc("xx.parentTypeId");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName,
|
||||
zt.activityName,
|
||||
state.stateColor,
|
||||
state.stateName,
|
||||
zt.type,
|
||||
zt.fileType
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
LEFT JOIN hd_wm_xx zt ON zt.id = xx.activityId
|
||||
LEFT JOIN `user` u ON u.userID = xx.submitUserId
|
||||
LEFT JOIN audit_state state ON state.stateId = xx.state
|
||||
WHERE xx.id = @id
|
||||
""").setParam("id", id);
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap nutMap = sql.getObject(NutMap.class);
|
||||
if (Strings.isNotBlank(nutMap.getString("unionAuditId"))) {
|
||||
nutMap.put("unionAudit", dao.fetch(Audit.class, nutMap.getString("unionAuditId")));
|
||||
}
|
||||
if (Strings.isNotBlank(nutMap.getString("schoolAuditId"))) {
|
||||
nutMap.put("schoolAudit", dao.fetch(Audit.class, nutMap.getString("schoolAuditId")));
|
||||
}
|
||||
return AjaxResult.success(nutMap);
|
||||
}
|
||||
|
||||
@RequestMapping("exportExcel")
|
||||
@RequiresLogin
|
||||
public void exportExcel(String id, HttpServletResponse response) throws IOException {
|
||||
|
||||
OpusLevy opusLevy = dao.fetch(OpusLevy.class, id);
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.id,
|
||||
xx.parentTypeId,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.loginName,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
hd.activityName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN hd_wm_xx hd ON hd.id = xx.activityId
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
$condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("xx.activityId", "=", id);
|
||||
if (!AuthUtil.hasRole("A06") && !AuthUtil.hasRole("admin")) {
|
||||
if (AuthUtil.hasRole("H04")) {
|
||||
cnd.andEX("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
}
|
||||
cnd.asc("u.unionId").asc("u.deptId").asc("u.userName").asc("xx.parentTypeId");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = opusActivityManageService.listMap(sql);
|
||||
|
||||
List<SysDictData> userSex = remoteDictService.dictType("sys_user_sex").getData();
|
||||
Map<String, String> sexMap = userSex.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
|
||||
list.forEach(item -> {
|
||||
item.put("sex", sexMap.get(item.getString("sex")));
|
||||
});
|
||||
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属单位", "deptName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("作品主题", "activityName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("活动类别", "parentTypeName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("作品类别", "childTypeName", 20));
|
||||
|
||||
String fileName = opusLevy.getActivityName() + ".xlsx";
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
||||
workbook.write(response.getOutputStream());
|
||||
}
|
||||
|
||||
@RequestMapping("downloadFile")
|
||||
@RequiresLogin
|
||||
public void downloadFile(String link, HttpServletResponse response) throws IOException {
|
||||
//设置输出文件类型
|
||||
response.setContentType("video/mpeg4");
|
||||
InputStream inputStream = HttpUtil.createGet(link).execute().bodyStream();
|
||||
IOUtils.copy(inputStream, response.getOutputStream());
|
||||
}
|
||||
|
||||
@PostMapping("mobilePageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult mobilePageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit,
|
||||
@RequestParam(value = "activityType", required = false) String activityType,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.mobile as userMobile,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName,
|
||||
wmxx.activityName,
|
||||
state.stateColor,
|
||||
state.stateName
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
LEFT JOIN audit_state state ON state.stateId = xx.state
|
||||
LEFT JOIN hd_wm_xx wmxx ON wmxx.id=xx.activityId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
if (AuthUtil.hasAnyRoles("H10, A06")) {
|
||||
cnd.and("xx.state", isAudit ? ">" : "=", 240);
|
||||
} else {
|
||||
cnd.and("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
cnd.and("xx.state", isAudit ? ">" : "=", 210);
|
||||
}
|
||||
} else {
|
||||
cnd.and("xx.state", "in", isAudit ? "220,230,250,260,270" : "210,240");
|
||||
}
|
||||
cnd.andEX("xx.type", "=", activityType);
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
cnd.andEX("u.deptId", "=", unitId);
|
||||
cnd.andEX("year(xx.submitTime)", "=", year);
|
||||
|
||||
cnd.desc("xx.submitTime").asc("u.unionId").asc("xx.parentTypeId");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package com.ruoyi.activity.controller.opusLevy;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.constant.opusLevy.OpusLevyAuditState;
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevySubmitInfo;
|
||||
import com.ruoyi.activity.service.opusLevy.OpusActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/14
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/opusLevy/opusSchoolAudit")
|
||||
public class OpusSchoolAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OpusActivityManageService opusActivityManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:opusLevy:opusSchoolAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "parentType", required = false) String parentType,
|
||||
@RequestParam(value = "childType", required = false) String childType,
|
||||
@RequestParam(value = "activityType", required = false) String activityType,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.mobile as userMobile,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName,
|
||||
wmxx.activityName,
|
||||
state.stateColor,
|
||||
state.stateName
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
LEFT JOIN audit_state state ON state.stateId = xx.state
|
||||
LEFT JOIN hd_wm_xx wmxx ON wmxx.id=xx.activityId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin, A06")) {
|
||||
cnd.and("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (isAudit == null) {
|
||||
cnd.and("xx.state", ">=", 240);
|
||||
} else if (isAudit) {
|
||||
cnd.and("xx.state", ">", 240);
|
||||
} else {
|
||||
cnd.and("xx.state", "=", 240);
|
||||
}
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
cnd.andEX("u.deptId", "=", unitId);
|
||||
cnd.andEX("xx.parentTypeId", "=", parentType);
|
||||
cnd.andEX("xx.childTypeId", "=", childType);
|
||||
cnd.andEX("year(xx.submitTime)", "=", year);
|
||||
|
||||
cnd.desc("xx.submitTime").asc("u.unionId").asc("xx.parentTypeId");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("rollBack/{id}")
|
||||
@RequiresPermissions("activity:opusLevy:opusSchoolAudit")
|
||||
public AjaxResult rollBack(@PathVariable String id) {
|
||||
dao.update(OpusLevySubmitInfo.class, Chain.make("state", OpusLevyAuditState.SCHOOL_READY), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@RequiresPermissions("activity:opusLevy:opusSchoolAudit")
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
OpusLevySubmitInfo opusLevySubmitInfo = dao.fetch(OpusLevySubmitInfo.class, id);
|
||||
if (pass == 1) {
|
||||
opusLevySubmitInfo.setState(OpusLevyAuditState.SCHOOL_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
opusLevySubmitInfo.setState(OpusLevyAuditState.SCHOOL_BACK_MODIFY);
|
||||
} else {
|
||||
opusLevySubmitInfo.setState(OpusLevyAuditState.SCHOOL_PASS);
|
||||
}
|
||||
opusLevySubmitInfo.setSchoolAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(opusLevySubmitInfo);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package com.ruoyi.activity.controller.opusLevy;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.constant.opusLevy.OpusLevyAuditState;
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevySubmitInfo;
|
||||
import com.ruoyi.activity.service.opusLevy.OpusActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/14
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/opusLevy/opusUnionAudit")
|
||||
public class OpusUnionAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OpusActivityManageService opusActivityManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:opusLevy:opusUnionAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "parentType", required = false) String parentType,
|
||||
@RequestParam(value = "childType", required = false) String childType,
|
||||
@RequestParam(value = "activityType", required = false) String activityType,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.mobile as userMobile,
|
||||
u.deptName,
|
||||
u.unionName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName,
|
||||
wmxx.activityName,
|
||||
state.stateColor,
|
||||
state.stateName
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
LEFT JOIN `user` u ON u.userId = xx.submitUserId
|
||||
LEFT JOIN audit_state state ON state.stateId = xx.state
|
||||
LEFT JOIN hd_wm_xx wmxx ON wmxx.id=xx.activityId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin, A06")) {
|
||||
cnd.and("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (isAudit == null) {
|
||||
cnd.and("xx.state", ">=", 210);
|
||||
} else if (isAudit) {
|
||||
cnd.and("xx.state", ">", 210);
|
||||
} else {
|
||||
cnd.and("xx.state", "=", 210);
|
||||
}
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
cnd.andEX("u.deptId", "=", unitId);
|
||||
cnd.andEX("xx.parentTypeId", "=", parentType);
|
||||
cnd.andEX("xx.childTypeId", "=", childType);
|
||||
cnd.andEX("year(xx.submitTime)", "=", year);
|
||||
|
||||
cnd.desc("xx.submitTime").asc("u.unionId").asc("xx.parentTypeId");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("rollBack/{id}")
|
||||
@RequiresPermissions("activity:opusLevy:opusUnionAudit")
|
||||
public AjaxResult rollBack(@PathVariable String id) {
|
||||
dao.update(OpusLevySubmitInfo.class, Chain.make("state", OpusLevyAuditState.UNION_READY), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@RequiresPermissions("activity:opusLevy:opusUnionAudit")
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
OpusLevySubmitInfo opusLevySubmitInfo = dao.fetch(OpusLevySubmitInfo.class, id);
|
||||
if (pass == 1) {
|
||||
opusLevySubmitInfo.setState(OpusLevyAuditState.UNION_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
opusLevySubmitInfo.setState(OpusLevyAuditState.UNION_BACK_MODIFY);
|
||||
} else {
|
||||
opusLevySubmitInfo.setState(OpusLevyAuditState.SCHOOL_READY);
|
||||
}
|
||||
opusLevySubmitInfo.setUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(opusLevySubmitInfo);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
package com.ruoyi.activity.controller.opusLevy;
|
||||
|
||||
import com.ruoyi.activity.api.constant.opusLevy.OpusLevyAuditState;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevy;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevyChildType;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevyParentType;
|
||||
import com.ruoyi.activity.api.domain.opusLevy.OpusLevySubmitInfo;
|
||||
import com.ruoyi.activity.service.opusLevy.OpusActivityManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.Static;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/14
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/opusLevy/opusUpload")
|
||||
public class OpusUploadController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OpusActivityManageService opusActivityManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:opusLevy:opusUpload")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "parentType", required = false) String parentType,
|
||||
@RequestParam(value = "childType", required = false) String childType,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType,
|
||||
@RequestParam(value = "year", required = false) Integer year) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
xx.*,
|
||||
sbr.userName AS submitUserName,
|
||||
sbr.loginName,
|
||||
hd.activityName,
|
||||
hd.startTime,
|
||||
hd.endTime,
|
||||
sbr.deptName,
|
||||
sbr.unionName,
|
||||
hdlb.parentTypeName,
|
||||
zplb.childTypeName,
|
||||
state.stateColor,
|
||||
state.stateName
|
||||
FROM
|
||||
hd_wm_sbxx xx
|
||||
LEFT JOIN `user` sbr ON sbr.userId = xx.submitUserId
|
||||
LEFT JOIN hd_wm_lb hdlb ON hdlb.id = xx.parentTypeId
|
||||
LEFT JOIN hd_wm_zplb zplb ON zplb.id = xx.childTypeId
|
||||
left join hd_wm_xx hd on hd.id = xx.activityId
|
||||
LEFT JOIN audit_state state ON state.stateId = xx.state
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("xx.submitUserId", "=", SecurityUtils.getUserId());
|
||||
if (activityType != null) {
|
||||
cnd.and(new Static("xx.activityId in (select id from hd_wm_xx where type = %s)".formatted(activityType)));
|
||||
}
|
||||
cnd.andEX("xx.activityId", "=", activityId);
|
||||
cnd.andEX("xx.parentTypeId", "=", parentType);
|
||||
cnd.andEX("xx.childTypeId", "=", childType);
|
||||
cnd.andEX("year(xx.submitTime)", "=", year);
|
||||
|
||||
cnd.desc("xx.submitTime").asc("sbr.userName").asc("sbr.unionCode").asc("sbr.deptId");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = opusActivityManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doHandle")
|
||||
@RequiresPermissions("activity:opusLevy:opusUpload")
|
||||
public AjaxResult doHandle(@RequestBody OpusLevySubmitInfo submitInfo) {
|
||||
|
||||
submitInfo.setSubmitUserId(SecurityUtils.getUserId());
|
||||
submitInfo.setSubmitTime(DateUtils.getDate());
|
||||
submitInfo.setState(OpusLevyAuditState.UNION_READY);
|
||||
|
||||
dao.insertOrUpdate(submitInfo);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
sbxx.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.deptName as unitName,
|
||||
lb.parentTypeName,
|
||||
zplb.childTypeName
|
||||
FROM
|
||||
hd_wm_sbxx sbxx
|
||||
left join `user` u on u.userId = sbxx.submitUserId
|
||||
left join hd_wm_lb lb on lb.id = sbxx.parentTypeId
|
||||
left join hd_wm_zplb zplb on zplb.id = sbxx.childTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("sbxx.id", "=", id);
|
||||
sql.setCondition(cnd);
|
||||
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap nutMap = sql.getObject(NutMap.class);
|
||||
|
||||
nutMap.put("activity", dao.fetch(OpusLevy.class, nutMap.getString("activityId")));
|
||||
nutMap.put("parentTypeList", dao.query(OpusLevyParentType.class, Cnd.where("activityId", "=", nutMap.getString("activityId"))
|
||||
.asc("location")));
|
||||
nutMap.put("childTypeList", dao.query(OpusLevyChildType.class, Cnd.where("activityId", "=", nutMap.getString("activityId"))
|
||||
.asc("location")));
|
||||
|
||||
return AjaxResult.success(nutMap);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("activity:opusLevy:opusUpload")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
dao.clear(OpusLevySubmitInfo.class, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package com.ruoyi.activity.controller.question;
|
||||
|
||||
import com.ruoyi.activity.service.question.QuestionAnswerRankingService;
|
||||
import com.ruoyi.activity.service.question.QuestionService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 答题
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/question/answer/ranking")
|
||||
public class QuestionAnswerRankingController {
|
||||
|
||||
@Resource
|
||||
private QuestionService questionService;
|
||||
@Resource
|
||||
private QuestionAnswerRankingService questionAnswerRankingService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:question:questionRanking")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, value = "questionId") String questionId,
|
||||
@RequestParam(required = false, value = "unionId") String unionId,
|
||||
@RequestParam(required = false, value = "unitId") String unitId,
|
||||
@RequestParam(required = false, value = "answerDate") String answerDate) {
|
||||
|
||||
Pagination pagination = questionAnswerRankingService.pageData(pageForm, questionId, unionId, unitId, answerDate);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+238
@@ -0,0 +1,238 @@
|
||||
package com.ruoyi.activity.controller.question;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import com.ruoyi.activity.api.domain.question.Question;
|
||||
import com.ruoyi.activity.api.domain.question.Question_issue;
|
||||
import com.ruoyi.activity.service.question.QuestionService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
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.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 投票数据分析
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/9 11:03
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/question/data")
|
||||
public class QuestionDataController {
|
||||
|
||||
@Autowired
|
||||
private QuestionService questionService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:question:questionData")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, value = "qlx") Integer qlx,
|
||||
@RequestParam(required = false, value = "qtitle") String qtitle,
|
||||
@RequestParam(required = false, value = "year") Integer year) {
|
||||
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
q.*,
|
||||
u.`userName`
|
||||
FROM
|
||||
question q
|
||||
LEFT JOIN `user` u ON q.`qcreator` = u.userId
|
||||
$condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (qlx != null) {
|
||||
cnd.and("qlx", "=", qlx);
|
||||
}
|
||||
if (Strings.isNotBlank(qtitle)) {
|
||||
cnd.where().andLike("qtitle", qtitle);
|
||||
}
|
||||
cnd.and("YEAR(qctime)", "=", year);
|
||||
cnd.desc("qctime");
|
||||
cnd.desc("qlx");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(questionService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/tkpageData")
|
||||
@RequiresPermissions("activity:question:questionData")
|
||||
public AjaxResult tkpageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, value = "wid") String wid) {
|
||||
|
||||
Sql sql = Sqls.create("SELECT * FROM `question_reply` $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("rwid", "=", wid);
|
||||
if (Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike("rval", pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.desc("rtime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return AjaxResult.success(questionService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getReplyData")
|
||||
@RequiresPermissions("activity:question:questionData")
|
||||
public AjaxResult getReplyData(String qid) {
|
||||
Map result = new HashMap();
|
||||
|
||||
Question question = questionService.getQuestion(qid);
|
||||
result.put("q", question);
|
||||
|
||||
List<Question_issue> issues = questionService.dao().query(Question_issue.class, Cnd.where("iqid", "=", qid));
|
||||
|
||||
for (Question_issue issue : issues) {
|
||||
|
||||
Sql yysSql = Sqls.create("""
|
||||
SELECT
|
||||
COUNT( DISTINCT reply.`ridentity` )
|
||||
FROM
|
||||
question_reply reply
|
||||
WHERE reply.`rwid` IN (SELECT wor.`wid` FROM question_wor wor WHERE wor.`wiid` = @iid)
|
||||
""").setParam("iid", issue.getIid());
|
||||
|
||||
|
||||
Sql zsSql = Sqls.create("""
|
||||
SELECT
|
||||
COUNT( 1 )
|
||||
FROM
|
||||
question_reply reply
|
||||
WHERE
|
||||
reply.`rwid`IN (SELECT wor.`wid` FROM question_wor wor WHERE wor.`wiid` = @iid)
|
||||
""").setParam("iid", issue.getIid());
|
||||
|
||||
int yxs = questionService.count(yysSql);
|
||||
int zs = questionService.count(zsSql);
|
||||
|
||||
Map i = new HashMap();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
reply.`rwid`,
|
||||
COUNT( 1 ) c
|
||||
FROM
|
||||
question_reply reply
|
||||
WHERE
|
||||
reply.`rwid` IN (SELECT wor.`wid` FROM question_wor wor WHERE wor.`wiid` = @iid)
|
||||
GROUP BY
|
||||
reply.`rwid`
|
||||
""").setParam("iid", issue.getIid());
|
||||
List<Record> list = questionService.list(sql);
|
||||
for (Record record : list) {
|
||||
i.put(record.getString("rwid"), record.getInt("c"));
|
||||
}
|
||||
|
||||
Sql sumSql = Sqls.create("""
|
||||
SELECT
|
||||
COUNT( DISTINCT reply.userId )
|
||||
FROM
|
||||
question_reply reply
|
||||
WHERE
|
||||
reply.qid = @qid
|
||||
""").setParam("qid", qid);
|
||||
|
||||
i.put("num", questionService.count(sumSql));
|
||||
|
||||
i.put("yxs", yxs); //有效数
|
||||
i.put("zs", zs); //总数
|
||||
|
||||
result.put(issue.getIid(), i);
|
||||
}
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
|
||||
@RequestMapping("/doExport")
|
||||
@RequiresPermissions("activity:question:questionData")
|
||||
public void doExport(String questionId, HttpServletResponse response) {
|
||||
try {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
qu.qtitle,
|
||||
issue.ipxbh,
|
||||
issue.iname,
|
||||
wor.wtxt,
|
||||
wor.wsm ,
|
||||
(SELECT COUNT(DISTINCT reply.userId) FROM question_reply reply WHERE reply.qid = qu.qid) num,
|
||||
(SELECT COUNT(DISTINCT reply.userId) FROM question_reply reply WHERE reply.qid = qu.qid AND reply.rwid = wor.wid) votersNum,
|
||||
CONCAT(convert((((SELECT COUNT(DISTINCT reply.userId) FROM question_reply reply WHERE reply.qid = qu.qid AND reply.rwid = wor.wid)/(SELECT COUNT(DISTINCT reply.userId) FROM question_reply reply WHERE reply.qid = qu.qid)) * 100),decimal(18,2)),'%') voterScale
|
||||
FROM
|
||||
question_wor wor
|
||||
LEFT JOIN question_issue issue ON issue.iid = wor.wiid
|
||||
LEFT JOIN question qu ON qu.qid = issue.iqid
|
||||
WHERE
|
||||
qu.qid = @questionId
|
||||
AND issue.itx = 1
|
||||
ORDER BY
|
||||
issue.ipxbh,wor.wpxbh
|
||||
""").setParam("questionId", questionId);
|
||||
|
||||
List<QuestionExportEntity.ExportEntity2> exportList = questionService.listEntity(sql, QuestionExportEntity.ExportEntity2.class);
|
||||
|
||||
for (int i = 0; i < exportList.size(); i++) {
|
||||
exportList.get(i).setIndex(i + 1);
|
||||
exportList.get(i).setIname(delHTMLTag(exportList.get(i).getIname()));
|
||||
}
|
||||
|
||||
String fileName = exportList.isEmpty() ? "" : exportList.get(0).getQtitle();
|
||||
String num = exportList.isEmpty() ? "" : exportList.get(0).getNum();
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
exportParams.setTitle(fileName + "(参加问卷的人数:" + num + "人)");
|
||||
exportParams.setSheetName(fileName);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, QuestionExportEntity.ExportEntity2.class, exportList);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(fileName + "汇总.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String delHTMLTag(String htmlStr) {
|
||||
String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式
|
||||
String regEx_html = "<[^>]+>"; //定义HTML标签的正则表达式
|
||||
|
||||
Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
|
||||
Matcher m_style = p_style.matcher(htmlStr);
|
||||
htmlStr = m_style.replaceAll(""); //过滤style标签
|
||||
|
||||
Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
|
||||
Matcher m_html = p_html.matcher(htmlStr);
|
||||
htmlStr = m_html.replaceAll(""); //过滤html标签
|
||||
|
||||
htmlStr = htmlStr.replace(" ", "");
|
||||
htmlStr = htmlStr.replaceAll("\\s*|\t|\r|\n", "");
|
||||
htmlStr = htmlStr.replace("“", "");
|
||||
htmlStr = htmlStr.replace("”", "");
|
||||
htmlStr = htmlStr.replaceAll(" ", "");
|
||||
|
||||
return htmlStr.trim(); //返回文本字符串
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package com.ruoyi.activity.controller.question;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/12 11:44
|
||||
*/
|
||||
|
||||
public class QuestionExportEntity {
|
||||
|
||||
|
||||
@Data
|
||||
public static class ExportInventoryEntity {
|
||||
@Excel(name = "工号", width = 20d)
|
||||
private String loginname;
|
||||
|
||||
@Excel(name = "姓名", width = 20d)
|
||||
private String username;
|
||||
|
||||
@Excel(name = "商品名称", width = 20d)
|
||||
private String commodityName;
|
||||
|
||||
@Excel(name = "商品单价")
|
||||
private String price;
|
||||
|
||||
@Excel(name = "选购数量")
|
||||
private String number;
|
||||
|
||||
@Excel(name = "所属工会")
|
||||
private String unionname;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public static class ExportUserEntity {
|
||||
@Excel(name = "工号", width = 20d)
|
||||
private String loginname;
|
||||
|
||||
@Excel(name = "姓名", width = 20d)
|
||||
private String username;
|
||||
|
||||
@Excel(name = "所属单位", width = 40d)
|
||||
private String unitname;
|
||||
|
||||
@Excel(name = "所属工会", width = 40d)
|
||||
private String unionname;
|
||||
|
||||
@Excel(name = "选购总数")
|
||||
private String totalNumber;
|
||||
|
||||
@Excel(name = "总金额")
|
||||
private String totalPrice;
|
||||
|
||||
@Excel(name = "签收人姓名", width = 20d)
|
||||
private String signerUserName;
|
||||
|
||||
@Excel(name = "联系方式", width = 40d)
|
||||
private String signerPhone;
|
||||
|
||||
@Excel(name = "收货地址", width = 40d)
|
||||
private String signerAddress;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public static class ExportEntity {
|
||||
private String userId;
|
||||
|
||||
@Excel(name = "工号", width = 20d)
|
||||
private String loginname;
|
||||
|
||||
@Excel(name = "姓名", width = 20d)
|
||||
private String username;
|
||||
|
||||
@Excel(name = "性别", width = 20d)
|
||||
private String sex;
|
||||
|
||||
@Excel(name = "所属单位", width = 40d)
|
||||
private String unitname;
|
||||
|
||||
@Excel(name = "所属工会", width = 40d)
|
||||
private String unionname;
|
||||
|
||||
@Excel(name = "答题次数", width = 20d)
|
||||
private Integer days;
|
||||
|
||||
@Excel(name = "分值", width = 20d)
|
||||
private String fraction;
|
||||
|
||||
private String qtitle;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class ExportEntity2 {
|
||||
@Excel(name = "序号")
|
||||
private Integer index;
|
||||
|
||||
@Excel(name = "商品类别", width = 40d)
|
||||
private String iname;
|
||||
|
||||
@Excel(name = "商品名称", width = 40d)
|
||||
private String wtxt;
|
||||
|
||||
@Excel(name = "规格说明", width = 60d)
|
||||
private String wsm;
|
||||
|
||||
@Excel(name = "投票人数", width = 20d)
|
||||
private String votersNum;
|
||||
|
||||
@Excel(name = "投票比例", width = 20d)
|
||||
private String voterScale;
|
||||
|
||||
private String num;
|
||||
|
||||
private String qtitle;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
package com.ruoyi.activity.controller.question;
|
||||
|
||||
import com.ruoyi.activity.api.domain.question.Question;
|
||||
import com.ruoyi.activity.api.domain.question.Question_issue;
|
||||
import com.ruoyi.activity.service.question.QuestionService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
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.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 问卷
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/question/mange")
|
||||
public class QuestionMangeController {
|
||||
|
||||
@Resource
|
||||
private QuestionService questionService;
|
||||
@Resource
|
||||
private Dao dao;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, value = "qtitle") String qtitle,
|
||||
@RequestParam(required = false, value = "year") Integer year) {
|
||||
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
q.*,
|
||||
u.`userName`
|
||||
FROM
|
||||
question q
|
||||
LEFT JOIN `user` u ON q.`qcreator` = u.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (Strings.isNotBlank(qtitle)) {
|
||||
cnd.where().andLike("q.qtitle", qtitle);
|
||||
}
|
||||
cnd.andEX("YEAR(qctime)", "=", year);
|
||||
cnd.desc("qctime");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(questionService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/doAdd")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult doAdd(@RequestBody Question question) {
|
||||
questionService.doAdd(question);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doEdit")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult doEdit(@RequestBody Question question) {
|
||||
questionService.doEdit(question);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改活动状态
|
||||
* @param qid
|
||||
* @param flag
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/upStatus")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult upStatus(String qid, Integer flag) {
|
||||
dao.update(Question.class, Chain.make("qflag", flag), Cnd.where("qid", "=", qid));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param qid
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/doDelete")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult doDelete(String qid) {
|
||||
questionService.deleteQuestion(qid);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 问卷基本信息
|
||||
* @param questionId
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/findBasicInfo")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult findBasicInfo(String questionId) {
|
||||
Question question = questionService.fetch(questionId);
|
||||
return AjaxResult.success(question);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改问卷基本信息
|
||||
* @param question
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/modifyBasicInfo")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult modifyBasicInfo(@RequestBody Question question) {
|
||||
questionService.modifyBasicInfo(question);
|
||||
return AjaxResult.success(question);
|
||||
}
|
||||
|
||||
/**
|
||||
* 题目信息
|
||||
*
|
||||
* @param questionId
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/issueList")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult issueList(String questionId) {
|
||||
List<Question_issue> issues = dao.query(Question_issue.class, Cnd.where("iqid", "=", questionId).asc("displayDate").asc("ipxbh"));
|
||||
dao.fetchLinks(issues, "wors", Cnd.NEW().asc("wpxbh"));
|
||||
return AjaxResult.success(issues);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑题目信息
|
||||
*
|
||||
* @param issues
|
||||
* @param questionId
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/modifyIssues")
|
||||
@RequiresPermissions("activity:question:questionMange")
|
||||
public AjaxResult modifyIssues(@RequestBody Question_issue[] issues, String questionId) {
|
||||
questionService.modifyIssues(issues, questionId);
|
||||
return AjaxResult.success(issues);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
package com.ruoyi.activity.controller.question;
|
||||
|
||||
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 com.ruoyi.activity.api.domain.question.Question;
|
||||
import com.ruoyi.activity.service.question.QuestionAnswerRankingService;
|
||||
import com.ruoyi.activity.service.question.QuestionService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.DictUtils;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 答题排名
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/question/ranking")
|
||||
public class QuestionRankingController {
|
||||
|
||||
@Resource
|
||||
private QuestionService questionService;
|
||||
@Resource
|
||||
private QuestionAnswerRankingService questionAnswerRankingService;
|
||||
|
||||
@RequestMapping("/pageData")
|
||||
@RequiresPermissions("activity:question:questionRanking")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, value = "questionId") String questionId,
|
||||
@RequestParam(required = false, value = "unionId") String unionId,
|
||||
@RequestParam(required = false, value = "unitId") String unitId,
|
||||
@RequestParam(required = false, value = "answerDate") String answerDate) {
|
||||
|
||||
Pagination pagination = questionAnswerRankingService.pageData(pageForm, questionId, unionId, unitId, answerDate);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("/doExport")
|
||||
@RequiresPermissions("activity:question:questionRanking")
|
||||
public void doExport(@RequestParam(required = false, value = "questionId") String questionId,
|
||||
@RequestParam(required = false, value = "unionId") String unionId,
|
||||
@RequestParam(required = false, value = "unitId") String unitId,
|
||||
HttpServletResponse response) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/doExportAll")
|
||||
@RequiresPermissions("activity:question:questionRanking")
|
||||
public void doExportAll(String questionId, HttpServletResponse response) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getQuestion")
|
||||
@RequiresPermissions("activity:question:questionRanking")
|
||||
public AjaxResult getQuestion(int year) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("YEAR(qctime)", "=", year);
|
||||
cnd.and("qflag", "=", 2);
|
||||
cnd.desc("qctime");
|
||||
List<Question> list = questionService.query(cnd);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
}
|
||||
+209
@@ -0,0 +1,209 @@
|
||||
package com.ruoyi.activity.controller.question;
|
||||
|
||||
import com.ruoyi.activity.api.domain.question.Question;
|
||||
import com.ruoyi.activity.service.question.QuestionService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 问卷查询统计
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/9 11:04
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/question/unionStats")
|
||||
public class QuestionUnionStatsController {
|
||||
|
||||
@Autowired
|
||||
private QuestionService questionService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:question:questionUnionStats")
|
||||
public AjaxResult pageData(String questionId, String unionId) {
|
||||
Question question = questionService.fetch(questionId);
|
||||
Integer activityUserScopeId = question.getActivityUserScopeId();
|
||||
|
||||
//查询选项
|
||||
Sql sqlOption = Sqls.create("""
|
||||
SELECT
|
||||
qw.wid,
|
||||
qw.wtxt
|
||||
FROM
|
||||
question_wor qw
|
||||
JOIN
|
||||
question_issue qi ON qw.wiid = qi.iid
|
||||
WHERE
|
||||
qi.iqid = @questionId
|
||||
""");
|
||||
sqlOption.setParam("questionId", questionId);
|
||||
List<NutMap> options = questionService.listMap(sqlOption);
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
un.id AS unionId,
|
||||
un.unionName,
|
||||
COUNT(DISTINCT u.userId) AS teacherSum,
|
||||
COUNT(DISTINCT r.userId) AS replyNum,
|
||||
(COUNT(DISTINCT u.userId) - COUNT(DISTINCT r.userId)) AS unselectedTeacherSum,
|
||||
$optionSql
|
||||
FROM
|
||||
`union` un
|
||||
LEFT JOIN `user` u ON u.unionId = un.id
|
||||
LEFT JOIN question_reply r ON r.userId = u.userId AND r.qid = @questionId
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM activity_user_scope aus
|
||||
WHERE aus.userId = u.userId AND aus.groupId = @activityUserScopeId
|
||||
)
|
||||
GROUP BY
|
||||
un.id,
|
||||
un.unionName
|
||||
""");
|
||||
sql.setParam("questionId", questionId);
|
||||
sql.setParam("activityUserScopeId", activityUserScopeId);
|
||||
|
||||
if (options.size() > 0) {
|
||||
StringBuilder sbf = new StringBuilder();
|
||||
Iterator<NutMap> iterator = options.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
NutMap option = iterator.next();
|
||||
sbf.append("sum(case when r.rwid = '").append(option.getString("wid")).append("' then 1 else 0 end) '").append(option.getString("wtxt")).append("'");
|
||||
if (iterator.hasNext()) {
|
||||
sbf.append(",");
|
||||
}
|
||||
}
|
||||
sql.setVar("optionSql",sbf);
|
||||
} else {
|
||||
sql.setVar("optionSql", null);
|
||||
}
|
||||
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("un.id", "=", unionId);
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> resultList = questionService.listMap(sql);
|
||||
|
||||
List<NutMap> labelList = new ArrayList<>();
|
||||
labelList.add(NutMap.NEW().addv("label", "基层工会名称").addv("prop", "unionName"));
|
||||
labelList.add(NutMap.NEW().addv("label", "职工人数").addv("prop", "teacherSum"));
|
||||
for (NutMap option : options) {
|
||||
labelList.add(NutMap.NEW().addv("label", option.getString("wtxt")).addv("prop", option.getString("wtxt")));
|
||||
}
|
||||
labelList.add(NutMap.NEW().addv("label", "参加人数").addv("prop", "replyNum"));
|
||||
labelList.add(NutMap.NEW().addv("label", "未选人数").addv("prop", "unselectedTeacherSum"));
|
||||
|
||||
return AjaxResult.success(Map.of("list", resultList, "label", labelList));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getQuestion")
|
||||
public AjaxResult getQuestion(Integer year) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("YEAR(qctime)", "=", year);
|
||||
cnd.and("qlx", "=", 4);
|
||||
cnd.desc("qctime");
|
||||
return AjaxResult.success(questionService.query(cnd));
|
||||
}
|
||||
|
||||
@GetMapping("/getAnswerData")
|
||||
@RequiresPermissions("activity:question:ranking")
|
||||
public AjaxResult getAnswerData(String questionId, String unionId) {
|
||||
if (Strings.isBlank(questionId) || Strings.isBlank(unionId)) {
|
||||
return AjaxResult.error("缺少必要参数");
|
||||
}
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.loginName loginname,
|
||||
u.userName username,
|
||||
u.sex,
|
||||
u.deptName unitname,
|
||||
u.unionName unionname,
|
||||
(
|
||||
SELECT
|
||||
sum( tab.fraction )
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
IF
|
||||
((
|
||||
SELECT
|
||||
sum( ( SELECT 1 FROM question_reply reply WHERE reply.rwid = wor.wid AND reply.userId = u.userId ) )
|
||||
FROM
|
||||
question_wor wor
|
||||
WHERE
|
||||
wor.wiid = issue.iid
|
||||
AND wor.correct = 1
|
||||
) = ( SELECT count( 1 ) FROM question_wor wor WHERE wor.wiid = issue.iid AND wor.correct = 1 ),
|
||||
issue.fraction,
|
||||
0
|
||||
) fraction
|
||||
FROM
|
||||
question_issue issue
|
||||
WHERE
|
||||
issue.iqid = @questionId
|
||||
) tab
|
||||
) fraction
|
||||
FROM
|
||||
`user` u
|
||||
INNER JOIN question_reply reply ON reply.userId = u.userId
|
||||
WHERE
|
||||
u.unionid = @unionId
|
||||
GROUP BY
|
||||
u.userId
|
||||
""").setParam("questionId", questionId).setParam("unionId", unionId);
|
||||
|
||||
return AjaxResult.success(questionService.listMap(sql));
|
||||
}
|
||||
|
||||
// @GetMapping("/shopDetail")
|
||||
// @RequiresPermissions("activity:question:questionUnionStats")
|
||||
// public AjaxResult shopDetail(@RequestParam(required = false, value = "questionId") String questionId,
|
||||
// @RequestParam(required = false, value = "unionId") String unionId) {
|
||||
// NutMap union = questionService.fetch(Sqls.create("select * from `union`"));
|
||||
// String unionname = union.getString("unionName");
|
||||
// List<Map<String, Object>> list = questionExportService.shopData(questionId);
|
||||
// list.forEach(v -> {
|
||||
// Object name = v.get("name");
|
||||
// if (v.get("name").equals("人员表")) {
|
||||
// List<QuestionExportEntity.ExportUserEntity> eulist = (List<QuestionExportEntity.ExportUserEntity>) v.get("data");
|
||||
// List<QuestionExportEntity.ExportUserEntity> newEuList = eulist.stream().filter(x -> x.getUnionname().equals(unionname)).collect(Collectors.toList());
|
||||
// v.put("data", newEuList);
|
||||
// }
|
||||
//
|
||||
// if (v.get("name").equals("清单表")) {
|
||||
// List<QuestionExportEntity.ExportInventoryEntity> eulist = (List<QuestionExportEntity.ExportInventoryEntity>) v.get("data");
|
||||
// List<QuestionExportEntity.ExportInventoryEntity> newEuList = eulist.stream().filter(x -> x.getUnionname().equals(unionname)).collect(Collectors.toList());
|
||||
// v.put("data", newEuList);
|
||||
// }
|
||||
//
|
||||
// });
|
||||
// return AjaxResult.success(list);
|
||||
// }
|
||||
|
||||
|
||||
// @GetMapping("/cakeUserData")
|
||||
// @RequiresPermissions("activity:question:questionUnionStats")
|
||||
// public AjaxResult cakeUserData(@RequestParam(required = false, value = "questionId") String questionId,
|
||||
// @RequestParam(required = false, value = "unionId") String unionId) {
|
||||
// return AjaxResult.success(questionService.cakeUserDataByUnionId(questionId, unionId));
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
+478
@@ -0,0 +1,478 @@
|
||||
package com.ruoyi.activity.controller.question.h5;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityUserScope;
|
||||
import com.ruoyi.activity.api.domain.question.*;
|
||||
import com.ruoyi.activity.service.question.QuestionService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 问卷H5
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/04/24
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/question/h5")
|
||||
public class QuestionH5Controller {
|
||||
|
||||
@Resource
|
||||
private QuestionService questionService;
|
||||
@Resource
|
||||
private Dao dao;
|
||||
|
||||
@RequestMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm, @RequestParam int status, @RequestParam int type) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
q.*
|
||||
from
|
||||
question q
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("today", DateUtil.today());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
long now = System.currentTimeMillis();
|
||||
if (status == 1) {
|
||||
cnd.and("q.startTime", "<", now);
|
||||
cnd.and("q.endTime", ">", now);
|
||||
} else {
|
||||
cnd.and("q.endTime", "<", now);
|
||||
}
|
||||
cnd.and("q.qlx", "=", type);
|
||||
cnd.and("q.qflag", "=", 2);
|
||||
cnd.desc("q.startTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = questionService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查参加权限
|
||||
*
|
||||
* @param activityUserScopeId 活动用户范围id
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("/checkPermission/?")
|
||||
public AjaxResult checkPermission(String activityUserScopeId) {
|
||||
boolean exists = questionService.dao().count(ActivityUserScope.class, Cnd.where("groupId", "=", activityUserScopeId).and("userId", "=", SecurityUtils.getUserId())) > 0;
|
||||
return AjaxResult.success(exists);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 问卷信息
|
||||
*
|
||||
* @param id id
|
||||
* @param currentDate 日期
|
||||
* @param randomCount 轮数
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("/questionInfo/{id}")
|
||||
public AjaxResult questionInfo(@PathVariable String id,
|
||||
@RequestParam(required = false, value = "currentDate") String currentDate,
|
||||
@RequestParam(required = false, value = "randomCount") Integer randomCount) {
|
||||
Question question = questionService.fetch(id);
|
||||
Cnd issueCnd = Cnd.NEW();
|
||||
|
||||
Integer ctMode = question.getCtMode();
|
||||
|
||||
if (ctMode == 1) {
|
||||
//定时定题
|
||||
|
||||
//判断传入的日期是否已经加入到表里
|
||||
QuestionRandomIssue randomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", question.getQid()).and("userId", "=", SecurityUtils.getUserIdStr())
|
||||
.and("displayDate", "=", currentDate));
|
||||
if (Lang.isEmpty(randomIssue)) {
|
||||
Sql issueSql = Sqls.queryString(" SELECT iid FROM `question_issue` where iqid = @qid AND displayDate = @displayDate");
|
||||
issueSql.setParam("qid", id);
|
||||
issueSql.setParam("displayDate", currentDate);
|
||||
dao.execute(issueSql);
|
||||
String[] randomIssueIds = (String[]) issueSql.getResult();
|
||||
QuestionRandomIssue questionRandomIssue = new QuestionRandomIssue();
|
||||
questionRandomIssue.setQuestionId(id);
|
||||
questionRandomIssue.setUserId(SecurityUtils.getUserIdStr());
|
||||
questionRandomIssue.setIssueIds(Arrays.asList(randomIssueIds));
|
||||
questionRandomIssue.setNum(null);
|
||||
questionRandomIssue.setIsFinish(false);
|
||||
questionRandomIssue.setDisplayDate(DateUtil.parseDate(currentDate));
|
||||
dao.insert(questionRandomIssue);
|
||||
issueCnd.and("iid", "in", randomIssueIds);
|
||||
} else {
|
||||
issueCnd.and("iid", "in", randomIssue.getIssueIds());
|
||||
}
|
||||
} else if (ctMode == 2) {
|
||||
//随机模式
|
||||
|
||||
//判断是否为一天答题
|
||||
DateTime startTime = DateUtil.date(question.getStartTime());
|
||||
DateTime endTime = DateUtil.date(question.getEndTime());
|
||||
long betweenDay = DateUtil.betweenDay(startTime, endTime, true);
|
||||
|
||||
//每次随机的题目数量
|
||||
Integer ranDomSingleIssueNum = question.getRanDomSingleIssueNum();
|
||||
//总共随机几次
|
||||
Integer ranDomSum = question.getRanDomSum();
|
||||
|
||||
if (betweenDay == 0) {
|
||||
//同一天 一天随机多次
|
||||
|
||||
if (randomCount != null) {
|
||||
QuestionRandomIssue randomIssues = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", question.getQid()).and("userId", "=", SecurityUtils.getUserIdStr()).and("num", "=", randomCount));
|
||||
issueCnd.andEX("iid", "in", randomIssues.getIssueIds());
|
||||
} else {
|
||||
//用户的随机题目
|
||||
List<QuestionRandomIssue> randomIssues = dao.query(QuestionRandomIssue.class, Cnd.where("questionId", "=", question.getQid()).and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
|
||||
//查询已经随机但是并没有答题完成的题目
|
||||
List<String> notFinishIssueIds = randomIssues.stream().filter(v -> v.getIsFinish() != null && !v.getIsFinish()).findFirst().map(QuestionRandomIssue::getIssueIds).orElseGet(Collections::emptyList);
|
||||
|
||||
if (Lang.isNotEmpty(notFinishIssueIds)) {
|
||||
//就查询没答完的题目
|
||||
issueCnd.and("iid", "in", notFinishIssueIds);
|
||||
} else {
|
||||
//进行下一次随机 然后加入到随机题目表里
|
||||
//已经答了的题目
|
||||
List<String> hasAnswerIssueIds = randomIssues.stream().flatMap(v -> v.getIssueIds().stream()).collect(Collectors.toList());
|
||||
//已经随机几次了
|
||||
int maxAnswerNum = randomIssues.stream().mapToInt(QuestionRandomIssue::getNum).max().orElse(0);
|
||||
|
||||
Sql issueSql = null;
|
||||
if (maxAnswerNum == ranDomSum) {
|
||||
//随机完了 没有题目了 默认去最后一轮
|
||||
// issueCnd.andEX("iid", "in", hasAnswerIssueIds);
|
||||
List<String> lastRanDomIssueIds = randomIssues.stream().filter(v -> v.getNum() == maxAnswerNum).flatMap(v -> v.getIssueIds().stream()).collect(Collectors.toList());
|
||||
issueCnd.andEX("iid", "in", lastRanDomIssueIds);
|
||||
} else {
|
||||
if (maxAnswerNum == 0) {
|
||||
//从没有随即过
|
||||
issueSql = Sqls.queryString(" SELECT iid FROM `question_issue` where iqid = @qid ORDER BY RAND() LIMIT @num");
|
||||
} else {
|
||||
//之前随机过
|
||||
issueSql = Sqls.queryString(" SELECT iid FROM `question_issue` where iqid = @qid and iid not in (@issueIds) ORDER BY RAND() LIMIT @num");
|
||||
issueSql.setParam("issueIds", hasAnswerIssueIds);
|
||||
}
|
||||
issueSql.setParam("qid", id);
|
||||
issueSql.setParam("num", ranDomSingleIssueNum);
|
||||
dao.execute(issueSql);
|
||||
String[] randomIssueIds = (String[]) issueSql.getResult();
|
||||
|
||||
if (Lang.isNotEmpty(randomIssueIds)) {
|
||||
QuestionRandomIssue questionRandomIssue = new QuestionRandomIssue();
|
||||
questionRandomIssue.setQuestionId(id);
|
||||
questionRandomIssue.setUserId(SecurityUtils.getUserIdStr());
|
||||
questionRandomIssue.setIssueIds(Arrays.asList(randomIssueIds));
|
||||
questionRandomIssue.setNum(maxAnswerNum + 1);
|
||||
questionRandomIssue.setIsFinish(false);
|
||||
questionRandomIssue.setDisplayDate(DateUtil.parseDate(DateUtil.today()));
|
||||
dao.insert(questionRandomIssue);
|
||||
}
|
||||
//获取本次的随机题目
|
||||
issueCnd.andEX("iid", "in", randomIssueIds);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//不是一天 那就一天随机一次
|
||||
|
||||
//用户的随机题目记录
|
||||
List<QuestionRandomIssue> randomIssues = dao.query(QuestionRandomIssue.class, Cnd.where("questionId", "=", question.getQid()).and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
//已经随机的题目
|
||||
List<String> hasRanDomIssueIds = randomIssues.stream().flatMap(v -> v.getIssueIds().stream()).collect(Collectors.toList());
|
||||
|
||||
//判断传入的日期是否已经加入到表里
|
||||
QuestionRandomIssue currentDateRandomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", question.getQid()).and("userId", "=", SecurityUtils.getUserIdStr())
|
||||
.and("displayDate", "=", currentDate));
|
||||
if (Lang.isEmpty(currentDateRandomIssue)) {
|
||||
Sql issueSql = null;
|
||||
if (Lang.isEmpty(hasRanDomIssueIds)) {
|
||||
issueSql = Sqls.queryString(" SELECT iid FROM `question_issue` where iqid = @qid ORDER BY RAND() LIMIT @num");
|
||||
} else {
|
||||
//之前随机过
|
||||
issueSql = Sqls.queryString(" SELECT iid FROM `question_issue` where iqid = @qid and iid not in (@issueIds) ORDER BY RAND() LIMIT @num");
|
||||
issueSql.setParam("issueIds", hasRanDomIssueIds);
|
||||
}
|
||||
issueSql.setParam("num", ranDomSingleIssueNum);
|
||||
issueSql.setParam("qid", id);
|
||||
dao.execute(issueSql);
|
||||
String[] randomIssueIds = (String[]) issueSql.getResult();
|
||||
QuestionRandomIssue questionRandomIssue = new QuestionRandomIssue();
|
||||
questionRandomIssue.setQuestionId(id);
|
||||
questionRandomIssue.setUserId(SecurityUtils.getUserIdStr());
|
||||
questionRandomIssue.setIssueIds(Arrays.asList(randomIssueIds));
|
||||
questionRandomIssue.setNum(null);
|
||||
questionRandomIssue.setIsFinish(false);
|
||||
questionRandomIssue.setDisplayDate(DateUtil.parseDate(currentDate));
|
||||
dao.insert(questionRandomIssue);
|
||||
issueCnd.and("iid", "in", randomIssueIds);
|
||||
} else {
|
||||
issueCnd.and("iid", "in", currentDateRandomIssue.getIssueIds());
|
||||
}
|
||||
}
|
||||
} else if (ctMode == 3) {
|
||||
//常规模式
|
||||
//判断是否将题目加进去了
|
||||
QuestionRandomIssue randomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", question.getQid()).and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
if (Lang.isEmpty(randomIssue)) {
|
||||
Sql issueSql = Sqls.create(" SELECT iid FROM `question_issue` where iqid = @qid");
|
||||
issueSql.setParam("qid", id);
|
||||
issueSql.setCallback(Sqls.callback.strList());
|
||||
dao.execute(issueSql);
|
||||
List<String> randomIssueIds = (List<String>) issueSql.getResult();
|
||||
Collections.shuffle(randomIssueIds);
|
||||
QuestionRandomIssue questionRandomIssue = new QuestionRandomIssue();
|
||||
questionRandomIssue.setQuestionId(id);
|
||||
questionRandomIssue.setUserId(SecurityUtils.getUserIdStr());
|
||||
questionRandomIssue.setIssueIds(randomIssueIds);
|
||||
questionRandomIssue.setNum(null);
|
||||
questionRandomIssue.setIsFinish(false);
|
||||
dao.insert(questionRandomIssue);
|
||||
issueCnd.and("iid", "in", randomIssueIds);
|
||||
} else {
|
||||
issueCnd.and("iid", "in", randomIssue.getIssueIds());
|
||||
}
|
||||
}
|
||||
|
||||
// issueCnd.asc("ipxbh");
|
||||
questionService.fetchLinks(question, "issues", issueCnd);
|
||||
for (Question_issue issue : question.getIssues()) {
|
||||
questionService.fetchLinks(issue, "wors", Cnd.NEW().asc("wpxbh"));
|
||||
}
|
||||
|
||||
if (question.getDisruptingOrder()) {
|
||||
Collections.shuffle(question.getIssues());
|
||||
}
|
||||
|
||||
return AjaxResult.success(question);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存答案
|
||||
*
|
||||
* @param repliesArray 答复记录
|
||||
* @param questionId 问卷ID
|
||||
* @param isSave 是否保存
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("/saveAnswer")
|
||||
public AjaxResult saveAnswer(@RequestBody Question_reply[] repliesArray, String questionId, Boolean isSave) {
|
||||
questionService.saveAnswer(repliesArray, questionId, isSave);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 答题信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("/answerInfo/{id}")
|
||||
public AjaxResult answerInfo(@PathVariable String id) {
|
||||
List<Question_reply> replies = questionService.dao().query(Question_reply.class, Cnd.where("qid", "=", id).and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
return AjaxResult.success(replies);
|
||||
}
|
||||
|
||||
/**
|
||||
* 再答一次
|
||||
*
|
||||
* @param questionId 问题id
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@RequestMapping("/answerAgain")
|
||||
public AjaxResult answerAgain(String questionId) {
|
||||
Sql issueIdsSql = Sqls.create("select iid from question_issue where iqid = @qid").setParam("qid", questionId);
|
||||
String[] issueIds = (String[]) Daos.query(dao, issueIdsSql.toString(), Sqls.callback.strs());
|
||||
//清空本日的答题记录
|
||||
dao.clear(Question_reply.class, Cnd.where("qid", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()).and("issueId", "in", issueIds));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/winInfo")
|
||||
public AjaxResult winInfo(String questionId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.username,
|
||||
qw.winDate,
|
||||
u.id
|
||||
FROM
|
||||
`question_winner` qw
|
||||
LEFT JOIN `user` u ON u.id = qw.userId
|
||||
WHERE
|
||||
qw.questionId = @questionId
|
||||
""");
|
||||
sql.setParam("questionId", questionId);
|
||||
List<NutMap> list = questionService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断用户是否答完
|
||||
*
|
||||
* @param questionId 问卷ID
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/checkUserFinishAnswer")
|
||||
public AjaxResult checkUserFinishAnswer(@RequestParam String questionId,
|
||||
@RequestParam(required = false, value = "currentDate") String currentDate,
|
||||
@RequestParam(required = false, value = "randomCount") Integer randomCount) {
|
||||
Question question = dao.fetch(Question.class, questionId);
|
||||
if (question.getCtMode() == 3) {
|
||||
QuestionRandomIssue randomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
return AjaxResult.success(randomIssue.getIsFinish());
|
||||
} else if (question.getCtMode() == 2) {
|
||||
//判断是否为一天答题
|
||||
DateTime startTime = DateUtil.date(question.getStartTime());
|
||||
DateTime endTime = DateUtil.date(question.getEndTime());
|
||||
long betweenDay = DateUtil.betweenDay(startTime, endTime, true);
|
||||
|
||||
if (betweenDay == 0) {
|
||||
//同一天
|
||||
if (randomCount != null) {
|
||||
QuestionRandomIssue randomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()).and("num", "=", randomCount));
|
||||
return AjaxResult.success(randomIssue.getIsFinish());
|
||||
}
|
||||
return AjaxResult.success(false);
|
||||
} else {
|
||||
//不是同一天 判断今天是否答完就行了
|
||||
QuestionRandomIssue randomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()).and("displayDate", "=", DateUtil.today()));
|
||||
//时间过了
|
||||
if (DateUtil.parseDate(currentDate).isBefore(DateUtil.parseDate(DateUtil.today()))) {
|
||||
return AjaxResult.success(true);
|
||||
}
|
||||
return AjaxResult.success(randomIssue.getIsFinish());
|
||||
}
|
||||
} else if (question.getCtMode() == 1) {
|
||||
QuestionRandomIssue randomIssue = dao.fetch(QuestionRandomIssue.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()).and("displayDate", "=", currentDate));
|
||||
//时间过了
|
||||
if (DateUtil.parseDate(currentDate).isBefore(DateUtil.parseDate(DateUtil.today()))) {
|
||||
return AjaxResult.success(true);
|
||||
}
|
||||
return AjaxResult.success(randomIssue.getIsFinish());
|
||||
}
|
||||
return AjaxResult.success(false);
|
||||
}
|
||||
|
||||
@RequestMapping("/checkCanAnswerAgain")
|
||||
public AjaxResult checkCanAnswerAgain(@RequestParam String questionId,
|
||||
@RequestParam(required = false, value = "currentDate") String currentDate,
|
||||
@RequestParam(required = false, value = "randomCount") Integer randomCount) {
|
||||
Question question = dao.fetch(Question.class, questionId);
|
||||
if (question.getCanRepeatedAnswer()) {
|
||||
if (question.getCtMode() == 3) {
|
||||
int count = dao.count(QuestionUserScore.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
return AjaxResult.success(count < question.getCanRepeatedAnswerNum());
|
||||
} else if (question.getCtMode() == 2) {
|
||||
//判断是否为一天答题
|
||||
DateTime startTime = DateUtil.date(question.getStartTime());
|
||||
DateTime endTime = DateUtil.date(question.getEndTime());
|
||||
long betweenDay = DateUtil.betweenDay(startTime, endTime, true);
|
||||
if (betweenDay == 0) {
|
||||
return AjaxResult.success(false);
|
||||
} else {
|
||||
int count = dao.count(QuestionUserScore.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()).and("answerDate", "=", DateUtil.today()));
|
||||
return AjaxResult.success(count < question.getCanRepeatedAnswerNum());
|
||||
}
|
||||
} else if (question.getCtMode() == 1) {
|
||||
int count = dao.count(QuestionUserScore.class, Cnd.where("questionId", "=", questionId).and("userId", "=", SecurityUtils.getUserIdStr()).and("answerDate", "=", currentDate));
|
||||
//时间过了
|
||||
if (Lang.isNotEmpty(currentDate) && DateUtil.parseDate(currentDate).isBefore(DateUtil.parseDate(DateUtil.today()))) {
|
||||
return AjaxResult.success(false);
|
||||
}
|
||||
return AjaxResult.success(count < question.getCanRepeatedAnswerNum());
|
||||
}
|
||||
}
|
||||
return AjaxResult.success(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取得分
|
||||
*
|
||||
* @param questionId
|
||||
* @param currentDate
|
||||
* @param randomCount
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/getScore")
|
||||
public AjaxResult getScore(@RequestParam String questionId,
|
||||
@RequestParam(required = false, value = "currentDate") String currentDate,
|
||||
@RequestParam(required = false, value = "randomCount") Integer randomCount) {
|
||||
Question question = dao.fetch(Question.class, questionId);
|
||||
|
||||
if (question.getCtMode() == 1) {
|
||||
QuestionUserScore userScore = dao.fetch(QuestionUserScore.class, Cnd.where("questionId", "=", questionId)
|
||||
.and("userId", "=", SecurityUtils.getUserIdStr())
|
||||
.and("displayDate", "=", currentDate)
|
||||
.desc(question.getCalcScoreMode() == 1 ? "score" : "answerNum"));
|
||||
return AjaxResult.success(Optional.ofNullable(userScore).map(v -> v.getScore()).orElse(0));
|
||||
} else if (question.getCtMode() == 2) {
|
||||
DateTime startTime = DateUtil.date(question.getStartTime());
|
||||
DateTime endTime = DateUtil.date(question.getEndTime());
|
||||
long betweenDay = DateUtil.betweenDay(startTime, endTime, true);
|
||||
|
||||
if (betweenDay == 0) {
|
||||
QuestionUserScore userScore = dao.fetch(QuestionUserScore.class, Cnd.where("questionId", "=", questionId)
|
||||
.and("userId", "=", SecurityUtils.getUserIdStr())
|
||||
// .and("displayDate", "=", currentDate)
|
||||
.and("answerNum", "=", randomCount)
|
||||
.desc("answerNum"));
|
||||
return AjaxResult.success(Optional.ofNullable(userScore).map(v -> v.getScore()).orElse(0));
|
||||
} else {
|
||||
QuestionUserScore userScore = dao.fetch(QuestionUserScore.class, Cnd.where("questionId", "=", questionId)
|
||||
.and("userId", "=", SecurityUtils.getUserIdStr())
|
||||
.and("displayDate", "=", currentDate)
|
||||
.desc(question.getCalcScoreMode() == 1 ? "score" : "answerNum"));
|
||||
return AjaxResult.success(Optional.ofNullable(userScore).map(v -> v.getScore()).orElse(0));
|
||||
}
|
||||
} else if (question.getCtMode() == 3) {
|
||||
QuestionUserScore userScore = dao.fetch(QuestionUserScore.class, Cnd.where("questionId", "=", questionId)
|
||||
.and("userId", "=", SecurityUtils.getUserIdStr())
|
||||
.desc(question.getCalcScoreMode() == 1 ? "score" : "answerNum"));
|
||||
return AjaxResult.success(Optional.ofNullable(userScore).map(v -> v.getScore()).orElse(0));
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户已回答的轮数 针对单天随机
|
||||
*
|
||||
* @param questionId 问卷ID
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/getUserHasAnswerRandomNum")
|
||||
public AjaxResult getUserHasAnswerRandomNum(String questionId) {
|
||||
Question question = dao.fetch(Question.class, questionId);
|
||||
//判断是否为一天答题
|
||||
DateTime startTime = DateUtil.date(question.getStartTime());
|
||||
DateTime endTime = DateUtil.date(question.getEndTime());
|
||||
long betweenDay = DateUtil.betweenDay(startTime, endTime, true);
|
||||
if (question.getCtMode() == 2 && betweenDay == 0) {
|
||||
int count = dao.count(QuestionRandomIssue.class, Cnd.where("questionId", "=", questionId)
|
||||
.and("userId", "=", SecurityUtils.getUserIdStr()));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
return AjaxResult.success(0);
|
||||
}
|
||||
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteEquipment;
|
||||
import com.ruoyi.activity.service.site.SiteReserveService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SiteEquipmentController
|
||||
* @Date 2024/6/17 15:41
|
||||
* @注释 活动场地器材管理
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/siteEquipment")
|
||||
public class SiteEquipmentController {
|
||||
|
||||
@Autowired
|
||||
private SiteReserveService siteReserveService;
|
||||
|
||||
|
||||
@PostMapping("pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "equipmentName",required = false)String equipmentName,
|
||||
@RequestParam(value = "siteId",required = false)String siteId){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ase.*,
|
||||
asi.`name` as siteName
|
||||
FROM
|
||||
activity_site_equipment ase
|
||||
LEFT JOIN activity_site_info asi ON asi.id = ase.siteId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (Strings.isNotBlank(equipmentName)) {
|
||||
cnd.and(Cnd.likeEX("ase.equipmentName", equipmentName));
|
||||
}
|
||||
cnd.andEX("ase.siteId","=",siteId);
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = siteReserveService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 场地器材修改或新增
|
||||
* @param equipment
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("doAddOrModify")
|
||||
public Object doAddOrModify(@RequestBody ActivitySiteEquipment equipment){
|
||||
if (Lang.isEmpty(equipment)){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
//判断编码是否重复
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("equipmentCode","=",equipment.getEquipmentCode());
|
||||
cnd.andEX("id","!=", equipment.getId());
|
||||
int count = siteReserveService.dao().count(ActivitySiteEquipment.class,cnd);
|
||||
if (count>0){
|
||||
return AjaxResult.error("编码重复!");
|
||||
}
|
||||
siteReserveService.dao().insertOrUpdate(equipment);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("doRemove")
|
||||
public AjaxResult doRemove(@RequestParam("id") String id){
|
||||
siteReserveService.dao().clear(ActivitySiteEquipment.class, Cnd.where("id","=",id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 开启或关闭器材的预约
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("siteEquipmentOpenChange")
|
||||
public AjaxResult siteEquipmentOpenChange(@RequestParam("id") String id){
|
||||
siteReserveService.dao().update(ActivitySiteEquipment.class,
|
||||
Chain.makeSpecial("isOpen", "isOpen ^ 1"),Cnd.where("id","=",id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.service.site.SiteInfoService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/1
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/siteManage")
|
||||
public class SiteManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private SiteInfoService siteInfoService;
|
||||
|
||||
@Autowired
|
||||
public SiteManageController(SiteInfoService siteInfoService) {
|
||||
this.siteInfoService = siteInfoService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:site:siteManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "siteType", required = false) String siteType) {
|
||||
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(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
} else {
|
||||
cnd.desc("create_time");
|
||||
}
|
||||
|
||||
Pagination pagination = siteInfoService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doAdd")
|
||||
@RequiresPermissions("activity:site:siteManage")
|
||||
public AjaxResult doAdd(@RequestBody ActivitySiteInfo activitySiteInfo) {
|
||||
dao.insert(activitySiteInfo);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doEdit")
|
||||
@RequiresPermissions("activity:site:siteManage")
|
||||
public AjaxResult doEdit(@RequestBody ActivitySiteInfo activitySiteInfo) {
|
||||
dao.updateIgnoreNull(activitySiteInfo);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("activity:site:siteManage")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
dao.delete(ActivitySiteInfo.class, id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOneSite/{id}")
|
||||
@RequiresPermissions("activity:site:siteManage")
|
||||
public AjaxResult findOneSite(@PathVariable String id) {
|
||||
ActivitySiteInfo siteInfo = dao.fetch(ActivitySiteInfo.class, id);
|
||||
return AjaxResult.success(siteInfo);
|
||||
}
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.service.site.SiteInfoService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.Static;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/2
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/siteRecord")
|
||||
public class SiteRecordController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SiteInfoService siteInfoService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:site:siteRecord")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "siteType", required = false) String siteType,
|
||||
@RequestParam(value = "time", required = false) String time,
|
||||
@RequestParam(value = "siteId", required = false) String siteId,
|
||||
@RequestParam(value = "siteName", required = false) String siteName) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` site_name,
|
||||
ass.`stateName` state_name,
|
||||
ass.`stateColor` state_color,
|
||||
ass.stateAuditType
|
||||
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.userId = asr.reserve_person_id
|
||||
$condition
|
||||
""");
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("sysadmin,A06")) {
|
||||
cnd.and("asr.reserve_person_unionid", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (Strings.isNotBlank(time)) {
|
||||
cnd.and("left(asr.reserve_start_time, 7)", "=", time);
|
||||
}
|
||||
if (Strings.isNotBlank(siteId)) {
|
||||
cnd.and("site_id", "=", siteId);
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (Strings.isNotBlank(siteType)) {
|
||||
cnd.and("typeId", "=", siteType);
|
||||
}
|
||||
cnd.andEX("asi.`name`", "=", siteName);
|
||||
cnd.groupBy("asr.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = siteInfoService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("getSites")
|
||||
@RequiresPermissions("activity:site:siteRecord")
|
||||
public AjaxResult getSites(){
|
||||
return AjaxResult.success(siteInfoService.dao().query(ActivitySiteInfo.class,Cnd.NEW()));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("getCalendarData")
|
||||
@RequiresPermissions("activity:site:siteRecord")
|
||||
public AjaxResult getCalendarData(@RequestParam(value = "siteId",required = false) String siteId,
|
||||
@RequestParam("startTimeTs") Date startTimeTs,
|
||||
@RequestParam("endTimeTs") Date endTimeTs){
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
asr.*,
|
||||
asi.name as site_name,
|
||||
asi.name as title,
|
||||
ass.`stateName` state_name,
|
||||
IF(ass.stateAuditType=0,true,false) as is_auditing,
|
||||
reserve_start_time as start,
|
||||
reserve_end_time as end
|
||||
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
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
// cnd.and("asr.site_id", "=", siteId);
|
||||
cnd.and("reserve_start_time", ">=", startTimeTs);
|
||||
cnd.and("reserve_end_time", "<=", endTimeTs);
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(siteInfoService.list(sql));
|
||||
}
|
||||
}
|
||||
+297
@@ -0,0 +1,297 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.activity.api.domain.AuditState;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteEquipment;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.site.SiteInfoService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SiteReserveApplyController
|
||||
* @Date 2024/6/17 11:37
|
||||
* @注释
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/siteApply")
|
||||
public class SiteReserveApplyController {
|
||||
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(SiteReserveApplyController.class);
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SiteInfoService siteInfoService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
|
||||
/**
|
||||
* 预约申请
|
||||
* @param activitySiteReserve
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("insert")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult insert(@RequestBody ActivitySiteReserve activitySiteReserve){
|
||||
try {
|
||||
activitySiteReserve.setReserve_state(6098);
|
||||
dao.insert(activitySiteReserve);
|
||||
// //查询分工会审核人
|
||||
// List<FeignCnd> unionAdminCndList = List.of(
|
||||
// new FeignCnd("role_id","=", Roles.FGH_ADMIN),
|
||||
// new FeignCnd("union_id","=",SecurityUtils.getUnionId())
|
||||
// );
|
||||
// List<SysUserRole> unionAdminList = remoteUserRoleService.getUserRole(unionAdminCndList).getData();
|
||||
//
|
||||
// Sql sql = Sqls.create("select loginName,userName from `user` $condition");
|
||||
// Cnd cnd = Cnd.NEW();
|
||||
// cnd.and("userId","in",unionAdminList.stream().map(SysUserRole::getUserId));
|
||||
// sql.setCondition(cnd);
|
||||
// //分工会的审核人
|
||||
// List<NutMap> processList = siteInfoService.listMap(sql);
|
||||
// ActivitySiteInfo siteInfo = siteInfoService.fetch(activitySiteReserve.getSite_id());
|
||||
return AjaxResult.success();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 返回申请信息
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("applyUserInfo")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult applyUserInfo(){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId as reserve_person_id,
|
||||
userName as reserve_person_username,
|
||||
loginName as reserve_person_loginname,
|
||||
sex as reserve_person_sex,
|
||||
mobile as reserve_person_phone,
|
||||
deptId as reserve_person_unit,
|
||||
deptName as reserve_person_unitname,
|
||||
unionName as reserve_person_unionname,
|
||||
unionId as reserve_person_unionid
|
||||
FROM
|
||||
`user`
|
||||
WHERE userId = @userId
|
||||
""");
|
||||
sql.setParam("userId", SecurityUtils.getUserId());
|
||||
return AjaxResult.success(siteInfoService.fetch(sql));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 撤销预约
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("revoke")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult revoke(@RequestParam("id") String id) {
|
||||
dao.clear(ActivitySiteReserve.class,Cnd.where("id","=",id));
|
||||
// //查询分工会审核人
|
||||
// List<FeignCnd> unionAdminCndList = List.of(
|
||||
// new FeignCnd("role_id","=", Roles.FGH_ADMIN),
|
||||
// new FeignCnd("union_id","=",SecurityUtils.getUnionId())
|
||||
// );
|
||||
// List<SysUserRole> unionAdminList = remoteUserRoleService.getUserRole(unionAdminCndList).getData();
|
||||
//
|
||||
// Sql sql = Sqls.create("select loginName,userName from `user` $condition");
|
||||
// Cnd cnd = Cnd.NEW();
|
||||
// cnd.and("userId","in",unionAdminList.stream().map(SysUserRole::getUserId));
|
||||
// sql.setCondition(cnd);
|
||||
// //分工会的审核人
|
||||
// List<NutMap> processList = siteInfoService.listMap(sql);
|
||||
// ActivitySiteInfo siteInfo = siteInfoService.fetch(activitySiteReserve.getSite_id());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("doClean")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult doClean(@RequestParam("id") String id) {
|
||||
dao.clear(ActivitySiteReserve.class, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有场地
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("getAllSite")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult getAllSite() {
|
||||
return AjaxResult.success(siteInfoService.query(Cnd.where("state", "=", 1)));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据场地ID获取可预约的设备
|
||||
* @param siteId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("getSiteEquipmentList")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult getSiteEquipmentList(@RequestParam("siteId") String siteId) {
|
||||
List<ActivitySiteEquipment> query = siteInfoService.dao().query(ActivitySiteEquipment.class, Cnd.where("siteId", "=", siteId).and("isOpen", "=", 1));
|
||||
return AjaxResult.success(query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* pc获取场地预约情况
|
||||
* @param siteId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("siteChange")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult siteChange(@RequestParam("siteId") String siteId){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` AS siteName
|
||||
FROM
|
||||
`activity_site_reserve` asr
|
||||
LEFT JOIN `activity_site_info` asi ON asi.id = asr.site_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("asr.site_id", "=", siteId);
|
||||
// cnd.and("asr.reserve_start_time", "<=", DateUtil.nextWeek());
|
||||
// cnd.and("asr.reserve_end_time", ">", DateUtil.now());
|
||||
cnd.and("asr.reserve_start_time", ">", DateUtil.now());
|
||||
List<AuditState> stateList = dao.query(AuditState.class, Cnd.where("module", "=", "activitySite").and("stateName", "like", "%拒绝"));
|
||||
if (Lang.isNotEmpty(stateList)) {
|
||||
List<Integer> stateIds = stateList.stream().map(AuditState::getStateId).collect(Collectors.toList());
|
||||
cnd.and("asr.reserve_state", "not in", stateIds);
|
||||
}
|
||||
cnd.asc("asr.reserve_start_time");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(siteInfoService.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* mobile展示场地预约情况
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("allSiteUsage")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult allSiteUsage(){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` AS siteName
|
||||
FROM
|
||||
`activity_site_reserve` asr
|
||||
LEFT JOIN `activity_site_info` asi ON asi.id = asr.site_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
// cnd.and("asr.reserve_start_time", "<=", DateUtil.nextWeek());
|
||||
// cnd.and("asr.reserve_end_time", ">", DateUtil.now());
|
||||
cnd.and("asr.reserve_start_time", ">", DateUtil.now());
|
||||
cnd.asc("asr.reserve_start_time");
|
||||
sql.setCondition(cnd);
|
||||
List<Record> list = siteInfoService.list(sql);
|
||||
return AjaxResult.success(list.stream().collect(Collectors.groupingBy(v -> v.getString("siteName"))));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验申请时间是否已经被人预约
|
||||
* @param time
|
||||
* @param endTime
|
||||
* @param siteId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("checkApplyTime")
|
||||
@RequiresPermissions("activity:site:siteApply")
|
||||
public AjaxResult checkApplyTime(@RequestParam("time")String time,
|
||||
@RequestParam(value = "endTime",required = false) String endTime,
|
||||
@RequestParam("siteId") String siteId){
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("DATE(reserve_start_time)", "=", time.substring(0, 10));
|
||||
cnd.and("site_id","=",siteId);
|
||||
List<AuditState> stateList = dao.query(AuditState.class, Cnd.where("module", "=", "activitySite").and("stateName", "like", "%拒绝"));
|
||||
if (Lang.isNotEmpty(stateList)) {
|
||||
List<Integer> stateIds = stateList.stream().map(AuditState::getStateId).collect(Collectors.toList());
|
||||
cnd.and("reserve_state", "not in", stateIds);
|
||||
}
|
||||
|
||||
DateTime startTime = DateUtil.parseDateTime(time);//1
|
||||
DateTime closeTime = DateUtil.parseDateTime(endTime);//5
|
||||
List<ActivitySiteReserve> reserveList = siteInfoService.dao().query(ActivitySiteReserve.class,cnd);
|
||||
|
||||
boolean isJJ = false;
|
||||
|
||||
for (ActivitySiteReserve reserve : reserveList) {
|
||||
Date reserve_start_time = reserve.getReserve_start_time();
|
||||
Date reserve_end_time = reserve.getReserve_end_time();
|
||||
|
||||
if (startTime.isAfterOrEquals(reserve_start_time) && startTime.isBeforeOrEquals(reserve_end_time)) {
|
||||
isJJ = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (closeTime.isAfterOrEquals(reserve_start_time) && closeTime.isBeforeOrEquals(reserve_end_time)) {
|
||||
isJJ = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (startTime.isBeforeOrEquals(reserve_start_time) && closeTime.isAfterOrEquals(reserve_end_time)) {
|
||||
isJJ = true;
|
||||
break;
|
||||
}
|
||||
//
|
||||
}
|
||||
|
||||
System.out.println(isJJ);
|
||||
|
||||
if (isJJ) {
|
||||
return AjaxResult.error("该时间段已被预约,请重新填写预约开始时间");
|
||||
} else {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
}
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteEquipment;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.common.ActivityCommonService;
|
||||
import com.ruoyi.activity.service.site.SiteReserveService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
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.SqlExpressionGroup;
|
||||
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.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/1
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/siteReserve")
|
||||
public class SiteReserveController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ActivityCommonService activityCommonService;
|
||||
|
||||
private SiteReserveService siteReserveService;
|
||||
|
||||
@Autowired
|
||||
public SiteReserveController(SiteReserveService siteReserveService) {
|
||||
this.siteReserveService = siteReserveService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:site:siteReserve")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "siteType", required = false) String siteType,
|
||||
@RequestParam(value = "time", required = false) String time,
|
||||
@RequestParam(value = "siteId", required = false) String siteId,
|
||||
@RequestParam(value = "siteName", required = false) String siteName) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` site_name,
|
||||
ass.`stateName` state_name,
|
||||
ass.`stateColor` state_color,
|
||||
ass.stateAuditType
|
||||
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.userId = asr.reserve_person_id
|
||||
$condition
|
||||
""");
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
cnd.and("reserve_person_id", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(time)) {
|
||||
cnd.and("left(asr.reserve_day, 7)", "=", time);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(siteId)) {
|
||||
cnd.and("site_id", "=", siteId);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(siteType)) {
|
||||
cnd.and("asi.typeId", "=", siteType);
|
||||
}
|
||||
|
||||
cnd.andEX("asi.`name`", "=", siteName);
|
||||
cnd.groupBy("asr.id");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = siteReserveService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("checkReserve")
|
||||
@RequiresPermissions("activity:site:siteReserve")
|
||||
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);
|
||||
}
|
||||
|
||||
@GetMapping("findOne")
|
||||
@RequiresPermissions("activity:site:siteReserve")
|
||||
public AjaxResult findOne(@RequestParam("id") String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` site_name,
|
||||
ass.`stateName` state_name,
|
||||
ass.stateAuditType,
|
||||
su.userName as username,
|
||||
sm.userName smusername,
|
||||
su.sex,
|
||||
su.unionName as unionname,
|
||||
su.loginName as loginname
|
||||
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` su ON su.userId = asr.reserve_person_id
|
||||
LEFT JOIN `user` sm ON sm.userId = asr.site_manager_id
|
||||
WHERE
|
||||
asr.id = @id
|
||||
group by asr.id
|
||||
""").setParam("id", id);
|
||||
NutMap record = siteReserveService.fetch(sql);
|
||||
//找该场地是否预约了器材
|
||||
if (Strings.isNotBlank(record.getString("equipment_ids"))) {
|
||||
String equipmentIds = record.getString("equipment_ids");
|
||||
List<String> equipment = Json.fromJsonAsList(String.class, equipmentIds);
|
||||
List<ActivitySiteEquipment> equipmentList = siteReserveService.dao().query(ActivitySiteEquipment.class, Cnd.where("id", "in", equipment));
|
||||
//获取器材名称
|
||||
List<String> stringList = equipmentList.stream().map(ActivitySiteEquipment::getEquipmentName).collect(Collectors.toList());
|
||||
//转字符串传递给前端
|
||||
String equipmentNames = String.join(",", stringList);
|
||||
record.put("equipmentNames",equipmentNames);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(record.getString("reserve_person_union_process"))) {
|
||||
Audit audit = siteReserveService.dao().fetch(Audit.class, Cnd.where("id", "=", record.getString("reserve_person_union_process")));
|
||||
record.put("unionProcess", audit);
|
||||
}
|
||||
if (Strings.isNotBlank(record.getString("reserve_person_school_process"))) {
|
||||
Audit audit = siteReserveService.dao().fetch(Audit.class, Cnd.where("id", "=", record.getString("reserve_person_school_process")));
|
||||
record.put("schoolProcess", audit);
|
||||
}
|
||||
|
||||
return AjaxResult.success(record);
|
||||
}
|
||||
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.common.ActivityCommonService;
|
||||
import com.ruoyi.activity.service.site.SiteInfoService;
|
||||
import com.ruoyi.activity.service.site.SiteReserveService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.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.aop.Aop;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/2
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/siteReview")
|
||||
public class SiteReviewController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SiteReserveService siteReserveService;
|
||||
|
||||
@Autowired
|
||||
private SiteInfoService siteInfoService;
|
||||
|
||||
@Autowired
|
||||
private ActivityCommonService activityCommonService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:site:siteReview")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "time", required = false) String time,
|
||||
@RequestParam(value = "siteType", required = false) String siteType,
|
||||
@RequestParam(value = "isAudit", required = false) String isAudit,
|
||||
@RequestParam(value = "siteId", required = false) String siteId,
|
||||
@RequestParam(value = "siteName", required = false) String siteName) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` site_name,
|
||||
ass.`stateName` state_name,
|
||||
ass.`stateColor` state_color,
|
||||
ass.stateAuditType
|
||||
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.userId = asr.reserve_person_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("asr.reserve_state", "true".equals(isAudit) ? ">" : "false".equals(isAudit) ? "=" : ">=", 6118);
|
||||
|
||||
if (Strings.isNotBlank(time)) {
|
||||
cnd.and("left(asr.reserve_start_time, 7)", "=", time);
|
||||
}
|
||||
if (Strings.isNotBlank(siteId)) {
|
||||
cnd.and("site_id", "=", siteId);
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (Strings.isNotBlank(siteType)) {
|
||||
cnd.and("typeId", "=", siteType);
|
||||
}
|
||||
cnd.andEX("asi.`name`", "=", siteName);
|
||||
cnd.asc("asr.reserve_start_time");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = siteReserveService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("doProcess")
|
||||
@RequiresPermissions("activity:site:siteReview")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public AjaxResult doProcess(@RequestBody Audit audit,
|
||||
@RequestParam(value = "id") String id) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setAuditTime(new Date());
|
||||
siteReserveService.dao().insert(audit);
|
||||
Chain chain = Chain.make("reserve_person_school_process", audit.getId());
|
||||
chain.add("reserve_state", audit.getAuditPass() ? 6138 : 6128);
|
||||
siteReserveService.dao().update(ActivitySiteReserve.class, chain, Cnd.where("id", "=", id));
|
||||
|
||||
// ActivitySiteReserve siteReserve = siteReserveService.dao().fetch(ActivitySiteReserve.class, Cnd.where("id", "=", id));
|
||||
// ActivitySiteInfo siteInfo = siteReserveService.dao().fetch(ActivitySiteInfo.class, Cnd.where("id", "=", siteReserve.getSite_id()));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.site.SiteReserveService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.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 org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 场地预约分工会审核
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("site/siteUnionProcess")
|
||||
public class SiteUnionProcessController {
|
||||
|
||||
@Autowired
|
||||
private SiteReserveService siteReserveService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:site:siteUnionProcess")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "siteType", required = false) String siteType,
|
||||
@RequestParam(value = "time", required = false) String time,
|
||||
@RequestParam(value = "isAudit", required = false) String isAudit,
|
||||
@RequestParam(value = "siteId", required = false) String siteId,
|
||||
@RequestParam(value = "siteName", required = false) String siteName) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
asi.`name` site_name,
|
||||
ass.`stateName` state_name,
|
||||
ass.`stateColor` state_color,
|
||||
ass.stateAuditType
|
||||
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.userId = asr.reserve_person_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("asr.reserve_state", "true".equals(isAudit) ? ">" : "false".equals(isAudit) ? "=" : ">=", 6098);
|
||||
if (!AuthUtil.hasAnyRoles("sysadmin,A06")) {
|
||||
cnd.and("reserve_person_unionid", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (Strings.isNotBlank(time)) {
|
||||
cnd.and("left(asr.reserve_start_time, 7)", "=", time);
|
||||
}
|
||||
if (Strings.isNotBlank(siteId)) {
|
||||
cnd.and("site_id", "=", siteId);
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (Strings.isNotBlank(siteType)) {
|
||||
cnd.and("typeId", "=", siteType);
|
||||
}
|
||||
cnd.andEX("asi.`name`", "=", siteName);
|
||||
cnd.asc("asr.reserve_start_time");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = siteReserveService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 党员之家Id
|
||||
*/
|
||||
public static final String DY_HOME_ID = "a6486481018b479ab137bac53936f15e";
|
||||
|
||||
|
||||
@PostMapping("doProcess")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public AjaxResult doProcess(@RequestParam("id") String id, @RequestBody Audit audit) {
|
||||
try {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setAuditTime(new Date());
|
||||
siteReserveService.dao().insert(audit);
|
||||
|
||||
Chain chain = Chain.make("reserve_person_union_process", audit.getId());
|
||||
chain.add("reserve_state", audit.getAuditPass() ? 6118 : 6108);
|
||||
siteReserveService.dao().update(ActivitySiteReserve.class, chain, Cnd.where("id", "=", id));
|
||||
|
||||
// ActivitySiteReserve siteReserve = siteReserveService.dao().fetch(ActivitySiteReserve.class, Cnd.where("id", "=", id));
|
||||
// ActivitySiteInfo siteInfo = siteReserveService.dao().fetch(ActivitySiteInfo.class, Cnd.where("id", "=", siteReserve.getSite_id()));
|
||||
// if (audit.getAuditPass()) {
|
||||
//
|
||||
// } else {
|
||||
// }
|
||||
return AjaxResult.success();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package com.ruoyi.activity.controller.site;
|
||||
|
||||
import com.ruoyi.activity.api.domain.AuditState;
|
||||
import com.ruoyi.activity.api.domain.site.ActivityType;
|
||||
import com.ruoyi.activity.service.site.TypeManageService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/31
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/type")
|
||||
public class TypeManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TypeManageService typeManageService;
|
||||
|
||||
@Autowired
|
||||
public TypeManageController(TypeManageService typeManageService) {
|
||||
this.typeManageService = typeManageService;
|
||||
}
|
||||
|
||||
@GetMapping("findAll")
|
||||
public AjaxResult findAll() {
|
||||
List<ActivityType> typeList = dao.query(ActivityType.class, Cnd.NEW().asc("sortNum"));
|
||||
dao.fetchLinks(typeList, "^auditStateList$");
|
||||
for (ActivityType activityType : typeList) {
|
||||
List<AuditState> auditStateList = activityType.getAuditStateList();
|
||||
dao.fetchLinks(auditStateList, "^auditStateUserList$");
|
||||
}
|
||||
return AjaxResult.success(typeList);
|
||||
}
|
||||
|
||||
@PostMapping("doHandle")
|
||||
@RequiresPermissions("activity:site:typeManage")
|
||||
public AjaxResult doHandle(@RequestBody ActivityType activityType) {
|
||||
if (null == activityType.getId()) {
|
||||
int count = dao.count(AuditState.class, Cnd.where("module", "=", activityType.getModuleName()));
|
||||
if (count > 0) {
|
||||
return AjaxResult.error("模块名称已存在,换一个试试!");
|
||||
}
|
||||
typeManageService.add(activityType);
|
||||
} else {
|
||||
typeManageService.edit(activityType);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("delete/{id}")
|
||||
@RequiresPermissions("activity:site:typeManage")
|
||||
public AjaxResult delete(@PathVariable Integer id) {
|
||||
if (id == 1) {
|
||||
return AjaxResult.error("此记录不可删除!");
|
||||
}
|
||||
dao.clear(ActivityType.class, Cnd.where("id", "=", id));
|
||||
return null;
|
||||
}
|
||||
|
||||
@GetMapping("findMaxStateId")
|
||||
@RequiresPermissions("activity:site:typeManage")
|
||||
public AjaxResult findMaxStateId() {
|
||||
return AjaxResult.success(typeManageService.findMaxStateId());
|
||||
}
|
||||
|
||||
@RequestMapping("checkStateId")
|
||||
@RequiresPermissions("activity:site:typeManage")
|
||||
public AjaxResult checkStateId(@RequestParam("stateId") Integer stateId, @RequestParam("stateIndex") Integer stateIndex) {
|
||||
if (stateId == null) {
|
||||
return AjaxResult.error("参数错误!");
|
||||
}
|
||||
int count = dao.count(AuditState.class, Cnd.where("stateId", "=", stateId));
|
||||
if (count == 0) {
|
||||
return AjaxResult.success(stateId);
|
||||
} else {
|
||||
return AjaxResult.success(typeManageService.findMaxStateId() + 10 * stateIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
+274
@@ -0,0 +1,274 @@
|
||||
package com.ruoyi.activity.controller.site.mobile;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.activity.api.constant.AuditTypeEnum;
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.common.ActivityCommonService;
|
||||
import com.ruoyi.activity.service.site.SiteInfoService;
|
||||
import com.ruoyi.activity.service.site.SiteReserveService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
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.SqlExpressionGroup;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/26
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/mobile/audit")
|
||||
public class SiteAuditMobileController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SiteInfoService siteInfoService;
|
||||
|
||||
@Autowired
|
||||
private ActivityCommonService activityCommonService;
|
||||
|
||||
@Autowired
|
||||
private SiteReserveService siteReserveService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "typeId", required = false) String typeId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
type.typeName,
|
||||
type.auditType,
|
||||
type.moduleName,
|
||||
(select deptName from `user` where userName = info.contact_person limit 1) as unitname,
|
||||
(select count(DISTINCT sqid) from activity_site_reserve where site_id=info.id and JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', @userid))) as audit
|
||||
FROM
|
||||
activity_site_info info
|
||||
LEFT JOIN activity_type type ON type.id = info.typeId
|
||||
LEFT JOIN audit_state state ON state.module = type.moduleName
|
||||
$condition
|
||||
""").setParam("userid", SecurityUtils.getUserId());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
cnd.andEX("state.stateId", "in", activityCommonService.findStateIdForMeCanAudit());
|
||||
cnd.and("info.state", "=", true);
|
||||
if (StringUtils.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("info.name", pageForm.getSearchKeyword());
|
||||
seg.orLike("info.address", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
if (StrUtil.isNotBlank(typeId)) {
|
||||
cnd.andEX("info.typeId", "=", typeId);
|
||||
}
|
||||
cnd.groupBy("info.id");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = siteInfoService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
|
||||
List<Object> list = pagination.getList();
|
||||
list.forEach(item -> {
|
||||
Record map = (Record) item;
|
||||
List<NutMap> canAuditUserByLoginUser = this.getCanAuditUserByLoginUser(map.getString("id"), map.getInt("auditType"));
|
||||
map.put("no_audit", canAuditUserByLoginUser.size());
|
||||
});
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("getLeaveUser")
|
||||
@RequiresLogin
|
||||
public AjaxResult getLeaveUser(String siteId, Integer auditType, String type) {
|
||||
|
||||
List<NutMap> list = "canAudit".equals(type) ? this.getCanAuditUserByLoginUser(siteId, auditType) : this.getHasAuditUserByLoginUser(siteId);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@PostMapping("audit")
|
||||
@RequiresLogin
|
||||
public AjaxResult audit(@RequestBody Audit audit,
|
||||
@RequestParam(name = "ids[]", required = false) String[] ids,
|
||||
@RequestParam(name = "isPass", required = false) Boolean isPass) {
|
||||
dao.insert(audit);
|
||||
// for (String id : ids) {
|
||||
//
|
||||
// ActivitySiteReserve fetch = siteReserveService.fetch(id);
|
||||
//
|
||||
// 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> auditIdList = siteReserve.getAuditList();
|
||||
// if (Lang.isEmpty(auditIdList)) {
|
||||
// auditIdList = new ArrayList<>();
|
||||
// }
|
||||
// auditIdList.add(NutMap.NEW().addv("stateCode", stateCode)
|
||||
// .addv("auditId", audit.getId())
|
||||
// .addv("auditUser", SecurityUtils.getUserId())
|
||||
// .addv("auditState", isPass)
|
||||
// .addv("auditOption", audit.getAuditOpinion()));
|
||||
// siteReserve.setAuditList(auditIdList);
|
||||
//
|
||||
// days += siteReserve.getReserve_day() + ",";
|
||||
// dao.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());
|
||||
//
|
||||
// DynamicDataSourceContextHolder.push("system");
|
||||
// SysUser user = dao.fetch(SysUser.class, fetch.getReserve_person_id());
|
||||
// DynamicDataSourceContextHolder.clear();
|
||||
//
|
||||
// ArrayList<Map> list2 = new ArrayList<>();
|
||||
// list2.add(Map.of("type", "User", "userId", user.getUserName(), "name", user.getNickName()));
|
||||
// //msgApi.sendMsg(content, list2, "场地预约", "WeChat", MsgApi.sendMode.normal.name());
|
||||
// } else if (!afterStateCode.equals(successCode)) {
|
||||
// //发送微信提醒审核人
|
||||
// //查询状态码对应的审核人
|
||||
// Sql sql = Sqls.create("""
|
||||
// select asu.userId,u.loginName,u.userName from audit_state_user asu
|
||||
// left join `user` u on u.userId = 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
|
||||
// cnd.and("u.deptId", "=", SecurityUtils.getDeptId());
|
||||
// }
|
||||
// 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());
|
||||
// ArrayList<Map> list2 = new ArrayList<>();
|
||||
// list2.add(Map.of("type", "User", "userId", item.getString("loginname"), "name", item.getString("username")));
|
||||
// //msgApi.sendMsg(content, list2, "场地预约", "WeChat", MsgApi.sendMode.normal.name());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/*根据当前登录用户获取可以审核的用户*/
|
||||
public List<NutMap> getCanAuditUserByLoginUser(String siteId, Integer auditType) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ar.*,
|
||||
u.userName as username,
|
||||
u.loginName as loginname,
|
||||
u.sex,
|
||||
u.deptName as unitname,
|
||||
state.stateName,
|
||||
count(sqid) days,
|
||||
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
|
||||
FROM
|
||||
activity_site_reserve ar
|
||||
LEFT JOIN activity_site_info asi ON asi.id = ar.site_id
|
||||
left join `user` u on ar.reserve_person_id=u.userId
|
||||
LEFT JOIN audit_state state on state.stateId = ar.reserve_state
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("ar.site_id", "=", siteId);
|
||||
cnd.and("u.userName", "is not", null);
|
||||
cnd.and("u.userName", "!=", "");
|
||||
cnd.and("ar.reserve_state", "in", Sqls.createf("SELECT stateId FROM audit_state_user WHERE userid = %s", SecurityUtils.getUserId()));
|
||||
cnd.and("state.stateAuditType", "in", Lang.list(AuditTypeEnum.AUDIT.getValue()));
|
||||
if (!AuthUtil.hasAnyRoles("admin, A06")) {
|
||||
if (auditType == 1) {
|
||||
//审核本工会
|
||||
cnd.and("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
} else if (auditType == 2) {
|
||||
//审核本单位
|
||||
cnd.and("u.deptId", "=", SecurityUtils.getDeptId());
|
||||
}
|
||||
}
|
||||
|
||||
cnd.groupBy("sqid");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return siteInfoService.listMap(sql);
|
||||
}
|
||||
|
||||
/*根据当前登录用户获取已经审核的用户*/
|
||||
public List<NutMap> getHasAuditUserByLoginUser(String siteId) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
ar.*,
|
||||
u.userName as username,
|
||||
u.loginName as loginname,
|
||||
u.deptName as unitname,
|
||||
u.sex,
|
||||
state.stateName,
|
||||
count(sqid) days,
|
||||
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
|
||||
from
|
||||
activity_site_reserve ar
|
||||
left join
|
||||
`user` u on ar.reserve_person_id=u.userId
|
||||
LEFT JOIN
|
||||
audit_state state on state.stateId = ar.reserve_state
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("site_id", "=", siteId);
|
||||
cnd.and(new Static("JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', " + SecurityUtils.getUserId() + "))"));
|
||||
|
||||
cnd.groupBy("sqid");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = siteInfoService.listMap(sql);
|
||||
list.forEach(item -> {
|
||||
List<NutMap> listMap = Json.fromJsonAsList(NutMap.class, item.getString("auditList"));
|
||||
Boolean auditState = false;
|
||||
for (NutMap map : listMap) {
|
||||
if (map.getLong("auditUser") == (SecurityUtils.getUserId())) {
|
||||
auditState = map.get("auditState") == null ? null : map.getBoolean("auditState");
|
||||
}
|
||||
}
|
||||
item.put("auditState", auditState);
|
||||
});
|
||||
return list;
|
||||
}
|
||||
}
|
||||
+289
@@ -0,0 +1,289 @@
|
||||
package com.ruoyi.activity.controller.site.mobile;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteInfo;
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.common.ActivityCommonService;
|
||||
import com.ruoyi.activity.service.site.SiteInfoService;
|
||||
import com.ruoyi.activity.service.site.SiteReserveService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
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.SqlExpressionGroup;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.random.R;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/26
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/site/mobile/info")
|
||||
public class SiteInfoMobileController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SiteInfoService siteInfoService;
|
||||
|
||||
@Autowired
|
||||
private ActivityCommonService activityCommonService;
|
||||
|
||||
@Autowired
|
||||
private SiteReserveService siteReserveService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "typeId", required = false) String typeId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
type.typeName,
|
||||
type.moduleName,
|
||||
(select deptName from `user` where userName = info.contact_person limit 1) as unitname,
|
||||
( SELECT count( 1 ) FROM activity_site_reserve WHERE site_id = info.id AND reserve_state = (select stateId from audit_state where module = (select moduleName from activity_type where id = info.typeId) and stateAuditType = 3)) count
|
||||
FROM
|
||||
activity_site_info info
|
||||
LEFT JOIN activity_type type ON type.id = info.typeId
|
||||
LEFT JOIN audit_state state ON state.module = type.moduleName
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
cnd.and("info.state", "=", true);
|
||||
if (StringUtils.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("info.name", pageForm.getSearchKeyword());
|
||||
seg.orLike("info.address", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
if (StrUtil.isNotBlank(typeId)) {
|
||||
cnd.andEX("info.typeId", "=", typeId);
|
||||
}
|
||||
cnd.groupBy("info.id");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = siteInfoService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<Object> list = pagination.getList();
|
||||
list.forEach(item -> {
|
||||
Record map = (Record) item;
|
||||
String openHours = map.getString("open_hours");
|
||||
List<NutMap> nutMaps = Json.fromJsonAsList(NutMap.class, openHours);
|
||||
String start_time = nutMaps.get(0).getString("start_time");
|
||||
String end_time = nutMaps.get(nutMaps.size() - 1).getString("end_time");
|
||||
map.put("open_time", start_time + " - " + end_time);
|
||||
});
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("myReserve")
|
||||
@RequiresLogin
|
||||
public AjaxResult myReserve(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "timeSwitch", required = false) Boolean timeSwitch,
|
||||
@RequestParam(name = "time", required = false) String time,
|
||||
@RequestParam(name = "typeId", required = false) String typeId) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
ar.*,
|
||||
`as`.stateName ,
|
||||
info.name,
|
||||
info.address,
|
||||
`as`.stateAuditType,
|
||||
count(sqid) days,
|
||||
GROUP_CONCAT(reserve_day order by reserve_day asc) concat_day
|
||||
from
|
||||
activity_site_reserve ar
|
||||
left join activity_site_info info on info.id = ar.site_id
|
||||
left join audit_state `as` on ar.reserve_state=`as`.stateId
|
||||
$condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StringUtils.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("info.name", pageForm.getSearchKeyword());
|
||||
seg.orLike("info.address", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
if (StrUtil.isNotBlank(typeId)) {
|
||||
cnd.andEX("info.typeId", "=", typeId);
|
||||
}
|
||||
if (!timeSwitch && StrUtil.isNotBlank(time)) {
|
||||
cnd.and("left(ar.reserve_day, 7)", "=", time);
|
||||
}
|
||||
cnd.and("reserve_person_id", "=", SecurityUtils.getUserId());
|
||||
|
||||
cnd.groupBy("sqid");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = siteInfoService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("getDetail")
|
||||
@RequiresLogin
|
||||
public AjaxResult getDetail(String id) {
|
||||
return AjaxResult.success(siteInfoService.fetch(id));
|
||||
}
|
||||
|
||||
@PostMapping("rollback")
|
||||
@RequiresLogin
|
||||
public AjaxResult rollback(String id) {
|
||||
//根据活动id查询第一个审核节点
|
||||
ActivitySiteReserve fetch = dao.fetch(ActivitySiteReserve.class, id);
|
||||
String moduleName = activityCommonService.findModuleNameByActivityId(fetch.getSite_id());
|
||||
Integer stateCode = activityCommonService.findStartStateCodeByModuleName(moduleName);
|
||||
|
||||
if (fetch.getReserve_state() > stateCode) {
|
||||
return AjaxResult.warn("当前状态不能进行撤销操作");
|
||||
}
|
||||
ActivitySiteReserve siteReserve = dao.fetch(ActivitySiteReserve.class, id);
|
||||
// dao.clear(ActivitySiteReserve.class, Cnd.NEW().and("sqid", "=", siteReserve.getSqid()));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("backOption")
|
||||
@RequiresLogin
|
||||
public AjaxResult backOption(String id, String option) {
|
||||
ActivitySiteReserve fetch = dao.fetch(ActivitySiteReserve.class, id);
|
||||
// siteReserveService.update(Chain.make("back_option", option), Cnd.NEW().and("sqid", "=", fetch.getSqid()));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getReserve")
|
||||
@RequiresLogin
|
||||
public AjaxResult getReserve(String siteId, String day) {
|
||||
//获取场地的开放时间
|
||||
ActivitySiteInfo fetch = siteInfoService.fetch(siteId);
|
||||
List<NutMap> hours = fetch.getOpen_hours();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
select * from activity_site_reserve $condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("site_id", "=", siteId);
|
||||
if (StrUtil.isNotBlank(day)) {
|
||||
cnd.and("reserve_day", "=", day);
|
||||
}
|
||||
cnd.and(new Static("reserve_state in (select stateId from audit_state where module=(select moduleName from activity_type where id = '" + siteId + "') and stateAuditType=3)"));
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<Record> list = siteReserveService.list(sql);
|
||||
List<String> times = list.stream().map(o -> o.getString("start_time") + "-" + o.getString("end_time")).collect(Collectors.toList());
|
||||
|
||||
hours.forEach(item -> {
|
||||
String t = item.getString("start_time") + "-" + item.getString("end_time");
|
||||
item.put("hasReserve", times.contains(t));
|
||||
});
|
||||
|
||||
return AjaxResult.success(hours);
|
||||
}
|
||||
|
||||
@PostMapping("reserveDo")
|
||||
@RequiresLogin
|
||||
public AjaxResult reserveDo(@RequestBody List<NutMap> times,
|
||||
@RequestParam(name = "siteId", required = false) String siteId,
|
||||
@RequestParam(name = "message", required = false) String message,
|
||||
@RequestParam(name = "joinUser", required = false) String joinUser) {
|
||||
String moduleName = activityCommonService.findModuleNameByActivityId(siteId);
|
||||
Integer stateCode = activityCommonService.findStartStateCodeByModuleName(moduleName);
|
||||
|
||||
if (stateCode == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<ActivitySiteReserve> li = new ArrayList<>();
|
||||
|
||||
String str = "";
|
||||
String r = R.UU32();
|
||||
// for (NutMap item : times) {
|
||||
// ActivitySiteReserve as = new ActivitySiteReserve();
|
||||
// as.setSqid(r);
|
||||
// as.setSite_id(siteId);
|
||||
// as.setReserve_person(SecurityUtils.getNickName());
|
||||
// as.setReserve_person_id(SecurityUtils.getUserId());
|
||||
// as.setReserve_person_unit(SecurityUtils.getDept().getDeptName());
|
||||
// as.setReserve_person_phone(SecurityUtils.getLoginUser().getSysUser().getMobile());
|
||||
// as.setReserve_cause(message);
|
||||
// as.setJoinUser(joinUser);
|
||||
// as.setReserve_state(stateCode);
|
||||
// as.setReserve_day(item.getString("day"));
|
||||
// as.setStart_time(item.getString("start_time"));
|
||||
// as.setEnd_time(item.getString("end_time"));
|
||||
// str += item.getString("day") + ",";
|
||||
// li.add(as);
|
||||
// }
|
||||
str = str.substring(0, str.length() - 1);
|
||||
|
||||
siteReserveService.insert(li);
|
||||
|
||||
//发送微信提醒审核人
|
||||
//查询状态码对应的审核人
|
||||
Sql sql = Sqls.create("""
|
||||
select asu.userId,u.loginName,u.userName from audit_state_user asu
|
||||
left join `user` u on u.userId = 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
|
||||
cnd.and("u.deptId", "=", SecurityUtils.getDeptId());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
List<Record> list = siteReserveService.list(sql);
|
||||
|
||||
for (Record item : list) {
|
||||
String content = "%s老师您好!%s老师预约%s日使用%s,请您通过门户网站或企业微信登录智慧工会平台进行审核。"
|
||||
.formatted(item.getString("username"),
|
||||
SecurityUtils.getNickName(),
|
||||
str,
|
||||
siteInfoService.fetch(siteId).getName());
|
||||
ArrayList<Map> list2 = new ArrayList<>();
|
||||
list2.add(Map.of("type", "User", "userId", item.getString("loginname"), "name", item.getString("username")));
|
||||
//msgApi.sendMsg(content, list2, "场地预约", "WeChat", MsgApi.sendMode.normal.name());
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getMyReservation")
|
||||
@RequiresLogin
|
||||
public AjaxResult getMyReservation(String siteId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
reserve_day,
|
||||
start_time,
|
||||
end_time
|
||||
FROM
|
||||
`activity_site_reserve`
|
||||
WHERE
|
||||
reserve_person_id = @userId
|
||||
""");
|
||||
sql.setParam("userId", SecurityUtils.getUserId());
|
||||
return AjaxResult.success(siteReserveService.list(sql));
|
||||
}
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package com.ruoyi.activity.controller.site.mobile;
|
||||
|
||||
import com.ruoyi.activity.api.domain.site.ActivitySiteReserve;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
public class SiteInfoMobileMineController {
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolService baseService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresLogin
|
||||
public Object pageData(PageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asr.*,
|
||||
state.stateName,
|
||||
state.stateAuditType,
|
||||
site.`name` as siteName,
|
||||
site.address
|
||||
FROM
|
||||
activity_site_reserve asr
|
||||
LEFT JOIN activity_site_info site ON site.id = asr.site_id
|
||||
LEFT JOIN audit_state state ON state.stateId = asr.reserve_state
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasRole("sysadmin")) {
|
||||
cnd.and("asr.reserve_person_id", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
cnd.desc("asr.reserve_start_time");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = baseService.listMap(sql);
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤销预约
|
||||
*
|
||||
* @param id
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@GetMapping("revoke")
|
||||
@RequiresLogin
|
||||
public Object revoke(String id) {
|
||||
dao.clear(ActivitySiteReserve.class, Cnd.where("id", "=", id));
|
||||
//发送短信提醒
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 所有场地
|
||||
*
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@GetMapping("listSite")
|
||||
@RequiresLogin
|
||||
public Object listSite() {
|
||||
Sql sql = Sqls.create("""
|
||||
select id,name from activity_site_info order by typeId
|
||||
""");
|
||||
return baseService.list(sql);
|
||||
}
|
||||
|
||||
}
|
||||
+461
@@ -0,0 +1,461 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.constant.SportsActivityApply;
|
||||
import com.ruoyi.activity.api.constant.SportsActivityPageForm;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolApply;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolEvent;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolApplyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
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.dao.util.cri.Static;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 体育活动报名
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/2 9:37
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/activityApply")
|
||||
public class ActivityApplyController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolApplyService activitySchoolApplyService;
|
||||
@Autowired
|
||||
private BaseService dao;
|
||||
|
||||
|
||||
/**
|
||||
* @param year
|
||||
* @param isActivity
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 根据条件查询有这些活动
|
||||
* @author zhf
|
||||
* @date 2023/2/2 11:03
|
||||
*/
|
||||
|
||||
@GetMapping("/activityData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult activityData(@RequestParam(required = false, value = "year") Integer year,
|
||||
@RequestParam(required = false, value = "isActivity") 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,
|
||||
school.eventNotification,
|
||||
(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.activityUnionId=@unionId AND app.unionLeader=1) LeaderCount,
|
||||
(SELECT COUNT(1) FROM activity_school_apply app WHERE app.activityId=school.id AND app.activityUnionId=@unionId AND app.unionCoach=1) CoachCount
|
||||
FROM
|
||||
activity_school school
|
||||
LEFT JOIN activity_basic_settings ba ON ba.`code` = school.activityLevel
|
||||
$condition
|
||||
""").setParam("userid", SecurityUtils.getUserId()).setParam("unionId", SecurityUtils.getUnionId());
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
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 (!AuthUtil.hasAnyRoles("H04,gh08,admin")) {
|
||||
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(SecurityUtils.getUserId())));
|
||||
}
|
||||
cnd.andEX("YEAR(school.applyStartTime)", "=", year);
|
||||
cnd.desc("school.applyStartTime");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return AjaxResult.success(activitySchoolApplyService.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 根据活动查询领队团长等
|
||||
* @author zhf
|
||||
* @date 2023/2/2 11:19
|
||||
*/
|
||||
|
||||
@GetMapping("/getUnionCoachLeaderHead")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult getUnionCoachLeaderHead(String activityId) {
|
||||
Map result = new HashMap();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
apply.*,
|
||||
us.deptName unitname
|
||||
FROM
|
||||
activity_school_apply apply
|
||||
LEFT JOIN `user` us ON us.userId = apply.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("apply.activityId", "=", activityId);
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
cnd.and("apply.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
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(dao.fetch(Sqls.create("SELECT birthday,deptId,deptName,sex,loginName,unionId,unionName,userId,userName FROM `user` WHERE userId=@userId").setParam("userId", unionCoach.getString("userId"))));
|
||||
}
|
||||
if (unionLeader != null) {
|
||||
arrayList.add(dao.fetch(Sqls.create("SELECT birthday,deptId,deptName,sex,loginName,unionId,unionName,userId,userName FROM `user` WHERE userId=@userId").setParam("userId", unionLeader.getString("userId"))));
|
||||
}
|
||||
if (unionHead != null) {
|
||||
arrayList.add(dao.fetch(Sqls.create("SELECT birthday,deptId,deptName,sex,loginName,unionId,unionName,userId,userName FROM `user` WHERE userId=@userId").setParam("userId", unionHead.getString("userId"))));
|
||||
}
|
||||
if (unionStaff != null) {
|
||||
arrayList.add(dao.fetch(Sqls.create("SELECT birthday,deptId,deptName,sex,loginName,unionId,unionName,userId,userName FROM `user` WHERE userId=@userId").setParam("userId", unionStaff.getString("userId"))));
|
||||
}
|
||||
|
||||
|
||||
result.put("userOptions", arrayList);
|
||||
|
||||
return AjaxResult.success().put("data", result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param groupName
|
||||
* @param activityId
|
||||
* @param eventId
|
||||
* @param year
|
||||
* @param page
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 根据活动查询活动下面的可报名的项目
|
||||
* @author zhf
|
||||
* @date 2023/2/2 13:37
|
||||
*/
|
||||
|
||||
@PostMapping("/pageData")
|
||||
// @RequiresRoles(value = {"admin", "H01"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestParam(required = false, value = "groupName") String groupName,
|
||||
@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "eventId") String eventId,
|
||||
@RequestParam(required = false, value = "year") Integer year,
|
||||
@RequestParam(required = false, value = "isAudit") String isAudit,
|
||||
@RequestBody PageForm page) {
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
// (SELECT GROUP_CONCAT(username) FROM activity_school_apply WHERE eventId = ase.eventId AND activityId = ase.activityId AND (applyUser=@userId or userId=@userId)) userApplyNames,
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ase.*,
|
||||
school.`name`,
|
||||
school.applyWay,
|
||||
school.applyStartTime,
|
||||
school.applyEndTime,
|
||||
school.applyType,
|
||||
school.activityGroupId,
|
||||
eve.allName,
|
||||
eve.isInterest,
|
||||
eve.projectType eveProjectType,
|
||||
eve.isMenWomen,
|
||||
apply.`status`,
|
||||
IF (sum(apply.`status`=2) IS NULL, 0, sum(apply.`status`=2)) AS successUserApply,
|
||||
count(apply.id) userApply,
|
||||
apply.applyUser,
|
||||
(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 GROUP_CONCAT(username) FROM activity_school_apply WHERE status=2 and eventId = ase.eventId
|
||||
AND activityId = ase.activityId AND applyUser AND (applyUser=@userId or userId=@userId)) userApplyNames,
|
||||
(SELECT COUNT(1) FROM activity_school_apply WHERE eventId=ase.eventId AND activityId=ase.activityId and status=2 and activityUnionId=@unionId) 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,
|
||||
(SELECT COUNT(1) FROM activity_school_apply WHERE eventId=ase.eventId AND activityId=ase.activityId and status=1 and activityUnionId=@unionId) apply_num_dsh
|
||||
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
|
||||
LEFT JOIN activity_school_apply apply ON apply.activityId=ase.activityId AND apply.eventId=ase.eventId AND (applyUser=@userId or userId=@userId)
|
||||
$condition
|
||||
""").setParam("unionId", SecurityUtils.getUnionId()).setParam("userId", SecurityUtils.getUserId());
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("H04,gh08,admin")) {
|
||||
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(SecurityUtils.getUserId())));
|
||||
|
||||
}
|
||||
|
||||
cnd.andEX("abs.`name`", "=", groupName);
|
||||
|
||||
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(SecurityUtils.getUserId(), (isAudit.equals("true") ? ">" : "="))));
|
||||
}
|
||||
|
||||
cnd.andEX("ase.activityId", "=", activityId);
|
||||
cnd.andEX("ase.eventId", "=", eventId);
|
||||
cnd.andEX("YEAR(school.applyStartTime)", "=", year);
|
||||
cnd.groupBy("ase.id");
|
||||
cnd.asc("abs.`code`");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = activitySchoolApplyService.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
|
||||
|
||||
return AjaxResult.success(pagination);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getEvents")
|
||||
public AjaxResult getEvents(String activityId) {
|
||||
|
||||
|
||||
return AjaxResult.success(activitySchoolApplyService.getEvents(activityId));
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("/getUserData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult getUserData(String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
userId,
|
||||
deptCode,
|
||||
loginName,
|
||||
userName,
|
||||
sex,
|
||||
unionId,
|
||||
deptId,
|
||||
deptName,
|
||||
unionName,
|
||||
unionCode,
|
||||
mobile,
|
||||
birthday
|
||||
from
|
||||
`user` u
|
||||
WHERE
|
||||
userId=@userId
|
||||
""").setParam("userId", userId);
|
||||
|
||||
return AjaxResult.success(dao.fetch(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sportsActivityApply
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 添加团长领队等
|
||||
* @author zhf
|
||||
* @date 2023/2/2 16:24
|
||||
*/
|
||||
|
||||
@PostMapping("/doLeaderCoachHead")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult doLeaderCoachHead(@RequestBody SportsActivityApply sportsActivityApply) {
|
||||
activitySchoolApplyService.doLeaderCoachHead(sportsActivityApply);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getUniteApplyInfo")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult getUniteApplyInfo(@RequestParam(required = false, value = "endAgeDate") String endAgeDate,
|
||||
@RequestParam(required = false, value = "startAgeDate") String startAgeDate,
|
||||
@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "eventId") String eventId,
|
||||
@RequestParam(required = false, value = "schoolEventId") String schoolEventId,
|
||||
@RequestParam(required = false, value = "projectType") String projectType,
|
||||
@RequestParam(required = false, value = "isMenWomen") Integer isMenWomen) {
|
||||
|
||||
return activitySchoolApplyService.getUniteApplyInfo(endAgeDate, startAgeDate, activityId, eventId, schoolEventId, projectType, isMenWomen);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getActivityData")
|
||||
public AjaxResult getActivityData(String activityId) {
|
||||
return AjaxResult.success(activitySchoolApplyService.query(Cnd.where("activityId", "=", activityId).and("awardsMode", "=", 1)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param sportsActivityApply
|
||||
* @param pass
|
||||
* @param eventId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description 体育活动报名
|
||||
* @author zhf
|
||||
* @date 2023/2/3 9:37
|
||||
*/
|
||||
|
||||
@PostMapping("/doApply")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult doApply(@RequestBody SportsActivityApply sportsActivityApply,
|
||||
@RequestParam boolean pass,
|
||||
@RequestParam String eventId) {
|
||||
activitySchoolApplyService.doApply(sportsActivityApply, pass, eventId);
|
||||
return AjaxResult.success();
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("/getAllUser")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult getAllUser(@RequestParam(required = false, value = "endAgeDate") String endAgeDate,
|
||||
@RequestParam(required = false, value = "startAgeDate") String startAgeDate,
|
||||
@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "eventId") String eventId,
|
||||
@RequestParam(required = false, value = "isMenWomen") Integer isMenWomen,
|
||||
@RequestParam Integer pageNumber,
|
||||
@RequestParam(required = false, name = "dataD[]") List<String> dataD,
|
||||
@RequestParam(required = false, name = "dataT[]") List<String> dataT,
|
||||
@RequestBody SportsActivityPageForm sportsActivityPageForm) {
|
||||
|
||||
|
||||
return AjaxResult.success(activitySchoolApplyService.getAllUser(sportsActivityPageForm, dataD, dataT, endAgeDate, startAgeDate, isMenWomen, activityId, eventId, pageNumber));
|
||||
}
|
||||
|
||||
@PostMapping("/applyPageData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult applyPageData(@RequestBody PageForm page,
|
||||
@RequestParam String activityId,
|
||||
@RequestParam String eventId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
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
|
||||
""");
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("apply.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
cnd.andEX("apply.activityId", "=", activityId);
|
||||
cnd.andEX("apply.eventId", "=", eventId);
|
||||
cnd.asc("team.`name`");
|
||||
cnd.desc("apply.identity");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return AjaxResult.success(dao.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/joinMemberFamily")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult joinMemberFamily(@RequestParam(required = false, name = "applysId[]") List<String> applysId) {
|
||||
activitySchoolApplyService.joinMemberFamily(applysId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getSysUser")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult getSysUser(@RequestBody SportsActivityPageForm sportsActivityPageForm) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("userId", "not in", sportsActivityPageForm.getUserId());
|
||||
if (StrUtil.isNotBlank(sportsActivityPageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
group.andLike("userName", sportsActivityPageForm.getSearchKeyword()).orLike("loginName", sportsActivityPageForm.getSearchKeyword());
|
||||
cnd.and(group);
|
||||
}
|
||||
Sql sql = Sqls.create("select userId,loginName,userName,sex,mobile,deptId,birthday,unionId,unionName from `user` $condition LIMIT 30");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = dao.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/dshApplyUserList")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult dshApplyUserList(@Valid String activityId, @Valid String eventId) {
|
||||
List<ActivitySchoolApply> applyList = dao.dao().query(ActivitySchoolApply.class,
|
||||
Cnd.where("activityId", "=", activityId)
|
||||
.and("eventId", "=", eventId)
|
||||
.and("activityUnionId","=",SecurityUtils.getUnionId()).asc("status"));
|
||||
return AjaxResult.success(applyList);
|
||||
}
|
||||
|
||||
@PostMapping("/doAuditApplyUser")
|
||||
@ApiOperation("审核待审核人员")
|
||||
@RequiresPermissions("activity:sports:sportsActivityApply")
|
||||
public AjaxResult doAuditApplyUser(@RequestParam(required = false, name = "dshSelectionIds[]") List<String> dshSelectionIds, Integer status, String activityId, String eventId) {
|
||||
if (Lang.isEmpty(dshSelectionIds) || Lang.isEmpty(status)) {
|
||||
return AjaxResult.error();
|
||||
}
|
||||
if (status == 2) {
|
||||
int appCount = dao.dao().count(ActivitySchoolApply.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).and("status", "=", 2));
|
||||
ActivitySchoolEvent schoolEvent = dao.dao().fetch(ActivitySchoolEvent.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId));
|
||||
if (appCount + dshSelectionIds.size() > schoolEvent.getAthletesMaxNum()) {
|
||||
return AjaxResult.error("当前项目限报【" + schoolEvent.getAthletesMaxNum() + "】人,目前已报【" + appCount + "】人,请检查报名人数!");
|
||||
}
|
||||
}
|
||||
dao.dao().update(ActivitySchoolApply.class, Chain.make("status", status), Cnd.where("id", "in", dshSelectionIds));
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/31 9:01
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/calendar")
|
||||
public class ActivityCalendarController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@GetMapping("/getData")
|
||||
@RequiresLogin
|
||||
public AjaxResult getData() {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
school.id,
|
||||
school.`name`,
|
||||
school.address,
|
||||
school.applyStartTime,
|
||||
school.applyEndTime,
|
||||
school.startTime,
|
||||
school.endTime,
|
||||
school.unitSponsor,
|
||||
applyWay
|
||||
FROM
|
||||
activity_school school
|
||||
$condition
|
||||
""");
|
||||
|
||||
cnd.desc("school.startTime");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(baseService.listMap(sql));
|
||||
}
|
||||
|
||||
@GetMapping("/getWyData")
|
||||
@RequiresLogin
|
||||
public AjaxResult getWyData() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
`name`,
|
||||
address,
|
||||
applyStartTime,
|
||||
applyEndTime,
|
||||
startTime,
|
||||
endTime,
|
||||
type activityType
|
||||
FROM
|
||||
activity_tissue
|
||||
WHERE
|
||||
signUpMethod = 1
|
||||
""");
|
||||
return AjaxResult.success(baseService.listMap(sql));
|
||||
}
|
||||
}
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
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.ruoyi.activity.api.constant.SportsActivityFormData;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolApply;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolEvent;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 体育比赛活动管理
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/31 9:24
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/infoMange")
|
||||
public class ActivityInfoManageController {
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolService activitySchoolService;
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@PostMapping("/doAssignmentDate")
|
||||
public AjaxResult doAssignmentDate(@RequestParam(required = false, name = "eventIds[]") List<String> eventIds,
|
||||
@RequestBody List<ActivitySchoolEvent> events) {
|
||||
|
||||
return activitySchoolService.doAssignmentDate(eventIds, events);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doAdd")
|
||||
@RequiresPermissions("activity:sports:sportsActivityManage")
|
||||
public AjaxResult doAdd(@RequestBody SportsActivityFormData sportsActivityFormData) {
|
||||
|
||||
String id = activitySchoolService.doAdd(sportsActivityFormData);
|
||||
|
||||
return AjaxResult.success().put("data", id);
|
||||
}
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "year") Integer year,
|
||||
@RequestParam(required = false, value = "gameStyle") String gameStyle,
|
||||
@RequestParam(required = false, value = "query") String query,
|
||||
@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "activityLevel") String activityLevel) {
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
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.belongClubId,
|
||||
(SELECT COUNT(1) FROM activity_school_apply asa WHERE asa.activityId = school.id and asa.status=2) applyNum
|
||||
FROM
|
||||
activity_school school
|
||||
LEFT JOIN activity_basic_settings ba ON ba.`code` = school.activityLevel
|
||||
LEFT JOIN `union` un ON un.id = school.belongUnionId
|
||||
$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 (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
if (AuthUtil.hasRole("H04")) {
|
||||
cnd.and("school.belongUnionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (AuthUtil.hasRole("H02")) {
|
||||
List<NutMap> clubList = remoteClubService.getClubsByRole().getData();
|
||||
List<String> stids = clubList.stream().map(v -> v.getString("stid")).collect(Collectors.toList());
|
||||
cnd.and("school.belongClubId", "in", stids);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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 AjaxResult.success(activitySchoolService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doEdit")
|
||||
@RequiresPermissions("activity:sports:sportsActivityManage")
|
||||
public AjaxResult doEdit(@RequestBody SportsActivityFormData sportsActivityFormData) {
|
||||
activitySchoolService.doEdit(sportsActivityFormData);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/findOne")
|
||||
public AjaxResult findOne(String id) {
|
||||
return AjaxResult.success(activitySchoolService.findOne(id));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getEventApply")
|
||||
public AjaxResult getEventApply(@RequestParam String activityId,
|
||||
@RequestBody List<String> eventId) {
|
||||
if (Lang.isEmpty(eventId)) {
|
||||
return AjaxResult.success("暂无修改的项目");
|
||||
}
|
||||
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.and("asa.eventId", "is not", null);
|
||||
cnd.groupBy("ev.allName");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(activitySchoolService.list(sql));
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/doDelete")
|
||||
@RequiresPermissions("activity:sports:sportsActivityManage")
|
||||
public AjaxResult doDelete(String id) {
|
||||
activitySchoolService.doDelete(id);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/exportXlsx")
|
||||
@RequiresPermissions("activity:sports:sportsActivityManage")
|
||||
public void exportXlsx(String id, String unionId, HttpServletResponse response) throws IOException {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
au.unionName applyUnionName,
|
||||
au.userName applyUserName,
|
||||
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` au ON au.userId = app.applyUser
|
||||
LEFT JOIN activity_event ev ON ev.id = app.eventId
|
||||
LEFT JOIN activity_school sc ON sc.id=app.activityId
|
||||
WHERE
|
||||
app.activityId = @id
|
||||
and app.status = 2
|
||||
$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 ELSE 4 END;
|
||||
""").setParam("id", id);
|
||||
if (Strings.isNotBlank(unionId)) {
|
||||
sql.setVar("cnd", "and u.unionid='" + unionId + "'");
|
||||
}
|
||||
List<NutMap> list = activitySchoolService.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("报名人工会", "applyUnionName", 50));
|
||||
entityList.add(new ExcelExportEntity("身份", "sf", 30));
|
||||
entityList.add(new ExcelExportEntity("备注", "applyUnitName", 30));
|
||||
entityList.add(new ExcelExportEntity("报名人", "applyUserName", 30));
|
||||
String activityName = list.get(0).getString("activityName");
|
||||
|
||||
|
||||
list.forEach(map -> {
|
||||
map.put("sex", map.getInt("sex") == 0 ? "男" : map.getInt("sex") == 1 ? "女" : "暂无");
|
||||
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));
|
||||
}
|
||||
if (StrUtil.isBlank(map.getString("allName"))){
|
||||
map.put("allName","工会教练、领队");
|
||||
}
|
||||
|
||||
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) -> {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setSheetName(k);
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
service.createSheetForMap(workbook, exportParams, entityList, v);
|
||||
});
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(activityName + "报名表.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.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 "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 运动会成绩统计
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/6 18:40
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/prizeList")
|
||||
public class ActivityPrizeListController {
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
private static NutMap nullMap = NutMap.NEW();
|
||||
|
||||
@GetMapping("/summary")
|
||||
public AjaxResult summary(@RequestParam String activityId) {
|
||||
|
||||
NutMap map = new NutMap();
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
|
||||
|
||||
//查询所有的工会
|
||||
List<NutMap> query = baseService.listMap(Sqls.create("select * from `union`"));
|
||||
for (NutMap sys_union : query) {
|
||||
NutMap nutMap = new NutMap();
|
||||
|
||||
//记录总人数
|
||||
int totalPeople = 0;
|
||||
nutMap.setv("unionname", sys_union.getString("unionName"));
|
||||
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
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("ar2.activityId", "=", activityId);
|
||||
cnd.and("ar2.ranking", "=", i);
|
||||
cnd.and("ar2.unionId", "=", sys_union.getString("id"));
|
||||
cnd.and("ar2.isTeamPersonal", "in", "1,2");
|
||||
sql.setCondition(cnd);
|
||||
int number = 0;
|
||||
List<Record> list = baseService.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 AjaxResult.success(map);
|
||||
}
|
||||
|
||||
@GetMapping("/getPrizes")
|
||||
public AjaxResult getPrizes(@RequestParam(required = false, value = "year") Integer year,
|
||||
@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "unionId") String unionId) {
|
||||
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
acr.activityId,
|
||||
ace.allName,
|
||||
acr.userId,
|
||||
acr.ranking,
|
||||
acr.numberOfPeople,
|
||||
ace.isMenWomen,
|
||||
acs.`name` as activityName,
|
||||
u.userName 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
|
||||
left join activity_event ace on ace.id = acse.eventId
|
||||
left join activity_results acr on acr.eventId = acse.eventId
|
||||
left join `user` u on u.userId = acr.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("acr.activityId", "=", activityId);
|
||||
cnd.and("YEAR(acs.applyStartTime)", "=", year);
|
||||
cnd.and("acr.unionId", "=", unionId);
|
||||
cnd.groupBy("acr.id ");
|
||||
cnd.asc("ace.allName").asc("acr.ranking");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> allList = baseService.listMap(sql);
|
||||
if (Lang.isEmpty(allList)) {
|
||||
return AjaxResult.success(Map.of("团体项目", nullMap, "男子项目", nullMap, "女子项目", nullMap, "其他", nullMap));
|
||||
}
|
||||
Map maleMap = NutMap.NEW();
|
||||
Map femaleMap = NutMap.NEW();
|
||||
Map teamMap = NutMap.NEW();
|
||||
Map otherMap = NutMap.NEW();
|
||||
|
||||
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 AjaxResult.success(Map.of("团体项目", teamMap, "男子项目", maleMap, "女子项目", femaleMap, "其他", otherMap));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+153
@@ -0,0 +1,153 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchool;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolApplyService;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
import com.ruoyi.system.api.domain.SysConfig;
|
||||
import org.apache.catalina.Globals;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 报名信息阅览
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/3 17:40
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/reading")
|
||||
public class ActivityReadingController {
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolService activitySchoolService;
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolApplyService activitySchoolApplyService;
|
||||
|
||||
|
||||
@GetMapping("/getNearActivity")
|
||||
@RequiresPermissions("activity:sports:sportsActivityReading")
|
||||
public AjaxResult getNearActivity(Integer year, String activityLevel) {
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("close", "!=", true);
|
||||
cnd.and("YEAR(startTime)", "=", year);
|
||||
cnd.and("activityLevel", "=", activityLevel);
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
if (activityLevel.equals("40002")) {
|
||||
cnd.and("belongUnionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
List<NutMap> clubs = remoteClubService.getClubsByRole().getData();
|
||||
List<String> stids = clubs.stream().map(v -> v.getString("stid")).collect(Collectors.toList());
|
||||
if (activityLevel.equals("40003")) {
|
||||
cnd.and("belongClubId", "in", stids);
|
||||
}
|
||||
}
|
||||
List<ActivitySchool> applyEndTime = activitySchoolService.query(cnd.desc("applyEndTime"));
|
||||
return AjaxResult.success(applyEndTime);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityReading")
|
||||
public AjaxResult getData(@RequestParam(required = false, value = "id") String id,
|
||||
@RequestParam(required = false, value = "activityLevel") String activityLevel,
|
||||
@RequestParam(required = false) Integer applyed,
|
||||
@RequestParam(required = false) String unionid,
|
||||
@RequestBody PageForm pageForm) {
|
||||
|
||||
return AjaxResult.success(activitySchoolApplyService.getData(id, activityLevel, applyed, unionid, pageForm));
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("/doExport")
|
||||
@RequiresPermissions("activity:sports:sportsActivityReading")
|
||||
public void doExport(@RequestParam String unionId, @RequestParam String activityId, HttpServletResponse response) {
|
||||
try {
|
||||
ActivitySchool activitySchool = activitySchoolApplyService.dao().fetch(ActivitySchool.class, activityId);
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asa.username,
|
||||
asa.loginname,
|
||||
asa.unionLeader,
|
||||
asa.activityUnionName,
|
||||
asa.mobile,
|
||||
CASE
|
||||
WHEN asa.sex = 0 THEN
|
||||
'男'
|
||||
WHEN asa.sex = 1 THEN
|
||||
'女' ELSE '未知'
|
||||
END AS sex,
|
||||
u.idcard
|
||||
FROM
|
||||
`activity_school_apply` asa
|
||||
LEFT JOIN `user` u ON u.userId = asa.userId
|
||||
WHERE
|
||||
asa.activityUnionId=@unionId
|
||||
AND asa.activityId=@activityId
|
||||
ORDER BY asa.sex ASC
|
||||
""").setParam("unionId", unionId).setParam("activityId", activityId);
|
||||
List<NutMap> listMap = activitySchoolApplyService.listMap(sql);
|
||||
|
||||
String unionName = "";
|
||||
if (Lang.isNotEmpty(listMap)) {
|
||||
String activityUnionName = listMap.get(0).getString("activityUnionName");
|
||||
unionName = activityUnionName;
|
||||
}
|
||||
NutMap unionLeader = listMap.stream().filter(l -> l.getBoolean("unionLeader")).findFirst().orElse(null);
|
||||
List<NutMap> userList = listMap.stream().filter(l -> !l.getBoolean("unionLeader")).collect(Collectors.toList());
|
||||
|
||||
|
||||
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
|
||||
Configure config = Configure.builder().bind("userList", policy).build();
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
if (Lang.isNotEmpty(unionLeader)) {
|
||||
map.put("leaderUserName", unionLeader.getString("username"));
|
||||
map.put("leaderMobile", unionLeader.getString("mobile"));
|
||||
}
|
||||
map.put("userList", userList);
|
||||
map.put("unionName", unionName);
|
||||
map.put("activityName", activitySchool.getName());
|
||||
|
||||
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/unionApplyUser.docx");
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(activitySchool.getName() + "报名表.docx", StandardCharsets.UTF_8);
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
XWPFTemplate.compile(inputStream, config).render(map, response.getOutputStream());
|
||||
inputStream.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolApply;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/3 15:07
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/remind")
|
||||
public class ActivityRemindController {
|
||||
|
||||
@Autowired
|
||||
private BaseService dao;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolService activitySchoolService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityRemind")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "activityId") String activityId) {
|
||||
|
||||
|
||||
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,
|
||||
(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
|
||||
$condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
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);
|
||||
|
||||
cnd.desc("school.startTime");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(dao.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getUnionRemind")
|
||||
@RequiresPermissions("activity:sports:sportsActivityRemind")
|
||||
public AjaxResult getUnionRemind(String activityId) {
|
||||
|
||||
|
||||
List<NutMap> listMap = dao.listMap(Sqls.create("select * from `union`"));
|
||||
listMap.forEach(un -> {
|
||||
|
||||
//查询每个分工会的管理员
|
||||
List<FeignCnd> cndList = List.of(
|
||||
new FeignCnd("role_id", "=", Roles.FGH_ADMIN),
|
||||
new FeignCnd("union_id", "=", un.getString("id"))
|
||||
);
|
||||
List<SysUserRole> sysUserRoles = remoteUserRoleService.getUserRole(cndList).getData();
|
||||
List<Long> userIdList = sysUserRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
||||
|
||||
//根据管理员的id查询出姓名和手机号
|
||||
Sql sqlUser = Sqls.create("""
|
||||
SELECT
|
||||
GROUP_CONCAT( userName ) userName,
|
||||
GROUP_CONCAT( mobile ) mobile
|
||||
FROM
|
||||
`user`
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("userId", "in", userIdList);
|
||||
sqlUser.setCondition(cnd);
|
||||
NutMap userList = dao.fetch(sqlUser);
|
||||
|
||||
//查有多少个人报名
|
||||
int activityApplyCount = dao.dao().count(ActivitySchoolApply.class, Cnd.where("unionId", "=", un.getString("id")).and("activityId", "=", activityId));
|
||||
|
||||
un.setv("telephone", userList.getString("mobile"));
|
||||
un.setv("unionleader", userList.getString("userName"));
|
||||
un.setv("num", activityApplyCount);
|
||||
//查询报名的信息
|
||||
List users = dao.dao().query(ActivitySchoolApply.class, Cnd.where("unionId", "=", un.getString("id")).and("activityId", "=", activityId).desc("identity"));
|
||||
un.setv("users", users);
|
||||
|
||||
});
|
||||
|
||||
return AjaxResult.success().put("data", listMap);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/sendRemind")
|
||||
@RequiresPermissions("activity:sports:sportsActivityRemind")
|
||||
public AjaxResult sendRemind(@RequestParam(required = false, value = "phone") String phone,
|
||||
String unionname) {
|
||||
|
||||
activitySchoolService.sendRemind(phone, unionname);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/sendAllRemind")
|
||||
@RequiresPermissions("activity:sports:sportsActivityRemind")
|
||||
public AjaxResult sendAllRemind(@RequestParam String activityId) {
|
||||
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+248
@@ -0,0 +1,248 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.ruoyi.activity.api.domain.sports.ActivityResults;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolApply;
|
||||
import com.ruoyi.activity.service.sports.ActivityResultsService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
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.lang.Lang;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 活动成绩
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/6 18:29
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/results")
|
||||
public class ActivityResultsController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivityResultsService activityResultsService;
|
||||
|
||||
@Autowired
|
||||
private BaseService dao;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityResults")
|
||||
public AjaxResult pageData(@RequestBody PageForm page,
|
||||
@RequestParam(required = false, value = "groupName") String groupName,
|
||||
@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "eventId") String eventId,
|
||||
@RequestParam(required = false, name = "isMenWomen[]") List<String> isMenWomen) {
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
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);
|
||||
cnd.andEX("abs.`name`", "=", groupName);
|
||||
cnd.andEX("ae.id", "=", eventId);
|
||||
SqlExpressionGroup sqlExpressionGroup = new SqlExpressionGroup();
|
||||
if (Lang.isNotEmpty(isMenWomen)) {
|
||||
|
||||
|
||||
if (isMenWomen.stream().anyMatch(a -> a.equals("2"))) {
|
||||
sqlExpressionGroup.and("ae.isMenWomen", "=", 1);
|
||||
}
|
||||
if (isMenWomen.stream().anyMatch(a -> a.equals("3"))) {
|
||||
sqlExpressionGroup.or("ae.isMenWomen", "=", 2);
|
||||
}
|
||||
if (isMenWomen.stream().anyMatch(a -> a.equals("4"))) {
|
||||
sqlExpressionGroup.and("ae.projectType", "=", 1);
|
||||
}
|
||||
if (isMenWomen.stream().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 AjaxResult.success(activityResultsService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getUnionData")
|
||||
public AjaxResult getUnionData(String activityId, 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 AjaxResult.success(activityResultsService.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getUnionDetails")
|
||||
public AjaxResult getUnionDetails(String activityId, String eventId, String unionId) {
|
||||
int count = dao.dao().count(ActivitySchoolApply.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).and("unionId", "=", unionId));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询团体参赛分工会
|
||||
*
|
||||
* @param activityId
|
||||
* @param eventId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getUnionList")
|
||||
public AjaxResult getUnionList(String activityId, String eventId) {
|
||||
Sql sql = Sqls.create("""
|
||||
|
||||
SELECT
|
||||
un.id,
|
||||
un.unionname
|
||||
FROM
|
||||
activity_school_apply asa
|
||||
LEFT JOIN `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 AjaxResult.success(dao.list(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询个人参赛人员
|
||||
*
|
||||
* @param activityId
|
||||
* @param eventId
|
||||
* @param isMenWomen
|
||||
* @return
|
||||
*/
|
||||
|
||||
@GetMapping("/getUserList")
|
||||
@RequiresPermissions("activity:sports:sportsActivityResults")
|
||||
public AjaxResult getUserList(String activityId, String eventId, Integer isMenWomen) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId id,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.unionId,
|
||||
u.unionName,
|
||||
u.sex
|
||||
FROM
|
||||
activity_school_apply asa
|
||||
LEFT JOIN `user` u ON u.userId = 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", "=", "0");
|
||||
if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "1");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(dao.listMap(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据活动项目性别查询有没有获奖人员
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
|
||||
@GetMapping("/getUserData")
|
||||
@RequiresPermissions("activity:sports:sportsActivityResults")
|
||||
public AjaxResult getUserData(String activityId, String eventId, Integer isMenWomen) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ar.id,
|
||||
ar.userId,
|
||||
ar.activityId,
|
||||
ar.eventId,
|
||||
u.userName,
|
||||
u.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.userId$condition
|
||||
""");
|
||||
cnd.and("ar.activityId", "=", activityId);
|
||||
cnd.and("ar.eventId", "=", eventId);
|
||||
if (isMenWomen != null && isMenWomen == 1) cnd.and("u.sex", "=", "0");
|
||||
if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "1");
|
||||
cnd.asc("ar.ranking");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(dao.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doAdd")
|
||||
@RequiresPermissions("activity:sports:sportsActivityResults")
|
||||
public AjaxResult doAdd(@RequestBody List<ActivityResults> activityResults,
|
||||
@RequestParam String activityId,
|
||||
@RequestParam String eventId) {
|
||||
|
||||
|
||||
activityResultsService.doAdd(activityResults, activityId, eventId);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doAddUser")
|
||||
@RequiresPermissions("activity:sports:sportsActivityResults")
|
||||
public AjaxResult doAddUser(@RequestBody ActivitySchoolApply activitySchoolApply) {
|
||||
|
||||
|
||||
return activityResultsService.doAddUser(activitySchoolApply);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+396
@@ -0,0 +1,396 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchool;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolEvent;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 奖名名单
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/6 18:40
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/sports/scoreStatistics")
|
||||
public class ActivityScoreStatisticsController {
|
||||
|
||||
@Autowired
|
||||
private BaseService dao;
|
||||
|
||||
|
||||
@GetMapping("/isMaleFemale")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public AjaxResult isMaleFemale(@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "sex") String sex,
|
||||
@RequestParam(required = false, value = "awardsMode") Integer awardsMode) {
|
||||
|
||||
NutMap map = new NutMap();
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
|
||||
//查询所有的工会
|
||||
List<NutMap> query = dao.listMap(Sqls.create("select * from `union`"));
|
||||
Cnd cndX = Cnd.NEW();
|
||||
//查询所有的项目
|
||||
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("0") ? 1 : 2);
|
||||
}
|
||||
if (awardsMode == 3) {
|
||||
cndX.and("eve.isInterest", "=", true);
|
||||
}
|
||||
if (awardsMode == 4) {
|
||||
cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("0") ? 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 = dao.list(sqlX);
|
||||
|
||||
//查询每个工会下每个项目的成绩
|
||||
|
||||
query.forEach(v -> {
|
||||
NutMap nutMap = new NutMap();
|
||||
//记录总积分
|
||||
double totalScore = 0;
|
||||
nutMap.setv("unionname", v.getString("unionName"));
|
||||
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
|
||||
""");
|
||||
Cnd cndC = Cnd.NEW();
|
||||
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("0") ? 1 : 2);
|
||||
} else if (awardsMode == 3) {
|
||||
cndC.and("ev.isInterest", "=", true);
|
||||
} else if (awardsMode == 4) {
|
||||
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("0") ? 1 : 2).or("ev.isMenWomen", "is", null));
|
||||
}
|
||||
cndC.and("ar.eventId", "=", event.getString("eventid"));
|
||||
cndC.and("ar.unionid", "=", v.getString("id"));
|
||||
cndC.and("ar.activityId", "=", activityId);
|
||||
sqlC.setCondition(cndC);
|
||||
Double score = 0.0;
|
||||
List<NutMap> list = dao.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 AjaxResult.success(map);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/isTopEight")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public AjaxResult isTopEight(@RequestParam(required = false, value = "activityId") String activityId,
|
||||
@RequestParam(required = false, value = "sex") String sex,
|
||||
@RequestParam(required = false, value = "awardsMode") Integer awardsMode) {
|
||||
NutMap map = new NutMap();
|
||||
Cnd cndX = Cnd.NEW();
|
||||
//查询所有的项目
|
||||
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("0") ? 1 : 2);
|
||||
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 = dao.list(sqlX);
|
||||
|
||||
|
||||
Sql sqlC = Sqls.create("");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
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 `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 = dao.list(sqlC);
|
||||
|
||||
map.put("userList", list);
|
||||
map.put("eventList", eventList);
|
||||
return AjaxResult.success(map);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/isScoreTopEight")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public AjaxResult isScoreTopEight(String activityId, String sex) {
|
||||
|
||||
NutMap map = new NutMap();
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
Cnd cndX = Cnd.NEW();
|
||||
//查询所有的项目
|
||||
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("0") ? 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 = dao.list(sqlX);
|
||||
|
||||
//查询所有的工会
|
||||
List<NutMap> query = dao.listMap(Sqls.create("select * from `union`"));
|
||||
|
||||
|
||||
query.forEach(v -> {
|
||||
NutMap nutMap = new NutMap();
|
||||
//记录总积分
|
||||
double totalScore = 0;
|
||||
nutMap.setv("unionname", v.getString("unionName"));
|
||||
|
||||
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
|
||||
""");
|
||||
Cnd cndC = Cnd.NEW();
|
||||
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("0") ? 1 : 2).or("ev.isMenWomen", "is", null));
|
||||
cndC.and("ar.unionid", "=", v.getString("id"));
|
||||
cndC.and("ar.eventId", "=", event.getString("eventid"));
|
||||
cndC.and("ar.activityId", "=", activityId);
|
||||
sqlC.setCondition(cndC);
|
||||
Double score = 0.0;
|
||||
List<NutMap> list = dao.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 AjaxResult.success(map);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getYear8")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public AjaxResult getYear8(Integer isMenWomen, Integer year) {
|
||||
ArrayList<Map> resultMap = new ArrayList<>();
|
||||
|
||||
// int isMenWomen = sex.equals("男") ? 1 : 2;
|
||||
|
||||
List<NutMap> unionList = dao.listMap(Sqls.create("select * from `union`"));
|
||||
|
||||
List<ActivitySchool> activityList = dao.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.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.getString("id")) && 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.getString("id")) && 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 AjaxResult.success(Map.of("label", activityNameList, "score", resultMap));
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("/getAnnualResults")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public AjaxResult getAnnualResults(Integer year) {
|
||||
|
||||
ArrayList<Map> resultMap = new ArrayList<>();
|
||||
|
||||
|
||||
List<NutMap> unionList = dao.listMap(Sqls.create("select * from `union`"));
|
||||
List<ActivitySchool> activitySchoolList = dao.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.getString("id"));
|
||||
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 AjaxResult.success(Map.of("label", labelList, "score", resultMap));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+584
@@ -0,0 +1,584 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
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.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchool;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolEvent;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
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;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 9:03
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/statisticsExport")
|
||||
public class ActivityStatisticsTypeExportController {
|
||||
|
||||
@Autowired
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@RequestMapping("/getYear8")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public void getYear8(@RequestParam Integer isMenWomen,
|
||||
@RequestParam Integer year,
|
||||
HttpServletResponse response) {
|
||||
List<Map> resultMap = new ArrayList<>();
|
||||
|
||||
List<NutMap> unionList = baseService.listMap(Sqls.create("select * from `union`"));
|
||||
|
||||
|
||||
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.getString("id")) && 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.getString("id")) && 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 {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, resultMap);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("年度" + (isMenWomen == 1 ? "男子" : "女子") + "团体总分.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/getAnnualResults")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public void getAnnualResults(@RequestParam Integer year, HttpServletResponse response) {
|
||||
ArrayList<Map> resultMap = new ArrayList<>();
|
||||
|
||||
|
||||
List<NutMap> unionList = baseService.listMap(Sqls.create("select * from `union`"));
|
||||
List<ActivitySchool> activitySchoolList = baseService.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.getString("id"));
|
||||
NutMap scoreMap = baseService.fetch(sql);
|
||||
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 {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, resultMap);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("年度团体总分.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping("/isMaleFemale")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public void isMaleFemale(@RequestParam String activityId,
|
||||
@RequestParam Integer sex,
|
||||
@RequestParam Integer awardsMode,
|
||||
HttpServletResponse response) {
|
||||
NutMap map = new NutMap();
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
|
||||
//查询所有的工会
|
||||
List<NutMap> query = baseService.listMap(Sqls.create("select * from `union`"));
|
||||
Cnd cndX = Cnd.NEW();
|
||||
//查询所有的项目
|
||||
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 == 0 ? 1 : 2);
|
||||
}
|
||||
if (awardsMode == 3) {
|
||||
cndX.and("eve.isInterest", "=", true);
|
||||
}
|
||||
if (awardsMode == 4) {
|
||||
cndX.and(Cnd.exps("eve.isMenWomen", "=", sex == 0 ? 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);
|
||||
|
||||
//查询每个工会下每个项目的成绩
|
||||
query.forEach(v -> {
|
||||
NutMap nutMap = new NutMap();
|
||||
//记录总积分
|
||||
double totalScore = 0;
|
||||
nutMap.setv("unionname", v.getString("unionName"));
|
||||
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
|
||||
""");
|
||||
Cnd cndC = Cnd.NEW();
|
||||
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 == 0 ? 1 : 2);
|
||||
} else if (awardsMode == 3) {
|
||||
cndC.and("ev.isInterest", "=", true);
|
||||
} else if (awardsMode == 4) {
|
||||
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex == 0 ? 1 : 2).or("ev.isMenWomen", "is", null));
|
||||
}
|
||||
cndC.and("ar.eventId", "=", event.getString("eventid"));
|
||||
cndC.and("ar.unionid", "=", v.getString("id"));
|
||||
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 {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, result);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("分工会" + (sex == 0 ? "男子" : "女子") + "项目积分.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/isTopEight")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public void isTopEight(@RequestParam String activityId,
|
||||
@RequestParam Integer sex,
|
||||
@RequestParam Integer awardsMode, HttpServletResponse response) {
|
||||
NutMap map = new NutMap();
|
||||
List<Record> result = new ArrayList<>();
|
||||
Cnd cndX = Cnd.NEW();
|
||||
//查询所有的项目
|
||||
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 == 0 ? 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("");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
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 `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 == 0 ? "男子" : "女子");
|
||||
try {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, nutMaps);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(sex2 + "项目前八.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/isScoreTopEight")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public void isScoreTopEight(@RequestParam String activityId,
|
||||
@RequestParam Integer sex,
|
||||
HttpServletResponse response) {
|
||||
|
||||
NutMap map = new NutMap();
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
Cnd cndX = Cnd.NEW();
|
||||
//查询所有的项目
|
||||
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 == 0 ? 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<NutMap> query = baseService.listMap(Sqls.create("select * from `union`"));
|
||||
|
||||
for (NutMap sys_union : query) {
|
||||
NutMap nutMap = new NutMap();
|
||||
|
||||
//记录总积分
|
||||
double totalScore = 0;
|
||||
nutMap.setv("unionname", sys_union.getString("unionName"));
|
||||
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
|
||||
""");
|
||||
Cnd cndC = Cnd.NEW();
|
||||
cndC.and(Cnd.exps("ev.isMenWomen", "=", sex == 0 ? 1 : 2).or("ev.isMenWomen", "is", null));
|
||||
cndC.and("ar.unionid", "=", sys_union.getString("id"));
|
||||
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 {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, result);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("分工会" + (sex == 0 ? "男" : "女") + "子总分.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/doExcelCj")
|
||||
@RequiresPermissions("activity:sports:sportsActivityScoreStatistics")
|
||||
public void doExcelCj(@RequestParam String activityId,
|
||||
@RequestParam 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 `union` un ON un.id = ar.unionId
|
||||
LEFT JOIN `user` us ON us.userId = 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 = baseService.listMap(sql);
|
||||
list.forEach(v -> {
|
||||
if (StrUtil.isNotBlank(v.getString("sex"))) {
|
||||
v.setv("sex", v.getInt("sex") == 0 ? "男" : "女");
|
||||
} else {
|
||||
v.setv("sex", "团体");
|
||||
}
|
||||
});
|
||||
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));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("成绩名单.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
package com.ruoyi.activity.controller.sports;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnion;
|
||||
import com.ruoyi.activity.service.basic.ActivityEventService;
|
||||
import com.ruoyi.activity.service.sports.ActivitySchoolService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
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.json.Json;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 体育活动公共
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/31 14:48
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sports/common")
|
||||
public class SportsActivityCommonController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@Autowired
|
||||
private ActivitySchoolService activitySchoolService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ActivityEventService activityEventService;
|
||||
|
||||
/**
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @description查询所有体育活动
|
||||
* @author zhf
|
||||
* @date 2023/1/31 14:47
|
||||
*/
|
||||
@GetMapping("/getActivitys")
|
||||
public AjaxResult getActivitys(Integer year) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06")) {
|
||||
if (AuthUtil.hasRole("H04")) {
|
||||
cnd.and("belongUnionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (AuthUtil.hasRole("H02")) {
|
||||
List<NutMap> nutMaps = remoteClubService.getClubsByRole().getData();
|
||||
List<String> stids = nutMaps.stream().map(v -> v.getString("stid")).collect(Collectors.toList());
|
||||
cnd.and("belongClubId", "in", stids);
|
||||
}
|
||||
}
|
||||
cnd.andEX("YEAR(applyEndTime)", "=", year);
|
||||
return AjaxResult.success(activitySchoolService.query(cnd));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取活动项目
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getEvents")
|
||||
public AjaxResult 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 AjaxResult.success(activityEventService.listMap(sql));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getEventData")
|
||||
public AjaxResult getEventData(String id) {
|
||||
return AjaxResult.success(activityEventService.fetch(id));
|
||||
}
|
||||
|
||||
@GetMapping("/findOne")
|
||||
public AjaxResult findOne(String id) {
|
||||
|
||||
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 = activitySchoolService.listMap(eventSql);
|
||||
nutMap.setv("events", eventMap);
|
||||
|
||||
Sql sql1 = Sqls.create("""
|
||||
SELECT
|
||||
app.*,
|
||||
team.`name` team,
|
||||
unit.dept_name unitname
|
||||
FROM
|
||||
activity_school_apply app
|
||||
LEFT JOIN activity_school_team team ON app.teamId = team.id
|
||||
LEFT JOIN dept unit ON app.unitId = unit.dept_id
|
||||
WHERE
|
||||
app.activityId = @id
|
||||
ORDER BY
|
||||
app.identity DESC,
|
||||
team.location ASC,
|
||||
app.sex
|
||||
""").setParam("id", id);
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06") && AuthUtil.hasRole("H04")) {
|
||||
sql1.setVar("union", " AND app.unionId = '" + SecurityUtils.getUnionId() + "' ");
|
||||
}
|
||||
|
||||
List<NutMap> applies = activitySchoolService.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 (!AuthUtil.hasAnyRoles("admin,A06") && AuthUtil.hasRole("H04")) {
|
||||
unionCnd.and("id", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
|
||||
List<ActivityBasicUnion> unions = activitySchoolService.dao().query(ActivityBasicUnion.class, unionCnd);
|
||||
|
||||
for (ActivityBasicUnion 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 AjaxResult.success().put("data", nutMap);
|
||||
}
|
||||
|
||||
}
|
||||
+231
@@ -0,0 +1,231 @@
|
||||
package com.ruoyi.activity.controller.sports.mobile;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnion;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnit;
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchool;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolApply;
|
||||
import com.ruoyi.activity.api.domain.sports.ActivitySchoolTeam;
|
||||
import com.ruoyi.activity.param.ActivityMobileSignUpParam;
|
||||
import com.ruoyi.activity.service.sports.mobile.MobileActivityApplyService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.annotation.RequiresRoles;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName MobileActivityApplyController
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2023/3/3 10:35
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mobile/sports/activityApply")
|
||||
public class MobileActivityApplyController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private MobileActivityApplyService mobileActivityApplyService;
|
||||
|
||||
|
||||
@DeleteMapping("/doDeleteApply")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult doDeleteApply(@RequestParam String activityId,
|
||||
@RequestParam String userId,
|
||||
@RequestParam String eventId) {
|
||||
mobileActivityApplyService.doDeleteApply(activityId, userId, eventId);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/getActivityData")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult getActivityData(String activityId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
asa.*
|
||||
FROM
|
||||
`activity_school_apply` asa
|
||||
LEFT JOIN activity_school_event ase ON ase.eventId = asa.eventId
|
||||
AND ase.activityId = asa.activityId
|
||||
AND ase.restrictRegNumber > 0
|
||||
WHERE
|
||||
asa.activityId=@activityId and asa.userId=@userId
|
||||
GROUP BY asa.id
|
||||
""").setParam("activityId",activityId).setParam("userId",SecurityUtils.getUserId());
|
||||
List<NutMap> query = mobileActivityApplyService.listMap(sql);
|
||||
return AjaxResult.success(query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 查询该小队的报名人
|
||||
*/
|
||||
@GetMapping("/getTeamUserData")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult getTeamUserData(@RequestParam(required = false) String teamId,
|
||||
@RequestParam String activityId,
|
||||
@RequestParam String eventId,
|
||||
@RequestParam(required = false) Integer applyType) {
|
||||
|
||||
ActivityBasicUnit basicUnit = mobileActivityApplyService.dao().fetch(ActivityBasicUnit.class, Cnd.where("dept_id", "=", SecurityUtils.getDeptId()));
|
||||
if (Lang.isNotEmpty(basicUnit)) {
|
||||
ActivityBasicUnion basicUnion = mobileActivityApplyService.dao().fetch(ActivityBasicUnion.class, basicUnit.getUnionId());
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT * FROM activity_school_apply $condition
|
||||
""");
|
||||
cnd.andEX("teamId", "=", teamId);
|
||||
cnd.andEX("status", "=", 2);
|
||||
cnd.andEX("activityId", "=", activityId);
|
||||
cnd.andEX("eventId", "=", eventId);
|
||||
if (applyType != null && applyType != 3) {
|
||||
cnd.andEX("activityUnionId", "=", basicUnion.getId());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(mobileActivityApplyService.listMap(sql));
|
||||
}
|
||||
return AjaxResult.error("您活动工会存在问题,请联系管理员!");
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doActivityUser")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult doActivityUser(@RequestParam String activityId,
|
||||
@RequestParam String eventId,
|
||||
@RequestParam(required = false) String teamId,
|
||||
@RequestParam(required = false) String teamName) {
|
||||
mobileActivityApplyService.doActivityUser(activityId, eventId, teamId, teamName);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doTeamSignUp")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult doTeamSignUp(@RequestBody ActivityMobileSignUpParam param) {
|
||||
// mobileActivityApplyService.doTeamSignUp(activityId,userIds, eventId, teamId, teamName);
|
||||
mobileActivityApplyService.doTeamSignUp(param.getActivityId(),param.getUserIds(),param.getEventId(),param.getTeamId(),param.getTeamName());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @param eventId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description根据活动加项目查找小队
|
||||
*/
|
||||
@GetMapping("/getActivityTeamId")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult getActivityTeamId(String activityId, String eventId) {
|
||||
return AjaxResult.success(mobileActivityApplyService.dao().query(ActivitySchoolTeam.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).asc("location")));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@GetMapping("/searchNoRegisterUser")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult searchNoRegisterUser(@RequestParam(required = false) String searchKey,
|
||||
@RequestParam(required = false) String activityId,
|
||||
@RequestParam(required = false) Boolean isTeamSignUp,
|
||||
@RequestParam(required = false) String isMenWomen,String eventId) {
|
||||
|
||||
ActivitySchool activitySchool = mobileActivityApplyService.dao().fetch(ActivitySchool.class, Cnd.where("id", "=", activityId));
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId id,
|
||||
loginName,
|
||||
userName,
|
||||
sex,
|
||||
deptName AS unitName,
|
||||
unionName
|
||||
FROM
|
||||
`user`
|
||||
$condition
|
||||
""");
|
||||
String unionId = SecurityUtils.getUnionId();
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!isTeamSignUp){
|
||||
cnd.andEX("unionId", "=", unionId);
|
||||
}
|
||||
if (StrUtil.isNotBlank(isMenWomen)){
|
||||
cnd.andEX("sex", "=", isMenWomen.equals("1")?"0":"1");
|
||||
}
|
||||
if (Lang.isNotEmpty(searchKey)) {
|
||||
cnd.and(Cnd.exps(Cnd.likeEX("username", searchKey.trim())).or(Cnd.likeEX("loginname", searchKey.trim())));
|
||||
}
|
||||
|
||||
cnd.and(new Static("""
|
||||
userId not in (SELECT userId FROM activity_school_apply WHERE activityId = '%s' and eventId='%s')
|
||||
""".formatted(activityId,eventId)));
|
||||
if (activitySchool.getActivityGroupId() != null) {
|
||||
cnd.and(new Static("""
|
||||
userId IN ( SELECT userId FROM activity_user_scope WHERE groupId IN ( SELECT activityGroupId FROM activity_school WHERE id = '%s' AND activityGroupId IS NOT NULL ) )
|
||||
""".formatted(activityId)));
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(mobileActivityApplyService.listPageMap(1, 10, sql));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/selectRegisterList")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult selectRegisterList(String activityId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId AS id,
|
||||
username userName,
|
||||
loginname loginName,
|
||||
unitname unitName,
|
||||
sex,
|
||||
activityUnionName unionName,
|
||||
activityUnionId unionId,
|
||||
eventId,
|
||||
applyUser
|
||||
FROM
|
||||
activity_school_apply
|
||||
$condition
|
||||
""");
|
||||
cnd.and("activityId", "=", activityId);
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = mobileActivityApplyService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/findActivityData")
|
||||
@RequiresRoles(value = {"admin", "common"}, logical = Logical.OR)
|
||||
public AjaxResult findActivityData(String activityId,String projectTypeCode){
|
||||
if ("50004".equals(projectTypeCode)){
|
||||
ActivitySchool school = mobileActivityApplyService.dao().fetch(ActivitySchool.class, activityId);
|
||||
return AjaxResult.success(school);
|
||||
}else{
|
||||
ActivityTissue tissue = mobileActivityApplyService.dao().fetch(ActivityTissue.class, activityId);
|
||||
return AjaxResult.success(tissue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpActivity;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUser;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/4
|
||||
* @Description 新建活动
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/activityAdd")
|
||||
public class TrainSignUpActivityAddController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TrainSignUpActivityService trainSignUpActivityManageService;
|
||||
|
||||
@Autowired
|
||||
public TrainSignUpActivityAddController(TrainSignUpActivityService trainSignUpActivityService) {
|
||||
this.trainSignUpActivityManageService = trainSignUpActivityService;
|
||||
}
|
||||
|
||||
@PostMapping("doHandle")
|
||||
@RequiresPermissions("activity:trainSignUp:activityAdd")
|
||||
public AjaxResult doHandle(@RequestBody TrainSignUpActivity activity) {
|
||||
if (StrUtil.isBlank(activity.getId())) {
|
||||
trainSignUpActivityManageService.add(activity, null);
|
||||
} else {
|
||||
trainSignUpActivityManageService.edit(activity);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getUnionLimit")
|
||||
@RequiresPermissions("activity:trainSignUp:activityAdd")
|
||||
public AjaxResult getUnionLimit(String activityScopeId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
gh.id,
|
||||
gh.unionName as unionname,
|
||||
gh.unionCode as unioncode,
|
||||
(select count(1) from `user` where unionId = gh.id $cnd) as teacherCount,
|
||||
0 as ratio,
|
||||
0 as limitCount
|
||||
FROM
|
||||
`union` gh
|
||||
order by gh.unionCode
|
||||
""");
|
||||
if (StrUtil.isNotBlank(activityScopeId)) {
|
||||
sql.setVar("cnd", "AND userId in (select userId from activity_user_scope where groupId = '" + activityScopeId + "')");
|
||||
}
|
||||
List<NutMap> nutMaps = trainSignUpActivityManageService.listMap(sql);
|
||||
return AjaxResult.success(nutMaps);
|
||||
}
|
||||
|
||||
@GetMapping("getRegisterUserCount")
|
||||
@RequiresPermissions("activity:trainSignUp:activityAdd")
|
||||
public AjaxResult getRegisterUserCount(String courseId) {
|
||||
//已报人数
|
||||
int count = dao.count(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
@GetMapping("getHistoricalActList")
|
||||
@RequiresPermissions("activity:trainSignUp:activityAdd")
|
||||
public Object getHistoricalActList() {
|
||||
List<TrainSignUpActivity> query = dao.query(TrainSignUpActivity.class, Cnd.NEW().desc("activityStartTime"));
|
||||
return AjaxResult.success(query);
|
||||
}
|
||||
}
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpActivity;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpActivityCourse;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpType;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUser;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteDictService;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
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.Static;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/4
|
||||
* @Description 品牌活动 报名
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/apply")
|
||||
public class TrainSignUpActivityApplyController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private TrainSignUpActivityService trainSignUpActivityService;
|
||||
|
||||
@Autowired
|
||||
private RemoteDictService remoteDictService;
|
||||
|
||||
@PostMapping("activityData")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult activityData(@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "activityType", required = false) Integer activityType) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("`year`", "=", year);
|
||||
cnd.and("isDisabled", "=", false);
|
||||
//查询报名中
|
||||
if (activityType == 2) {
|
||||
cnd.and(new Static("now() > activitySignUpStartTime and now() < activitySignUpEndTime"));
|
||||
}//查询已结束的
|
||||
else if (activityType == 3) {
|
||||
cnd.and(new Static("now() > activityEndTime"));
|
||||
}
|
||||
|
||||
List<TrainSignUpActivity> trainSignUpActivities = trainSignUpActivityService.query(cnd);
|
||||
List<SysDictData> trainSignUpTypeList = remoteDictService.dictType("trainSignUpType").getData();
|
||||
Map<String, String> trainSignUpTypeMap = trainSignUpTypeList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
trainSignUpActivities.forEach(v -> v.setTrainType(trainSignUpTypeMap.get(v.getTrainType())));
|
||||
return AjaxResult.success(trainSignUpActivities);
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "courseTypeId", required = false) String courseTypeId,
|
||||
@RequestParam(value = "activityId", required = false) String activityId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
tsuc.id,
|
||||
tsuc.activityId,
|
||||
tsuc.courseName,
|
||||
tsuc.coursePeopleNumber,
|
||||
tsuc.courseLocation,
|
||||
tsuc.courseType,
|
||||
tsuc.courseLocationCoordinates,
|
||||
tsuc.courseReservedNumber,
|
||||
tsuc.courseInstructor,
|
||||
tsuc.campus,
|
||||
tsuc.conditionStructureId,
|
||||
tsuc.unionLimit,
|
||||
tsuc.isMobileSign,
|
||||
tsuc.signType,
|
||||
tsuc.isReceiveGift,
|
||||
tsuc.giftType,
|
||||
type.lxname
|
||||
FROM
|
||||
`train_sign_up_course` tsuc
|
||||
LEFT JOIN train_sign_up_type type ON type.id = tsuc.courseType
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("type.id","=",courseTypeId);
|
||||
cnd.and("tsuc.activityId","=",activityId);
|
||||
cnd.asc("type.code");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = trainSignUpActivityService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> courseList = pagination.getList();
|
||||
|
||||
courseList.forEach(c -> {
|
||||
List<TrainSignUpActivityCourse> signUpActivityCourses = trainSignUpActivityService.dao().query(TrainSignUpActivityCourse.class, Cnd.where("courseId", "=", c.getString("id")));
|
||||
c.put("courseTimeList", signUpActivityCourses);
|
||||
//已报人数
|
||||
List<TrainSignUpUser> signUpUsers = trainSignUpActivityService.dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", c.getString("id")));
|
||||
c.put("hasRegisterNum", signUpUsers.size());
|
||||
//当前用户是否报过
|
||||
c.put("isSign",trainSignUpActivityService.isSignCourseByUser(c.getString("id"), SecurityUtils.getUserId()));
|
||||
|
||||
//这个类型的班还能不能报
|
||||
boolean signCourse = trainSignUpActivityService.isSignCourse(c.getString("id"), activityId);
|
||||
c.put("canSignThisCourseType", signCourse);
|
||||
});
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("getCourseTime")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult getCourseTime(String id) {
|
||||
List<TrainSignUpActivityCourse> courses = trainSignUpActivityService.dao().query(TrainSignUpActivityCourse.class, Cnd.where("courseId", "=", id).asc("courseStartTime"));
|
||||
return AjaxResult.success(courses);
|
||||
}
|
||||
}
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.*;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.domain.MatchConditionStructure;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/activityManage")
|
||||
public class TrainSignUpActivityManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TrainSignUpActivityService trainSignUpActivityManageService;
|
||||
|
||||
@Autowired
|
||||
public TrainSignUpActivityManageController(TrainSignUpActivityService trainSignUpActivityService) {
|
||||
this.trainSignUpActivityManageService = trainSignUpActivityService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:trainSignUp:activityManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "activityName", required = false) String activityName) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.and(Cnd.likeEX("activityName", activityName));
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("admin")) {
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
|
||||
cnd.orderBy("ctime", "desc");
|
||||
Pagination pagination = trainSignUpActivityManageService.pageData(pageForm, cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("activity:trainSignUp:activityManage")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
trainSignUpActivityManageService.delete(id);
|
||||
dao.clear(TrainSignUpCourse.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(TrainSignUpUser.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(TrainSignUpUserCourse.class, Cnd.where("activityId", "=", id));
|
||||
dao.clear(TrainSignUpActivity.class, Cnd.where("id", "=", id));
|
||||
dao.clear(TrainSignUpTypeLimit.class, Cnd.where("activityId", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("activityStatusChange")
|
||||
@RequiresPermissions("activity:trainSignUp:activityManage")
|
||||
public AjaxResult activityStatusChange(@RequestBody TrainSignUpActivity activity) {
|
||||
trainSignUpActivityManageService.updateActivityStatus(activity);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
@RequiresPermissions("activity:trainSignUp:activityManage")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
NutMap dataMap = trainSignUpActivityManageService.findOne(id, null);
|
||||
String activityStartTime = dataMap.getString("activityStartTime");
|
||||
String activityEndTime = dataMap.getString("activityEndTime");
|
||||
dataMap.put("activityTime", List.of(activityStartTime, activityEndTime));
|
||||
|
||||
String activitySignUpStartTime = dataMap.getString("activitySignUpStartTime");
|
||||
String activitySignUpEndTime = dataMap.getString("activitySignUpEndTime");
|
||||
dataMap.put("activitySignTime", List.of(activitySignUpStartTime, activitySignUpEndTime));
|
||||
|
||||
|
||||
List<NutMap> courseList = dataMap.getList("courseList", NutMap.class);
|
||||
|
||||
//查询所有的课程类型
|
||||
List<TrainSignUpType> trainSignUpTypeList = dao.query(TrainSignUpType.class, Cnd.NEW());
|
||||
Map<String, String> typeMap = trainSignUpTypeList.stream().collect(Collectors.toMap(TrainSignUpType::getId, TrainSignUpType::getLxname));
|
||||
|
||||
courseList.forEach(v -> {
|
||||
|
||||
if (StrUtil.isNotBlank(v.getString("conditionStructureId"))) {
|
||||
MatchConditionStructure conditionStructure = dao.fetch(MatchConditionStructure.class, v.getString("conditionStructureId"));
|
||||
dao.fetchLinks(conditionStructure, "conditions");
|
||||
v.put("conditionStructure", conditionStructure);
|
||||
}
|
||||
|
||||
List<NutMap> courseTimeList = v.getList("courseTimeList", NutMap.class);
|
||||
//选择课程日期 下拉框
|
||||
List<String> setUpCourseData = courseTimeList.stream().map(cd -> cd.getString("courseDate")).distinct().collect(Collectors.toList());
|
||||
v.put("setUpCourseData", setUpCourseData);
|
||||
|
||||
courseTimeList.forEach(ct -> {
|
||||
String courseStartTime = DateUtil.format(ct.getTime("courseStartTime"), "HH:mm");
|
||||
String courseEndTime = DateUtil.format(ct.getTime("courseEndTime"), "HH:mm");
|
||||
ct.put("courseStartTime", courseStartTime);
|
||||
ct.put("courseEndTime", courseEndTime);
|
||||
});
|
||||
|
||||
v.put("courseTypeName", typeMap.get(v.getString("courseType")));
|
||||
});
|
||||
|
||||
return AjaxResult.success(dataMap);
|
||||
}
|
||||
|
||||
@GetMapping("activityList")
|
||||
public AjaxResult activityList(Integer year) {
|
||||
List<TrainSignUpActivity> list = dao.query(TrainSignUpActivity.class, Cnd.NEW().andEX("year", "=", year).desc("activitySignUpStartTime"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
}
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
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.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainMobileSignColumn;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpCourse;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpType;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityStatisticsService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/signUpStatistics")
|
||||
public class TrainSignUpActivityStatisticsController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TrainSignUpActivityStatisticsService trainSignUpActivityStatisticsService;
|
||||
|
||||
@Autowired
|
||||
public TrainSignUpActivityStatisticsController(TrainSignUpActivityStatisticsService trainSignUpActivityStatisticsService) {
|
||||
this.trainSignUpActivityStatisticsService = trainSignUpActivityStatisticsService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:trainSignUp:signUpStatistics")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "activityId", required = false) String activityId) {
|
||||
Pagination pagination = trainSignUpActivityStatisticsService.pageData(pageForm, activityId);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("registerUserList")
|
||||
@RequiresPermissions("activity:trainSignUp:signUpStatistics")
|
||||
public AjaxResult registerUserList(String courseId) {
|
||||
List<NutMap> nutMaps = trainSignUpActivityStatisticsService.registerUserList(courseId);
|
||||
return AjaxResult.success(nutMaps);
|
||||
}
|
||||
|
||||
@GetMapping("getSignInfo")
|
||||
@RequiresPermissions("activity:trainSignUp:signUpStatistics")
|
||||
public AjaxResult getSignInfo(String courseId) {
|
||||
Map<String, List<NutMap>> signInfo = trainSignUpActivityStatisticsService.getSignInfo(courseId);
|
||||
return AjaxResult.success(signInfo);
|
||||
}
|
||||
|
||||
@RequestMapping("exportSignUser")
|
||||
public void exportSignUser(String activityId, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("content-disposition", "attachment;filename="
|
||||
+ URLEncoder.encode("报名人员.zip", StandardCharsets.UTF_8));
|
||||
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("单位", "unitname", 30));
|
||||
entityList.add(new ExcelExportEntity("分工会", "unionname", 35));
|
||||
//entityList.add(new ExcelExportEntity("手机号", "mobile", 30));
|
||||
|
||||
List<NutMap> userList = trainSignUpActivityStatisticsService.baoMingUserList(activityId);
|
||||
|
||||
List<TrainSignUpCourse> courseList = dao.query(TrainSignUpCourse.class, Cnd.where("activityId", "=", activityId));
|
||||
Map<String, TrainSignUpCourse> courseMap = courseList.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
|
||||
|
||||
//按校区分组
|
||||
Map<String, List<NutMap>> campus = userList.stream().collect(Collectors.groupingBy(o -> o.getString("campus")));
|
||||
|
||||
//查询所有校区
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysDictData> dictDataList = dao.query(SysDictData.class, Cnd.where("dict_type", "=", "campus"));
|
||||
Map<String, String> dictDataMap = dictDataList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
|
||||
ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
|
||||
|
||||
campus.forEach((key, value) -> {
|
||||
Map<String, List<NutMap>> userListMap = value.stream().collect(Collectors.groupingBy(v -> v.getString("courseId")));
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
userListMap.forEach((k, v) -> {
|
||||
|
||||
//查询课程
|
||||
TrainSignUpCourse course = courseMap.get(k);
|
||||
//查询课程类型
|
||||
TrainSignUpType trainSignUpType = dao.fetch(TrainSignUpType.class, Cnd.where("id", "=", course.getCourseType()));
|
||||
if(trainSignUpType != null) {
|
||||
dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$");
|
||||
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams userExportParams = new ExportParams();
|
||||
userExportParams.setTitle(course.getCourseName());
|
||||
userExportParams.setSheetName(course.getCourseName());
|
||||
userExportParams.setType(ExcelType.XSSF);
|
||||
|
||||
List<ExcelExportEntity> currentEntities = new ArrayList<>();
|
||||
currentEntities.addAll(entityList);
|
||||
//将课程类型配置的移动端动态字段添加到excel列中
|
||||
List<TrainMobileSignColumn> trainMobileSignColumnList = trainSignUpType.getTrainMobileSignColumnList();
|
||||
if (trainMobileSignColumnList != null && !trainMobileSignColumnList.isEmpty()) {
|
||||
trainMobileSignColumnList.forEach(item -> {
|
||||
currentEntities.add(new ExcelExportEntity(item.getColumnName(), item.getColumnCode(), 20));
|
||||
});
|
||||
}
|
||||
|
||||
for (NutMap userSignData : v) {
|
||||
String mobileColumnsValueStr = userSignData.getString("mobileColumnsValue");
|
||||
if (StrUtil.isNotBlank(mobileColumnsValueStr)) {
|
||||
List<NutMap> mobileColumnsValue = Json.fromJsonAsList(NutMap.class, mobileColumnsValueStr);
|
||||
for (NutMap cv : mobileColumnsValue) {
|
||||
if (cv.getString("columnFormType") != null && !cv.getString("columnFormType").equals("FILE")) {
|
||||
userSignData.addv(cv.getString("columnCode"), cv.getString("columnValue"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
service.createSheetForMap(workbook, userExportParams, currentEntities, v);
|
||||
}
|
||||
});
|
||||
try {
|
||||
zipOutputStream.putNextEntry(new ZipEntry(dictDataMap.get(key) + "报名人员.xlsx"));
|
||||
workbook.write(zipOutputStream);
|
||||
zipOutputStream.closeEntry();
|
||||
response.flushBuffer();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
zipOutputStream.flush();
|
||||
zipOutputStream.close();
|
||||
}
|
||||
}
|
||||
+137
@@ -0,0 +1,137 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
import cn.hutool.core.util.EnumUtil;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainMobileSignColumn;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpType;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpTypeService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.annotation.ColType;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.random.R;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/4
|
||||
* @Description 品牌活动类型管理
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/type")
|
||||
public class TrainSignUpTypeController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TrainSignUpTypeService trainSignUpTypeService;
|
||||
|
||||
@Autowired
|
||||
public TrainSignUpTypeController(TrainSignUpTypeService trainSignUpTypeService) {
|
||||
this.trainSignUpTypeService = trainSignUpTypeService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "lxname", required = false) String lxname) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
select * from train_sign_up_type $condition
|
||||
""");
|
||||
if (Strings.isNotBlank(lxname)) {
|
||||
cnd.and("lxname", "like", "%" + lxname + "%");
|
||||
}
|
||||
cnd.asc("xh");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = trainSignUpTypeService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
list.stream().forEach(item -> {
|
||||
Cnd c = Cnd.NEW();
|
||||
c.and("typeId", "=", item.getString("id"));
|
||||
c.asc("columnIndex");
|
||||
List<TrainMobileSignColumn> signColumns = dao.query(TrainMobileSignColumn.class, c);
|
||||
item.put("trainMobileSignColumnList", signColumns);
|
||||
|
||||
});
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doAdd")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult doAdd(@RequestBody TrainSignUpType type) {
|
||||
int count = dao.count(TrainSignUpType.class, Cnd.where("code", "=", type.getCode()));
|
||||
if (count > 0) {
|
||||
return AjaxResult.error("编码重复!");
|
||||
}
|
||||
type.setId(R.UU32());
|
||||
int totalCount = dao.count(TrainSignUpType.class);
|
||||
type.setXh(totalCount + 1);
|
||||
dao.insertWith(type, "trainMobileSignColumnList");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doEdit")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult doEdit(@RequestBody TrainSignUpType type) {
|
||||
int count = dao.count(TrainSignUpType.class, Cnd.where("code", "=", type.getCode()).and("id", "!=", type.getId()));
|
||||
if (count > 0) {
|
||||
return AjaxResult.error("编码重复");
|
||||
}
|
||||
dao.update(type);
|
||||
dao.clear(TrainMobileSignColumn.class, Cnd.where("typeId", "=", type.getId()));
|
||||
dao.insertLinks(type, "trainMobileSignColumnList");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
dao.clear(TrainSignUpType.class, Cnd.where("id", "=", id));
|
||||
dao.clear(TrainMobileSignColumn.class, Cnd.where("typeId", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("rowChange")
|
||||
@RequiresPermissions("activity:trainSignUp:trainSignUpType")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult rowChange(String id, Integer xh, boolean toDown) {
|
||||
if (toDown) {
|
||||
TrainSignUpType next = dao.fetch(TrainSignUpType.class, Cnd.where("xh", "=", xh + 1));
|
||||
next.setXh(next.getXh() - 1);
|
||||
dao.update(next);
|
||||
dao.update(TrainSignUpType.class, Chain.make("xh", xh + 1), Cnd.where("id", "=", id));
|
||||
} else {
|
||||
TrainSignUpType pre = dao.fetch(TrainSignUpType.class, Cnd.where("xh", "=", xh - 1));
|
||||
pre.setXh(pre.getXh() + 1);
|
||||
dao.update(pre);
|
||||
dao.update(TrainSignUpType.class, Chain.make("xh", xh - 1), Cnd.where("id", "=", id));
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getAllType")
|
||||
public AjaxResult getAllType(String id) {
|
||||
List<TrainSignUpType> list = dao.query(TrainSignUpType.class, Cnd.NEW().andEX("id", "=", id).asc("xh"));
|
||||
dao.fetchLinks(list, "trainMobileSignColumnList", Cnd.NEW().asc("columnIndex"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getColumnType")
|
||||
public AjaxResult getColumnType() {
|
||||
List<String> names = EnumUtil.getNames(ColType.class);
|
||||
names.add("JSON");
|
||||
return AjaxResult.success(names);
|
||||
}
|
||||
}
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpActivity;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpActivityCourse;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUser;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUserCourse;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityStatisticsService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.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.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/userAdjust")
|
||||
public class TrainSignUpUserAdjustController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TrainSignUpActivityStatisticsService trainSignUpActivityStatisticsService;
|
||||
|
||||
@Autowired
|
||||
public TrainSignUpUserAdjustController(TrainSignUpActivityStatisticsService trainSignUpActivityStatisticsService) {
|
||||
this.trainSignUpActivityStatisticsService = trainSignUpActivityStatisticsService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:trainSignUp:userAdjust")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "activityId", required = false) String activityId) {
|
||||
Pagination pagination = trainSignUpActivityStatisticsService.pageData(pageForm, activityId);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("activityList")
|
||||
public AjaxResult activityList(Integer year) {
|
||||
List<TrainSignUpActivity> list = dao.query(TrainSignUpActivity.class, Cnd.NEW().andEX("year", "=", year).andEX("isDisabled", "=", false).desc("activitySignUpStartTime"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getCourse")
|
||||
@RequiresPermissions("activity:trainSignUp:userAdjust")
|
||||
public AjaxResult getCourse(String activityId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
tsuc.id,
|
||||
tsuc.courseName,
|
||||
tsuc.coursePeopleNumber,
|
||||
tsuc.courseType,
|
||||
tsuc.courseLocation,
|
||||
tsuc.courseInstructor,
|
||||
tsuc.courseReservedNumber,
|
||||
( SELECT count( 1 ) FROM train_sign_up_user WHERE courseId = tsuc.id ) registerNum
|
||||
FROM
|
||||
`train_sign_up_course` tsuc
|
||||
WHERE
|
||||
tsuc.activityId = @activityId
|
||||
ORDER BY courseName asc
|
||||
""");
|
||||
sql.setParam("activityId", activityId);
|
||||
List list = trainSignUpActivityStatisticsService.listMap(sql);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("registerUserList")
|
||||
@RequiresPermissions("activity:trainSignUp:userAdjust")
|
||||
public AjaxResult registerUserList(String courseId, String unionId, String unitId, String searchName, String searchKeyword) {
|
||||
List<NutMap> nutMaps = trainSignUpActivityStatisticsService.registerUserList(courseId, unionId, unitId, searchName, searchKeyword);
|
||||
return AjaxResult.success(nutMaps);
|
||||
}
|
||||
|
||||
@GetMapping("adjust")
|
||||
@RequiresPermissions("activity:trainSignUp:userAdjust")
|
||||
public AjaxResult adjust(String activityId, String oldCourseId, String newCourseId, Long userId) {
|
||||
Cnd oldCnd = Cnd.where("activityId", "=", activityId)
|
||||
.and("courseId", "=", oldCourseId).and("userId", "=", userId);
|
||||
|
||||
Cnd newCnd = Cnd.where("activityId", "=", activityId)
|
||||
.and("courseId", "=", newCourseId).and("userId", "=", userId);
|
||||
|
||||
//旧的报名信息
|
||||
TrainSignUpUser oldTrainSignUpUser = dao.fetch(TrainSignUpUser.class, oldCnd);
|
||||
oldTrainSignUpUser.setCourseId(newCourseId);
|
||||
oldTrainSignUpUser.setSignUpTime(DateUtil.date());
|
||||
dao.update(oldTrainSignUpUser);
|
||||
|
||||
//新的课程的信息,上课时间
|
||||
List<TrainSignUpActivityCourse> activityCourseList = dao.query(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", activityId)
|
||||
.and("courseId", "=", newCourseId));
|
||||
//先清楚旧的信息
|
||||
dao.clear(TrainSignUpUserCourse.class, oldCnd);
|
||||
//添加新的信息
|
||||
List<TrainSignUpUserCourse> trainSignUpUserCourseList = new ArrayList<>();
|
||||
activityCourseList.stream().forEach(item -> {
|
||||
TrainSignUpUserCourse course = new TrainSignUpUserCourse();
|
||||
course.setActivityCourseId(activityId);
|
||||
course.setCourseId(newCourseId);
|
||||
course.setUserId(userId);
|
||||
course.setCourseStartTime(item.getCourseStartTime());
|
||||
course.setCourseEndTime(item.getCourseEndTime());
|
||||
course.setActivityCourseId(item.getId());
|
||||
trainSignUpUserCourseList.add(course);
|
||||
});
|
||||
dao.insert(trainSignUpUserCourseList);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("deleteSignUser")
|
||||
@RequiresPermissions("activity:trainSignUp:userAdjust")
|
||||
public AjaxResult deleteSignUser(String activityId, String courseId, String userId) {
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("activityId", "=", activityId);
|
||||
cnd.and("courseId", "=", courseId);
|
||||
cnd.and("userId", "=", userId);
|
||||
|
||||
dao.clear(TrainSignUpUser.class, cnd);
|
||||
dao.clear(TrainSignUpUserCourse.class, cnd);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+270
@@ -0,0 +1,270 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp;
|
||||
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.afterturn.easypoi.excel.export.ExcelExportService;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpActivity;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpCourse;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpUserManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
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.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/trainSignUp/userManage")
|
||||
public class TrainSignUpUserManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
private TrainSignUpUserManageService trainSignUpUserManageService;
|
||||
|
||||
@Autowired
|
||||
public TrainSignUpUserManageController(TrainSignUpUserManageService trainSignUpUserManageService) {
|
||||
this.trainSignUpUserManageService = trainSignUpUserManageService;
|
||||
}
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("activity:trainSignUp:userManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "courseId", required = false) String courseId,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "userKeyWord", required = false) String userKeyWord) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("tsuu.activityId", "=", activityId);
|
||||
cnd.andEX("tsuu.courseId", "=", courseId);
|
||||
cnd.andEX("act.year", "=", year);
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("admin")) {
|
||||
cnd.and("act.userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(userKeyWord)) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
cnd.and(seg.andLike("u.userName", userKeyWord).orLike("u.loginName", userKeyWord));
|
||||
}
|
||||
|
||||
Pagination pagination = trainSignUpUserManageService.pageData(pageForm, cnd, activityId, courseId);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doHandleUser")
|
||||
@RequiresPermissions("activity:trainSignUp:userManage")
|
||||
public AjaxResult doHandleUser(@RequestParam Long userId) {
|
||||
trainSignUpUserManageService.doHandleUser(userId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("attendClassRecord")
|
||||
@RequiresPermissions("activity:trainSignUp:userManage")
|
||||
public AjaxResult attendClassRecord(Long userId) {
|
||||
trainSignUpUserManageService.attendClassRecord(userId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("exportSignPerson")
|
||||
@RequiresLogin
|
||||
public void exportSignPerson(String activityId, HttpServletResponse response) {
|
||||
TrainSignUpActivity activity = dao.fetch(TrainSignUpActivity.class, activityId);
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
uc.*,
|
||||
DATE_FORMAT(uc.courseStartTime, '%Y-%m-%d %H:%i:%s') as courseStartTimeExcel,
|
||||
DATE_FORMAT(uc.courseEndTime, '%Y-%m-%d %H:%i:%s') as courseEndTimeExcel,
|
||||
DATE_FORMAT(uc.attendTime, '%Y-%m-%d %H:%i:%s') as attendTimeExcel,
|
||||
u.userName as username,
|
||||
u.loginName as loginname,
|
||||
u.deptName as unitname,
|
||||
u.unionName as unionname,
|
||||
(case u.sex when 0 then '男' when 1 then '女' else '未知' end) as sex
|
||||
FROM
|
||||
train_sign_up_user_course uc
|
||||
left join train_sign_up_course course on uc.courseId = course.id
|
||||
left join `user` u on u.userId = uc.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("uc.activityId", "=", activityId);
|
||||
cnd.and("course.isMobileSign", "=", true);
|
||||
cnd.desc("isAttend").desc("attendTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<NutMap> userList = trainSignUpUserManageService.listMap(sql);
|
||||
|
||||
List<TrainSignUpCourse> courseList = dao.query(TrainSignUpCourse.class, Cnd.where("activityId", "=", activityId));
|
||||
|
||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||
|
||||
List<ExcelExportEntity> excelCommonExportEntity = new ArrayList<>();
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("姓名", "username", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("单位", "unitname", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("分工会", "unionname", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("开始时间", "courseStartTimeExcel", 22));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("结束时间", "courseEndTimeExcel", 22));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("是否签到", "isAttend", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("签到时间", "attendTimeExcel", 22));
|
||||
|
||||
for (TrainSignUpCourse c : courseList) {
|
||||
String courseId = c.getId();
|
||||
String courseName = c.getCourseName();
|
||||
List<NutMap> v = userList.stream().filter(x -> x.getString("courseId").equals(courseId)).collect(Collectors.toList());
|
||||
ExportParams userExportParams = new ExportParams();
|
||||
userExportParams.setSheetName(courseName);
|
||||
|
||||
List<ExcelExportEntity> currentEntities = new ArrayList<>(excelCommonExportEntity);
|
||||
for (NutMap userSignData : v) {
|
||||
if (!userSignData.getBoolean("isAttend")) {
|
||||
userSignData.put("isAttend", "未签到");
|
||||
userSignData.put("attendTimeExcel", "未签到");
|
||||
} else {
|
||||
userSignData.put("isAttend", "已签到");
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> userExportMap = new HashMap<>();
|
||||
userExportMap.put("name", courseName);
|
||||
userExportMap.put("title", userExportParams);
|
||||
userExportMap.put("entity", currentEntities);
|
||||
userExportMap.put("data", v);
|
||||
|
||||
sheetsList.add(userExportMap);
|
||||
try {
|
||||
String fileName = activity.getActivityName() + "签到人员名单.xls";
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
Workbook workbook = new HSSFWorkbook();
|
||||
for (Map<String, Object> map : sheetsList) {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
service.createSheetForMap(workbook, (ExportParams) map.get("title"), (List<ExcelExportEntity>) map.get("entity"), (Collection<?>) map.get("data"));
|
||||
}
|
||||
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("exportGiftPerson")
|
||||
@RequiresLogin
|
||||
public void exportGiftPerson(String activityId, HttpServletResponse response) {
|
||||
TrainSignUpActivity activity = dao.fetch(TrainSignUpActivity.class, activityId);
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
uc.*,
|
||||
DATE_FORMAT(uc.courseStartTime, '%Y-%m-%d %H:%i:%s') as courseStartTimeExcel,
|
||||
DATE_FORMAT(uc.courseEndTime, '%Y-%m-%d %H:%i:%s') as courseEndTimeExcel,
|
||||
DATE_FORMAT(uc.receiveTime, '%Y-%m-%d %H:%i:%s') as receiveTimeExcel,
|
||||
u.userName as username,
|
||||
u.loginName as loginname,
|
||||
u.deptName as unitname,
|
||||
u.unionName as unionname,
|
||||
(case u.sex when 0 then '男' when 1 then '女' else '未知' end) as sex
|
||||
FROM
|
||||
train_sign_up_user_course uc
|
||||
left join train_sign_up_course course on uc.courseId = course.id
|
||||
left join `user` u on u.userId = uc.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("uc.activityId", "=", activityId);
|
||||
cnd.and("course.isReceiveGift", "=", true).and("course.giftType", "=", 1);
|
||||
cnd.desc("isReceive").desc("receiveTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<NutMap> userList = trainSignUpUserManageService.listMap(sql);
|
||||
|
||||
List<TrainSignUpCourse> courseList = dao.query(TrainSignUpCourse.class, Cnd.where("activityId", "=", activityId));
|
||||
|
||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||
|
||||
List<ExcelExportEntity> excelCommonExportEntity = new ArrayList<>();
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("姓名", "username", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("单位", "unitname", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("分工会", "unionname", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("开始时间", "courseStartTimeExcel", 22));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("结束时间", "courseEndTimeExcel", 22));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("是否领取", "isReceive", 20));
|
||||
excelCommonExportEntity.add(new ExcelExportEntity("领取时间", "receiveTimeExcel", 22));
|
||||
|
||||
for (TrainSignUpCourse c : courseList) {
|
||||
String courseId = c.getId();
|
||||
String courseName = c.getCourseName();
|
||||
List<NutMap> v = userList.stream().filter(x -> x.getString("courseId").equals(courseId)).collect(Collectors.toList());
|
||||
ExportParams userExportParams = new ExportParams();
|
||||
userExportParams.setSheetName(courseName);
|
||||
|
||||
List<ExcelExportEntity> currentEntities = new ArrayList<>(excelCommonExportEntity);
|
||||
for (NutMap userSignData : v) {
|
||||
if (!userSignData.getBoolean("isReceive")) {
|
||||
userSignData.put("isReceive", "未领取");
|
||||
userSignData.put("receiveTimeExcel", "未领取");
|
||||
} else {
|
||||
userSignData.put("isReceive", "已领取");
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> userExportMap = new HashMap<>();
|
||||
userExportMap.put("name", courseName);
|
||||
userExportMap.put("title", userExportParams);
|
||||
userExportMap.put("entity", currentEntities);
|
||||
userExportMap.put("data", v);
|
||||
|
||||
sheetsList.add(userExportMap);
|
||||
try {
|
||||
String fileName = activity.getActivityName() + "礼品领取人员名单.xls";
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
Workbook workbook = new HSSFWorkbook();
|
||||
for (Map<String, Object> map : sheetsList) {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
service.createSheetForMap(workbook, (ExportParams) map.get("title"), (List<ExcelExportEntity>) map.get("entity"), (Collection<?>) map.get("data"));
|
||||
}
|
||||
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+267
@@ -0,0 +1,267 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp.mobile;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUser;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUserCourse;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityService;
|
||||
import com.ruoyi.common.core.context.SecurityContextHolder;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.SysFile;
|
||||
import com.ruoyi.common.core.enums.ConditionalOperational;
|
||||
import com.ruoyi.common.core.enums.MatchMethod;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteMatchCndService;
|
||||
import com.ruoyi.system.api.domain.MatchCondition;
|
||||
import com.ruoyi.system.api.domain.MatchConditionStructure;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import com.ruoyi.system.api.model.LoginUser;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.entity.annotation.Comment;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Mirror;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/20
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mobile/trainSignUp")
|
||||
public class MTrainSignUpActivityController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private TrainSignUpActivityService trainSignUpActivityService;
|
||||
|
||||
@Autowired
|
||||
private RemoteMatchCndService matchConditionStructureService;
|
||||
|
||||
private final ReentrantLock lock = new ReentrantLock(true);
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "activityStatus", required = false) Integer activityStatus,
|
||||
@RequestParam(value = "type", required = false) String type) {
|
||||
Pagination pagination = trainSignUpActivityService.mPageData(pageForm, year, activityStatus, type);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("findOne")
|
||||
@RequiresLogin
|
||||
public AjaxResult findOne(@RequestParam(value = "id", required = false) String id,
|
||||
@RequestParam(value = "tabIndex", required = false) Integer tabIndex) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (tabIndex > 0) {
|
||||
List<TrainSignUpUser> mySignCourseList = dao.query(TrainSignUpUser.class, Cnd.where("userId", "=", SecurityUtils.getUserId()).and("activityId", "=", id));
|
||||
List<String> mySignCourseIdList = mySignCourseList.stream().map(TrainSignUpUser::getCourseId).collect(Collectors.toList());
|
||||
cnd.and("id", "in", mySignCourseIdList);
|
||||
}
|
||||
NutMap nutMap = trainSignUpActivityService.findOne(id, cnd);
|
||||
return AjaxResult.success(nutMap);
|
||||
}
|
||||
|
||||
@PostMapping("doSignUp")
|
||||
@RequiresLogin
|
||||
public AjaxResult doSignUp(@RequestBody TrainSignUpUser trainSignUpUser) {
|
||||
lock.lock();
|
||||
try {
|
||||
String activityId = trainSignUpUser.getActivityId();
|
||||
String courseId = trainSignUpUser.getCourseId();
|
||||
//已报名人数
|
||||
if (trainSignUpActivityService.isSignCourseByUser(courseId, SecurityUtils.getUserId())) {
|
||||
return AjaxResult.warn("您已经报过了!");
|
||||
}
|
||||
if (trainSignUpActivityService.isSignFullByUnionId(courseId)) {
|
||||
return AjaxResult.warn("该活动您所在的分工会名额已报满!");
|
||||
}
|
||||
if (trainSignUpActivityService.isSignFull(courseId)) {
|
||||
return AjaxResult.warn("抱歉,此项已报满!");
|
||||
}
|
||||
if (!trainSignUpActivityService.isSignCourse(courseId, activityId)) {
|
||||
return AjaxResult.warn("该类型不能再报!");
|
||||
}
|
||||
trainSignUpActivityService.doSignUp(trainSignUpUser);
|
||||
return AjaxResult.success("报名成功");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return AjaxResult.success("报名失败");
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("cancelSignUp")
|
||||
@RequiresLogin
|
||||
public AjaxResult cancelSignUp(String activityId, String courseId) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
//删除报名记录
|
||||
dao.clear("train_sign_up_user_course", Cnd.where("activityId", "=", activityId)
|
||||
.and("courseId", "=", courseId).and("userId", "=", userId));
|
||||
|
||||
dao.clear("train_sign_up_user", Cnd.where("activityId", "=", activityId)
|
||||
.and("courseId", "=", courseId).and("userId", "=", userId));
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doQd")
|
||||
@RequiresLogin
|
||||
public AjaxResult doQd(@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "courseId", required = false) String courseId,
|
||||
@RequestParam(name = "points[]", required = false) Double[] points) {
|
||||
trainSignUpActivityService.doQd(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getQdInfoList")
|
||||
@RequiresLogin
|
||||
public AjaxResult getQdInfoList(@RequestParam(value = "activityId", required = false) String activityId) {
|
||||
List<NutMap> list = trainSignUpActivityService.qdInfoByUserId(SecurityUtils.getUserId(), activityId);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getActivityCnd")
|
||||
@RequiresLogin
|
||||
public AjaxResult getActivityCnd(@RequestParam(value = "activityId", required = false) String activityId) {
|
||||
NutMap nutMap = trainSignUpActivityService.getActivityCnd(activityId);
|
||||
return AjaxResult.success(nutMap);
|
||||
}
|
||||
|
||||
@GetMapping("validateSignUp")
|
||||
@RequiresLogin
|
||||
public AjaxResult validateSignUp(@RequestParam(value = "id", required = false) String id) {
|
||||
NutMap resultMap = NutMap.NEW();
|
||||
StringBuffer sbf = new StringBuffer();
|
||||
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
MatchConditionStructure conditionStructure = dao.fetch(MatchConditionStructure.class, id);
|
||||
dao.fetchLinks(conditionStructure, "conditions");
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
|
||||
MatchMethod method = conditionStructure.getMethod();
|
||||
List<MatchCondition> conditions = conditionStructure.getConditions();
|
||||
|
||||
//每个条件的判断结果
|
||||
List<Boolean> cndResultList = new ArrayList<>();
|
||||
conditions.forEach(c -> {
|
||||
String fieldName = c.getField();
|
||||
try {
|
||||
Mirror<SysUser> userMirror = Mirror.me(SysUser.class);
|
||||
Field field = userMirror.getField(fieldName);
|
||||
Comment annotation = field.getAnnotation(Comment.class);
|
||||
String fieldChineseName = annotation.value();
|
||||
ConditionalOperational operational = c.getOperational();
|
||||
String description = operational.getDescription();
|
||||
String fieldValue = c.getValue();
|
||||
if ("sex".equals(fieldName)) {
|
||||
fieldValue = "0".equals(c.getValue()) ? "男" : "女";
|
||||
}
|
||||
sbf.append(fieldChineseName + description + fieldValue + "\n");
|
||||
|
||||
LoginUser loginUser = (LoginUser) SecurityContextHolder.getLocalMap().get("login_user");
|
||||
if (loginUser != null) {
|
||||
NutMap loginUserMap = Lang.obj2nutmap(loginUser.getSysUser());
|
||||
cndResultList.add(loginUserMap.get(fieldName).equals(c.getValue()));
|
||||
} else {
|
||||
cndResultList.add(false);
|
||||
}
|
||||
} catch (NoSuchFieldException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
switch (method.name()) {
|
||||
case "AND" -> resultMap.addv("flag", cndResultList.stream().allMatch(x -> x));
|
||||
case "OR" -> resultMap.addv("flag", cndResultList.stream().anyMatch(x -> x));
|
||||
}
|
||||
resultMap.addv("msg", sbf);
|
||||
resultMap.addv("method", method.getDescription());
|
||||
return AjaxResult.success(resultMap);
|
||||
}
|
||||
|
||||
@GetMapping("isSignFullByUnionId")
|
||||
@RequiresLogin
|
||||
public AjaxResult isSignFullByUnionId(@RequestParam(value = "courseId", required = false) String courseId) {
|
||||
if (trainSignUpActivityService.isSignCourseByUser(courseId, SecurityUtils.getUserId())) {
|
||||
return AjaxResult.warn("该活动已报过了!");
|
||||
}
|
||||
if (trainSignUpActivityService.isSignFullByUnionId(courseId)) {
|
||||
return AjaxResult.warn("该活动您所在的分工会名额已报满!");
|
||||
}
|
||||
if (trainSignUpActivityService.isSignFull(courseId)) {
|
||||
return AjaxResult.warn("该活动已报满!");
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("codeSign")
|
||||
@RequiresLogin
|
||||
public AjaxResult codeSign(@RequestParam(value = "id", required = false) String id,
|
||||
@RequestParam(value = "codeCourseId", required = false) String codeCourseId,
|
||||
@RequestParam(value = "clickCourseId", required = false) String clickCourseId) {
|
||||
if (StrUtil.isBlank(codeCourseId) || StrUtil.isBlank(clickCourseId)) {
|
||||
return AjaxResult.warn("签到失败,没有获取到扫描信息");
|
||||
}
|
||||
if (!codeCourseId.equals(clickCourseId)) {
|
||||
return AjaxResult.warn("签到失败,二维码与您当前签到信息不符");
|
||||
}
|
||||
dao.update(TrainSignUpUserCourse.class, Chain.make("isAttend", true)
|
||||
.add("attendTime", new Date()), Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("summaryDo")
|
||||
@RequiresLogin
|
||||
public AjaxResult summaryDo(@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "courseId", required = false) String courseId,
|
||||
@RequestParam(value = "summaryText", required = false) String summaryText) {
|
||||
if (StrUtil.isBlank(activityId) || StrUtil.isBlank(courseId)) {
|
||||
return AjaxResult.warn("操作失败,没有获取到课程信息");
|
||||
}
|
||||
dao.update(TrainSignUpUser.class, Chain.make("summaryText", summaryText),
|
||||
Cnd.where("activityId", "=", activityId).and("courseId", "=", courseId)
|
||||
.and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("photoDo")
|
||||
@RequiresLogin
|
||||
public AjaxResult photoDo(@RequestBody List<SysFile> photoFiles,
|
||||
@RequestParam(value = "activityId", required = false) String activityId,
|
||||
@RequestParam(value = "courseId", required = false) String courseId,
|
||||
@RequestParam(value = "summaryText", required = false) String summaryText) {
|
||||
if (StrUtil.isBlank(activityId) || StrUtil.isBlank(courseId)) {
|
||||
return AjaxResult.warn("操作失败,没有获取到课程信息");
|
||||
}
|
||||
TrainSignUpUser signUpUser = dao.fetch(TrainSignUpUser.class, Cnd.where("activityId", "=", activityId).and("courseId", "=", courseId)
|
||||
.and("userId", "=", SecurityUtils.getUserId()));
|
||||
if(signUpUser.getClassPhoto() != null) {
|
||||
photoFiles.addAll(signUpUser.getClassPhoto());
|
||||
}
|
||||
dao.update(TrainSignUpUser.class, Chain.make("classPhoto", photoFiles),
|
||||
Cnd.where("activityId", "=", activityId).and("courseId", "=", courseId)
|
||||
.and("userId", "=", SecurityUtils.getUserId()));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+193
@@ -0,0 +1,193 @@
|
||||
package com.ruoyi.activity.controller.trainSignUp.mobile;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.domain.trainSignUp.TrainSignUpUserCourse;
|
||||
import com.ruoyi.activity.service.trainSignUp.TrainSignUpActivityService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
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.dao.util.Daos;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/3/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mobile/trainSignUpActivityScannerQrCode")
|
||||
public class MTrainSignUpActivityScannerQrCodeController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private TrainSignUpActivityService trainSignUpActivityService;
|
||||
|
||||
/**
|
||||
* 微信js验证
|
||||
*
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/auth/sign")
|
||||
@RequiresLogin
|
||||
public AjaxResult wxAuthSign(String url) {
|
||||
//String jsapi_ticket = wxTokenUtil.jsTicket();
|
||||
String jsapi_ticket = "";
|
||||
return AjaxResult.success(sign(jsapi_ticket, url));
|
||||
}
|
||||
|
||||
@RequestMapping("/qrCodeInfo")
|
||||
@RequiresLogin
|
||||
public AjaxResult qrCodeInfo(String userId, String signId, String activityId) {
|
||||
if (StrUtil.isBlank(userId) || StrUtil.isBlank(signId) || StrUtil.isBlank(activityId)) {
|
||||
return AjaxResult.error("参数错误");
|
||||
}
|
||||
try {
|
||||
// Sql activitySql = Sqls.create("select activityName,cover from train_sign_up_activity where id = @activityId");
|
||||
// activitySql.setParam("activityId",activityId);
|
||||
// NutMap activityMap = (NutMap) Daos.query(dao, activitySql.toString(), Sqls.callback.map());
|
||||
|
||||
Sql signSql = Sqls.create("select isAttend,attendTime,isReceive,receiveTime from train_sign_up_user_course where id = @signId");
|
||||
signSql.setParam("signId", signId);
|
||||
NutMap attendInfo = (NutMap) Daos.query(dao, signSql.toString(), Sqls.callback.map());
|
||||
Sql userSql = Sqls.create("""
|
||||
select
|
||||
id,
|
||||
userName as username,
|
||||
loginName as loginname,
|
||||
deptName as unitname,
|
||||
unionName as unionname,
|
||||
sex
|
||||
from
|
||||
`user` where userId = @userId
|
||||
""");
|
||||
userSql.setParam("userId", userId);
|
||||
NutMap userMap = (NutMap) Daos.query(dao, userSql.toString(), Sqls.callback.map());
|
||||
return AjaxResult.success(Map.of("signInfo", attendInfo, "userInfo", userMap));
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error("获取信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/signInfo")
|
||||
@RequiresLogin
|
||||
public AjaxResult signInfo(String signId) {
|
||||
if (StrUtil.isBlank(signId)) {
|
||||
return AjaxResult.error("参数错误");
|
||||
}
|
||||
try {
|
||||
Sql signSql = Sqls.create("select isAttend,attendTime from train_sign_up_user_course where id = @signId");
|
||||
signSql.setParam("signId", signId);
|
||||
NutMap signInfo = trainSignUpActivityService.fetch(signSql);
|
||||
return AjaxResult.success(signInfo);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error("获取信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/grantGiftByQrCode")
|
||||
@RequiresLogin
|
||||
public AjaxResult grantGiftByQrCode(String signId) {
|
||||
if (StrUtil.isBlank(signId)) {
|
||||
return AjaxResult.error("参数错误");
|
||||
}
|
||||
try {
|
||||
Chain chain = Chain.make("isReceive", 1);
|
||||
chain.add("receiveTime", new Date());
|
||||
chain.add("giftScannerCodeUserId", SecurityUtils.getUserId());
|
||||
dao.update(TrainSignUpUserCourse.class, chain, Cnd.where("id", "=", signId));
|
||||
Sql signSql = Sqls.create("select isAttend,attendTime,isReceive,receiveTime from train_sign_up_user_course where id = @signId");
|
||||
signSql.setParam("signId", signId);
|
||||
NutMap signInfo = trainSignUpActivityService.fetch(signSql);
|
||||
return AjaxResult.success(signInfo);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error("获取信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/confirmSignByQrCode")
|
||||
@RequiresLogin
|
||||
public AjaxResult confirmSignByQrCode(String signId) {
|
||||
if (StrUtil.isBlank(signId)) {
|
||||
return AjaxResult.error("参数错误");
|
||||
}
|
||||
try {
|
||||
Chain chain = Chain.make("isAttend", 1);
|
||||
chain.add("attendTime", new Date());
|
||||
chain.add("signScannerCodeUserId", SecurityUtils.getUserId());
|
||||
dao.update(TrainSignUpUserCourse.class, chain, Cnd.where("id", "=", signId));
|
||||
|
||||
Sql signSql = Sqls.create("select isAttend,attendTime,isReceive,receiveTime from train_sign_up_user_course where id = @signId");
|
||||
signSql.setParam("signId", signId);
|
||||
NutMap signInfo = trainSignUpActivityService.fetch(signSql);
|
||||
return AjaxResult.success(signInfo);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error("获取信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
public static Map<String, String> sign(String jsapi_ticket, String url) {
|
||||
Map<String, String> ret = new HashMap<String, String>();
|
||||
String nonce_str = create_nonce_str();
|
||||
String timestamp = create_timestamp();
|
||||
String string1;
|
||||
String signature = "";
|
||||
|
||||
//注意这里参数名必须全部小写,且必须有序
|
||||
string1 = "jsapi_ticket=" + jsapi_ticket +
|
||||
"&noncestr=" + nonce_str +
|
||||
"×tamp=" + timestamp +
|
||||
"&url=" + url;
|
||||
System.out.println(string1);
|
||||
|
||||
try {
|
||||
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
|
||||
crypt.reset();
|
||||
crypt.update(string1.getBytes("UTF-8"));
|
||||
signature = byteToHex(crypt.digest());
|
||||
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ret.put("url", url);
|
||||
ret.put("jsapi_ticket", jsapi_ticket);
|
||||
ret.put("nonceStr", nonce_str);
|
||||
ret.put("timestamp", timestamp);
|
||||
ret.put("signature", signature);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
private static String byteToHex(final byte[] hash) {
|
||||
Formatter formatter = new Formatter();
|
||||
for (byte b : hash) {
|
||||
formatter.format("%02x", b);
|
||||
}
|
||||
String result = formatter.toString();
|
||||
formatter.close();
|
||||
return result;
|
||||
}
|
||||
|
||||
private static String create_nonce_str() {
|
||||
return UUID.randomUUID().toString();
|
||||
}
|
||||
|
||||
private static String create_timestamp() {
|
||||
return Long.toString(System.currentTimeMillis() / 1000);
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.ruoyi.activity.param;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ActivityMobileSignUpParam {
|
||||
|
||||
private String activityId;
|
||||
|
||||
private String eventId;
|
||||
|
||||
private String teamId;
|
||||
|
||||
private String teamName;
|
||||
|
||||
private List<Long> userIds;
|
||||
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.ruoyi.activity.service.basic;
|
||||
|
||||
import com.ruoyi.activity.api.constant.ActivityBasicScopePageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/4
|
||||
* @Description
|
||||
*/
|
||||
public interface ActivityBasicScopeService extends BaseService {
|
||||
|
||||
|
||||
/**
|
||||
* @return java.util.List<org.nutz.lang.util.NutMap>
|
||||
* @description 查询所有活动组别
|
||||
* @author zhf
|
||||
* @date 2023/1/11 10:00
|
||||
*/
|
||||
|
||||
List<NutMap> getActivityUserScopeGroup();
|
||||
|
||||
/**
|
||||
* @param activityGroupId
|
||||
* @return java.util.List<org.nutz.lang.util.NutMap>
|
||||
* @description 查询活动设置人员
|
||||
* @author zhf
|
||||
* @date 2023/2/13 14:54
|
||||
*/
|
||||
List<NutMap> getUserScope(Integer activityGroupId);
|
||||
|
||||
|
||||
Pagination pageData(ActivityBasicScopePageForm pageForm);
|
||||
|
||||
|
||||
Integer doSetActivityUser(ActivityBasicScopePageForm pageForm, Integer setGroupType, Integer setGroupId, String setGroupName);
|
||||
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @return void
|
||||
* @description 删除活动组别的人 可根据id删也可根据组别id删 都为空删除全部 两个id传一个即可
|
||||
* @author zhf
|
||||
* @date 2023/1/11 17:34
|
||||
*/
|
||||
void doDelete(String id,
|
||||
ActivityBasicScopePageForm pageForm);
|
||||
|
||||
|
||||
/**
|
||||
* @param activityGroupId
|
||||
* @return int
|
||||
* @description 查看该人员是否在活动范围中
|
||||
* @author zhf
|
||||
* @date 2023/2/10 9:46
|
||||
*/
|
||||
|
||||
int getScopeUserCount(Integer activityGroupId);
|
||||
|
||||
|
||||
void doExportUser(String props,ActivityBasicScopePageForm pageForm, HttpServletResponse response);
|
||||
|
||||
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.ruoyi.activity.service.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicSettings;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface ActivityBasicSettingsService extends BaseService<ActivityBasicSettings> {
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.ruoyi.activity.service.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityEvent;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface ActivityEventService extends BaseService<ActivityEvent> {
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.ruoyi.activity.service.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnion;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/12 11:23
|
||||
*/
|
||||
public interface ActivityUnionService extends BaseService<ActivityBasicUnion> {
|
||||
|
||||
|
||||
/**
|
||||
* @param pageNumber
|
||||
* @param pageSize
|
||||
* @param unionName
|
||||
* @return com.ruoyi.common.core.page.Pagination
|
||||
* @description 院级工会信息分页
|
||||
* @author zhf
|
||||
* @date 2023/1/12 11:45
|
||||
*/
|
||||
|
||||
Pagination pageData(int pageNumber, int pageSize, String unionName);
|
||||
|
||||
|
||||
/**
|
||||
* @param unionId
|
||||
* @param units
|
||||
* @return void
|
||||
* @description 设置组成单位
|
||||
* @author zhf
|
||||
* @date 2023/1/12 14:23
|
||||
*/
|
||||
|
||||
void setUnit(String unionId, String[] units);
|
||||
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @return void
|
||||
* @description 删除活动分工会
|
||||
* @author zhf
|
||||
* @date 2023/1/12 14:55
|
||||
*/
|
||||
|
||||
void remove(String id);
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.ruoyi.activity.service.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicUnit;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/12 9:14
|
||||
*/
|
||||
public interface ActivityUnitService extends BaseService<ActivityBasicUnit> {
|
||||
|
||||
AjaxResult updateDept(ActivityBasicUnit basicUnit);
|
||||
AjaxResult addDept(ActivityBasicUnit basicUnit);
|
||||
|
||||
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.ruoyi.activity.service.common;
|
||||
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/1
|
||||
* @Description
|
||||
*/
|
||||
public interface ActivityCommonService extends BaseService {
|
||||
|
||||
/**
|
||||
* 根据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);
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.ruoyi.activity.service.culture;
|
||||
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/16 11:51
|
||||
*/
|
||||
public interface ActivityCultureApplyService extends BaseService<ActivityTissue> {
|
||||
|
||||
|
||||
void doAdd(ActivityTissue tissue);
|
||||
void doEdit(ActivityTissue tissue);
|
||||
void doDelete(String id);
|
||||
|
||||
|
||||
AjaxResult pageData(PageForm page, String year, String name, String unionId, String clubId, Integer activityType);
|
||||
|
||||
AjaxResult findOne(String id);
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.ruoyi.activity.service.culture;
|
||||
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissuePerson;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ActivityCultureApplyUserService extends BaseService<ActivityTissuePerson> {
|
||||
|
||||
/**
|
||||
* 获取某个分工会限制的数量
|
||||
*
|
||||
* @param unionUserNumberLimit
|
||||
* @param unionId
|
||||
* @return
|
||||
*/
|
||||
int getLimitNumByUnion(List<NutMap> unionUserNumberLimit, String unionId);
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 个人报名
|
||||
*/
|
||||
AjaxResult doSingleRegister(String activityId);
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 取消报名
|
||||
*/
|
||||
AjaxResult doSingleCancelRegister(String activityId);
|
||||
|
||||
/**
|
||||
* @param groupId
|
||||
* @return java.util.List<org.nutz.lang.util.NutMap>
|
||||
* @author zhf
|
||||
* @description 查询可报名的人员
|
||||
*/
|
||||
List<NutMap> selfUnionUsers(String groupId);
|
||||
|
||||
|
||||
/**
|
||||
* @param tissueId
|
||||
* @return java.util.List<org.nutz.lang.util.NutMap>
|
||||
* @author zhf
|
||||
* @description 查询已经报名的人员
|
||||
*/
|
||||
List<Long> getReportedUser(String tissueId);
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @param personIds
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 分工会报名
|
||||
*/
|
||||
AjaxResult doSaveUnionRegister(String activityId, Long[] personIds);
|
||||
|
||||
|
||||
/**
|
||||
* @param activityId
|
||||
* @return com.ruoyi.common.core.web.domain.AjaxResult
|
||||
* @author zhf
|
||||
* @description 删除报名人员
|
||||
*/
|
||||
AjaxResult doDeleteActivityUser(String activityId, String applyUserId, String id);
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.activity.service.culture.mobile;
|
||||
|
||||
import com.ruoyi.activity.api.domain.culture.ActivityTissue;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MobileActivityCultureApplyService extends BaseService<ActivityTissue> {
|
||||
|
||||
|
||||
void singleSignUp(String activityId);
|
||||
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.ruoyi.activity.service.fitnessWalk;
|
||||
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.FitnessWalk;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 健身走活动管理
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/13
|
||||
*/
|
||||
public interface FitnessWalkActivityManageService extends BaseService<FitnessWalk> {
|
||||
|
||||
Pagination pageData(PageForm pageForm, Integer year, String activityName);
|
||||
|
||||
void deleteActivity(String id) throws Exception;
|
||||
|
||||
List<NutMap> mainActivity(int year, String mode);
|
||||
|
||||
List<NutMap> branchActivity(String mainName, int year, String mode);
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.ruoyi.activity.service.fitnessWalk;
|
||||
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface FitnessWalkSignInStatisticsService extends BaseService {
|
||||
|
||||
List<NutMap> unionNumData(String mainName, String branchActivity, Integer year);
|
||||
|
||||
Pagination getRegisterUser(PageForm pageForm, String mainName, String branchActivity, String unionId);
|
||||
|
||||
Pagination getSignUser(PageForm pageForm, String mainName, String branchActivity, String unionId);
|
||||
|
||||
List<NutMap> doExportRegister(String mainName, String branchActivity);
|
||||
|
||||
List<NutMap> doGiftExport(String mainName, String branchActivity, boolean flag);
|
||||
|
||||
List<NutMap> doExportSummary(String mainName, String branchActivity);
|
||||
|
||||
List<NutMap> doExportSign(String mainName, String branchActivity);
|
||||
|
||||
List<String> getFitNessActivityId(String mainName, String branchActivity, Integer year);
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.ruoyi.activity.service.fitnessWalk;
|
||||
|
||||
import com.ruoyi.activity.api.domain.fitnessWalk.JszWxStep;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface FitnessWalkStepService extends BaseService<JszWxStep> {
|
||||
/**
|
||||
* 获取今天当前用户最新步数
|
||||
*/
|
||||
Object getStepByUserId(String userId);
|
||||
|
||||
/**
|
||||
* 获取当日榜或者累计排榜榜
|
||||
*
|
||||
* @param hdid: 活动id
|
||||
* @param type: 0-当日榜, 1-累计排行榜
|
||||
* @return null
|
||||
* @author JyuHsin
|
||||
* @date 2022/9/7
|
||||
*/
|
||||
List<NutMap> getDataOfLeaderboard(String hdid, Integer type, String userId, String unionId, String unitId, String searchName, String searchKeyword);
|
||||
|
||||
/**
|
||||
* 获取当日中奖榜
|
||||
*
|
||||
* @param hdid: 活动id
|
||||
* @return java.lang.Object
|
||||
* @author JyuHsin
|
||||
* @date 2022/9/7
|
||||
*/
|
||||
List<NutMap> getDataOfPrize(String hdid, String unionId, String unitId, String searchName, String searchKeyword);
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.ruoyi.activity.service.fitnessWalk;
|
||||
|
||||
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
/**
|
||||
* 云函数请求地址
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/13
|
||||
*/
|
||||
public class WxMpCloudHttpConstants {
|
||||
|
||||
private final NutMap jsonHeader = NutMap.NEW().setv("Content-Type", "application/json");
|
||||
|
||||
public static final String APPID = "wxf750f43635f770e0";
|
||||
|
||||
public static final String APP_SECRET = "a54517e19ab700f745f20f27312ab8b2";
|
||||
|
||||
public static final String ENV = "jsz-hnucm-1glpy4qeece72701";
|
||||
|
||||
public static final String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
|
||||
|
||||
public static final String QUERY_URL = "https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String INSERT_URL = "https://api.weixin.qq.com/tcb/databaseadd?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String UPDATE_URL = "https://api.weixin.qq.com/tcb/databaseupdate?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String DELETE_URL = "https://api.weixin.qq.com/tcb/databasedelete?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String UPLOAD_URL = "https://api.weixin.qq.com/tcb/uploadfile?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String DOWNLOAD_URL = "https://api.weixin.qq.com/tcb/batchdownloadfile?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String CLOUD_URL = "https://api.weixin.qq.com/tcb/invokecloudfunction?access_token=ACCESS_TOKEN&env=ENV&name=FUNCTION_NAME";
|
||||
|
||||
public static final String AGGREGATE_URL = "https://api.weixin.qq.com/tcb/databaseaggregate?access_token=ACCESS_TOKEN";
|
||||
|
||||
public static final String COUNT_URL = "https://api.weixin.qq.com/tcb/databasecount?access_token=ACCESS_TOKEN";
|
||||
|
||||
}
|
||||
+209
@@ -0,0 +1,209 @@
|
||||
package com.ruoyi.activity.service.fitnessWalk;
|
||||
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.ruoyi.common.core.constant.WxMpConstants;
|
||||
import com.ruoyi.common.core.exception.ServiceException;
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.redis.service.RedisService;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.upload.TempFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 微信小程序云数据库请求工具类
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/13
|
||||
*/
|
||||
public class WxMpCloudHttpUtil {
|
||||
|
||||
private static final NutMap jsonHeader = NutMap.NEW().setv("Content-Type", "application/json");
|
||||
|
||||
/**
|
||||
* 获取访问令牌
|
||||
*
|
||||
* @return {@link String}
|
||||
*/
|
||||
public static String getAccessToken() {
|
||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||
String token = redisService.getCacheObject(WxMpConstants.WX_MP_TOKEN_KEY);
|
||||
// if (StrUtil.isNotBlank(token)) {
|
||||
// return token;
|
||||
// }
|
||||
String url = WxMpCloudHttpConstants.TOKEN_URL.replace("APPID", WxMpCloudHttpConstants.APPID).replace("APPSECRET", WxMpCloudHttpConstants.APP_SECRET);
|
||||
String content = HttpUtil.get(url);
|
||||
NutMap tokenResp = Json.fromJson(NutMap.class, content);
|
||||
if (tokenResp.containsKey("errcode")) {
|
||||
throw new RuntimeException(tokenResp.getString("errmsg"));
|
||||
}
|
||||
String new_token = tokenResp.getString("access_token");
|
||||
redisService.setCacheObject(WxMpConstants.WX_MP_TOKEN_KEY, new_token, 7000L, TimeUnit.SECONDS);
|
||||
return new_token;
|
||||
}
|
||||
|
||||
public static NutMap getWxResult(String url, String query) {
|
||||
String queryUrl = url.replace("ACCESS_TOKEN", getAccessToken());
|
||||
Map<String, String> reqBody = new HashMap<>();
|
||||
reqBody.put("env", WxMpCloudHttpConstants.ENV);
|
||||
reqBody.put("query", query);
|
||||
HttpRequest post = HttpUtil.createPost(queryUrl);
|
||||
post.body(Json.toJson(reqBody));
|
||||
post.header("Content-Type", "application/json");
|
||||
post.timeout(10000);
|
||||
HttpResponse httpResponse = post.execute();
|
||||
NutMap respMap = Json.fromJson(NutMap.class, httpResponse.body());
|
||||
if (respMap.getInt("errcode") != 0) {
|
||||
throw new ServiceException(respMap.getString("errmsg"));
|
||||
}
|
||||
return respMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 云函数返回结果
|
||||
*
|
||||
* @param queryUrl 查询网址
|
||||
* @param name 名字
|
||||
* @param reqBody 请求身体
|
||||
* @return {@link NutMap}
|
||||
* @throws IOException ioexception
|
||||
*/
|
||||
public static NutMap getCloudResult(String queryUrl, String name, Map<String, Object> reqBody) throws Exception {
|
||||
String url = queryUrl.replace("ACCESS_TOKEN", getAccessToken())
|
||||
.replace("ENV", WxMpCloudHttpConstants.ENV).replace("FUNCTION_NAME", name);
|
||||
HttpRequest post = HttpUtil.createPost(url);
|
||||
post.body(Json.toJson(reqBody));
|
||||
post.header("Content-Type", "application/json");
|
||||
post.timeout(10000);
|
||||
HttpResponse httpResponse = post.execute();
|
||||
NutMap respMap = Json.fromJson(NutMap.class, httpResponse.body());
|
||||
if (respMap.getInt("errcode") != 0) {
|
||||
throw new ServiceException(respMap.getString("errmsg"));
|
||||
}
|
||||
return respMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回文件url
|
||||
*
|
||||
* @param fileid
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public String getWxFileUrl(String fileid) throws IOException {
|
||||
// String url = WxMpCloudHttpConstants.DOWNLOAD_URL.replace("ACCESS_TOKEN", getAccessToken());
|
||||
// Map mf = new HashMap<String, String>();
|
||||
// mf.put("fileid", fileid);
|
||||
// mf.put("max_age", 7200);
|
||||
// ArrayList<Map> fm = new ArrayList<>();
|
||||
// fm.add(mf);
|
||||
// Map reqbody = new HashMap<String, String>();
|
||||
// reqbody.put("env", this.env);
|
||||
// reqbody.put("file_list", fm);
|
||||
// Header header = Header.create(jsonHeader);
|
||||
// org.nutz.http.Response response = Http.post3(url, Json.toJson(reqbody), header, 200000);
|
||||
// NutMap map = Json.fromJson(NutMap.class, new InputStreamReader(response.getStream()));
|
||||
// if (map.getInt("errcode") == 0 && map.getString("errmsg").equals("ok")) {
|
||||
// NutMap res = map.getAsList("file_list", NutMap.class).get(0);
|
||||
// return res.getString("download_url");
|
||||
// } else {
|
||||
// log.error(map.getString("errmsg"));
|
||||
// return null;
|
||||
// }
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 上传文件并返回文件id
|
||||
*
|
||||
* @param wxFilePath wxFilePath路径
|
||||
* @return {@link NutMap}
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public static String uploadFile(String localFilePath, String wxFilePath) throws Exception {
|
||||
InputStream inputStream = HttpUtil.createGet(localFilePath).execute().bodyStream();
|
||||
Path wxMpFile = Files.createTempFile("wxMpFile", FileUtil.getSuffix(localFilePath));
|
||||
FileUtils.copyInputStreamToFile(inputStream, wxMpFile.toFile());
|
||||
|
||||
String url = WxMpCloudHttpConstants.UPLOAD_URL.replace("ACCESS_TOKEN", getAccessToken());
|
||||
HttpRequest post = HttpUtil.createPost(url);
|
||||
post.header("Content-Type", "application/json");
|
||||
Map<String, String> requestBody = new HashMap<>();
|
||||
requestBody.put("env", WxMpCloudHttpConstants.ENV);
|
||||
requestBody.put("path", wxFilePath);
|
||||
post.body(Json.toJson(requestBody));
|
||||
post.timeout(10000);
|
||||
HttpResponse httpResponse = post.execute();
|
||||
NutMap respMap = Json.fromJson(NutMap.class, httpResponse.body());
|
||||
if (respMap.getInt("errcode") != 0) {
|
||||
throw new ServiceException(respMap.getString("errmsg"));
|
||||
}
|
||||
|
||||
String uploadUrl = respMap.getString("url");
|
||||
String token = respMap.getString("token");
|
||||
String authorization = respMap.getString("authorization");
|
||||
String file_id = respMap.getString("file_id");
|
||||
String cos_file_id = respMap.getString("cos_file_id");
|
||||
|
||||
HttpRequest uploadPost = HttpUtil.createPost(uploadUrl);
|
||||
uploadPost.form("key", wxFilePath);
|
||||
uploadPost.form("Signature", authorization);
|
||||
uploadPost.form("x-cos-security-token", token);
|
||||
uploadPost.form("x-cos-meta-fileid", cos_file_id);
|
||||
uploadPost.form("file", wxMpFile.toFile());
|
||||
uploadPost.execute().body();
|
||||
|
||||
return file_id;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param map
|
||||
* @param file 文件
|
||||
* @param wxFilePath 储存在微信云端的路径
|
||||
* @return 文件id
|
||||
* @throws Exception
|
||||
*/
|
||||
public String uploadFile(NutMap map, TempFile file, String wxFilePath) throws Exception {
|
||||
|
||||
|
||||
// String url = map.getString("url");
|
||||
// String token = map.getString("token");
|
||||
// String authorization = map.getString("authorization");
|
||||
// String file_id = map.getString("file_id");
|
||||
// String cos_file_id = map.getString("cos_file_id");
|
||||
// RequestBody fb = RequestBody.create(file.getFile(), formData);
|
||||
// RequestBody b = new MultipartBody.Builder()
|
||||
// .setType(MultipartBody.FORM)
|
||||
// .addFormDataPart("key", wxfilePath)
|
||||
// .addFormDataPart("Signature", authorization)
|
||||
// .addFormDataPart("x-cos-security-token", token)
|
||||
// .addFormDataPart("x-cos-meta-fileid", cos_file_id)
|
||||
// .addFormDataPart("file", "filename", fb)
|
||||
// .build();
|
||||
//
|
||||
// Request request = new Request.Builder()
|
||||
// .url(url)
|
||||
// .post(b)
|
||||
// .build();
|
||||
// Call call = okHttpClient.newCall(request);
|
||||
// Response response = call.execute();
|
||||
// //没有返回的内容 。。。怎么判断是否成功 难道去查?
|
||||
// return file_id;
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.ruoyi.activity.service.fourOneActivity;
|
||||
|
||||
import com.ruoyi.activity.api.constant.FourOneActivityForm;
|
||||
import com.ruoyi.activity.api.domain.fourOneActivity.FourOneActivity;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/8 14:11
|
||||
*/
|
||||
public interface FourOneActivityService extends BaseService<FourOneActivity> {
|
||||
|
||||
|
||||
void doSave(FourOneActivityForm fourOneActivityForm, Boolean flag);
|
||||
|
||||
void doEdit(FourOneActivityForm fourOneActivityForm, Boolean flag);
|
||||
|
||||
NutMap findOne(String id);
|
||||
|
||||
void doDelete(String id);
|
||||
|
||||
|
||||
void doMakings(FourOneActivityForm fourOneActivityForm, Boolean flag, String id);
|
||||
|
||||
}
|
||||
+385
@@ -0,0 +1,385 @@
|
||||
package com.ruoyi.activity.service.impl.basic;
|
||||
|
||||
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.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.activity.api.constant.ActivityBasicScopePageForm;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityUserScope;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicScopeService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.DictUtils;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
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.Static;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/1/4
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class ActivityBasicScopeServiceImpl extends BaseServiceImpl implements ActivityBasicScopeService {
|
||||
|
||||
public ActivityBasicScopeServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@Autowired
|
||||
public RedisTemplate redisTemplate;
|
||||
|
||||
|
||||
@Override
|
||||
public List<NutMap> getActivityUserScopeGroup() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
groupId,
|
||||
groupName
|
||||
FROM
|
||||
activity_user_scope
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("sysadmin,H06")) {
|
||||
if (AuthUtil.hasAnyRoles("H04,H02")) {
|
||||
cnd.and("creator", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
}
|
||||
cnd.and("groupId", "IS NOT", null);
|
||||
cnd.and("groupName", "IS NOT", null);
|
||||
cnd.groupBy("groupId");
|
||||
sql.setCondition(cnd);
|
||||
sql.setCallback(Sqls.callback.maps());
|
||||
dao().execute(sql);
|
||||
List<NutMap> mapList = sql.getList(NutMap.class);
|
||||
return mapList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NutMap> getUserScope(Integer activityGroupId) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId,
|
||||
u.userName,
|
||||
u.loginName
|
||||
FROM
|
||||
`activity_user_scope` aus
|
||||
LEFT JOIN `user` u ON u.userId = aus.userId
|
||||
where aus.groupId=@groupId
|
||||
""").setParam("groupId", activityGroupId);
|
||||
return listMap(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(ActivityBasicScopePageForm pageForm) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT DISTINCT
|
||||
( u.userId ) AS id,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.birthday,
|
||||
u.mobile,
|
||||
u.personType,
|
||||
u.userState,
|
||||
u.deptName AS deptName,
|
||||
u.unionname AS unionName,
|
||||
TIMESTAMPDIFF(
|
||||
YEAR,
|
||||
u.birthday,
|
||||
CURDATE()) AS age,
|
||||
actun.unionname AS activityUnionName
|
||||
FROM
|
||||
`user` u
|
||||
|
||||
LEFT JOIN activity_basic_unit actit ON actit.dept_id = u.deptId
|
||||
LEFT JOIN activity_basic_union actun ON actit.union_id = actun.id
|
||||
|
||||
$condition
|
||||
""");
|
||||
// LEFT JOIN sys_user_role sur ON sur.user_id = u.userId
|
||||
// LEFT JOIN sys_club_user clubuser ON clubuser.userid = u.userId
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Cnd dataCnd = pageDataCnd(pageForm, cnd);
|
||||
sql.setCondition(dataCnd);
|
||||
Pagination listPageMap = listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
|
||||
return listPageMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Integer doSetActivityUser(ActivityBasicScopePageForm pageForm, Integer setGroupType, Integer setGroupId, String setGroupName) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT DISTINCT
|
||||
( u.userId )
|
||||
FROM
|
||||
`user` u
|
||||
LEFT JOIN activity_basic_unit actit ON actit.dept_id = u.deptId
|
||||
LEFT JOIN activity_basic_union actun ON actit.union_id = actun.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Cnd dataCnd = pageDataCnd(pageForm, cnd);
|
||||
sql.setCondition(dataCnd);
|
||||
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 = fetch(Sqls.create("select groupName from activity_user_scope where groupId = @groupId").setParam("groupId", setGroupId));
|
||||
} else if (setGroupType == 2) {
|
||||
maxCount = 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(SecurityUtils.getUserId());
|
||||
}
|
||||
|
||||
|
||||
insert(list);
|
||||
|
||||
return setGroupType == 1 ? setGroupId : maxCount + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void doDelete(String id,
|
||||
ActivityBasicScopePageForm pageForm) {
|
||||
List<String> existsLoginNames = new ArrayList<>();
|
||||
if (StrUtil.isNotBlank(pageForm.getExistsLoginNameRedisKey()) && redisTemplate.hasKey(pageForm.getExistsLoginNameRedisKey())) {
|
||||
existsLoginNames = redisTemplate.opsForList().range(pageForm.getExistsLoginNameRedisKey(), 0, -1);
|
||||
redisTemplate.delete(pageForm.getExistsLoginNameRedisKey());
|
||||
}
|
||||
|
||||
Sql sql = Sqls.create("select userId from `user` u $condition");
|
||||
Cnd userCnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
userCnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
userCnd.andEX("u.unionid", "=", pageForm.getUnionId());
|
||||
userCnd.andEX("u.unitid", "=", pageForm.getUnitId());
|
||||
userCnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||
userCnd.andEX("u.userState", "=", pageForm.getUserState());
|
||||
userCnd.andEX("u.loginname", "in", existsLoginNames);
|
||||
sql.setCondition(userCnd);
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("groupId", "=", pageForm.getActivityGroupId());
|
||||
if (!AuthUtil.hasAnyRoles("sysadmin,A06")) {
|
||||
cnd.andEX("creator", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(id)) {
|
||||
cnd.and("id", "=", id);
|
||||
} else {
|
||||
cnd.and(new Static("userId in (" + sql + ")"));
|
||||
}
|
||||
dao().clear(ActivityUserScope.class, cnd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getScopeUserCount(Integer activityGroupId) {
|
||||
return dao().count(ActivityUserScope.class, Cnd.where("groupId", "=", activityGroupId).and("userId", "=", SecurityUtils.getUserId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doExportUser(String props, ActivityBasicScopePageForm pageForm, HttpServletResponse response) {
|
||||
try {
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("人员名单.xlsx", StandardCharsets.UTF_8)));
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT DISTINCT
|
||||
( u.userId ) AS id,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.birthday,
|
||||
u.mobile,
|
||||
u.personType,
|
||||
u.userState,
|
||||
u.deptName AS deptName,
|
||||
u.unionname AS unionName,
|
||||
TIMESTAMPDIFF(
|
||||
YEAR,
|
||||
u.birthday,
|
||||
CURDATE()) AS age,
|
||||
actun.unionname AS activityUnionName
|
||||
FROM
|
||||
`user` u
|
||||
LEFT JOIN activity_basic_unit actit ON actit.dept_id = u.deptId
|
||||
LEFT JOIN activity_basic_union actun ON actit.union_id = actun.id
|
||||
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Cnd dataCnd = pageDataCnd(pageForm, cnd);
|
||||
sql.setCondition(dataCnd);
|
||||
List<NutMap> map = listMap(sql);
|
||||
|
||||
List<SysDictData> userSexDicts = DictUtils.getDictCache("sys_user_sex");
|
||||
List<SysDictData> userTypeDicts = DictUtils.getDictCache("user_type");
|
||||
List<SysDictData> userStateDicts = DictUtils.getDictCache("user_state");
|
||||
|
||||
for (NutMap userMap : map) {
|
||||
if (StrUtil.isNotBlank(userMap.getString("sex"))) {
|
||||
String sex = userSexDicts.stream().filter(d -> d.getDictValue().equals(userMap.getString("sex")))
|
||||
.findFirst().map(SysDictData::getDictLabel).orElse(null);
|
||||
userMap.put("sex", sex);
|
||||
}
|
||||
if (StrUtil.isNotBlank(userMap.getString("personType"))) {
|
||||
String personType = userTypeDicts.stream().filter(d -> d.getDictValue().equals(userMap.getString("personType")))
|
||||
.findFirst().map(SysDictData::getDictLabel).orElse(null);
|
||||
userMap.put("personType", personType);
|
||||
}
|
||||
if (StrUtil.isNotBlank(userMap.getString("userState"))) {
|
||||
String userState = userStateDicts.stream().filter(d -> d.getDictValue().equals(userMap.getString("userState")))
|
||||
.findFirst().map(SysDictData::getDictLabel).orElse(null);
|
||||
userMap.put("userState", userState);
|
||||
}
|
||||
}
|
||||
|
||||
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));
|
||||
});
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, map);
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param pageForm
|
||||
* @param cnd
|
||||
* @return org.nutz.dao.Cnd
|
||||
* @description 给pageForm和设置活动人员用
|
||||
* @author zhf
|
||||
* @date 2023/1/11 10:01
|
||||
*/
|
||||
|
||||
private Cnd pageDataCnd(ActivityBasicScopePageForm pageForm, Cnd cnd) {
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getActivityGroupId())) {
|
||||
cnd.and(new Static("u.userId NOT IN (SELECT userId FROM activity_user_scope where groupId = '%s')".formatted(pageForm.getActivityGroupId())));
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
|
||||
}
|
||||
if (Lang.isNotEmpty(pageForm.getMemberTypes())) {
|
||||
if (pageForm.getMemberTypes().stream().anyMatch(v -> v.equals("工会会员"))) {
|
||||
cnd.and("u.member", "=", 1);
|
||||
}
|
||||
if (pageForm.getMemberTypes().stream().anyMatch(v -> v.equals("福利会员"))) {
|
||||
cnd.and("u.welfareMember", "=", 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (pageForm.getMaxAge() != 0) {
|
||||
cnd.and("TIMESTAMPDIFF(YEAR,u.birthday,CURDATE())", ">=", pageForm.getMinAge());
|
||||
cnd.and("TIMESTAMPDIFF(YEAR,u.birthday,CURDATE())", "<=", pageForm.getMaxAge());
|
||||
}
|
||||
|
||||
if (pageForm.getMinAge() != 0 && pageForm.getMaxAge() != 0 && pageForm.getMaxAge() > pageForm.getMinAge()) {
|
||||
cnd.and(Cnd.cri().where().andBetween("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", pageForm.getMinAge(), pageForm.getMaxAge()));
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getExistsLoginNameRedisKey()) && redisTemplate.hasKey(pageForm.getExistsLoginNameRedisKey())) {
|
||||
List<String> loginNames = redisTemplate.opsForList().range(pageForm.getExistsLoginNameRedisKey(), 0, -1);
|
||||
cnd.andEX("u.loginName", "in", loginNames);
|
||||
}
|
||||
cnd.andEX("actit.union_id", "=", pageForm.getActivityUnionId());
|
||||
cnd.andEX("actit.dept_id", "=", pageForm.getActivityUnitId());
|
||||
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("u.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("u.personType", "in", pageForm.getPersonTypes());
|
||||
cnd.andEX("u.userState", "in", pageForm.getUserStates());
|
||||
cnd.andEX("u.sex", "in", pageForm.getSexTypes());
|
||||
cnd.andEX("u.unionGroupId", "=", pageForm.getUnionGroupId());
|
||||
cnd.andEX("u.threeUnitId", "=", pageForm.getThreeUnitId());
|
||||
|
||||
List<FeignCnd> cndList = List.of(
|
||||
new FeignCnd("jdhid", "=", pageForm.getTeacherMeetingId()),
|
||||
new FeignCnd("roleid", "=", pageForm.getRoleIds())
|
||||
);
|
||||
List<SysUserRole> data = remoteUserRoleService.getUserRole(cndList).getData();
|
||||
List<Long> RoleIds = data.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
||||
if (Lang.isNotEmpty(pageForm.getTeacherMeetingId()) && Lang.isNotEmpty(pageForm.getRoleIds())) {
|
||||
cnd.andEX("u.userId", "in", RoleIds);
|
||||
}
|
||||
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getClubId())) {
|
||||
List<Long> clubUserIdList = remoteClubService.getClubUserIdById(pageForm.getClubId()).getData();
|
||||
if (Lang.isNotEmpty(clubUserIdList)) {
|
||||
cnd.andEX("u.userId", "in", clubUserIdList);
|
||||
} else {
|
||||
cnd.and("u.userId", "is", null);
|
||||
}
|
||||
}
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("sysadmin,A06")) {
|
||||
if (AuthUtil.hasRole("H04")) {
|
||||
}
|
||||
}
|
||||
return cnd;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.ruoyi.activity.service.impl.basic;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityBasicSettings;
|
||||
import com.ruoyi.activity.service.basic.ActivityBasicSettingsService;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/1/9 9:34
|
||||
*/
|
||||
@Service
|
||||
public class ActivityBasicSettingsServiceImpl extends BaseServiceImpl<ActivityBasicSettings> implements ActivityBasicSettingsService {
|
||||
public ActivityBasicSettingsServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user