Pārlūkot izejas kodu

feat: 站点人员与求职人员设置职业资格证数据

zhangying 1 gadu atpakaļ
vecāks
revīzija
cfc4d3b55a

+ 35 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/OccupationalController.java

@@ -0,0 +1,35 @@
+package com.hz.employmentsite.controller.jobUserManager;
+
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.model.SysDictionaryItem;
+import com.hz.employmentsite.services.service.jobUserManager.OccupationalService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/occupational")
+public class OccupationalController {
+    @Autowired
+    private OccupationalService occupationalService;
+
+    @ResponseBody
+    @GetMapping("/getFirstOccupationalList")
+    public BaseResponse<List<SysDictionaryItem>> getList() {
+        return RespGenerstor.success(occupationalService.getList());
+    }
+
+    @ResponseBody
+    @GetMapping("/getListByParentOccupationalID")
+    public BaseResponse<List<SysDictionaryItem>> getListByParentOccupationalID(@RequestParam("parentOccupationalID") String parentOccupationalID) {
+        return RespGenerstor.success(occupationalService.getListByParentOccupationalID(parentOccupationalID));
+    }
+
+    @ResponseBody
+    @GetMapping("/getParentOccupationalID")
+    public BaseResponse<String> getParentOccupationalID(@RequestParam("OccupationalID") String OccupationalID) {
+        return RespGenerstor.success(occupationalService.getParentOccupationalID(OccupationalID));
+    }
+}

+ 30 - 0
src/main/java/com/hz/employmentsite/mapper/PcOccupationalMapper.java

@@ -0,0 +1,30 @@
+package com.hz.employmentsite.mapper;
+
+import com.hz.employmentsite.model.PcOccupational;
+import com.hz.employmentsite.model.PcOccupationalExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface PcOccupationalMapper {
+    long countByExample(PcOccupationalExample example);
+
+    int deleteByExample(PcOccupationalExample example);
+
+    int deleteByPrimaryKey(String occupationalID);
+
+    int insert(PcOccupational row);
+
+    int insertSelective(PcOccupational row);
+
+    List<PcOccupational> selectByExample(PcOccupationalExample example);
+
+    PcOccupational selectByPrimaryKey(String occupationalID);
+
+    int updateByExampleSelective(@Param("row") PcOccupational row, @Param("example") PcOccupationalExample example);
+
+    int updateByExample(@Param("row") PcOccupational row, @Param("example") PcOccupationalExample example);
+
+    int updateByPrimaryKeySelective(PcOccupational row);
+
+    int updateByPrimaryKey(PcOccupational row);
+}

+ 3 - 3
src/main/java/com/hz/employmentsite/model/PcJobuser.java

@@ -87,7 +87,7 @@ public class PcJobuser {
 
     private Integer isFullTime;
 
-    private Integer occupationalCategory;
+    private String occupationalCategory;
 
     private Integer occupationalLevel;
 
@@ -427,11 +427,11 @@ public class PcJobuser {
         this.isFullTime = isFullTime;
     }
 
-    public Integer getOccupationalCategory() {
+    public String getOccupationalCategory() {
         return occupationalCategory;
     }
 
-    public void setOccupationalCategory(Integer occupationalCategory) {
+    public void setOccupationalCategory(String occupationalCategory) {
         this.occupationalCategory = occupationalCategory;
     }
 

+ 53 - 0
src/main/java/com/hz/employmentsite/model/PcOccupational.java

@@ -0,0 +1,53 @@
+package com.hz.employmentsite.model;
+
+public class PcOccupational {
+    private String occupationalID;
+
+    private String parentOccupationalID;
+
+    private String occupationalName;
+
+    private Integer orderNo;
+
+    private Integer status;
+
+    public String getOccupationalID() {
+        return occupationalID;
+    }
+
+    public void setOccupationalID(String occupationalID) {
+        this.occupationalID = occupationalID == null ? null : occupationalID.trim();
+    }
+
+    public String getParentOccupationalID() {
+        return parentOccupationalID;
+    }
+
+    public void setParentOccupationalID(String parentOccupationalID) {
+        this.parentOccupationalID = parentOccupationalID == null ? null : parentOccupationalID.trim();
+    }
+
+    public String getOccupationalName() {
+        return occupationalName;
+    }
+
+    public void setOccupationalName(String occupationalName) {
+        this.occupationalName = occupationalName == null ? null : occupationalName.trim();
+    }
+
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+}

+ 529 - 0
src/main/java/com/hz/employmentsite/model/PcOccupationalExample.java

@@ -0,0 +1,529 @@
+package com.hz.employmentsite.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PcOccupationalExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public PcOccupationalExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andOccupationalIDIsNull() {
+            addCriterion("OccupationalID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDIsNotNull() {
+            addCriterion("OccupationalID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDEqualTo(String value) {
+            addCriterion("OccupationalID =", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDNotEqualTo(String value) {
+            addCriterion("OccupationalID <>", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDGreaterThan(String value) {
+            addCriterion("OccupationalID >", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDGreaterThanOrEqualTo(String value) {
+            addCriterion("OccupationalID >=", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDLessThan(String value) {
+            addCriterion("OccupationalID <", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDLessThanOrEqualTo(String value) {
+            addCriterion("OccupationalID <=", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDLike(String value) {
+            addCriterion("OccupationalID like", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDNotLike(String value) {
+            addCriterion("OccupationalID not like", value, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDIn(List<String> values) {
+            addCriterion("OccupationalID in", values, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDNotIn(List<String> values) {
+            addCriterion("OccupationalID not in", values, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDBetween(String value1, String value2) {
+            addCriterion("OccupationalID between", value1, value2, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalIDNotBetween(String value1, String value2) {
+            addCriterion("OccupationalID not between", value1, value2, "occupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDIsNull() {
+            addCriterion("ParentOccupationalID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDIsNotNull() {
+            addCriterion("ParentOccupationalID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDEqualTo(String value) {
+            addCriterion("ParentOccupationalID =", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDNotEqualTo(String value) {
+            addCriterion("ParentOccupationalID <>", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDGreaterThan(String value) {
+            addCriterion("ParentOccupationalID >", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDGreaterThanOrEqualTo(String value) {
+            addCriterion("ParentOccupationalID >=", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDLessThan(String value) {
+            addCriterion("ParentOccupationalID <", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDLessThanOrEqualTo(String value) {
+            addCriterion("ParentOccupationalID <=", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDLike(String value) {
+            addCriterion("ParentOccupationalID like", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDNotLike(String value) {
+            addCriterion("ParentOccupationalID not like", value, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDIn(List<String> values) {
+            addCriterion("ParentOccupationalID in", values, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDNotIn(List<String> values) {
+            addCriterion("ParentOccupationalID not in", values, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDBetween(String value1, String value2) {
+            addCriterion("ParentOccupationalID between", value1, value2, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentOccupationalIDNotBetween(String value1, String value2) {
+            addCriterion("ParentOccupationalID not between", value1, value2, "parentOccupationalID");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameIsNull() {
+            addCriterion("OccupationalName is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameIsNotNull() {
+            addCriterion("OccupationalName is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameEqualTo(String value) {
+            addCriterion("OccupationalName =", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameNotEqualTo(String value) {
+            addCriterion("OccupationalName <>", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameGreaterThan(String value) {
+            addCriterion("OccupationalName >", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameGreaterThanOrEqualTo(String value) {
+            addCriterion("OccupationalName >=", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameLessThan(String value) {
+            addCriterion("OccupationalName <", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameLessThanOrEqualTo(String value) {
+            addCriterion("OccupationalName <=", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameLike(String value) {
+            addCriterion("OccupationalName like", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameNotLike(String value) {
+            addCriterion("OccupationalName not like", value, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameIn(List<String> values) {
+            addCriterion("OccupationalName in", values, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameNotIn(List<String> values) {
+            addCriterion("OccupationalName not in", values, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameBetween(String value1, String value2) {
+            addCriterion("OccupationalName between", value1, value2, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOccupationalNameNotBetween(String value1, String value2) {
+            addCriterion("OccupationalName not between", value1, value2, "occupationalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoIsNull() {
+            addCriterion("OrderNo is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoIsNotNull() {
+            addCriterion("OrderNo is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoEqualTo(Integer value) {
+            addCriterion("OrderNo =", value, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoNotEqualTo(Integer value) {
+            addCriterion("OrderNo <>", value, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoGreaterThan(Integer value) {
+            addCriterion("OrderNo >", value, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoGreaterThanOrEqualTo(Integer value) {
+            addCriterion("OrderNo >=", value, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoLessThan(Integer value) {
+            addCriterion("OrderNo <", value, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoLessThanOrEqualTo(Integer value) {
+            addCriterion("OrderNo <=", value, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoIn(List<Integer> values) {
+            addCriterion("OrderNo in", values, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoNotIn(List<Integer> values) {
+            addCriterion("OrderNo not in", values, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoBetween(Integer value1, Integer value2) {
+            addCriterion("OrderNo between", value1, value2, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrderNoNotBetween(Integer value1, Integer value2) {
+            addCriterion("OrderNo not between", value1, value2, "orderNo");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNull() {
+            addCriterion("Status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNotNull() {
+            addCriterion("Status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualTo(Integer value) {
+            addCriterion("Status =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("Status <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("Status >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("Status >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("Status <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("Status <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("Status in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("Status not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("Status between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("Status not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 3 - 3
src/main/java/com/hz/employmentsite/model/PcSiteUser.java

@@ -51,7 +51,7 @@ public class PcSiteUser {
 
     private Integer IsFullTime;
 
-    private Integer OccupationalCategory;
+    private String OccupationalCategory;
 
     private Integer OccupationalLevel;
 
@@ -223,11 +223,11 @@ public class PcSiteUser {
         IsFullTime = isFullTime;
     }
 
-    public Integer getOccupationalCategory() {
+    public String getOccupationalCategory() {
         return OccupationalCategory;
     }
 
-    public void setOccupationalCategory(Integer occupationalCategory) {
+    public void setOccupationalCategory(String occupationalCategory) {
         OccupationalCategory = occupationalCategory;
     }
 

+ 1 - 1
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceImpl.java

@@ -184,7 +184,7 @@ public class JobUserServiceImpl implements JobUserService {
         }
 
         // 验证社保卡是否绑定
-        if (!data.getSocialSecurityCard().isEmpty()) {
+        if (data.getSocialSecurityCard() != null && !data.getSocialSecurityCard().isBlank()) {
             cir = emp.or();
             if (dbData != null) {
                 cir.andJobuserIDNotEqualTo(data.getJobUserID());

+ 56 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/OccupationalServiceImpl.java

@@ -0,0 +1,56 @@
+package com.hz.employmentsite.services.impl.jobUserManager;
+
+import com.hz.employmentsite.mapper.PcOccupationalMapper;
+import com.hz.employmentsite.model.PcOccupational;
+import com.hz.employmentsite.model.PcOccupationalExample;
+import com.hz.employmentsite.model.SysDictionaryItem;
+import com.hz.employmentsite.services.service.jobUserManager.OccupationalService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("OccupationalService")
+public class OccupationalServiceImpl implements OccupationalService {
+    @Autowired
+    private PcOccupationalMapper pcOccupationalMapper;
+
+    @Override
+    public List<SysDictionaryItem> getList() {
+        List<SysDictionaryItem> list = new ArrayList<>();
+        PcOccupationalExample occupationalExample = new PcOccupationalExample();
+        occupationalExample.or().andParentOccupationalIDEqualTo("0");
+        var dataList = pcOccupationalMapper.selectByExample(occupationalExample);
+        for (PcOccupational occupational : dataList) {
+            SysDictionaryItem item = new SysDictionaryItem();
+            item.setCode(occupational.getOccupationalID());
+            item.setName(occupational.getOccupationalName());
+            list.add(item);
+        }
+        return list;
+    }
+
+    @Override
+    public List<SysDictionaryItem> getListByParentOccupationalID(String occupationalID) {
+        List<SysDictionaryItem> list = new ArrayList<>();
+        PcOccupationalExample occupationalExample = new PcOccupationalExample();
+        occupationalExample.or().andParentOccupationalIDEqualTo(occupationalID);
+        var dataList = pcOccupationalMapper.selectByExample(occupationalExample);
+        for (PcOccupational occupational : dataList) {
+            SysDictionaryItem item = new SysDictionaryItem();
+            item.setCode(occupational.getOccupationalID());
+            item.setName(occupational.getOccupationalName());
+            list.add(item);
+        }
+        return list;
+    }
+
+    @Override
+    public String getParentOccupationalID(String occupationalID) {
+        PcOccupationalExample occupationalExample = new PcOccupationalExample();
+        occupationalExample.or().andOccupationalIDEqualTo(occupationalID);
+        var curProfession = pcOccupationalMapper.selectByExample(occupationalExample).get(0);
+        return curProfession.getParentOccupationalID();
+    }
+}

+ 13 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/OccupationalService.java

@@ -0,0 +1,13 @@
+package com.hz.employmentsite.services.service.jobUserManager;
+
+import com.hz.employmentsite.model.SysDictionaryItem;
+
+import java.util.List;
+
+public interface OccupationalService {
+    List<SysDictionaryItem> getList();
+
+    List<SysDictionaryItem> getListByParentOccupationalID(String occupationalID);
+
+    String getParentOccupationalID(String occupationalID);
+}

+ 1 - 1
src/main/java/com/hz/employmentsite/vo/baseSettings/SiteUserVo.java

@@ -41,7 +41,7 @@ public class SiteUserVo {
     public String cultureRankName;
     public Integer isFullTime;
     public String isFullTimeName;
-    public Integer occupationalCategory;
+    public String occupationalCategory;
     public String occupationalCategoryName;
     public Integer occupationalLevel;
     public String occupationalLevelName;

+ 1 - 1
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserVo.java

@@ -115,7 +115,7 @@ public class JobUserVo {
 
     private Integer isFullTime;
     private String isFullTimeName;
-    private Integer occupationalCategory;
+    private String occupationalCategory;
     private String occupationalCategoryName;
     private Integer occupationalLevel;
     private String occupationalLevelName;

+ 6 - 6
src/main/resources/mapping/PcJobuserMapper.xml

@@ -44,7 +44,7 @@
     <result column="Profession" jdbcType="VARCHAR" property="profession"/>
     <result column="NativePlace" jdbcType="VARCHAR" property="nativePlace"/>
     <result column="IsFullTime" jdbcType="INTEGER" property="isFullTime"/>
-    <result column="OccupationalCategory" jdbcType="INTEGER" property="occupationalCategory"/>
+    <result column="OccupationalCategory" jdbcType="VARCHAR" property="occupationalCategory"/>
     <result column="OccupationalLevel" jdbcType="INTEGER" property="occupationalLevel"/>
   </resultMap>
   <sql id="Example_Where_Clause">
@@ -441,7 +441,7 @@
         #{isFullTime,jdbcType=INTEGER},
       </if>
       <if test="occupationalCategory != null">
-        #{occupationalCategory,jdbcType=INTEGER},
+        #{occupationalCategory,jdbcType=VARCHAR},
       </if>
       <if test="occupationalLevel != null">
         #{occupationalLevel,jdbcType=INTEGER},
@@ -584,7 +584,7 @@
         IsFullTime = #{row.isFullTime,jdbcType=INTEGER},
       </if>
       <if test="row.occupationalCategory != null">
-        OccupationalCategory = #{row.occupationalCategory,jdbcType=INTEGER},
+        OccupationalCategory = #{row.occupationalCategory,jdbcType=VARCHAR},
       </if>
       <if test="row.occupationalLevel != null">
         OccupationalLevel = #{row.occupationalLevel,jdbcType=INTEGER},
@@ -638,7 +638,7 @@
     Profession = #{row.profession,jdbcType=VARCHAR},
     NativePlace = #{row.nativePlace,jdbcType=VARCHAR},
     IsFullTime = #{row.isFullTime,jdbcType=INTEGER},
-    OccupationalCategory = #{row.occupationalCategory,jdbcType=INTEGER},
+    OccupationalCategory = #{row.occupationalCategory,jdbcType=VARCHAR},
     OccupationalLevel = #{row.occupationalLevel,jdbcType=INTEGER}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -771,7 +771,7 @@
         IsFullTime = #{isFullTime,jdbcType=INTEGER},
       </if>
       <if test="occupationalCategory != null">
-        OccupationalCategory = #{occupationalCategory,jdbcType=INTEGER},
+        OccupationalCategory = #{occupationalCategory,jdbcType=VARCHAR},
       </if>
       <if test="occupationalLevel != null">
         OccupationalLevel = #{occupationalLevel,jdbcType=INTEGER},
@@ -822,7 +822,7 @@
         Profession           = #{profession,jdbcType=VARCHAR},
         NativePlace          = #{nativePlace,jdbcType=VARCHAR},
         IsFullTime           = #{isFullTime,jdbcType=INTEGER},
-        OccupationalCategory = #{occupationalCategory,jdbcType=INTEGER},
+        OccupationalCategory = #{occupationalCategory,jdbcType=VARCHAR},
         OccupationalLevel    = #{occupationalLevel,jdbcType=INTEGER}
     where JobuserID = #{jobuserID,jdbcType=VARCHAR}
   </update>

+ 213 - 0
src/main/resources/mapping/PcOccupationalMapper.xml

@@ -0,0 +1,213 @@
+<?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">
+<mapper namespace="com.hz.employmentsite.mapper.PcOccupationalMapper">
+  <resultMap id="BaseResultMap" type="com.hz.employmentsite.model.PcOccupational">
+    <id column="OccupationalID" jdbcType="VARCHAR" property="occupationalID" />
+    <result column="ParentOccupationalID" jdbcType="VARCHAR" property="parentOccupationalID" />
+    <result column="OccupationalName" jdbcType="VARCHAR" property="occupationalName" />
+    <result column="OrderNo" jdbcType="INTEGER" property="orderNo" />
+    <result column="Status" jdbcType="INTEGER" property="status" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    OccupationalID, ParentOccupationalID, OccupationalName, OrderNo, Status
+  </sql>
+  <select id="selectByExample" parameterType="com.hz.employmentsite.model.PcOccupationalExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from pc_occupational
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from pc_occupational
+    where OccupationalID = #{occupationalID,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from pc_occupational
+    where OccupationalID = #{occupationalID,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.hz.employmentsite.model.PcOccupationalExample">
+    delete from pc_occupational
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.hz.employmentsite.model.PcOccupational">
+    insert into pc_occupational (OccupationalID, ParentOccupationalID, 
+      OccupationalName, OrderNo, Status
+      )
+    values (#{occupationalID,jdbcType=VARCHAR}, #{parentOccupationalID,jdbcType=VARCHAR}, 
+      #{occupationalName,jdbcType=VARCHAR}, #{orderNo,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcOccupational">
+    insert into pc_occupational
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="occupationalID != null">
+        OccupationalID,
+      </if>
+      <if test="parentOccupationalID != null">
+        ParentOccupationalID,
+      </if>
+      <if test="occupationalName != null">
+        OccupationalName,
+      </if>
+      <if test="orderNo != null">
+        OrderNo,
+      </if>
+      <if test="status != null">
+        Status,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="occupationalID != null">
+        #{occupationalID,jdbcType=VARCHAR},
+      </if>
+      <if test="parentOccupationalID != null">
+        #{parentOccupationalID,jdbcType=VARCHAR},
+      </if>
+      <if test="occupationalName != null">
+        #{occupationalName,jdbcType=VARCHAR},
+      </if>
+      <if test="orderNo != null">
+        #{orderNo,jdbcType=INTEGER},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.hz.employmentsite.model.PcOccupationalExample" resultType="java.lang.Long">
+    select count(*) from pc_occupational
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update pc_occupational
+    <set>
+      <if test="row.occupationalID != null">
+        OccupationalID = #{row.occupationalID,jdbcType=VARCHAR},
+      </if>
+      <if test="row.parentOccupationalID != null">
+        ParentOccupationalID = #{row.parentOccupationalID,jdbcType=VARCHAR},
+      </if>
+      <if test="row.occupationalName != null">
+        OccupationalName = #{row.occupationalName,jdbcType=VARCHAR},
+      </if>
+      <if test="row.orderNo != null">
+        OrderNo = #{row.orderNo,jdbcType=INTEGER},
+      </if>
+      <if test="row.status != null">
+        Status = #{row.status,jdbcType=INTEGER},
+      </if>
+    </set>
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update pc_occupational
+    set OccupationalID = #{row.occupationalID,jdbcType=VARCHAR},
+      ParentOccupationalID = #{row.parentOccupationalID,jdbcType=VARCHAR},
+      OccupationalName = #{row.occupationalName,jdbcType=VARCHAR},
+      OrderNo = #{row.orderNo,jdbcType=INTEGER},
+      Status = #{row.status,jdbcType=INTEGER}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.hz.employmentsite.model.PcOccupational">
+    update pc_occupational
+    <set>
+      <if test="parentOccupationalID != null">
+        ParentOccupationalID = #{parentOccupationalID,jdbcType=VARCHAR},
+      </if>
+      <if test="occupationalName != null">
+        OccupationalName = #{occupationalName,jdbcType=VARCHAR},
+      </if>
+      <if test="orderNo != null">
+        OrderNo = #{orderNo,jdbcType=INTEGER},
+      </if>
+      <if test="status != null">
+        Status = #{status,jdbcType=INTEGER},
+      </if>
+    </set>
+    where OccupationalID = #{occupationalID,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.hz.employmentsite.model.PcOccupational">
+    update pc_occupational
+    set ParentOccupationalID = #{parentOccupationalID,jdbcType=VARCHAR},
+      OccupationalName = #{occupationalName,jdbcType=VARCHAR},
+      OrderNo = #{orderNo,jdbcType=INTEGER},
+      Status = #{status,jdbcType=INTEGER}
+    where OccupationalID = #{occupationalID,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 6 - 6
src/main/resources/mapping/PcSiteUserMapper.xml

@@ -125,7 +125,7 @@
             #{IDCard,jdbcType=VARCHAR}, #{SocialSecurityCard,jdbcType=VARCHAR}, #{Age,jdbcType=INTEGER},
             #{Nation,jdbcType=INTEGER}, #{PoliticsStatusID,jdbcType=INTEGER}, #{CultureRank,jdbcType=INTEGER},
             #{FinishSchool,jdbcType=VARCHAR}, #{Profession,jdbcType=VARCHAR}, #{IsFullTime,jdbcType=INTEGER},
-            #{OccupationalCategory,jdbcType=INTEGER}, #{OccupationalLevel,jdbcType=INTEGER},
+            #{OccupationalCategory,jdbcType=VARCHAR}, #{OccupationalLevel,jdbcType=INTEGER},
             #{NativePlace,jdbcType=VARCHAR}, #{Email,jdbcType=VARCHAR}, #{Address,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcSiteUser">
@@ -275,7 +275,7 @@
         #{IsFullTime,jdbcType=INTEGER},
       </if>
       <if test="OccupationalCategory != null">
-        #{OccupationalCategory,jdbcType=INTEGER},
+        #{OccupationalCategory,jdbcType=VARCHAR},
       </if>
       <if test="OccupationalLevel != null">
         #{OccupationalLevel,jdbcType=INTEGER},
@@ -364,7 +364,7 @@
         IsFullTime = #{row.IsFullTime,jdbcType=INTEGER},
       </if>
       <if test="row.OccupationalCategory != null">
-        OccupationalCategory = #{row.OccupationalCategory,jdbcType=INTEGER},
+        OccupationalCategory = #{row.OccupationalCategory,jdbcType=VARCHAR},
       </if>
       <if test="row.OccupationalLevel != null">
         OccupationalLevel = #{row.OccupationalLevel,jdbcType=INTEGER},
@@ -406,7 +406,7 @@
     FinishSchool = #{row.FinishSchool,jdbcType=VARCHAR},
     Profession = #{row.Profession,jdbcType=VARCHAR},
     IsFullTime = #{row.IsFullTime,jdbcType=VARCHAR},
-    OccupationalCategory = #{row.OccupationalCategory,jdbcType=INTEGER},
+    OccupationalCategory = #{row.OccupationalCategory,jdbcType=VARCHAR},
     OccupationalLevel = #{row.OccupationalLevel,jdbcType=INTEGER},
     NativePlace = #{row.NativePlace,jdbcType=VARCHAR},
     Email = #{row.Email,jdbcType=VARCHAR},
@@ -479,7 +479,7 @@
         IsFullTime = #{row.IsFullTime,jdbcType=INTEGER},
       </if>
       <if test="row.OccupationalCategory != null">
-        OccupationalCategory = #{row.OccupationalCategory,jdbcType=INTEGER},
+        OccupationalCategory = #{row.OccupationalCategory,jdbcType=VARCHAR},
       </if>
       <if test="row.OccupationalLevel != null">
         OccupationalLevel = #{row.OccupationalLevel,jdbcType=INTEGER},
@@ -518,7 +518,7 @@
         FinishSchool         = #{FinishSchool,jdbcType=VARCHAR},
         Profession           = #{Profession,jdbcType=VARCHAR},
         IsFullTime           = #{IsFullTime,jdbcType=VARCHAR},
-        OccupationalCategory = #{OccupationalCategory,jdbcType=INTEGER},
+        OccupationalCategory = #{OccupationalCategory,jdbcType=VARCHAR},
         OccupationalLevel    = #{OccupationalLevel,jdbcType=INTEGER},
         NativePlace          = #{NativePlace,jdbcType=VARCHAR},
         Email                = #{Email,jdbcType=VARCHAR},

+ 7 - 4
src/main/resources/mapping/cquery/JobUserCQuery.xml

@@ -4,8 +4,10 @@
     <select id="selectJobUserList" resultType="com.hz.employmentsite.vo.jobUserManager.JobUserVo">
         select jobuser.* ,gender.name as GenderName,culture.name as CultureName,site.SiteName,jobstatus.name as
         JobStatusName,keytype.name as KeyTypeName,sys_politics.name as politicsStatusName,sys_health.name as healthName,
-        sys_family.name as familyNatureName,sys_full_time.Name as isFullTimeName,sys_occ_category.Name as occupationalCategoryName,
-        sys_occ_level.Name as occupationalLevelName,sys_blood_type.Name as bloodTypeName,sys_marital_status.Name as MaritalStatusName,
+        sys_family.name as familyNatureName,sys_full_time.Name as isFullTimeName,occ_cat.OccupationalName as
+        occupationalCategoryName,
+        sys_occ_level.Name as occupationalLevelName,sys_blood_type.Name as bloodTypeName,sys_marital_status.Name as
+        MaritalStatusName,
         area_region.name as RegionName,area_street.name as StreetName,
         (select count(*) from pc_recommend recommend where jobuser.JobUserID = recommend.JobuserID and isRead = 1)as
         RecommendedCount
@@ -29,8 +31,9 @@
         jobuser.familyNatureID = sys_family.Value
         left join (select * from sys_dictionary_item where DictionaryCode ='IsFullTime') sys_full_time on
         jobuser.IsFullTime = sys_full_time.Value
-        left join (select * from sys_dictionary_item where DictionaryCode ='OccupationalCategory') sys_occ_category on
-        jobuser.OccupationalCategory = sys_occ_category.Value
+        left join pc_occupational occ_cat on
+        jobuser.OccupationalCategory =
+        occ_cat.OccupationalID
         left join (select * from sys_dictionary_item where DictionaryCode ='OccupationalLevel') sys_occ_level on
         jobuser.OccupationalLevel = sys_occ_level.Value
         left join (select * from sys_dictionary_item where DictionaryCode ='BloodType') sys_blood_type on

+ 3 - 3
src/main/resources/mapping/cquery/SiteUserCQuery.xml

@@ -4,7 +4,7 @@
     <select id="getList" resultType="com.hz.employmentsite.vo.baseSettings.SiteUserVo">
         select siteUser.*,dic_userRole.Name as RoleName,dic_gender.Name as GenderName,site.SiteName
         ,inSites.InstitutionID as institutionID,site.regionCode, dic_fullTime.Name as isFullTimeName
-        ,dic_occ_cat.Name as occupationalCategoryName, dic_occ_level.Name as occupationalLevelName
+        ,occ_cat.OccupationalName as occupationalCategoryName, dic_occ_level.Name as occupationalLevelName
         ,dic_nation.Name as nationName, dic_politicsStatus.Name as politicsStatusName
         ,dic_culture.Name as cultureRankName
         from pc_site_user siteUser
@@ -17,9 +17,9 @@
         siteUser.IsFullTime
         =
         dic_fullTime.Value
-        left join (select * from sys_dictionary_item where DictionaryCode ='OccupationalCategory' ) dic_occ_cat on
+        left join pc_occupational occ_cat on
         siteUser.OccupationalCategory =
-        dic_occ_cat.Value
+        occ_cat.OccupationalID
         left join (select * from sys_dictionary_item where DictionaryCode ='OccupationalLevel' ) dic_occ_level on
         siteUser.OccupationalLevel =
         dic_occ_level.Value

+ 46 - 8
vue/src/views/baseSettings/siteUser/edit.vue

@@ -113,9 +113,11 @@
         </a-col>
         <a-col :span="8">
           <a-form-item label="职业资格类别" name="occupationalCategory" :label-col="{span:7}">
-            <label v-if="opCategory==3">{{ dataModel.occupationalCategory }}</label>
-            <a-select ref="select" v-model:value="dataModel.occupationalCategory" :options="occupationalCategoryList"
-                      :field-names="{ label: 'name', value: 'value' }" :allow-clear="false"></a-select>
+            <label v-if="opCategory==3">{{ dataModel.occupationalCategoryName }}</label>
+            <a-cascader :load-data="loadLevelOccupationalCategoryList"
+                        v-model:value="dataModel.occupationalCategoryName"
+                        :options="occupationalCategoryList" change-on-select @change="occupationalChange">
+            </a-cascader>
           </a-form-item>
         </a-col>
         <a-col :span="8">
@@ -165,6 +167,7 @@ import type {SelectProps} from "ant-design-vue";
 import {message} from "ant-design-vue";
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import {getSiteList} from "@/api/baseSettings/siteInfo";
+import {get} from "@/api/common";
 
 interface siteUserModel {
   dataModel: any;
@@ -232,10 +235,6 @@ export default defineComponent({
       const result: any = await getSysDictionaryList("IsFullTime");
       isFullTimeList.value = result;
     }
-    const getOccupationalCategoryList = async function () {
-      const result: any = await getSysDictionaryList("OccupationalCategory");
-      occupationalCategoryList.value = result;
-    }
     const getOccupationalLevelList = async function () {
       const result: any = await getSysDictionaryList("OccupationalLevel");
       occupationalLevelList.value = result;
@@ -252,10 +251,10 @@ export default defineComponent({
       getNationList()
       getPoliticsStatusList()
       getIsFullTimeList()
-      getOccupationalCategoryList()
       getOccupationalLevelList()
       getCultureRankList()
       getRoleList(operateType);
+      getFirstOccupationalList()
       opCategory.value = operateType;
       getSiteUserByID(siteUserID).then((result: any) => {
         formData.dataModel = result;
@@ -319,6 +318,43 @@ export default defineComponent({
 
     };
 
+    const getFirstOccupationalList = () => {
+      get("occupational/getFirstOccupationalList", null).then(data => {
+        occupationalCategoryList.value = (data as any[]).map((x) => {
+          return {
+            label: x.name,
+            value: x.code,
+            isLeaf: false,
+            tag: 'firstLevel'
+          }
+        });
+      });
+    }
+    const loadLevelOccupationalCategoryList = (selectedOptions) => {
+      let targetOption = selectedOptions[selectedOptions.length - 1];
+      if (targetOption) {
+        get("occupational/getListByParentOccupationalID", {parentOccupationalID: targetOption.value}).then(data => {
+          targetOption.loading = false;
+          targetOption.children = (data as any[]).map((x) => {
+            return {
+              label: x.name,
+              value: x.code,
+              isLeaf: true,
+              tag: 'secondLevel'
+            };
+          });
+        });
+        formData.dataModel.hasOccupational = false;
+      }
+    };
+
+    // 岗位名称选择变更事件
+    function occupationalChange(value: any, selectedOptions: any) {
+      if (value.length >= 2) {
+        formData.dataModel.occupationalCategory = selectedOptions[1].value;
+        formData.dataModel.occupationalCategoryName = selectedOptions[1].label;
+      }
+    }
 
     return {
       ...toRefs(formData),
@@ -340,6 +376,8 @@ export default defineComponent({
       isFullTimeList,
       occupationalCategoryList,
       occupationalLevelList,
+      loadLevelOccupationalCategoryList,
+      occupationalChange
     };
   },
   created() {

+ 45 - 7
vue/src/views/jobUserManager/jobuser/edit.vue

@@ -140,8 +140,10 @@
         </a-col>
         <a-col :span="8">
           <a-form-item label="职业资格类别" :label-col="{span:6}" name="finishSchool">
-            <a-select ref="select" v-model:value="dataModel.occupationalCategory" :options="occupationalCategoryList"
-                      :field-names="{ label: 'name', value: 'value' }" :allow-clear="false"></a-select>
+            <a-cascader :load-data="loadLevelOccupationalCategoryList"
+                        v-model:value="dataModel.occupationalCategoryName"
+                        :options="occupationalCategoryList" change-on-select @change="occupationalChange">
+            </a-cascader>
           </a-form-item>
         </a-col>
         <a-col :span="8">
@@ -677,10 +679,6 @@ export default defineComponent(
         const result: any = await getSysDictionaryList("IsFullTime");
         isFullTimeList.value = result;
       }
-      const getOccupationalCategoryList = async function () {
-        const result: any = await getSysDictionaryList("OccupationalCategory");
-        occupationalCategoryList.value = result;
-      }
       const getOccupationalLevelList = async function () {
         const result: any = await getSysDictionaryList("OccupationalLevel");
         occupationalLevelList.value = result;
@@ -802,6 +800,44 @@ export default defineComponent(
         }
       }
 
+      const getFirstOccupationalList = () => {
+        get("occupational/getFirstOccupationalList", null).then(data => {
+          occupationalCategoryList.value = (data as any[]).map((x) => {
+            return {
+              label: x.name,
+              value: x.code,
+              isLeaf: false,
+              tag: 'firstLevel'
+            }
+          });
+        });
+      }
+      const loadLevelOccupationalCategoryList = (selectedOptions) => {
+        let targetOption = selectedOptions[selectedOptions.length - 1];
+        if (targetOption) {
+          get("occupational/getListByParentOccupationalID", {parentOccupationalID: targetOption.value}).then(data => {
+            targetOption.loading = false;
+            targetOption.children = (data as any[]).map((x) => {
+              return {
+                label: x.name,
+                value: x.code,
+                isLeaf: true,
+                tag: 'secondLevel'
+              };
+            });
+          });
+          formState.dataModel.hasOccupational = false;
+        }
+      };
+
+      // 岗位名称选择变更事件
+      function occupationalChange(value: any, selectedOptions: any) {
+        if (value.length >= 2) {
+          formState.dataModel.occupationalCategory = selectedOptions[1].value;
+          formState.dataModel.occupationalCategoryName = selectedOptions[1].label;
+        }
+      }
+
       const loadData = (id: any) => {
         getAllSites();
         getHealthList();
@@ -815,8 +851,8 @@ export default defineComponent(
         getMaritalStatusList();
         getPoliticsStatusList();
         getIsFullTimeList()
-        getOccupationalCategoryList()
         getOccupationalLevelList()
+        getFirstOccupationalList()
         getInfo().then((loginUserInfo:any)=>{
           getDataById(id,loginUserInfo.userID).then(data => {
             formState.dataModel = data;
@@ -866,6 +902,8 @@ export default defineComponent(
         isFullTimeList,
         occupationalCategoryList,
         occupationalLevelList,
+        loadLevelOccupationalCategoryList,
+        occupationalChange
       }
     },
     created() {