代码修改 项目定价修改

This commit is contained in:
Zhuangxingyu
2025-02-25 17:14:17 +08:00
parent 6a5e6eb4b9
commit 9f2067745f
4 changed files with 134 additions and 173 deletions

View File

@@ -10,11 +10,15 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.enums.AssignSeqEnum;
@@ -22,6 +26,7 @@ import com.core.common.enums.ChargeItemEnum;
import com.core.common.enums.DefinitionTypeEnum;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.StringUtils;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.ChargeItemDefApp;
import com.openhis.administration.domain.ChargeItemDefinition;
@@ -124,51 +129,44 @@ public class ItemDefinitionController {
/**
* 项目定价列表
*
* @param itemDefSearchParam 查询条件
* @param chargeItemDefPageDto 查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 项目定价列表
*/
@GetMapping(value = "/item-definition-page")
public R<?> getDefinitionPage(ItemDefSearchParam itemDefSearchParam,
public R<?> getDefinitionPage(ChargeItemDefPageDto chargeItemDefPageDto,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(value = "searchKey", required = false) String searchKey, HttpServletRequest request) {
IPage<ChargeItemDefPageDto> chargeItemDefinitionPage = new Page<>();
List<ChargeItemDefPageDto> chargeItemDefinitionList;
// 跳过的数量
int skipCount = 0;
if (pageNo > 0) {
skipCount = (pageNo - 1) * pageSize;
// 初始化表格配置并构建查询条件
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""),
ChargeItemDefPageDto.class);
LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper = new LambdaQueryWrapper<>();
// 构造查询条件
if (StringUtils.isNotEmpty(searchKey)) {
queryWrapper.and(q -> q.like(ChargeItemDefPageDto::getChargeName, searchKey).or()
.like(ChargeItemDefPageDto::getItemNo, searchKey).or().like(ChargeItemDefPageDto::getPyStr, searchKey));
}
// 通过 DefinitionType 区分药品定价/器具定价/手术定价
if (DefinitionTypeEnum.MEDICATION.getCode().equals(itemDefSearchParam.getDefinitionType())) {
// 获取定价列表
chargeItemDefinitionList =
chargeItemDefSearchMapper.getMedList(itemDefSearchParam, pageNo, pageSize, searchKey, skipCount);
} else if (DefinitionTypeEnum.DEVICE.getCode().equals(itemDefSearchParam.getDefinitionType())) {
// 获取定价列表
chargeItemDefinitionList =
chargeItemDefSearchMapper.getDevList(itemDefSearchParam, pageNo, pageSize, searchKey, skipCount);
} else if (DefinitionTypeEnum.ACTIVITY.getCode().equals(itemDefSearchParam.getDefinitionType())) {
// 获取定价列表
chargeItemDefinitionList =
chargeItemDefSearchMapper.getActList(itemDefSearchParam, pageNo, pageSize, searchKey, skipCount);
} else {
chargeItemDefinitionList = new ArrayList<>();
if (chargeItemDefPageDto.getChargeItem() != null) {
queryWrapper.eq(ChargeItemDefPageDto::getCategoryCode, chargeItemDefPageDto.getChargeItem());
}
// 设置分页条件
chargeItemDefinitionPage.setSize(pageSize);
chargeItemDefinitionPage.setCurrent(pageNo);
if (chargeItemDefinitionList.size() > 0) {
chargeItemDefinitionPage.setTotal(chargeItemDefinitionList.get(0).getTotalCount());
chargeItemDefinitionPage.setRecords(chargeItemDefinitionList);
} else {
chargeItemDefinitionPage.setTotal(0);
chargeItemDefinitionPage.setRecords(new ArrayList<>());
// 通过 DefinitionType 区分药品定价/器具定价/活动定价
if (DefinitionTypeEnum.MEDICATION.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
queryWrapper.eq(ChargeItemDefPageDto::getInstanceTable, "med_medication_definition");
chargeItemDefinitionPage =
chargeItemDefSearchMapper.getMedList(new Page<>(pageNo, pageSize), queryWrapper);
} else if (DefinitionTypeEnum.DEVICE.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
queryWrapper.eq(ChargeItemDefPageDto::getInstanceTable, "adm_device_definition");
chargeItemDefinitionPage =
chargeItemDefSearchMapper.getDevList(new Page<>(pageNo, pageSize), queryWrapper);
} else if (DefinitionTypeEnum.ACTIVITY.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
queryWrapper.eq(ChargeItemDefPageDto::getInstanceTable, "wor_activity_definition");
chargeItemDefinitionPage =
chargeItemDefSearchMapper.getActList(new Page<>(pageNo, pageSize), queryWrapper);
}
return R.ok(chargeItemDefinitionPage, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, null));
}

View File

@@ -87,4 +87,19 @@ public class ChargeItemDefPageDto {
/** 总条数 */
private Integer totalCount;
/** 拼音助记码 */
private String pyStr;
/** 收费项目 */
private Integer categoryCode;
/** 编码 */
private String instanceTable;
/** 定价类型 */
private String definitionType;
/** 定价项目 */
private Integer chargeItem;
}

View File

@@ -5,7 +5,11 @@ import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.web.datadictionary.dto.ChargeItemDefPageDto;
import com.openhis.web.datadictionary.dto.ItemDefSearchParam;
@@ -22,42 +26,30 @@ public interface ChargeItemDefSearchMapper extends BaseMapper<ChargeItemDefiniti
/**
* 药品费用定价分页查询
*
* @param itemDefSearchParam 查询条件
* @param pageNo 页码
* @param pageSize 页面大小
* @param searchKey 模糊搜索条件
* @param skipCount 跳过条数
* @param page 分页条件
* @param queryWrapper 查询条件
* @return 分页查询
*/
List<ChargeItemDefPageDto> getMedList(@Param("itemDefSearchParam") ItemDefSearchParam itemDefSearchParam,
@Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize, @Param("searchKey") String searchKey,
@Param("skipCount") Integer skipCount);
IPage<ChargeItemDefPageDto> getMedList(@Param("page") Page<ChargeItemDefPageDto> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper);
/**
* 器具费用定价分页查询
*
* @param itemDefSearchParam 查询条件
* @param pageNo 页码
* @param pageSize 页面大小
* @param searchKey 模糊搜索条件
* @param skipCount 跳过条数
* @param page 分页条件
* @param queryWrapper 查询条件
* @return 分页查询
*/
List<ChargeItemDefPageDto> getDevList(@Param("itemDefSearchParam") ItemDefSearchParam itemDefSearchParam,
@Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize, @Param("searchKey") String searchKey,
@Param("skipCount") int skipCount);
IPage<ChargeItemDefPageDto> getDevList(@Param("page") Page<ChargeItemDefPageDto> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper);
/**
* 活动费用定价分页查询
*
* @param itemDefSearchParam 查询条件
* @param pageNo 页码
* @param pageSize 页面大小
* @param searchKey 模糊搜索条件
* @param skipCount 跳过条数
* @param page 分页条件
* @param queryWrapper 查询条件
* @return 分页查询
*/
List<ChargeItemDefPageDto> getActList(@Param("itemDefSearchParam") ItemDefSearchParam itemDefSearchParam,
@Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize, @Param("searchKey") String searchKey,
@Param("skipCount") int skipCount);
IPage<ChargeItemDefPageDto> getActList(@Param("page") Page<ChargeItemDefPageDto> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper);
}

View File

@@ -1,84 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.datadictionary.mapper.ChargeItemDefSearchMapper">
<select id="getMedList" resultType="com.openhis.web.datadictionary.dto.ChargeItemDefPageDto">
SELECT
T5.id,
T5.charge_name,
T5.status_enum,
T5.description,
T5.effective_start,
T5.effective_end,
T5.instance_table,
T5.price,
T5.create_time,
T5.update_time,
T5.item_id,
T5.condition_rule_id,
T5.condition_lotnumber,
T5.condition_yb_code,
T5.priority,
T5.amount,
T5.item_no,
T5.py_str,
T5.wb_str,
T5.unit_code,
T5.category_code,
T5.total_volume,
T5.lot_number,
COUNT(1) OVER() AS TOTAL_COUNT
T5.id,
T5.charge_name,
T5.status_enum,
T5.description,
T5.effective_start,
T5.effective_end,
T5.instance_table,
T5.price,
T5.create_time,
T5.update_time,
T5.item_id,
T5.condition_rule_id,
T5.condition_lotnumber,
T5.condition_yb_code,
T5.priority,
T5.amount,
T5.item_no,
T5.py_str,
T5.wb_str,
T5.unit_code,
T5.category_code,
T5.part_percent,
T5.total_volume,
T5.lot_number
FROM (
SELECT
T1.id,
T1.charge_name,
T1.status_enum,
T1.description,
T1.effective_start,
T1.effective_end,
T1.instance_table,
T1.price,
T1.create_time,
T1.update_time,
T2.id AS item_id,
T2.condition_rule_id,
T2.condition_lotnumber,
T2.condition_yb_code,
T2.priority,
T2.amount,
T3.bus_no AS item_no,
T3.py_str,
T3.wb_str,
T3.unit_code,
T3.category_code,
T4.total_volume,
T4.lot_number
FROM
adm_charge_item_definition T1
LEFT JOIN adm_charge_item_def_app T2
ON T1.id = T2.definition_id
LEFT JOIN med_medication_definition T3
ON T1.instance_id = T3.id
LEFT JOIN med_medication T4
ON T3.id = T4.medication_def_id) T5
<where>
T5.instance_table = 'med_medication_definition'
<if test="searchKey != null">
AND T5.charge_name LIKE CONCAT('%', #{searchKey}, '%')
OR T5.item_no LIKE CONCAT('%', #{searchKey}, '%')
OR T5.py_str LIKE CONCAT('%', #{searchKey}, '%')
</if>
<if test="itemDefSearchParam.getChargeItem() != null">
AND T5.category_code = #{itemDefSearchParam.chargeItem}
</if>
</where>
ORDER BY T5.create_time DESC
<!-- 拼接页码 -->
<if test="skipCount != null and pageSize != null and pageSize > 0">
LIMIT #{pageSize} OFFSET #{skipCount}
</if>
SELECT
T1.id,
T1.charge_name,
T1.status_enum,
T1.description,
T1.effective_start,
T1.effective_end,
T1.instance_table,
T1.price,
T1.create_time,
T1.update_time,
T2.id AS item_id,
T2.condition_rule_id,
T2.condition_lotnumber,
T2.condition_yb_code,
T2.priority,
T2.amount,
T3.bus_no AS item_no,
T3.py_str,
T3.wb_str,
T3.unit_code,
T1.yb_type AS category_code,
T3.part_percent,
T4.total_volume,
T4.lot_number
FROM
adm_charge_item_definition T1
LEFT JOIN adm_charge_item_def_app T2
ON T1.id = T2.definition_id
LEFT JOIN med_medication_definition T3
ON T1.instance_id = T3.id
LEFT JOIN med_medication T4
ON T3.id = T4.medication_def_id
ORDER BY T1.create_time DESC) T5
${ew.customSqlSegment}
</select>
<select id="getDevList" resultType="com.openhis.web.datadictionary.dto.ChargeItemDefPageDto">
SELECT
T5.id,
@@ -102,8 +87,8 @@
T5.wb_str,
T5.unit_code,
T5.category_code,
T5.lot_number,
COUNT(1) OVER() AS TOTAL_COUNT
T5.part_percent,
T5.lot_number
FROM (
SELECT
T1.id,
@@ -126,7 +111,8 @@
T3.py_str,
T3.wb_str,
T3.unit_code AS unit_code,
T3.category_enum AS category_code,
T1.yb_type AS category_code,
T3.part_percent,
T4.lot_number
FROM
adm_charge_item_definition T1
@@ -135,25 +121,10 @@
LEFT JOIN adm_device_definition T3
ON T1.instance_id = T3.id
LEFT JOIN adm_device T4
ON T3.id = T4.device_def_id) T5
<where>
T5.instance_table = 'adm_device_definition'
<if test="searchKey != null">
AND T5.charge_name LIKE CONCAT('%', #{searchKey}, '%')
OR T5.item_no LIKE CONCAT('%', #{searchKey}, '%')
OR T5.py_str LIKE CONCAT('%', #{searchKey}, '%')
</if>
<if test="itemDefSearchParam.getChargeItem() != null">
AND T5.category_code = #{itemDefSearchParam.chargeItem}
</if>
</where>
ORDER BY T5.create_time DESC
<!-- 拼接页码 -->
<if test="skipCount != null and pageSize != null and pageSize > 0">
LIMIT #{pageSize} OFFSET #{skipCount}
</if>
ON T3.id = T4.device_def_id
ORDER BY T1.create_time DESC) T5
${ew.customSqlSegment}
</select>
<select id="getActList" resultType="com.openhis.web.datadictionary.dto.ChargeItemDefPageDto">
SELECT
T5.id,
@@ -176,8 +147,7 @@
T5.py_str,
T5.wb_str,
T5.unit_code,
T5.category_code,
COUNT(1) OVER() AS TOTAL_COUNT
T5.category_code
FROM (
SELECT
T1.id,
@@ -200,28 +170,14 @@
T3.py_str,
T3.wb_str,
T3.permitted_unit_code AS unit_code,
T3.type_enum AS category_code
T1.yb_type AS category_code
FROM
adm_charge_item_definition T1
LEFT JOIN adm_charge_item_def_app T2
ON T1.id = T2.definition_id
LEFT JOIN wor_activity_definition T3
ON T1.instance_id = T3.id) T5
<where>
T5.instance_table = 'wor_activity_definition'
<if test="searchKey != null">
AND T5.charge_name LIKE CONCAT('%', #{searchKey}, '%')
OR T5.item_no LIKE CONCAT('%', #{searchKey}, '%')
OR T5.py_str LIKE CONCAT('%', #{searchKey}, '%')
</if>
<if test="itemDefSearchParam.getChargeItem() != null">
AND T5.category_code = #{itemDefSearchParam.chargeItem}
</if>
</where>
ORDER BY T5.create_time DESC
<!-- 拼接页码 -->
<if test="skipCount != null and pageSize != null and pageSize > 0">
LIMIT #{pageSize} OFFSET #{skipCount}
</if>
ON T1.instance_id = T3.id
ORDER BY T1.create_time DESC) T5
${ew.customSqlSegment}
</select>
</mapper>