3 Revīzijas cbe2ce7a06 ... 48469abbaf

Autors SHA1 Ziņojums Datums
  jinhu 48469abbaf 资质分类字典管理 9 mēneši atpakaļ
  jinhu 1451995874 资质分类字典管理 9 mēneši atpakaļ
  jinhu 068a2efc91 资质分类字典管理 9 mēneši atpakaļ
43 mainītis faili ar 2380 papildinājumiem un 202 dzēšanām
  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