From 4f78db00a0aa292655e216c507589df8dd65d7b7 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 12 十一月 2025 17:10:41 +0800
Subject: [PATCH] 管理后台导入,问卷调查
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/THelpNeedsController.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemBriefAnswer.java | 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeSocialWorkerController.java | 164 +++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterWarningController.java | 12
ruoyi-system/src/main/java/com/ruoyi/system/dto/TQuestionnaireDTO.java | 18
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeKeyGridUserController.java | 174 +++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TServiceGuideFileController.java | 4
ruoyi-system/src/main/java/com/ruoyi/system/export/LargeOrganizationImport.java | 28
ruoyi-system/src/main/resources/mapper/system/TAssistedDiningMapper.xml | 14
ruoyi-system/src/main/resources/mapper/system/TOldsterWarningMapper.xml | 12
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TQuestionnaireServiceImpl.java | 41 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAssistedDiningController.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOldsterWarningServiceImpl.java | 16
ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/QuestionnairePush.java | 67 ++
ruoyi-system/src/main/java/com/ruoyi/system/service/TOldsterWarningService.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/export/LargeResourceImport.java | 39 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java | 274 +++++++++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOldsterWarningMapper.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLargeKeyGridUserServiceImpl.java | 7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeResourceController.java | 154 +++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java | 48 +
ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStem.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterController.java | 48 +
ruoyi-system/src/main/resources/mapper/system/TQuestionnaireMapper.xml | 15
ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/query/TQuestionnaireQuery.java | 18
ruoyi-system/src/main/java/com/ruoyi/system/export/LargeSocialWorkerImport.java | 41 +
ruoyi-system/src/main/java/com/ruoyi/system/task/base/AbstractJob.java | 6
ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemOption.java | 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeVolunteerController.java | 159 +++++
ruoyi-system/src/main/java/com/ruoyi/system/query/TServiceGuideFileQuery.java | 5
ruoyi-system/src/main/java/com/ruoyi/system/vo/TQuestionnaireVO.java | 19
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java | 10
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMerchantController.java | 9
ruoyi-system/src/main/resources/mapper/system/TServiceGuideFileMapper.xml | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommunityActivityController.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/export/OldsterImport.java | 18
ruoyi-system/src/main/java/com/ruoyi/system/task/base/TimeJobType.java | 3
ruoyi-system/src/main/resources/mapper/system/TQuestionnaireStemBriefAnswerMapper.xml | 7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOtherConfigController.java | 3
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TQuestionnaireMapper.java | 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeOrganizationController.java | 122 ++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/export/LargeVolunteerImport.java | 44 +
ruoyi-system/src/main/resources/mapper/system/THelpNeedsMapper.xml | 4
ruoyi-system/src/main/java/com/ruoyi/system/export/LargeKeyGridUserImport.java | 49 +
ruoyi-system/src/main/java/com/ruoyi/system/service/TQuestionnaireService.java | 10
47 files changed, 1,639 insertions(+), 68 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
index 42804eb..7a26248 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
@@ -58,7 +58,7 @@
/**
* 获取组织人员管理列表
*/
- @ApiOperation(value = "获取组织人员分页列表")
+ @ApiOperation(value = "获取组织人员列表")
@GetMapping(value = "/largeUserList")
public R<List<TLargeUser>> largeUserList(@RequestParam String deptId) {
List<TLargeUser> list = largeUserService.list(Wrappers.lambdaQuery(TLargeUser.class)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAssistedDiningController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAssistedDiningController.java
index e3f32c5..9d3697b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAssistedDiningController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAssistedDiningController.java
@@ -75,7 +75,7 @@
}
@ApiOperation(value = "查看详情")
@GetMapping(value = "/detail")
- public R<TAssistedDining> detail(Integer id) {
+ public R<TAssistedDining> detail(String id) {
return R.ok(assistedDiningService.getById( id));
}
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommunityActivityController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommunityActivityController.java
index 1487260..934b341 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommunityActivityController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommunityActivityController.java
@@ -225,7 +225,7 @@
QuartzManager.addJob(
ActivityPush.class,
(ActivityPush.name+communityActivity.getId()).toUpperCase(),
- TimeJobType.DELIBERATION_VOTE_PUSH,
+ TimeJobType.ACTIVITY_PUSH,
DateUtils.localDateTimeToDate(communityActivity.getEndTime()),
maps
);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/THelpNeedsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/THelpNeedsController.java
index b7ddb20..495c4ec 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/THelpNeedsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/THelpNeedsController.java
@@ -88,7 +88,7 @@
}
@ApiOperation(value = "查看详情")
@GetMapping(value = "/detail")
- public R<THelpNeeds> detail(Integer id) {
+ public R<THelpNeeds> detail(String id) {
return R.ok(helpNeedsService.getById( id));
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeKeyGridUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeKeyGridUserController.java
index 9b728c9..7ada13f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeKeyGridUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeKeyGridUserController.java
@@ -1,22 +1,47 @@
package com.ruoyi.web.controller.api;
+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.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.system.export.LargeKeyGridUserImport;
import com.ruoyi.system.model.TLargeKeyGridUser;
+import com.ruoyi.system.model.TLargeKeyPersonnelType;
import com.ruoyi.system.query.TLargeKeyGridUserQuery;
import com.ruoyi.system.service.TLargeKeyGridUserService;
+import com.ruoyi.system.service.TLargeKeyPersonnelTypeService;
import com.ruoyi.system.vo.TLargeKeyGridUserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
+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.Objects;
/**
* <p>
@@ -26,15 +51,18 @@
* @author xiaochen
* @since 2025-11-11
*/
+@Slf4j
@Api(tags = "大屏-重点人员-网格人员")
@RestController
@RequestMapping("/t-large-key-grid-user")
public class TLargeKeyGridUserController {
private final TLargeKeyGridUserService largeKeyGridUserService;
+ private final TLargeKeyPersonnelTypeService largeKeyPersonnelTypeService;
@Autowired
- public TLargeKeyGridUserController(TLargeKeyGridUserService largeKeyGridUserService) {
+ public TLargeKeyGridUserController(TLargeKeyGridUserService largeKeyGridUserService, TLargeKeyPersonnelTypeService largeKeyPersonnelTypeService) {
this.largeKeyGridUserService = largeKeyGridUserService;
+ this.largeKeyPersonnelTypeService = largeKeyPersonnelTypeService;
}
/**
@@ -111,6 +139,148 @@
public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
return R.ok(largeKeyGridUserService.removeByIds(ids));
}
-
+
+ @ApiOperation(value = "重点人员-网格人员导入模板下载")
+ @GetMapping("/import-template")
+ public void importTemplate() {
+ List<LargeKeyGridUserImport> largeLargeKeyGridUserImports = new ArrayList<>();
+ LargeKeyGridUserImport largeLargeKeyGridUserImport = new LargeKeyGridUserImport();
+ largeLargeKeyGridUserImports.add(largeLargeKeyGridUserImport);
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), LargeKeyGridUserImport.class, largeLargeKeyGridUserImports);
+ HttpServletResponse response = WebUtils.response();
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("重点人员-网格人员信息导入模板.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("content-Type", "application/vnd.ms-excel");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("重点人员-网格人员导入模板下载失败!");
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Log(title = "重点人员-网格人员信息-重点人员信息导入", businessType = BusinessType.INSERT)
+ @ApiOperation(value = "重点人员信息导入")
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ @PostMapping("/import")
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
+ List<TLargeKeyGridUser> largeKeyGridUsers = new ArrayList<>();
+ ImportParams params = new ImportParams();
+ params.setHeadRows(1); //表头行数
+ InputStream inputStream = null;
+ List<LargeKeyGridUserImport> largeKeyGridUserImports;
+ try {
+ inputStream = file.getInputStream();
+ largeKeyGridUserImports = ExcelImportUtil.importExcel(inputStream,
+ LargeKeyGridUserImport.class, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("重点人员信息导入失败:{}", e.getMessage());
+ throw new ServiceException("重点人员信息导入失败!");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }
+ if (CollectionUtils.isEmpty(largeKeyGridUserImports)) {
+ throw new ServiceException("重点人员信息数据为空!");
+ }
+ JSONObject result = new JSONObject();
+ int i = 1;
+ for (LargeKeyGridUserImport largeKeyGridUserImport : largeKeyGridUserImports) {
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getGridInfo())){
+ result.append("第"+i+"行:[", "网格"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getCommunityName())){
+ result.append("第"+i+"行:[", "小区名称"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getBuildingInfo())){
+ result.append("第"+i+"行:[", "楼栋信息"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getUnitNumber())){
+ result.append("第"+i+"行:[", "单元号"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getHouseNumber())){
+ result.append("第"+i+"行:[", "门牌号"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getUserName())){
+ result.append("第"+i+"行:[", "姓名"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getUserSexStr())){
+ result.append("第"+i+"行:[", "性别"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getIdCard())){
+ result.append("第"+i+"行:[", "身份证号"+"]不能为空");
+ continue;
+ }
+ if (largeKeyGridUserImport.getIdCard().matches("^$|(^[1-9]\\\\d{7}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])\\\\d{3}$)|(^[1-9]\\\\d{5}[1-9]\\\\d{3}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])((\\\\d{4})|\\\\d{3}[Xx])$)")){
+ result.append("第"+i+"行:[", "身份证号"+"]格式不正确");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getContactNumber())){
+ result.append("第"+i+"行:[", "联系电话"+"]不能为空");
+ continue;
+ }
+ if (largeKeyGridUserImport.getContactNumber().matches("^1[3-9]\\\\d{9}$")){
+ result.append("第"+i+"行:[", "联系电话"+"]格式不正确");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeKeyGridUserImport.getTypeName())){
+ result.append("第"+i+"行:[", "类型名称"+"]不能为空");
+ continue;
+ }
+ TLargeKeyGridUser largeKeyGridUser = new TLargeKeyGridUser();
+ BeanUtils.copyProperties(largeKeyGridUserImport, largeKeyGridUser);
+
+ switch (largeKeyGridUserImport.getUserSexStr()){
+ case "男":
+ largeKeyGridUser.setUserSex(1);
+ break;
+ case "女":
+ largeKeyGridUser.setUserSex(2);
+ break;
+ default:
+ result.append("第"+i+"行:[", "性别"+"]格式错误");
+ continue;
+ }
+
+ TLargeKeyPersonnelType largeKeyPersonnelType = largeKeyPersonnelTypeService.getOne(Wrappers.lambdaQuery(TLargeKeyPersonnelType.class)
+ .eq(TLargeKeyPersonnelType::getTypeName, largeKeyGridUserImport.getTypeName())
+ .last("LIMIT 1"));
+ if(Objects.isNull(largeKeyPersonnelType)){
+ result.append("第"+i+"行:[", "类型名称"+"]不存在");
+ continue;
+ }
+ largeKeyGridUser.setTypeId(largeKeyPersonnelType.getId());
+ largeKeyGridUser.setUserType(1);
+ largeKeyGridUsers.add(largeKeyGridUser);
+ i++;
+ }
+ largeKeyGridUserService.saveBatch(largeKeyGridUsers);
+ if(!result.isEmpty()){
+ return R.fail(result.toString());
+ }
+ return R.ok();
+ }
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeOrganizationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeOrganizationController.java
index b42f71d..10e5610 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeOrganizationController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeOrganizationController.java
@@ -1,21 +1,47 @@
package com.ruoyi.web.controller.api;
+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.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.system.export.LargeOrganizationImport;
+import com.ruoyi.system.export.MerchantImport;
import com.ruoyi.system.model.TLargeOrganization;
+import com.ruoyi.system.model.TMerchant;
+import com.ruoyi.system.model.TMerchantType;
import com.ruoyi.system.query.TLargeOrganizationQuery;
import com.ruoyi.system.service.TLargeOrganizationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
+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.Objects;
/**
* <p>
@@ -25,6 +51,7 @@
* @author xiaochen
* @since 2025-11-11
*/
+@Slf4j
@Api(tags = "大屏-社会组织")
@RestController
@RequestMapping("/t-large-organization")
@@ -116,6 +143,101 @@
public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
return R.ok(largeOrganizationService.removeByIds(ids));
}
+
+ @ApiOperation(value = "社会组织导入模板下载")
+ @GetMapping("/import-template")
+ public void importTemplate() {
+ List<LargeOrganizationImport> largeOrganizationImports = new ArrayList<>();
+ LargeOrganizationImport largeOrganizationImport = new LargeOrganizationImport();
+ largeOrganizationImports.add(largeOrganizationImport);
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), LargeOrganizationImport.class, largeOrganizationImports);
+ HttpServletResponse response = WebUtils.response();
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("社会组织导入模板.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("content-Type", "application/vnd.ms-excel");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("社会组织导入模板下载失败!");
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ @Log(title = "社会组织-社会组织导入", businessType = BusinessType.INSERT)
+ @ApiOperation(value = "社会组织导入")
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ @PostMapping("/import")
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
+ List<TLargeOrganization> largeOrganizations = new ArrayList<>();
+ ImportParams params = new ImportParams();
+ params.setHeadRows(1); //表头行数
+ InputStream inputStream = null;
+ List<LargeOrganizationImport> largeOrganizationImports;
+ try {
+ inputStream = file.getInputStream();
+ largeOrganizationImports = ExcelImportUtil.importExcel(inputStream,
+ LargeOrganizationImport.class, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("社会组织导入失败:{}", e.getMessage());
+ throw new ServiceException("社会组织导入失败!");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }
+ if (CollectionUtils.isEmpty(largeOrganizationImports)) {
+ throw new ServiceException("社会组织数据为空!");
+ }
+ JSONObject result = new JSONObject();
+ int i = 1;
+ for (LargeOrganizationImport largeOrganizationImport : largeOrganizationImports) {
+ if (!StringUtils.hasLength(largeOrganizationImport.getOrganizationName())){
+ result.append("第"+i+"行:[", "组织名称"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeOrganizationImport.getOrganizationPerson())){
+ result.append("第"+i+"行:[", "组织负责人"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeOrganizationImport.getAddress())){
+ result.append("第"+i+"行:[", "地址"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeOrganizationImport.getContactNumber())){
+ result.append("第"+i+"行:[", "联系电话"+"]不能为空");
+ continue;
+ }
+ if (largeOrganizationImport.getContactNumber().matches("^1[3-9]\\\\d{9}$")){
+ result.append("第"+i+"行:[", "联系电话"+"]格式不正确");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeOrganizationImport.getBusinessScope())){
+ result.append("第"+i+"行:[", "业务范围"+"]不能为空");
+ continue;
+ }
+ TLargeOrganization largeOrganization = new TLargeOrganization();
+ BeanUtils.copyProperties(largeOrganizationImport, largeOrganization);
+ largeOrganizations.add(largeOrganization);
+ i++;
+ }
+ largeOrganizationService.saveBatch(largeOrganizations);
+ if(!result.isEmpty()){
+ return R.fail(result.toString());
+ }
+ return R.ok();
+ }
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeResourceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeResourceController.java
index a02d2e8..593fb50 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeResourceController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeResourceController.java
@@ -1,22 +1,47 @@
package com.ruoyi.web.controller.api;
+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.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.system.export.LargeResourceImport;
import com.ruoyi.system.model.TLargeResource;
+import com.ruoyi.system.model.TLargeResourceType;
import com.ruoyi.system.query.TLargeResourceQuery;
import com.ruoyi.system.service.TLargeResourceService;
+import com.ruoyi.system.service.TLargeResourceTypeService;
import com.ruoyi.system.vo.TLargeResourceVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
+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.Objects;
/**
* <p>
@@ -26,15 +51,18 @@
* @author xiaochen
* @since 2025-11-11
*/
+@Slf4j
@Api(tags = "大屏-社区资源")
@RestController
@RequestMapping("/t-large-resource")
public class TLargeResourceController {
private final TLargeResourceService largeResourceService;
+ private final TLargeResourceTypeService largeResourceTypeService;
@Autowired
- public TLargeResourceController(TLargeResourceService largeResourceService) {
+ public TLargeResourceController(TLargeResourceService largeResourceService, TLargeResourceTypeService largeResourceTypeService) {
this.largeResourceService = largeResourceService;
+ this.largeResourceTypeService = largeResourceTypeService;
}
/**
@@ -112,6 +140,130 @@
return R.ok(largeResourceService.removeByIds(ids));
}
+ @ApiOperation(value = "社区资源信息导入模板下载")
+ @GetMapping("/import-template")
+ public void importTemplate() {
+ List<LargeResourceImport> largeLargeResourceImports = new ArrayList<>();
+ LargeResourceImport largeLargeResourceImport = new LargeResourceImport();
+ largeLargeResourceImports.add(largeLargeResourceImport);
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), LargeResourceImport.class, largeLargeResourceImports);
+ HttpServletResponse response = WebUtils.response();
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("社区资源信息导入模板.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("content-Type", "application/vnd.ms-excel");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("社区资源信息导入模板下载失败!");
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ @Log(title = "社区资源信息-社区资源信息导入", businessType = BusinessType.INSERT)
+ @ApiOperation(value = "社区资源信息导入")
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ @PostMapping("/import")
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
+ List<TLargeResource> largeResources = new ArrayList<>();
+ ImportParams params = new ImportParams();
+ params.setHeadRows(1); //表头行数
+ InputStream inputStream = null;
+ List<LargeResourceImport> largeResourceImports;
+ try {
+ inputStream = file.getInputStream();
+ largeResourceImports = ExcelImportUtil.importExcel(inputStream,
+ LargeResourceImport.class, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("社区资源信息导入失败:{}", e.getMessage());
+ throw new ServiceException("社区资源信息导入失败!");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }
+ if (CollectionUtils.isEmpty(largeResourceImports)) {
+ throw new ServiceException("社区资源信息数据为空!");
+ }
+ JSONObject result = new JSONObject();
+ int i = 1;
+ for (LargeResourceImport largeResourceImport : largeResourceImports) {
+ if (!StringUtils.hasLength(largeResourceImport.getTypeParentName())){
+ result.append("第"+i+"行:[", "一级类型名称"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getTypeChildrenName())){
+ result.append("第"+i+"行:[", "二级类型名称"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getResourceUnit())){
+ result.append("第"+i+"行:[", "资源单位"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getResourceNameDesc())){
+ result.append("第"+i+"行:[", "资源名称描述"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getResourceSource())){
+ result.append("第"+i+"行:[", "资源来源"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getQuantityScale())){
+ result.append("第"+i+"行:[", "数量规模"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getContactPerson())){
+ result.append("第"+i+"行:[", "联系人"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeResourceImport.getContactNumber())){
+ result.append("第"+i+"行:[", "联系电话"+"]不能为空");
+ continue;
+ }
+ if (largeResourceImport.getContactNumber().matches("^1[3-9]\\\\d{9}$")){
+ result.append("第"+i+"行:[", "联系电话"+"]格式不正确");
+ continue;
+ }
+ TLargeResource largeResource = new TLargeResource();
+ BeanUtils.copyProperties(largeResourceImport, largeResource);
+
+ TLargeResourceType parent = largeResourceTypeService.getOne(Wrappers.lambdaQuery(TLargeResourceType.class)
+ .eq(TLargeResourceType::getTypeName, largeResourceImport.getTypeParentName())
+ .last("LIMIT 1"));
+ if(Objects.isNull(parent)){
+ result.append("第"+i+"行:[", "一级类型名称"+"]不存在");
+ continue;
+ }
+ largeResource.setTypeParentId(parent.getId());
+ TLargeResourceType children = largeResourceTypeService.getOne(Wrappers.lambdaQuery(TLargeResourceType.class)
+ .eq(TLargeResourceType::getTypeName, largeResourceImport.getTypeChildrenName())
+ .eq(TLargeResourceType::getParentId, parent.getId())
+ .last("LIMIT 1"));
+ if(Objects.isNull(children)){
+ result.append("第"+i+"行:[", "二级类型名称"+"]不存在");
+ continue;
+ }
+ largeResource.setTypeChildrenId(children.getId());
+ largeResources.add(largeResource);
+ i++;
+ }
+ largeResourceService.saveBatch(largeResources);
+ if(!result.isEmpty()){
+ return R.fail(result.toString());
+ }
+ return R.ok();
+ }
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeSocialWorkerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeSocialWorkerController.java
index 9c59805..61d2617 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeSocialWorkerController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeSocialWorkerController.java
@@ -1,20 +1,43 @@
package com.ruoyi.web.controller.api;
+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.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.system.export.LargeSocialWorkerImport;
import com.ruoyi.system.model.TLargeSocialWorker;
import com.ruoyi.system.query.TLargeSocialWorkerQuery;
import com.ruoyi.system.service.TLargeSocialWorkerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
+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;
/**
@@ -25,6 +48,7 @@
* @author xiaochen
* @since 2025-11-11
*/
+@Slf4j
@Api(tags = "大屏-社会工作者")
@RestController
@RequestMapping("/t-large-social-worker")
@@ -110,6 +134,146 @@
public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
return R.ok(largeSocialWorkerService.removeByIds(ids));
}
+
+ @ApiOperation(value = "社会工作者信息导入模板下载")
+ @GetMapping("/import-template")
+ public void importTemplate() {
+ List<LargeSocialWorkerImport> largeLargeSocialWorkerImports = new ArrayList<>();
+ LargeSocialWorkerImport largeLargeSocialWorkerImport = new LargeSocialWorkerImport();
+ largeLargeSocialWorkerImports.add(largeLargeSocialWorkerImport);
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), LargeSocialWorkerImport.class, largeLargeSocialWorkerImports);
+ HttpServletResponse response = WebUtils.response();
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("社会工作者信息导入模板.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("content-Type", "application/vnd.ms-excel");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("社会工作者信息导入模板下载失败!");
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ @Log(title = "社会工作者信息-社会工作者信息导入", businessType = BusinessType.INSERT)
+ @ApiOperation(value = "社会工作者信息导入")
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ @PostMapping("/import")
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
+ List<TLargeSocialWorker> largeSocialWorkers = new ArrayList<>();
+ ImportParams params = new ImportParams();
+ params.setHeadRows(1); //表头行数
+ InputStream inputStream = null;
+ List<LargeSocialWorkerImport> largeSocialWorkerImports;
+ try {
+ inputStream = file.getInputStream();
+ largeSocialWorkerImports = ExcelImportUtil.importExcel(inputStream,
+ LargeSocialWorkerImport.class, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("社会工作者信息导入失败:{}", e.getMessage());
+ throw new ServiceException("社会工作者信息导入失败!");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }
+ if (CollectionUtils.isEmpty(largeSocialWorkerImports)) {
+ throw new ServiceException("社会工作者信息数据为空!");
+ }
+ JSONObject result = new JSONObject();
+ int i = 1;
+ for (LargeSocialWorkerImport largeSocialWorkerImport : largeSocialWorkerImports) {
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getUserName())){
+ result.append("第"+i+"行:[", "姓名"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getUserSexStr())){
+ result.append("第"+i+"行:[", "性别"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getBirthDateStr())){
+ result.append("第"+i+"行:[", "出生日期"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getEducationalLevel())){
+ result.append("第"+i+"行:[", "文化程度"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getPoliticalStatus())){
+ result.append("第"+i+"行:[", "政治面貌"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getContactNumber())){
+ result.append("第"+i+"行:[", "联系电话"+"]不能为空");
+ continue;
+ }
+ if (largeSocialWorkerImport.getContactNumber().matches("^1[3-9]\\\\d{9}$")){
+ result.append("第"+i+"行:[", "联系电话"+"]格式不正确");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getEmployerPosition())){
+ result.append("第"+i+"行:[", "工作单位及职务"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeSocialWorkerImport.getQualificationLevelStr())){
+ result.append("第"+i+"行:[", "职业资格等级"+"]不能为空");
+ continue;
+ }
+ TLargeSocialWorker largeSocialWorker = new TLargeSocialWorker();
+ BeanUtils.copyProperties(largeSocialWorkerImport, largeSocialWorker);
+
+ switch (largeSocialWorkerImport.getUserSexStr()){
+ case "男":
+ largeSocialWorker.setUserSex(1);
+ break;
+ case "女":
+ largeSocialWorker.setUserSex(2);
+ break;
+ default:
+ result.append("第"+i+"行:[", "性别"+"]格式错误");
+ continue;
+ }
+
+ switch (largeSocialWorkerImport.getQualificationLevelStr()){
+ case "助理社会工作师(初级)":
+ largeSocialWorker.setQualificationLevel(1);
+ break;
+ case "社会工作师(中级)":
+ largeSocialWorker.setQualificationLevel(2);
+ break;
+ case "高级社会工作师(高级)":
+ largeSocialWorker.setQualificationLevel(3);
+ break;
+ default:
+ result.append("第"+i+"行:[", "职业资格等级"+"]格式错误");
+ continue;
+ }
+ try{
+ largeSocialWorker.setBirthDate(DateUtils.stringToLocalDate(largeSocialWorkerImport.getBirthDateStr()));
+ }catch (Exception e){
+ result.append("第"+i+"行:[", "出生日期"+"]格式错误");
+ continue;
+ }
+ largeSocialWorkers.add(largeSocialWorker);
+ i++;
+ }
+ largeSocialWorkerService.saveBatch(largeSocialWorkers);
+ if(!result.isEmpty()){
+ return R.fail(result.toString());
+ }
+ return R.ok();
+ }
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeVolunteerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeVolunteerController.java
index 233da1e..3df9c08 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeVolunteerController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLargeVolunteerController.java
@@ -1,21 +1,47 @@
package com.ruoyi.web.controller.api;
+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.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.system.export.LargeSocialWorkerImport;
+import com.ruoyi.system.export.LargeVolunteerImport;
+import com.ruoyi.system.model.TLargeSocialWorker;
import com.ruoyi.system.model.TLargeVolunteer;
import com.ruoyi.system.query.TLargeVolunteerQuery;
import com.ruoyi.system.service.TLargeVolunteerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.ServletOutputStream;
+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.Objects;
/**
* <p>
@@ -25,6 +51,7 @@
* @author xiaochen
* @since 2025-11-11
*/
+@Slf4j
@Api(tags = "大屏-社区志愿者")
@RestController
@RequestMapping("/t-large-volunteer")
@@ -110,6 +137,136 @@
public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
return R.ok(largeVolunteerService.removeByIds(ids));
}
-
+
+
+ @ApiOperation(value = "社区志愿者信息导入模板下载")
+ @GetMapping("/import-template")
+ public void importTemplate() {
+ List<LargeVolunteerImport> largeLargeVolunteerImports = new ArrayList<>();
+ LargeVolunteerImport largeLargeVolunteerImport = new LargeVolunteerImport();
+ largeLargeVolunteerImports.add(largeLargeVolunteerImport);
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), LargeVolunteerImport.class, largeLargeVolunteerImports);
+ HttpServletResponse response = WebUtils.response();
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("社区志愿者信息导入模板.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("content-Type", "application/vnd.ms-excel");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("社区志愿者信息导入模板下载失败!");
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ @Log(title = "社区志愿者信息-社区志愿者信息导入", businessType = BusinessType.INSERT)
+ @ApiOperation(value = "社区志愿者信息导入")
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ @PostMapping("/import")
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
+ List<TLargeVolunteer> largeVolunteers = new ArrayList<>();
+ ImportParams params = new ImportParams();
+ params.setHeadRows(1); //表头行数
+ InputStream inputStream = null;
+ List<LargeVolunteerImport> largeVolunteerImports;
+ try {
+ inputStream = file.getInputStream();
+ largeVolunteerImports = ExcelImportUtil.importExcel(inputStream,
+ LargeVolunteerImport.class, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("社区志愿者信息导入失败:{}", e.getMessage());
+ throw new ServiceException("社区志愿者信息导入失败!");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }
+ if (CollectionUtils.isEmpty(largeVolunteerImports)) {
+ throw new ServiceException("社区志愿者信息数据为空!");
+ }
+ JSONObject result = new JSONObject();
+ int i = 1;
+ for (LargeVolunteerImport largeVolunteerImport : largeVolunteerImports) {
+ if (!StringUtils.hasLength(largeVolunteerImport.getUserName())){
+ result.append("第"+i+"行:[", "姓名"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeVolunteerImport.getUserSexStr())){
+ result.append("第"+i+"行:[", "性别"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeVolunteerImport.getBirthDateStr())){
+ result.append("第"+i+"行:[", "出生日期"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeVolunteerImport.getServiceArea())){
+ result.append("第"+i+"行:[", "服务区域"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeVolunteerImport.getRegisterDateStr())){
+ result.append("第"+i+"行:[", "注册日期"+"]不能为空");
+ continue;
+ }
+ if (Objects.isNull(largeVolunteerImport.getTotalServiceDuration())){
+ result.append("第"+i+"行:[", "总服务时长"+"]不能为空");
+ continue;
+ }
+ if (!StringUtils.hasLength(largeVolunteerImport.getJoinTeamDateStr())){
+ result.append("第"+i+"行:[", "加入队伍时间"+"]不能为空");
+ continue;
+ }
+ TLargeVolunteer largeVolunteer = new TLargeVolunteer();
+ BeanUtils.copyProperties(largeVolunteerImport, largeVolunteer);
+
+ switch (largeVolunteerImport.getUserSexStr()){
+ case "男":
+ largeVolunteer.setUserSex(1);
+ break;
+ case "女":
+ largeVolunteer.setUserSex(2);
+ break;
+ default:
+ result.append("第"+i+"行:[", "性别"+"]格式错误");
+ continue;
+ }
+ try{
+ largeVolunteer.setBirthDate(DateUtils.stringToLocalDate(largeVolunteerImport.getBirthDateStr()));
+ }catch (Exception e){
+ result.append("第"+i+"行:[", "出生日期"+"]格式错误");
+ continue;
+ }
+ try{
+ largeVolunteer.setRegisterDate(DateUtils.stringToLocalDateTime(largeVolunteerImport.getBirthDateStr()));
+ }catch (Exception e){
+ result.append("第"+i+"行:[", "注册日期"+"]格式错误");
+ continue;
+ }
+ try{
+ largeVolunteer.setJoinTeamDate(DateUtils.stringToLocalDateTime(largeVolunteerImport.getBirthDateStr()));
+ }catch (Exception e){
+ result.append("第"+i+"行:[", "加入队伍时间"+"]格式错误");
+ continue;
+ }
+ largeVolunteers.add(largeVolunteer);
+ i++;
+ }
+ largeVolunteerService.saveBatch(largeVolunteers);
+ if(!result.isEmpty()){
+ return R.fail(result.toString());
+ }
+ return R.ok();
+ }
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMerchantController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMerchantController.java
index ad38e30..0a96087 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMerchantController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMerchantController.java
@@ -172,11 +172,11 @@
}
}
}
- @Log(title = "商户信息导入", businessType = BusinessType.INSERT)
+ @Log(title = "商户信息-商户信息导入", businessType = BusinessType.INSERT)
@ApiOperation(value = "商户信息导入")
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
@PostMapping("/import")
- public R<String> importLocation(@RequestPart("file") MultipartFile file) {
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
List<TMerchant> merchants = new ArrayList<>();
ImportParams params = new ImportParams();
params.setHeadRows(1); //表头行数
@@ -205,21 +205,26 @@
for (MerchantImport merchantImport : merchantImports) {
if (!StringUtils.hasLength(merchantImport.getMerchantName())){
result.append("第"+i+"行:[", "商户名称"+"]不能为空");
+ continue;
}
if (!StringUtils.hasLength(merchantImport.getMerchantPhone())){
result.append("第"+i+"行:[", "商户电话"+"]不能为空");
+ continue;
}
if (!StringUtils.hasLength(merchantImport.getTypeName())){
result.append("第"+i+"行:[", "商户分类"+"]不能为空");
+ continue;
}
if (!StringUtils.hasLength(merchantImport.getAddress())){
result.append("第"+i+"行:[", "商户地址"+"]不能为空");
+ continue;
}
TMerchantType merchantType = merchantTypeService.getOne(Wrappers.lambdaQuery(TMerchantType.class)
.eq(TMerchantType::getTypeName, merchantImport.getTypeName())
.last("LIMIT 1"));
if(Objects.isNull(merchantType)){
result.append("第"+i+"行:[", "商户分类"+"]不存在");
+ continue;
}
TMerchant merchant = new TMerchant();
BeanUtils.copyProperties(merchantImport, merchant);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterController.java
index c1cfa80..7477972 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterController.java
@@ -13,6 +13,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.WebUtils;
import com.ruoyi.system.export.OldsterImport;
import com.ruoyi.system.model.TNotice;
@@ -140,11 +141,11 @@
}
}
}
- @Log(title = "老人户籍信息导入", businessType = BusinessType.INSERT)
+ @Log(title = "老人户籍信息-老人户籍信息导入", businessType = BusinessType.INSERT)
@ApiOperation(value = "老人户籍信息导入")
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
@PostMapping("/import")
- public R<String> importLocation(@RequestPart("file") MultipartFile file) {
+ public R<String> importInfo(@RequestPart("file") MultipartFile file) {
List<TOldster> oldsters = new ArrayList<>();
ImportParams params = new ImportParams();
params.setHeadRows(1); //表头行数
@@ -173,24 +174,61 @@
for (OldsterImport oldsterImport : assetHouseInspectionImports) {
if (!StringUtils.hasLength(oldsterImport.getOldsterName())){
result.append("第"+i+"行:[", "老人姓名"+"]不能为空");
+ continue;
}
- if (oldsterImport.getOldsterAge()!=null){
+ if (oldsterImport.getOldsterAge()==null){
result.append("第"+i+"行:[", "老人年龄"+"]不能为空");
+ continue;
}
- if (oldsterImport.getOldsterSex()!=null){
+ if (!StringUtils.hasLength(oldsterImport.getOldsterSexStr())){
result.append("第"+i+"行:[", "老人性别"+"]不能为空");
+ continue;
}
if (!StringUtils.hasLength(oldsterImport.getContactPhone())){
result.append("第"+i+"行:[", "联系方式"+"]不能为空");
+ continue;
}
- if (oldsterImport.getOldsterType()!=null){
+ if (!StringUtils.hasLength(oldsterImport.getOldsterTypeStr())){
result.append("第"+i+"行:[", "人员类型"+"]不能为空");
+ continue;
}
if (!StringUtils.hasLength(oldsterImport.getAddress())){
result.append("第"+i+"行:[", "居住地址"+"]不能为空");
+ continue;
}
TOldster tOldster = new TOldster();
BeanUtils.copyProperties(oldsterImport, tOldster);
+ if(StringUtils.hasLength(oldsterImport.getBirthDateStr())){
+ try{
+ LocalDate localDate = DateUtils.stringToLocalDate(oldsterImport.getBirthDateStr());
+ tOldster.setBirthDate(localDate);
+ }catch (Exception e){
+ result.append("第"+i+"行:[", "出生日期"+"]格式错误");
+ continue;
+ }
+ }
+ switch (oldsterImport.getOldsterSexStr()){
+ case "男":
+ tOldster.setOldsterSex(1);
+ break;
+ case "女":
+ tOldster.setOldsterSex(2);
+ break;
+ }
+ switch (oldsterImport.getOldsterTypeStr()){
+ case "独居老人":
+ tOldster.setOldsterType(1);
+ break;
+ case "高龄老人":
+ tOldster.setOldsterType(2);
+ break;
+ case "散居特困供养老人":
+ tOldster.setOldsterType(3);
+ break;
+ case "失能老人":
+ tOldster.setOldsterType(4);
+ break;
+ }
oldsters.add(tOldster);
i++;
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterWarningController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterWarningController.java
index 016f999..c90d108 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterWarningController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOldsterWarningController.java
@@ -93,11 +93,19 @@
}
return R.ok(oldsterWarningVO);
}
-
+ /**
+ * 删除老人预警信息
+ */
+ @Log(title = "老人预警信息-删除", businessType = BusinessType.DELETE)
+ @ApiOperation(value = "老人预警信息-删除")
+ @DeleteMapping(value = "/deleteById")
+ public R<Boolean> deleteById(@RequestParam String id) {
+ return R.ok(oldsterWarningService.removeById(id));
+ }
@Log(title = "老人预警管理-老人预警记录导出", businessType = BusinessType.EXPORT)
@ApiOperation(value = "老人预警记录导出")
@PostMapping("/exportOldsterWarning")
- public void exportOldsterWarning(@RequestBody TCourseOrderQuery query){
+ public void exportOldsterWarning(@RequestBody OldsterListQuery query){
List<TOldsterWarningExport> oldsterWarningExports = oldsterWarningService.exportOldsterWarning(query);
for (TOldsterWarningExport oldsterWarningExport : oldsterWarningExports) {
if(Objects.nonNull(oldsterWarningExport.getWarningTime())){
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOtherConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOtherConfigController.java
index 7f71fc2..ae72795 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOtherConfigController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOtherConfigController.java
@@ -39,6 +39,9 @@
@ApiOperation(value = "修改系统其他设置-通知阈值管理")
@PostMapping(value = "/update")
public R<Boolean> update(@Validated @RequestBody TOtherConfig dto) {
+ if(dto.getDays()>=365){
+ return R.fail("天数不能超过365天");
+ }
return R.ok(otherConfigService.updateById(dto));
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java
index 2f2ac4f..bd3a3f8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java
@@ -1,9 +1,35 @@
package com.ruoyi.web.controller.api;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.common.collect.ImmutableMap;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.dto.TQuestionnaireDTO;
+import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.TQuestionnaireQuery;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.task.base.QuartzManager;
+import com.ruoyi.system.task.base.TimeJobType;
+import com.ruoyi.system.task.jobs.QuestionnairePush;
+import com.ruoyi.system.vo.TQuestionnaireVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RestController;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* <p>
@@ -13,9 +39,253 @@
* @author xiaochen
* @since 2025-11-06
*/
+@Api(tags = "问卷调查")
@RestController
@RequestMapping("/t-questionnaire")
public class TQuestionnaireController {
+ private final TQuestionnaireService questionnaireService;
+ private final TQuestionnaireStemService questionnaireStemService;
+ private final TQuestionnaireStemOptionService questionnaireStemOptionService;
+ private final TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService;
+ private final TAppUserService appUserService;
+ @Autowired
+ public TQuestionnaireController(TQuestionnaireService questionnaireService, TQuestionnaireStemService questionnaireStemService, TQuestionnaireStemOptionService questionnaireStemOptionService, TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService, TAppUserService appUserService) {
+ this.questionnaireService = questionnaireService;
+ this.questionnaireStemService = questionnaireStemService;
+ this.questionnaireStemOptionService = questionnaireStemOptionService;
+ this.questionnaireStemBriefAnswerService = questionnaireStemBriefAnswerService;
+ this.appUserService = appUserService;
+ }
+
+ /**
+ * 获取问卷调查管理列表
+ */
+ @ApiOperation(value = "获取问卷调查分页列表")
+ @PostMapping(value = "/pageList")
+ public R<PageInfo<TQuestionnaireVO>> pageList(@RequestBody TQuestionnaireQuery query) {
+ return R.ok(questionnaireService.pageList(query));
+ }
+
+ /**
+ * 添加问卷调查管理
+ */
+ @Log(title = "问卷调查信息-新增问卷调查", businessType = BusinessType.INSERT)
+ @ApiOperation(value = "添加问卷调查")
+ @PostMapping(value = "/add")
+ public R<Boolean> add(@Validated @RequestBody TQuestionnaireDTO dto) {
+ LocalDateTime startTime = dto.getStartTime();
+ LocalDateTime endTime = dto.getEndTime();
+ LocalDateTime now = LocalDateTime.now();
+ if(now.isBefore(startTime)){
+ dto.setStatus(1);
+ }
+ if(now.isAfter(startTime) && now.isBefore(endTime)){
+ dto.setStatus(2);
+ }
+ if(now.isAfter(endTime)){
+ dto.setStatus(3);
+ }
+ questionnaireService.save(dto);
+ // 添加题干
+ List<TQuestionnaireStemOption> options = new ArrayList<>();
+ List<TQuestionnaireStem> questionnaireStems = dto.getQuestionnaireStems();
+ for (TQuestionnaireStem questionnaireStem : questionnaireStems) {
+ questionnaireStem.setQuestionnaireId(dto.getId());
+ questionnaireStemService.save(questionnaireStem);
+ options = questionnaireStem.getOptions();
+ for (TQuestionnaireStemOption option : options) {
+ option.setStemId(questionnaireStem.getId());
+ }
+ }
+ if(!CollectionUtils.isEmpty(options)){
+ questionnaireStemOptionService.saveBatch(options);
+ }
+ if(now.isBefore(startTime)){
+ // 添加定时任务
+ Map<String, ? extends Object> maps =
+ new ImmutableMap.Builder<String, String>().
+ put("id", dto.getId()).put("type","1")
+ .build();
+ QuartzManager.addJob(
+ QuestionnairePush.class,
+ (QuestionnairePush.name+dto.getId()).toUpperCase(),
+ TimeJobType.QUESTIONNAIRE_PUSH,
+ DateUtils.localDateTimeToDate(dto.getStartTime()),
+ maps
+ );
+ }
+ if(now.isAfter(startTime) && now.isBefore(endTime)){
+ // 添加定时任务
+ Map<String, ? extends Object> maps =
+ new ImmutableMap.Builder<String, String>().
+ put("id", dto.getId()).put("type","2")
+ .build();
+ QuartzManager.addJob(
+ QuestionnairePush.class,
+ (QuestionnairePush.name+dto.getId()).toUpperCase(),
+ TimeJobType.QUESTIONNAIRE_PUSH,
+ DateUtils.localDateTimeToDate(dto.getEndTime()),
+ maps
+ );
+ }
+ return R.ok();
+ }
+
+ /**
+ * 修改问卷调查
+ */
+ @Log(title = "问卷调查信息-修改问卷调查", businessType = BusinessType.UPDATE)
+ @ApiOperation(value = "修改问卷调查")
+ @PostMapping(value = "/update")
+ public R<Boolean> update(@Validated @RequestBody TQuestionnaireDTO dto) {
+ TQuestionnaire communityActivity = questionnaireService.getById(dto.getId());
+ if(communityActivity.getStatus() == 2 || communityActivity.getStatus() == 3){
+ return R.fail("问卷调查正在进行中或已结束,无法修改");
+ }
+ LocalDateTime startTime = dto.getStartTime();
+ LocalDateTime endTime = dto.getEndTime();
+ LocalDateTime now = LocalDateTime.now();
+ if(now.isBefore(startTime)){
+ dto.setStatus(1);
+ // 添加定时任务
+ Map<String, ? extends Object> maps =
+ new ImmutableMap.Builder<String, String>().
+ put("id", communityActivity.getId()).put("type","1")
+ .build();
+ QuartzManager.addJob(
+ QuestionnairePush.class,
+ (QuestionnairePush.name+communityActivity.getId()).toUpperCase(),
+ TimeJobType.QUESTIONNAIRE_PUSH,
+ DateUtils.localDateTimeToDate(communityActivity.getStartTime()),
+ maps
+ );
+ }
+ if(now.isAfter(startTime) && now.isBefore(endTime)){
+ dto.setStatus(2);
+ // 添加定时任务
+ Map<String, ? extends Object> maps =
+ new ImmutableMap.Builder<String, String>().
+ put("id", communityActivity.getId()).put("type","2")
+ .build();
+ QuartzManager.addJob(
+ QuestionnairePush.class,
+ (QuestionnairePush.name+communityActivity.getId()).toUpperCase(),
+ TimeJobType.QUESTIONNAIRE_PUSH,
+ DateUtils.localDateTimeToDate(communityActivity.getEndTime()),
+ maps
+ );
+ }
+ if(now.isAfter(endTime)){
+ dto.setStatus(3);
+ }
+ questionnaireService.updateById(dto);
+ return R.ok();
+ }
+
+ /**
+ * 查看问卷调查详情
+ */
+ @ApiOperation(value = "查看问卷调查详情")
+ @GetMapping(value = "/getDetailById")
+ public R<TQuestionnaireVO> getDetailById(@RequestParam String id) {
+ TQuestionnaire questionnaire = questionnaireService.getById(id);
+ TQuestionnaireVO questionnaireVO = new TQuestionnaireVO();
+ BeanUtils.copyProperties(questionnaire, questionnaireVO);
+ // 查询用户
+ List<TAppUser> appUsers = appUserService.list();
+ // 查询题干
+ List<TQuestionnaireStem> questionnaireStems = questionnaireStemService.list(Wrappers.lambdaQuery(TQuestionnaireStem.class)
+ .eq(TQuestionnaireStem::getQuestionnaireId, id));
+ if(!CollectionUtils.isEmpty(questionnaireStems)){
+ List<String> stemIds = questionnaireStems.stream().map(TQuestionnaireStem::getId).collect(Collectors.toList());
+ // 查询选项
+ List<TQuestionnaireStemOption> questionnaireStemOptions = questionnaireStemOptionService.list(Wrappers.lambdaQuery(TQuestionnaireStemOption.class)
+ .in(TQuestionnaireStemOption::getStemId, stemIds));
+ // 查询解答题答案
+ List<TQuestionnaireStemBriefAnswer> questionnaireStemBriefAnswers = questionnaireStemBriefAnswerService.list(Wrappers.lambdaQuery(TQuestionnaireStemBriefAnswer.class)
+ .in(TQuestionnaireStemBriefAnswer::getStemId, stemIds));
+ for (TQuestionnaireStem questionnaireStem : questionnaireStems) {
+ List<TQuestionnaireStemOption> options = questionnaireStemOptions.stream().filter(questionnaireStemOption -> questionnaireStemOption.getStemId().equals(questionnaireStem.getId())).collect(Collectors.toList());
+ // 匹配作答人数
+ for (TQuestionnaireStemOption option : options) {
+ String answerValue = option.getAnswerValue();
+ option.setAnswerNum(StringUtils.hasLength(answerValue)?answerValue.split(",").length:0);
+ }
+ questionnaireStem.setOptions(options);
+ // 匹配解答题答案
+ List<TQuestionnaireStemBriefAnswer> answers = questionnaireStemBriefAnswers.stream().filter(questionnaireStemBriefAnswer -> questionnaireStemBriefAnswer.getStemId().equals(questionnaireStem.getId())).collect(Collectors.toList());
+ for (TQuestionnaireStemBriefAnswer answer : answers) {
+ List<TAppUser> appUserList = appUsers.stream().filter(appUser -> appUser.getId().equals(answer.getAppUserId())).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(appUserList)){
+ answer.setNickName(appUserList.get(0).getNickName());
+ }
+ }
+ questionnaireStem.setAnswers(answers);
+ }
+ questionnaireVO.setQuestionnaireStems(questionnaireStems);
+ }
+ return R.ok(questionnaireVO);
+ }
+
+ /**
+ * 删除问卷调查
+ */
+ @Log(title = "问卷调查信息-删除问卷调查", businessType = BusinessType.DELETE)
+ @ApiOperation(value = "删除问卷调查")
+ @DeleteMapping(value = "/deleteById")
+ public R<Boolean> deleteById(@RequestParam String id) {
+
+ // 查询题干
+ List<TQuestionnaireStem> questionnaireStems = questionnaireStemService.list(Wrappers.lambdaQuery(TQuestionnaireStem.class)
+ .eq(TQuestionnaireStem::getQuestionnaireId, id));
+
+ if(!CollectionUtils.isEmpty(questionnaireStems)){
+ List<String> stemIds = questionnaireStems.stream().map(TQuestionnaireStem::getId).collect(Collectors.toList());
+ // 删除题干选项
+ questionnaireStemOptionService.remove(Wrappers.lambdaQuery(TQuestionnaireStemOption.class)
+ .in(TQuestionnaireStemOption::getStemId, stemIds));
+ // 删除解答题信息
+ questionnaireStemBriefAnswerService.remove(Wrappers.lambdaQuery(TQuestionnaireStemBriefAnswer.class)
+ .in(TQuestionnaireStemBriefAnswer::getStemId, stemIds));
+ }
+
+ // 删除题干
+ questionnaireStemService.remove(Wrappers.lambdaQuery(TQuestionnaireStem.class)
+ .eq(TQuestionnaireStem::getQuestionnaireId, id));
+
+ return R.ok(questionnaireService.removeById(id));
+ }
+
+ /**
+ * 社区活动发布和完成
+ */
+ @Log(title = "问卷调查信息-问卷调查发布和完成", businessType = BusinessType.UPDATE)
+ @ApiOperation(value = "问卷调查发布和完成")
+ @PostMapping(value = "/updateReleaseFinish")
+ public R<Boolean> updateReleaseFinish(@RequestParam(value = "id") String id,
+ @RequestParam(value = "status") Integer status) {
+
+ TQuestionnaire questionnaire = questionnaireService.getById(id);
+ if(status == 2){
+ // 添加定时任务
+ Map<String, ? extends Object> maps =
+ new ImmutableMap.Builder<String, String>().
+ put("id", questionnaire.getId()).put("type","2")
+ .build();
+ QuartzManager.addJob(
+ QuestionnairePush.class,
+ (QuestionnairePush.name+questionnaire.getId()).toUpperCase(),
+ TimeJobType.QUESTIONNAIRE_PUSH,
+ DateUtils.localDateTimeToDate(questionnaire.getEndTime()),
+ maps
+ );
+ }
+ questionnaireService.update(Wrappers.lambdaUpdate(TQuestionnaire.class)
+ .set(TQuestionnaire::getStatus, status)
+ .eq(TQuestionnaire::getId, id));
+ return R.ok();
+ }
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TServiceGuideFileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TServiceGuideFileController.java
index 4e495c2..15872f6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TServiceGuideFileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TServiceGuideFileController.java
@@ -60,8 +60,8 @@
@Log(title = "办事指南文件管理信息-新增办事指南文件管理", businessType = BusinessType.INSERT)
@ApiOperation(value = "添加办事指南文件管理")
@PostMapping(value = "/add")
- public R<Boolean> add(@Validated @RequestBody TServiceGuideFile dto) {
- return R.ok(serviceGuideFileService.save(dto));
+ public R<Boolean> add(@Validated @RequestBody List<TServiceGuideFile> dto) {
+ return R.ok(serviceGuideFileService.saveBatch(dto));
}
/**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
index 0cde4a5..be14b68 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -1,7 +1,21 @@
package com.ruoyi.web.controller.task;
+import com.ruoyi.system.model.TOldster;
+import com.ruoyi.system.model.TOldsterWarning;
+import com.ruoyi.system.model.TOtherConfig;
+import com.ruoyi.system.service.TOldsterService;
+import com.ruoyi.system.service.TOldsterWarningService;
+import com.ruoyi.system.service.TOtherConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
/**
* @author xiaochen
@@ -10,6 +24,40 @@
@Component
public class TaskUtil {
+ @Autowired
+ private TOldsterService oldsterService;
+ @Autowired
+ private TOldsterWarningService oldsterWarningService;
+ @Autowired
+ private TOtherConfigService otherConfigService;
+ /**
+ * 每日0点定时任务
+ */
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void generateOldsterWarning(){
+
+ // 查询所有老人信息
+ List<TOldster> oldsterList = oldsterService.list();
+ // 查询预警阈值
+ TOtherConfig otherConfig = otherConfigService.getById(1);
+ Integer elderlyAge = otherConfig.getElderlyAge();
+ Integer days = otherConfig.getDays();
+ List<TOldsterWarning> oldsterWarningList = new ArrayList<>();
+ for (TOldster oldster : oldsterList) {
+ LocalDate birthDate = oldster.getBirthDate();
+ // 判断年龄是否与elderlyAge是否为同一年
+ if(birthDate.plusYears(elderlyAge).getYear() == LocalDate.now().getYear() && birthDate.plusYears(elderlyAge).minusDays(days).isEqual(LocalDate.now())){
+ // 添加预警信息
+ TOldsterWarning oldsterWarning = new TOldsterWarning();
+ oldsterWarning.setOldsterId(oldster.getId());
+ oldsterWarning.setWarningTime(LocalDateTime.now());
+ oldsterWarningList.add(oldsterWarning);
+ }
+ }
+ if(!CollectionUtils.isEmpty(oldsterWarningList)){
+ oldsterWarningService.saveBatch(oldsterWarningList);
+ }
+ }
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index 24e80a5..cee9882 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -390,6 +390,16 @@
}
/**
+ * 字符串转为localdatetime
+ *
+ * @param time localdatetime
+ * @return 字符串
+ */
+ public static LocalDateTime stringToLocalDateTime(String time) {
+ return LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ }
+
+ /**
* LocalDateTime转为Date
* @param time
* @return
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TQuestionnaireDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TQuestionnaireDTO.java
new file mode 100644
index 0000000..3a83491
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TQuestionnaireDTO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.system.dto;
+
+import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.model.TQuestionnaireStem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value="TQuestionnaire对象", description="问卷调查")
+public class TQuestionnaireDTO extends TQuestionnaire {
+
+ @ApiModelProperty(value = "题干")
+ private List<TQuestionnaireStem> questionnaireStems;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeKeyGridUserImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeKeyGridUserImport.java
new file mode 100644
index 0000000..72428bd
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeKeyGridUserImport.java
@@ -0,0 +1,49 @@
+package com.ruoyi.system.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "重点人员-网格人员导入对象LargeKeyGridUserImport")
+public class LargeKeyGridUserImport implements Serializable {
+
+ @Excel(name = "网格", width = 20)
+ private String gridInfo;
+
+ @Excel(name = "小区名称", width = 20)
+ private String communityName;
+
+ @Excel(name = "楼栋信息", width = 20)
+ private String buildingInfo;
+
+ @Excel(name = "单元号", width = 20)
+ private String unitNumber;
+
+ @Excel(name = "门牌号", width = 20)
+ private String houseNumber;
+
+ @Excel(name = "姓名", width = 20)
+ private String userName;
+
+ @Excel(name = "性别[男|女]", width = 20)
+ private String userSexStr;
+ private Integer userSex;
+
+ @Excel(name = "身份证号", width = 20)
+ private String idCard;
+
+ @Excel(name = "联系电话", width = 20)
+ private String contactNumber;
+
+ @Excel(name = "类型名称", width = 20)
+ private String typeName;
+ private String typeId;
+
+ @ApiModelProperty(name = "人员类型 1=重点人员,2=网格人员]")
+ private Integer userType;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeOrganizationImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeOrganizationImport.java
new file mode 100644
index 0000000..bf2787f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeOrganizationImport.java
@@ -0,0 +1,28 @@
+package com.ruoyi.system.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "社会组织导入LargeOrganizationImport")
+public class LargeOrganizationImport implements Serializable {
+
+ @Excel(name = "组织名称", width = 20)
+ private String organizationName;
+
+ @Excel(name = "组织负责人", width = 20)
+ private String organizationPerson;
+
+ @Excel(name = "地址", width = 20)
+ private String address;
+
+ @Excel(name = "联系电话", width = 20)
+ private String contactNumber;
+
+ @Excel(name = "业务范围", width = 20)
+ private String businessScope;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeResourceImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeResourceImport.java
new file mode 100644
index 0000000..7bdceda
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeResourceImport.java
@@ -0,0 +1,39 @@
+package com.ruoyi.system.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "社区资源导入LargeResourceImport")
+public class LargeResourceImport implements Serializable {
+
+ @Excel(name = "一级类型名称",width = 20)
+ private String typeParentName;
+ private String typeParentId;
+
+ @Excel(name = "二级类型名称",width = 20)
+ private String typeChildrenName;
+ private String typeChildrenId;
+
+ @Excel(name = "资源单位",width = 20)
+ private String resourceUnit;
+
+ @Excel(name = "资源名称描述",width = 20)
+ private String resourceNameDesc;
+
+ @Excel(name = "资源来源",width = 20)
+ private String resourceSource;
+
+ @Excel(name = "数量规模",width = 20)
+ private String quantityScale;
+
+ @Excel(name = "联系人",width = 20)
+ private String contactPerson;
+
+ @Excel(name = "联系电话",width = 20)
+ private String contactNumber;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeSocialWorkerImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeSocialWorkerImport.java
new file mode 100644
index 0000000..e68e20e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeSocialWorkerImport.java
@@ -0,0 +1,41 @@
+package com.ruoyi.system.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@ApiModel(value = "大屏-社会工作者导入LargeSocialWorkerImport")
+public class LargeSocialWorkerImport implements Serializable {
+
+ @Excel(name = "姓名", width = 20)
+ private String userName;
+
+ @Excel(name = "性别[男|女]", width = 20)
+ private String userSexStr;
+ private Integer userSex;
+
+ @Excel(name = "出生日期[yyyy-mm-dd]", width = 20)
+ private String birthDateStr;
+ private LocalDate birthDate;
+
+ @Excel(name = "文化程度", width = 20)
+ private String educationalLevel;
+
+ @Excel(name = "政治面貌", width = 20)
+ private String politicalStatus;
+
+ @Excel(name = "联系电话", width = 20)
+ private String contactNumber;
+
+ @Excel(name = "工作单位及职务", width = 20)
+ private String employerPosition;
+
+ @Excel(name = "职业资格等级[助理社会工作师(初级)|社会工作师(中级)|高级社会工作师(高级)]", width = 20)
+ private String qualificationLevelStr;
+ private Integer qualificationLevel;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeVolunteerImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeVolunteerImport.java
new file mode 100644
index 0000000..119ff6e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/LargeVolunteerImport.java
@@ -0,0 +1,44 @@
+package com.ruoyi.system.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel(value = "社区志愿者导入对象LargeVolunteerImport")
+public class LargeVolunteerImport implements Serializable {
+
+ @Excel(name = "姓名", width = 20)
+ private String userName;
+
+ @Excel(name = "性别[男|女]", width = 20)
+ private String userSexStr;
+ private Integer userSex;
+
+ @Excel(name = "出生日期[yyyy-mm-dd]", width = 20)
+ private String birthDateStr;
+ private LocalDate birthDate;
+
+ @Excel(name = "服务区域", width = 20)
+ private String serviceArea;
+
+ @Excel(name = "注册日期[yyyy-mm-dd hh:mm:ss]", width = 20)
+ private String registerDateStr;
+ private LocalDateTime registerDate;
+
+ @Excel(name = "总服务时长", width = 20)
+ private BigDecimal totalServiceDuration;
+
+ @Excel(name = "加入队伍时间[yyyy-mm-dd hh:mm:ss]", width = 20)
+ private String joinTeamDateStr;
+ private LocalDateTime joinTeamDate;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/OldsterImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/OldsterImport.java
index 9d1a523..adf492b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/export/OldsterImport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/OldsterImport.java
@@ -10,6 +10,7 @@
import java.io.Serializable;
import java.time.LocalDate;
+import java.time.LocalDateTime;
@Data
@ApiModel(value = "老人户籍信息导入excel")
@@ -23,8 +24,9 @@
@Excel(name = "老人年龄",width = 20)
private Integer oldsterAge;
- @ApiModelProperty(value = "性别 1=男 2=女")
+ @ApiModelProperty(value = "性别 男 女")
@Excel(name = "性别",width = 20)
+ private String oldsterSexStr;
private Integer oldsterSex;
@ApiModelProperty(value = "联系方式")
@@ -39,18 +41,20 @@
@Excel(name = "监护人电话",width = 20)
private String guardianPhone;
-
@ApiModelProperty(value = "身份证")
@Excel(name = "身份证",width = 40)
private String idCard;
@ApiModelProperty(value = "出生日期")
- @Excel(name = "出生日期",width = 20)
- private String birthDate;
+ @Excel(name = "出生日期[yyyy-mm-dd]",width = 20)
+ private String birthDateStr;
+ private LocalDate birthDate;
- @ApiModelProperty(value = "人员类型 1=独居老人 2=高龄老人 3=散居特困供养老人 4=失能老人")
- @Excel(name = "人员类型",width = 20)
- private String oldsterType;
+ @ApiModelProperty(value = "人员类型 独居老人 高龄老人 散居特困供养老人 失能老人")
+ @Excel(name = "人员类型 [独居老人|高龄老人|散居特困供养老人|失能老人]",width = 20)
+ private String oldsterTypeStr;
+
+ private Integer oldsterType;
@ApiModelProperty(value = "居住地址")
@Excel(name = "居住地址",width = 50)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOldsterWarningMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOldsterWarningMapper.java
index 0a6bfc8..7a07e43 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOldsterWarningMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOldsterWarningMapper.java
@@ -34,5 +34,5 @@
* @param query
* @return
*/
- List<TOldsterWarningExport> exportOldsterWarning(@Param("query")TCourseOrderQuery query);
+ List<TOldsterWarningExport> exportOldsterWarning(@Param("query")OldsterListQuery query);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TQuestionnaireMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TQuestionnaireMapper.java
index 20c5610..86dcfba 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TQuestionnaireMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TQuestionnaireMapper.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.query.TQuestionnaireQuery;
+import com.ruoyi.system.vo.TQuestionnaireVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -13,4 +19,12 @@
*/
public interface TQuestionnaireMapper extends BaseMapper<TQuestionnaire> {
+ /**
+ * 分页查询
+ *
+ * @param query
+ * @param pageInfo
+ * @return
+ */
+ List<TQuestionnaireVO> pageList(@Param("query") TQuestionnaireQuery query,@Param("pageInfo") PageInfo<TQuestionnaireVO> pageInfo);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java
index 649fa38..9cf0abd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java
@@ -65,7 +65,7 @@
@TableField("user_sex")
private Integer userSex;
- @Pattern(regexp = "^$|(^[1-9]\\\\d{7}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])\\\\d{3}$)|(^[1-9]\\\\d{5}[1-9]\\\\d{3}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])((\\\\d{4})|\\\\d{3}[Xx])$)\n",message = "身份证号格式不正确")
+ @Pattern(regexp = "^$|(^[1-9]\\\\d{7}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])\\\\d{3}$)|(^[1-9]\\\\d{5}[1-9]\\\\d{3}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])((\\\\d{4})|\\\\d{3}[Xx])$)",message = "身份证号格式不正确")
@ApiModelProperty(value = "身份证号")
@TableField("id_card")
private String idCard;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStem.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStem.java
index 19621d5..91d96df 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStem.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStem.java
@@ -51,5 +51,9 @@
@TableField(exist = false)
private List<TQuestionnaireStemOption> options;
+ @ApiModelProperty(value = "解答题答案")
+ @TableField(exist = false)
+ private List<TQuestionnaireStemBriefAnswer> answers;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemBriefAnswer.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemBriefAnswer.java
index bd2ca92..edaa24d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemBriefAnswer.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemBriefAnswer.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -23,7 +24,7 @@
@EqualsAndHashCode(callSuper = false)
@TableName("t_questionnaire_stem_brief_answer")
@ApiModel(value="TQuestionnaireStemBriefAnswer对象", description="简答题答案")
-public class TQuestionnaireStemBriefAnswer implements Serializable {
+public class TQuestionnaireStemBriefAnswer extends BaseModel {
private static final long serialVersionUID = 1L;
@@ -42,5 +43,8 @@
@TableField("answer_content")
private String answerContent;
+ @ApiModelProperty(value = "用户昵称")
+ @TableField(exist = false)
+ private String nickName;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemOption.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemOption.java
index 9d19c8b..927f743 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemOption.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TQuestionnaireStemOption.java
@@ -46,5 +46,8 @@
@TableField("answer_value")
private String answerValue;
+ @ApiModelProperty(value = "答题人数")
+ @TableField(exist = false)
+ private Integer answerNum;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TQuestionnaireQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TQuestionnaireQuery.java
new file mode 100644
index 0000000..f446efe
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TQuestionnaireQuery.java
@@ -0,0 +1,18 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "问卷查询参数TQuestionnaireQuery")
+public class TQuestionnaireQuery extends BasePage {
+
+ @ApiModelProperty(value = "问卷题目")
+ private String questionnaireTitle;
+
+ @ApiModelProperty(value = "状态 1=待发布 2=发布中 3=已结束")
+ private Integer status;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TServiceGuideFileQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TServiceGuideFileQuery.java
index 2b63a0d..a79d0a6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TServiceGuideFileQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TServiceGuideFileQuery.java
@@ -2,9 +2,14 @@
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "办事指南文件管理查询参数TServiceGuideFileQuery")
public class TServiceGuideFileQuery extends BasePage {
+
+ @ApiModelProperty(value = "文件名称")
+ private String fileName;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOldsterWarningService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOldsterWarningService.java
index 0b22245..45bd73e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOldsterWarningService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOldsterWarningService.java
@@ -32,6 +32,6 @@
* @param query
* @return
*/
- List<TOldsterWarningExport> exportOldsterWarning(TCourseOrderQuery query);
+ List<TOldsterWarningExport> exportOldsterWarning(OldsterListQuery query);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TQuestionnaireService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TQuestionnaireService.java
index 91455ef..52f13e2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TQuestionnaireService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TQuestionnaireService.java
@@ -1,7 +1,10 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.query.TQuestionnaireQuery;
+import com.ruoyi.system.vo.TQuestionnaireVO;
/**
* <p>
@@ -13,4 +16,11 @@
*/
public interface TQuestionnaireService extends IService<TQuestionnaire> {
+ /**
+ * 分页查询
+ *
+ * @param query 查询参数
+ * @return PageInfo<TQuestionnaireVO>
+ */
+ PageInfo<TQuestionnaireVO> pageList(TQuestionnaireQuery query);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLargeKeyGridUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLargeKeyGridUserServiceImpl.java
index ba076d4..836372e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLargeKeyGridUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLargeKeyGridUserServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.system.vo.TLargeKeyGridUserVO;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import java.util.List;
@@ -34,8 +35,10 @@
}
for (TLargeKeyGridUserVO tLargeKeyGridUserVO : list) {
- int age = IDCardAgeCalculator.calculateAge(tLargeKeyGridUserVO.getIdCard());
- tLargeKeyGridUserVO.setAge(age);
+ if(StringUtils.hasLength(tLargeKeyGridUserVO.getIdCard())){
+ int age = IDCardAgeCalculator.calculateAge(tLargeKeyGridUserVO.getIdCard());
+ tLargeKeyGridUserVO.setAge(age);
+ }
}
pageInfo.setRecords(list);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOldsterWarningServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOldsterWarningServiceImpl.java
index 140bee4..4cf4ba0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOldsterWarningServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOldsterWarningServiceImpl.java
@@ -33,27 +33,13 @@
public PageInfo<TOldsterWarningVO> pageList(OldsterListQuery query) {
PageInfo<TOldsterWarningVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List<TOldsterWarningVO> list = this.baseMapper.pageList(query,pageInfo);
- if(CollectionUtils.isEmpty(list)){
- return pageInfo;
- }
- for (TOldsterWarningVO oldsterWarningVO : list) {
- int age = IDCardAgeCalculator.calculateAge(oldsterWarningVO.getIdCard());
- oldsterWarningVO.setOldsterAge(age);
- }
pageInfo.setRecords(list);
return pageInfo;
}
@Override
- public List<TOldsterWarningExport> exportOldsterWarning(TCourseOrderQuery query) {
+ public List<TOldsterWarningExport> exportOldsterWarning(OldsterListQuery query) {
List<TOldsterWarningExport> list = this.baseMapper.exportOldsterWarning(query);
- if(CollectionUtils.isEmpty(list)){
- return new ArrayList<>();
- }
- for (TOldsterWarningExport oldsterWarningExport : list) {
- int age = IDCardAgeCalculator.calculateAge(oldsterWarningExport.getIdCard());
- oldsterWarningExport.setOldsterAge(age);
- }
return list;
}
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TQuestionnaireServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TQuestionnaireServiceImpl.java
index 0cfc9dd..89def6b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TQuestionnaireServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TQuestionnaireServiceImpl.java
@@ -1,10 +1,24 @@
package com.ruoyi.system.service.impl;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.mapper.TQuestionnaireMapper;
+import com.ruoyi.system.mapper.TQuestionnaireRecordMapper;
+import com.ruoyi.system.mapper.TQuestionnaireStemMapper;
+import com.ruoyi.system.model.TAssistedDining;
import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.model.TQuestionnaireRecord;
+import com.ruoyi.system.model.TQuestionnaireStem;
+import com.ruoyi.system.query.TQuestionnaireQuery;
import com.ruoyi.system.service.TQuestionnaireService;
+import com.ruoyi.system.vo.TQuestionnaireVO;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
/**
* <p>
@@ -17,4 +31,31 @@
@Service
public class TQuestionnaireServiceImpl extends ServiceImpl<TQuestionnaireMapper, TQuestionnaire> implements TQuestionnaireService {
+ @Autowired
+ private TQuestionnaireStemMapper questionnaireStemMapper;
+ @Autowired
+ private TQuestionnaireRecordMapper questionnaireRecordMapper;
+
+ @Override
+ public PageInfo<TQuestionnaireVO> pageList(TQuestionnaireQuery query) {
+ PageInfo<TQuestionnaireVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+ List<TQuestionnaireVO> list = this.baseMapper.pageList(query,pageInfo);
+
+ if(CollectionUtils.isEmpty(list)){
+ return pageInfo;
+ }
+ List<String> ids = list.stream().map(TQuestionnaireVO::getId).collect(Collectors.toList());
+ List<TQuestionnaireStem> questionnaireStemList = questionnaireStemMapper.selectList(Wrappers.lambdaQuery(TQuestionnaireStem.class)
+ .in(TQuestionnaireStem::getQuestionnaireId, ids));
+ List<TQuestionnaireRecord> questionnaireRecordList = questionnaireRecordMapper.selectList(Wrappers.lambdaQuery(TQuestionnaireRecord.class)
+ .in(TQuestionnaireRecord::getQuestionnaireId, ids));
+ for (TQuestionnaireVO questionnaireVO : list) {
+ List<TQuestionnaireStem> questionnaireStems = questionnaireStemList.stream().filter(questionnaireStem -> questionnaireVO.getId().equals(questionnaireStem.getQuestionnaireId())).collect(Collectors.toList());
+ questionnaireVO.setOptionNum(questionnaireStems.size());
+ List<TQuestionnaireRecord> questionnaireRecords = questionnaireRecordList.stream().filter(questionnaireRecord -> questionnaireVO.getId().equals(questionnaireRecord.getQuestionnaireId())).collect(Collectors.toList());
+ questionnaireVO.setTotalNum(questionnaireRecords.size());
+ }
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/task/base/AbstractJob.java b/ruoyi-system/src/main/java/com/ruoyi/system/task/base/AbstractJob.java
index 662730b..e524788 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/task/base/AbstractJob.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/task/base/AbstractJob.java
@@ -3,9 +3,12 @@
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.system.model.TCommunityActivity;
import com.ruoyi.system.model.TDeliberationVote;
+import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.model.TQuestionnaireStem;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TCommunityActivityService;
import com.ruoyi.system.service.TDeliberationVoteService;
+import com.ruoyi.system.service.TQuestionnaireService;
import com.ruoyi.system.task.utils.SpringContextsUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
@@ -23,12 +26,13 @@
protected RedisCache redisCache;
protected TDeliberationVoteService deliberationVoteService;
protected TCommunityActivityService communityActivityService;
+ protected TQuestionnaireService questionnaireService;
public AbstractJob(){
this.sysUserService = SpringContextsUtil.getBean(ISysUserService.class);
this.redisCache = SpringContextsUtil.getBean(RedisCache.class);
this.deliberationVoteService = SpringContextsUtil.getBean(TDeliberationVoteService.class);
- this.communityActivityService = SpringContextsUtil.getBean(TCommunityActivityService.class);
+ this.questionnaireService = SpringContextsUtil.getBean(TQuestionnaireService.class);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/task/base/TimeJobType.java b/ruoyi-system/src/main/java/com/ruoyi/system/task/base/TimeJobType.java
index c66e665..38fddd3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/task/base/TimeJobType.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/task/base/TimeJobType.java
@@ -6,7 +6,8 @@
*/
public enum TimeJobType {
DELIBERATION_VOTE_PUSH("deliberation_vote_push","议事投票"),
- ACTIVITY_PUSH("activity_push","社区活动");
+ ACTIVITY_PUSH("activity_push","社区活动"),
+ QUESTIONNAIRE_PUSH("questionnaire_push","问卷调查");
private String type;
private String desc;
private TimeJobType(String type, String desc) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/QuestionnairePush.java b/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/QuestionnairePush.java
new file mode 100644
index 0000000..ea2e57f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/QuestionnairePush.java
@@ -0,0 +1,67 @@
+package com.ruoyi.system.task.jobs;
+
+import com.google.common.collect.ImmutableMap;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.model.TCommunityActivity;
+import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.task.base.AbstractJob;
+import com.ruoyi.system.task.base.QuartzManager;
+import com.ruoyi.system.task.base.TimeJobType;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import java.time.LocalDateTime;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 问卷调查
+ * @author Administrator
+ *
+ */
+public class QuestionnairePush extends AbstractJob {
+
+ public static final String name = "questionnairePush_";
+
+ @Override
+ public void execute(JobExecutionContext context)
+ throws JobExecutionException {
+ JobDataMap maps = context.getMergedJobDataMap();
+ String questionnaireId = maps.getString("id");
+ String type = maps.getString("type");
+ try {
+ TQuestionnaire questionnaire = questionnaireService.getById(questionnaireId);
+ if(Objects.isNull(questionnaire)){
+ return;
+ }
+ LocalDateTime startTime = questionnaire.getStartTime();
+ LocalDateTime endTime = questionnaire.getEndTime();
+ LocalDateTime now = LocalDateTime.now();
+
+ if("1".equals(type) && now.compareTo(startTime) > -1 && now.compareTo(endTime) < 1){
+ questionnaire.setStatus(2);
+ // 添加定时任务
+ Map<String, ? extends Object> map =
+ new ImmutableMap.Builder<String, String>().
+ put("id", questionnaire.getId()).put("type","2")
+ .build();
+ QuartzManager.addJob(
+ QuestionnairePush.class,
+ (DeliberationVotePush.name+questionnaire.getId()).toUpperCase(),
+ TimeJobType.QUESTIONNAIRE_PUSH,
+ DateUtils.localDateTimeToDate(questionnaire.getEndTime()),
+ map
+ );
+ }
+
+ if("2".equals(type) && now.isAfter(endTime)){
+ questionnaire.setStatus(3);
+ }
+ questionnaireService.updateById(questionnaire);
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TQuestionnaireVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TQuestionnaireVO.java
new file mode 100644
index 0000000..d1c3a8c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TQuestionnaireVO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.TQuestionnaire;
+import com.ruoyi.system.model.TQuestionnaireStem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "TQuestionnaireVO对象", description = "问卷调查VO")
+public class TQuestionnaireVO extends TQuestionnaire {
+
+ @ApiModelProperty(value = "题干")
+ private List<TQuestionnaireStem> questionnaireStems;
+ @ApiModelProperty(value = "题目数量")
+ private Integer optionNum;
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TAssistedDiningMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TAssistedDiningMapper.xml
index 2c124ca..14fc993 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TAssistedDiningMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TAssistedDiningMapper.xml
@@ -23,13 +23,15 @@
</sql>
<select id="pageList" resultType="com.ruoyi.system.model.TAssistedDining">
select t1.* from t_assisted_dining t1
- <if test="query.pointName != null and query.pointName != ''">
- and t1.point_name like concat('%',#{query.pointName},'%')
- </if>
- <if test="query.pointPhone != null and query.pointPhone != ''">
- and t1.point_phone like concat('%',#{query.pointPhone},'%')
- </if>
+ <where>
+ <if test="query.pointName != null and query.pointName != ''">
+ and t1.point_name like concat('%',#{query.pointName},'%')
+ </if>
+ <if test="query.pointPhone != null and query.pointPhone != ''">
+ and t1.point_phone like concat('%',#{query.pointPhone},'%')
+ </if>
AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+ </where>
order by t1.create_time desc
</select>
diff --git a/ruoyi-system/src/main/resources/mapper/system/THelpNeedsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/THelpNeedsMapper.xml
index a80d8bb..1a41535 100644
--- a/ruoyi-system/src/main/resources/mapper/system/THelpNeedsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/THelpNeedsMapper.xml
@@ -22,7 +22,7 @@
id, app_user_id, nick_name, contact_number, requirement_description, pictures, create_time, update_time, create_by, update_by, disabled
</sql>
<select id="pageList" resultType="com.ruoyi.system.model.THelpNeeds">
- select t1.* from t_help_needs
+ select t1.* from t_help_needs t1
where 1=1
<if test="query.nickName != null and query.nickName != ''">
and t1.nick_name like concat('%',#{query.nickName},'%')
@@ -35,7 +35,7 @@
</if>
</select>
<select id="exportHelpNeeds" resultType="com.ruoyi.system.export.THelpNeedsExport">
- select t1.* from t_help_needs
+ select t1.* from t_help_needs t1
where 1=1
<if test="query.nickName != null and query.nickName != ''">
and t1.nick_name like concat('%',#{query.nickName},'%')
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOldsterWarningMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOldsterWarningMapper.xml
index f54378c..1e72a47 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOldsterWarningMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TOldsterWarningMapper.xml
@@ -19,9 +19,9 @@
id, oldster_id, warning_time, create_time, update_time, create_by, update_by, disabled
</sql>
<select id="pageList" resultType="com.ruoyi.system.vo.TOldsterWarningVO">
- select t.id, t.oldster_id, t.warning_time, t.create_time, t.update_time, t.create_by, t.update_by, t.disabled,
- tow.oldster_name, tow.oldster_age, tow.oldster_sex, tow.contact_phone, tow.guardian_name, tow.guardian_phone,
- tow.passport_photo, tow.id_card, tow.birth_date, tow.oldster_type, tow.address
+ select tow.id, tow.oldster_id, tow.warning_time, tow.create_time, tow.update_time, tow.create_by, tow.update_by, tow.disabled,
+ t.oldster_name, t.oldster_age, t.oldster_sex, t.contact_phone, t.guardian_name, t.guardian_phone,
+ t.passport_photo, t.id_card, t.birth_date, t.oldster_type, t.address
from t_oldster_warning tow
left join t_oldster t on tow.oldster_id = t.id
<where>
@@ -39,9 +39,9 @@
order by tow.warning_time desc
</select>
<select id="exportOldsterWarning" resultType="com.ruoyi.system.export.TOldsterWarningExport">
- select t.id, t.oldster_id, t.warning_time, t.create_time, t.update_time, t.create_by, t.update_by, t.disabled,
- tow.oldster_name, tow.oldster_age, tow.oldster_sex, tow.contact_phone, tow.guardian_name, tow.guardian_phone,
- tow.passport_photo, tow.id_card, tow.birth_date, tow.oldster_type, tow.address
+ select tow.id, tow.oldster_id, tow.warning_time, tow.create_time, tow.update_time, tow.create_by, tow.update_by, tow.disabled,
+ t.oldster_name, t.oldster_age, t.oldster_sex, t.contact_phone, t.guardian_name, t.guardian_phone,
+ t.passport_photo, t.id_card, t.birth_date, t.oldster_type, t.address
from t_oldster_warning tow
left join t_oldster t on tow.oldster_id = t.id
<where>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireMapper.xml
index 65e83c5..1111d03 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireMapper.xml
@@ -20,5 +20,20 @@
<sql id="Base_Column_List">
id, questionnaire_title, start_time, end_time, status, create_time, update_time, create_by, update_by, disabled
</sql>
+ <select id="pageList" resultType="com.ruoyi.system.vo.TQuestionnaireVO">
+ select id, questionnaire_title, start_time, end_time, status,
+ create_time, update_time, create_by, update_by, disabled
+ from t_questionnaire
+ <where>
+ <if test="query.questionnaireTitle != null and query.questionnaireTitle != ''">
+ and questionnaire_title like concat('%',#{query.questionnaireTitle},'%')
+ </if>
+ <if test="query.status != null">
+ and status = #{query.status}
+ </if>
+ AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+ </where>
+ ORDER BY create_time DESC
+ </select>
</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireStemBriefAnswerMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireStemBriefAnswerMapper.xml
index 8dcc7eb..783269b 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireStemBriefAnswerMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TQuestionnaireStemBriefAnswerMapper.xml
@@ -8,11 +8,16 @@
<result column="stem_id" property="stemId" />
<result column="app_user_id" property="appUserId" />
<result column="answer_content" property="answerContent" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="create_by" property="createBy" />
+ <result column="update_by" property="updateBy" />
+ <result column="disabled" property="disabled" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
- id, stem_id, app_user_id, answer_content
+ id, stem_id, app_user_id, answer_content,create_time, update_time, create_by, update_by, disabled
</sql>
</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TServiceGuideFileMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TServiceGuideFileMapper.xml
index 9e60f7e..1eeacd8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TServiceGuideFileMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TServiceGuideFileMapper.xml
@@ -24,8 +24,8 @@
<include refid="Base_Column_List"/>
FROM t_service_guide_file
<where>
- <if test="fileName != null and fileName != ''">
- AND file_name LIKE concat('%',#{fileName},'%')
+ <if test="query.fileName != null and query.fileName != ''">
+ AND file_name LIKE concat('%',#{query.fileName},'%')
</if>
AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
</where>
--
Gitblit v1.7.1