Browse Source

feature 增加问卷调查发布功能

xiahan 1 year ago
parent
commit
b373c989be
48 changed files with 1639 additions and 2 deletions
  1. 15 0
      bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java
  2. 15 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionBackupsDao.java
  3. 8 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionDao.java
  4. 15 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionOptionBackupsDao.java
  5. 7 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionOptionDao.java
  6. 15 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyBackupsDao.java
  7. 15 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyCustomDetailBackupsDao.java
  8. 7 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyCustomDetailDao.java
  9. 8 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyDao.java
  10. 7 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyTempDetailDao.java
  11. 15 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempBackupsDao.java
  12. 8 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempDao.java
  13. 7 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempDetailDao.java
  14. 8 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempQuestionOptionDao.java
  15. 3 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TraningCommonDao.java
  16. 15 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/UserDemandSurveyDao.java
  17. 11 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandQuestionBackupsService.java
  18. 11 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandQuestionOptionBackupsService.java
  19. 16 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandService.java
  20. 11 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandSurveyBackupsService.java
  21. 11 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandSurveyCustomDetailBackupsService.java
  22. 11 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandTempBackupsService.java
  23. 11 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/UserDemandSurveyService.java
  24. 20 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandQuestionBackupsServiceImpl.java
  25. 20 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandQuestionOptionBackupsServiceImpl.java
  26. 295 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandServiceImpl.java
  27. 20 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandSurveyBackupsServiceImpl.java
  28. 20 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandSurveyCustomDetailBackupsServiceImpl.java
  29. 20 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandTempBackupsServiceImpl.java
  30. 20 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/UserDemandSurveyServiceImpl.java
  31. 50 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/utils/TrainingUtils.java
  32. 18 0
      rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/utils/functionInterface/BeanCopyUtilCallBack.java
  33. 21 2
      rw-training/training-common/src/main/resources/mybatis/CommonDao.xml
  34. 59 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionBackupsDo.java
  35. 48 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionDo.java
  36. 51 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionOptionBackupsDo.java
  37. 49 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionOptionDo.java
  38. 84 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyBackupsDo.java
  39. 57 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyCustomDetailBackupsDo.java
  40. 51 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyCustomDetailDo.java
  41. 92 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyDo.java
  42. 52 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyTempDetailDo.java
  43. 58 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempBackupsDo.java
  44. 56 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempDetailDo.java
  45. 48 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempDo.java
  46. 58 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempQuestionOptionDo.java
  47. 83 0
      rw-training/training-entity/src/main/java/com/rongwei/training/domain/UserDemandSurveyDo.java
  48. 39 0
      rw-training/training-server/src/main/java/com/rongwei/training/controller/TrainingDemandController.java

+ 15 - 0
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -19,4 +19,19 @@ public class SaveConstans {
 
 
     public static final String MINUS_ONE = "-1";
     public static final String MINUS_ONE = "-1";
     public static final String AND = "and";
     public static final String AND = "and";
+
+    /**
+     * 问卷调查状态
+     */
+    public static class DemandState {
+        /**
+         * 已发布
+         */
+        public static final String RELEASE = "1";
+        /**
+         * 作废
+         */
+        public static final String CANCELLATION = "0";
+
+    }
 }
 }

+ 15 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionBackupsDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.training.domain.TrainingDemandQuestionBackupsDo;
+
+/**
+ * @Entity com.rongwei.training.domain.TrainingDemandQuestionBackups
+ */
+public interface TrainingDemandQuestionBackupsDao extends BaseMapper<TrainingDemandQuestionBackupsDo> {
+
+}
+
+
+
+

+ 8 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandQuestionDo;
+
+public interface TrainingDemandQuestionDao extends BaseDao<TrainingDemandQuestionDo> {
+}

+ 15 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionOptionBackupsDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.training.domain.TrainingDemandQuestionOptionBackupsDo;
+
+/**
+ * @Entity com.rongwei.training.domain.TrainingDemandQuestionOptionBackups
+ */
+public interface TrainingDemandQuestionOptionBackupsDao extends BaseMapper<TrainingDemandQuestionOptionBackupsDo> {
+
+}
+
+
+
+

+ 7 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandQuestionOptionDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.SubjectOptionsDo;
+
+public interface TrainingDemandQuestionOptionDao extends BaseDao<SubjectOptionsDo> {
+}

+ 15 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyBackupsDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.training.domain.TrainingDemandSurveyBackupsDo;
+
+/**
+ * @Entity com.rongwei.training.domain.TrainingDemandSurveyBackups
+ */
+public interface TrainingDemandSurveyBackupsDao extends BaseMapper<TrainingDemandSurveyBackupsDo> {
+
+}
+
+
+
+

+ 15 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyCustomDetailBackupsDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.training.domain.TrainingDemandSurveyCustomDetailBackupsDo;
+
+/**
+ * @Entity com.rongwei.training.domain.TrainingDemandSurveyCustomDetailBackups
+ */
+public interface TrainingDemandSurveyCustomDetailBackupsDao extends BaseMapper<TrainingDemandSurveyCustomDetailBackupsDo> {
+
+}
+
+
+
+

+ 7 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyCustomDetailDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandSurveyCustomDetailDo;
+
+public interface TrainingDemandSurveyCustomDetailDao extends BaseDao<TrainingDemandSurveyCustomDetailDo> {
+}

+ 8 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandSurveyDo;
+
+public interface TrainingDemandSurveyDao extends BaseDao<TrainingDemandSurveyDo> {
+
+}

+ 7 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandSurveyTempDetailDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandSurveyTempDetailDo;
+
+public interface TrainingDemandSurveyTempDetailDao extends BaseDao<TrainingDemandSurveyTempDetailDo> {
+}

+ 15 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempBackupsDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.training.domain.TrainingDemandTempBackupsDo;
+
+/**
+ * @Entity com.rongwei.training.domain.TrainingDemandTempBackups
+ */
+public interface TrainingDemandTempBackupsDao extends BaseMapper<TrainingDemandTempBackupsDo> {
+
+}
+
+
+
+

+ 8 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandTempDo;
+
+
+public interface TrainingDemandTempDao extends BaseDao<TrainingDemandTempDo> {
+}

+ 7 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempDetailDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandTempDetailDo;
+
+public interface TrainingDemandTempDetailDao extends BaseDao<TrainingDemandTempDetailDo> {
+}

+ 8 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TrainingDemandTempQuestionOptionDao.java

@@ -0,0 +1,8 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.rongwei.rwcommon.base.BaseDao;
+import com.rongwei.training.domain.TrainingDemandTempQuestionOptionDo;
+
+public interface TrainingDemandTempQuestionOptionDao extends BaseDao<TrainingDemandTempQuestionOptionDo> {
+
+}

+ 3 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/TraningCommonDao.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Select;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Set;
 
 
 /**
 /**
  * CommonDao class
  * CommonDao class
@@ -18,4 +19,6 @@ public interface TraningCommonDao {
     List<Map<String, Object>> getSubjectByCourseId(@Param("configCode") String configCode);
     List<Map<String, Object>> getSubjectByCourseId(@Param("configCode") String configCode);
 
 
     List<WordEmpInfoVo> getEmpInfo(@Param("empIds") List<String> empId);
     List<WordEmpInfoVo> getEmpInfo(@Param("empIds") List<String> empId);
+
+    Set<String> getAllUserIdAndNameByOrgId(@Param("orgIds") List<String> orgIds);
 }
 }

+ 15 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/dao/UserDemandSurveyDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.trainingcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.training.domain.UserDemandSurveyDo;
+
+/**
+ * @Entity com.rongwei.training.domain.UserDemandSurvey
+ */
+public interface UserDemandSurveyDao extends BaseMapper<UserDemandSurveyDo> {
+
+}
+
+
+
+

+ 11 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandQuestionBackupsService.java

@@ -0,0 +1,11 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.training.domain.TrainingDemandQuestionBackupsDo;
+
+/**
+ *
+ */
+public interface TrainingDemandQuestionBackupsService extends IService<TrainingDemandQuestionBackupsDo> {
+
+}

+ 11 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandQuestionOptionBackupsService.java

@@ -0,0 +1,11 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.training.domain.TrainingDemandQuestionOptionBackupsDo;
+
+/**
+ *
+ */
+public interface TrainingDemandQuestionOptionBackupsService extends IService<TrainingDemandQuestionOptionBackupsDo> {
+
+}

+ 16 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandService.java

@@ -0,0 +1,16 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.rongwei.rwcommon.base.R;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Map;
+
+/**
+ * TrainingDemandService class
+ *
+ * @author XH
+ * @date 2023/11/24
+ */
+public interface TrainingDemandService {
+    R releaseTrainDemand(@RequestBody Map<String,Object> parameter);
+}

+ 11 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandSurveyBackupsService.java

@@ -0,0 +1,11 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.training.domain.TrainingDemandSurveyBackupsDo;
+
+/**
+ *
+ */
+public interface TrainingDemandSurveyBackupsService extends IService<TrainingDemandSurveyBackupsDo> {
+
+}

+ 11 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandSurveyCustomDetailBackupsService.java

@@ -0,0 +1,11 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.training.domain.TrainingDemandSurveyCustomDetailBackupsDo;
+
+/**
+ *
+ */
+public interface TrainingDemandSurveyCustomDetailBackupsService extends IService<TrainingDemandSurveyCustomDetailBackupsDo> {
+
+}

+ 11 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/TrainingDemandTempBackupsService.java

@@ -0,0 +1,11 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.training.domain.TrainingDemandTempBackupsDo;
+
+/**
+ *
+ */
+public interface TrainingDemandTempBackupsService extends IService<TrainingDemandTempBackupsDo> {
+
+}

+ 11 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/UserDemandSurveyService.java

@@ -0,0 +1,11 @@
+package com.rongwei.trainingcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.training.domain.UserDemandSurveyDo;
+
+/**
+ *
+ */
+public interface UserDemandSurveyService extends IService<UserDemandSurveyDo> {
+
+}

+ 20 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandQuestionBackupsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.training.domain.TrainingDemandQuestionBackupsDo;
+import com.rongwei.trainingcommon.sys.dao.TrainingDemandQuestionBackupsDao;
+import com.rongwei.trainingcommon.sys.service.TrainingDemandQuestionBackupsService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class TrainingDemandQuestionBackupsServiceImpl extends ServiceImpl<TrainingDemandQuestionBackupsDao, TrainingDemandQuestionBackupsDo>
+        implements TrainingDemandQuestionBackupsService {
+
+}
+
+
+
+

+ 20 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandQuestionOptionBackupsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.training.domain.TrainingDemandQuestionOptionBackupsDo;
+import com.rongwei.trainingcommon.sys.dao.TrainingDemandQuestionOptionBackupsDao;
+import com.rongwei.trainingcommon.sys.service.TrainingDemandQuestionOptionBackupsService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class TrainingDemandQuestionOptionBackupsServiceImpl extends ServiceImpl<TrainingDemandQuestionOptionBackupsDao, TrainingDemandQuestionOptionBackupsDo>
+        implements TrainingDemandQuestionOptionBackupsService {
+
+}
+
+
+
+

+ 295 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandServiceImpl.java

@@ -0,0 +1,295 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.training.domain.*;
+import com.rongwei.trainingcommon.sys.dao.*;
+import com.rongwei.trainingcommon.sys.service.TrainingDemandService;
+import com.rongwei.trainingcommon.sys.utils.TrainingUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.rongwei.safecommon.utils.SaveConstans.DemandState.RELEASE;
+
+/**
+ * TrainingDemandService class
+ *
+ * @author XH
+ * @date 2023/11/24
+ */
+@Service
+public class TrainingDemandServiceImpl implements TrainingDemandService {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+
+    @Autowired
+    private TrainingDemandQuestionDao trainingDemandQuestionDao;
+    @Autowired
+    private TrainingDemandQuestionOptionDao trainingDemandQuestionOptionDao;
+    @Autowired
+    private TrainingDemandSurveyCustomDetailDao trainingDemandSurveyCustomDetailDao;
+    @Autowired
+    private TrainingDemandSurveyDao trainingDemandSurveyDao;
+    @Autowired
+    private TrainingDemandTempDao trainingDemandTempDao;
+    @Autowired
+    private TrainingDemandTempDetailDao trainingDemandTempDetailDao;
+    @Autowired
+    private TrainingDemandTempQuestionOptionDao trainingDemandTempQuestionOptionDao;
+    @Autowired
+    private TrainingDemandSurveyTempDetailDao trainingDemandSurveyTempDetailDao;
+    @Autowired
+    private TrainingDemandQuestionBackupsServiceImpl trainingDemandQuestionBackupsServiceImpl;
+    @Autowired
+    private TrainingDemandQuestionOptionBackupsServiceImpl trainingDemandQuestionOptionBackupsServiceImpl;
+    @Autowired
+    private TrainingDemandSurveyBackupsServiceImpl trainingDemandSurveyBackupsServiceImpl;
+    @Autowired
+    private TrainingDemandSurveyCustomDetailBackupsServiceImpl trainingDemandSurveyCustomDetailBackupsServiceImpl;
+    @Autowired
+    private TrainingDemandTempBackupsServiceImpl trainingDemandTempBackupsServiceImpl;
+    @Autowired
+    private UserDemandSurveyServiceImpl userDemandSurveyServiceImpl;
+
+    @Autowired
+    private TraningCommonDao traningCommonDao;
+
+    public static final String ERROR_MSG = "问卷调查发布失败";
+    /**
+     * 全员参与问卷调查
+     */
+    public static final String FULL_PARTICIPATION = "y";
+
+    @Override
+    public R releaseTrainDemand(Map<String, Object> parameter) {
+        String id = parameter.getOrDefault("id", "").toString();
+        TrainingDemandSurveyDo trainingDemandSurveyDo = trainingDemandSurveyDao.selectById(id);
+        if (trainingDemandSurveyDo == null) {
+            log.error("无法通过id:{},获取到培训需求调查信息", trainingDemandSurveyDo);
+            return R.error(ERROR_MSG);
+        }
+        if (RELEASE.equals(trainingDemandSurveyDo.getState())) {
+            log.error("调查问卷 :{}已发布无法再次发布", trainingDemandSurveyDo.getName());
+            return R.error("调查问卷已发布");
+        }
+        List<UserDemandSurveyDo> saveUserDemandSurveyDos = new ArrayList<>();
+        /******************************获取参与此次问卷的用户信息*********************************************/
+        Set<String> participantUserId = getParticipantUser(trainingDemandSurveyDo);
+        log.info("参与本次温泉调查的员工数为:{}", participantUserId.size());
+        if (participantUserId.size() == 0) {
+            log.error("本次问卷调查参与人数为0");
+            return R.error(ERROR_MSG);
+        }
+        /******************************开始复制业务数据*********************************************/
+        // 调查问卷自定义信息
+        List<TrainingDemandSurveyCustomDetailDo> surveyCustomDetailDos = trainingDemandSurveyCustomDetailDao.selectList(new LambdaQueryWrapper<TrainingDemandSurveyCustomDetailDo>()
+                .eq(TrainingDemandSurveyCustomDetailDo::getSurverid, id).orderByAsc(TrainingDemandSurveyCustomDetailDo::getNum));
+        // 调查问卷模板信息
+        List<TrainingDemandSurveyTempDetailDo> surveyTempDetailDos = trainingDemandSurveyTempDetailDao.selectList(new LambdaQueryWrapper<TrainingDemandSurveyTempDetailDo>()
+                .eq(TrainingDemandSurveyTempDetailDo::getSurverid, id).orderByAsc(TrainingDemandSurveyTempDetailDo::getNum));
+        // 模板信息
+        List<TrainingDemandTempDo> trainingDemandTempDos = trainingDemandTempDao.selectList(new LambdaQueryWrapper<TrainingDemandTempDo>()
+                .in(TrainingDemandTempDo::getId, surveyTempDetailDos.stream().map(TrainingDemandSurveyTempDetailDo::getTempid).collect(Collectors.toList())));
+        // 模板子表
+        List<TrainingDemandTempDetailDo> trainingDemandTempDetailDos = trainingDemandTempDetailDao.selectList(new LambdaQueryWrapper<TrainingDemandTempDetailDo>()
+                .in(TrainingDemandTempDetailDo::getDemandtempid, trainingDemandTempDos.stream().map(TrainingDemandTempDo::getId).collect(Collectors.toList())));
+        // 模板问题选项记录表
+        List<TrainingDemandTempQuestionOptionDo> trainingDemandTempQuestionOptionDos = trainingDemandTempQuestionOptionDao.selectList(new LambdaQueryWrapper<TrainingDemandTempQuestionOptionDo>()
+                .in(TrainingDemandTempQuestionOptionDo::getDemandtempdetailid, trainingDemandTempDetailDos.stream().map(TrainingDemandTempDetailDo::getId).collect(Collectors.toList())));
+
+        String userIds = participantUserId.stream().map(info -> info.split("-;-")[0]).collect(Collectors.joining(","));
+        String userNames = participantUserId.stream().map(info -> info.split("-;-")[1]).collect(Collectors.joining(","));
+        /************调查主表备份*************/
+        TrainingDemandSurveyBackupsDo saveDemandSurveyBackupsDo = generateSurveyBackups(trainingDemandSurveyDo, userIds, userNames);
+        /************自定义内容备份*************/
+        List<TrainingDemandSurveyCustomDetailBackupsDo> saveDemandSurveyCustomDetailBackupsDos = TrainingUtils.copyListProperties(surveyCustomDetailDos, TrainingDemandSurveyCustomDetailBackupsDo::new);
+        saveDemandSurveyCustomDetailBackupsDos.forEach(info -> info.setSurverid(saveDemandSurveyBackupsDo.getId()));
+        /************其他数据备份*************/
+        // 保存问题数据备份
+        List<TrainingDemandQuestionBackupsDo> saveDemandQuestionBackupsDos = new ArrayList<>();
+        // 保存问题选项数据备份
+        List<TrainingDemandQuestionOptionBackupsDo> saveDemandQuestionOptionBackupsDos = new ArrayList<>();
+        // 保存模板数据备份
+        List<TrainingDemandTempBackupsDo> saveDemandTempBackupsDo = new ArrayList<>();
+        int num = 1;
+        int questionNum= 1;
+        UserDemandSurveyDo addDemandSurveyDo;
+        for (int i = 0; i < surveyTempDetailDos.size(); i++) {
+            /************ 问卷调查模板内容备份*************/
+            TrainingDemandSurveyTempDetailDo surveyTempDetail = surveyTempDetailDos.get(i);
+            /******************模板备份************************/
+            TrainingDemandTempDo trainingDemandTempDo = trainingDemandTempDos.stream()
+                    .filter(info -> info.getId().equals(surveyTempDetail.getTempid()))
+                    .findFirst()
+                    .orElse(null);
+            TrainingDemandTempBackupsDo trainingDemandTempBackupsDo = new TrainingDemandTempBackupsDo();
+            trainingDemandTempBackupsDo.setId(SecurityUtil.getUUID());
+            trainingDemandTempBackupsDo.setSurverid(saveDemandSurveyBackupsDo.getId());
+            trainingDemandTempBackupsDo.setName(surveyTempDetail.getTempname());
+            trainingDemandTempBackupsDo.setYear(trainingDemandTempDo.getYear());
+            trainingDemandTempBackupsDo.setNum(i);
+            saveDemandTempBackupsDo.add(trainingDemandTempBackupsDo);
+            /************ 循环问题明细*************/
+            List<TrainingDemandTempDetailDo> demandTempDetail = trainingDemandTempDetailDos.stream()
+                    .filter(info -> trainingDemandTempDo.getId().equals(info.getDemandtempid()))
+                    .collect(Collectors.toList());
+            for (int j = 0; j < demandTempDetail.size(); j++) {
+                TrainingDemandTempDetailDo trainingDemandTempDetailDo = demandTempDetail.get(j);
+                /******************问题备份************************/
+                TrainingDemandQuestionBackupsDo questionBackupsDo = new TrainingDemandQuestionBackupsDo();
+                questionBackupsDo.setId(SecurityUtil.getUUID());
+                questionBackupsDo.setName(trainingDemandTempDetailDo.getContent());
+                questionBackupsDo.setQuestiontype(trainingDemandTempDetailDo.getQuestiontype());
+                questionBackupsDo.setSurveyid(surveyTempDetail.getId());
+                questionBackupsDo.setTempid(trainingDemandTempBackupsDo.getId());
+                questionBackupsDo.setNum(questionNum);
+                questionNum++;
+                saveDemandQuestionBackupsDos.add(questionBackupsDo);
+                /************ 问题答案备份 *************/
+                List<TrainingDemandTempQuestionOptionDo> questionOptions = trainingDemandTempQuestionOptionDos.stream()
+                        .filter(info -> trainingDemandTempDetailDo.getQuestionid().equals(info.getQuestionid()) &&
+                                trainingDemandTempDetailDo.getId().equals(info.getDemandtempdetailid())
+                        ).collect(Collectors.toList());
+                List<TrainingDemandQuestionOptionBackupsDo> addOptions = TrainingUtils.copyListProperties(questionOptions, TrainingDemandQuestionOptionBackupsDo::new);
+                addOptions.forEach(info -> {
+                    info.setQuestionid(questionBackupsDo.getId());
+                });
+                saveDemandQuestionOptionBackupsDos.addAll(addOptions);
+                // 生成用户问卷
+                saveUserDemandSurveyDos.add(generateUserDemandSurvey(num, questionBackupsDo, trainingDemandTempBackupsDo,
+                        saveDemandSurveyBackupsDo, addOptions));
+                num++;
+            }
+        }
+        for (int k = 0; k < saveDemandSurveyCustomDetailBackupsDos.size(); k++) {
+            addDemandSurveyDo = new UserDemandSurveyDo();
+            addDemandSurveyDo.setId(SecurityUtil.getUUID());
+            addDemandSurveyDo.setNum(num);
+            addDemandSurveyDo.setSurverid(saveDemandSurveyBackupsDo.getId());
+            addDemandSurveyDo.setSurvername(saveDemandSurveyBackupsDo.getName());
+            addDemandSurveyDo.setQuestionid(saveDemandSurveyCustomDetailBackupsDos.get(k).getId());
+            addDemandSurveyDo.setQuestionname(saveDemandSurveyCustomDetailBackupsDos.get(k).getContent());
+            addDemandSurveyDo.setQuestiontype(saveDemandSurveyCustomDetailBackupsDos.get(k).getQuestiontype());
+            saveUserDemandSurveyDos.add(addDemandSurveyDo);
+            num++;
+        }
+        // 数据存表
+        saveData(saveDemandSurveyBackupsDo, saveDemandSurveyCustomDetailBackupsDos,
+                saveDemandQuestionBackupsDos, saveDemandQuestionOptionBackupsDos,
+                saveUserDemandSurveyDos, saveDemandTempBackupsDo, trainingDemandSurveyDo);
+        return R.ok();
+    }
+
+    /**
+     * 数据保存
+     *
+     * @param saveDemandSurveyBackupsDo              问卷调查
+     * @param saveDemandSurveyCustomDetailBackupsDos 培训内容自定义调查表
+     * @param saveDemandQuestionBackupsDos
+     * @param saveDemandQuestionOptionBackupsDos
+     * @param saveUserDemandSurveyDos
+     * @param saveDemandTempBackupsDo
+     */
+    @Transactional
+    public void saveData(TrainingDemandSurveyBackupsDo saveDemandSurveyBackupsDo,
+                         List<TrainingDemandSurveyCustomDetailBackupsDo> saveDemandSurveyCustomDetailBackupsDos,
+                         List<TrainingDemandQuestionBackupsDo> saveDemandQuestionBackupsDos,
+                         List<TrainingDemandQuestionOptionBackupsDo> saveDemandQuestionOptionBackupsDos,
+                         List<UserDemandSurveyDo> saveUserDemandSurveyDos,
+                         List<TrainingDemandTempBackupsDo> saveDemandTempBackupsDo,
+                         TrainingDemandSurveyDo trainingDemandSurveyDo) {
+        trainingDemandQuestionBackupsServiceImpl.saveOrUpdateBatch(saveDemandQuestionBackupsDos);
+        trainingDemandQuestionOptionBackupsServiceImpl.saveOrUpdateBatch(saveDemandQuestionOptionBackupsDos);
+        trainingDemandSurveyBackupsServiceImpl.saveOrUpdate(saveDemandSurveyBackupsDo);
+        trainingDemandSurveyCustomDetailBackupsServiceImpl.saveOrUpdateBatch(saveDemandSurveyCustomDetailBackupsDos);
+        trainingDemandTempBackupsServiceImpl.saveOrUpdateBatch(saveDemandTempBackupsDo);
+        userDemandSurveyServiceImpl.saveOrUpdateBatch(saveUserDemandSurveyDos);
+        trainingDemandSurveyDo.setState(RELEASE);
+        trainingDemandSurveyDo.setReleasetime(new Date());
+        trainingDemandSurveyDao.updateById(trainingDemandSurveyDo);
+    }
+
+    /**
+     * 生成用户调查问卷
+     *
+     * @return
+     */
+    private UserDemandSurveyDo generateUserDemandSurvey(int num,
+                                                        TrainingDemandQuestionBackupsDo questionBackupsDo,
+                                                        TrainingDemandTempBackupsDo trainingDemandTempBackupsDo,
+                                                        TrainingDemandSurveyBackupsDo trainingDemandSurveyBackupsDo,
+                                                        List<TrainingDemandQuestionOptionBackupsDo> addOptions) {
+        UserDemandSurveyDo demandSurveyDo = new UserDemandSurveyDo();
+        demandSurveyDo.setId(SecurityUtil.getUUID());
+        demandSurveyDo.setNum(num);
+        demandSurveyDo.setSurverid(trainingDemandSurveyBackupsDo.getId());
+        demandSurveyDo.setSurvername(trainingDemandSurveyBackupsDo.getName());
+        demandSurveyDo.setTempid(trainingDemandTempBackupsDo.getId());
+        demandSurveyDo.setTempname(trainingDemandTempBackupsDo.getName());
+        demandSurveyDo.setQuestionid(questionBackupsDo.getId());
+        demandSurveyDo.setQuestionname(questionBackupsDo.getName());
+        demandSurveyDo.setQuestiontype(questionBackupsDo.getQuestiontype());
+        demandSurveyDo.setOptions(addOptions.stream().map(TrainingDemandQuestionOptionBackupsDo::getContent).collect(Collectors.joining(",")));
+        return demandSurveyDo;
+    }
+
+    /**
+     * 调查主表备份
+     *
+     * @param trainingDemandSurveyDo
+     * @param userIds
+     * @param userNames
+     * @return
+     */
+    private TrainingDemandSurveyBackupsDo generateSurveyBackups(TrainingDemandSurveyDo trainingDemandSurveyDo, String userIds, String userNames) {
+        TrainingDemandSurveyBackupsDo trainingDemandSurveyBackupsDo = new TrainingDemandSurveyBackupsDo();
+        BeanUtils.copyProperties(trainingDemandSurveyDo, trainingDemandSurveyBackupsDo);
+        trainingDemandSurveyBackupsDo.setId(SecurityUtil.getUUID());
+        trainingDemandSurveyBackupsDo.setParticipateuserid(userIds);
+        trainingDemandSurveyBackupsDo.setParticipateusername(userNames);
+        trainingDemandSurveyBackupsDo.setNoparticipatinguserid(userIds);
+        trainingDemandSurveyBackupsDo.setNoparticipatingusername(userNames);
+        return trainingDemandSurveyBackupsDo;
+    }
+
+    /**
+     * 获取参与培训的员工
+     *
+     * @param trainingDemandSurveyDo
+     * @return
+     */
+    private Set<String> getParticipantUser(TrainingDemandSurveyDo trainingDemandSurveyDo) {
+
+        if (FULL_PARTICIPATION.equals(trainingDemandSurveyDo.getFullparticipation())) {
+            log.debug("全员参与培训");
+            String factoryId = trainingDemandSurveyDo.getTenantid();
+            return traningCommonDao.getAllUserIdAndNameByOrgId(Arrays.asList(factoryId));
+        }
+        // 参与培训的员工信息
+        Set<String> participantUserIdList = new HashSet<>();
+        // 参与培训的部门
+        String participatedeptid = trainingDemandSurveyDo.getParticipatedeptid();
+        if (StringUtils.isNotBlank(participatedeptid)) {
+            participantUserIdList = traningCommonDao.getAllUserIdAndNameByOrgId(Arrays.asList(participatedeptid.split(",")));
+        }
+        // 参与培训的员工
+        String participateuserid = trainingDemandSurveyDo.getParticipateuserid();
+        if (StringUtils.isNotBlank(participatedeptid)) {
+            participantUserIdList.addAll(Arrays.asList(participateuserid.split(",")));
+        }
+        // 排除的员工
+        String excludeuserid = trainingDemandSurveyDo.getExcludeuserid();
+        if (StringUtils.isNotBlank(excludeuserid)) {
+            participantUserIdList.removeAll(Arrays.asList(excludeuserid.split(",")));
+        }
+        return participantUserIdList;
+    }
+}

+ 20 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandSurveyBackupsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.training.domain.TrainingDemandSurveyBackupsDo;
+import com.rongwei.trainingcommon.sys.dao.TrainingDemandSurveyBackupsDao;
+import com.rongwei.trainingcommon.sys.service.TrainingDemandSurveyBackupsService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class TrainingDemandSurveyBackupsServiceImpl extends ServiceImpl<TrainingDemandSurveyBackupsDao, TrainingDemandSurveyBackupsDo>
+implements TrainingDemandSurveyBackupsService {
+
+}
+
+
+
+

+ 20 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandSurveyCustomDetailBackupsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.training.domain.TrainingDemandSurveyCustomDetailBackupsDo;
+import com.rongwei.trainingcommon.sys.dao.TrainingDemandSurveyCustomDetailBackupsDao;
+import com.rongwei.trainingcommon.sys.service.TrainingDemandSurveyCustomDetailBackupsService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class TrainingDemandSurveyCustomDetailBackupsServiceImpl extends ServiceImpl<TrainingDemandSurveyCustomDetailBackupsDao, TrainingDemandSurveyCustomDetailBackupsDo>
+implements TrainingDemandSurveyCustomDetailBackupsService {
+
+}
+
+
+
+

+ 20 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/TrainingDemandTempBackupsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.training.domain.TrainingDemandTempBackupsDo;
+import com.rongwei.trainingcommon.sys.dao.TrainingDemandTempBackupsDao;
+import com.rongwei.trainingcommon.sys.service.TrainingDemandTempBackupsService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class TrainingDemandTempBackupsServiceImpl extends ServiceImpl<TrainingDemandTempBackupsDao, TrainingDemandTempBackupsDo>
+implements TrainingDemandTempBackupsService {
+
+}
+
+
+
+

+ 20 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/service/impl/UserDemandSurveyServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.trainingcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.training.domain.UserDemandSurveyDo;
+import com.rongwei.trainingcommon.sys.dao.UserDemandSurveyDao;
+import com.rongwei.trainingcommon.sys.service.UserDemandSurveyService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class UserDemandSurveyServiceImpl extends ServiceImpl<UserDemandSurveyDao, UserDemandSurveyDo>
+        implements UserDemandSurveyService {
+
+}
+
+
+
+

+ 50 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/utils/TrainingUtils.java

@@ -0,0 +1,50 @@
+package com.rongwei.trainingcommon.sys.utils;
+
+import com.rongwei.trainingcommon.sys.utils.functionInterface.BeanCopyUtilCallBack;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Supplier;
+
+/**
+ * TrainingUtils class
+ *
+ * @author XH
+ * @date 2023/11/24
+ */
+@Component
+public class TrainingUtils  extends BeanUtils {
+    /**
+     * 集合数据的拷贝
+     * @param sources: 数据源类
+     * @param target: 目标类::new(eg: UserVO::new)
+     * @return
+     */
+    public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target) {
+        return copyListProperties(sources, target, null);
+    }
+
+
+    /**
+     * 带回调函数的集合数据的拷贝(可自定义字段拷贝规则)
+     * @param sources: 数据源类
+     * @param target: 目标类::new(eg: UserVO::new)
+     * @param callBack: 回调函数
+     * @return
+     */
+    public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target, BeanCopyUtilCallBack<S, T> callBack) {
+        List<T> list = new ArrayList<>(sources.size());
+        for (S source : sources) {
+            T t = target.get();
+            copyProperties(source, t);
+            list.add(t);
+            if (callBack != null) {
+                // 回调
+                callBack.callBack(source, t);
+            }
+        }
+        return list;
+    }
+}

+ 18 - 0
rw-training/training-common/src/main/java/com/rongwei/trainingcommon/sys/utils/functionInterface/BeanCopyUtilCallBack.java

@@ -0,0 +1,18 @@
+package com.rongwei.trainingcommon.sys.utils.functionInterface;
+
+/**
+ * BeanCopyUtilCallBack class
+ *
+ * @author XH
+ * @date 2023/11/24
+ */
+@FunctionalInterface
+public interface  BeanCopyUtilCallBack <S, T> {
+
+    /**
+     * 定义默认回调方法
+     * @param t
+     * @param s
+     */
+    void callBack(S t, T s);
+}

+ 21 - 2
rw-training/training-common/src/main/resources/mybatis/CommonDao.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.rongwei.trainingcommon.sys.dao.CommonDao">
+<mapper namespace="com.rongwei.trainingcommon.sys.dao.TraningCommonDao">
     <select id="getEmpInfo" resultType="com.rongwei.training.vo.WordEmpInfoVo">
     <select id="getEmpInfo" resultType="com.rongwei.training.vo.WordEmpInfoVo">
         SELECT
         SELECT
         t.id AS empId,
         t.id AS empId,
@@ -30,4 +30,23 @@
         </where>
         </where>
         GROUP BY t.id
         GROUP BY t.id
     </select>
     </select>
-</mapper>
+
+    <select id="getAllUserIdAndNameByOrgId" resultType="String">
+        with orgid as (select DISTINCT ID from sys_organization
+        <where>
+            DELETED='0'
+            AND
+            <foreach collection="orgIds" open="(" close=")" separator="or" item="orgId">
+                FIND_IN_SET(#{orgId},FULLPID)
+            </foreach>
+        </where>
+        )
+        SELECT
+        DISTINCT CONCAT(su.ID,'-;-',su.NAME)
+        FROM
+        sys_user su
+        LEFT JOIN sys_user_org suo ON suo.USERID = su.ID
+        AND suo.DELETED = '0' AND suo.ORGID IN (select ID from orgid)
+        where su.DELETED='0'
+    </select>
+</mapper>

+ 59 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionBackupsDo.java

@@ -0,0 +1,59 @@
+package com.rongwei.training.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 培训需求问题表
+ * @TableName training_demand_question_backups
+ */
+@TableName(value ="training_demand_question_backups")
+@Data
+public class TrainingDemandQuestionBackupsDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 问题名称
+     */
+    private String name;
+
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 调查问卷ID
+     */
+    private String surveyid;
+    /**
+     * 模板iD
+     */
+    private String tempid;
+    /**
+     * 顺序
+     */
+    private int num;
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 48 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionDo.java

@@ -0,0 +1,48 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_question")
+public class TrainingDemandQuestionDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 问题名称
+     */
+    private String name;
+
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+    /**
+     * 状态
+     */
+    private String state;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    private static final long serialVersionUID = 1L;
+}

+ 51 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionOptionBackupsDo.java

@@ -0,0 +1,51 @@
+package com.rongwei.training.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 培训需求问题选项表
+ *
+ * @TableName training_demand_question_option_backups
+ */
+@TableName(value = "training_demand_question_option_backups")
+@Data
+public class TrainingDemandQuestionOptionBackupsDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 顺序
+     */
+    private Integer num;
+
+    /**
+     * 选项内容
+     */
+    private String content;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+    /**
+     * 问题编号
+     */
+    private String questionid;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 49 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandQuestionOptionDo.java

@@ -0,0 +1,49 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_question_option")
+public class TrainingDemandQuestionOptionDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 问题名称
+     */
+    private String name;
+
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+    /**
+     * 状态
+     */
+    private String state;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+
+    private static final long serialVersionUID = 1L;
+}

+ 84 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyBackupsDo.java

@@ -0,0 +1,84 @@
+package com.rongwei.training.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 培训需求调查表
+ *
+ * @TableName training_demand_survey_backups
+ */
+@TableName(value = "training_demand_survey_backups")
+@Data
+public class TrainingDemandSurveyBackupsDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 培训名称
+     */
+    private String name;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 参与用户ID
+     */
+    private String participateuserid;
+    /**
+     * 参与用户名称
+     */
+    private String participateusername;
+
+    /**
+     * 发布时间
+     */
+    private Date releasetime;
+
+    /**
+     * 截止时间
+     */
+    private Date deadline;
+
+    /**
+     * 已参与用户ID
+     */
+    private String participatinguserid;
+    /**
+     * 已参与用户名称
+     */
+    private String participatingusername;
+    /**
+     * 未参与用户ID
+     */
+    private String noparticipatinguserid;
+    /**
+     * 未参与用户名称
+     */
+    private String noparticipatingusername;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 57 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyCustomDetailBackupsDo.java

@@ -0,0 +1,57 @@
+package com.rongwei.training.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 培训需求调查自定义内容表
+ *
+ * @TableName training_demand_survey_custom_detail_backups
+ */
+@TableName(value = "training_demand_survey_custom_detail_backups")
+@Data
+public class TrainingDemandSurveyCustomDetailBackupsDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 顺序
+     */
+    private Integer num;
+
+    /**
+     * 需求调查表ID
+     */
+    private String surverid;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 51 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyCustomDetailDo.java

@@ -0,0 +1,51 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_survey_custom_detail")
+public class TrainingDemandSurveyCustomDetailDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 问题名称
+     */
+    private String content;
+    /**
+     * 顺序
+     */
+    private int num;
+    /**
+     * 需求调查表id
+     */
+    private String surverid;
+
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    private static final long serialVersionUID = 1L;
+}

+ 92 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyDo.java

@@ -0,0 +1,92 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_survey")
+public class TrainingDemandSurveyDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+      * 培训名称
+     */
+    private String name;
+
+    /**
+     * 发布状态
+     */
+    private String state;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 参与部门
+     */
+    private String participatedept;
+
+    /**
+     * 参与用户ID
+     */
+    private String participateuserid;
+
+    /**
+     * 排除用户ID
+     */
+    private String excludeuserid;
+
+    /**
+     * 发布时间
+     */
+    private Date releasetime;
+
+    /**
+     * 截止时间
+     */
+    private Date deadline;
+
+    /**
+     * 参与用户名称
+     */
+    private String participateusername;
+
+    /**
+     * 排除用户名称
+     */
+    private String excludeusername;
+
+    /**
+     * 参与部门ID
+     */
+    private String participatedeptid;
+
+    /**
+     * 是否全员培训
+     */
+    private String fullparticipation;
+
+    private static final long serialVersionUID = 1L;
+}

+ 52 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandSurveyTempDetailDo.java

@@ -0,0 +1,52 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_survey_temp_detail")
+public class TrainingDemandSurveyTempDetailDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 模板名称
+     */
+    private String tempname;
+
+    /**
+     * 模板ID
+     */
+    private String tempid;
+
+    /**
+     * 顺序
+     */
+    private int num;
+    /**
+     * 需求调查表id
+     */
+    private String surverid;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    private static final long serialVersionUID = 1L;
+}

+ 58 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempBackupsDo.java

@@ -0,0 +1,58 @@
+package com.rongwei.training.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 培训需求模板表
+ *
+ * @TableName training_demand_temp_backups
+ */
+@TableName(value = "training_demand_temp_backups")
+@Data
+public class TrainingDemandTempBackupsDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 调查问卷表ID
+     */
+    private String surverid;
+
+    /**
+     * 顺序
+     */
+    private int num;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 56 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempDetailDo.java

@@ -0,0 +1,56 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_temp_detail")
+public class TrainingDemandTempDetailDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 需求模板表ID
+     */
+    private String demandtempid;
+
+    /**
+     * 内容
+     */
+    private String content;
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+    /**
+     * 问题ID
+     */
+    private String questionid;
+    /**
+     * 顺序
+     */
+    private String num  ;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    private static final long serialVersionUID = 1L;
+}

+ 48 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempDo.java

@@ -0,0 +1,48 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_temp")
+public class TrainingDemandTempDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 问题名称
+     */
+    private String name;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 状态
+     */
+    private String state;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    private static final long serialVersionUID = 1L;
+}

+ 58 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/TrainingDemandTempQuestionOptionDo.java

@@ -0,0 +1,58 @@
+package com.rongwei.training.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * training_demand_question
+ * @author 
+ */
+@Data
+@TableName(value = "training_demand_temp_question_option")
+public class TrainingDemandTempQuestionOptionDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 顺序
+     */
+    private int num;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 问题ID
+     */
+    private String questionid;
+
+    /**
+     * 模板明细表ID
+     */
+    private String demandtempdetailid;
+
+    /**
+     * 问题模板ID
+     */
+    private String demandtempid;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    private static final long serialVersionUID = 1L;
+}

+ 83 - 0
rw-training/training-entity/src/main/java/com/rongwei/training/domain/UserDemandSurveyDo.java

@@ -0,0 +1,83 @@
+package com.rongwei.training.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 用户问卷调查情况表
+ * @TableName user_demand_survey
+ */
+@TableName(value ="user_demand_survey")
+@Data
+public class UserDemandSurveyDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 顺序
+     */
+    private Integer num;
+
+    /**
+     * 需求调查表ID
+     */
+    private String surverid;
+
+    /**
+     * 调查问卷名称
+     */
+    private String survername;
+
+    /**
+     * 调查问卷模板ID
+     */
+    private String tempid;
+
+    /**
+     * 调查问卷模板名称
+     */
+    private String tempname;
+
+    /**
+     * 问题ID
+     */
+    private String questionid;
+
+    /**
+     * 问题名称
+     */
+    private String questionname;
+
+    /**
+     * 问题类型
+     */
+    private String questiontype;
+
+    /**
+     * 答案
+     */
+    private String options;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 39 - 0
rw-training/training-server/src/main/java/com/rongwei/training/controller/TrainingDemandController.java

@@ -0,0 +1,39 @@
+package com.rongwei.training.controller;
+
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.trainingcommon.sys.service.impl.TrainingDemandServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * TrainingDemandController class
+ *
+ * @author XH
+ * @date 2023/11/23
+ */
+@RestController
+@RequestMapping("/train/demand")
+public class TrainingDemandController {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private TrainingDemandServiceImpl trainingDemandService;
+
+    /**
+     * 发布需求调查
+     *
+     * @param parameter
+     * @return
+     */
+    @PostMapping("/release")
+    public R releaseTrainDemand(@RequestBody Map<String, Object> parameter) {
+        log.info("开发发布需求调查问卷");
+        return trainingDemandService.releaseTrainDemand(parameter);
+    }
+}