From 6b024183a4e35cac08bfc87cea7fb87add3d7a4d Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Thu, 22 May 2025 12:44:02 +0800 Subject: [PATCH] dev --- .../patient/RegistrationController.java | 3 +- .../server/entity/charge/ChargeGoodsList.java | 14 +-- .../server/entity/charge/ChargeItemList.java | 7 +- .../server/entity/charge/ChargeOrder.java | 29 ++++-- .../server/service/charge/ChargeService.java | 95 ++++++++++++------- .../patient/PatientRegistrationService.java | 5 +- 6 files changed, 104 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java index ce4c205..f02a126 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java @@ -49,9 +49,10 @@ public class RegistrationController extends BaseController { public Result> list() { int page = parmsUtil.getInteger("page", "页码不能为空"); int size = parmsUtil.getInteger("size", "页容量不能为空"); + Integer dockerId = parmsUtil.getInteger("dockerId"); String startDate = parmsUtil.getString("startDate"); String endDate = parmsUtil.getString("endDate"); - Page pageResult = patientRegistrationService.listPage(page, size, startDate,endDate); + Page pageResult = patientRegistrationService.listPage(page, size, startDate,endDate,dockerId); return success(pageResult); } /** diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java index c64e1f3..147e896 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java @@ -5,22 +5,21 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; -import lombok.experimental.Accessors; - import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; /** *

* 收费商品详情 *

* * @author NiuZiYuan - * @since 2025-05-12 + * @since 2025-05-22 */ @Getter @Setter @@ -80,4 +79,7 @@ public class ChargeGoodsList implements Serializable { @ApiModelProperty("日期") private LocalDate createDate; + + @ApiModelProperty("医保码") + private String socialCode; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeItemList.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeItemList.java index b9a83e5..a44a591 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeItemList.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeItemList.java @@ -19,7 +19,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-05-21 + * @since 2025-05-22 */ @Getter @Setter @@ -39,7 +39,7 @@ public class ChargeItemList implements Serializable { private String chargeOrderCode; @ApiModelProperty("服务ID ") - private Integer serviceId; + private Integer itemId; @ApiModelProperty("原始单价") private BigDecimal preUnitPrice; @@ -73,4 +73,7 @@ public class ChargeItemList implements Serializable { @ApiModelProperty("是否为组套 0为false 1为true") private Boolean isGroup; + + @ApiModelProperty("医保码") + private String socialCode; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java index ccebf8f..59ef98d 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java @@ -5,22 +5,21 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; -import lombok.experimental.Accessors; - import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; /** *

* 收费主表 *

* * @author NiuZiYuan - * @since 2025-04-29 + * @since 2025-05-22 */ @Getter @Setter @@ -77,4 +76,22 @@ public class ChargeOrder implements Serializable { @ApiModelProperty("销售人id") private Integer salePersonId; + + @ApiModelProperty("就诊id") + private String mdtrtId; + + @ApiModelProperty("人员编号") + private String psnNo; + + @ApiModelProperty("科室编码") + private String sectionCode; + + @ApiModelProperty("科室名称") + private String sectionName; + + @ApiModelProperty("医生编码") + private String dockerCode; + + @ApiModelProperty("医生名称") + private String dockerName; } diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index f80dc03..69cbc6e 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -136,6 +136,10 @@ public class ChargeService extends BaseService { if (diagnosis == null) { throw new RuntimeException("该诊断不存在"); } + PatientRegistration registration = patientRegistrationMapper.selectById(dto.getRegistrationId()); + if (registration == null) { + throw new RuntimeException("挂号单不存在"); + } QueryWrapper orderWrapper = new QueryWrapper<>(); orderWrapper.eq("diagnosis_code", diagnosis.getCode()); orderWrapper.last("limit 1"); @@ -210,6 +214,7 @@ public class ChargeService extends BaseService { LocalDateTime nowLocalDateTime = LocalDateTime.now(); BigDecimal preTotalPrice = BigDecimal.ZERO; BigDecimal totalPrice = BigDecimal.ZERO; + BigDecimal totalCost = BigDecimal.ZERO; List chargeServiceLists = new ArrayList<>(); for ( ChargeItemListVo service : dto.getItemDetail()) { @@ -227,11 +232,12 @@ public class ChargeService extends BaseService { String fsn = StringUtil.getCode("FSN"); ChargeItemList itemList = new ChargeItemList(); itemList.setChargeOrderCode(code); - itemList.setServiceId(itemGroup.getId()); + itemList.setItemId(itemGroup.getId()); itemList.setPreUnitPrice(itemGroup.getUnitPrice()); itemList.setUnitPrice(itemGroup.getUnitPrice()); itemList.setNumber(itemGroup.getNumber()); + itemList.setSocialCode(itemGroup.getSocialCode()); itemList.setUnit(itemGroup.getUnit()); itemList.setName(itemGroup.getName()); @@ -239,12 +245,14 @@ public class ChargeService extends BaseService { itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); itemList.setIsGroup(true); - + BigDecimal subCost = itemGroup.getPurchaseUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber())); + itemList.setCost(subCost); BigDecimal subPrice = itemList.getUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber())); itemList.setSubTotalPrice(subPrice); chargeServiceLists.add(itemList); preTotalPrice = preTotalPrice.add(subPrice); totalPrice = totalPrice.add(subPrice); + totalCost = totalCost.add(subCost); } @@ -254,7 +262,7 @@ public class ChargeService extends BaseService { String fsn = StringUtil.getCode("FSN"); itemList.setChargeOrderCode(code); - itemList.setServiceId(service.getId()); + itemList.setItemId(service.getId()); itemList.setPreUnitPrice(service.getUnitPrice()); itemList.setUnitPrice(service.getSelectedPrice()); @@ -262,14 +270,18 @@ public class ChargeService extends BaseService { itemList.setSubTotalPrice(service.getUnitPrice()); itemList.setUnit(service.getSelectedUnit()); itemList.setName(service.getItemName()); + itemList.setSocialCode(service.getItemSocialCode()); itemList.setFeedetlSn(fsn); itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); itemList.setIsGroup(false); + BigDecimal subCost = service.getPurchaseUnitPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); + itemList.setCost(subCost); chargeServiceLists.add(itemList); BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); preTotalPrice = preTotalPrice.add(subPrice); totalPrice = totalPrice.add(subPrice); + totalCost = totalCost.add(subCost); } } chargeItemListMapper.insert(chargeServiceLists); @@ -296,6 +308,7 @@ public class ChargeService extends BaseService { itemList.setUnit(goods.getSelectedUnit()); itemList.setName(dbGoods.getName()); itemList.setFeedetlSn(fsn); + itemList.setSocialCode(dbGoods.getHilistCode()); itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); itemList.setType(dbGoods.getType()); @@ -305,10 +318,12 @@ public class ChargeService extends BaseService { traceabilityCode = String.join(",", goods.getTraceAbilityCodeList()); } itemList.setTraceabilityCode(traceabilityCode); - + BigDecimal subCost = goods.getPurchaseUnitPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum())); + itemList.setCost(subCost); chargeGoodsLists.add(itemList); preTotalPrice = preTotalPrice.add(subTotalPrice); totalPrice = totalPrice.add(subTotalPrice); + totalCost = totalCost.add(subCost); } chargeGoodsListMapper.insert(chargeGoodsLists); ChargeOrder chargeOrder = new ChargeOrder(); @@ -321,7 +336,23 @@ public class ChargeService extends BaseService { chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode()); chargeOrder.setPatientId(dto.getPatientInfo().getId()); chargeOrder.setDiagnosisCode(dto.getDiagnosisMedicalRecord().getDiagnosisCode()); - chargeOrder.setSalePersonId(dto.getPatientRegistration().getOrganizationDoctorId()); + chargeOrder.setSalePersonId(registration.getOrganizationDoctorId()); + chargeOrder.setMdtrtId(registration.getMdtrtId()); + chargeOrder.setPsnNo(registration.getPsnNo()); + chargeOrder.setTotalCost(totalCost); + OrganizationSection section = organizationSectionMapper.selectById(registration.getOrganizationSectionId()); + if (section == null){ + throw new MessageException("科室不存在"); + } + OrganizationMember member = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); + if (member == null){ + throw new MessageException("医生不存在"); + } + chargeOrder.setSectionCode(section.getCode()); + chargeOrder.setSectionName(section.getName()); + chargeOrder.setDockerCode(member.getSocialMemberCode()); + chargeOrder.setDockerName(member.getName()); + chargeOrderMapper.insert(chargeOrder); return chargeOrder; @@ -462,22 +493,16 @@ public class ChargeService extends BaseService { public void uploadCostDetails(String changeOrderCode) { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); - Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); - PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId()); - - - OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); - OrganizationSection section = organizationSectionMapper.selectById(registration.getOrganizationSectionId()); List goodsLists = chargeGoodsListMapper.selectByCode(changeOrderCode); List itemLists = chargeItemListMapper.selectByCode(changeOrderCode); //撤销之前上传的费用明细信息 try { IM2205 im2205 = new IM2205(); - im2205.setMdtrtId(registration.getMdtrtId()); + im2205.setMdtrtId(order.getMdtrtId()); im2205.setChrgBchno(order.getCode()); - im2205.setPsnNo(registration.getPsnNo()); + im2205.setPsnNo(order.getPsnNo()); im2205.setExpContent(""); socialRequest.call2205(im2205); } catch (Exception e) { @@ -490,46 +515,50 @@ public class ChargeService extends BaseService { for (ChargeGoodsList goodsList : goodsLists) { IM2204.Feedetail feedetail = new IM2204.Feedetail(); feedetail.setFeedetl_sn(goodsList.getFeedetlSn()); - feedetail.setMdtrt_id(registration.getMdtrtId()); - feedetail.setPsn_no(registration.getPsnNo()); + feedetail.setMdtrt_id(order.getMdtrtId()); + feedetail.setPsn_no(order.getPsnNo()); feedetail.setChrg_bchno(order.getCode()); feedetail.setRx_circ_flag("0"); feedetail.setFee_ocur_time(LocalDateTime.now()); - Goods goods = goodsMapper.selectById(goodsList.getGoodsId()); - SocialDirectory sdGoods = socialDirectoryMapper.getByCode(goods.getHilistCode()); - feedetail.setMed_list_codg(sdGoods.getCode()); - feedetail.setMedins_list_codg(sdGoods.getId()); + SocialDirectory sdGoods = socialDirectoryMapper.getByCode(goodsList.getSocialCode()); + if (sdGoods == null){ + throw new MessageException("本地医保目录中未查询到医保码为"+goodsList.getSocialCode()+"的商品信息"); + } + feedetail.setMed_list_codg(goodsList.getSocialCode()); + feedetail.setMedins_list_codg(String.valueOf(sdGoods.getId())); BigDecimal totalPrice = goodsList.getUnitPrice().multiply(new BigDecimal(goodsList.getNumber())); feedetail.setDet_item_fee_sumamt(totalPrice); feedetail.setCnt(new BigDecimal(goodsList.getNumber())); feedetail.setPric(goodsList.getUnitPrice()); - feedetail.setBilg_dept_codg(section.getCode()); - feedetail.setBilg_dept_name(section.getName()); - feedetail.setBilg_dr_codg(docker.getSocialMemberCode()); - feedetail.setBilg_dr_name(docker.getName()); + feedetail.setBilg_dept_codg(order.getSectionCode()); + feedetail.setBilg_dept_name(order.getSectionName()); + feedetail.setBilg_dr_codg(order.getDockerCode()); + feedetail.setBilg_dr_name(order.getDockerName()); feedetail.setHosp_appr_flag("1"); feedetails.add(feedetail); } for (ChargeItemList itemList : itemLists) { IM2204.Feedetail feedetail = new IM2204.Feedetail(); feedetail.setFeedetl_sn(itemList.getFeedetlSn()); - feedetail.setMdtrt_id(registration.getMdtrtId()); - feedetail.setPsn_no(registration.getPsnNo()); + feedetail.setMdtrt_id(order.getMdtrtId()); + feedetail.setPsn_no(order.getPsnNo()); feedetail.setChrg_bchno(order.getCode()); feedetail.setRx_circ_flag("0"); feedetail.setFee_ocur_time(LocalDateTime.now()); - Item item = itemMapper.selectById(itemList.getServiceId()); - SocialItem sdGoods = socialItemMapper.getByCode(item.getItemSocialCode()); - feedetail.setMed_list_codg(sdGoods.getCode()); - feedetail.setMedins_list_codg(String.valueOf(sdGoods.getId())); + SocialItem sdItem = socialItemMapper.getByCode(itemList.getSocialCode()); + if (sdItem == null){ + throw new MessageException("本地医保目录中未查询到医保码为"+itemList.getSocialCode()+"的医保服务项目"); + } + feedetail.setMed_list_codg(itemList.getSocialCode()); + feedetail.setMedins_list_codg(String.valueOf(sdItem.getId())); BigDecimal totalPrice = itemList.getUnitPrice().multiply(new BigDecimal(itemList.getNumber())); feedetail.setDet_item_fee_sumamt(totalPrice); feedetail.setCnt(new BigDecimal(itemList.getNumber())); feedetail.setPric(itemList.getUnitPrice()); - feedetail.setBilg_dept_codg(section.getCode()); - feedetail.setBilg_dept_name(section.getName()); - feedetail.setBilg_dr_codg(docker.getSocialMemberCode()); - feedetail.setBilg_dr_name(docker.getName()); + feedetail.setBilg_dept_codg(order.getSectionCode()); + feedetail.setBilg_dept_name(order.getSectionName()); + feedetail.setBilg_dr_codg(order.getDockerCode()); + feedetail.setBilg_dr_name(order.getDockerName()); feedetail.setHosp_appr_flag("1"); feedetails.add(feedetail); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java index 6a46c45..499f1ff 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java @@ -260,12 +260,15 @@ public class PatientRegistrationService extends BaseService { * @return */ - public Page listPage(int page, int size, String startDate, String endDate) { + public Page listPage(int page, int size, String startDate, String endDate,Integer docker) { QueryWrapper queryWrapper = new QueryWrapper<>(); //查询条件 queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate)); queryWrapper.eq("del_flag", 0); + if (docker != null){ + queryWrapper.eq("organization_doctor_id", docker); + } return pageHelper(page, size, queryWrapper, patientRegistrationMapper, "create_datetime", false); }