带组套的生成订单逻辑

This commit is contained in:
LiJianZhao 2025-05-21 17:26:33 +08:00
parent 85ba05ec5a
commit 3bd775dd88
6 changed files with 103 additions and 119 deletions

View File

@ -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;
/**
* <p>
* 诊疗项目
* </p>
*
* @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;
}

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-24 * @since 2025-05-21
*/ */
@Getter @Getter
@Setter @Setter
@ -71,4 +70,7 @@ public class ChargeItemList implements Serializable {
@ApiModelProperty("日期") @ApiModelProperty("日期")
private LocalDate createDate; private LocalDate createDate;
@ApiModelProperty("是否为组套 0为false 1为true")
private Boolean isGroup;
} }

View File

@ -40,6 +40,8 @@ public class ChargeItemListVo {
@ApiModelProperty("逻辑删除") @ApiModelProperty("逻辑删除")
private Integer delFlag; private Integer delFlag;
@ApiModelProperty("是否为组套 0为false 1为true")
private Boolean isGroup;
@ApiModelProperty("选择的单价") @ApiModelProperty("选择的单价")
private BigDecimal selectedPrice; private BigDecimal selectedPrice;

View File

@ -59,4 +59,7 @@ public class ItemGroupList implements Serializable {
@ApiModelProperty("item表主键") @ApiModelProperty("item表主键")
private Integer itemId; private Integer itemId;
@ApiModelProperty("数量")
private Integer number;
} }

View File

@ -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.Inventory;
import com.syjiaer.clinic.server.entity.inventory.InventoryLog; import com.syjiaer.clinic.server.entity.inventory.InventoryLog;
import com.syjiaer.clinic.server.entity.item.Item; 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.manager.ManagerUser;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember; import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.organization.OrganizationSection; 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.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper; import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper;
import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper; 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.item.ItemMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
@ -103,6 +107,8 @@ public class ChargeService extends BaseService {
@Autowired @Autowired
private InventoryLogMapper inventoryLogMapper; private InventoryLogMapper inventoryLogMapper;
@Autowired @Autowired
private ItemGroupListMapper itemGroupListMapper;
@Autowired
private SocialRequest socialRequest; private SocialRequest socialRequest;
@Autowired @Autowired
private DiagnosisMedicalRecordMapper diagnosisMedicalRecordMapper; private DiagnosisMedicalRecordMapper diagnosisMedicalRecordMapper;
@ -151,6 +157,8 @@ public class ChargeService extends BaseService {
diagnosisMedicalRecordMapper.updateById(medicalRecord); diagnosisMedicalRecordMapper.updateById(medicalRecord);
List<DiagnosisMedicalItemList> mdItmeList = new ArrayList<>(); List<DiagnosisMedicalItemList> mdItmeList = new ArrayList<>();
for (ChargeItemListVo item : dto.getItemDetail()) { for (ChargeItemListVo item : dto.getItemDetail()) {
DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList(); DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList();
itemDetail.setItemId(item.getId()); itemDetail.setItemId(item.getId());
itemDetail.setDiagnosisCode(diaCode); itemDetail.setDiagnosisCode(diaCode);
@ -160,6 +168,8 @@ public class ChargeService extends BaseService {
itemDetail.setUnit(item.getSelectedUnit()); itemDetail.setUnit(item.getSelectedUnit());
itemDetail.setUnitPrice(item.getSelectedPrice()); itemDetail.setUnitPrice(item.getSelectedPrice());
mdItmeList.add(itemDetail); mdItmeList.add(itemDetail);
} }
diagnosisMedicalItemListMapper.insert(mdItmeList); diagnosisMedicalItemListMapper.insert(mdItmeList);
List<DiagnosisMedicalGoodsList> mdGoodsList = new ArrayList<>(); List<DiagnosisMedicalGoodsList> mdGoodsList = new ArrayList<>();
@ -203,7 +213,45 @@ public class ChargeService extends BaseService {
List<ChargeItemList> chargeServiceLists = new ArrayList<>(); List<ChargeItemList> chargeServiceLists = new ArrayList<>();
for ( for (
ChargeItemListVo service : dto.getItemDetail()) { ChargeItemListVo service : dto.getItemDetail()) {
Item dbService = itemMapper.selectById(service.getId());
if (dbService == null) {
throw new MessageException("服务项目不存在");
}
//组套逻辑
if (dbService.getIsGroup()) {
List<ItemGroupList> itemGroupList = itemGroupListMapper.selectList(new QueryWrapper<ItemGroupList>().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(); ChargeItemList itemList = new ChargeItemList();
itemList.setChargeOrderCode(code);
itemList.setServiceId(itemGroup.getId());
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"); String fsn = StringUtil.getCode("FSN");
itemList.setChargeOrderCode(code); itemList.setChargeOrderCode(code);
itemList.setServiceId(service.getId()); itemList.setServiceId(service.getId());
@ -217,11 +265,13 @@ public class ChargeService extends BaseService {
itemList.setFeedetlSn(fsn); itemList.setFeedetlSn(fsn);
itemList.setCreateDate(nowLocalDate); itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime); itemList.setCreateTime(nowLocalDateTime);
itemList.setIsGroup(false);
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);
} }
}
chargeItemListMapper.insert(chargeServiceLists); chargeItemListMapper.insert(chargeServiceLists);
List<ChargeGoodsList> chargeGoodsLists = new ArrayList<>(); List<ChargeGoodsList> chargeGoodsLists = new ArrayList<>();
@ -409,8 +459,6 @@ public class ChargeService extends BaseService {
this.recordChargeLog(order, ChargeSourceEnum.CHARGE, ChargeTypeEnum.CHARGE); this.recordChargeLog(order, ChargeSourceEnum.CHARGE, ChargeTypeEnum.CHARGE);
} }
public void uploadCostDetails(String changeOrderCode) { public void uploadCostDetails(String changeOrderCode) {
@ -950,6 +998,7 @@ public class ChargeService extends BaseService {
} }
} }
/** /**
* 根据订单号获取订单详情 小票打印用 * 根据订单号获取订单详情 小票打印用
*/ */
@ -985,7 +1034,6 @@ public class ChargeService extends BaseService {
} }
chargeOrderPrintVo.setPatientInfo(patientPrintInfoVo); chargeOrderPrintVo.setPatientInfo(patientPrintInfoVo);
return chargeOrderPrintVo; return chargeOrderPrintVo;
@ -993,6 +1041,7 @@ public class ChargeService extends BaseService {
/** /**
* 根据诊断id和状态查询订单 * 根据诊断id和状态查询订单
*
* @param diagnosisCode * @param diagnosisCode
* @return * @return
*/ */

View File

@ -265,7 +265,11 @@ public class StatisticsService extends BaseService {
chrgitmLvOverview.setChrgitmLv(chrgitmLvEnum.getCode()); chrgitmLvOverview.setChrgitmLv(chrgitmLvEnum.getCode());
chrgitmLvOverview.setName(chrgitmLvEnum.getName()); chrgitmLvOverview.setName(chrgitmLvEnum.getName());
chrgitmLvOverview.setCount(count); 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+"%"); chrgitmLvOverview.setRatio(ratio+"%");
chrgitmLvInfoList.add(chrgitmLvOverview); chrgitmLvInfoList.add(chrgitmLvOverview);
} }