demo优化,新增init方法

This commit is contained in:
Zhang.WH
2025-02-20 20:15:44 +08:00
parent eaa01f2fca
commit 3b5f09268b
11 changed files with 328 additions and 45 deletions

View File

@@ -12,22 +12,27 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.core.common.utils.MessageUtils; import com.core.common.utils.MessageUtils;
import com.core.common.utils.bean.BeanUtils; import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.ChargeItem; import com.openhis.administration.domain.ChargeItem;
import com.openhis.administration.domain.Location;
import com.openhis.administration.domain.Patient; import com.openhis.administration.domain.Patient;
import com.openhis.administration.service.IChargeItemService; import com.openhis.administration.service.IChargeItemService;
import com.openhis.administration.service.ILocationService;
import com.openhis.administration.service.IPatientService; import com.openhis.administration.service.IPatientService;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.Medication;
import com.openhis.medication.service.IMedicationService; import com.openhis.medication.service.IMedicationService;
import com.openhis.web.inventorymanage.assembler.PurchaseInventoryAssembler; import com.openhis.web.inventorymanage.assembler.PurchaseInventoryAssembler;
import com.openhis.web.inventorymanage.dto.SupplyRequestDto; import com.openhis.web.inventorymanage.dto.InventoryDto;
import com.openhis.web.inventorymanage.dto.SupplySaveRequestDto; import com.openhis.web.inventorymanage.dto.InventoryReceiptInitDto;
import com.openhis.web.inventorymanage.dto.SupplySearchParam; import com.openhis.web.inventorymanage.dto.InventorySearchParam;
import com.openhis.web.inventorymanage.dto.SaveInventoryReceiptDto;
import com.openhis.workflow.domain.SupplyRequest; import com.openhis.workflow.domain.SupplyRequest;
import com.openhis.workflow.service.ISupplyRequestService; import com.openhis.workflow.service.ISupplyRequestService;
@@ -51,11 +56,22 @@ public class PurchaseInventoryController {
private IPatientService patientService; private IPatientService patientService;
@Autowired @Autowired
private IChargeItemService chargeItemService; private IChargeItemService chargeItemService;
@Autowired
private ISupplierService supplierService;
@Autowired
private ILocationService locationService;
@GetMapping(value = "/test") @GetMapping(value = "/init")
public R<?> test() { public R<?> init() {
// return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002,new Object[] {"12345"})) ;
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"12345"})); InventoryReceiptInitDto initDto = new InventoryReceiptInitDto();
// 设置供应商列表
initDto.setSupplier(supplierService.list())
// 设置药房列表
.setLocation(locationService.list(new LambdaQueryWrapper<Location>().in(Location::getFormEnum, 1)))
// 药品详细
.setMedicationDetail(medicationService.getDetailList());
return R.ok(initDto);
} }
// 添加入库单据之前需要 // 添加入库单据之前需要
@@ -67,13 +83,13 @@ public class PurchaseInventoryController {
/** /**
* 添加入库单据(生成供应请求) * 添加入库单据(生成供应请求)
* *
* @param supplyRequestDto 供应请求信息 * @param inventoryDto 供应请求信息
*/ */
@PostMapping("/add-inventory-receipt") @PostMapping("/add-inventory-receipt")
public R<?> addSupplyRequest(@Validated @RequestBody SupplyRequestDto supplyRequestDto) { public R<?> addSupplyRequest(@Validated @RequestBody InventoryDto inventoryDto) {
// 生成待发送的入库单据supply_request // 生成待发送的入库单据supply_request
SupplyRequest supplyRequest = new SupplyRequest(); SupplyRequest supplyRequest = new SupplyRequest();
BeanUtils.copyProperties(supplyRequestDto, supplyRequest); BeanUtils.copyProperties(inventoryDto, supplyRequest);
// 如果业务上不需要其它处理 直接调用service的保存方法 // 如果业务上不需要其它处理 直接调用service的保存方法
boolean saveSupplyRequestSuccess = supplyRequestService.save(supplyRequest); boolean saveSupplyRequestSuccess = supplyRequestService.save(supplyRequest);
@@ -83,7 +99,7 @@ public class PurchaseInventoryController {
// 生成收费项目charge_item // 生成收费项目charge_item
ChargeItem chargeItem = new ChargeItem(); ChargeItem chargeItem = new ChargeItem();
// 如果字段很少建议手动set赋值 // 如果字段很少建议手动set赋值
chargeItem.setUnitPrice(supplyRequestDto.getUnitPrice()); chargeItem.setUnitPrice(inventoryDto.getUnitPrice());
boolean saveChargeItemSuccess = chargeItemService.saveChargeItem(chargeItem); boolean saveChargeItemSuccess = chargeItemService.saveChargeItem(chargeItem);
// 如果采购单价被修改了,需要根据批次号更新采购单价子表价格、 // 如果采购单价被修改了,需要根据批次号更新采购单价子表价格、
@@ -100,20 +116,20 @@ public class PurchaseInventoryController {
/** /**
* 编辑入库单据 * 编辑入库单据
* *
* @param supplySaveRequestDto 供应请求信息 * @param saveInventoryReceiptDto 供应请求信息
*/ */
@PutMapping("/edit-inventory-receipt") @PutMapping("/edit-inventory-receipt")
public R<?> editSupplyRequest(@Validated @RequestBody SupplySaveRequestDto supplySaveRequestDto) { public R<?> editSupplyRequest(@Validated @RequestBody SaveInventoryReceiptDto saveInventoryReceiptDto) {
// 更新supply_request信息 // 更新supply_request信息
SupplyRequest saveRequest = new SupplyRequest(); SupplyRequest saveRequest = new SupplyRequest();
BeanUtils.copyProperties(supplySaveRequestDto, saveRequest); BeanUtils.copyProperties(saveInventoryReceiptDto, saveRequest);
if (!supplyRequestService.updateById(saveRequest)) { if (!supplyRequestService.updateById(saveRequest)) {
return R.fail(); return R.fail();
} }
// 更新收费项目charge_item // 更新收费项目charge_item
ChargeItem chargeItem = new ChargeItem(); ChargeItem chargeItem = new ChargeItem();
BeanUtils.copyProperties(supplySaveRequestDto, chargeItem); BeanUtils.copyProperties(saveInventoryReceiptDto, chargeItem);
chargeItem.setId(supplySaveRequestDto.getChargeItemId()); chargeItem.setId(saveInventoryReceiptDto.getChargeItemId());
return chargeItemService.updateChargeItem(chargeItem) ? R.ok() : R.fail(); return chargeItemService.updateChargeItem(chargeItem) ? R.ok() : R.fail();
} }
@@ -125,55 +141,40 @@ public class PurchaseInventoryController {
@DeleteMapping("/delete-inventory-receipt") @DeleteMapping("/delete-inventory-receipt")
public R<?> deleteSupplyRequest(@RequestParam Long supplyRequestId) { public R<?> deleteSupplyRequest(@RequestParam Long supplyRequestId) {
// 全都是逻辑删除 // 全都是逻辑删除
// 通过id将supply_request表的delFlag更新为1 // todo:拓展mybatisplus :删除就是软删除 查询默认加上delFlag条件通过传参实现查看被删除的项目
boolean deleteSuccess = supplyRequestService.removeById(supplyRequestId);
supplyRequestService.deletebyId(SupplyRequest::getId);
boolean deleteSuccess = supplyRequestService.update(new LambdaUpdateWrapper<SupplyRequest>()
.eq(SupplyRequest::getId, supplyRequestId).set(SupplyRequest::getDeleteFlag, 1));
if (!deleteSuccess) { if (!deleteSuccess) {
return R.fail(); return R.fail();
} }
boolean deleteChargeItemSuccess = chargeItemService.update(new LambdaUpdateWrapper<ChargeItem>() boolean deleteChargeItemSuccess = chargeItemService
.eq(ChargeItem::getServiceId, supplyRequestId).set(ChargeItem::getDeleteFlag, 1)); .remove(new LambdaUpdateWrapper<ChargeItem>().eq(ChargeItem::getServiceId, supplyRequestId));
return deleteChargeItemSuccess ? R.ok() : R.fail(); return deleteChargeItemSuccess ? R.ok() : R.fail();
} }
/**
* 单据提交申请
*
* @param supplyRequest 供应请求信息
*/
@PutMapping("/submit-examine")
public void submitExamine(SupplyRequest supplyRequest) {
// 更改供应请求单据状态
// 生成供应分发supply_delivery
}
/** /**
* 入库单据详情列表 * 入库单据详情列表
* *
* @param supplySearchParam 查询条件 * @param inventorySearchParam 查询条件
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param request 请求数据 * @param request 请求数据
* @return 入库单据分页列表 * @return 入库单据分页列表
*/ */
@GetMapping(value = "/inventory-receipt-page") @GetMapping(value = "/inventory-receipt-page")
public R<?> getDetailPage(SupplySearchParam supplySearchParam, public R<?> getDetailPage(InventorySearchParam inventorySearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// 查询条件初始化 // 查询条件初始化
Medication medication = new Medication(); Medication medication = new Medication();
BeanUtils.copyProperties(supplySearchParam, medication); BeanUtils.copyProperties(inventorySearchParam, medication);
SupplyRequest supplyRequest = new SupplyRequest(); SupplyRequest supplyRequest = new SupplyRequest();
BeanUtils.copyProperties(supplySearchParam, supplyRequest); BeanUtils.copyProperties(inventorySearchParam, supplyRequest);
// 获取供应请求信息 // 获取供应请求信息
@@ -195,4 +196,16 @@ public class PurchaseInventoryController {
.ok(PurchaseInventoryAssembler.assembleInventoryReceiptDto(supplyRequestPage, medicationList, patientList)); .ok(PurchaseInventoryAssembler.assembleInventoryReceiptDto(supplyRequestPage, medicationList, patientList));
} }
/**
* 单据提交申请
*
* @param supplyRequest 供应请求信息
*/
@PutMapping("/submit-examine")
public void submitExamine(SupplyRequest supplyRequest) {
// 更改供应请求单据状态
// 生成供应分发supply_delivery
}
} }

View File

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class SupplyRequestDto { public class InventoryDto {
/** 项目 */ /** 项目 */
private String itemTable; private String itemTable;

View File

@@ -0,0 +1,33 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.inventorymanage.dto;
import java.util.List;
import com.openhis.administration.domain.Location;
import com.openhis.administration.domain.Supplier;
import com.openhis.medication.domain.MedicationDetail;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 采购入库初始化 dto
*
* @author zwh
* @date 2025-02-20
*/
@Data
@Accessors(chain = true)
public class InventoryReceiptInitDto {
/** 药房信息 */
private List<Location> location;
/** 供应商信息 */
private List<Supplier> supplier;
/** 药品详细信息 */
private List<MedicationDetail> medicationDetail;
}

View File

@@ -16,6 +16,6 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class SupplySearchParam implements Serializable { public class InventorySearchParam implements Serializable {
} }

View File

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class SupplySaveRequestDto { public class SaveInventoryReceiptDto {
/** ID */ /** ID */
private Long id; private Long id;

View File

@@ -6,8 +6,8 @@ import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.HisBaseEntity; import com.core.common.core.domain.HisBaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@@ -79,4 +79,90 @@ public class Medication extends HisBaseEntity {
/** 删除状态 */ /** 删除状态 */
private Integer deleteFlag; private Integer deleteFlag;
/** 药品编号 */
private Long code;
/** 药品名称 */
private String name;
/** 适用范围 */
private Integer domainEnum;
/** 药品版本 */
private String version;
/** 英文药名 */
private String nameEn;
/** 药品名称拼音码 */
private String pyCode;
/** 药品五笔码 */
private String wbCode;
/** 药品分类 */
private Integer categoryCode;
/** 商品名称 */
private String merchandiseName;
/** 商品名称拼音码 */
private String merchandisePyCode;
/** 商品五笔码 */
private String merchandiseWbCode;
/** 药品单位 */
private String unitCode;
/** 最小单位 */
private String minUnitCode;
/** 所含耗材 */
private String comprisedText;
/** 成分 */
private String ingredient;
/** 拆零比 */
private BigDecimal partPercent;
/** 剂量形式 */
private Integer doseFrom;
/** 批准文号 */
private String approvalNumber;
/** 医保是否对码 */
private Integer ybMatchFlag;
/** 医保编码 */
private String ybCode;
/** 药理作用分类 */
private String pharmacologyCategoryCode;
/** 是否皮试 */
private Integer skinTestFlag;
/** 是否为注射药物 */
private Integer injectFlag;
/** 生产厂家 */
private Long manufacturerId;
/** 供应商 */
private Long supplyId;
/** 是否限制使用 */
private Integer restrictedFlag;
/** 限制使用范围 */
private String restrictedScope;
/** 儿童用药标志 */
private Integer childrenFlag;
/** 产品特性 */
private Integer characteristic;
} }

View File

@@ -0,0 +1,82 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.medication.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.core.common.core.domain.HisBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* 药品信息详情
*
* @author zwh
* @date 2025-02-20
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class MedicationDetail extends HisBaseEntity {
/** ID */
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/** 药品编码 */
private Long medicationProductId;
/** 药品状态 */
private Integer statusEnum;
/** 所属科室 */
private Long orgId;
/** 剂型 */
private String doseFormCode;
/** 规格 */
private String totalVolume;
/** 成分 */
private String ingredientItem;
/** 是否为活性 */
private Integer activeFlag;
/** 批次号 */
private String lotNumber;
/** 生效日期 */
private Date effectiveDate;
/** 到期日期 */
private Date expirationDate;
/** 用法 */
private String methodCode;
/** 用药频次 */
private String rateCode;
/** 单次剂量 */
private BigDecimal dose;
/** 剂量单位 */
private String doseUnitCode;
/** 单次最大剂量 */
private BigDecimal maxUnit;
/** 药品定义 */
private String definition;
/** 删除状态 */
private Integer deleteFlag;
}

View File

@@ -1,10 +1,13 @@
package com.openhis.medication.mapper; package com.openhis.medication.mapper;
import com.openhis.medication.domain.MedicationDetail;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.Medication;
import java.util.List;
/** /**
* 药品基本信息管理Mapper接口 * 药品基本信息管理Mapper接口
* *
@@ -14,4 +17,10 @@ import com.openhis.medication.domain.Medication;
@Repository @Repository
public interface MedicationMapper extends BaseMapper<Medication> { public interface MedicationMapper extends BaseMapper<Medication> {
/**
* 查询药品详细信息列表
*
* @return 药品详细信息列表
*/
List<MedicationDetail> selectDetailList();
} }

View File

@@ -4,6 +4,7 @@ import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.Medication;
import com.openhis.medication.domain.MedicationDetail;
/** /**
* 药品基本信息管理Service接口 * 药品基本信息管理Service接口
@@ -20,4 +21,11 @@ public interface IMedicationService extends IService<Medication> {
* @return 药品信息列表 * @return 药品信息列表
*/ */
List<Medication> getList(List<Long> medicationIdList); List<Medication> getList(List<Long> medicationIdList);
/**
* 查询药品详细信息列表
*
* @return 药品详细信息列表
*/
List<MedicationDetail> getDetailList();
} }

View File

@@ -2,16 +2,17 @@ package com.openhis.medication.service.impl;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.openhis.common.enums.DelFlag; import com.openhis.common.enums.DelFlag;
import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.Medication;
import com.openhis.medication.domain.MedicationDetail;
import com.openhis.medication.mapper.MedicationMapper; import com.openhis.medication.mapper.MedicationMapper;
import com.openhis.medication.service.IMedicationService; import com.openhis.medication.service.IMedicationService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
@@ -22,9 +23,11 @@ import lombok.extern.slf4j.Slf4j;
*/ */
@Slf4j @Slf4j
@Service @Service
@AllArgsConstructor
public class MedicationServiceImpl extends ServiceImpl<MedicationMapper, Medication> implements IMedicationService { public class MedicationServiceImpl extends ServiceImpl<MedicationMapper, Medication> implements IMedicationService {
@Autowired
private MedicationMapper medicationMapper;
/** /**
* 查询药品信息列表 * 查询药品信息列表
* *
@@ -42,4 +45,15 @@ public class MedicationServiceImpl extends ServiceImpl<MedicationMapper, Medicat
} }
return null; return null;
} }
/**
* 查询药品详细信息列表
*
* @return 药品详细信息列表
*/
@Override
public List<MedicationDetail> getDetailList() {
return medicationMapper.selectDetailList();
}
} }

View File

@@ -4,4 +4,42 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.medication.mapper.MedicationMapper"> <mapper namespace="com.openhis.medication.mapper.MedicationMapper">
<select id="selectDetailList" resultType="com.openhis.medication.domain.MedicationDetail">
SELECT T1.id,
T1.medication_product_id,
T1.status_enum,
T1.org_id,
T1.dose_form_code,
T1.total_volume,
T1.ingredient_item,
T1.active_flag,
T1.lot_number,
T1.effective_date,
T1.expiration_date,
T1.effective_date,
T1.method_code,
T1.rate_code,
T1.dose,
T1.dose_unit_code,
T1.max_unit,
T1.definition,
T2.code,
T2.name,
T2.domain_enum,
T2.name_en,
T2.py_code,
T2.wb_code,
T2.category_code,
T2.merchandise_name,
T2.merchandise_py_code,
T2.merchandise_wb_code,
T2.unit_code,
T2.min_unit_code,
T2.part_percent,
T2.dose_from
FROM med_medication AS T1
LEFT JOIN med_medication_definition AS T2
ON T1.medication_product_id = T2.id
WHERE T1.delete_flag = 0
</select>
</mapper> </mapper>