Compare commits

..

No commits in common. "54802889235b5f0e54f41104078950944f3add03" and "ffdc8ebec72fb3e2bb008252f01cbb0f753985a2" have entirely different histories.

6 changed files with 119 additions and 103 deletions

View File

@ -0,0 +1,76 @@
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,21 +5,22 @@ 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 java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 收费服务详情 * 收费服务详情
* </p> * </p>
* *
* @author NiuZiYuan * @author NiuZiYuan
* @since 2025-05-21 * @since 2025-04-24
*/ */
@Getter @Getter
@Setter @Setter
@ -70,7 +71,4 @@ public class ChargeItemList implements Serializable {
@ApiModelProperty("日期") @ApiModelProperty("日期")
private LocalDate createDate; private LocalDate createDate;
@ApiModelProperty("是否为组套 0为false 1为true")
private Boolean isGroup;
} }

View File

@ -40,8 +40,6 @@ 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,7 +59,4 @@ public class ItemGroupList implements Serializable {
@ApiModelProperty("item表主键") @ApiModelProperty("item表主键")
private Integer itemId; private Integer itemId;
@ApiModelProperty("数量")
private Integer number;
} }

View File

@ -26,8 +26,6 @@ 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;
@ -44,8 +42,6 @@ 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;
@ -107,8 +103,6 @@ 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;
@ -157,8 +151,6 @@ 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);
@ -168,8 +160,6 @@ 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<>();
@ -213,64 +203,24 @@ 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()); ChargeItemList itemList = new ChargeItemList();
if (dbService == null) { String fsn = StringUtil.getCode("FSN");
throw new MessageException("服务项目不存在"); itemList.setChargeOrderCode(code);
} itemList.setServiceId(service.getId());
//组套逻辑
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();
itemList.setChargeOrderCode(code);
itemList.setServiceId(itemGroup.getId());
itemList.setPreUnitPrice(itemGroup.getUnitPrice()); itemList.setPreUnitPrice(service.getUnitPrice());
itemList.setUnitPrice(itemGroup.getUnitPrice()); itemList.setUnitPrice(service.getSelectedPrice());
itemList.setNumber(itemGroup.getNumber()); itemList.setNumber(service.getSelectedNum());
itemList.setSubTotalPrice(service.getUnitPrice());
itemList.setUnit(itemGroup.getUnit()); itemList.setUnit(service.getSelectedUnit());
itemList.setName(itemGroup.getName()); itemList.setName(service.getItemName());
itemList.setFeedetlSn(fsn); itemList.setFeedetlSn(fsn);
itemList.setCreateDate(nowLocalDate); itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime); itemList.setCreateTime(nowLocalDateTime);
itemList.setIsGroup(true); chargeServiceLists.add(itemList);
BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum()));
BigDecimal subPrice = itemList.getUnitPrice().multiply(BigDecimal.valueOf(itemGroup.getNumber())); preTotalPrice = preTotalPrice.add(subPrice);
itemList.setSubTotalPrice(subPrice); totalPrice = totalPrice.add(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); chargeItemListMapper.insert(chargeServiceLists);
@ -375,7 +325,7 @@ public class ChargeService extends BaseService {
ChargeDetailVo detailVo = new ChargeDetailVo(); ChargeDetailVo detailVo = new ChargeDetailVo();
BeanUtils.copyProperties(chargeOrder, detailVo); BeanUtils.copyProperties(chargeOrder, detailVo);
OrganizationMember organizationMember = organizationMemberMapper.selectById(chargeOrder.getSalePersonId()); 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.setDiagnosisMedicalRecord(diagnosisMedicalRecordMapper.selectByDiagnosisCode(chargeOrder.getDiagnosisCode()));
detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId())); detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId()));
detailVo.setServiceDetail(chargeItemListMapper.selectByCode(chargeOrder.getCode())); detailVo.setServiceDetail(chargeItemListMapper.selectByCode(chargeOrder.getCode()));
@ -459,6 +409,8 @@ 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) {
@ -774,27 +726,27 @@ public class ChargeService extends BaseService {
listWrapper.eq("charge_order_code", chargeOrder.getCode()); listWrapper.eq("charge_order_code", chargeOrder.getCode());
listWrapper.eq("goods_id", log.getGoodsId()); listWrapper.eq("goods_id", log.getGoodsId());
ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper); ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper);
if (!traceabilityCodeMap.containsKey(log.getGoodsId())) { if (!traceabilityCodeMap.containsKey(log.getGoodsId())){
String traceabilityCode = chargeGoodsList.getTraceabilityCode(); String traceabilityCode = chargeGoodsList.getTraceabilityCode();
List<String> traceabilityCodes = traceabilityCode == null ? new ArrayList<>() List<String> traceabilityCodes = traceabilityCode==null?new ArrayList<>()
: new ArrayList<>(Arrays.asList(traceabilityCode.split(","))); :new ArrayList<>(Arrays.asList(traceabilityCode.split(",")));
traceabilityCodeMap.put(log.getGoodsId(), traceabilityCodes); traceabilityCodeMap.put(log.getGoodsId(),traceabilityCodes);
} }
Iterator<String> iterator = traceabilityCodeMap.get(log.getGoodsId()).iterator(); Iterator<String> iterator = traceabilityCodeMap.get(log.getGoodsId()).iterator();
int count = 0; int count = 0;
Integer iteratorCount = 0; Integer iteratorCount = 0;
if (chargeGoodsList.getUnit().equals(dbGoods.getPackagingUnit())) { if (chargeGoodsList.getUnit().equals(dbGoods.getPackagingUnit())){
iteratorCount = chargeGoodsList.getNumber(); iteratorCount=chargeGoodsList.getNumber();
} else { }else {
iteratorCount = (int) Math.ceil((double) chargeGoodsList.getNumber() / dbGoods.getMinPackagingNumber()); iteratorCount = (int) Math.ceil((double) chargeGoodsList.getNumber() / dbGoods.getMinPackagingNumber());
} }
List<String> selectedCode = new ArrayList<>(); List<String> selectedCode = new ArrayList<>();
while (iterator.hasNext() && count < iteratorCount) { while (iterator.hasNext() && count<iteratorCount) {
String traceabilityCode = iterator.next(); String traceabilityCode = iterator.next();
selectedCode.add(traceabilityCode); selectedCode.add(traceabilityCode);
iterator.remove(); iterator.remove();
} }
chargeInventoryLog.setTraceabilityCode(String.join(",", selectedCode)); chargeInventoryLog.setTraceabilityCode(String.join(",",selectedCode));
chargeInventoryLog.setFeedetlSn(chargeGoodsList.getFeedetlSn()); chargeInventoryLog.setFeedetlSn(chargeGoodsList.getFeedetlSn());
chargeInventoryLog.setCreateTime(LocalDateTime.now()); chargeInventoryLog.setCreateTime(LocalDateTime.now());
chargeInventoryLog.setGoodsType(chargeGoodsList.getType()); chargeInventoryLog.setGoodsType(chargeGoodsList.getType());
@ -932,7 +884,7 @@ public class ChargeService extends BaseService {
//诊断状态改为已退费 //诊断状态改为已退费
Diagnosis diagnosis = diagnosisMapper.selectByCode(chargeOrder.getDiagnosisCode()); Diagnosis diagnosis = diagnosisMapper.selectByCode(chargeOrder.getDiagnosisCode());
if (diagnosis == null) { if (diagnosis == null){
throw new MessageException("诊断不存在"); throw new MessageException("诊断不存在");
} }
UpdateWrapper<Diagnosis> diagnosisUpdate = new UpdateWrapper<>(); UpdateWrapper<Diagnosis> diagnosisUpdate = new UpdateWrapper<>();
@ -998,7 +950,6 @@ public class ChargeService extends BaseService {
} }
} }
/** /**
* 根据订单号获取订单详情 小票打印用 * 根据订单号获取订单详情 小票打印用
*/ */
@ -1020,7 +971,7 @@ public class ChargeService extends BaseService {
ChargePrintOrderVo chargePrintOrderVo = new ChargePrintOrderVo(); ChargePrintOrderVo chargePrintOrderVo = new ChargePrintOrderVo();
BeanUtils.copyProperties(dbChargeOrder, chargePrintOrderVo); BeanUtils.copyProperties(dbChargeOrder, chargePrintOrderVo);
OrganizationMember organizationMember = organizationMemberMapper.selectById(dbChargeOrder.getSalePersonId()); OrganizationMember organizationMember = organizationMemberMapper.selectById(dbChargeOrder.getSalePersonId());
if (organizationMember != null) { if (organizationMember != null){
chargePrintOrderVo.setSalePersonName(organizationMember.getName()); chargePrintOrderVo.setSalePersonName(organizationMember.getName());
} }
chargeOrderPrintVo.setChargeOrder(chargePrintOrderVo); chargeOrderPrintVo.setChargeOrder(chargePrintOrderVo);
@ -1028,12 +979,13 @@ public class ChargeService extends BaseService {
chargeOrderPrintVo.setChargeItemLists(chargeItemLists); chargeOrderPrintVo.setChargeItemLists(chargeItemLists);
chargeOrderPrintVo.setChargeSocialPayLog(socialPayLog); chargeOrderPrintVo.setChargeSocialPayLog(socialPayLog);
PatientPrintInfoVo patientPrintInfoVo = new PatientPrintInfoVo(); PatientPrintInfoVo patientPrintInfoVo = new PatientPrintInfoVo();
if (patientInfo != null) { if (patientInfo != null){
BeanUtils.copyProperties(patientInfo, patientPrintInfoVo); BeanUtils.copyProperties(patientInfo, patientPrintInfoVo);
patientPrintInfoVo.setSexStr(patientInfo.getSex() == 1 ? "" : ""); patientPrintInfoVo.setSexStr(patientInfo.getSex() == 1?"":"");
} }
chargeOrderPrintVo.setPatientInfo(patientPrintInfoVo); chargeOrderPrintVo.setPatientInfo(patientPrintInfoVo);
return chargeOrderPrintVo; return chargeOrderPrintVo;
@ -1041,13 +993,12 @@ public class ChargeService extends BaseService {
/** /**
* 根据诊断id和状态查询订单 * 根据诊断id和状态查询订单
*
* @param diagnosisCode * @param diagnosisCode
* @return * @return
*/ */
public ChargeOrder getOrderByDiagnosisCode(String diagnosisCode) { public ChargeOrder getOrderByDiagnosisCode(String diagnosisCode) {
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>(); QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("diagnosis_code", diagnosisCode); queryWrapper.eq("diagnosis_code",diagnosisCode);
queryWrapper.last("limit 1"); queryWrapper.last("limit 1");
return chargeOrderMapper.selectOne(queryWrapper); return chargeOrderMapper.selectOne(queryWrapper);
} }

View File

@ -265,11 +265,7 @@ 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 = "0.00"; String ratio =String.format("%.2f", (count * 100.0 / totalCount));
if (totalCount != 0){
ratio =String.format("%.2f", (count * 100.0 / totalCount));
}
chrgitmLvOverview.setRatio(ratio+"%"); chrgitmLvOverview.setRatio(ratio+"%");
chrgitmLvInfoList.add(chrgitmLvOverview); chrgitmLvInfoList.add(chrgitmLvOverview);
} }