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);
}