带组套的生成订单逻辑
This commit is contained in:
parent
85ba05ec5a
commit
3bd775dd88
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -59,4 +59,7 @@ public class ItemGroupList implements Serializable {
|
||||||
|
|
||||||
@ApiModelProperty("item表主键")
|
@ApiModelProperty("item表主键")
|
||||||
private Integer itemId;
|
private Integer itemId;
|
||||||
|
|
||||||
|
@ApiModelProperty("数量")
|
||||||
|
private Integer number;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue