1
0

3 Commits cbe2ce7a06 ... 48469abbaf

Autor SHA1 Nachricht Datum
  jinhu 48469abbaf 资质分类字典管理 vor 10 Monaten
  jinhu 1451995874 资质分类字典管理 vor 10 Monaten
  jinhu 068a2efc91 资质分类字典管理 vor 10 Monaten
43 geänderte Dateien mit 2380 neuen und 202 gelöschten Zeilen
  1. 2 2
      src/main/java/com/kcim/MedicalApplication.java
  2. 65 0
      src/main/java/com/kcim/constants/CommonConstant.java
  3. 110 0
      src/main/java/com/kcim/constants/DictConstant.java
  4. 49 0
      src/main/java/com/kcim/constants/DirectoryConstant.java
  5. 8 0
      src/main/java/com/kcim/constants/KpiProcessConstant.java
  6. 82 24
      src/main/java/com/kcim/constants/NumberConstant.java
  7. 19 0
      src/main/java/com/kcim/constants/SQLParameter.java
  8. 128 0
      src/main/java/com/kcim/constants/SplitConstant.java
  9. 49 0
      src/main/java/com/kcim/constants/SysParameterConstant.java
  10. 10 17
      src/main/java/com/kcim/controller/DemoController.java
  11. 21 0
      src/main/java/com/kcim/controller/InterfaceController.java
  12. 119 0
      src/main/java/com/kcim/controller/QualificationController.java
  13. 14 0
      src/main/java/com/kcim/controller/request/QualificationHisItemMapRequest.java
  14. 16 0
      src/main/java/com/kcim/dao/mapper/HisItemDicMapper.java
  15. 16 0
      src/main/java/com/kcim/dao/mapper/QualificationHisItemMapper.java
  16. 16 0
      src/main/java/com/kcim/dao/mapper/QualificationMapper.java
  17. 16 0
      src/main/java/com/kcim/dao/mapper/QualificationTypeMapper.java
  18. 94 0
      src/main/java/com/kcim/dao/model/DoctorAttachment.java
  19. 95 0
      src/main/java/com/kcim/dao/model/HisItemDic.java
  20. 108 0
      src/main/java/com/kcim/dao/model/Qualification.java
  21. 122 0
      src/main/java/com/kcim/dao/model/QualificationApply.java
  22. 114 0
      src/main/java/com/kcim/dao/model/QualificationApplyAdjust.java
  23. 90 0
      src/main/java/com/kcim/dao/model/QualificationApplyAttachment.java
  24. 96 0
      src/main/java/com/kcim/dao/model/QualificationHisItem.java
  25. 96 0
      src/main/java/com/kcim/dao/model/QualificationType.java
  26. 84 0
      src/main/java/com/kcim/dao/model/UserInfo.java
  27. 31 0
      src/main/java/com/kcim/dao/repository/HisItemDicRepository.java
  28. 18 0
      src/main/java/com/kcim/dao/repository/QualificationHisItemRepository.java
  29. 19 0
      src/main/java/com/kcim/dao/repository/QualificationRepository.java
  30. 11 0
      src/main/java/com/kcim/dao/repository/QualificationTypeRepository.java
  31. 11 11
      src/main/java/com/kcim/dao/repository/TestRepository.java
  32. 42 0
      src/main/java/com/kcim/exception/MedicalException.java
  33. 10 8
      src/main/java/com/kcim/service/DemoService.java
  34. 17 0
      src/main/java/com/kcim/service/HisItemDicService.java
  35. 14 0
      src/main/java/com/kcim/service/QualificationHisItemService.java
  36. 44 0
      src/main/java/com/kcim/service/QualificationService.java
  37. 15 18
      src/main/java/com/kcim/service/impl/DemoServiceImpl.java
  38. 28 0
      src/main/java/com/kcim/service/impl/HisItemDicServiceImpl.java
  39. 85 0
      src/main/java/com/kcim/service/impl/QualificationHisItemServiceImpl.java
  40. 233 0
      src/main/java/com/kcim/service/impl/QualificationServiceImpl.java
  41. 33 0
      src/main/java/com/kcim/util/BaseUtil.java
  42. 128 0
      src/main/resources/application-dev.yml
  43. 2 122
      src/main/resources/application.yml

+ 2 - 2
src/main/java/com/kcim/DemoApplication.java → src/main/java/com/kcim/MedicalApplication.java

@@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @SpringBootApplication
-public class DemoApplication {
+public class MedicalApplication {
 
     public static void main(String[] args) {
-        SpringApplication.run(DemoApplication.class, args);
+        SpringApplication.run(MedicalApplication.class, args);
         System.out.println("============================启动成功==========================================");
 
     }

+ 65 - 0
src/main/java/com/kcim/constants/CommonConstant.java

@@ -0,0 +1,65 @@
+package com.kcim.constants;
+
+/**
+ * @Author  wangyongsheng
+ * @Description
+ * @Date 2022/7/19
+ * @Param
+ *
+ **/
+
+public interface CommonConstant {
+
+    /**
+     * Sa-Token 存储用户信息在 session 中 前缀
+     */
+     String USER_PREFIX = "centerSys:";
+
+    /**
+     * 用户默认密码
+     */
+     String NORMAL_PASSWORD = "123456";
+
+    /**
+     * 权限缓存前缀
+     */
+     String PERMISSION_PREFIX = "centerCurrentPerms::";
+
+    /**
+     * 角色缓存前缀
+     */
+     String ROLE_PREFIX = "centerCurrentRole::";
+
+    /**
+     * 是
+     */
+     String YES = "是";
+
+    /**
+     * 否
+     */
+     String NO = "否";
+
+     Integer AUDIT_YES = 1;
+
+     Integer AUDIT_NO = 0;
+
+     Integer SUBMIT = 1;
+
+     Integer CANCEL_SUBMIT = 0;
+
+    /**
+     * 未结转
+     */
+     Integer CARRY_NO = 0;
+    /**
+     * 已结转
+     */
+     Integer CARRY_YES = 2;
+    /**
+     * 结转中
+      */
+    Integer CARRY_ON = 1;
+    
+    
+}

+ 110 - 0
src/main/java/com/kcim/constants/DictConstant.java

@@ -0,0 +1,110 @@
+package com.kcim.constants;
+
+/**
+ * @Author wangyongsheng
+ * @Description 字典类别常量
+ * @Date 2022/6/28
+ * @Param
+ * @return
+ **/
+
+public interface DictConstant {
+
+    /**
+     * 资质项目类型
+     */
+    String QUALIFICATION_PROJECT_TYPE = "QUALIFICATION_PROJECT_TYPE";
+
+
+    /**
+     * 手术及操作级别
+     */
+    String SURGICAL_AND_OPERATIONAL_LEVELS = "SURGICAL_AND_OPERATIONAL_LEVELS";
+
+    /**
+     * 科室类型
+     */
+    String SECTION_TYPE = "SECTION_TYPE";
+    /**
+     * 审核状态
+     */
+    String AUDIT_STATUS = "AUDIT_STATUS";
+    /**
+     * 归档状态
+     */
+    String FILE_STATUS = "FILE_STATUS";
+    /**
+     * 职务
+     */
+    String POSITION_TYPE = "POSITION_TYPE";
+    /**
+     * 职称
+     */
+    String TITLE_TYPE = "TITLE_TYPE";
+    /**
+     * 医师
+     */
+    String PHYSICIAN_TYPE = "PHYSICIAN_TYPE";
+    /**
+     * 执业状态
+     */
+    String PROFESSIONAL_STATUS_TYPE = "PROFESSIONAL_STATUS_TYPE";
+
+    /**
+     * 执业类别
+     */
+    String JOB_TYPE = "JOB_TYPE";
+
+    /**
+     * 执业科室
+     */
+    String PRACTICE_DEPARTMENT_TYPE = "PRACTICE_DEPARTMENT_TYPE";
+
+    /**
+     * 执业科目
+     */
+    String PROCESSIONAL_SUBJECTS_TYPE = "PROCESSIONAL_SUBJECTS_TYPE";
+
+    /**
+     * 所学专业
+     */
+    String PROFESSIONAL_TYPE = "PROFESSIONAL_TYPE";
+
+    /**
+     * 人员类别
+     */
+    String PERSONNEL_CATEGORY = "PERSONNEL_CATEGORY";
+
+    /**
+     * 医院等级
+     */
+    String HOSPITAL_LEVEL = "HOSPITAL_LEVEL";
+
+    /**
+     * 医院类型
+     */
+    String HOSPITAL_TYPE = "HOSPITAL_TYPE";
+
+    /**
+     * 医院性质
+     */
+    String HOSPITAL_NATURE = "HOSPITAL_NATURE";
+
+    /**
+     * 指标单位
+     */
+    String TARGET_UNIT = "TARGET_UNIT";
+
+    String INDICATOR_PARENT_MENU = "190";
+    String INDICATOR_PARENT_MENU1 = "191";
+
+    String POSITION = "POSITION";
+    /**
+     * 学历
+     */
+    String EDUCATION = "EDUCATION";
+
+
+
+
+}

+ 49 - 0
src/main/java/com/kcim/constants/DirectoryConstant.java

@@ -0,0 +1,49 @@
+package com.kcim.constants;
+/**
+* @program: performace
+* @description: 字典类常量
+* @author: Wang.YS
+* @create: 2023-01-08 23:11
+**/
+public interface DirectoryConstant {
+
+    String UNIT_TYPE = "1";
+    /**
+     * 岗位级别
+     */
+    String POSITION_LEVEL = "2";
+
+    String MANAGER_LEVEL = "3";
+
+
+    String INCOME_TYPE = "7";
+
+    String COST_TYPE="8";
+    /**
+     * 报表列类型
+     */
+    String REPORT_COLUMN_TYPE="11";
+
+    String REPORT_TYPE = "9";
+    /**
+     * 取数项目类型
+     */
+    String SQL_TYPE = "10";
+    /**
+     * 核算单元分级
+     */
+    String UNIT_LEVEL = "4";
+
+    /**
+     * 收费项目类型
+     */
+    String ITEM_TYPE = "ITEM_TYPE";
+
+
+    String FIRST_SPECIAL_SQL = "FIRST_SPECIAL_SQL";
+
+    String REPORT_COLUMN_TEXT_MAP = "REPORT_COLUMN_TEXT_MAP";
+
+    String 	SPECIAL_SHEET_MAP = "SPECIAL_SHEET_MAP";
+}
+

+ 8 - 0
src/main/java/com/kcim/constants/KpiProcessConstant.java

@@ -0,0 +1,8 @@
+package com.kcim.constants;/**
+* @program: performace
+* @description: 进程数据code
+* @author: Wang.YS
+* @create: 2023-01-12 10:08
+**/
+public interface KpiProcessConstant {
+}

+ 82 - 24
src/main/java/com/kcim/constants/NumberConstant.java

@@ -3,99 +3,157 @@ package com.kcim.constants;
 /**
  * 数字设置
  */
-public final class NumberConstant {
-    public NumberConstant() {
-    }
+public  interface NumberConstant {
 
     /**
      * 零
      */
-    public static final Long ZERO_L = 0L;
-    public static final Integer ZERO = 0;
-    public static final String ZERO_S = "0";
+     Integer ZERO = 0;
+
+    /**
+     * 零
+     */
+    Long ZERO_L = 0L;
+
+    /**
+     * 零
+     */
+    String ZERO_S = "0";
+
+    /**
+     * 一
+     */
+     Integer ONE = 1;
+
+
     /**
      * 一
      */
-    public static final Integer ONE = 1;
+    String ONES = "01";
+
+    /**
+     * 一
+     */
+    String ONE_S = "1";
+    /**
+     * LONG 一
+     */
+    Long ONE_L = 1L;
 
     /**
      * 二
      */
-    public static final Integer TWO = 2;
+     Integer TWO = 2;
+    /**
+     * 二
+     */
+    String TWO_S = "2";
+    /**
+     * LONG 二
+     */
+    Long TWO_L = 2L;
 
     /**
      * 三
      */
-    public static final Integer THREE = 3;
+     Integer THREE = 3;
+    /**
+     * 三
+     */
+    String THREE_S = "3";
+
+    /**
+     * LONG 三
+     */
+    Long THREE_L = 3L;
 
     /**
      * 四
      */
-    public static final Integer FOUR = 4;
+     Integer FOUR = 4;
+    /**
+     * 四
+     */
+    String FOUR_S = "4";
 
     /**
      * 五
      */
-    public static final Integer FIVE = 5;
+     Integer FIVE = 5;
 
     /**
      * 六
      */
-    public static final Integer SIX = 6;
+     Integer SIX = 6;
 
     /**
      * 七
      */
-    public static final Integer SEVEN = 7;
+     Integer SEVEN = 7;
 
     /**
      * 八
      */
-    public static final Integer EIGHT = 8;
+     Integer EIGHT = 8;
 
     /**
      * 九
      */
-    public static final Integer NINE = 9;
+     Integer NINE = 9;
 
     /**
      * 10
      */
-    public static final Integer TEN = 10;
-
+     Integer TEN = 10;
+    /**
+     * 17
+     */
+     Integer SEVENTEEN=17;
+    /**
+     * 18
+     */
+     Integer EIGHTEEN=18;
     /**
      * 二十四
      */
-    public static final Integer TWENTY_FOUR = 24;
+     Integer TWENTY_FOUR = 24;
 
     /**
      * 三十
      */
-    public static final Integer THIRTY = 30;
+     Integer THIRTY = 30;
 
     /**
      * 五十八
      */
-    public static final Integer FIFTY_EIGHT = 58;
+     Integer FIFTY_EIGHT = 58;
 
     /**
      * 五十九
      */
-    public static final Integer FIFTY_NINE = 59;
+     Integer FIFTY_NINE = 59;
 
     /**
      * 一百
      */
-    public static final Integer ONE_HUNDRED = 100;
+     Integer ONE_HUNDRED = 100;
     /**
      * 一千
      */
-    public static final Integer ONE_THOUSAND = 1000;
+     Integer ONE_THOUSAND = 1000;
 
     /**
      * 负一
      */
-    public static final Integer NEGATIVE = -1;
+     Integer NEGATIVE = -1;
 
+    /**
+     * 十二
+     */
+    Integer  TWELVE = 12;
 
+    /**
+     * 十二
+     */
+    String  TWELVES = "12";
 }

+ 19 - 0
src/main/java/com/kcim/constants/SQLParameter.java

@@ -0,0 +1,19 @@
+package com.kcim.constants;/**
+* @program: performace
+* @description: 
+* @author: Wang.YS
+* @create: 2023-02-27 16:32
+**/
+
+public interface SQLParameter {
+
+    String COMPUTE_DATE = "#compute_date";
+    String HOSP_ID = "#hosp_id";
+    String UNIT_CODE = "#unit_code";
+
+    String HOSP_ID_CODE = "#hosp_id";
+    String COMPUTE_DATE_CODE = "#compute_date";
+
+    String USER_CODE = "#user_code";
+
+}

+ 128 - 0
src/main/java/com/kcim/constants/SplitConstant.java

@@ -0,0 +1,128 @@
+package com.kcim.constants;/**
+* @program: performace
+* @description: 分隔符常量
+* @author: Wang.YS
+* @create: 2023-01-08 21:55
+**/
+
+public interface SplitConstant {
+     String SEPARATOR_SEMICOLON = ";";
+
+    /**
+     * 分割符-右箭头
+     */
+     String RIGHT_ARROWS = "→";
+
+    /**
+     * 分割符-分号
+     */
+     String SEPARATOR_SEMICOLON_C = ";";
+
+    /**
+     * 分割符-冒号
+     */
+     String SEPARATOR_NUMBER = ":";
+
+    /**
+     * 分割符-冒号
+     */
+     String SEPARATOR_NUMBER_C = ":";
+
+    /**
+     *  分割符-下划线
+     */
+     String SEPARATOR_UNDERLINE = "_";
+    /**
+     * 分割符-竖线
+     */
+     String SEPARATOR_VERTICALLINE="\\|";
+
+    /**
+     * 分割符-逗号
+     */
+     String SEPARATOR_COMMA = ",";
+
+    /**
+     * 分割符-逗号
+     */
+     String SEPARATOR_COMMA_C = ",";
+
+
+    /**
+     * 分割符-反斜杠
+     */
+     String SEPARATOR_BACKSLASH = "/";
+
+    /**
+     * 分割符-反斜杠
+     */
+     String SEPARATOR_BACKSLASH_C = "、";
+
+    /**
+     * 分割符-横杠
+     */
+     String SEPARATOR_WHIPPTREE = "-";
+
+
+    /**
+     * 分割符-波浪号
+     */
+     String SEPARATOR_WAVE = "~";
+
+    /**
+     * 分割符-分号
+     */
+     String SEPARATOR_POINT = ".";
+
+    /**
+     * 分割符-分号
+     */
+     String SEPARATOR_POINT_C = "。";
+
+    /**
+     * 分割符-空格
+     */
+     String SEPARATOR_BlankSpace = " ";
+
+
+    /**
+     * 常量A
+     */
+     String SEPARATOR_A = "A";
+    /**
+     * 左括号
+     */
+     String LEFT_PARENTHESES = "(";
+    /**
+     * 左括号
+     */
+     String LEFT_PARENTHESES_C = "(";
+    /**
+     * 右括号
+     */
+     String RIGHT_PARENTHESES = ")";
+
+    /**
+     * 右括号
+     */
+     String RIGHT_PARENTHESES_C = ")";
+    /**
+     * 导管表默认时间
+     */
+     String ZERO_POINT = "0001-01-01 00:00:00";
+
+    /**
+     * 分隔符 - 乘号
+     */
+     String MULTIPLICATION_SIGN = "×";
+
+
+    /**
+     * 分隔符 - 加号
+     */
+
+     String MULTIPLICATION_PLUS = "\\+";
+
+     String PERCENT = "%";
+
+}

+ 49 - 0
src/main/java/com/kcim/constants/SysParameterConstant.java

@@ -0,0 +1,49 @@
+package com.kcim.constants;
+/**
+* @program: performace
+* @description: 参数代码常量
+* @author: Wang.YS
+* @create: 2023-02-14 14:48
+**/
+public interface SysParameterConstant {
+
+    /**
+     * 绩效计算保留小数位数
+     */
+    String DECIMAL_PLACES = "Decimal_Places";
+
+    /**
+     * 绩效显示保留小数位数
+     */
+    String DISPLAY_DECIMAL_PLACES = "Display_Decimal_Places";
+    /**
+     * 管理指标的奖惩系数计算方式 管理指标的奖惩系数计算方式
+     */
+    String MANAGER_COMPUTE_TYPE = "1670618922728169472";
+
+    /**
+     *岗位系数计算方式 月度人员信息的岗位系数计算方式,1取岗位系数,2取岗位系数*科室层级系数
+     */
+	String POSITION_COMPUTE_TYPE = "1672880656289505280";
+    /**
+     * 实际单元绩效奖金的来源类型 1取单元计算奖金 2单元调整奖金 3取单元合理化奖金 4取单元调整奖金+非考核项目奖金
+     */
+
+    String ACTUAL_BONUS = "1677189439937454080";
+
+    /**
+     * 单元岗位薪资项目代码及名称,格式:项目名称|项目代码
+     */
+    String POSITION_CODE = "1676926210569019392";
+
+    String FIRST_ASSIGNMENT_AUDIT_TYPE = "1679053019343364096";
+
+    String MANAGER_RATE = "1689457753615114240";
+
+    String FILTER_MODE = "1704022324250025984";
+    /**
+     * 二次分配审核界面是否可以审核未提交的核算单元,1是 0否
+     */
+    String AUDIT_NO_SUBMIT = "1664510428258115584";
+
+}

+ 10 - 17
src/main/java/com/kcim/controller/DemoController.java

@@ -6,16 +6,13 @@ import com.kcim.util.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @program: center-parent
  * @description:
- * @author: Wang.YS
- * @create: 2023-11-30 20:13
+ * @author: jinhu
+ * @create: 2024-11-30 20:13
  **/
 
 @RestController
@@ -25,36 +22,32 @@ import org.springframework.web.bind.annotation.RestController;
 public class DemoController {
 
     DemoService demoService;
-    @ApiOperation("测试-新增")
+
     public Result testAdd(@RequestBody Test request){
-        demoService.testAdd(request);
+        demoService.add(request);
         return Result.ok();
     }
     @ApiOperation("测试-编辑")
     public Result testEdit(@RequestBody Test request){
-        demoService.testEdit(request);
+        demoService.edit(request);
         return Result.ok();
     }
 
     @ApiOperation("测试-删除")
     public Result testDelete(@RequestParam Integer id){
-        demoService.testDelete(id);
+        demoService.delete(id);
         return Result.ok();
     }
 
     @ApiOperation("测试-查询")
     public Result testQuery(@RequestParam(required = false,value = "name") String name){
-        return Result.ok(demoService.testQuery(name));
+        return Result.ok(demoService.get());
     }
     @ApiOperation("测试-分页查询")
     public Result testPage(@RequestParam(required = false,value = "current",defaultValue = "1")Integer current,
                            @RequestParam(required = false,value = "pageSize",defaultValue = "10")Integer pageSize,
                            @RequestParam(required = false,value = "name") String name){
 
-        return Result.ok(demoService.testPage(current,pageSize,name));
+        return Result.ok(demoService.getPage(current,pageSize));
     }
-
-
-
-
-}
+}

+ 21 - 0
src/main/java/com/kcim/controller/InterfaceController.java

@@ -0,0 +1,21 @@
+package com.kcim.controller;
+
+import com.kcim.service.HisItemDicService;
+import com.kcim.util.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 接口表
+ *
+ * @author jinhu
+ */
+@RestController
+@RequestMapping("/interface")
+public class InterfaceController {
+
+    @Autowired
+    private HisItemDicService hisItemDicService;
+
+}

+ 119 - 0
src/main/java/com/kcim/controller/QualificationController.java

@@ -0,0 +1,119 @@
+package com.kcim.controller;
+
+import com.kcim.controller.request.QualificationHisItemMapRequest;
+import com.kcim.dao.model.Qualification;
+import com.kcim.dao.model.QualificationType;
+import com.kcim.service.QualificationHisItemService;
+import com.kcim.service.QualificationService;
+import com.kcim.util.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 资质字典
+ * @author jinhu
+ */
+@RestController
+@RequestMapping("/qualification")
+public class QualificationController {
+
+    @Autowired
+    private QualificationService qualificationService;
+
+    @Autowired
+    private QualificationHisItemService qualificationHisItemService;
+
+    /**
+     * 查询资质分类列表
+     */
+    @ApiOperation("资质分类字典-查询")
+    @GetMapping("getQualificationTypeList")
+    public Result getQualificationTypeList(@RequestParam(value = "queryCondition",required = false) String queryCondition){
+        return Result.ok(qualificationService.getQualificationTypeList(queryCondition));
+    }
+
+    @ApiOperation("资质分类字典-新增")
+    @PostMapping("addQualificationType")
+    public Result addQualificationType(@RequestBody QualificationType request){
+        qualificationService.addQualificationType(request);
+        return Result.ok();
+    }
+
+    @ApiOperation("资质分类字典-编辑")
+    @PostMapping("editQualificationType")
+    public Result editQualificationType(@RequestBody QualificationType request){
+        qualificationService.editQualificationType(request);
+        return Result.ok();
+    }
+
+    @ApiOperation("资质分类字典-删除")
+    @PostMapping("deleteQualificationType")
+    public Result deleteQualificationType(@RequestBody Integer id){
+        qualificationService.deleteQualificationType(id);
+        return Result.ok();
+    }
+
+    /**
+     * 查询资质列表
+     */
+    @ApiOperation("资质字典-查询")
+    @GetMapping("getQualificationList")
+    public Result getQualificationList(@RequestParam(value = "name", required = false) String name,
+                                       @RequestParam(value = "qualificationTypeCode", required = false) String qualificationTypeCode,
+                                       @RequestParam(value = "operationLevelCode", required = false) String operationLevelCode,
+                                       @RequestParam(value = "techFlag", required = false) Integer techFlag,
+                                       @RequestParam(value = "operationFlag", required = false) Integer operationFlag,
+                                       @RequestParam(value = "enableFlag", required = false) Integer enableFlag,
+                                       @RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
+                                       @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return Result.ok(qualificationService.getQualificationList(name, qualificationTypeCode, operationLevelCode, techFlag, operationFlag, enableFlag, current, pageSize));
+    }
+
+    @ApiOperation("资质字典-新增")
+    @PostMapping("addQualification")
+    public Result addQualification(@RequestBody Qualification request){
+        qualificationService.addQualification(request);
+        return Result.ok();
+    }
+
+    @ApiOperation("资质字典-编辑")
+    @PostMapping("editQualification")
+    public Result editQualification(@RequestBody Qualification request){
+        qualificationService.editQualification(request);
+        return Result.ok();
+    }
+
+    @ApiOperation("资质字典-删除")
+    @PostMapping("deleteQualification")
+    public Result deleteQualification(@RequestBody Integer id){
+        qualificationService.deleteQualification(id);
+        return Result.ok();
+    }
+
+    @ApiOperation("资质关联医嘱项目-查询")
+    @GetMapping("getQualificationHisItemMap")
+    public Result getQualificationHisItemMap(@RequestParam(value = "qualificationId", required = false) Integer qualificationId,
+                                             @RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
+                                             @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize){
+        return Result.ok(qualificationHisItemService.getQualificationHisItemMap(qualificationId,current,pageSize));
+    }
+
+    @ApiOperation("资质关联医嘱项目-保存")
+    @PostMapping("saveQualificationHisItemMap")
+    public Result saveQualificationHisItemMap(@RequestBody QualificationHisItemMapRequest request){
+        qualificationHisItemService.saveQualificationHisItemMap(request);
+        return Result.ok();
+    }
+
+    /**
+     * 查询HIS医嘱项目字典
+     */
+    @ApiOperation("医嘱项目字典-查询")
+    @GetMapping("getHisItemDicList")
+    public Result getHisItemDicList(@RequestParam(value = "queryCondition", required = false) String queryCondition,
+                                    @RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
+                                    @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize){
+        return Result.ok(qualificationHisItemService.getHisItemDicList(queryCondition,current,pageSize));
+    }
+}

+ 14 - 0
src/main/java/com/kcim/controller/request/QualificationHisItemMapRequest.java

@@ -0,0 +1,14 @@
+package com.kcim.controller.request;
+
+import com.kcim.dao.model.QualificationHisItem;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QualificationHisItemMapRequest {
+
+    public Integer qualificationId;
+
+    public List<QualificationHisItem> qualificationHisItemMap;
+}

+ 16 - 0
src/main/java/com/kcim/dao/mapper/HisItemDicMapper.java

@@ -0,0 +1,16 @@
+package com.kcim.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kcim.dao.model.HisItemDic;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 资质字典分类表
+ *
+ * @author jinhu
+ * @date 2024-11-09 19:32:45
+ */
+@Mapper
+public interface HisItemDicMapper extends BaseMapper<HisItemDic> {
+
+}

+ 16 - 0
src/main/java/com/kcim/dao/mapper/QualificationHisItemMapper.java

@@ -0,0 +1,16 @@
+package com.kcim.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kcim.dao.model.QualificationHisItem;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 资质字典分类表
+ *
+ * @author jinhu
+ * @date 2024-11-09 19:32:45
+ */
+@Mapper
+public interface QualificationHisItemMapper extends BaseMapper<QualificationHisItem> {
+
+}

+ 16 - 0
src/main/java/com/kcim/dao/mapper/QualificationMapper.java

@@ -0,0 +1,16 @@
+package com.kcim.dao.mapper;
+
+import com.kcim.dao.model.Qualification;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 资质字典分类表
+ *
+ * @author jinhu
+ * @date 2024-11-09 19:32:45
+ */
+@Mapper
+public interface QualificationMapper extends BaseMapper<Qualification> {
+
+}

+ 16 - 0
src/main/java/com/kcim/dao/mapper/QualificationTypeMapper.java

@@ -0,0 +1,16 @@
+package com.kcim.dao.mapper;
+
+import com.kcim.dao.model.QualificationType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 资质字典分类表
+ * 
+ * @author jinhu
+ * @date 2024-11-09 19:32:45
+ */
+@Mapper
+public interface QualificationTypeMapper extends BaseMapper<QualificationType> {
+	
+}

+ 94 - 0
src/main/java/com/kcim/dao/model/DoctorAttachment.java

@@ -0,0 +1,94 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 
+ * 
+ * @author Wang.YS
+
+ * @date 2024-11-18 22:20:15
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("med_doctor_attachment")
+public class DoctorAttachment implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 
+	 */
+	private Long userId;
+	/**
+	 * 附件名称
+	 */
+	private String fileName;
+	/**
+	 * 附件链接
+	 */
+	private String url;
+	/**
+	 * 附件说明
+	 */
+	private String description;
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+
+}

+ 95 - 0
src/main/java/com/kcim/dao/model/HisItemDic.java

@@ -0,0 +1,95 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * HIS医嘱项目字典表
+ * 
+ * @author Wang.YS
+
+ * @date 2024-11-16 20:43:53
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("interface_his_item_dic")
+public class HisItemDic implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 
+	 */
+	@TableId
+	private Integer id;
+
+	/**
+	 * HIS医嘱类型
+	 */
+	private String hisItemType;
+	/**
+	 * HIS医嘱字典id
+	 */
+	private String hisItemId;
+	/**
+	 * HIS医嘱项目名称
+	 */
+	private String hisItemName;
+	/**
+	 * 备注
+	 */
+	private String memo;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+
+}

+ 108 - 0
src/main/java/com/kcim/dao/model/Qualification.java

@@ -0,0 +1,108 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 资质字典表
+ * 
+ * @author jinhu
+ * &#064;date  2024-11-10 22:19:35
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("com_qualification")
+public class Qualification implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 资质编码
+	 */
+	private String code;
+	/**
+	 * 资质分类编码
+	 */
+	private String qualificationTypeCode;
+	/**
+	 * 资质名称
+	 */
+	private String name;
+	/**
+	 * 授权依据
+	 */
+	private String standard;
+	/**
+	 * 医疗技术标志 0 否 1 是
+	 */
+	private Integer techFlag;
+	/**
+	 * 手术标志 0 否 1 是
+	 */
+	private Integer operationFlag;
+	/**
+	 * 手术级别code
+	 */
+	private String operationLevelCode;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+	/**
+	 * 启用标志 0 停用 1 启用
+	 */
+	private Integer enableFlag;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+
+}

+ 122 - 0
src/main/java/com/kcim/dao/model/QualificationApply.java

@@ -0,0 +1,122 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 
+ * 
+ * @author Wang.YS
+
+ * @date 2024-11-18 22:20:15
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("med_qualification_apply")
+public class QualificationApply implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 资质编码
+	 */
+	private String qualificationCode;
+	/**
+	 * 用户id
+	 */
+	private Long userId;
+	/**
+	 * 授权期限 1长期授权 2临时授权 3单次授权
+	 */
+	private Integer qualificationPeriod;
+	/**
+	 * 申请授权时间
+	 */
+	private Date applyDate;
+	/**
+	 * 申请备注
+	 */
+	private String applyMemo;
+	/**
+	 * 授权开始时间
+	 */
+	private Date beginDate;
+	/**
+	 * 授权结束时间
+	 */
+	private Date endDate;
+	/**
+	 * 科主任审批意见
+	 */
+	private String deptOpinion;
+	/**
+	 * 医务部审批意见
+	 */
+	private String managerOpinion;
+	/**
+	 * 院领导审批意见
+	 */
+	private String masterOpinion;
+	/**
+	 * 申请状态 1草稿 2待科主任审核 3待医务部审核 4待院长审核 5审核通过 6驳回
+	 */
+	private Integer applyStatus;
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+
+}

+ 114 - 0
src/main/java/com/kcim/dao/model/QualificationApplyAdjust.java

@@ -0,0 +1,114 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 
+ * 
+ * @author Wang.YS
+
+ * @date 2024-11-18 22:20:14
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("med_qualification_apply_adjust")
+public class QualificationApplyAdjust implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 资质申请id
+	 */
+	private Integer qualificationApplyId;
+	/**
+	 * 调整人id
+	 */
+	private Long userId;
+	/**
+	 * 调整前授权期限 1长期授权 2临时授权 3单次授权
+	 */
+	private Integer qualificationPeriodBefore;
+	/**
+	 * 调整后授权期限 1长期授权 2临时授权 3单次授权
+	 */
+	private Integer qualificationPeriodAfter;
+	/**
+	 * 调整前开始时间
+	 */
+	private Date beginDateBefore;
+	/**
+	 * 调整后开始时间
+	 */
+	private Date beginDateAfter;
+	/**
+	 * 调整前截止时间
+	 */
+	private Date endDateBefore;
+	/**
+	 * 调整后截止时间
+	 */
+	private Date endDateAfter;
+	/**
+	 * 调整原因
+	 */
+	private String memo;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+
+}

+ 90 - 0
src/main/java/com/kcim/dao/model/QualificationApplyAttachment.java

@@ -0,0 +1,90 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 
+ * 
+ * @author Wang.YS
+
+ * @date 2024-11-18 22:20:14
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("med_qualification_apply_attachment")
+public class QualificationApplyAttachment implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 资质申请id
+	 */
+	private Integer qualificationApplyId;
+	/**
+	 * 附件名称
+	 */
+	private String fileName;
+	/**
+	 * 附件链接
+	 */
+	private String url;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+
+}

+ 96 - 0
src/main/java/com/kcim/dao/model/QualificationHisItem.java

@@ -0,0 +1,96 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author jinhu
+ * &#064;date  2024-11-16 20:43:53
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("med_qualification_his_item")
+public class QualificationHisItem implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 资质id
+	 */
+	private Integer qualificationId;
+	/**
+	 * HIS医嘱项目id
+	 */
+	private Integer hisItemDicId;
+	/**
+	 * HIS医嘱类型
+	 */
+	private String hisItemType;
+	/**
+	 * HIS医嘱项目名称
+	 */
+	private String hisItemName;
+	/**
+	 * 备注
+	 */
+	private String memo;
+
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+
+}

+ 96 - 0
src/main/java/com/kcim/dao/model/QualificationType.java

@@ -0,0 +1,96 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 资质字典分类表
+ * 
+ * @author jinhu
+
+ * @date 2024-11-09 19:32:45
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("com_qualification_type")
+public class QualificationType implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+	/**
+	 * 资质分类编码
+	 */
+	private String code;
+	/**
+	 * 上级资质分类编码
+	 */
+	private String parentCode;
+	/**
+	 * 资质分类名称
+	 */
+	private String name;
+	/**
+	 * 资质分类说明
+	 */
+	private String description;
+	/**
+	 * 顺序号
+	 */
+	private Integer sort;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@JsonIgnore
+	@TableLogic(value = "0",delval = "1")
+	private Integer delFlag;
+}

+ 84 - 0
src/main/java/com/kcim/dao/model/UserInfo.java

@@ -0,0 +1,84 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * VIEW
+ * 
+ * @author Wang.YS
+
+ * @date 2024-11-18 22:20:15
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("med_user_info")
+public class UserInfo implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键id
+	 */
+	@TableId
+	private Long id;
+	/**
+	 * 用户名
+	 */
+	private String name;
+	/**
+	 * 账号,医院中可能是工号
+	 */
+	private String account;
+	/**
+	 * 
+	 */
+	private String gender;
+	/**
+	 * 
+	 */
+	private String deptName;
+	/**
+	 * 
+	 */
+	private String title;
+	/**
+	 * 
+	 */
+	private String jobTitle;
+	/**
+	 * 资格证号
+	 */
+	private String qualificationCertificateNo;
+	/**
+	 * 执业证号
+	 */
+	private String practiceCertificateNo;
+	/**
+	 * 
+	 */
+	private String doctorLevel;
+	/**
+	 * 
+	 */
+	private String practiceCate;
+	/**
+	 * 
+	 */
+	private String major;
+	/**
+	 * 医院id
+	 */
+	@JsonIgnore
+	private Long hospId;
+
+}

+ 31 - 0
src/main/java/com/kcim/dao/repository/HisItemDicRepository.java

@@ -0,0 +1,31 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.constants.NumberConstant;
+import com.kcim.dao.mapper.HisItemDicMapper;
+import com.kcim.dao.model.HisItemDic;
+
+import com.kcim.util.BaseUtil;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class HisItemDicRepository extends ServiceImpl<HisItemDicMapper, HisItemDic> {
+
+    public Page<HisItemDic> getPage(String queryCondition,Integer current, Integer pageSize) {
+
+        LambdaQueryWrapper<HisItemDic> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(HisItemDic::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(HisItemDic::getDelFlag, NumberConstant.ZERO);
+
+        queryWrapper.like(HisItemDic::getHisItemType, queryCondition)
+                    .or()
+                    .like(HisItemDic::getHisItemName, queryCondition)
+                    .or()
+                    .like(HisItemDic::getMemo, queryCondition);
+
+        Page<HisItemDic> page = new Page<>(current,pageSize);
+        return  this.page(page,queryWrapper);
+    }
+}

+ 18 - 0
src/main/java/com/kcim/dao/repository/QualificationHisItemRepository.java

@@ -0,0 +1,18 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.dao.mapper.QualificationHisItemMapper;
+
+import com.kcim.dao.model.QualificationHisItem;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class QualificationHisItemRepository extends ServiceImpl<QualificationHisItemMapper, QualificationHisItem>  {
+
+    public Page<QualificationHisItem> getPage(Integer current, Integer pageSize, LambdaQueryWrapper<QualificationHisItem> queryWrapper) {
+        Page<QualificationHisItem> page = new Page<>(current,pageSize);
+        return  this.page(page,queryWrapper);
+    }
+}

+ 19 - 0
src/main/java/com/kcim/dao/repository/QualificationRepository.java

@@ -0,0 +1,19 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.dao.mapper.QualificationMapper;
+import com.kcim.dao.model.Qualification;
+import com.kcim.dao.model.Test;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.StringUtils;
+
+@Repository
+public class QualificationRepository extends ServiceImpl<QualificationMapper, Qualification> {
+
+    public Page<Qualification> getPage(Integer current, Integer pageSize, LambdaQueryWrapper<Qualification> queryWrapper) {
+        Page<Qualification> page = new Page<>(current,pageSize);
+        return  this.page(page,queryWrapper);
+    }
+}

+ 11 - 0
src/main/java/com/kcim/dao/repository/QualificationTypeRepository.java

@@ -0,0 +1,11 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.dao.mapper.QualificationTypeMapper;
+import com.kcim.dao.model.QualificationType;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class QualificationTypeRepository extends ServiceImpl<QualificationTypeMapper, QualificationType> {
+
+}

+ 11 - 11
src/main/java/com/kcim/dao/repository/TestRepository.java

@@ -19,22 +19,22 @@ import java.util.List;
  **/
 @Repository
 public class TestRepository extends ServiceImpl<TestMapper, Test> {
-    public List<Test> getList(String name) {
-        LambdaQueryWrapper<Test> queryWrapper = new LambdaQueryWrapper<>();
-
-        if(StringUtils.isEmpty(name)){
-            queryWrapper.like(Test::getName,name);
-        }
-       return this.list(queryWrapper);
+    public List<Test> getList() {
+//        LambdaQueryWrapper<Test> queryWrapper = new LambdaQueryWrapper<>();
+//
+//        if(StringUtils.isEmpty(name)){
+//            queryWrapper.like(Test::getName,name);
+//        }
+       return this.list();
     }
 
-    public Page<Test> getPage(Integer current, Integer pageSize, String name) {
+    public Page<Test> getPage(Integer current, Integer pageSize) {
         Page<Test> page = new Page<>(current,pageSize);
         LambdaQueryWrapper<Test> queryWrapper = new LambdaQueryWrapper<>();
 
-        if(StringUtils.isEmpty(name)){
-            queryWrapper.like(Test::getName,name);
-        }
+//        if(StringUtils.isEmpty(name)){
+//            queryWrapper.like(Test::getName,name);
+//        }
       return  this.page(page,queryWrapper);
 
     }

+ 42 - 0
src/main/java/com/kcim/exception/MedicalException.java

@@ -0,0 +1,42 @@
+package com.kcim.exception;
+
+/**
+ * @Author jinhu
+ * @Description
+ * @Date 2024/11/7
+ * @Param
+ * @return
+ **/
+
+public class MedicalException extends RuntimeException{
+    private int code;
+
+    private String message;
+
+    public MedicalException(){
+
+    }
+
+    public MedicalException(int code, String message) {
+        super(message);
+        this.code = code;
+        this.message = message;
+    }
+
+    public MedicalException(String message) {
+        super(message);
+        this.code = 500;
+        this.message = message;
+    }
+
+
+    public Integer getCode() {
+        return code;
+    }
+    @Override
+    public String getMessage() {
+        return message;
+    }
+
+
+}

+ 10 - 8
src/main/java/com/kcim/service/DemoService.java

@@ -1,21 +1,23 @@
 package com.kcim.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.kcim.dao.model.Test;
 
 /**
  * @program: center-parent
  * @description:
- * @author: Wang.YS
+ * @author: jinhu
  * @create: 2023-11-30 20:15
  **/
-public interface DemoService {
-    void testAdd(Test request);
+public interface DemoService extends IService<Test> {
 
-    void testEdit(Test request);
+    Object get();
 
-    void testDelete(Integer request);
+    void add(Test request);
 
-    Object testQuery(String name);
+    void edit(Test request);
 
-    Object testPage(Integer current, Integer pageSize, String name);
-}
+    void delete(Integer request);
+
+    Object getPage(Integer current, Integer pageSize);
+}

+ 17 - 0
src/main/java/com/kcim/service/HisItemDicService.java

@@ -0,0 +1,17 @@
+package com.kcim.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kcim.dao.model.HisItemDic;
+
+/**
+ * @program: center-parent
+ * @description:
+ * @author: jinhu
+ * @create: 2024-11-17
+ **/
+public interface HisItemDicService extends IService<HisItemDic> {
+
+
+
+
+}

+ 14 - 0
src/main/java/com/kcim/service/QualificationHisItemService.java

@@ -0,0 +1,14 @@
+package com.kcim.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kcim.controller.request.QualificationHisItemMapRequest;
+import com.kcim.dao.model.QualificationHisItem;
+
+public interface QualificationHisItemService extends IService<QualificationHisItem> {
+
+    Object getQualificationHisItemMap(Integer qualificationId, Integer current, Integer pageSize);
+
+    void saveQualificationHisItemMap(QualificationHisItemMapRequest qualificationHisItemMapRequest);
+
+    Object getHisItemDicList(String queryCondition, Integer current, Integer pageSize);
+}

+ 44 - 0
src/main/java/com/kcim/service/QualificationService.java

@@ -0,0 +1,44 @@
+package com.kcim.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kcim.controller.request.QualificationHisItemMapRequest;
+import com.kcim.dao.model.QualificationType;
+import com.kcim.dao.model.Qualification;
+
+/**
+ * 资质字典
+ *
+ * @author jinhu
+ * @date 2024-11-09 19:32:45
+ */
+public interface QualificationService extends IService<Qualification> {
+
+    Object getQualificationTypeList(String queryCondition);
+
+    /**
+     * 新增资质类型
+     * @param qualificationType
+     */
+    void addQualificationType(QualificationType qualificationType);
+
+    /**
+     * 编辑资质类型
+     * @param qualificationType
+     */
+    void editQualificationType(QualificationType qualificationType);
+
+    /**
+     * 删除资质类型
+     * @param id
+     * @return
+     */
+    QualificationType deleteQualificationType(Integer id);
+
+    Object getQualificationList(String name, String qualificationTypeCode, String operationLevelCode, Integer techFlag, Integer operationFlag, Integer enableFlag, Integer current, Integer pageSize);
+
+    void addQualification(Qualification qualification);
+
+    void editQualification(Qualification qualification);
+
+    Qualification deleteQualification(Integer id);
+}

+ 15 - 18
src/main/java/com/kcim/service/impl/DemoServiceImpl.java

@@ -3,7 +3,11 @@ package com.kcim.service.impl;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kcim.constants.NumberConstant;
+import com.kcim.dao.mapper.QualificationMapper;
+import com.kcim.dao.mapper.TestMapper;
+import com.kcim.dao.model.Qualification;
 import com.kcim.dao.model.Test;
 import com.kcim.dao.repository.TestRepository;
 import com.kcim.service.DemoService;
@@ -29,15 +33,20 @@ import java.util.Objects;
 @Service("DemoService")
 @Slf4j
 @AllArgsConstructor
-public class DemoServiceImpl implements DemoService {
+public class DemoServiceImpl extends ServiceImpl<TestMapper, Test> implements DemoService {
     TestRepository repository;
 
+    @Override
+    public Object get() {
+        return null;
+    }
+
     /**
      * 测试-新增
      * @param request 入参
      */
     @Override
-    public void testAdd(Test request) {
+    public void add(Test request) {
         request.setCreateUser(String.valueOf(UserContext.getCurrentUser().getId()));
         request.setCreateTime(new Date());
         repository.save(request);
@@ -48,7 +57,7 @@ public class DemoServiceImpl implements DemoService {
      * @param request 入参
      */
     @Override
-    public void testEdit(Test request) {
+    public void edit(Test request) {
         Integer id = request.getId();
         Test byId = repository.getById(id);
         if(Objects.nonNull(byId)){
@@ -64,7 +73,7 @@ public class DemoServiceImpl implements DemoService {
      * @param id 主键
      */
     @Override
-    public void testDelete(Integer id) {
+    public void delete(Integer id) {
         Test byId = repository.getById(id);
         if(Objects.nonNull(byId)){
             byId.setUpdateTime(new Date());
@@ -77,30 +86,18 @@ public class DemoServiceImpl implements DemoService {
 
     }
 
-    /**
-     * 测试-查询
-     * @param name 名称过滤
-     * @return 符合条件的数据
-     */
-    @Override
-    public Object testQuery(String name) {
-       return repository.getList(name);
-    }
-
     /**
      * 测试分页查询
      * @param current 当前页
      * @param pageSize 页容量
-     * @param name 过滤名称
      * @return 分页列表
      */
     @Override
-    public Object testPage(Integer current, Integer pageSize, String name) {
-        Page<Test> page = repository.getPage(current, pageSize, name);
+    public Object getPage(Integer current, Integer pageSize) {
+        Page<Test> page = repository.getPage(current, pageSize);
         if(CollectionUtils.isEmpty(page.getRecords())){
            return new PageUtils(new ArrayList<>(), NumberConstant.ZERO,pageSize,current);
         }
         return new PageUtils(page.getRecords(), Math.toIntExact(page.getTotal()),pageSize,current);
-
     }
 }

+ 28 - 0
src/main/java/com/kcim/service/impl/HisItemDicServiceImpl.java

@@ -0,0 +1,28 @@
+package com.kcim.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.constants.NumberConstant;
+import com.kcim.dao.mapper.HisItemDicMapper;
+import com.kcim.dao.model.HisItemDic;
+import com.kcim.dao.repository.HisItemDicRepository;
+import com.kcim.service.HisItemDicService;
+import com.kcim.util.BaseUtil;
+import com.kcim.util.PageUtils;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+
+@Service("HisItemDicService")
+@AllArgsConstructor
+@Slf4j
+public class HisItemDicServiceImpl extends ServiceImpl<HisItemDicMapper, HisItemDic> implements HisItemDicService {
+
+    HisItemDicRepository hisItemDicRepository;
+
+
+}

+ 85 - 0
src/main/java/com/kcim/service/impl/QualificationHisItemServiceImpl.java

@@ -0,0 +1,85 @@
+package com.kcim.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.constants.NumberConstant;
+import com.kcim.controller.request.QualificationHisItemMapRequest;
+import com.kcim.dao.mapper.QualificationHisItemMapper;
+import com.kcim.dao.model.HisItemDic;
+import com.kcim.dao.model.QualificationHisItem;
+import com.kcim.dao.repository.HisItemDicRepository;
+import com.kcim.dao.repository.QualificationHisItemRepository;
+import com.kcim.service.QualificationHisItemService;
+import com.kcim.util.BaseUtil;
+import com.kcim.util.PageUtils;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service("QualificationHisItemService")
+@AllArgsConstructor
+@Slf4j
+public class QualificationHisItemServiceImpl extends ServiceImpl<QualificationHisItemMapper, QualificationHisItem> implements QualificationHisItemService {
+
+    QualificationHisItemRepository qualificationHisItemRepository;
+    HisItemDicRepository hisItemDicRepository;
+
+    @Override
+    public Object getQualificationHisItemMap(Integer qualificationId, Integer current, Integer pageSize) {
+
+        LambdaQueryWrapper<QualificationHisItem> queryWrapper = new LambdaQueryWrapper<>();
+
+        queryWrapper.eq(QualificationHisItem::getQualificationId, qualificationId);
+        queryWrapper.eq(QualificationHisItem::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(QualificationHisItem::getDelFlag, NumberConstant.ZERO);
+
+        Page<QualificationHisItem> page = qualificationHisItemRepository.getPage(current,pageSize,queryWrapper);
+        if(CollectionUtils.isEmpty(page.getRecords())){
+            return new PageUtils(new ArrayList<>(), NumberConstant.ZERO,pageSize,current);
+        }
+        return new PageUtils(page.getRecords(), Math.toIntExact(page.getTotal()),pageSize,current);
+    }
+
+    @Override
+    public void saveQualificationHisItemMap(QualificationHisItemMapRequest request) {
+
+        LambdaQueryWrapper<QualificationHisItem> deleteWrapper = new LambdaQueryWrapper<>();
+        deleteWrapper.eq(QualificationHisItem::getQualificationId,request.getQualificationId());
+        deleteWrapper.eq(QualificationHisItem::getHospId, BaseUtil.getCurrentLoginHospId());
+        deleteWrapper.eq(QualificationHisItem::getDelFlag, NumberConstant.ZERO);
+
+        //把原来已对应的全部删除
+        List<QualificationHisItem> list = this.list(deleteWrapper);
+        if(!CollectionUtils.isEmpty(list)){
+            for(QualificationHisItem map:list){
+                map.setDeleteTime(new Date());
+                map.setDeleteUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+            }
+            this.updateBatchById(list);
+            List<Integer> collect = list.stream().map(QualificationHisItem::getId).collect(Collectors.toList());
+            this.removeByIds(collect);
+        }
+
+        //保存入参中所有的对应关系
+        for(QualificationHisItem map : request.getQualificationHisItemMap()){
+            map.setCreateUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+            map.setCreateTime(new Date());
+            map.setHospId(BaseUtil.getCurrentLoginHospId());
+        }
+        this.saveBatch(request.getQualificationHisItemMap());
+    }
+
+    @Override
+    public Object getHisItemDicList(String queryCondition, Integer current, Integer pageSize) {
+        Page<HisItemDic> page = hisItemDicRepository.getPage(queryCondition,current,pageSize);
+        if(CollectionUtils.isEmpty(page.getRecords())){
+            return new PageUtils(new ArrayList<>(), NumberConstant.ZERO,pageSize,current);
+        }
+        return new PageUtils(page.getRecords(), Math.toIntExact(page.getTotal()),pageSize,current);
+    }
+}

+ 233 - 0
src/main/java/com/kcim/service/impl/QualificationServiceImpl.java

@@ -0,0 +1,233 @@
+package com.kcim.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kcim.constants.NumberConstant;
+import com.kcim.controller.request.QualificationHisItemMapRequest;
+import com.kcim.dao.model.HisItemDic;
+import com.kcim.dao.repository.HisItemDicRepository;
+import com.kcim.dao.repository.QualificationRepository;
+import com.kcim.dao.repository.QualificationTypeRepository;
+import com.kcim.exception.MedicalException;
+import com.kcim.util.BaseUtil;
+import com.kcim.util.PageUtils;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.kcim.dao.mapper.QualificationMapper;
+import com.kcim.dao.model.QualificationType;
+import com.kcim.dao.model.Qualification;
+import com.kcim.service.QualificationService;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.*;
+
+@Service("QualificationService")
+@AllArgsConstructor
+@Slf4j
+public class QualificationServiceImpl extends ServiceImpl<QualificationMapper, Qualification> implements QualificationService {
+
+    QualificationTypeRepository qualificationTypeRepository;
+    QualificationRepository qualificationRepository;
+    HisItemDicRepository hisItemDicRepository;
+
+    /**
+     * 查询资质分类列表
+     */
+    @Override
+    public List<QualificationType> getQualificationTypeList(String queryCondition) {
+        LambdaQueryWrapper<QualificationType> queryWrapper = new LambdaQueryWrapper<>();
+
+        //资质编码或名称作为查询条件
+        if(!StringUtils.isEmpty(queryCondition)){
+            queryWrapper.like(QualificationType::getCode, queryCondition)
+                        .or()
+                        .like(QualificationType::getName, queryCondition);
+        }
+
+        queryWrapper.eq(QualificationType::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(QualificationType::getDelFlag, NumberConstant.ZERO);
+        queryWrapper.orderByAsc(QualificationType::getSort);
+        return qualificationTypeRepository.list(queryWrapper);
+    }
+
+    /**
+     * 新增资质类型
+     */
+    @Override
+    public void addQualificationType(QualificationType request) {
+        checkQualificationType(request);
+        request.setCreateUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+        request.setCreateTime(new Date());
+        request.setHospId(BaseUtil.getCurrentLoginHospId());
+        qualificationTypeRepository.save(request);
+    }
+
+    /**
+     * 删除资质类型
+     */
+    @Override
+    public QualificationType deleteQualificationType(Integer id) {
+        QualificationType qualificationType = qualificationTypeRepository.getById(id);
+        qualificationType.setDeleteUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+        qualificationType.setDeleteTime(new Date());
+        qualificationTypeRepository.updateById(qualificationType);
+        qualificationTypeRepository.removeById(id);
+        return qualificationType;
+    }
+
+    /**
+     * 编辑资质类型
+     */
+    @Override
+    public void editQualificationType(QualificationType request) {
+        Integer id = request.getId();
+        QualificationType qualificationType = deleteQualificationType(id);
+        request.setHospId(BaseUtil.getCurrentLoginHospId());
+        request.setUpdateUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+        request.setUpdateTime(new Date());
+        request.setCreateUser(qualificationType.getCreateUser());
+        request.setCreateTime(qualificationType.getCreateTime());
+        qualificationTypeRepository.save(request);
+    }
+
+    private void checkQualificationType(QualificationType request) {
+        LambdaQueryWrapper<QualificationType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(QualificationType::getHospId,BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(QualificationType::getCode,request.getCode());
+        List<QualificationType> list = qualificationTypeRepository.list(queryWrapper);
+        if(!CollectionUtils.isEmpty(list)){
+            throw new MedicalException("资质类型代码【"+request.getCode()+"】已存在,请调整后再保存");
+        }
+    }
+
+    /**
+     * 查询资质列表
+     */
+    @Override
+    public Object getQualificationList(String name, String qualificationTypeCode, String operationLevelCode, Integer techFlag, Integer operationFlag, Integer enableFlag, Integer current, Integer pageSize) {
+        LambdaQueryWrapper<Qualification> queryWrapper = new LambdaQueryWrapper<>();
+
+        //资质名称过滤
+        if(!StringUtils.isEmpty(name)){
+            queryWrapper.like(Qualification::getName, name);
+        }
+
+        //资质分类过滤
+        if(!qualificationTypeCode.equals("0")) //不是”全部“节点
+        {
+            //资质分类字典
+            List<QualificationType> typeList = getQualificationTypeList("");
+            //资质分类字典的下级所有递归根节点的code
+            List<String> list = getQualificationTypeCodeRecursion(typeList,qualificationTypeCode);
+            queryWrapper.in(Qualification::getQualificationTypeCode, list);
+        }
+
+        //手术级别过滤
+        if(!StringUtils.isEmpty(operationLevelCode)){
+            queryWrapper.eq(Qualification::getOperationLevelCode, operationLevelCode);
+        }
+
+        //医疗技术过滤
+        if(techFlag == 1){
+            queryWrapper.eq(Qualification::getTechFlag, techFlag);
+        }
+
+        //手术过滤
+        if(operationFlag == 1){
+            queryWrapper.eq(Qualification::getOperationFlag, operationFlag);
+        }
+
+        //启用过滤
+        if(enableFlag == 1){
+            queryWrapper.eq(Qualification::getEnableFlag, enableFlag);
+        }
+
+        queryWrapper.eq(Qualification::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(Qualification::getDelFlag, NumberConstant.ZERO);
+
+        Page<Qualification> page = qualificationRepository.getPage(current,pageSize,queryWrapper);
+        if(CollectionUtils.isEmpty(page.getRecords())){
+            return new PageUtils(new ArrayList<>(), NumberConstant.ZERO,pageSize,current);
+        }
+        return new PageUtils(page.getRecords(), Math.toIntExact(page.getTotal()),pageSize,current);
+    }
+
+    @Override
+    public void addQualification(Qualification request) {
+        checkQualification(request);
+        request.setCreateUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+        request.setCreateTime(new Date());
+        request.setHospId(BaseUtil.getCurrentLoginHospId());
+        qualificationRepository.save(request);
+    }
+
+    @Override
+    public void editQualification(Qualification request) {
+        Integer id = request.getId();
+        Qualification qualification = deleteQualification(id);
+        request.setHospId(BaseUtil.getCurrentLoginHospId());
+        request.setUpdateUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+        request.setUpdateTime(new Date());
+        request.setCreateUser(qualification.getCreateUser());
+        request.setCreateTime(qualification.getCreateTime());
+        qualificationRepository.save(request);
+    }
+
+    @Override
+    public Qualification deleteQualification(Integer id) {
+        Qualification qualification = qualificationRepository.getById(id);
+        qualification.setDeleteUser(String.valueOf(BaseUtil.getCurrentUser().getId()));
+        qualification.setDeleteTime(new Date());
+        qualificationRepository.updateById(qualification);
+        qualificationRepository.removeById(id);
+        return qualification;
+    }
+
+    private void checkQualification(Qualification request) {
+        LambdaQueryWrapper<Qualification> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Qualification::getHospId,BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(Qualification::getCode,request.getCode());
+        List<Qualification> list = qualificationRepository.list(queryWrapper);
+        if(!CollectionUtils.isEmpty(list)){
+            throw new MedicalException("资质代码【"+request.getCode()+"】已存在,请调整后再保存");
+        }
+    }
+
+    /**
+     * 递归获取的资质分类编码的下级编码列表
+     */
+    private List<String> getQualificationTypeCodeRecursion(List<QualificationType> typeList, String qualificationCode){
+
+        List<String> list = new ArrayList<>();
+
+        //父节点为传入节点的节点数
+        long count = typeList.stream().filter(t -> t.getParentCode().equals(qualificationCode)).count();
+
+        //传入的是根节点
+        if(count == 0){
+            list.add(qualificationCode);
+            return list;
+        }
+
+        //传入的不是根节点
+        for(QualificationType type : typeList){
+            //传入节点的直接下级
+            if(type.getParentCode().equals(qualificationCode)){
+                long childCount = typeList.stream().filter(t -> t.getParentCode().equals(type.getCode())).count();
+                //是末级节点
+                if(childCount == 0 && !list.contains(type.getCode())){
+                    list.add(type.getCode());
+                }
+                //递归
+                else{
+                    list.addAll(getQualificationTypeCodeRecursion(typeList,type.getCode()));
+                }
+            }
+        }
+        return list;
+    }
+}

+ 33 - 0
src/main/java/com/kcim/util/BaseUtil.java

@@ -0,0 +1,33 @@
+package com.kcim.util;
+
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.kcim.vo.SessionUserVO;
+
+import static com.kcim.constants.CommonConstant.USER_PREFIX;
+
+/**
+ * 通用工具类
+ * <p>
+ * Sa-token单独将数据放入redis中,实际是从通过当前线程登录用户的key去redis中获取
+ * 注销时候或重新登录框架会自动移除相关数据
+
+ **/
+public class BaseUtil {
+
+    /**
+     * 获取当前用户
+     */
+    public static SessionUserVO getCurrentUser() {
+        SessionUserVO user = (SessionUserVO) StpUtil.getSession().get(USER_PREFIX + StpUtil.getLoginId());
+        return user;
+    }
+
+    /**
+     * 获取当前用户所登录的医院id
+     */
+    public static Long getCurrentLoginHospId() {
+        SessionUserVO user = (SessionUserVO) StpUtil.getSession().get(USER_PREFIX + StpUtil.getLoginId());
+        return user.getHospId();
+    }
+}

+ 128 - 0
src/main/resources/application-dev.yml

@@ -0,0 +1,128 @@
+server:
+  port: 8901
+  servlet:
+    context-path: /medical
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/*.xml
+  type-aliases-package: com.kcim.dao.model
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  global-config:
+    db-config:
+      id-type: auto
+      logic-not-delete-value: 0
+      logic-delete-value: 1
+    banner: false
+    enable-sql-runner: true
+
+  #mysql 配置
+spring:
+  datasource:
+    type: com.zaxxer.hikari.HikariDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://120.27.235.181:3306/medical?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+    #    url: jdbc:mysql://118.31.245.65:3306/imed_pfm?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+    username: root
+    password: xywl2021!
+    #    password: zjxyxywl2021
+    hikari:
+      maximum-pool-size: 15
+      minimum-idle: 5
+      idle-timeout: 300000
+      connection-timeout: 300000
+      max-lifetime: 180000
+      auto-commit: true
+      connection-test-query: SELECT 1
+  application:
+        name: kcim-medical
+  cloud:
+    nacos: #注册nacos
+      discovery:
+        service: ${spring.application.name}
+        server-addr: 120.27.235.181:8848
+        #        namespace: 38b4fbe9-4a20-48c3-a8bf-ebf069fb26e8
+        #        group: KCIM
+        namespace: 060cc0fe-193f-4a94-bbca-6d48a4f95ac2
+        group: dev
+    sentinel:
+      enabled: true
+      transport:
+        port: 8719
+        dashboard: 120.27.235.181:8080
+
+  #redis
+  redis:
+    database: 1
+    port: 6379
+    host: 120.27.235.181
+    #    host: 118.31.245.65
+    password: xywl2021!
+    #    password: xywl2021#
+    #    jedis:
+    # 使用lettuce 连接池
+    lettuce:
+      pool:
+        max-active: 30
+        max-idle: 10
+        max-wait: -1
+        min-idle: 0
+  cache:
+    type: redis
+  servlet:
+    multipart:
+      #最大限制10MB文件
+      max-file-size: 10MB
+      ##json处理
+  jackson:
+    date-format: yyyy-MM-dd hh:mm:ss
+    time-zone: GMT+8
+    default-property-inclusion: non_null
+    #日志
+    # log config
+
+
+logging:
+
+  #  config: classpath:log4j2.xml
+  level:
+    io.swagger.models.parameters.AbstractSerializableParameter: error
+    org.springframework.web: error
+    org.hibernate.SQL: debug
+    org.hibernate.engine.QueryParameters: debug
+    org.hibernate.engine.query.HQLQueryPlan: debug
+    org.hibernate.type.descriptor.sql.BasicBinder: trace
+
+sa-token:
+  jwt-secret-key: kcim-oauth
+#  kcim-oauth
+  ## 前后端分离不设置会有奇怪的问题
+  ## 默认采用的获取token 是从请求头默认名称为Sa-token的地方获取,如果没有会从Cookie中获取,会造成奇怪的问题!!
+  token-name: token
+  is-read-cookie: false
+  is-read-body: false
+  ##token 有效期 默认30天,到期强制登录
+  timeout: 2592000
+  ## 30分钟无操作就失效 不适用
+  activity-timeout: 1800
+  # 配置 Sa-Token 单独使用的 Redis 连接
+  alone-redis:
+    # Redis数据库索引(默认为0) 先固定2,后续有钱开另外的单独的db
+    database: 1
+    # Redis服务器地址
+    host: 120.27.235.181
+    # Redis服务器连接端口
+    port: 6379
+    # Redis服务器连接密码(默认为空)
+    password: xywl2021!
+    # 连接超时时间
+    timeout: 10s
+  #    host: 118.31.245.65
+  #    password: xywl2021#
+
+  is-log: false
+minio:
+  url: http://47.97.198.219:9000
+  port: 9000
+  access-key: UOxpxcO0loqZqKzH
+  secret-key: KfHhDLRWL0PtaWW0JTXqz6Gn685P2EWY
+  bucket-name: kcim-medical

+ 2 - 122
src/main/resources/application.yml

@@ -1,123 +1,3 @@
-server:
-  #端口号
-  port: 8701
-  servlet:
-    #网关配置的路由 按项目自行调整
-    context-path: /medical
 spring:
-  datasource:
-    type: com.zaxxer.hikari.HikariDataSource
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://120.27.235.181:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
-    username: root
-    password: xywl2021!
-    hikari:
-      maximum-pool-size: 15
-      minimum-idle: 5
-      idle-timeout: 300000
-      connection-timeout: 300000
-      max-lifetime: 180000
-      auto-commit: true
-      connection-test-query: SELECT 1
-  application:
-    name: kcim-medical
-  cloud:
-    nacos: #注册nacos
-      discovery:
-        service: ${spring.application.name}
-        server-addr: 120.27.235.181:8848
-#        namespace: 38b4fbe9-4a20-48c3-a8bf-ebf069fb26e8
-#        group: KCIM
-        namespace: 060cc0fe-193f-4a94-bbca-6d48a4f95ac2
-        group: dev
-    sentinel:
-      enabled: true
-      transport:
-        port: 8719
-        dashboard: 120.27.235.181:8080
-  jackson:
-    date-format: yyyy-MM-dd hh:mm:ss
-    time-zone: GMT+8
-  #    default-property-inclusion: non_null
-  #redis
-  redis:
-    port: 6379
-    host: 120.27.235.181
-    password: xywl2021!
-    jedis:
-      pool:
-        max-active: 30
-        max-idle: 10
-        max-wait: -1
-        min-idle: 0
-    database: 1
-mybatis-plus:
-  mapper-locations: classpath*:/mapper/*.xml
-  type-aliases-package: com.kcim.model
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-  global-config:
-    db-config:
-      id-type: auto
-      logic-not-delete-value: 0
-      logic-delete-value: UNIX_TIMESTAMP(NOW()) * 1000
-    banner: false
-    enable-sql-runner: true
-
-#日志
-# log config
-logging:
-
-  #  config: classpath:log4j2.xml
-  level:
-    io.swagger.models.parameters.AbstractSerializableParameter: error
-    org.springframework.web: error
-    org.hibernate.SQL: debug
-    org.hibernate.engine.QueryParameters: debug
-    org.hibernate.engine.query.HQLQueryPlan: debug
-    org.hibernate.type.descriptor.sql.BasicBinder: trace
-####本地文件相关配置
-#file:
-#  filelocal: file:/image/
-#  #linux
-#  #  serverPath: /image
-#  #windows
-#  serverPath: /file
-#  #local
-#  #  serverUrl: http://112.124.59.133:8082//
-#  #linux
-#  serverUrl: http://47.96.149.190:8082/
-sa-token:
-  jwt-secret-key: kcim-oauth
-  #  kcim-oauth
-  ## 前后端分离不设置会有奇怪的问题
-  ## 默认采用的获取token 是从请求头默认名称为Sa-token的地方获取,如果没有会从Cookie中获取,会造成奇怪的问题!!
-  token-name: token
-  is-read-cookie: false
-  is-read-body: false
-  ##token 有效期 默认30天,到期强制登录
-  timeout: 2592000
-  ## 30分钟无操作就失效 不适用
-  activity-timeout: 1800
-  # 配置 Sa-Token 单独使用的 Redis 连接
-  alone-redis:
-    # Redis数据库索引(默认为0) 先固定2,后续有钱开另外的单独的db
-    database: 1
-    # Redis服务器地址
-    host: 120.27.235.181
-    # Redis服务器连接端口
-    port: 6379
-    # Redis服务器连接密码(默认为空)
-    password: xywl2021!
-    # 连接超时时间
-    timeout: 10s
-  #    host: 118.31.245.65
-  #    password: xywl2021#
-
-  is-log: false
-minio:
-  url: http://47.97.198.219:9000
-  port: 9000
-  access-key: UOxpxcO0loqZqKzH
-  secret-key: KfHhDLRWL0PtaWW0JTXqz6Gn685P2EWY
-  bucket-name: kcim-medical
+  profiles:
+    active: dev