payTypeRevenue;
+
+
}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java b/src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java
new file mode 100644
index 0000000..b39a64e
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java
@@ -0,0 +1,28 @@
+package com.syjiaer.clinic.server.entity.statistics;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SalePersonReportVo {
+ private Integer salePersonId;
+ private String salePersonName;
+ private BigDecimal totalIncome;
+ private BigDecimal wechatIncome;
+ private BigDecimal aliPayIncome;
+ private BigDecimal cashIncome;
+ private BigDecimal otherIncome;
+ private BigDecimal socialIncome;
+ private Long count;
+
+ public SalePersonReportVo() {
+ this.totalIncome = BigDecimal.ZERO;
+ this.wechatIncome = BigDecimal.ZERO;
+ this.aliPayIncome = BigDecimal.ZERO;
+ this.cashIncome = BigDecimal.ZERO;
+ this.otherIncome = BigDecimal.ZERO;
+ this.socialIncome = BigDecimal.ZERO;
+ this.count = 0L;
+ }
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java b/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java
new file mode 100644
index 0000000..1594ad3
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java
@@ -0,0 +1,19 @@
+package com.syjiaer.clinic.server.entity.statistics;
+
+import lombok.Data;
+
+@Data
+public class TipCountVo {
+ //待诊断数量
+ private Long waitDiagnosisCount;
+ //在诊数量
+ private Long diagnosingCount;
+ //完诊数量
+ private Long completeDiaCount;
+ //已收费数量
+ private Long chargedCount;
+ //未收费数量
+ private Long unchargedCount;
+
+
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java
index f89ace6..ebb9ef4 100644
--- a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java
+++ b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java
@@ -4,6 +4,9 @@ import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
+import java.util.List;
+import java.util.Map;
+
/**
*
@@ -16,6 +19,7 @@ import org.apache.ibatis.annotations.Select;
public interface ChargeOrderMapper extends BaseMapper {
@Select("select * from charge_order where code = #{code}")
ChargeOrder selectByCode(String code);
-
+ @Select("SELECT sale_person_id,pay_type,\"sum\"(total_price) ,\"count\"(0) FROM \"public\".\"charge_order\" GROUP BY sale_person_id,pay_type")
+ List> selectSaleReport();
}
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java
index 913005b..c59bde3 100644
--- a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java
+++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java
@@ -20,7 +20,7 @@ public interface InventoryMapper extends BaseMapper {
@Select("SELECT" +
" inventory.*,goods.expiry_warn_days,goods.unit_price,EXTRACT(EPOCH FROM AGE(expiry_date, CURRENT_DATE)) / 86400 AS remaining_days" +
" FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" +
- " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0")
+ " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 ORDER BY inventory.expiry_date ASC LIMIT 20 ")
List> selectExpiryWarn();
}
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java
index 052ee61..4a0d5c6 100644
--- a/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java
+++ b/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java
@@ -2,9 +2,13 @@ package com.syjiaer.clinic.server.mapper.organization;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
+import com.syjiaer.clinic.server.entity.organization.dto.DockerSearchQuery;
+import com.syjiaer.clinic.server.entity.organization.vo.MemberVo;
+import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.io.Serializable;
+import java.util.List;
/**
@@ -16,5 +20,7 @@ import java.io.Serializable;
* @since 2025-04-11
*/
public interface OrganizationMemberMapper extends BaseMapper {
+
+ List selectDetailByQuery(DockerSearchQuery query);
}
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 23f14c2..f90a3e7 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
@@ -10,16 +10,11 @@ import com.syjiaer.clinic.server.common.api.output.OM2207A;
import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.config.Config;
import com.syjiaer.clinic.server.common.constants.Constants;
-import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum;
-import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum;
-import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum;
-import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum;
+import com.syjiaer.clinic.server.common.enums.*;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.StringUtil;
import com.syjiaer.clinic.server.common.vo.Page;
-import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
-import com.syjiaer.clinic.server.entity.charge.ChargeItemList;
-import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
+import com.syjiaer.clinic.server.entity.charge.*;
import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery;
import com.syjiaer.clinic.server.entity.charge.dto.ChargeSaveDto;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo;
@@ -35,12 +30,12 @@ import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
+import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.entity.social.SocialDirectory;
import com.syjiaer.clinic.server.entity.social.SocialItem;
-import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
-import com.syjiaer.clinic.server.mapper.charge.ChargeItemListMapper;
-import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
+import com.syjiaer.clinic.server.entity.social.SocialUser;
+import com.syjiaer.clinic.server.mapper.charge.*;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalGoodsListMapper;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalItemListMapper;
@@ -54,6 +49,7 @@ import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper;
import com.syjiaer.clinic.server.mapper.social.SocialItemMapper;
+import com.syjiaer.clinic.server.mapper.social.SocialUserMapper;
import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.charge.vo.PaymentMethodVo;
import com.syjiaer.clinic.server.service.charge.vo.RetailOrderDailyChargingReportVo;
@@ -69,16 +65,19 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Service
public class ChargeService extends BaseService {
@Autowired
private ChargeOrderMapper chargeOrderMapper;
@Autowired
+ private ChargeLogMapper chargeLogMapper;
+ @Autowired
+ private ChargeInventoryLogMapper chargeInventoryLogMapper;
+ @Autowired
+ private SocialUserMapper socialUserMapper;
+ @Autowired
private ChargeItemListMapper chargeItemListMapper;
@Autowired
private ChargeGoodsListMapper chargeGoodsListMapper;
@@ -129,7 +128,7 @@ public class ChargeService extends BaseService {
}
Diagnosis diagnosis = diagnosisMapper.selectById(dto.getId());
//清除该诊断的病例信息
- if (diagnosis != null){
+ if (diagnosis != null) {
String diaCode = diagnosis.getCode();
diagnosisMedicalGoodsListMapper.delete(new QueryWrapper().eq("diagnosis_code", diaCode));
diagnosisMedicalItemListMapper.delete(new QueryWrapper().eq("diagnosis_code", diaCode));
@@ -137,8 +136,8 @@ public class ChargeService extends BaseService {
DiagnosisMedicalRecord medicalRecord = new DiagnosisMedicalRecord();
BeanUtils.copyProperties(dto.getDiagnosisMedicalRecord(), medicalRecord);
diagnosisMedicalRecordMapper.updateById(medicalRecord);
- List mdItmeList= new ArrayList<>();
- for (ChargeItemListVo item : dto.getItemDetail()){
+ List mdItmeList = new ArrayList<>();
+ for (ChargeItemListVo item : dto.getItemDetail()) {
DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList();
itemDetail.setItemId(item.getId());
itemDetail.setDiagnosisCode(diaCode);
@@ -150,8 +149,8 @@ public class ChargeService extends BaseService {
mdItmeList.add(itemDetail);
}
diagnosisMedicalItemListMapper.insert(mdItmeList);
- List mdGoodsList= new ArrayList<>();
- for (ChargeGoodsListVo goods : dto.getGoodsDetail()){
+ List mdGoodsList = new ArrayList<>();
+ for (ChargeGoodsListVo goods : dto.getGoodsDetail()) {
DiagnosisMedicalGoodsList goodDetail = new DiagnosisMedicalGoodsList();
goodDetail.setGoodsId(goods.getId());
goodDetail.setDiagnosisCode(diaCode);
@@ -169,14 +168,14 @@ public class ChargeService extends BaseService {
QueryWrapper listWrapper = new QueryWrapper<>();
listWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode());
- listWrapper.eq("status",RetailOrderStatusEnum.FINISHED.getCode());
+ listWrapper.eq("status", RetailOrderStatusEnum.FINISHED.getCode());
List dbList = chargeOrderMapper.selectList(listWrapper);
- if (!dbList.isEmpty()){
+ if (!dbList.isEmpty()) {
throw new MessageException("该诊断已完成收费");
}
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode());
- queryWrapper.eq("status",RetailOrderStatusEnum.UNFINISHED.getCode());
+ queryWrapper.eq("status", RetailOrderStatusEnum.UNFINISHED.getCode());
chargeOrderMapper.delete(queryWrapper);
ManagerUser user = getManagerUser();
@@ -202,7 +201,7 @@ public class ChargeService extends BaseService {
itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime);
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);
totalPrice = totalPrice.add(subPrice);
}
@@ -248,6 +247,7 @@ public class ChargeService extends BaseService {
chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode());
chargeOrder.setPatientId(dto.getPatientInfo().getId());
chargeOrder.setDiagnosisCode(dto.getDiagnosisMedicalRecord().getDiagnosisCode());
+ chargeOrder.setSalePersonId(dto.getPatientRegistration().getOrganizationDoctorId());
chargeOrderMapper.insert(chargeOrder);
return chargeOrder;
@@ -265,16 +265,19 @@ public class ChargeService extends BaseService {
if (query.getPatientName() != null) {
queryWrapper.like("patient_name", query.getPatientName());
}
+ if (query.getPatientId() != null){
+ queryWrapper.eq("patient_id", query.getPatientId());
+ }
Page orderPage = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, chargeOrderMapper, "create_datetime", false);
List voList = new ArrayList<>();
for (ChargeOrder chargeOrder : orderPage.getList()) {
ChargeDetailVo detailVo = new ChargeDetailVo();
BeanUtils.copyProperties(chargeOrder, detailVo);
+ detailVo.setDiagnosisMedicalRecord(diagnosisMedicalRecordMapper.selectByDiagnosisCode(chargeOrder.getDiagnosisCode()));
detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId()));
- detailVo.setServiceDetail(chargeItemListMapper.selectList(new QueryWrapper()
- .eq("charge_order_code", chargeOrder.getCode())));
+ detailVo.setServiceDetail(chargeItemListMapper.selectByCode(chargeOrder.getCode()));
- detailVo.setGoodsDetail(chargeGoodsListMapper.selectDetailByCode(chargeOrder.getCode()));
+ detailVo.setGoodsDetail(chargeGoodsListMapper.selectByCode(chargeOrder.getCode()));
voList.add(detailVo);
}
Page resultPage = new Page<>();
@@ -284,7 +287,7 @@ public class ChargeService extends BaseService {
return resultPage;
}
-// @Transactional(rollbackFor = Exception.class)
+ // @Transactional(rollbackFor = Exception.class)
// public ChargeOrder updateOrCreate(ChargeOrderDto dto) {
// //创建患者
// PatientInfo patientInfo = dto.getPatientInfo();
@@ -330,6 +333,8 @@ public class ChargeService extends BaseService {
updateOrder.setPayType(payType);
updateOrder.setPayTime(LocalDateTime.now());
chargeOrderMapper.updateById(updateOrder);
+
+ order = chargeOrderMapper.selectById(id);
//扣除商品库存
List goodsLists = chargeGoodsListMapper.selectDetailByCode(order.getCode());
for (ChargeGoodsListVo goodsList : goodsLists) {
@@ -347,7 +352,11 @@ public class ChargeService extends BaseService {
log.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType());
}
inventoryLogMapper.insert(logs);
+ this.recordChargeInventoryLog(logs,order);
}
+ //记录收费日志
+ this.recordChargeLog(order, ChargeSourceEnum.CHARGE, ChargeTypeEnum.CHARGE);
+
}
@@ -371,7 +380,7 @@ public class ChargeService extends BaseService {
im2205.setPsnNo(registration.getPsnNo());
im2205.setExpContent("");
socialRequest.call2205(im2205);
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
@@ -437,7 +446,7 @@ public class ChargeService extends BaseService {
ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode);
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
//预支付只需要卡号
- String cardNumber = mdtrtCertNo.substring(0,mdtrtCertNo.indexOf("|"));
+ String cardNumber = mdtrtCertNo.substring(0, mdtrtCertNo.indexOf("|"));
PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId());
IM2206A im2206A = new IM2206A();
@@ -483,7 +492,7 @@ public class ChargeService extends BaseService {
OM2207A om2207A = socialRequest.call2207A(im2207A);
//完成订单
chargeService.completeOrder(order.getId(), RetailOrderPayTypeEnum.MEDICARE.getCode());
- return om2207A;
+ return om2207A;
}
@@ -494,8 +503,8 @@ public class ChargeService extends BaseService {
* @param endDateTime
* @return
*/
- public Map dailyChargingReport(LocalDateTime startDateTime, LocalDateTime endDateTime) {
- Map result = new HashMap<>();
+ public List dailyChargingReport(LocalDateTime startDateTime, LocalDateTime endDateTime) {
+ Map result = new TreeMap<>();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.between("create_datetime", startDateTime, endDateTime)
.eq("status", RetailOrderStatusEnum.FINISHED.getCode())
@@ -518,13 +527,21 @@ public class ChargeService extends BaseService {
}
result.put(dateKey, retailOrderDailyChargingReportVo);
}
-
+ List voList = new ArrayList<>();
result.forEach((key, value) -> {
BigDecimal grossMargin = value.getTotalMoney().subtract(value.getTotalCost());
value.setGrossMargin(grossMargin);
- value.setGrossProfitRate(String.format("%.2f%%", grossMargin.divide(value.getTotalMoney(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
+ BigDecimal divisor = value.getTotalMoney();
+ if (divisor.compareTo(BigDecimal.ZERO) == 0) {
+ // 处理除数为零的情况,例如抛出自定义异常或返回默认值
+ value.setGrossProfitRate("0.00%");
+ }else {
+ value.setGrossProfitRate(String.format("%.2f%%", grossMargin.divide(value.getTotalMoney(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
+ }
+ value.setDate(LocalDate.parse(key));
+ voList.add(value);
});
- return result;
+ return voList;
}
//获取各支付方式支付的金额
@@ -553,6 +570,98 @@ public class ChargeService extends BaseService {
public ChargeOrder getByCode(String code) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code", code);
- return chargeOrderMapper.selectOne(queryWrapper);
+ return chargeOrderMapper.selectOne(queryWrapper);
+ }
+
+ /**
+ * 查询患者消费记录
+ *
+ * @param patientId
+ * @return
+ */
+ public List getListByPatientId(Integer patientId) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("patient_id", patientId);
+ return chargeOrderMapper.selectList(queryWrapper);
+ }
+
+
+ /**
+ * 收款 退款 记录
+ */
+ public void recordChargeLog(ChargeOrder chargeOrder, ChargeSourceEnum sourceEnum, ChargeTypeEnum chargeType){
+ ChargeLog chargeLog = new ChargeLog();
+ String customer = null;
+ if (chargeOrder.getPatientId() != null){
+ PatientInfo patient = patientInfoMapper.selectById(chargeOrder.getPatientId());
+ customer = patient.getName();
+ }else if (chargeOrder.getSocialUserId() != null){
+ SocialUser socialUser = socialUserMapper.selectById(chargeOrder.getSocialUserId());
+ customer = socialUser.getPsnName();
+ }else {
+ customer = "-";
+ }
+ chargeLog.setSource(sourceEnum.getType());
+ chargeLog.setCustomer(customer);
+ chargeLog.setType(chargeType.getChargeType());
+ chargeLog.setOriginalPrice(chargeOrder.getPreTotalPrice());
+ chargeLog.setReceivable(chargeOrder.getTotalPrice());
+ chargeLog.setNetReceipts(chargeOrder.getTotalPrice());
+ chargeLog.setDiscount(chargeOrder.getTotalPrice().subtract(chargeOrder.getPreTotalPrice()));
+ chargeLog.setPayType(chargeOrder.getPayType());
+ if (chargeOrder.getSalePersonId() != null){
+ OrganizationMember organizationMember = organizationMemberMapper.selectById(chargeOrder.getSalePersonId());
+ chargeLog.setSalePersonName(organizationMember.getName());
+ chargeLog.setSalePersonId(chargeOrder.getSalePersonId());
+ }
+ chargeLog.setChargeTime(LocalDateTime.now());
+ chargeLog.setProjectCode(chargeOrder.getCode());
+ chargeLogMapper.insert(chargeLog);
+ }
+ /**
+ * 销售库存变更 日志
+ */
+ public void recordChargeInventoryLog(List logs,ChargeOrder chargeOrder){
+ List chargeInventoryLogs = new ArrayList<>();
+ for (InventoryLog log : logs){
+ ChargeInventoryLog chargeInventoryLog = new ChargeInventoryLog();
+ chargeInventoryLog.setChargeOrderCode(chargeOrder.getCode());
+ chargeInventoryLog.setGoodsId(log.getGoodsId());
+ chargeInventoryLog.setInventoryId(log.getInventoryId());
+ chargeInventoryLog.setNumber(log.getChangeWholeNumber());
+ Goods dbGoods = goodsMapper.selectById(log.getGoodsId());
+ chargeInventoryLog.setTrdnFlag(false);
+ chargeInventoryLog.setUnit(dbGoods.getPackagingUnit());
+ chargeInventoryLog.setNumber(log.getChangeWholeNumber());
+ if (log.getChangeFragmentNumber() != 0 ){
+ chargeInventoryLog.setTrdnFlag(true);
+ chargeInventoryLog.setUnit(dbGoods.getMinPackagingUnit());
+ chargeInventoryLog.setNumber(log.getChangeWholeNumber()*dbGoods.getMinPackagingNumber()+log.getChangeFragmentNumber());
+ }
+ QueryWrapper listWrapper = new QueryWrapper<>();
+ listWrapper.eq("charge_order_code",chargeOrder.getCode());
+ listWrapper.eq("goods_id",log.getGoodsId());
+ ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper);
+ chargeInventoryLog.setFeedetlSn(chargeGoodsList.getFeedetlSn());
+ chargeInventoryLog.setCreateTime(LocalDateTime.now());
+ chargeInventoryLog.setGoodsType(chargeGoodsList.getType());
+ chargeInventoryLog.setUploadStatus(UploadStatusEnum.NoUpload.getStatus());
+ chargeInventoryLog.setType(ChargeTypeEnum.CHARGE.getChargeType());
+
+ chargeInventoryLogs.add(chargeInventoryLog);
+
+ }
+ chargeInventoryLogMapper.insert(chargeInventoryLogs);
+
+ }
+
+ /**
+ * 获取收费记录
+ * @return
+ */
+ public Page getChargeRecordPageList() {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ Page page = pageHelper(1, 20, queryWrapper, chargeLogMapper, "charge_time", false);
+ return page;
}
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java
index 9efee1c..cf12e48 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java
@@ -7,6 +7,8 @@ import java.time.LocalDate;
@Data
public class RetailOrderDailyChargingReportVo {
+ //日期
+ private LocalDate date;
//总金额
private BigDecimal totalMoney;
//总成本
diff --git a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java
index d8a2286..105a386 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java
@@ -10,12 +10,12 @@ import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.StringUtil;
import com.syjiaer.clinic.server.common.vo.Page;
-import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo;
import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis;
import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery;
import com.syjiaer.clinic.server.entity.diagnosis.dto.ItemRetailDto;
+import com.syjiaer.clinic.server.entity.diagnosis.vo.ChargeQueueVo;
import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
@@ -29,6 +29,7 @@ import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
+import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.item.ItemMapper;
@@ -78,39 +79,46 @@ public class MedicalRecordService extends BaseService {
@Autowired
private DiagnosisMapper diagnosisMapper;
@Autowired
- private PatientInfoMapper patientInfoMapper;
+ private PatientInfoMapper patientInfoMapper;
+
/*
- * 保存
- * @param saveDto 病历信息
+ * 保存
+ * @param saveDto 病历信息
*/
@Transactional(rollbackFor = Exception.class)
public void save(MedicalRecordSaveDto saveDto) {
-
+ if (saveDto == null){
+ throw new MessageException("参数不能为空");
+ }
+ if (saveDto.getDiagnosisMedicalRecord().getDiagnosisDetail() == null){
+ throw new MessageException("请填写诊断详情");
+ }
//改变挂号单状态
- PatientRegistration dbRegis = patientRegistrationMapper.selectById(saveDto.getRegistrationId());
- if (dbRegis == null){
- throw new MessageException("挂号单不存在");
+ PatientRegistration dbRegis = patientRegistrationMapper.selectById(saveDto.getRegistrationId());
+ if (dbRegis == null) {
+ throw new MessageException("挂号单不存在");
}
PatientRegistration updateRegis = new PatientRegistration();
updateRegis.setId(dbRegis.getId());
- updateRegis.setStatus(RegistrationStatusEnum.complete.getType());
+ updateRegis.setStatus(RegistrationStatusEnum.complete.getStatus());
patientRegistrationMapper.updateById(updateRegis);
//诊断主表
Diagnosis diagnosis = new Diagnosis();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("registration_id", saveDto.getRegistrationId());
+ queryWrapper.last("limit 1");
Diagnosis dbDiagnosis = diagnosisMapper.selectOne(queryWrapper);
- if (dbDiagnosis!=null){
- diagnosis.setId(dbDiagnosis.getId());
+ if (dbDiagnosis != null) {
+ diagnosis.setId(dbDiagnosis.getId());
}
String code = StringUtil.getCode("ZD");
LocalDateTime now = LocalDateTime.now();
BeanUtils.copyProperties(saveDto, diagnosis);
diagnosis.setStatus(0);
- if (diagnosis.getId() == null){
+ if (diagnosis.getId() == null) {
diagnosis.setCode(code);
diagnosis.setCreateTime(now);
- }else {
+ } else {
code = diagnosis.getCode();
}
@@ -136,8 +144,8 @@ public class MedicalRecordService extends BaseService {
itemDetail.setSocialCode(dbItem.getItemSocialCode());
itemDetail.setUnit(dbItem.getUnit());
itemDetail.setUnitPrice(dbItem.getUnitPrice());
- if (item.getSelectedNum() == null ||item.getSelectedNum() <= 0){
- throw new MessageException("["+item.getItemName()+"]数量为0");
+ if (item.getSelectedNum() == null || item.getSelectedNum() <= 0) {
+ throw new MessageException("[" + item.getItemName() + "]数量为0");
}
itemDetail.setNumber(item.getSelectedNum());
itemLists.add(itemDetail);
@@ -156,8 +164,8 @@ public class MedicalRecordService extends BaseService {
goodsDetail.setUnit(goodsRetailDto.getSelectedUnit());
goodsDetail.setUnitPrice(goodsRetailDto.getSelectedPrice());
goodsDetail.setNumber(goodsRetailDto.getSelectedNum());
- if (goodsRetailDto.getSelectedNum() == null ||goodsRetailDto.getSelectedNum() <= 0){
- throw new MessageException("["+goodsRetailDto.getName()+"]数量为0");
+ if (goodsRetailDto.getSelectedNum() == null || goodsRetailDto.getSelectedNum() <= 0) {
+ throw new MessageException("[" + goodsRetailDto.getName() + "]数量为0");
}
goodsLists.add(goodsDetail);
}
@@ -168,6 +176,7 @@ public class MedicalRecordService extends BaseService {
/**
* 根据患者的id查询病历
+ *
* @param patientId
* @return
*/
@@ -199,6 +208,7 @@ public class MedicalRecordService extends BaseService {
/**
* 根据挂单号回显病历信息
+ *
* @param regisId
* @return
*/
@@ -226,18 +236,18 @@ public class MedicalRecordService extends BaseService {
return vo;
}
- public void uploadDiagnosis(String diagnosisCode){
+ public void uploadDiagnosis(String diagnosisCode) {
Diagnosis diagnosis = diagnosisMapper.selectByCode(diagnosisCode);
- if (diagnosis == null){
+ if (diagnosis == null) {
throw new MessageException("诊断不存在");
}
DiagnosisMedicalRecord diagnosisMedicalRecord = diagnosisMedicalRecordMapper.selectByDiagnosisCode(diagnosisCode);
- if (diagnosisMedicalRecord == null){
+ if (diagnosisMedicalRecord == null) {
throw new MessageException("病历不存在");
}
PatientRegistration patientRegistration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId());
- if (patientRegistration == null){
+ if (patientRegistration == null) {
throw new MessageException("挂号单不存在");
}
OrganizationSection section = organizationSectionMapper.selectById(patientRegistration.getOrganizationSectionId());
@@ -250,7 +260,7 @@ public class MedicalRecordService extends BaseService {
IM2203A.Mdtrtinfo mdtrtinfo = new IM2203A.Mdtrtinfo();
mdtrtinfo.setMdtrt_id(patientRegistration.getMdtrtId());
mdtrtinfo.setPsn_no(patientRegistration.getPsnNo());
- mdtrtinfo.setMed_type(config.get("social","medType"));
+ mdtrtinfo.setMed_type(config.get("social", "medType"));
mdtrtinfo.setBegntime(curTime);
IM2203A.ExpContent expContent = new IM2203A.ExpContent();
expContent.setTrum_flag("0");
@@ -258,9 +268,9 @@ public class MedicalRecordService extends BaseService {
mdtrtinfo.setExp_content(expContent);
im2203A.setMdtrtinfo(mdtrtinfo);
JSONArray jsonArray = JSONArray.parseArray(diagnosisMedicalRecord.getDiagnosisDetail());
- int i =0;
+ int i = 0;
List diagList = new ArrayList<>();
- for (Object object : jsonArray){
+ for (Object object : jsonArray) {
i++;
JSONObject json = (JSONObject) object;
IM2203A.Diseinfo diag = new IM2203A.Diseinfo();
@@ -281,25 +291,63 @@ public class MedicalRecordService extends BaseService {
}
- /*
- 获取收费队列
- */
- public Page getChargeQueue(ChargeQueueQuery query) {
+
+
+ public Page getChargeQueue(ChargeQueueQuery query) {
QueryWrapper queryWrapper = new QueryWrapper<>();
+ if (query.getStatus() != null) {
+ queryWrapper.eq("status", query.getStatus());
+ }
+ Page diagnosisList = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, diagnosisMapper, "create_time", false);
- Page diagnosisList =pageHelper(query.getPageNum(), query.getPageSize(),queryWrapper,diagnosisMapper,"create_time", false);
-
- List list = new ArrayList<>();
- for (Diagnosis diagnosis : diagnosisList.getList()){
- MedicalRecordVo vo = new MedicalRecordVo();
- vo = getDetailByRegisId(diagnosis.getRegistrationId());
+ List list = new ArrayList<>();
+ for (Diagnosis diagnosis : diagnosisList.getList()) {
+ ChargeQueueVo vo = new ChargeQueueVo();
+ BeanUtils.copyProperties(diagnosis, vo);
+ PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId());
+ vo.setPatientId(registration.getPatientInfoId());
+ vo.setPatientName(registration.getName());
+ vo.setPatientGender(registration.getGender());
list.add(vo);
}
- Page page = new Page<>();
+ Page page = new Page<>();
page.setList(list);
page.setTotal_page(diagnosisList.getTotal_page());
page.setTotal_count(diagnosisList.getTotal_count());
return page;
}
+
+ public SeeDoctorInfoVo getSeeDockerInfo(Integer regisId) {
+
+ PatientRegistration registration = patientRegistrationMapper.selectById(regisId);
+ if (registration == null) {
+ throw new MessageException("挂号单不存在");
+ }
+ SeeDoctorInfoVo vo = new SeeDoctorInfoVo();
+ vo.setPatientInfo(patientInfoMapper.selectById(registration.getPatientInfoId()));
+
+ OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
+ vo.setDockerId(docker.getId());
+ vo.setDockerName(docker.getName());
+ if (docker.getSectionId() != null) {
+ OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId());
+ vo.setSectionName(section.getName());
+ }
+ QueryWrapper diagnosisQueryWrapper = new QueryWrapper<>();
+ diagnosisQueryWrapper.eq("patient_id", vo.getPatientInfo().getId());
+ diagnosisQueryWrapper.orderByDesc("create_time");
+ List diagnosisList = diagnosisMapper.selectList(diagnosisQueryWrapper);
+ if (!diagnosisList.isEmpty()) {
+ vo.setLastSeeDoctorTime(diagnosisList.get(0).getCreateTime());
+ vo.setSeeDoctorCount(diagnosisList.size());
+ }
+ vo.setSocialBalance(BigDecimal.ZERO);
+ return vo;
+ }
+
+ public MedicalRecordVo getByDiagnosisCode(String diagnosisCode) {
+ Diagnosis diagnosis = diagnosisMapper.selectByCode(diagnosisCode);
+ return getDetailByRegisId(diagnosis.getRegistrationId());
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java
index 5c35568..ec85a3f 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java
@@ -2,12 +2,16 @@ package com.syjiaer.clinic.server.service.organization;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.syjiaer.clinic.server.common.api.annotations.IMField;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.FileUtil;
import com.syjiaer.clinic.server.common.vo.Page;
+import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery;
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
+import com.syjiaer.clinic.server.entity.organization.dto.DockerSearchQuery;
import com.syjiaer.clinic.server.entity.organization.dto.OrganizationMemberSaveDto;
+import com.syjiaer.clinic.server.entity.organization.vo.MemberVo;
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
import com.syjiaer.clinic.server.service.BaseService;
@@ -145,9 +149,10 @@ public class OrganizationMemberService extends BaseService {
/*
* 获取医生列表
*/
- public List doctorList() {
- QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("role", 1);
- return organizationMemberMapper.selectList(queryWrapper);
+ public List doctorList(DockerSearchQuery dockerSearchQuery) {
+ if (dockerSearchQuery == null){
+ return new ArrayList<>();
+ }
+ return organizationMemberMapper.selectDetailByQuery(dockerSearchQuery);
}
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java
index d6a0dbb..d2a2c2d 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java
@@ -1,26 +1,273 @@
package com.syjiaer.clinic.server.service.patient;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.syjiaer.clinic.server.common.exception.MessageException;
+import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.patient.PatientInfo;
+import com.syjiaer.clinic.server.entity.vip.Vip;
+import com.syjiaer.clinic.server.entity.vip.VipExpLog;
+import com.syjiaer.clinic.server.entity.vip.VipIntegralLog;
+import com.syjiaer.clinic.server.entity.vip.VipLevelConfig;
import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
+import com.syjiaer.clinic.server.mapper.vip.VipExpLogMapper;
+import com.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper;
+import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper;
import com.syjiaer.clinic.server.service.BaseService;
+import com.syjiaer.clinic.server.service.vip.VipLevelConfigService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Iterator;
+import java.util.List;
+
@Service
public class PatientInfoService extends BaseService {
+ @Autowired
+ @Lazy
+ private PatientInfoService patientInfoService;
@Autowired
private PatientInfoMapper patientInfoMapper;
+ @Autowired
+ private VipLevelConfigMapper vipLevelConfigMapper;
+ @Autowired
+ @Lazy
+ private VipLevelConfigService vipLevelConfigService;
+ @Autowired
+ private VipExpLogMapper vipExpLogMapper;
+ @Autowired
+ private VipIntegralLogMapper vipIntegralLogMapper;
+
+ public PatientInfo save(PatientInfo patientInfo){
+ patientInfo.setCreateDatetime(LocalDateTime.now());
+ if (patientInfo.getBirthday() != null) {
+ int currentYear = LocalDate.now().getYear();
+ int birthYear = patientInfo.getBirthday().getYear();
+ patientInfo.setAge(currentYear - birthYear);
+ }
+ VipLevelConfig level = vipLevelConfigService.getByExp(patientInfo.getExp());
+ if (level != null){
+ patientInfo.setLevelId(level.getLevelId());
+ }else {
+ patientInfo.setLevelId(0);
+ }
- public void save(PatientInfo patientInfo){
QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("phone", patientInfo.getPhone());
+ queryWrapper.eq("cert_no", patientInfo.getCertNo());
PatientInfo dbInfo = patientInfoMapper.selectOne(queryWrapper);
if (dbInfo != null){
patientInfo.setId(dbInfo.getId());
+ patientInfo.setExp(null);
+ patientInfo.setLevelId(null);
+ patientInfo.setIntegralBalance(null);
+ patientInfo.setBalance(null);
}
patientInfoMapper.insertOrUpdate(patientInfo);
+ return patientInfo;
}
+
+ /**
+ * 改变会员经验值
+ * @param patientId
+ * @param changeExp
+ * @param remark
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void changeExp(int patientId, int changeExp, String remark){
+ PatientInfo patientInfo = patientInfoMapper.selectById(patientId);
+ if(patientInfo==null){
+ throw new MessageException("会员不存在");
+ }
+ int start_exp = patientInfo.getExp();
+ int end_exp = start_exp + changeExp;
+ if(end_exp<0){
+ end_exp=0;
+ changeExp = -start_exp;
+ }
+ patientInfo.setExp(end_exp);
+ // 记录日志
+ VipExpLog vipExpLog = new VipExpLog();
+ vipExpLog.setStartExp(start_exp);
+ vipExpLog.setChangeExp(changeExp);
+ vipExpLog.setEndExp(end_exp);
+ vipExpLog.setVipId(patientId);
+ vipExpLog.setCreateDatetime(LocalDateTime.now());
+ vipExpLog.setRemark(remark);
+ //更新VIP等级
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.orderByDesc("start_exp");
+ List vipLevelConfigs = vipLevelConfigMapper.selectList(queryWrapper);
+ for (VipLevelConfig vipLevelConfig : vipLevelConfigs) {
+ if(end_exp>=vipLevelConfig.getStartExp()){
+ patientInfo.setLevelId(vipLevelConfig.getLevelId());
+ System.out.println(vipLevelConfig.getLevelId());
+ System.out.println(end_exp);
+ break;
+ }
+ }
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("id",patientId);
+ updateWrapper.set("level_id",patientInfo.getLevelId());
+ updateWrapper.set("exp",patientInfo.getExp());
+ // 保存
+ patientInfoMapper.update(updateWrapper);
+ vipExpLogMapper.insert(vipExpLog);
+ }
+
+
+ /**
+ * 改变vip积分
+ * @param patientId
+ * @param addIntegral
+ * @param remark
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void changeIntegral(int patientId, int addIntegral, String remark) {
+ PatientInfo patientInfo = patientInfoMapper.selectById(patientId);
+ if(patientInfo==null){
+ throw new MessageException("会员不存在");
+ }
+ Integer beforeIntegral = patientInfo.getIntegralBalance();
+ Integer finalIntegral = beforeIntegral + addIntegral;
+ PatientInfo updatePatient = new PatientInfo();
+ updatePatient.setId(patientId);
+ updatePatient.setIntegralBalance(finalIntegral);
+ patientInfoMapper.updateById(updatePatient);
+ //记录日志
+ VipIntegralLog vipIntegralLog = new VipIntegralLog();
+ vipIntegralLog.setBeforeIntegral(beforeIntegral);
+ vipIntegralLog.setAfterIntegral(finalIntegral);
+ vipIntegralLog.setChangeIntegral(addIntegral);
+ vipIntegralLog.setRemark(remark);
+ vipIntegralLog.setCreateTime(LocalDateTime.now());
+ vipIntegralLog.setVipId(patientId);
+ vipIntegralLogMapper.insert(vipIntegralLog);
+ }
+
+
+
+ /**
+ * 新建vip
+ * @param patientInfo
+ */
+ public void create(PatientInfo patientInfo) {
+ patientInfo.setCreateDatetime(LocalDateTime.now());
+ Integer exp = patientInfo.getExp();
+ if (patientInfo.getBirthday() != null) {
+ int currentYear = LocalDate.now().getYear();
+ int birthYear = patientInfo.getBirthday().getYear();
+ patientInfo.setAge(currentYear - birthYear);
+ }
+ patientInfo.setExp(0);
+ VipLevelConfig level = vipLevelConfigService.getByExp(patientInfo.getExp());
+ if (level != null){
+ patientInfo.setLevelId(level.getLevelId());
+ }else {
+ patientInfo.setLevelId(0);
+ }
+
+ patientInfoMapper.insert(patientInfo);
+ if (exp != null && exp > 0){
+ patientInfoService.changeExp(patientInfo.getId(), exp, "会员创建");
+ }
+ }
+
+
+ /**
+ * 更新vip基本信息 经验值和积分不更新
+ * @param patientInfo
+ */
+ public void update(PatientInfo patientInfo) {
+ patientInfo.setExp(null);
+ patientInfo.setLevelId(null);
+ patientInfoMapper.updateById(patientInfo);
+ }
+
+ public int removeById(int vipId) {
+ return patientInfoMapper.deleteById(vipId);
+ }
+
+ /**
+ * vip分页查询
+ * @param keyword
+ * @param pageNum
+ * @param pageSize
+ * @return
+ */
+ public Page pageList(String keyword, int pageNum, int pageSize) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ if (keyword != null && !keyword.isEmpty()){
+ queryWrapper.like("name",keyword);
+ queryWrapper.or().like("phone",keyword);
+ queryWrapper.or().like("cert_no",keyword);
+ }
+ return pageHelper(pageNum, pageSize, queryWrapper, patientInfoMapper, "create_datetime", false);
+ }
+
+ public PatientInfo getById(int id) {
+ return patientInfoMapper.selectById(id);
+ }
+
+ /**
+ * 根据名称 手机号 身份证搜索vip
+ * @param keyword
+ * @return
+ */
+ public List search(String keyword) {
+ QueryWrapper query = new QueryWrapper<>();
+ query.like("name", keyword);
+ query.or().like("phone", keyword);
+ query.or().like("cert_no", keyword);
+ return patientInfoMapper.selectList(query);
+ }
+
+
+ /**
+ * 改变vip等级
+ * @param patientId
+ * @param levelId
+ */
+ public void changeLevel(int patientId, int levelId) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("level_id", levelId);
+ VipLevelConfig levelConfig = vipLevelConfigMapper.selectOne(queryWrapper);
+ if (levelConfig == null) {
+ throw new MessageException("等级不存在");
+ }
+ PatientInfo patientInfo = patientInfoMapper.selectById(patientId);
+ int changeExp = levelConfig.getStartExp() - patientInfo.getExp();
+ patientInfoService.changeExp(patientId, changeExp, "会员等级修改");
+ }
+
+
+
+ /**
+ * 刷新所有vip等级信息
+ */
+ public void reFreshAllVipLevel() {
+ //更新所有vip的等级
+ QueryWrapper patientQuery = new QueryWrapper<>();
+ patientQuery.select("id,exp");
+ List patientList = patientInfoMapper.selectList(patientQuery);
+ Iterator iterator = patientList.iterator();
+ while (iterator.hasNext()) {
+ PatientInfo patientInfo = iterator.next();
+ VipLevelConfig levelConfig = vipLevelConfigService.getByExp(patientInfo.getExp());
+ if (levelConfig != null) {
+ patientInfo.setLevelId(levelConfig.getLevelId());
+ } else {
+ patientInfo.setLevelId(0);
+ }
+ patientInfo.setExp(null);
+
+ }
+ patientInfoMapper.updateById(patientList);
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java
index 3ddda46..e405bb4 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java
@@ -16,7 +16,9 @@ import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery;
+import com.syjiaer.clinic.server.entity.patient.dto.RegistrationSaveDto;
import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo;
+import com.syjiaer.clinic.server.entity.patient.vo.PatientRegistrationVo;
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
@@ -43,12 +45,14 @@ public class PatientRegistrationService extends BaseService {
@Autowired
private PatientInfoMapper patientInfoMapper;
@Autowired
+ private PatientInfoService patientInfoService;
+ @Autowired
private OrganizationMemberMapper organizationMemberMapper;
@Autowired
private OrganizationSectionMapper organizationSectionMapper;
@Autowired
@Lazy
- private PatientRegistrationService patientRegistrationService;
+ private PatientRegistrationService patientRegistrationService;
@Autowired
private SocialRequest socialRequest;
@@ -58,11 +62,18 @@ public class PatientRegistrationService extends BaseService {
* @param patientRegistrationParam 挂号信息
*/
@Transactional(rollbackFor = Exception.class)
- public PatientRegistration registration(PatientRegistration registrationParam,String mdtrtCertType, String mdtrtCertNo) {
- //TODO 挂号和患者 记录身份证号非必填
+ public PatientRegistration registration(RegistrationSaveDto registrationParam, String mdtrtCertType, String mdtrtCertNo) {
if (registrationParam == null) {
throw new MessageException("data参数为空");
}
+ if (registrationParam.getCertType() == null){
+ throw new MessageException("证件类型不能为空");
+ }
+ if (registrationParam.getCertNo() == null){
+ throw new MessageException("证件号码不能为空");
+ }
+
+
LocalDateTime now =LocalDateTime.now();
String fstNo = StringUtil.getCode("FSN");
if (registrationParam.getPatientInfoId() == null){
@@ -73,17 +84,11 @@ public class PatientRegistrationService extends BaseService {
patientInfo.setPhone(registrationParam.getPhone());
patientInfo.setSex(registrationParam.getGender());
patientInfo.setAge(registrationParam.getAge());
+ patientInfo.setCertType(registrationParam.getCertType());
+ patientInfo.setCertNo(registrationParam.getCertNo());
+ PatientInfo dbPatientInfo = patientInfoService.save(patientInfo);
- QueryWrapper patientInfoQuery = new QueryWrapper<>();
- patientInfoQuery.eq("phone", registrationParam.getPhone());
- List patientInfoList = patientInfoMapper.selectList(patientInfoQuery);
- if (patientInfoList.isEmpty()) {
- patientInfoMapper.insert(patientInfo);
- } else {
- patientInfo.setId(patientInfoList.get(0).getId());
- patientInfoMapper.updateById(patientInfo);
- }
- registrationParam.setPatientInfoId(patientInfo.getId());
+ registrationParam.setPatientInfoId(dbPatientInfo.getId());
}
PatientRegistration registration = new PatientRegistration();
BeanUtils.copyProperties(registrationParam, registration);
@@ -120,14 +125,11 @@ public class PatientRegistrationService extends BaseService {
regisWrapper.set("type",2);
regisWrapper.eq("id",registration.getId());
patientRegistrationMapper.update(null,regisWrapper);
-
-
-
return registration;
}
public PatientRegistration regisByDockerAndPatient(OrganizationMember docker, PatientInfo patient, Short type, Integer status){
- PatientRegistration registration = new PatientRegistration();
+ RegistrationSaveDto registration = new RegistrationSaveDto();
//病人信息
registration.setPatientInfoId(patient.getId());
registration.setName(patient.getName());
@@ -143,6 +145,8 @@ public class PatientRegistrationService extends BaseService {
registration.setCreateDatetime(LocalDateTime.now());
registration.setRegistrationMoney(BigDecimal.valueOf(0));
registration.setDelFlag(0);
+
+
return patientRegistrationService.registration(registration,null,null);
}
@@ -181,8 +185,19 @@ public class PatientRegistrationService extends BaseService {
* 根据id查询挂号信息
* @param id 挂号id
*/
- public PatientRegistration getById(int id) {
- return patientRegistrationMapper.selectById(id);
+ public PatientRegistrationVo getById(int id) {
+ PatientRegistrationVo registrationVo = new PatientRegistrationVo();
+ PatientRegistration registration = patientRegistrationMapper.selectById(id);
+ if (registration == null){
+ throw new MessageException("id不存在");
+ }
+ BeanUtils.copyProperties(registration, registrationVo);
+ PatientInfo patientInfo = patientInfoMapper.selectById(registration.getPatientInfoId());
+ if (patientInfo != null){
+ registrationVo.setCertNo(patientInfo.getCertNo());
+ registrationVo.setCertType(patientInfo.getCertType());
+ }
+ return registrationVo;
}
/*
* 获取所有已删除挂号信息
@@ -292,10 +307,10 @@ public class PatientRegistrationService extends BaseService {
if (patientRegistration == null){
throw new MessageException("挂号单不存在");
}
- if (statusEnum.equals(RegistrationStatusEnum.waiting) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getType())){
+ if (statusEnum.equals(RegistrationStatusEnum.waiting) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())){
throw new MessageException("初始状态不对");
}
- if (statusEnum.equals(RegistrationStatusEnum.cancel) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getType())){
+ if (statusEnum.equals(RegistrationStatusEnum.cancel) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())){
throw new MessageException("初始状态不对");
}
PatientRegistration updateRegistration = new PatientRegistration();
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 f3a848d..7860154 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
@@ -2,18 +2,21 @@ package com.syjiaer.clinic.server.service.statistics;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.enums.GoodsTypeEnum;
+import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum;
import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum;
import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
-import com.syjiaer.clinic.server.entity.charge.ChargeItemList;
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
-import com.syjiaer.clinic.server.entity.statistics.GoodsTypeRevenue;
-import com.syjiaer.clinic.server.entity.statistics.PayTypeRevenue;
-import com.syjiaer.clinic.server.entity.statistics.PersonPayOverviewVo;
-import com.syjiaer.clinic.server.entity.statistics.RevenueOverviewVo;
+import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis;
+import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
+import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
+import com.syjiaer.clinic.server.entity.statistics.*;
import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
+import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper;
+import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
+import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -29,6 +32,13 @@ public class StatisticsService extends BaseService {
private ChargeOrderMapper chargeOrderMapper;
@Autowired
private ChargeGoodsListMapper chargeGoodsListMapper;
+ @Autowired
+ private OrganizationMemberMapper organizationMemberMapper;
+ @Autowired
+ private PatientRegistrationMapper patientRegistrationMapper;
+ @Autowired
+ private DiagnosisMapper diagnosisMapper;
+
public RevenueOverviewVo getRevenueOverview(LocalDateTime begin, LocalDateTime end) {
RevenueOverviewVo overviewVo = new RevenueOverviewVo();
QueryWrapper queryWrapper = new QueryWrapper<>();
@@ -37,13 +47,21 @@ public class StatisticsService extends BaseService {
queryWrapper.le("pay_time", end);
queryWrapper.eq("status", RetailOrderStatusEnum.FINISHED.getCode());
Map map = chargeOrderMapper.selectMaps(queryWrapper).get(0);
- overviewVo.setTotalRevenue((BigDecimal) map.getOrDefault("total_revenue",new BigDecimal(0)));
- overviewVo.setTotalOrderCount((Long) map.getOrDefault("total_order_count",new BigDecimal(0)));
-//
-// queryWrapper.isNotNull("vip_id");
-// Map vipMap = retailOrderService.getMap(queryWrapper);
-// overviewVo.setVipRevenue((BigDecimal) vipMap.getOrDefault("total_revenue",new BigDecimal(0)));
-// overviewVo.setVipOrderCount((Long) vipMap.getOrDefault("total_order_count",new BigDecimal(0)));
+ overviewVo.setTotalRevenue((BigDecimal) map.getOrDefault("total_revenue", new BigDecimal(0)));
+ overviewVo.setTotalOrderCount((Long) map.getOrDefault("total_order_count", new BigDecimal(0)));
+
+ //医保概况数据
+ QueryWrapper socialQuery = new QueryWrapper<>();
+ socialQuery.select("sum(total_price) as total_revenue,count(*) as total_order_count");
+ socialQuery.ge("pay_time", begin);
+ socialQuery.le("pay_time", end);
+ socialQuery.eq("pay_type", RetailOrderPayTypeEnum.MEDICARE.getCode());
+ socialQuery.eq("status", RetailOrderStatusEnum.FINISHED.getCode());
+ Map socialMap = chargeOrderMapper.selectMaps(socialQuery).get(0);
+ overviewVo.setSocialRevenue((BigDecimal) socialMap.getOrDefault("total_revenue", new BigDecimal(0)));
+ overviewVo.setSocialOrderCount((Long) socialMap.getOrDefault("total_order_count", new BigDecimal(0)));
+
+
QueryWrapper payTypeQuery = new QueryWrapper<>();
payTypeQuery.ge("pay_time", begin);
@@ -58,8 +76,9 @@ public class StatisticsService extends BaseService {
List payTypeRevenueList = new ArrayList<>();
for (Map payTypeMap : payTypeMaps) {
PayTypeRevenue revenue = new PayTypeRevenue();
+ revenue.setPayType((Integer) payTypeMap.get("pay_type"));
revenue.setName(RetailOrderPayTypeEnum.getByCode((Integer) payTypeMap.get("pay_type")).getDesc());
- revenue.setTotalRevenue((BigDecimal) payTypeMap.getOrDefault("total_revenue",new BigDecimal(0)));
+ revenue.setTotalRevenue((BigDecimal) payTypeMap.getOrDefault("total_revenue", new BigDecimal(0)));
payTypeRevenueList.add(revenue);
}
overviewVo.setPayTypeRevenue(payTypeRevenueList);
@@ -70,8 +89,8 @@ public class StatisticsService extends BaseService {
retailListQuery.ge("create_time", begin);
retailListQuery.le("create_time", end);
List> goodsTypeMaps = new ArrayList<>();
- if (!retailOrderCodes.isEmpty() ){
- retailListQuery.in("charge_order_code",retailOrderCodes);
+ if (!retailOrderCodes.isEmpty()) {
+ retailListQuery.in("charge_order_code", retailOrderCodes);
goodsTypeMaps = chargeGoodsListMapper.selectMaps(retailListQuery);
}
@@ -80,13 +99,14 @@ public class StatisticsService extends BaseService {
for (Map goodsTypeMap : goodsTypeMaps) {
GoodsTypeRevenue goodsTypeRevenue = new GoodsTypeRevenue();
goodsTypeRevenue.setName(GoodsTypeEnum.getByType((Integer) goodsTypeMap.get("type")).getDesc());
- goodsTypeRevenue.setTotalRevenue((BigDecimal) goodsTypeMap.getOrDefault("total_revenue",new BigDecimal(0)));
+ goodsTypeRevenue.setTotalRevenue((BigDecimal) goodsTypeMap.getOrDefault("total_revenue", new BigDecimal(0)));
goodsTypeRevenuesList.add(goodsTypeRevenue);
}
overviewVo.setGoodsTypeRevenue(goodsTypeRevenuesList);
+
return overviewVo;
}
@@ -111,7 +131,7 @@ public class StatisticsService extends BaseService {
commonQuery.groupBy("create_date");
commonQuery.orderByAsc("create_date");
// commonQuery.isNull("vip_id");
- List> commonMaps = chargeOrderMapper.selectMaps(commonQuery);
+ List> commonMaps = chargeOrderMapper.selectMaps(commonQuery);
List dateList = DateUtil.getDatesBetween(beginTime, endTime);
Map tempMap = new TreeMap<>();
for (LocalDate date : dateList) {
@@ -130,4 +150,90 @@ public class StatisticsService extends BaseService {
return personPayOverview;
}
+
+ public List salePersonReport() {
+ List> maps = chargeOrderMapper.selectSaleReport();
+ Map voMaps = new HashMap<>();
+ for (Map map : maps) {
+ Integer salePersonId = (Integer) map.get("sale_person_id");
+ SalePersonReportVo vo = voMaps.getOrDefault(salePersonId, new SalePersonReportVo());
+ vo.setSalePersonId(salePersonId);
+ if (salePersonId != null){
+ OrganizationMember organizationMember = organizationMemberMapper.selectById(salePersonId);
+ vo.setSalePersonName(organizationMember.getName());
+ }
+ vo.setTotalIncome(vo.getTotalIncome().add((BigDecimal) map.get("sum")));
+ vo.setCount(vo.getCount()+(Long) map.get("count"));
+ RetailOrderPayTypeEnum payType = RetailOrderPayTypeEnum.getByCode((Integer) map.get("pay_type"));
+ if (payType == null){
+ continue;
+ }
+ switch (payType) {
+ case WXPAY:
+ vo.setWechatIncome(vo.getWechatIncome().add((BigDecimal) map.get("sum")));
+ break;
+ case ALIPAY:
+ vo.setAliPayIncome(vo.getAliPayIncome().add((BigDecimal) map.get("sum")));
+ break;
+ case CASH:
+ vo.setCashIncome(vo.getCashIncome().add((BigDecimal) map.get("sum")));
+ break;
+ case OTHER:
+ vo.setOtherIncome(vo.getOtherIncome().add((BigDecimal) map.get("sum")));
+ break;
+ case MEDICARE:
+ vo.setSocialIncome(vo.getSocialIncome().add((BigDecimal) map.get("sum")));
+ break;
+ default:
+ break;
+ }
+ voMaps.put(salePersonId, vo);
+ }
+ List result = voMaps.values().stream().toList();
+ return result;
+ }
+
+ public TipCountVo getWaitCount(LocalDateTime beginTime, LocalDateTime endTime) {
+ TipCountVo tipCountVo = new TipCountVo();
+ RegistrationStatusEnum registrationStatusEnum = RegistrationStatusEnum.waiting;
+ QueryWrapper registrationWrapper = new QueryWrapper<>();
+ registrationWrapper.lt("create_datetime", endTime);
+ registrationWrapper.ge("create_datetime", beginTime);
+ registrationWrapper.eq("status", registrationStatusEnum.getStatus());
+ registrationWrapper.eq("del_flag",0);
+ tipCountVo.setWaitDiagnosisCount(patientRegistrationMapper.selectCount(registrationWrapper));
+
+ registrationStatusEnum = RegistrationStatusEnum.inProgress;
+ registrationWrapper = new QueryWrapper<>();
+ registrationWrapper.lt("create_datetime", endTime);
+ registrationWrapper.ge("create_datetime", beginTime);
+ registrationWrapper.eq("status", registrationStatusEnum.getStatus());
+ registrationWrapper.eq("del_flag",0);
+ tipCountVo.setDiagnosingCount(patientRegistrationMapper.selectCount(registrationWrapper));
+
+ registrationStatusEnum = RegistrationStatusEnum.complete;
+ registrationWrapper = new QueryWrapper<>();
+ registrationWrapper.lt("create_datetime", endTime);
+ registrationWrapper.ge("create_datetime", beginTime);
+ registrationWrapper.eq("status", registrationStatusEnum.getStatus());
+ registrationWrapper.eq("del_flag",0);
+ tipCountVo.setCompleteDiaCount(patientRegistrationMapper.selectCount(registrationWrapper));
+
+
+ QueryWrapper diagnosisWrapper = new QueryWrapper<>();
+ diagnosisWrapper.lt("create_time", endTime);
+ diagnosisWrapper.ge("create_time", beginTime);
+ diagnosisWrapper.eq("status", 0);
+ tipCountVo.setUnchargedCount(diagnosisMapper.selectCount(diagnosisWrapper));
+
+ diagnosisWrapper = new QueryWrapper<>();
+ diagnosisWrapper.lt("create_time", endTime);
+ diagnosisWrapper.ge("create_time", beginTime);
+ diagnosisWrapper.eq("status", 1);
+ tipCountVo.setChargedCount(diagnosisMapper.selectCount(diagnosisWrapper));
+
+ return tipCountVo;
+
+
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java b/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java
index 07d1ab5..558b65d 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java
@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.vo.Page;
+import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.vip.Vip;
import com.syjiaer.clinic.server.entity.vip.VipIntegralLog;
import com.syjiaer.clinic.server.entity.vip.dto.VipIntegralLogQuery;
+import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
import com.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper;
import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper;
import com.syjiaer.clinic.server.mapper.vip.VipMapper;
@@ -18,12 +20,10 @@ import java.util.List;
@Service
public class VipIntegralLogService extends BaseService {
- @Autowired
- private VipMapper vipMapper;
- @Autowired
- private VipLevelConfigMapper vipLevelConfigMapper;
@Autowired
private VipIntegralLogMapper vipIntegralLogMapper;
+ @Autowired
+ private PatientInfoMapper patientInfoMapper;
public Page pageList(VipIntegralLogQuery query) {
if (query == null){
@@ -35,12 +35,12 @@ public class VipIntegralLogService extends BaseService {
if (query.getPageSize() == null || query.getPageSize() == 0){
query.setPageSize(Constants.DetailPageSize);
}
- Vip vip = null;
+ PatientInfo patientInfo = null;
if (query.getVipId() != null){
- vip = vipMapper.selectById(query.getVipId());
+ patientInfo = patientInfoMapper.selectById(query.getVipId());
}
- if (vip == null){
- throw new MessageException("会员不存在");
+ if (patientInfo == null){
+ throw new MessageException("患者不存在");
}
QueryWrapper queryWrapper = new QueryWrapper<>();
diff --git a/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java b/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java
index 88f6857..6462b32 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.syjiaer.clinic.server.entity.vip.VipLevelConfig;
import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper;
import com.syjiaer.clinic.server.service.BaseService;
+import com.syjiaer.clinic.server.service.patient.PatientInfoService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -17,7 +19,7 @@ public class VipLevelConfigService extends BaseService {
@Autowired
private VipLevelConfigMapper vipLevelConfigMapper;
@Autowired
- private VipService vipService;
+ private PatientInfoService patientInfoService;
/**
* 根据经验值获取会员等级
@@ -102,14 +104,14 @@ public class VipLevelConfigService extends BaseService {
for (VipLevelConfig levelConfig : insertList){
vipLevelConfigMapper.insert(levelConfig);
}
- vipService.reFreshAllVipLevel();
+ patientInfoService.reFreshAllVipLevel();
}
@Transactional(rollbackFor = Exception.class)
public Integer delete(int id) {
Integer count = vipLevelConfigMapper.deleteById(id);
- vipService.reFreshAllVipLevel();
+ patientInfoService.reFreshAllVipLevel();
return count;
}
diff --git a/src/main/resources/xml/OrganizationMemberMapper.xml b/src/main/resources/xml/OrganizationMemberMapper.xml
index 4d96655..24443d9 100644
--- a/src/main/resources/xml/OrganizationMemberMapper.xml
+++ b/src/main/resources/xml/OrganizationMemberMapper.xml
@@ -2,4 +2,17 @@
+
+ SELECT om.*,os.name AS section_name
+ FROM organization_member AS om LEFT JOIN organization_section AS os ON om.section_id = os.id
+
+
+ (om.name LIKE concat('%', #{keyword}, '%')
+ or os.name LIKE concat('%', #{keyword}, '%'))
+
+
+ And om.role = #{role}
+
+
+
diff --git a/src/test/java/com/syjiaer/clinic/server/.gitignore b/src/test/java/com/syjiaer/clinic/server/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/src/test/java/com/syjiaer/clinic/server/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java
deleted file mode 100644
index 3633029..0000000
--- a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.syjiaer.clinic.server;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.syjiaer.clinic.server.common.api.input.IM9001;
-import com.syjiaer.clinic.server.common.api.request.SocialRequest;
-import com.syjiaer.clinic.server.service.charge.ChargeService;
-import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService;
-import com.syjiaer.clinic.server.service.social.SocialDiagnoseService;
-import com.syjiaer.clinic.server.service.social.SocialItemService;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class ServerApplicationTests {
-
- @Autowired
- private MedicalRecordService medicalRecordService;
- @Autowired
- private SocialDiagnoseService socialDiagnoseService;
- @Autowired
- private SocialItemService socialItemService;
- @Autowired
- private ChargeService chargeService;
- @Autowired
- private SocialRequest socialRequest;
- @Test
- void contextLoads() {
-// chargeService.uploadCostDetails("CO20250424130233778296");
-// String meCode = "AD1537643";
-// String medType = "03";
-// String in = "310";
-// chargeService.socialPrePay("CO20250424130233778296",medType,meCode,"310");
- String meCode = "AD1537643|eZFLx0k4i8izV3NdLvOKRF16BQ6yCj3Cv+PS4dyDK/fy4l30EzRhIDFV5W0E+jZVkPFpsUkVVUU0WX+58IafhGQxzYO25uuEaZkwhDFyPF+RbV14gcURcjR7BjU8m+xWQV1jmrEygKcJ0fbjtdEZrjZRgjNtiz+KCqw5qeWlkvtfcI/pnYeD6Y0CI64KnBGFfMxd9n2pM2GnZp08tJRb/50KnDqwZY1tHLNmiCX0Cnk=";
- chargeService.socialRealPay("CO20250424130233778296","03",meCode,"310");
-
- }
- @Test
- void text(){
- IM9001 im9001 = new IM9001();
- im9001.setOpter_no("0");
- im9001.setMac("00-FF-F2-10-61-2D");
- im9001.setIp("10.42.131.10");
- socialRequest.call9001(im9001);
- }
- @Test
- void test(){
- socialItemService.download("F002_20210915000001_A");
- }
-
-}