From 3bd775dd88338fdb85069623ef59edc3a7d92b6b Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 21 May 2025 17:26:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=A6=E7=BB=84=E5=A5=97=E7=9A=84=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=AE=A2=E5=8D=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clinic/server/enity/item/Item.java | 76 ----------- .../server/entity/charge/ChargeItemList.java | 14 +- .../entity/charge/vo/ChargeItemListVo.java | 2 + .../server/entity/item/ItemGroupList.java | 3 + .../server/service/charge/ChargeService.java | 121 ++++++++++++------ .../service/statistics/StatisticsService.java | 6 +- 6 files changed, 103 insertions(+), 119 deletions(-) delete mode 100644 src/main/java/com/syjiaer/clinic/server/enity/item/Item.java diff --git a/src/main/java/com/syjiaer/clinic/server/enity/item/Item.java b/src/main/java/com/syjiaer/clinic/server/enity/item/Item.java deleted file mode 100644 index 405a437..0000000 --- a/src/main/java/com/syjiaer/clinic/server/enity/item/Item.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.syjiaer.clinic.server.enity.item; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; -import lombok.experimental.Accessors; -/** - *

- * 诊疗项目 - *

- * - * @author NiuZiYuan - * @since 2025-05-21 - */ -@Getter -@Setter -@ToString -@Accessors(chain = true) -@ApiModel(value = "Item对象", description = "诊疗项目") -public class Item implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty("自增主键") - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty("项目创建时间") - private LocalDateTime createDatetime; - - @ApiModelProperty("项目创建人") - private String createBy; - - @ApiModelProperty("项目修改时间") - private LocalDateTime updateDatetime; - - @ApiModelProperty("项目修改人") - private String updateBy; - - @ApiModelProperty("项目名称") - private String itemName; - - @ApiModelProperty("项目医保目录编码") - private String itemSocialCode; - - @ApiModelProperty("单位") - private String unit; - - @ApiModelProperty("售价") - private BigDecimal unitPrice; - - @ApiModelProperty("进货价") - private BigDecimal purchaseUnitPrice; - - @ApiModelProperty("逻辑删除") - private Integer delFlag; - - @ApiModelProperty("使用次数") - private Integer useNum; - - @ApiModelProperty("全拼") - private String pinyinFull; - - @ApiModelProperty("拼音首字母") - private String pinyinFirst; - - @ApiModelProperty("是否为组套 0为false 1为true") - private Byte isGroup; -} 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 3b8d750..b9a83e5 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 @@ -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-24 + * @since 2025-05-21 */ @Getter @Setter @@ -71,4 +70,7 @@ public class ChargeItemList implements Serializable { @ApiModelProperty("日期") private LocalDate createDate; + + @ApiModelProperty("是否为组套 0为false 1为true") + private Boolean isGroup; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeItemListVo.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeItemListVo.java index baa91ec..b048425 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeItemListVo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeItemListVo.java @@ -40,6 +40,8 @@ public class ChargeItemListVo { @ApiModelProperty("逻辑删除") private Integer delFlag; + @ApiModelProperty("是否为组套 0为false 1为true") + private Boolean isGroup; @ApiModelProperty("选择的单价") private BigDecimal selectedPrice; diff --git a/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java b/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java index 66f4f8d..c7a8f9e 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java @@ -59,4 +59,7 @@ public class ItemGroupList implements Serializable { @ApiModelProperty("item表主键") private Integer itemId; + + @ApiModelProperty("数量") + private Integer number; } 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 2c687eb..855e077 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 @@ -26,6 +26,8 @@ import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.inventory.Inventory; import com.syjiaer.clinic.server.entity.inventory.InventoryLog; import com.syjiaer.clinic.server.entity.item.Item; +import com.syjiaer.clinic.server.entity.item.ItemGroup; +import com.syjiaer.clinic.server.entity.item.ItemGroupList; import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; import com.syjiaer.clinic.server.entity.organization.OrganizationSection; @@ -42,6 +44,8 @@ import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalRecordMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper; import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper; +import com.syjiaer.clinic.server.mapper.item.ItemGroupListMapper; +import com.syjiaer.clinic.server.mapper.item.ItemGroupMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; @@ -103,6 +107,8 @@ public class ChargeService extends BaseService { @Autowired private InventoryLogMapper inventoryLogMapper; @Autowired + private ItemGroupListMapper itemGroupListMapper; + @Autowired private SocialRequest socialRequest; @Autowired private DiagnosisMedicalRecordMapper diagnosisMedicalRecordMapper; @@ -151,6 +157,8 @@ public class ChargeService extends BaseService { diagnosisMedicalRecordMapper.updateById(medicalRecord); List mdItmeList = new ArrayList<>(); for (ChargeItemListVo item : dto.getItemDetail()) { + + DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList(); itemDetail.setItemId(item.getId()); itemDetail.setDiagnosisCode(diaCode); @@ -160,6 +168,8 @@ public class ChargeService extends BaseService { itemDetail.setUnit(item.getSelectedUnit()); itemDetail.setUnitPrice(item.getSelectedPrice()); mdItmeList.add(itemDetail); + + } diagnosisMedicalItemListMapper.insert(mdItmeList); List mdGoodsList = new ArrayList<>(); @@ -203,24 +213,64 @@ public class ChargeService extends BaseService { List chargeServiceLists = new ArrayList<>(); for ( ChargeItemListVo service : dto.getItemDetail()) { - ChargeItemList itemList = new ChargeItemList(); - String fsn = StringUtil.getCode("FSN"); - itemList.setChargeOrderCode(code); - itemList.setServiceId(service.getId()); + Item dbService = itemMapper.selectById(service.getId()); + if (dbService == null) { + throw new MessageException("服务项目不存在"); + } + //组套逻辑 + if (dbService.getIsGroup()) { + List itemGroupList = itemGroupListMapper.selectList(new QueryWrapper().eq("item_id", dbService.getId())); + if (itemGroupList.isEmpty()) { + throw new MessageException("组套:" + service.getItemName() + "没有绑定商品数据"); + } + for (ItemGroupList itemGroup : itemGroupList) { + String fsn = StringUtil.getCode("FSN"); + ChargeItemList itemList = new ChargeItemList(); + itemList.setChargeOrderCode(code); + itemList.setServiceId(itemGroup.getId()); - itemList.setPreUnitPrice(service.getUnitPrice()); - itemList.setUnitPrice(service.getSelectedPrice()); - itemList.setNumber(service.getSelectedNum()); - itemList.setSubTotalPrice(service.getUnitPrice()); - itemList.setUnit(service.getSelectedUnit()); - itemList.setName(service.getItemName()); - itemList.setFeedetlSn(fsn); - itemList.setCreateDate(nowLocalDate); - itemList.setCreateTime(nowLocalDateTime); - chargeServiceLists.add(itemList); - BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); - preTotalPrice = preTotalPrice.add(subPrice); - totalPrice = totalPrice.add(subPrice); + itemList.setPreUnitPrice(itemGroup.getUnitPrice()); + itemList.setUnitPrice(itemGroup.getUnitPrice()); + itemList.setNumber(itemGroup.getNumber()); + + itemList.setUnit(itemGroup.getUnit()); + itemList.setName(itemGroup.getName()); + itemList.setFeedetlSn(fsn); + itemList.setCreateDate(nowLocalDate); + itemList.setCreateTime(nowLocalDateTime); + itemList.setIsGroup(true); + + BigDecimal subPrice = itemList.getUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber())); + itemList.setSubTotalPrice(subPrice); + chargeServiceLists.add(itemList); + preTotalPrice = preTotalPrice.add(subPrice); + totalPrice = totalPrice.add(subPrice); + + } + + } else { + + ChargeItemList itemList = new ChargeItemList(); + + String fsn = StringUtil.getCode("FSN"); + itemList.setChargeOrderCode(code); + itemList.setServiceId(service.getId()); + + itemList.setPreUnitPrice(service.getUnitPrice()); + itemList.setUnitPrice(service.getSelectedPrice()); + itemList.setNumber(service.getSelectedNum()); + itemList.setSubTotalPrice(service.getUnitPrice()); + itemList.setUnit(service.getSelectedUnit()); + itemList.setName(service.getItemName()); + itemList.setFeedetlSn(fsn); + itemList.setCreateDate(nowLocalDate); + itemList.setCreateTime(nowLocalDateTime); + itemList.setIsGroup(false); + chargeServiceLists.add(itemList); + BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); + preTotalPrice = preTotalPrice.add(subPrice); + totalPrice = totalPrice.add(subPrice); + } } chargeItemListMapper.insert(chargeServiceLists); @@ -325,7 +375,7 @@ public class ChargeService extends BaseService { ChargeDetailVo detailVo = new ChargeDetailVo(); BeanUtils.copyProperties(chargeOrder, detailVo); OrganizationMember organizationMember = organizationMemberMapper.selectById(chargeOrder.getSalePersonId()); - detailVo.setSalePersonName(organizationMember ==null?null:organizationMember.getName()); + detailVo.setSalePersonName(organizationMember == null ? null : organizationMember.getName()); detailVo.setDiagnosisMedicalRecord(diagnosisMedicalRecordMapper.selectByDiagnosisCode(chargeOrder.getDiagnosisCode())); detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId())); detailVo.setServiceDetail(chargeItemListMapper.selectByCode(chargeOrder.getCode())); @@ -409,8 +459,6 @@ public class ChargeService extends BaseService { this.recordChargeLog(order, ChargeSourceEnum.CHARGE, ChargeTypeEnum.CHARGE); - - } public void uploadCostDetails(String changeOrderCode) { @@ -726,27 +774,27 @@ public class ChargeService extends BaseService { listWrapper.eq("charge_order_code", chargeOrder.getCode()); listWrapper.eq("goods_id", log.getGoodsId()); ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper); - if (!traceabilityCodeMap.containsKey(log.getGoodsId())){ - String traceabilityCode = chargeGoodsList.getTraceabilityCode(); - List traceabilityCodes = traceabilityCode==null?new ArrayList<>() - :new ArrayList<>(Arrays.asList(traceabilityCode.split(","))); - traceabilityCodeMap.put(log.getGoodsId(),traceabilityCodes); + if (!traceabilityCodeMap.containsKey(log.getGoodsId())) { + String traceabilityCode = chargeGoodsList.getTraceabilityCode(); + List traceabilityCodes = traceabilityCode == null ? new ArrayList<>() + : new ArrayList<>(Arrays.asList(traceabilityCode.split(","))); + traceabilityCodeMap.put(log.getGoodsId(), traceabilityCodes); } Iterator iterator = traceabilityCodeMap.get(log.getGoodsId()).iterator(); int count = 0; Integer iteratorCount = 0; - if (chargeGoodsList.getUnit().equals(dbGoods.getPackagingUnit())){ - iteratorCount=chargeGoodsList.getNumber(); - }else { + if (chargeGoodsList.getUnit().equals(dbGoods.getPackagingUnit())) { + iteratorCount = chargeGoodsList.getNumber(); + } else { iteratorCount = (int) Math.ceil((double) chargeGoodsList.getNumber() / dbGoods.getMinPackagingNumber()); } List selectedCode = new ArrayList<>(); - while (iterator.hasNext() && count diagnosisUpdate = new UpdateWrapper<>(); @@ -950,6 +998,7 @@ public class ChargeService extends BaseService { } } + /** * 根据订单号获取订单详情 小票打印用 */ @@ -971,7 +1020,7 @@ public class ChargeService extends BaseService { ChargePrintOrderVo chargePrintOrderVo = new ChargePrintOrderVo(); BeanUtils.copyProperties(dbChargeOrder, chargePrintOrderVo); OrganizationMember organizationMember = organizationMemberMapper.selectById(dbChargeOrder.getSalePersonId()); - if (organizationMember != null){ + if (organizationMember != null) { chargePrintOrderVo.setSalePersonName(organizationMember.getName()); } chargeOrderPrintVo.setChargeOrder(chargePrintOrderVo); @@ -979,13 +1028,12 @@ public class ChargeService extends BaseService { chargeOrderPrintVo.setChargeItemLists(chargeItemLists); chargeOrderPrintVo.setChargeSocialPayLog(socialPayLog); PatientPrintInfoVo patientPrintInfoVo = new PatientPrintInfoVo(); - if (patientInfo != null){ + if (patientInfo != null) { BeanUtils.copyProperties(patientInfo, patientPrintInfoVo); - patientPrintInfoVo.setSexStr(patientInfo.getSex() == 1?"男":"女"); + patientPrintInfoVo.setSexStr(patientInfo.getSex() == 1 ? "男" : "女"); } - chargeOrderPrintVo.setPatientInfo(patientPrintInfoVo); return chargeOrderPrintVo; @@ -993,12 +1041,13 @@ public class ChargeService extends BaseService { /** * 根据诊断id和状态查询订单 + * * @param diagnosisCode * @return */ public ChargeOrder getOrderByDiagnosisCode(String diagnosisCode) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("diagnosis_code",diagnosisCode); + queryWrapper.eq("diagnosis_code", diagnosisCode); queryWrapper.last("limit 1"); return chargeOrderMapper.selectOne(queryWrapper); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java b/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java index d135de6..f9735d4 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java @@ -265,7 +265,11 @@ public class StatisticsService extends BaseService { chrgitmLvOverview.setChrgitmLv(chrgitmLvEnum.getCode()); chrgitmLvOverview.setName(chrgitmLvEnum.getName()); chrgitmLvOverview.setCount(count); - String ratio =String.format("%.2f", (count * 100.0 / totalCount)); + String ratio = "0.00"; + if (totalCount != 0){ + ratio =String.format("%.2f", (count * 100.0 / totalCount)); + } + chrgitmLvOverview.setRatio(ratio+"%"); chrgitmLvInfoList.add(chrgitmLvOverview); }