yangdamao 1 месяц назад
Родитель
Сommit
e1475684ab
22 измененных файлов с 639 добавлено и 0 удалено
  1. 14 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java
  2. 31 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ArtisanCheck.java
  3. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ArtisanData.java
  4. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ArtisanCheckMapper.java
  5. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ArtisanDataMapper.java
  6. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IArtisanCheckService.java
  7. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IArtisanDataService.java
  8. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ArtisanCheckServiceImpl.java
  9. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ArtisanDataServiceImpl.java
  10. 72 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/AssistantCheckBo.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java
  12. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java
  13. 57 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/TechnicianCheckBo.java
  14. 32 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/WorkExperienceBo.java
  15. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  16. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  17. 241 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  18. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  19. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/AssistantCheckVo.java
  20. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/AssistantResultVo.java
  21. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderListVo.java
  22. 6 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

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

@@ -291,4 +291,18 @@ public class OrderController extends BaseController {
         return AjaxResult.success(iOrderGoodsService.checkBuyGoods(goodsId));
     }
 
+    @ApiOperation("助理工程师")
+    @PostMapping("/assistant/check")
+    public AjaxResult<AssistantResultVo> assistantCheck(@RequestBody AssistantCheckBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        return AjaxResult.success(iOrderGoodsService.assistantCheck(bo,loginUser.getUser().getUserId()));
+    }
+
+    @ApiOperation("技术员校验")
+    @PostMapping("/technician/check")
+    public AjaxResult<AssistantResultVo> technicianCheck(@RequestBody TechnicianCheckBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        return AjaxResult.success(iOrderGoodsService.technicianCheck(bo,loginUser.getUser().getUserId()));
+    }
+
 }

+ 31 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/domain/ArtisanCheck.java

@@ -0,0 +1,31 @@
+package com.zhongzheng.modules.activity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("artisan_check")
+public class ArtisanCheck implements Serializable {
+
+    @TableId(value = "id")
+    private Long id;
+    /** 类型:1技术员 2助力工程师 3工程师 4高级工程师 */
+    private Integer type;
+    /** 专业 */
+    private String major;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+    /** 商户ID */
+    private Long tenantId;
+}

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

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.activity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("artisan_data")
+public class ArtisanData implements Serializable {
+
+    @TableId(value = "id")
+    private Long id;
+    /** 用户id */
+    private Long userId;
+    /** 课程ID */
+    private Long goodsId;
+    /** 填写资料 */
+    private String dataStr;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+    /** 商户ID */
+    private Long tenantId;
+}

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ArtisanCheckMapper.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.activity.domain.ArtisanCheck;
+
+/**
+ * 商品推荐Mapper接口
+ *
+ * @author hjl
+ * @date 2022-04-13
+ */
+public interface ArtisanCheckMapper extends BaseMapper<ArtisanCheck> {
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ArtisanDataMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.activity.domain.ArtisanCheck;
+import com.zhongzheng.modules.activity.domain.ArtisanData;
+
+/**
+ * 商品推荐Mapper接口
+ *
+ * @author hjl
+ * @date 2022-04-13
+ */
+public interface ArtisanDataMapper extends BaseMapper<ArtisanData> {
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IArtisanCheckService.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.activity.domain.ArtisanCheck;
+
+/**
+ * 商品推荐Service接口
+ *
+ * @author hjl
+ * @date 2022-04-13
+ */
+public interface IArtisanCheckService extends IService<ArtisanCheck> {
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IArtisanDataService.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.activity.domain.ArtisanData;
+
+/**
+ * 商品推荐Service接口
+ *
+ * @author hjl
+ * @date 2022-04-13
+ */
+public interface IArtisanDataService extends IService<ArtisanData> {
+
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ArtisanCheckServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.activity.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.activity.domain.ArtisanCheck;
+import com.zhongzheng.modules.activity.mapper.ArtisanCheckMapper;
+import com.zhongzheng.modules.activity.service.IArtisanCheckService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 商品推荐Service业务层处理
+ *
+ * @author hjl
+ * @date 2022-04-13
+ */
+@Service
+public class ArtisanCheckServiceImpl extends ServiceImpl<ArtisanCheckMapper, ArtisanCheck> implements IArtisanCheckService {
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ArtisanDataServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.activity.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.activity.domain.ArtisanData;
+import com.zhongzheng.modules.activity.mapper.ArtisanDataMapper;
+import com.zhongzheng.modules.activity.service.IArtisanDataService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 商品推荐Service业务层处理
+ *
+ * @author hjl
+ * @date 2022-04-13
+ */
+@Service
+public class ArtisanDataServiceImpl extends ServiceImpl<ArtisanDataMapper, ArtisanData> implements IArtisanDataService {
+}

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

@@ -0,0 +1,72 @@
+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 AssistantCheckBo implements Serializable {
+
+    @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 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 String explain;
+
+    @ApiModelProperty("工作经历及业绩情况")
+    private List<WorkExperienceBo> experienceBos;
+
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java

@@ -121,4 +121,6 @@ public class OrderAddBo {
     private String consigneePhone;
     @ApiModelProperty("手机地址")
     private String consigneeSite;
+    @ApiModelProperty("技术助工id")
+    private String artisanDataId;
 }

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

@@ -117,4 +117,7 @@ public class OrderGoodsAddBo {
 
     @ApiModelProperty("业务员")
     private String salesman;
+
+    @ApiModelProperty("技术助工id")
+    private String artisanDataId;
 }

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

@@ -0,0 +1,57 @@
+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 TechnicianCheckBo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @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 education;
+
+    @ApiModelProperty("现有资格等级")
+    private String existingLevel;
+
+    @ApiModelProperty("现有资格专业")
+    private String existingMajor;
+
+    @ApiModelProperty("毕业时间")
+    private String graduateTime;
+
+    @ApiModelProperty("是否持有建筑类其他证书")
+    private String isCertificate;
+
+    @ApiModelProperty("其他说明")
+    private String explain;
+
+    @ApiModelProperty("工作经历及业绩情况")
+    private List<WorkExperienceBo> experienceBos;
+
+}

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/WorkExperienceBo.java

@@ -0,0 +1,32 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WorkExperienceBo implements Serializable {
+
+    @ApiModelProperty("单位名称")
+    private String companyName;
+
+    @ApiModelProperty("工程名称")
+    private String projectName;
+
+    @ApiModelProperty("开工开始时间")
+    private String projectStartTime;
+
+    @ApiModelProperty("开工结束时间")
+    private String projectEndTime;
+
+    @ApiModelProperty("工作")
+    private String work;
+
+    @ApiModelProperty("工程造价")
+    private String cost;
+
+    @ApiModelProperty("工程获奖情况")
+    private String condition;
+
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -140,4 +140,7 @@ private static final long serialVersionUID=1L;
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long acquireTime;
 
+    /** 技术助工id */
+    private String artisanDataId;
+
 }

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

@@ -152,4 +152,7 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
 
     List<CertificateOrderVo> getCertificateOrder();
 
+    AssistantResultVo assistantCheck(AssistantCheckBo bo,Long userId);
+
+    AssistantResultVo technicianCheck(TechnicianCheckBo bo,Long userId);
 }

+ 241 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -17,6 +17,10 @@ import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.activity.domain.ArtisanCheck;
+import com.zhongzheng.modules.activity.domain.ArtisanData;
+import com.zhongzheng.modules.activity.service.IArtisanCheckService;
+import com.zhongzheng.modules.activity.service.IArtisanDataService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.base.domain.ProfileTp;
 import com.zhongzheng.modules.base.domain.ShoppingCart;
@@ -91,7 +95,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -199,6 +207,12 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
     @Autowired
     private IMajorService iMajorService;
 
+    @Autowired
+    private IArtisanCheckService iArtisanCheckService;
+
+    @Autowired
+    private IArtisanDataService iArtisanDataService;
+
 
 
     @Override
@@ -1022,6 +1036,233 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return baseMapper.getCertificateOrder();
     }
 
+    @Override
+    public AssistantResultVo assistantCheck(AssistantCheckBo 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("申报人员姓名");
+            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("申报专业");
+            vo.setReason("申报专业不符合");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getCompanyName())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("现工作单位");
+            vo.setReason("现工作单位不能为空");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getInsured())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("参保单位");
+            vo.setReason("参保单位不能为空");
+            vos.add(vo);
+        }
+
+        //参保时间
+        if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("参保时间");
+            vo.setReason("参保时间不能为空");
+            vos.add(vo);
+        }
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        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("参保时间");
+            vo.setReason("参保时间小于半年");
+            vos.add(vo);
+        }
+
+        //学历情况
+        //学历等级
+        if (StringUtils.isBlank(bo.getEduLevel())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("学历等级");
+            vo.setReason("学历等级不能为空");
+            vos.add(vo);
+        }
+        //学历专业
+        if (StringUtils.isBlank(bo.getEduMajor())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("学历专业");
+            vo.setReason("学历专业不能为空");
+            vos.add(vo);
+        }
+        if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("学历专业");
+            vo.setReason("学历专业不符合");
+            vos.add(vo);
+        }
+
+        //毕业时间
+        if (StringUtils.isBlank(bo.getGraduateTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("毕业时间");
+            vo.setReason("毕业时间不能为空");
+            vos.add(vo);
+        }
+
+        if (bo.getType().equals("评审") && bo.getEducation().equals("有")){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("继续教育");
+            vo.setReason("评审需有继续教育证明");
+            vos.add(vo);
+        }
+
+        if (StringUtils.isBlank(bo.getExistingLevel())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("现有资格等级");
+            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.isBlank(bo.getGraduateTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("毕业时间");
+            vo.setReason("毕业时间不能为空");
+            vos.add(vo);
+        }
+
+
+
+        return resultVo;
+    }
+
+    @Override
+    public AssistantResultVo technicianCheck(TechnicianCheckBo bo,Long userId) {
+        //技术员校验
+        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 (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("education");
+            vo.setReason("评审需有继续教育证明");
+            vos.add(vo);
+        }
+
+        List<String> list = Arrays.asList("本科", "本科及以上");
+        if (StringUtils.isBlank(bo.getExistingLevel()) || !list.contains(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.getGraduateTime())){
+            AssistantCheckVo vo = new AssistantCheckVo();
+            vo.setField("graduateTime");
+            vo.setReason("毕业时间不能为空");
+            vos.add(vo);
+        }
+        AssistantResultVo resultVo = new AssistantResultVo();
+        resultVo.setCheckVos(vos);
+        if (CollectionUtils.isEmpty(vos)){
+            //校验通过
+            ArtisanData data = new ArtisanData();
+            data.setCreateTime(DateUtils.getNowTime());
+            data.setUpdateTime(DateUtils.getNowTime());
+            data.setUserId(userId);
+            data.setGoodsId(bo.getGoodsId());
+            data.setDataStr(JSON.toJSONString(bo));
+            iArtisanDataService.save(data);
+            resultVo.setId(data.getId());
+        }
+
+        return resultVo;
+    }
+
     private boolean checkUnique(Long GoodsId,Long UserId) {
         ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
                 .eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -24,8 +24,10 @@ import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.ip.IpUtils;
 import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
 import com.zhongzheng.modules.activity.domain.ActivityOrder;
+import com.zhongzheng.modules.activity.domain.ArtisanData;
 import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.activity.service.IActivityOrderService;
+import com.zhongzheng.modules.activity.service.IArtisanDataService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
@@ -222,6 +224,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IOrderHandleService iOrderHandleService;
 
+    @Autowired
+    private IArtisanDataService iArtisanDataService;
+
     @Override
     public OrderVo queryById(Long orderId) {
         Order db = this.baseMapper.selectById(orderId);
@@ -279,6 +284,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             } else if (vo.getGoodsPayStatus() > 1) {
                 vo.setOrderGoodsStatus(1);
             }
+
+            if (vo.getOrderType() == 7 && ObjectUtils.isNotNull(vo.getArtisanDataId())){
+                //技工订单
+                ArtisanData artisanData = iArtisanDataService.getById(vo.getArtisanDataId());
+                vo.setArtisanData(artisanData.getDataStr());
+            }
         }
         return orderListVos;
     }

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/AssistantCheckVo.java

@@ -0,0 +1,16 @@
+package com.zhongzheng.modules.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AssistantCheckVo implements Serializable {
+
+    @ApiModelProperty("字段名称")
+    private String field;
+
+    @ApiModelProperty("原因")
+    private String reason;
+}

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/AssistantResultVo.java

@@ -0,0 +1,16 @@
+package com.zhongzheng.modules.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class AssistantResultVo implements Serializable {
+
+    private Long id;
+
+    @ApiModelProperty("校验结果")
+    private List<AssistantCheckVo> checkVos;
+}

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderListVo.java

@@ -153,6 +153,8 @@ public class OrderListVo {
     private String schoolName;
     @ApiModelProperty("专业名称")
     private String categoryName;
+    @ApiModelProperty("专业名称")
+    private String subjectNames;
 
     /**
      * 真实姓名
@@ -266,4 +268,10 @@ public class OrderListVo {
 
     @ApiModelProperty("业务员")
     private String salesman;
+
+    @ApiModelProperty("技工ID")
+    private Long artisanDataId;
+
+    @ApiModelProperty("报名信息")
+    private String artisanData;
 }

+ 6 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

@@ -61,6 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="businessName" column="business_name"/>
         <result property="schoolName" column="school_name"/>
         <result property="salesman" column="salesman"/>
+        <result property="subjectNames" column="category_name"/>
 
         <result property="goodsPrice" column="goods_price"/>
         <result property="goodsRealPrice" column="goods_real_price"/>
@@ -83,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="serviceEndTime" column="service_end_time"/>
         <result property="handleOrderSn" column="handle_order_sn"/>
         <result property="offlineRefundSign" column="offline_refund_sign"/>
+        <result property="artisanDataId" column="artisan_data_id"/>
     </resultMap>
 
     <select id="getGradePeriod" parameterType="Map" resultType="integer">
@@ -121,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             m.category_name,
             og.goods_received,
             og.refund_status,
+            og.artisan_data_id,
             og.pay_status as goods_pay_status,
         (select cgu.period_plush from  class_grade_user cgu where cgu.grade_id = og.grade_id and cgu.order_goods_id = og.order_goods_id and cgu.user_id = o.user_id limit 1 ) period_plush,
         (SELECT oi.invoice_status FROM order_invoice oi LEFT JOIN order_invoice_order oio ON oio.invoice_id = oi.invoice_id WHERE
@@ -152,6 +155,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="orderSn != null and orderSn != ''">
             AND o.order_sn = #{orderSn}
         </if>
+        <if test="orderType != null and orderType != ''">
+            AND o.order_type = #{orderType}
+        </if>
         <if test="orderStatus != null ">
             AND o.order_status in
             <foreach collection="orderStatus" item="item" index="index" open="(" close=")" separator=",">