diff --git a/src/main/java/com/glxp/api/controller/thrsys/ThrConsumeMaterialCategoryController.java b/src/main/java/com/glxp/api/controller/thrsys/ThrConsumeMaterialCategoryController.java index 8f5248c49..9dbc9d8c6 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThrConsumeMaterialCategoryController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrConsumeMaterialCategoryController.java @@ -34,18 +34,21 @@ public class ThrConsumeMaterialCategoryController { */ @GetMapping(value = "/deptCategoryTreeselect/{deptCode}") public BaseResponse deptCategoryTreeselect(@PathVariable("deptCode") Long deptCode) { - List list = thrConsumeMaterialCategoryService.selectCategoryList(); -// List categorys = new ArrayList<>(list.size()); -// list.forEach( item ->{ -// ThrConsumeMaterialCategoryTree tree = new ThrConsumeMaterialCategoryTree(); -// BeanUtils.copyProperties(item,tree); -// categorys.add(tree); -// }); - Map ajax = new HashMap<>(); ajax.put("checkedKeys", thrConsumeMaterialCategoryService.selectCategoryListByDeptCode(deptCode)); ajax.put("categorys", thrConsumeMaterialCategoryService.buildCategoryTreeSelect(list)); return ResultVOUtils.success(ajax); } + + /** + * 加载对应部门医保耗材分类列表树 + * + * @param deptCode 部门code + */ + @GetMapping(value = "/deptCategoryList/{deptCode}") + public BaseResponse selectListByDeptCode(@PathVariable("deptCode") Long deptCode) { + List list = thrConsumeMaterialCategoryService.selectListByDeptCode(deptCode); + return ResultVOUtils.success(list); + } } diff --git a/src/main/java/com/glxp/api/dao/thrsys/DeptMaterialCategoryMapper.java b/src/main/java/com/glxp/api/dao/thrsys/DeptMaterialCategoryMapper.java index 91228258e..43583281d 100644 --- a/src/main/java/com/glxp/api/dao/thrsys/DeptMaterialCategoryMapper.java +++ b/src/main/java/com/glxp/api/dao/thrsys/DeptMaterialCategoryMapper.java @@ -2,6 +2,7 @@ package com.glxp.api.dao.thrsys; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.thrsys.DeptMaterialCategory; +import com.glxp.api.entity.thrsys.ThrConsumeMaterialCategory; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -9,4 +10,5 @@ import java.util.List; @Mapper public interface DeptMaterialCategoryMapper extends BaseMapper { List selectCategoryListByDeptCode(Long deptCode); + List selectListByDeptCode(Long deptCode); } diff --git a/src/main/java/com/glxp/api/entity/thrsys/ThrProductsEntity.java b/src/main/java/com/glxp/api/entity/thrsys/ThrProductsEntity.java index 3c5839682..21c7e382d 100644 --- a/src/main/java/com/glxp/api/entity/thrsys/ThrProductsEntity.java +++ b/src/main/java/com/glxp/api/entity/thrsys/ThrProductsEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -210,5 +211,31 @@ public class ThrProductsEntity { @TableField("invCode") private String invCode; + /** + * 一级分类名称(学科,品名) + */ + @TableField(value = "catalogname1") + @ApiModelProperty(value="一级分类名称(学科,品名)") + private String catalogname1; + + /** + * 二级分类名称(用途、品目) + */ + @TableField(value = "catalogname2") + @ApiModelProperty(value="二级分类名称(用途、品目)") + private String catalogname2; + /** + * 三级分类名称(部位、功能、品种) + */ + @TableField(value = "catalogname3") + @ApiModelProperty(value="三级分类名称(部位、功能、品种)") + private String catalogname3; + + /** + * 耗材材质 + */ + @TableField(value = "matrial") + @ApiModelProperty(value="耗材材质") + private String matrial; } diff --git a/src/main/java/com/glxp/api/service/thrsys/ThrConsumeMaterialCategoryService.java b/src/main/java/com/glxp/api/service/thrsys/ThrConsumeMaterialCategoryService.java index f30fe6856..9475b5ef3 100644 --- a/src/main/java/com/glxp/api/service/thrsys/ThrConsumeMaterialCategoryService.java +++ b/src/main/java/com/glxp/api/service/thrsys/ThrConsumeMaterialCategoryService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.thrsys; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.dao.thrsys.DeptMaterialCategoryMapper; @@ -16,8 +17,8 @@ import com.glxp.api.dao.thrsys.ThrConsumeMaterialCategoryMapper; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) @@ -28,6 +29,10 @@ public class ThrConsumeMaterialCategoryService extends ServiceImpl selectCategoryList() { QueryWrapper qw = new QueryWrapper<>(); qw.in("level",1,2 ); return baseMapper.selectList(qw); } + /** + * 通过deptCode获取绑定的医保分类列表的id + * @param deptCode + * @return + */ public List selectCategoryListByDeptCode(Long deptCode) { return deptMaterialCategoryMapper.selectCategoryListByDeptCode(deptCode); } + /** + * 通过deptCode获取绑定的医保分类列表的id + * @param deptCode + * @return + */ + public List selectListByDeptCode(Long deptCode) { + List list = deptMaterialCategoryMapper.selectListByDeptCode(deptCode); + List allCategory = baseMapper.selectList(null); + Set set = new HashSet<>(); + list.forEach( x -> { + ThrConsumeMaterialCategory parentCategoryObject = getParentCategoryObject(allCategory, x); + if (parentCategoryObject!= null){ + set.add(parentCategoryObject); + } + }); + list.addAll(set); + List collect = list.stream().sorted(Comparator.comparing(ThrConsumeMaterialCategory::getCategoryId)).collect(Collectors.toList()); + return collect; + } + /** + * 构建医保分类列表树 + * @param categorys + * @return + */ public List> buildCategoryTreeSelect(List categorys) { if (CollUtil.isEmpty(categorys)) { return CollUtil.newArrayList(); @@ -106,4 +144,46 @@ public class ThrConsumeMaterialCategoryService extends ServiceImpl qw = new QueryWrapper<>(); + qw.in("id",catalogcode1,catalogcode2,catalogcode3 ); + List list = baseMapper.selectList(qw); + if (CollectionUtil.isNotEmpty(list)){ + list.forEach( x -> { + Integer level = x.getLevel(); + switch (level) { + case 1: response.setCatalogname1(x.getCategoryName()); + break; + case 2: response.setCatalogname2(x.getCategoryName()); + break; + case 3: response.setCatalogname3(x.getCategoryName()); + break; + } + }); + } + return response; + } + + public ThrConsumeMaterialCategory getParentCategoryObject(List allCategory,ThrConsumeMaterialCategory category) { + if (category.getParentCategoryId() == 0) { + return category; + } + ThrConsumeMaterialCategory tblCategory = allCategory.stream().filter( + x -> Objects.equals(x.getCategoryId(), category.getParentCategoryId()) + ).findFirst().get(); + return getParentCategoryObject(allCategory,tblCategory); + + } } diff --git a/src/main/resources/mybatis/mapper/thrsys/DeptMaterialCategoryMapper.xml b/src/main/resources/mybatis/mapper/thrsys/DeptMaterialCategoryMapper.xml index 34af36b1b..b762a42ba 100644 --- a/src/main/resources/mybatis/mapper/thrsys/DeptMaterialCategoryMapper.xml +++ b/src/main/resources/mybatis/mapper/thrsys/DeptMaterialCategoryMapper.xml @@ -17,4 +17,12 @@ from dept_material_category where deptCode = #{deptCode} + + + diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 643d46a73..846658875 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -1869,10 +1869,51 @@ CALL Pro_Temp_ColumnWork('basic_products', 'catalogname3', ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''三级分类名称(部位、功能、品种)''', 1); +CALL Pro_Temp_ColumnWork('basic_products', 'catalogCode1', + ' bigint DEFAULT NULL COMMENT ''一级分类名称(学科,品名)''', + 1); + +CALL Pro_Temp_ColumnWork('basic_products', 'catalogCode2', + ' bigint DEFAULT NULL COMMENT ''二级分类名称(用途、品目)''', + 1); + +CALL Pro_Temp_ColumnWork('basic_products', 'catalogCode3', + ' bigint DEFAULT NULL COMMENT''三级分类名称(部位、功能、品种)''', + 1); + + CALL Pro_Temp_ColumnWork('basic_products', 'matrial', ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''耗材材质''', 1); +CALL Pro_Temp_ColumnWork('thr_products', 'catalogname1', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''一级分类名称(学科,品名)''', + 1); + +CALL Pro_Temp_ColumnWork('thr_products', 'catalogname2', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''二级分类名称(用途、品目)''', + 1); + +CALL Pro_Temp_ColumnWork('thr_products', 'catalogname3', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''三级分类名称(部位、功能、品种)''', + 1); + + +CALL Pro_Temp_ColumnWork('thr_products', 'catalogCode1', + ' bigint DEFAULT NULL COMMENT ''一级分类名称(学科,品名)''', + 1); + +CALL Pro_Temp_ColumnWork('thr_products', 'catalogCode2', + ' bigint DEFAULT NULL COMMENT ''二级分类名称(用途、品目)''', + 1); + +CALL Pro_Temp_ColumnWork('thr_products', 'catalogCode3', + ' bigint DEFAULT NULL COMMENT''三级分类名称(部位、功能、品种)''', + 1); + +CALL Pro_Temp_ColumnWork('thr_products', 'matrial', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''耗材材质''', + 1); CALL Pro_Temp_ColumnWork('thr_inv_order_detail', 'handleStatus', ' int(0) NULL DEFAULT NULL COMMENT ''是否处理''', @@ -1945,3 +1986,8 @@ INSERT IGNORE INTO auth_menu(`menu_id`, `menu_name`, `parent_id`, `order_num`, ` CALL Pro_Temp_ColumnWork('basic_sk_sicker', 'sourceType', ' int(0) NULL DEFAULT NULL COMMENT ''来源类型 2:手动''', 1); + +INSERT IGNORE INTO auth_menu(`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, + `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) + VALUES (2092, '科室医保分类', 1643, 8, 'basic/consume/materialCategory', 'basic/consume/materialCategory', NULL, 1, 0, 'C', '0', '0', + NULL, NULL, '超级用户', '2024-04-08 16:08:55', NULL, NULL, NULL);