Merge branch 'master' of ssh://git.jizhiweb.cn:2222/clinic-v2/server

This commit is contained in:
佟明轩 2025-05-22 13:05:45 +08:00
commit 48bc1c13fb
6 changed files with 104 additions and 49 deletions

View File

@ -49,9 +49,10 @@ public class RegistrationController extends BaseController {
public Result<Page<PatientRegistration>> list() { public Result<Page<PatientRegistration>> list() {
int page = parmsUtil.getInteger("page", "页码不能为空"); int page = parmsUtil.getInteger("page", "页码不能为空");
int size = parmsUtil.getInteger("size", "页容量不能为空"); int size = parmsUtil.getInteger("size", "页容量不能为空");
Integer dockerId = parmsUtil.getInteger("dockerId");
String startDate = parmsUtil.getString("startDate"); String startDate = parmsUtil.getString("startDate");
String endDate = parmsUtil.getString("endDate"); String endDate = parmsUtil.getString("endDate");
Page<PatientRegistration> pageResult = patientRegistrationService.listPage(page, size, startDate,endDate); Page<PatientRegistration> pageResult = patientRegistrationService.listPage(page, size, startDate,endDate,dockerId);
return success(pageResult); return success(pageResult);
} }
/** /**

View File

@ -5,22 +5,21 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/** /**
* <p> * <p>
* 收费商品详情 * 收费商品详情
* </p> * </p>
* *
* @author NiuZiYuan * @author NiuZiYuan
* @since 2025-05-12 * @since 2025-05-22
*/ */
@Getter @Getter
@Setter @Setter
@ -80,4 +79,7 @@ public class ChargeGoodsList implements Serializable {
@ApiModelProperty("日期") @ApiModelProperty("日期")
private LocalDate createDate; private LocalDate createDate;
@ApiModelProperty("医保码")
private String socialCode;
} }

View File

@ -19,7 +19,7 @@ import lombok.experimental.Accessors;
* </p> * </p>
* *
* @author NiuZiYuan * @author NiuZiYuan
* @since 2025-05-21 * @since 2025-05-22
*/ */
@Getter @Getter
@Setter @Setter
@ -39,7 +39,7 @@ public class ChargeItemList implements Serializable {
private String chargeOrderCode; private String chargeOrderCode;
@ApiModelProperty("服务ID ") @ApiModelProperty("服务ID ")
private Integer serviceId; private Integer itemId;
@ApiModelProperty("原始单价") @ApiModelProperty("原始单价")
private BigDecimal preUnitPrice; private BigDecimal preUnitPrice;
@ -73,4 +73,7 @@ public class ChargeItemList implements Serializable {
@ApiModelProperty("是否为组套 0为false 1为true") @ApiModelProperty("是否为组套 0为false 1为true")
private Boolean isGroup; private Boolean isGroup;
@ApiModelProperty("医保码")
private String socialCode;
} }

View File

@ -5,22 +5,21 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/** /**
* <p> * <p>
* 收费主表 * 收费主表
* </p> * </p>
* *
* @author NiuZiYuan * @author NiuZiYuan
* @since 2025-04-29 * @since 2025-05-22
*/ */
@Getter @Getter
@Setter @Setter
@ -77,4 +76,22 @@ public class ChargeOrder implements Serializable {
@ApiModelProperty("销售人id") @ApiModelProperty("销售人id")
private Integer salePersonId; 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;
} }

View File

@ -136,6 +136,10 @@ public class ChargeService extends BaseService {
if (diagnosis == null) { if (diagnosis == null) {
throw new RuntimeException("该诊断不存在"); throw new RuntimeException("该诊断不存在");
} }
PatientRegistration registration = patientRegistrationMapper.selectById(dto.getRegistrationId());
if (registration == null) {
throw new RuntimeException("挂号单不存在");
}
QueryWrapper<ChargeOrder> orderWrapper = new QueryWrapper<>(); QueryWrapper<ChargeOrder> orderWrapper = new QueryWrapper<>();
orderWrapper.eq("diagnosis_code", diagnosis.getCode()); orderWrapper.eq("diagnosis_code", diagnosis.getCode());
orderWrapper.last("limit 1"); orderWrapper.last("limit 1");
@ -210,6 +214,7 @@ public class ChargeService extends BaseService {
LocalDateTime nowLocalDateTime = LocalDateTime.now(); LocalDateTime nowLocalDateTime = LocalDateTime.now();
BigDecimal preTotalPrice = BigDecimal.ZERO; BigDecimal preTotalPrice = BigDecimal.ZERO;
BigDecimal totalPrice = BigDecimal.ZERO; BigDecimal totalPrice = BigDecimal.ZERO;
BigDecimal totalCost = BigDecimal.ZERO;
List<ChargeItemList> chargeServiceLists = new ArrayList<>(); List<ChargeItemList> chargeServiceLists = new ArrayList<>();
for ( for (
ChargeItemListVo service : dto.getItemDetail()) { ChargeItemListVo service : dto.getItemDetail()) {
@ -227,11 +232,12 @@ public class ChargeService extends BaseService {
String fsn = StringUtil.getCode("FSN"); String fsn = StringUtil.getCode("FSN");
ChargeItemList itemList = new ChargeItemList(); ChargeItemList itemList = new ChargeItemList();
itemList.setChargeOrderCode(code); itemList.setChargeOrderCode(code);
itemList.setServiceId(itemGroup.getId()); itemList.setItemId(itemGroup.getId());
itemList.setPreUnitPrice(itemGroup.getUnitPrice()); itemList.setPreUnitPrice(itemGroup.getUnitPrice());
itemList.setUnitPrice(itemGroup.getUnitPrice()); itemList.setUnitPrice(itemGroup.getUnitPrice());
itemList.setNumber(itemGroup.getNumber()); itemList.setNumber(itemGroup.getNumber());
itemList.setSocialCode(itemGroup.getSocialCode());
itemList.setUnit(itemGroup.getUnit()); itemList.setUnit(itemGroup.getUnit());
itemList.setName(itemGroup.getName()); itemList.setName(itemGroup.getName());
@ -239,12 +245,14 @@ public class ChargeService extends BaseService {
itemList.setCreateDate(nowLocalDate); itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime); itemList.setCreateTime(nowLocalDateTime);
itemList.setIsGroup(true); itemList.setIsGroup(true);
BigDecimal subCost = itemGroup.getPurchaseUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber()));
itemList.setCost(subCost);
BigDecimal subPrice = itemList.getUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber())); BigDecimal subPrice = itemList.getUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber()));
itemList.setSubTotalPrice(subPrice); itemList.setSubTotalPrice(subPrice);
chargeServiceLists.add(itemList); chargeServiceLists.add(itemList);
preTotalPrice = preTotalPrice.add(subPrice); preTotalPrice = preTotalPrice.add(subPrice);
totalPrice = totalPrice.add(subPrice); totalPrice = totalPrice.add(subPrice);
totalCost = totalCost.add(subCost);
} }
@ -254,7 +262,7 @@ public class ChargeService extends BaseService {
String fsn = StringUtil.getCode("FSN"); String fsn = StringUtil.getCode("FSN");
itemList.setChargeOrderCode(code); itemList.setChargeOrderCode(code);
itemList.setServiceId(service.getId()); itemList.setItemId(service.getId());
itemList.setPreUnitPrice(service.getUnitPrice()); itemList.setPreUnitPrice(service.getUnitPrice());
itemList.setUnitPrice(service.getSelectedPrice()); itemList.setUnitPrice(service.getSelectedPrice());
@ -262,14 +270,18 @@ public class ChargeService extends BaseService {
itemList.setSubTotalPrice(service.getUnitPrice()); itemList.setSubTotalPrice(service.getUnitPrice());
itemList.setUnit(service.getSelectedUnit()); itemList.setUnit(service.getSelectedUnit());
itemList.setName(service.getItemName()); itemList.setName(service.getItemName());
itemList.setSocialCode(service.getItemSocialCode());
itemList.setFeedetlSn(fsn); itemList.setFeedetlSn(fsn);
itemList.setCreateDate(nowLocalDate); itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime); itemList.setCreateTime(nowLocalDateTime);
itemList.setIsGroup(false); itemList.setIsGroup(false);
BigDecimal subCost = service.getPurchaseUnitPrice().multiply(BigDecimal.valueOf(service.getSelectedNum()));
itemList.setCost(subCost);
chargeServiceLists.add(itemList); chargeServiceLists.add(itemList);
BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum()));
preTotalPrice = preTotalPrice.add(subPrice); preTotalPrice = preTotalPrice.add(subPrice);
totalPrice = totalPrice.add(subPrice); totalPrice = totalPrice.add(subPrice);
totalCost = totalCost.add(subCost);
} }
} }
chargeItemListMapper.insert(chargeServiceLists); chargeItemListMapper.insert(chargeServiceLists);
@ -296,6 +308,7 @@ public class ChargeService extends BaseService {
itemList.setUnit(goods.getSelectedUnit()); itemList.setUnit(goods.getSelectedUnit());
itemList.setName(dbGoods.getName()); itemList.setName(dbGoods.getName());
itemList.setFeedetlSn(fsn); itemList.setFeedetlSn(fsn);
itemList.setSocialCode(dbGoods.getHilistCode());
itemList.setCreateDate(nowLocalDate); itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime); itemList.setCreateTime(nowLocalDateTime);
itemList.setType(dbGoods.getType()); itemList.setType(dbGoods.getType());
@ -305,10 +318,12 @@ public class ChargeService extends BaseService {
traceabilityCode = String.join(",", goods.getTraceAbilityCodeList()); traceabilityCode = String.join(",", goods.getTraceAbilityCodeList());
} }
itemList.setTraceabilityCode(traceabilityCode); itemList.setTraceabilityCode(traceabilityCode);
BigDecimal subCost = goods.getPurchaseUnitPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum()));
itemList.setCost(subCost);
chargeGoodsLists.add(itemList); chargeGoodsLists.add(itemList);
preTotalPrice = preTotalPrice.add(subTotalPrice); preTotalPrice = preTotalPrice.add(subTotalPrice);
totalPrice = totalPrice.add(subTotalPrice); totalPrice = totalPrice.add(subTotalPrice);
totalCost = totalCost.add(subCost);
} }
chargeGoodsListMapper.insert(chargeGoodsLists); chargeGoodsListMapper.insert(chargeGoodsLists);
ChargeOrder chargeOrder = new ChargeOrder(); ChargeOrder chargeOrder = new ChargeOrder();
@ -321,7 +336,23 @@ public class ChargeService extends BaseService {
chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode()); chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode());
chargeOrder.setPatientId(dto.getPatientInfo().getId()); chargeOrder.setPatientId(dto.getPatientInfo().getId());
chargeOrder.setDiagnosisCode(dto.getDiagnosisMedicalRecord().getDiagnosisCode()); 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); chargeOrderMapper.insert(chargeOrder);
return chargeOrder; return chargeOrder;
@ -462,22 +493,16 @@ public class ChargeService extends BaseService {
public void uploadCostDetails(String changeOrderCode) { public void uploadCostDetails(String changeOrderCode) {
ChargeOrder order = chargeOrderMapper.selectByCode(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<ChargeGoodsList> goodsLists = chargeGoodsListMapper.selectByCode(changeOrderCode); List<ChargeGoodsList> goodsLists = chargeGoodsListMapper.selectByCode(changeOrderCode);
List<ChargeItemList> itemLists = chargeItemListMapper.selectByCode(changeOrderCode); List<ChargeItemList> itemLists = chargeItemListMapper.selectByCode(changeOrderCode);
//撤销之前上传的费用明细信息 //撤销之前上传的费用明细信息
try { try {
IM2205 im2205 = new IM2205(); IM2205 im2205 = new IM2205();
im2205.setMdtrtId(registration.getMdtrtId()); im2205.setMdtrtId(order.getMdtrtId());
im2205.setChrgBchno(order.getCode()); im2205.setChrgBchno(order.getCode());
im2205.setPsnNo(registration.getPsnNo()); im2205.setPsnNo(order.getPsnNo());
im2205.setExpContent(""); im2205.setExpContent("");
socialRequest.call2205(im2205); socialRequest.call2205(im2205);
} catch (Exception e) { } catch (Exception e) {
@ -490,46 +515,50 @@ public class ChargeService extends BaseService {
for (ChargeGoodsList goodsList : goodsLists) { for (ChargeGoodsList goodsList : goodsLists) {
IM2204.Feedetail feedetail = new IM2204.Feedetail(); IM2204.Feedetail feedetail = new IM2204.Feedetail();
feedetail.setFeedetl_sn(goodsList.getFeedetlSn()); feedetail.setFeedetl_sn(goodsList.getFeedetlSn());
feedetail.setMdtrt_id(registration.getMdtrtId()); feedetail.setMdtrt_id(order.getMdtrtId());
feedetail.setPsn_no(registration.getPsnNo()); feedetail.setPsn_no(order.getPsnNo());
feedetail.setChrg_bchno(order.getCode()); feedetail.setChrg_bchno(order.getCode());
feedetail.setRx_circ_flag("0"); feedetail.setRx_circ_flag("0");
feedetail.setFee_ocur_time(LocalDateTime.now()); feedetail.setFee_ocur_time(LocalDateTime.now());
Goods goods = goodsMapper.selectById(goodsList.getGoodsId()); SocialDirectory sdGoods = socialDirectoryMapper.getByCode(goodsList.getSocialCode());
SocialDirectory sdGoods = socialDirectoryMapper.getByCode(goods.getHilistCode()); if (sdGoods == null){
feedetail.setMed_list_codg(sdGoods.getCode()); throw new MessageException("本地医保目录中未查询到医保码为"+goodsList.getSocialCode()+"的商品信息");
feedetail.setMedins_list_codg(sdGoods.getId()); }
feedetail.setMed_list_codg(goodsList.getSocialCode());
feedetail.setMedins_list_codg(String.valueOf(sdGoods.getId()));
BigDecimal totalPrice = goodsList.getUnitPrice().multiply(new BigDecimal(goodsList.getNumber())); BigDecimal totalPrice = goodsList.getUnitPrice().multiply(new BigDecimal(goodsList.getNumber()));
feedetail.setDet_item_fee_sumamt(totalPrice); feedetail.setDet_item_fee_sumamt(totalPrice);
feedetail.setCnt(new BigDecimal(goodsList.getNumber())); feedetail.setCnt(new BigDecimal(goodsList.getNumber()));
feedetail.setPric(goodsList.getUnitPrice()); feedetail.setPric(goodsList.getUnitPrice());
feedetail.setBilg_dept_codg(section.getCode()); feedetail.setBilg_dept_codg(order.getSectionCode());
feedetail.setBilg_dept_name(section.getName()); feedetail.setBilg_dept_name(order.getSectionName());
feedetail.setBilg_dr_codg(docker.getSocialMemberCode()); feedetail.setBilg_dr_codg(order.getDockerCode());
feedetail.setBilg_dr_name(docker.getName()); feedetail.setBilg_dr_name(order.getDockerName());
feedetail.setHosp_appr_flag("1"); feedetail.setHosp_appr_flag("1");
feedetails.add(feedetail); feedetails.add(feedetail);
} }
for (ChargeItemList itemList : itemLists) { for (ChargeItemList itemList : itemLists) {
IM2204.Feedetail feedetail = new IM2204.Feedetail(); IM2204.Feedetail feedetail = new IM2204.Feedetail();
feedetail.setFeedetl_sn(itemList.getFeedetlSn()); feedetail.setFeedetl_sn(itemList.getFeedetlSn());
feedetail.setMdtrt_id(registration.getMdtrtId()); feedetail.setMdtrt_id(order.getMdtrtId());
feedetail.setPsn_no(registration.getPsnNo()); feedetail.setPsn_no(order.getPsnNo());
feedetail.setChrg_bchno(order.getCode()); feedetail.setChrg_bchno(order.getCode());
feedetail.setRx_circ_flag("0"); feedetail.setRx_circ_flag("0");
feedetail.setFee_ocur_time(LocalDateTime.now()); feedetail.setFee_ocur_time(LocalDateTime.now());
Item item = itemMapper.selectById(itemList.getServiceId()); SocialItem sdItem = socialItemMapper.getByCode(itemList.getSocialCode());
SocialItem sdGoods = socialItemMapper.getByCode(item.getItemSocialCode()); if (sdItem == null){
feedetail.setMed_list_codg(sdGoods.getCode()); throw new MessageException("本地医保目录中未查询到医保码为"+itemList.getSocialCode()+"的医保服务项目");
feedetail.setMedins_list_codg(String.valueOf(sdGoods.getId())); }
feedetail.setMed_list_codg(itemList.getSocialCode());
feedetail.setMedins_list_codg(String.valueOf(sdItem.getId()));
BigDecimal totalPrice = itemList.getUnitPrice().multiply(new BigDecimal(itemList.getNumber())); BigDecimal totalPrice = itemList.getUnitPrice().multiply(new BigDecimal(itemList.getNumber()));
feedetail.setDet_item_fee_sumamt(totalPrice); feedetail.setDet_item_fee_sumamt(totalPrice);
feedetail.setCnt(new BigDecimal(itemList.getNumber())); feedetail.setCnt(new BigDecimal(itemList.getNumber()));
feedetail.setPric(itemList.getUnitPrice()); feedetail.setPric(itemList.getUnitPrice());
feedetail.setBilg_dept_codg(section.getCode()); feedetail.setBilg_dept_codg(order.getSectionCode());
feedetail.setBilg_dept_name(section.getName()); feedetail.setBilg_dept_name(order.getSectionName());
feedetail.setBilg_dr_codg(docker.getSocialMemberCode()); feedetail.setBilg_dr_codg(order.getDockerCode());
feedetail.setBilg_dr_name(docker.getName()); feedetail.setBilg_dr_name(order.getDockerName());
feedetail.setHosp_appr_flag("1"); feedetail.setHosp_appr_flag("1");
feedetails.add(feedetail); feedetails.add(feedetail);
} }

View File

@ -260,12 +260,15 @@ public class PatientRegistrationService extends BaseService {
* @return * @return
*/ */
public Page<PatientRegistration> listPage(int page, int size, String startDate, String endDate) { public Page<PatientRegistration> listPage(int page, int size, String startDate, String endDate,Integer docker) {
QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>(); QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>();
//查询条件 //查询条件
queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate)); queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate));
queryWrapper.eq("del_flag", 0); queryWrapper.eq("del_flag", 0);
if (docker != null){
queryWrapper.eq("organization_doctor_id", docker);
}
return pageHelper(page, size, queryWrapper, patientRegistrationMapper, "create_datetime", false); return pageHelper(page, size, queryWrapper, patientRegistrationMapper, "create_datetime", false);
} }