Parcourir la source

Merge branch 'master' of huangrui/CostAccount into dev

lijiaxi il y a 4 ans
Parent
commit
8ee079098f

+ 0 - 1
src/main/java/com/imed/costaccount/CostAccountApplication.java

@@ -2,7 +2,6 @@ package com.imed.costaccount;
 
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @MapperScan(basePackages = {"com.imed.costaccount.mapper"})

+ 22 - 0
src/main/java/com/imed/costaccount/model/vo/IncomeErrorMessage.java

@@ -0,0 +1,22 @@
+package com.imed.costaccount.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.vo
+ * @date 2021-08-06 14:18
+ */
+@Data
+@ApiModel("收集错误信息的记录")
+public class IncomeErrorMessage {
+    /**
+     * 错误行号
+     */
+    private Integer total;
+    /**
+     * 错误信息
+     */
+    private String errMessage;
+}

+ 1 - 0
src/main/java/com/imed/costaccount/model/vo/NavVO.java

@@ -16,6 +16,7 @@ public class NavVO {
 
     private String name;
 
+    @JsonIgnore
     private String icon;
 
     @JsonIgnore

+ 2 - 1
src/main/java/com/imed/costaccount/service/MenuService.java

@@ -31,9 +31,10 @@ public interface MenuService extends IService<Menu> {
      * @param page 页码
      * @param pageSize 每页数据大小
      * @param user 当前登录用户
+     * @param name
      * @return 菜单分页列表
      */
-    PageUtils selectList(Integer page, Integer pageSize, User user);
+    PageUtils selectList(Integer page, Integer pageSize, User user, String name);
 
     /**
      * 编辑某个菜单

+ 2 - 2
src/main/java/com/imed/costaccount/service/ReportRelationService.java

@@ -25,12 +25,12 @@ public interface ReportRelationService extends IService<ReportRelation> {
     List<RelationVO> getAccountRelation(Long reportId, Long hospId);
 
     /**
-     * 报表项目关联的分摊参数对象
+     * 报表项目关联的分摊层级对象
      * @param reportId 报表项目id
      * @param hospId 医院id
      * @return {@link RelationVO}
      */
-    List<RelationVO> getShareParam(Long reportId, Long hospId);
+    List<RelationVO> getShareLevel(Long reportId, Long hospId);
 
     /**
      * 根据关系类型,获取可绑定的关系数据(包含回显)

+ 123 - 9
src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.common.util.BeanUtil;
 import com.imed.costaccount.common.util.DateUtils;
 import com.imed.costaccount.common.util.PageUtils;
@@ -13,9 +14,13 @@ import com.imed.costaccount.mapper.CostIncomeGroupMapper;
 import com.imed.costaccount.model.*;
 import com.imed.costaccount.model.vo.CostIncomeGroupAllAmountVO;
 import com.imed.costaccount.model.vo.CostIncomeGroupBeforeVO;
+import com.imed.costaccount.model.vo.IncomeErrorMessage;
 import com.imed.costaccount.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -33,12 +38,17 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
 
     private final AccountingService accountingService;
 
+    private final ResponsibilityDepartmentService responsibilityDepartmentService;
 
-    public CostIncomeGroupServiceImpl(DepartmentService departmentService, ResponsibilityService responsibilityService, ProductService productService, AccountingService accountingService) {
+    private final AccountingProductService accountingProductService;
+
+    public CostIncomeGroupServiceImpl(DepartmentService departmentService, ResponsibilityService responsibilityService, ProductService productService, AccountingService accountingService, ResponsibilityDepartmentService responsibilityDepartmentService, AccountingProductService accountingProductService) {
         this.departmentService = departmentService;
         this.responsibilityService = responsibilityService;
         this.productService = productService;
         this.accountingService = accountingService;
+        this.responsibilityDepartmentService = responsibilityDepartmentService;
+        this.accountingProductService = accountingProductService;
     }
 
     /**
@@ -98,8 +108,9 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
      * @return
      */
     @Override
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
     public Result importIncomeGroup(List<List<Object>> list, Long hospId) {
-        // 移除前几行的抬头内容
+        // 移除前几行的抬头内容  list的大小对应的就是行数的大小
         for (int i = list.size() - 1; i >= 0; i--) {
             if (i == NumberConstant.ZERO || i == NumberConstant.ONE || i == NumberConstant.TWO || i == NumberConstant.THREE) {
                 list.remove(list.get(i));
@@ -107,17 +118,120 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
         }
         log.info("读取的数据为:{}", list);
         List<CostIncomeGroup> costIncomeGroupList = new ArrayList<>();
-        List<String> errRowNums = new ArrayList<>();
+        List<IncomeErrorMessage> incomeErrorMessageList = new ArrayList<>();
+        //获取所有的科室 成本项目 责任中心 会计科目
+        Map<String, Department> departmentMap = departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getDepartmentCode() + k.getDepartmentName(), synOe -> synOe));
+        Map<String,Product> productMap= productService.list(new QueryWrapper<Product>().lambda().eq(Product::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getProductCode() + k.getProductName(), synOe -> synOe));
+        Map<Long, Responsibility> responsibilityMap = responsibilityService.list(new QueryWrapper<Responsibility>().lambda().eq(Responsibility::getHospId, hospId)).stream().collect(Collectors.toMap(Responsibility::getId,synOe->synOe));
+        Map<Long, Accounting> accountingMap = accountingService.list(new QueryWrapper<Accounting>().lambda().eq(Accounting::getHospId, hospId)).stream().collect(Collectors.toMap(Accounting::getId, synOe -> synOe));
+        List<ResponsibilityDepartment> responsibilityDepartmentList = responsibilityDepartmentService.list(new QueryWrapper<ResponsibilityDepartment>().lambda()
+                .eq(ResponsibilityDepartment::getHospId, hospId));
+        if (CollectionUtils.isEmpty(responsibilityDepartmentList)){
+            throw new CostException(500,"没有科室责任中心对照数据");
+        }
+        List<AccountingProduct> accountingProductList = accountingProductService.list(new QueryWrapper<AccountingProduct>().lambda().eq(AccountingProduct::getHospId, hospId));
+        if (CollectionUtils.isEmpty(accountingProductList)){
+            throw new CostException(500,"没有成本会计对照数据");
+        }
+        Map<Long, Long> responsibilityDepMap = responsibilityDepartmentList.stream().collect(Collectors.toMap(ResponsibilityDepartment::getDepartmentId, ResponsibilityDepartment::getResponsibilityId));
+        Map<Long, Long> accountProMap = accountingProductList.stream().collect(Collectors.toMap(AccountingProduct::getProductId, AccountingProduct::getAccountingId));
+        checkImportData(list, incomeErrorMessageList, departmentMap, productMap, responsibilityMap, accountingMap, responsibilityDepMap, accountProMap);
+        if (!CollectionUtils.isEmpty(incomeErrorMessageList)){
+            // 说明存在错误数据
+            // TODO 不讲数据保存在收入归集表里面  直将信息保存在提交记录里面
+        }else {
+            // 实现厨具的存储
+
+        }
+        return Result.ok();
+    }
+
+    /**
+     *检验数据
+     * @param list 表单数据
+     * @param incomeErrorMessageList 存储错误信息的集合
+     * @param departmentMap 科室Map
+     * @param productMap 成本项目map
+     * @param responsibilityMap 责任中心Map
+     * @param accountingMap 会计科目Map
+     * @param responsibilityDepMap 责任中心科室对照Map
+     * @param accountProMap 责任中心Map
+     */
+    private void checkImportData(List<List<Object>> list, List<IncomeErrorMessage> incomeErrorMessageList, Map<String, Department> departmentMap, Map<String, Product> productMap, Map<Long, Responsibility> responsibilityMap, Map<Long, Accounting> accountingMap, Map<Long, Long> responsibilityDepMap, Map<Long, Long> accountProMap) {
         for (int i = 0; i < list.size(); i++) {
+            // 用来检验数据合理性的循环
+            IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
             List<Object> data = list.get(i);
             log.info("用户输入的数据是{}",data);
-            CostIncomeGroup costIncomeGroup = new CostIncomeGroup();
-            costIncomeGroup.setCreateTime(System.currentTimeMillis());
-            costIncomeGroup.setHospId(hospId);
-
-
+            Object money = data.get(data.size() - 1);
+            if (!Objects.isNull(money) && !NumberConstant.ZERO.equals(Integer.parseInt(money.toString()))){
+                // 要求这一行的数据必须全部填写
+                for (int j=0;j<data.size();j++){
+                    if (Objects.isNull(data.get(j))){
+                        incomeErrorMessage.setTotal(i);
+                        int row=i+1;
+                        int column=j+1;
+                        incomeErrorMessage.setErrMessage("第{"+row+"}行第{"+column+"}列数据为空");
+                        incomeErrorMessageList.add(incomeErrorMessage);
+                    }
+                }
+                // TODO 暂时不走循环  直接获取数据的处理
+                // 成本项目的代码和名称
+                String productCode = data.get(0).toString();
+                String productName = data.get(1).toString();
+                // 开单科室 执行科室的代码和名称
+                String openDepartmentName = data.get(2).toString();
+                String openDepartmentCode = data.get(3).toString();
+                String startDepartmentName = data.get(4).toString();
+                String startDepartmentCode = data.get(5).toString();
+                // 检验数据是否存在
+                Product product = productMap.get(productCode + productName);
+                Department department = departmentMap.get(openDepartmentCode + openDepartmentName);
+                Department department1 = departmentMap.get(startDepartmentCode + startDepartmentName);
+                if (Objects.isNull(product)){
+                    incomeErrorMessage.setTotal(i);
+                    incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"成本项目不存在");
+                    incomeErrorMessageList.add(incomeErrorMessage);
+                }else {
+                    // 检验对应的会计科目是否存在
+                    Long id = product.getId();
+                    Long accountId = accountProMap.get(id);
+                    if (Objects.isNull(accountingMap.get(accountId))){
+                        incomeErrorMessage.setTotal(i);
+                        incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"成本项目对应的会计科目不存在");
+                        incomeErrorMessageList.add(incomeErrorMessage);
+                    }
+                }
+                // 开单科室
+                if (Objects.isNull(department)){
+                    incomeErrorMessage.setTotal(i);
+                    incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"开单科室不存在");
+                    incomeErrorMessageList.add(incomeErrorMessage);
+                }else{
+                    Long id = department.getId();
+                    Long responsibilityId = responsibilityDepMap.get(id);
+                    if (Objects.isNull(responsibilityMap.get(responsibilityId))){
+                        incomeErrorMessage.setTotal(i);
+                        incomeErrorMessage.setErrMessage("代码:"+openDepartmentCode+" 名称:"+openDepartmentName+"科室对应的责任中心不存在");
+                        incomeErrorMessageList.add(incomeErrorMessage);
+                    }
+                }
+                //执行科室
+                if (Objects.isNull(department1)){
+                    incomeErrorMessage.setTotal(i);
+                    incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"执行科室不存在");
+                    incomeErrorMessageList.add(incomeErrorMessage);
+                }else{
+                    Long id = department1.getId();
+                    Long responsibilityId = responsibilityDepMap.get(id);
+                    if (Objects.isNull(responsibilityMap.get(responsibilityId))){
+                        incomeErrorMessage.setTotal(i);
+                        incomeErrorMessage.setErrMessage("代码:"+openDepartmentCode+" 名称:"+openDepartmentName+"科室对应的责任中心不存在");
+                        incomeErrorMessageList.add(incomeErrorMessage);
+                    }
+                }
+            }
         }
-        return Result.ok();
     }
 
     /**

+ 7 - 2
src/main/java/com/imed/costaccount/service/impl/MenuServiceImpl.java

@@ -2,6 +2,7 @@ package com.imed.costaccount.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.constants.Constant;
@@ -64,12 +65,15 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
      * @param page     页码
      * @param pageSize 每页数据大小
      * @param user     当前登录用户
+     * @param name
      * @return 菜单伪列表
      */
     @Override
-    public PageUtils selectList(Integer page, Integer pageSize, User user) {
+    public PageUtils selectList(Integer page, Integer pageSize, User user, String name) {
         List<Menu> list = this.list(
-                new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, user.getHospId()).orderByAsc(Menu::getOrderNum)
+                new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, user.getHospId())
+                        .like(StrUtil.isNotBlank(name),Menu::getName,name)
+                        .orderByAsc(Menu::getOrderNum)
         );
 
         List<MenuVO> menuVOS = list.stream().map(i -> {
@@ -86,6 +90,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
             treeVOs.addAll(menus);
 
         }
+
         return new PageUtils(treeVOs, 0, 0, 0);
     }
 

+ 6 - 3
src/main/java/com/imed/costaccount/service/impl/ReportFormServiceImpl.java

@@ -99,7 +99,7 @@ public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportF
             reportFormVO.setReportRelations(list);
             return;
         } else if (showAddRelation == 2) {
-            List<RelationVO> list = reportRelationService.getShareParam(reportFormVO.getId(), hospId);
+            List<RelationVO> list = reportRelationService.getShareLevel(reportFormVO.getId(), hospId);
             reportFormVO.setReportRelations(list);
             return;
         }
@@ -137,7 +137,8 @@ public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportF
      * @param reportForm 需要构建的实体
      * @param parentId 父级id
      */
-    private void setDataByParentId(Long hospId, ReportForm reportForm, Long parentId) {
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
+    public void setDataByParentId(Long hospId, ReportForm reportForm, Long parentId) {
         if (parentId == 0L) {
             reportForm.setCalcType(0);
             reportForm.setCalcFormula("");
@@ -157,7 +158,9 @@ public class ReportFormServiceImpl extends ServiceImpl<ReportFormMapper, ReportF
             checkExist(byId,"选择的父报表层级不正确");
             reportForm.setReportType(byId.getReportType());
             // 如果子节点 小计只能存在一个
-            this.isSubtotal(parentId, hospId);
+            if (reportForm.getCalcType() == 3) {
+                this.isSubtotal(parentId, hospId);
+            }
         }
     }
 

+ 4 - 12
src/main/java/com/imed/costaccount/service/impl/ReportRelationServiceImpl.java

@@ -7,14 +7,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.mapper.ReportFormMapper;
 import com.imed.costaccount.mapper.ReportRelationMapper;
-import com.imed.costaccount.model.Accounting;
-import com.imed.costaccount.model.CostShareParam;
 import com.imed.costaccount.model.ReportForm;
 import com.imed.costaccount.model.ReportRelation;
 import com.imed.costaccount.model.dto.ReportRelationDTO;
 import com.imed.costaccount.model.vo.RelationVO;
-import com.imed.costaccount.service.AccountingService;
-import com.imed.costaccount.service.CostShareParamService;
 import com.imed.costaccount.service.ReportRelationService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -31,13 +27,9 @@ import java.util.stream.Collectors;
 @Service("reportRelationService")
 public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper, ReportRelation> implements ReportRelationService {
 
-    private final AccountingService accountingService;
-    private final CostShareParamService shareParamService;
     private final ReportFormMapper reportFormMapper;
 
-    public ReportRelationServiceImpl(AccountingService accountingService, CostShareParamService shareParamService, ReportFormMapper reportFormMapper) {
-        this.accountingService = accountingService;
-        this.shareParamService = shareParamService;
+    public ReportRelationServiceImpl(ReportFormMapper reportFormMapper) {
         this.reportFormMapper = reportFormMapper;
     }
 
@@ -54,14 +46,14 @@ public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper,
     }
 
     /**
-     * 报表项目关联的分摊参数对象
+     * 报表项目关联的分摊层级对象
      *
      * @param reportId 报表项目id
      * @param hospId   医院id
      * @return {@link RelationVO}
      */
     @Override
-    public List<RelationVO> getShareParam(Long reportId, Long hospId) {
+    public List<RelationVO> getShareLevel(Long reportId, Long hospId) {
         return baseMapper.getShareParam(reportId, hospId);
     }
 
@@ -99,7 +91,7 @@ public class ReportRelationServiceImpl extends ServiceImpl<ReportRelationMapper,
 //            }
 
         } else if (relation == 2) {
-            list = this.getShareParam(reportId, hospId);
+            list = this.getShareLevel(reportId, hospId);
 //            List<CostShareParam> accounts = shareParamService.list(new LambdaQueryWrapper<CostShareParam>().select(CostShareParam::getShareParamCode, CostShareParam::getShareParamName).eq(CostShareParam::getHospId, hospId));
 //            if (accounts.isEmpty()) {
 //                return list;

+ 1 - 13
src/main/java/com/imed/costaccount/service/impl/RoleMenuServiceImpl.java

@@ -4,23 +4,16 @@ import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.mapper.RoleMenuMapper;
-import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.RoleMenu;
-import com.imed.costaccount.model.UserRole;
 import com.imed.costaccount.model.dto.RoleMenuDTO;
 import com.imed.costaccount.model.vo.CommonSelectVO;
 import com.imed.costaccount.model.vo.CommonVO;
-import com.imed.costaccount.model.vo.MenuVO;
-import com.imed.costaccount.service.MenuService;
 import com.imed.costaccount.service.RoleMenuService;
-import com.imed.costaccount.common.util.BeanUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -28,11 +21,6 @@ import java.util.stream.Collectors;
 @Service("roleMenuService")
 public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
 
-    private final MenuService menuService;
-
-    public RoleMenuServiceImpl(MenuService menuService) {
-        this.menuService = menuService;
-    }
 
     /**
      * 通过roleId 获取对应的菜单列表
@@ -118,7 +106,7 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public void saveRoleMenu(RoleMenuDTO roleMenuDTO, Long hospId) {
         Long roleId = roleMenuDTO.getRoleId();
-        this.removeById(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getHospId, hospId));
+        this.remove(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getHospId, hospId));
         List<Long> menuIds = roleMenuDTO.getMenuIds();
         if (CollUtil.isNotEmpty(menuIds)) {
             List<RoleMenu> roleMenus = menuIds.stream().map(i -> {

+ 3 - 4
src/main/java/com/imed/costaccount/web/MenuController.java

@@ -2,14 +2,12 @@ package com.imed.costaccount.web;
 
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
-import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.model.vo.NavVO;
 import com.imed.costaccount.service.MenuService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -48,8 +46,9 @@ public class MenuController extends AbstractController {
     @ApiOperation("菜单列表")
     @GetMapping("/list")
     public Result list(@RequestParam(defaultValue = "1", value = "current") Integer page,
-                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
-        PageUtils pageUtils = menuService.selectList(page, pageSize, getUser());
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                       @RequestParam(value = "name",required = false) String name) {
+        PageUtils pageUtils = menuService.selectList(page, pageSize, getUser(),name);
         return Result.ok(pageUtils);
     }
 

+ 1 - 1
src/main/java/com/imed/costaccount/web/ReportFormController.java

@@ -102,7 +102,7 @@ public class ReportFormController extends AbstractController {
             list = reportRelationService.getAccountRelation(reportId, hospId);
         }
         if (relation == 2) {
-            list = reportRelationService.getShareParam(reportId, hospId);
+            list = reportRelationService.getShareLevel(reportId, hospId);
         }
         return Result.ok(list);
     }

+ 5 - 4
src/main/resources/mapper/ReportRelationMapper.xml

@@ -25,14 +25,15 @@
     </select>
 
     <select id="getShareParam" resultType="com.imed.costaccount.model.vo.RelationVO">
-        select chp.share_param_code as code, chp.share_param_name as name, 2 as relation
+        select csl.id as code, csl.share_name as name, 2 as relation
         from cost_report_relation crr
-                 left join cost_share_param chp on crr.relation_code = chp.share_param_code
+                 left join cost_share_level csl on crr.relation_code = csl.id
         where crr.delete_time = 0
-          and chp.delete_time = 0
+          and csl.delete_time = 0
           and crr.hosp_id = #{hospId}
-          and chp.hosp_id = #{hospId}
+          and csl.hosp_id = #{hospId}
           and crr.report_id = #{reportId}
+          and csl.relation = 2
 
     </select>