yangdamao 1 Minggu lalu
induk
melakukan
a51adf80dd
15 mengubah file dengan 851 tambahan dan 45 penghapusan
  1. 9 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java
  2. 14 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java
  3. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ArtisanData.java
  4. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseSubjectMapper.java
  5. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java
  6. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseSubjectService.java
  7. 180 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  8. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSubjectServiceImpl.java
  9. 5 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  10. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/AssistantCheckBo.java
  11. 78 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/EngineerCheckBo.java
  12. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/TechnicianCheckBo.java
  13. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  14. 527 43
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  15. 11 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseSubjectMapper.xml

+ 9 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -284,4 +284,13 @@ public class CourseController extends BaseController {
         return AjaxResult.success(result);
     }
 
+    @ApiOperation("七大员视频导入")
+    @PostMapping("/importQDY")
+    public AjaxResult<Map<String,Object>> importQDY(MultipartFile file,String param) throws Exception
+    {
+        List<CourseEJVo> questionList2 = EasyPoiUtil.importExcel(file,0,1,CourseEJVo.class);
+        Map<String,Object> result = iCourseService.importQDY(questionList2,param);
+        return AjaxResult.success(result);
+    }
+
 }

+ 14 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -305,4 +305,18 @@ public class OrderController extends BaseController {
         return AjaxResult.success(iOrderGoodsService.technicianCheck(bo,loginUser.getUser().getUserId()));
     }
 
+    @ApiOperation("中级工程师")
+    @PostMapping("/engineer/intermediate/check")
+    public AjaxResult<AssistantResultVo> engineerIntermediateCheck(@RequestBody EngineerCheckBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        return AjaxResult.success(iOrderGoodsService.engineerIntermediateCheck(bo,loginUser.getUser().getUserId()));
+    }
+
+    @ApiOperation("高级工程师")
+    @PostMapping("/engineer/advanced/check")
+    public AjaxResult<AssistantResultVo> engineerAdvancedCheck(@RequestBody EngineerCheckBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        return AjaxResult.success(iOrderGoodsService.engineerAdvancedCheck(bo,loginUser.getUser().getUserId()));
+    }
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ArtisanData.java

@@ -20,6 +20,8 @@ public class ArtisanData implements Serializable {
     private Long userId;
     /** 课程ID */
     private Long goodsId;
+    /** 专业名称 */
+    private String majorName;
     /** 填写资料 */
     private String dataStr;
     /** 1有效 0无效 */

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseSubjectMapper.java

@@ -43,4 +43,6 @@ public interface CourseSubjectMapper extends BaseMapper<CourseSubject> {
     List<CourseSubject> getListByIDs(@Param("ids") List<Long> ids);
 
     CourseSubject getOneByName(@Param("subjectName") String subjectName,@Param("proId") Long proId);
+
+    List<CourseSubject> listByProId(@Param("proId") Long proId);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java

@@ -116,4 +116,6 @@ public interface ICourseService extends IService<Course> {
 	UserNewGoodsVo getOldGoodsRedirect(Long userId);
 
 	Map<String, Object> importEJ(List<CourseEJVo> questionList2, String param);
+
+    Map<String, Object> importQDY(List<CourseEJVo> questionList2, String param);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseSubjectService.java

@@ -65,4 +65,6 @@ public interface ICourseSubjectService extends IService<CourseSubject> {
     List<CourseSubject> getListByIDs(List<Long> ids);
 
 	CourseSubject getOneByName(String subjectName, Long id);
+
+    List<CourseSubject> listByProId(Long id);
 }

+ 180 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -1459,6 +1459,186 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         return Collections.emptyMap();
     }
 
+    @Override
+    public Map<String, Object> importQDY(List<CourseEJVo> questionList2, String param) {
+        if (CollectionUtils.isEmpty(questionList2)){
+            return new HashMap<>();
+        }
+        //获取业务层次ID
+        CourseJsonEJVo importVo = JSON.parseObject(param, CourseJsonEJVo.class);
+        CourseEducationType educationType = iCourseEducationTypeService
+                .getOne(new LambdaQueryWrapper<CourseEducationType>()
+                        .eq(CourseEducationType::getEducationName, importVo.getEduName())
+                        .eq(CourseEducationType::getStatus, 1)
+                        .last("limit 1"));
+        CourseProjectType projectType = iCourseProjectTypeService.getOne(new LambdaUpdateWrapper<CourseProjectType>()
+                .eq(CourseProjectType::getEducationId, educationType.getId())
+                .eq(CourseProjectType::getProjectName, importVo.getProName())
+                .eq(CourseProjectType::getStatus, 1)
+                .last("limit 1"));
+        CourseBusiness business = iCourseBusinessService.getOne(new LambdaUpdateWrapper<CourseBusiness>()
+                .eq(CourseBusiness::getProjectId, projectType.getId())
+                .eq(CourseBusiness::getBusinessName, importVo.getBusinessName())
+                .eq(CourseBusiness::getStatus, 1)
+                .last("limit 1"));
+        List<CourseSubject> courseSubjects = new ArrayList<>();
+
+        //默认图片地址
+        String imagePath = "oss/images/avatar/20211013/1634097664410_1397766697";
+        CourseEJVo vo1 = questionList2.stream().filter(x -> x.getLevel().equals("1")).collect(Collectors.toList()).get(0);
+        if (ObjectUtils.isNull(vo1)){
+            throw new CustomException("模块获取失败");
+        }
+        //是否公共模块
+        Integer falg = vo1.getChapterName().contains("公共课")?1:0;
+        if (falg == 1){
+            //公共课包含所有科目
+            courseSubjects = iCourseSubjectService.listByProId(projectType.getId());
+        }else {
+            courseSubjects.add(iCourseSubjectService.getOneByName(importVo.getSubName(),projectType.getId()));
+        }
+        //新增课程模块
+        CourseModule module = new CourseModule();
+        module.setPrefixName("2026七大员继教");
+        module.setModuleName(vo1.getChapterName());
+        module.setPublishStatus(1L);
+        module.setCreateTime(DateUtils.getNowTime());
+        module.setUpdateTime(DateUtils.getNowTime());
+        module.setStatus(1);
+        module.setCode(ServletUtils.getEncoded("MK"));
+        module.setCommonSign(falg);
+        module.setViewSign(2);
+        module.setCoverUrl(imagePath);
+        iCourseModuleService.save(module);
+
+        //模块业务层次
+        courseSubjects.forEach(item ->{
+            CourseModuleBusiness moduleBusiness = new CourseModuleBusiness();
+            moduleBusiness.setModuleId(module.getModuleId());
+            moduleBusiness.setEducationTypeId(educationType.getId());
+            moduleBusiness.setProjectId(projectType.getId());
+            moduleBusiness.setBusinessId(business.getId());
+            moduleBusiness.setSubjectId(item.getId());
+            iCourseModuleBusinessService.save(moduleBusiness);
+        });
+
+
+        //根据章节名称分组
+        Map<String, List<CourseEJVo>> map = questionList2.stream().collect(Collectors.groupingBy(CourseEJVo::getChapterName));
+
+        // 使用 AtomicInteger 实现自增
+        AtomicInteger counter = new AtomicInteger(1);
+        map.forEach((k,v) -> {
+            CourseEJVo vo2 = v.get(0);
+            if (vo2.getLevel().equals("1")){
+                return;
+            }
+            int a = counter.getAndIncrement();
+            //新增章
+            CourseChapter chapter = new CourseChapter();
+            chapter.setName(k);
+            chapter.setSort(Long.valueOf(a));
+            chapter.setCreateTime(DateUtils.getNowTime());
+            chapter.setUpdateTime(DateUtils.getNowTime());
+            chapter.setStatus(1);
+            chapter.setPrefixName("2026七大员继教");
+            chapter.setPublishStatus(1L);
+            chapter.setCode(ServletUtils.getEncoded("Z"));
+            chapter.setCommonSign(falg+"");
+            chapter.setViewSign(2);
+            chapter.setCoverUrl(imagePath);
+            iCourseChapterService.save(chapter);
+
+            //章业务层
+            if (falg == 1){
+                //公共课包含所有科目
+                List<CourseSubject> courseSubjects1 = iCourseSubjectService.listByProId(projectType.getId());
+                courseSubjects1.forEach(item -> {
+                    CourseChapterBusiness chapterBusiness = new CourseChapterBusiness();
+                    chapterBusiness.setChapterId(chapter.getChapterId());
+                    chapterBusiness.setEducationTypeId(educationType.getId());
+                    chapterBusiness.setProjectId(projectType.getId());
+                    chapterBusiness.setBusinessId(business.getId());
+                    chapterBusiness.setSubjectId(item.getId());
+                    iCourseChapterBusinessService.save(chapterBusiness);
+                });
+            }else {
+                CourseSubject oneByName = iCourseSubjectService.getOneByName(importVo.getSubName(), projectType.getId());
+                CourseChapterBusiness chapterBusiness = new CourseChapterBusiness();
+                chapterBusiness.setChapterId(chapter.getChapterId());
+                chapterBusiness.setEducationTypeId(educationType.getId());
+                chapterBusiness.setProjectId(projectType.getId());
+                chapterBusiness.setBusinessId(business.getId());
+                chapterBusiness.setSubjectId(oneByName.getId());
+                iCourseChapterBusinessService.save(chapterBusiness);
+            }
+
+            //处理视频节
+            for (int i = 0; i < v.size(); i++) {
+                CourseEJVo vo = v.get(i);
+                if (vo.getLevel().equals("3")){
+                    CourseSection section = new CourseSection();
+                    section.setName(vo.getSectionName());
+                    section.setCreateTime(DateUtils.getNowTime());
+                    section.setUpdateTime(DateUtils.getNowTime());
+                    section.setStatus(1);
+                    section.setSort(i+1L);
+                    section.setPrefixName("2026七大员继教");
+                    section.setPublishStatus(1);
+                    section.setSectionType(1);
+                    section.setRecordingUrl(vo.getSectionKey());
+                    section.setTencentVideoUrl(vo.getSectionKey());
+                    section.setDurationTime(Long.valueOf(vo.getSectionTime()));
+                    section.setTencentVideoTime(Long.valueOf(vo.getSectionTime()));
+                    section.setCode(ServletUtils.getEncoded("J"));
+                    section.setViewSign(2);
+                    section.setCoverUrl(imagePath);
+                    iCourseSectionService.save(section);
+
+                    //节业务层
+                    if (falg == 1){
+                        //公共课包含所有科目
+                        List<CourseSubject> courseSubjects1 = iCourseSubjectService.listByProId(projectType.getId());
+                        courseSubjects1.forEach(item -> {
+                            CourseSectionBusiness sectionBusiness = new CourseSectionBusiness();
+                            sectionBusiness.setSectionId(section.getSectionId());
+                            sectionBusiness.setEducationTypeId(educationType.getId());
+                            sectionBusiness.setProjectId(projectType.getId());
+                            sectionBusiness.setBusinessId(business.getId());
+                            sectionBusiness.setSubjectId(item.getId());
+                            iCourseSectionBusinessService.save(sectionBusiness);
+                        });
+                    }else {
+                        CourseSubject oneByName = iCourseSubjectService.getOneByName(importVo.getSubName(), projectType.getId());
+                        CourseSectionBusiness sectionBusiness = new CourseSectionBusiness();
+                        sectionBusiness.setSectionId(section.getSectionId());
+                        sectionBusiness.setEducationTypeId(educationType.getId());
+                        sectionBusiness.setProjectId(projectType.getId());
+                        sectionBusiness.setBusinessId(business.getId());
+                        sectionBusiness.setSubjectId(oneByName.getId());
+                        iCourseSectionBusinessService.save(sectionBusiness);
+                    }
+
+                    //章节关联关系
+                    CourseChapterSection chapterSection = new CourseChapterSection();
+                    chapterSection.setChapterId(chapter.getChapterId());
+                    chapterSection.setSectionId(section.getSectionId());
+                    chapterSection.setSort(Long.valueOf(i));
+                    iCourseChapterSectionService.save(chapterSection);
+                }
+            }
+            //模块章关联
+            CourseModuleChapter moduleChapter = new CourseModuleChapter();
+            moduleChapter.setChapterId(chapter.getChapterId());
+            moduleChapter.setModuleId(module.getModuleId());
+            moduleChapter.setSort(Long.valueOf(a));
+            iCourseModuleChapterService.save(moduleChapter);
+
+        });
+
+        return Collections.emptyMap();
+    }
+
     private Long liveTime(Long nowTime, Integer day) {
         for (Integer i = 0; i < day; i++) {
             Long dayAfter = DateUtils.getDayAfter(nowTime, 1);

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSubjectServiceImpl.java

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -198,4 +199,9 @@ public class CourseSubjectServiceImpl extends ServiceImpl<CourseSubjectMapper, C
     public CourseSubject getOneByName(String subjectName, Long proId) {
         return baseMapper.getOneByName(subjectName,proId);
     }
+
+    @Override
+    public List<CourseSubject> listByProId(Long id) {
+        return baseMapper.listByProId(id);
+    }
 }

+ 5 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -100,6 +100,7 @@ import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
+import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.zip.ZipOutputStream;
@@ -774,9 +775,11 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         }
 
         // 正则表达式:只包含中文汉字
-        String regex = "^[\\u4e00-\\u9fa5]+$";
+//        String regex = "^[\\u4e00-\\u9fa5]+$";
 
-        return Pattern.matches(regex, name);
+        Pattern NAME_PATTERN = Pattern.compile("^[\\u4E00-\\u9FA5]{2,15}(?:·[\\u4E00-\\u9FA5]{1,10}){0,2}$");
+        Matcher matcher = NAME_PATTERN.matcher(name);
+        return matcher.matches();
     }
 
 

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/AssistantCheckBo.java

@@ -9,6 +9,12 @@ import java.util.List;
 @Data
 public class AssistantCheckBo implements Serializable {
 
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("专业名称")
+    private String majorName;
+
     @ApiModelProperty("评审/认定")
     private String type;
 

+ 78 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/EngineerCheckBo.java

@@ -0,0 +1,78 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class EngineerCheckBo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("专业名称")
+    private String majorName;
+
+    @ApiModelProperty("评审/认定")
+    private String type;
+
+    @ApiModelProperty("申报人名称")
+    private String userName;
+
+    @ApiModelProperty("申报人专业")
+    private String major;
+
+    @ApiModelProperty("现有单位")
+    private String companyName;
+
+    @ApiModelProperty("参保单位")
+    private String insured;
+
+    @ApiModelProperty("参保开始时间")
+    private String insuredStartTime;
+
+    @ApiModelProperty("参保结束时间")
+    private String insuredEndTime;
+
+    @ApiModelProperty("学历等级")
+    private String eduLevel;
+
+    @ApiModelProperty("学历专业")
+    private String eduMajor;
+
+    @ApiModelProperty("毕业时间")
+    private String graduateTime;
+
+    @ApiModelProperty("继续教育(评审要,认定不需要)")
+    private String education;
+
+    @ApiModelProperty("论文")
+    private String thesis;
+
+    @ApiModelProperty("现有资格等级")
+    private String existingLevel;
+
+    @ApiModelProperty("现有资格专业")
+    private String existingMajor;
+
+    @ApiModelProperty("职称发证机构")
+    private String existingTenant;
+
+    @ApiModelProperty("注册类证书")
+    private String certificate;
+
+    @ApiModelProperty("发证日期")
+    private String issueDate;
+
+    @ApiModelProperty("是否持有建筑类其他证书")
+    private String isCertificate;
+
+    @ApiModelProperty("是否获奖")
+    private String isAward;
+
+    @ApiModelProperty("工作经历及业绩情况")
+    private List<WorkExperienceBo> experienceBos;
+
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/TechnicianCheckBo.java

@@ -12,6 +12,9 @@ public class TechnicianCheckBo implements Serializable {
     @ApiModelProperty("商品ID")
     private Long goodsId;
 
+    @ApiModelProperty("专业名称")
+    private String majorName;
+
     @ApiModelProperty("评审/认定")
     private String type;
 

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -155,4 +155,8 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     AssistantResultVo assistantCheck(AssistantCheckBo bo,Long userId);
 
     AssistantResultVo technicianCheck(TechnicianCheckBo bo,Long userId);
+
+    AssistantResultVo engineerIntermediateCheck(EngineerCheckBo bo, Long userId);
+
+    AssistantResultVo engineerAdvancedCheck(EngineerCheckBo bo, Long userId);
 }

+ 527 - 43
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -1045,9 +1045,9 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         //基础中文名校验 - 纯汉字,2-4个字
         String regex = "^[\u4e00-\u9fa5]{2,4}$";
         boolean matches = Pattern.matches(regex, bo.getUserName());
-        if (StringUtils.isBlank(bo.getUserName()) || matches){
+        if (StringUtils.isBlank(bo.getUserName()) || !matches){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("申报人员姓名");
+            vo.setField("userName");
             vo.setReason("申报人姓名输入不合法");
             vos.add(vo);
         }
@@ -1057,21 +1057,21 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                 .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
         if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("申报专业");
+            vo.setField("major");
             vo.setReason("申报专业不符合");
             vos.add(vo);
         }
 
         if (StringUtils.isBlank(bo.getCompanyName())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("现工作单位");
+            vo.setField("companyName");
             vo.setReason("现工作单位不能为空");
             vos.add(vo);
         }
 
         if (StringUtils.isBlank(bo.getInsured())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("参保单位");
+            vo.setField("insured");
             vo.setReason("参保单位不能为空");
             vos.add(vo);
         }
@@ -1079,20 +1079,20 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         //参保时间
         if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("参保时间");
+            vo.setField("insuredStartTime");
             vo.setReason("参保时间不能为空");
             vos.add(vo);
         }
 
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
         LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
         // 计算两个日期之间的月数差异
         long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
         // 取绝对值并判断是否大于6个月
-        if (Math.abs(monthsBetween) > 6){
+        if (Math.abs(monthsBetween) < 6){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("参保时间");
+            vo.setField("insuredStartTime");
             vo.setReason("参保时间小于半年");
             vos.add(vo);
         }
@@ -1101,15 +1101,15 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         //学历等级
         if (StringUtils.isBlank(bo.getEduLevel())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("学历等级");
+            vo.setField("eduLevel");
             vo.setReason("学历等级不能为空");
             vos.add(vo);
         }
 
         List<String> list = Arrays.asList("职高", "高中", "专科", "本科", "硕士研究生", "博士研究生");
-        if (StringUtils.isBlank(bo.getExistingLevel()) || !list.contains(bo.getExistingLevel())){
+        if (StringUtils.isBlank(bo.getEduLevel()) || !list.contains(bo.getEduLevel())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("existingLevel");
+            vo.setField("eduLevel");
             vo.setReason("学历等级不符合标准");
             vos.add(vo);
         }
@@ -1117,14 +1117,14 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         //学历专业
         if (StringUtils.isBlank(bo.getEduMajor())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("学历专业");
+            vo.setField("eduMajor");
             vo.setReason("学历专业不能为空");
             vos.add(vo);
         }
 
         if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("学历专业");
+            vo.setField("eduMajor");
             vo.setReason("学历专业不符合");
             vos.add(vo);
         }
@@ -1132,52 +1132,112 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         //毕业时间
         if (StringUtils.isBlank(bo.getGraduateTime())){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("毕业时间");
+            vo.setField("graduateTime");
             vo.setReason("毕业时间不能为空");
             vos.add(vo);
         }
 
-        if (StringUtils.isNotBlank(bo.getEduMajor()) && (bo.getEduMajor().equals("职高") || bo.getEduMajor().equals("高中"))){
-            //职高或者高中毕业时间要大于一年
-            if (isFullYear(bo.getExistingLevel(),"yyyy-MM-dd",1)){
-                AssistantCheckVo vo = new AssistantCheckVo();
-                vo.setField("existingLevel");
-                vo.setReason("学历属于职高/高中,毕业时间需满1年");
-                vos.add(vo);
+        if (StringUtils.isNotBlank(bo.getEduLevel())){
+            if (bo.getEduLevel().equals("职高") || bo.getEduLevel().equals("高中")){
+                //从事本专业技术工作满4年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",4)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于职高/高中,从事本专业技术工作满4年");
+                    vos.add(vo);
+                }
+            }
+
+            if (bo.getEduLevel().equals("专科")){
+                //从事本专业技术工作满2年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",2)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于专科,从事本专业技术工作满2年");
+                    vos.add(vo);
+                }
             }
 
+            if (bo.getEduLevel().equals("本科")){
+                //从事本专业技术工作满1年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",1)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于本科,从事本专业技术工作满1年");
+                    vos.add(vo);
+                }
+            }
         }
 
-        if (bo.getType().equals("评审") && bo.getEducation().equals("有")){
+        if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
             AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("继续教育");
+            vo.setField("education");
             vo.setReason("评审需有继续教育证明");
             vos.add(vo);
         }
 
-        if (StringUtils.isBlank(bo.getExistingLevel())){
-            AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("现有资格等级");
-            vo.setReason("现有资格等级不符合标准");
-            vos.add(vo);
+        if (bo.getType().equals("认定")){
+            //认定:学历专业和申报专业需一样
+            if (!bo.getExistingMajor().equals(bo.getMajor())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("major");
+                vo.setReason("认定:学历专业和申报专业需要一样");
+                vos.add(vo);
+            }
         }
 
-        if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
-            AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("现有资格专业");
-            vo.setReason("现有资格专业不符合");
-            vos.add(vo);
-        }
+        if (StringUtils.isNotBlank(bo.getEduLevel()) && (bo.getEduLevel().equals("职高") || bo.getEduLevel().equals("高中") || bo.getEduLevel().equals("专科"))){
 
-        if (StringUtils.isBlank(bo.getGraduateTime())){
-            AssistantCheckVo vo = new AssistantCheckVo();
-            vo.setField("毕业时间");
-            vo.setReason("毕业时间不能为空");
-            vos.add(vo);
-        }
+            if (StringUtils.isBlank(bo.getExistingLevel())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingLevel");
+                vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingMajor");
+                vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
+                vos.add(vo);
+            }
 
+            if (StringUtils.isBlank(bo.getExistingTenant())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingTenant");
+                vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
+                vos.add(vo);
+            }
 
+            if (StringUtils.isBlank(bo.getCertificate())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("certificate");
+                vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getIssueDate())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("issueDate");
+                vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
+                vos.add(vo);
+            }
+        }
 
+        if (CollectionUtils.isEmpty(vos)){
+            //校验通过
+            ArtisanData data = new ArtisanData();
+            data.setCreateTime(DateUtils.getNowTime());
+            data.setUpdateTime(DateUtils.getNowTime());
+            data.setUserId(userId);
+            data.setGoodsId(bo.getGoodsId());
+            data.setMajorName(bo.getMajorName());
+            data.setDataStr(JSON.toJSONString(bo));
+            iArtisanDataService.save(data);
+            resultVo.setId(data.getId());
+        }else {
+            resultVo.setCheckVos(vos);
+        }
         return resultVo;
     }
 
@@ -1258,7 +1318,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
 
         if (StringUtils.isNotBlank(bo.getExistingLevel()) && (bo.getExistingLevel().equals("职高") || bo.getExistingLevel().equals("高中"))){
             //职高或者高中毕业时间要大于一年
-            if (isFullYear(bo.getExistingLevel(),"yyyy-MM-dd",1)){
+            if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",1)){
                 AssistantCheckVo vo = new AssistantCheckVo();
                 vo.setField("existingLevel");
                 vo.setReason("学历属于职高/高中,毕业时间需满1年");
@@ -1292,7 +1352,6 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
             vos.add(vo);
         }
         AssistantResultVo resultVo = new AssistantResultVo();
-        resultVo.setCheckVos(vos);
         if (CollectionUtils.isEmpty(vos)){
             //校验通过
             ArtisanData data = new ArtisanData();
@@ -1300,11 +1359,436 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
             data.setUpdateTime(DateUtils.getNowTime());
             data.setUserId(userId);
             data.setGoodsId(bo.getGoodsId());
+            data.setMajorName(bo.getMajorName());
+            data.setDataStr(JSON.toJSONString(bo));
+            iArtisanDataService.save(data);
+            resultVo.setId(data.getId());
+        }else {
+            resultVo.setCheckVos(vos);
+        }
+
+        return resultVo;
+    }
+
+    @Override
+    public AssistantResultVo engineerIntermediateCheck(EngineerCheckBo bo, Long userId) {
+        AssistantResultVo resultVo = new AssistantResultVo();
+        List<AssistantCheckVo> vos = new ArrayList<>();
+        //基础中文名校验 - 纯汉字,2-4个字
+        String regex = "^[\u4e00-\u9fa5]{2,4}$";
+        boolean matches = Pattern.matches(regex, bo.getUserName());
+        if (StringUtils.isBlank(bo.getUserName()) || !matches){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("userName");
+            vo.setReason("申报人姓名输入不合法");
+            vos.add(vo);
+        }
+
+        //专业
+        List<ArtisanCheck> artisanChecks = iArtisanCheckService
+                .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
+        if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("major");
+            vo.setReason("申报专业不符合");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getCompanyName())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("companyName");
+            vo.setReason("现工作单位不能为空");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getInsured())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("insured");
+            vo.setReason("参保单位不能为空");
+            vos.add(vo);
+        }
+
+        //参保时间
+        if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("insuredStartTime");
+            vo.setReason("参保时间不能为空");
+            vos.add(vo);
+        }
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
+        LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
+        // 计算两个日期之间的月数差异
+        long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
+        // 取绝对值并判断是否大于6个月
+        if (Math.abs(monthsBetween) < 6){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("insuredStartTime");
+            vo.setReason("参保时间小于半年");
+            vos.add(vo);
+        }
+
+        //学历情况
+        //学历等级
+        if (StringUtils.isBlank(bo.getEduLevel())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduLevel");
+            vo.setReason("学历等级不能为空");
+            vos.add(vo);
+        }
+
+        List<String> list = Arrays.asList("专科", "本科", "硕士研究生", "博士研究生");
+        if (StringUtils.isBlank(bo.getEduLevel()) || !list.contains(bo.getEduLevel())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduLevel");
+            vo.setReason("学历等级不符合标准");
+            vos.add(vo);
+        }
+
+        //学历专业
+        if (StringUtils.isBlank(bo.getEduMajor())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduMajor");
+            vo.setReason("学历专业不能为空");
+            vos.add(vo);
+        }
+
+        if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduMajor");
+            vo.setReason("学历专业不符合");
+            vos.add(vo);
+        }
+
+        //毕业时间
+        if (StringUtils.isBlank(bo.getGraduateTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("graduateTime");
+            vo.setReason("毕业时间不能为空");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isNotBlank(bo.getEduLevel())){
+            if (bo.getEduLevel().equals("专科")){
+                //从事本专业技术工作满4年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",4)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于专科,从事本专业技术工作满4年");
+                    vos.add(vo);
+                }
+            }
+
+            if (bo.getEduLevel().equals("本科")){
+                //从事本专业技术工作满4年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",4)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于本科,从事本专业技术工作满4年");
+                    vos.add(vo);
+                }
+            }
+
+            if (bo.getEduLevel().equals("硕士研究生")){
+                //从事本专业技术工作满2年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",2)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于硕士研究生,从事本专业技术工作满2年");
+                    vos.add(vo);
+                }
+            }
+        }
+
+        //技术总结、论文
+        if (StringUtils.isBlank(bo.getThesis())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("thesis");
+            vo.setReason("在公开出版发行专业期刊上独立发表1篇本专业相关学术论文");
+            vos.add(vo);
+        }
+
+        if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("education");
+            vo.setReason("评审需有继续教育证明");
+            vos.add(vo);
+        }
+
+        if (bo.getType().equals("认定")){
+            //认定:学历专业和申报专业需一样
+            if (!bo.getExistingMajor().equals(bo.getMajor())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("major");
+                vo.setReason("认定:学历专业和申报专业需要一样");
+                vos.add(vo);
+            }
+        }
+
+        if (StringUtils.isNotBlank(bo.getEduLevel()) && (bo.getEduLevel().equals("专科") || bo.getEduLevel().equals("本科") || bo.getEduLevel().equals("硕士研究生"))){
+
+            if (StringUtils.isBlank(bo.getExistingLevel())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingLevel");
+                vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingMajor");
+                vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getExistingTenant())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingTenant");
+                vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getCertificate())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("certificate");
+                vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getIssueDate())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("issueDate");
+                vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
+                vos.add(vo);
+            }
+        }
+
+        if (CollectionUtils.isEmpty(vos)){
+            //校验通过
+            ArtisanData data = new ArtisanData();
+            data.setCreateTime(DateUtils.getNowTime());
+            data.setUpdateTime(DateUtils.getNowTime());
+            data.setUserId(userId);
+            data.setGoodsId(bo.getGoodsId());
+            data.setMajorName(bo.getMajorName());
             data.setDataStr(JSON.toJSONString(bo));
             iArtisanDataService.save(data);
             resultVo.setId(data.getId());
+        }else {
+            resultVo.setCheckVos(vos);
+        }
+        return resultVo;
+    }
+
+    @Override
+    public AssistantResultVo engineerAdvancedCheck(EngineerCheckBo bo, Long userId) {
+        AssistantResultVo resultVo = new AssistantResultVo();
+        List<AssistantCheckVo> vos = new ArrayList<>();
+        //基础中文名校验 - 纯汉字,2-4个字
+        String regex = "^[\u4e00-\u9fa5]{2,4}$";
+        boolean matches = Pattern.matches(regex, bo.getUserName());
+        if (StringUtils.isBlank(bo.getUserName()) || !matches){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("userName");
+            vo.setReason("申报人姓名输入不合法");
+            vos.add(vo);
+        }
+
+        //专业
+        List<ArtisanCheck> artisanChecks = iArtisanCheckService
+                .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
+        if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("major");
+            vo.setReason("申报专业不符合");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getCompanyName())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("companyName");
+            vo.setReason("现工作单位不能为空");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getInsured())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("insured");
+            vo.setReason("参保单位不能为空");
+            vos.add(vo);
         }
 
+        //参保时间
+        if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("insuredStartTime");
+            vo.setReason("参保时间不能为空");
+            vos.add(vo);
+        }
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
+        LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
+        // 计算两个日期之间的月数差异
+        long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
+        // 取绝对值并判断是否大于6个月
+        if (Math.abs(monthsBetween) < 6){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("insuredStartTime");
+            vo.setReason("参保时间小于半年");
+            vos.add(vo);
+        }
+
+        //学历情况
+        //学历等级
+        if (StringUtils.isBlank(bo.getEduLevel())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduLevel");
+            vo.setReason("学历等级不能为空");
+            vos.add(vo);
+        }
+
+        List<String> list = Arrays.asList("本科", "硕士研究生", "博士研究生");
+        if (StringUtils.isBlank(bo.getEduLevel()) || !list.contains(bo.getEduLevel())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduLevel");
+            vo.setReason("学历等级不符合标准");
+            vos.add(vo);
+        }
+
+        //学历专业
+        if (StringUtils.isBlank(bo.getEduMajor())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduMajor");
+            vo.setReason("学历专业不能为空");
+            vos.add(vo);
+        }
+
+        if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("eduMajor");
+            vo.setReason("学历专业不符合");
+            vos.add(vo);
+        }
+
+        //毕业时间
+        if (StringUtils.isBlank(bo.getGraduateTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("graduateTime");
+            vo.setReason("毕业时间不能为空");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isNotBlank(bo.getEduLevel())){
+            if (bo.getEduLevel().equals("本科")){
+                //从事本专业技术工作满5年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",5)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduMajor");
+                    vo.setReason("学历属于本科,从事本专业技术工作满5年");
+                    vos.add(vo);
+                }
+            }
+
+            if (bo.getEduLevel().equals("硕士研究生")){
+                //从事本专业技术工作满5年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",5)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于硕士研究生,从事本专业技术工作满5年");
+                    vos.add(vo);
+                }
+            }
+
+            if (bo.getEduLevel().equals("博士研究生")){
+                //从事本专业技术工作满2年
+                if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",2)){
+                    AssistantCheckVo vo = new AssistantCheckVo();
+                    vo.setField("eduLevel");
+                    vo.setReason("学历属于博士研究生,从事本专业技术工作满2年");
+                    vos.add(vo);
+                }
+            }
+        }
+
+        //技术总结、论文
+        if (StringUtils.isBlank(bo.getThesis())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("thesis");
+            vo.setReason("在公开出版发行专业期刊上独立发表1篇本专业相关学术论文");
+            vos.add(vo);
+        }
+
+        if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("education");
+            vo.setReason("评审需有继续教育证明");
+            vos.add(vo);
+        }
+
+        if (bo.getType().equals("认定")){
+            //认定:学历专业和申报专业需一样
+            if (!bo.getExistingMajor().equals(bo.getMajor())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("major");
+                vo.setReason("认定:学历专业和申报专业需要一样");
+                vos.add(vo);
+            }
+        }
+
+        if (StringUtils.isNotBlank(bo.getEduLevel()) && (bo.getEduLevel().equals("本科") || bo.getEduLevel().equals("硕士研究生") || bo.getEduLevel().equals("博士研究生"))){
+
+            if (StringUtils.isBlank(bo.getExistingLevel())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingLevel");
+                vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingMajor");
+                vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getExistingTenant())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("existingTenant");
+                vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getCertificate())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("certificate");
+                vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
+                vos.add(vo);
+            }
+
+            if (StringUtils.isBlank(bo.getIssueDate())){
+                AssistantCheckVo vo = new AssistantCheckVo();
+                vo.setField("issueDate");
+                vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
+                vos.add(vo);
+            }
+        }
+
+        if (CollectionUtils.isEmpty(vos)){
+            //校验通过
+            ArtisanData data = new ArtisanData();
+            data.setCreateTime(DateUtils.getNowTime());
+            data.setUpdateTime(DateUtils.getNowTime());
+            data.setUserId(userId);
+            data.setGoodsId(bo.getGoodsId());
+            data.setMajorName(bo.getMajorName());
+            data.setDataStr(JSON.toJSONString(bo));
+            iArtisanDataService.save(data);
+            resultVo.setId(data.getId());
+        }else {
+            resultVo.setCheckVos(vos);
+        }
         return resultVo;
     }
 

+ 11 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseSubjectMapper.xml

@@ -177,4 +177,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND cs.`status` = 1
             LIMIT 1
     </select>
+
+    <select id="listByProId"  resultType="com.zhichen.modules.course.domain.CourseSubject">
+        SELECT
+            cs.*
+        FROM
+            course_subject cs
+                LEFT JOIN course_subject_project csp ON cs.id = csp.subject_id
+        WHERE
+            csp.project_id = #{proId}
+          AND cs.`status` = 1
+    </select>
 </mapper>