Jelajahi Sumber

资质分类字典管理
资质字典管理

jinhu 9 bulan lalu
induk
melakukan
1451995874
28 mengubah file dengan 1559 tambahan dan 0 penghapusan
  1. 65 0
      src/main/java/com/kcim/constants/CommonConstant.java
  2. 110 0
      src/main/java/com/kcim/constants/DictConstant.java
  3. 49 0
      src/main/java/com/kcim/constants/DirectoryConstant.java
  4. 8 0
      src/main/java/com/kcim/constants/KpiProcessConstant.java
  5. 19 0
      src/main/java/com/kcim/constants/SQLParameter.java
  6. 128 0
      src/main/java/com/kcim/constants/SplitConstant.java
  7. 49 0
      src/main/java/com/kcim/constants/SysParameterConstant.java
  8. 31 0
      src/main/java/com/kcim/controller/InterfaceController.java
  9. 109 0
      src/main/java/com/kcim/controller/QualificationController.java
  10. 14 0
      src/main/java/com/kcim/controller/request/QualificationHisItemMapRequest.java
  11. 16 0
      src/main/java/com/kcim/dao/mapper/HisItemDicMapper.java
  12. 16 0
      src/main/java/com/kcim/dao/mapper/QualificationHisItemMapper.java
  13. 16 0
      src/main/java/com/kcim/dao/mapper/QualificationMapper.java
  14. 16 0
      src/main/java/com/kcim/dao/mapper/QualificationTypeMapper.java
  15. 108 0
      src/main/java/com/kcim/dao/model/Qualification.java
  16. 96 0
      src/main/java/com/kcim/dao/model/QualificationType.java
  17. 18 0
      src/main/java/com/kcim/dao/repository/InterfaceHisItemDicRepository.java
  18. 18 0
      src/main/java/com/kcim/dao/repository/MedQualificationHisItemRepository.java
  19. 19 0
      src/main/java/com/kcim/dao/repository/QualificationRepository.java
  20. 42 0
      src/main/java/com/kcim/exception/MedicalException.java
  21. 17 0
      src/main/java/com/kcim/service/HisItemDicService.java
  22. 12 0
      src/main/java/com/kcim/service/QualificationHisItemService.java
  23. 44 0
      src/main/java/com/kcim/service/QualificationService.java
  24. 50 0
      src/main/java/com/kcim/service/impl/HisItemDicServiceImpl.java
  25. 73 0
      src/main/java/com/kcim/service/impl/QualificationHisItemServiceImpl.java
  26. 255 0
      src/main/java/com/kcim/service/impl/QualificationServiceImpl.java
  27. 33 0
      src/main/java/com/kcim/util/BaseUtil.java
  28. 128 0
      src/main/resources/application-dev.yml

+ 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 {
+}

+ 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";
+
+}

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

@@ -0,0 +1,31 @@
+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 interfaceHisItemDicService;
+
+    /**
+     * 查询HIS医嘱项目字典
+     */
+    @ApiOperation("医嘱项目字典-查询")
+    @GetMapping("getHisItemDicList")
+    public Result getHisItemDicList(@RequestParam(value = "queryCondition", required = false) String queryCondition,
+                                    @RequestParam(value = "current", required = false) Integer current,
+                                    @RequestParam(value = "pageSize", required = false) Integer pageSize){
+        return Result.ok(interfaceHisItemDicService.getHisItemDicList(queryCondition,current,pageSize));
+    }
+}

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

@@ -0,0 +1,109 @@
+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) Integer current,
+                                       @RequestParam(value = "pageSize", required = false) 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) Integer current,
+                                          @RequestParam(value = "pageSize", required = false) 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();
+    }
+}

+ 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> {
+	
+}

+ 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;
+
+}

+ 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;
+}

+ 18 - 0
src/main/java/com/kcim/dao/repository/InterfaceHisItemDicRepository.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.HisItemDicMapper;
+import com.kcim.dao.model.HisItemDic;
+
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class InterfaceHisItemDicRepository extends ServiceImpl<HisItemDicMapper, HisItemDic>  {
+
+    public Page<HisItemDic> getPage(Integer current, Integer pageSize, LambdaQueryWrapper<HisItemDic> queryWrapper) {
+        Page<HisItemDic> page = new Page<>(current,pageSize);
+        return  this.page(page,queryWrapper);
+    }
+}

+ 18 - 0
src/main/java/com/kcim/dao/repository/MedQualificationHisItemRepository.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 MedQualificationHisItemRepository 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);
+    }
+}

+ 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;
+    }
+
+
+}

+ 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> {
+
+    Object getHisItemDicList(String queryCondition, Integer current, Integer pageSize);
+
+
+}

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

@@ -0,0 +1,12 @@
+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);
+}

+ 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);
+}

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

@@ -0,0 +1,50 @@
+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.InterfaceHisItemDicRepository;
+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 {
+
+    InterfaceHisItemDicRepository interfaceHisItemDicRepository;
+
+    @Override
+    public Object getHisItemDicList(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);
+
+        return this.getPage(queryWrapper, current, pageSize);
+    }
+
+    public Object getPage(LambdaQueryWrapper<HisItemDic> queryWrapper, Integer current, Integer pageSize)
+    {
+        Page<HisItemDic> page = interfaceHisItemDicRepository.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);
+    }
+}

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

@@ -0,0 +1,73 @@
+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.QualificationHisItem;
+import com.kcim.dao.repository.MedQualificationHisItemRepository;
+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 {
+
+    MedQualificationHisItemRepository qualificationHisItemRepository;
+
+    @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());
+    }
+}

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

@@ -0,0 +1,255 @@
+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.repository.InterfaceHisItemDicRepository;
+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;
+    InterfaceHisItemDicRepository interfaceHisItemDicRepository;
+
+
+
+    /**
+     * 查询资质分类列表
+     */
+    @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;
+    }
+
+    public Object getQualificationHisItemMap(Integer qualificationId, Integer current, Integer pageSize) {
+
+//        LambdaQueryWrapper<MedQualificationHisItem> queryWrapper = new LambdaQueryWrapper<>();
+//
+//        queryWrapper.eq(MedQualificationHisItem::getQualificationId, qualificationId);
+//        queryWrapper.eq(MedQualificationHisItem::getHospId, BaseUtil.getCurrentLoginHospId());
+//        queryWrapper.eq(MedQualificationHisItem::getDelFlag, NumberConstant.ZERO);
+//
+//        Page<MedQualificationHisItem> 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);
+        return null;
+    }
+
+    public void saveQualificationHisItemMap(QualificationHisItemMapRequest request) {
+
+
+    }
+}

+ 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