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