Merge branch 'master' of ssh://git.jizhiweb.cn:2222/clinic-v2/server
This commit is contained in:
commit
52233cf83a
16
pom.xml
16
pom.xml
|
|
@ -108,7 +108,21 @@
|
|||
<artifactId>springfox-swagger2</artifactId>
|
||||
<version>2.9.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.syjiaer.common</groupId>
|
||||
<artifactId>bcpkix</artifactId>
|
||||
<version>1.60</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.syjiaer.common</groupId>
|
||||
<artifactId>bcprov</artifactId>
|
||||
<version>1.60</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.syjiaer.common</groupId>
|
||||
<artifactId>EncUtil</artifactId>
|
||||
<version>1.00</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,88 @@
|
|||
package com.syjiaer.clinic.server.common.util;
|
||||
|
||||
import cn.hsaf.common.utils.EasyGmUtils;
|
||||
import cn.hsaf.common.utils.SignUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.bouncycastle.util.encoders.Hex;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
public class EncUtil {
|
||||
|
||||
|
||||
/**
|
||||
* 加密
|
||||
*
|
||||
* @param data
|
||||
* @param appId
|
||||
* @param appSecret
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String encrypt(String data, String appId, String appSecret) throws Exception {
|
||||
//加密流程
|
||||
//用appId加密appSecret获取新秘钥
|
||||
byte[] appSecretEncData = EasyGmUtils.sm4Encrypt(appId.substring(0, 16).getBytes("UTF-8"), appSecret.getBytes("UTF-8"));
|
||||
//新秘钥串
|
||||
byte[] secKey = Hex.toHexString(appSecretEncData).toUpperCase().substring(0, 16).getBytes("UTF-8");
|
||||
//加密0数据
|
||||
String encryptDataStr = Hex.toHexString(EasyGmUtils.sm4Encrypt(secKey, data.getBytes("UTF-8"))).toUpperCase();
|
||||
return encryptDataStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密
|
||||
*
|
||||
* @param data
|
||||
* @param appId
|
||||
* @param appSecret
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String decrypt(String data, String appId, String appSecret) throws Exception {
|
||||
byte[] appSecretEncDataDecode = EasyGmUtils.sm4Encrypt(appId.substring(0, 16).getBytes("UTF-8"), appSecret.getBytes("UTF-8"));
|
||||
byte[] secKeyDecode = Hex.toHexString(appSecretEncDataDecode).toUpperCase().substring(0, 16).getBytes("UTF-8");
|
||||
String decryptDataStr = new String(EasyGmUtils.sm4Decrypt(secKeyDecode, Hex.decode(data)));
|
||||
return decryptDataStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名
|
||||
*
|
||||
* @param jsonObject
|
||||
* @param appSecret
|
||||
* @param privateKey
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String sign(JSONObject jsonObject, String appSecret, String privateKey) throws Exception {
|
||||
// 获取签名串
|
||||
byte[] signText = SignUtil.getSignText(jsonObject, appSecret).getBytes("UTF-8");
|
||||
byte[] userId = appSecret.getBytes();
|
||||
byte[] prvkey = Base64.getDecoder().decode(privateKey);
|
||||
String responseSign = Base64.getEncoder().encodeToString(EasyGmUtils.signSm3WithSm2(signText, userId, prvkey));
|
||||
return responseSign;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验签
|
||||
*
|
||||
* @param jsonObject
|
||||
* @param appSecret
|
||||
* @param publicKey
|
||||
* @param responseSign
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static boolean verify(JSONObject jsonObject, String appSecret, String publicKey, String responseSign) throws Exception {
|
||||
//验签
|
||||
byte[] msg = SignUtil.getSignText(jsonObject, appSecret).getBytes("UTF-8");
|
||||
byte[] userIdDecode = appSecret.getBytes("UTF-8");
|
||||
byte[] pubkey = Base64.getDecoder().decode(publicKey);
|
||||
byte[] signData = Base64.getDecoder().decode(responseSign);
|
||||
return EasyGmUtils.verifySm3WithSm2(msg, userIdDecode, signData, pubkey);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -123,7 +123,7 @@ public class RegistrationController extends BaseController {
|
|||
@RequestMapping("/getListByType")
|
||||
public Result<Page<PatientRegistration>> getListByType() {
|
||||
RegistrationQuery query = parmsUtil.getObject("query", RegistrationQuery.class);
|
||||
return success(patientRegistrationService.getPageByType(query));
|
||||
return success(patientRegistrationService.getListByType(query));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
package com.syjiaer.clinic.server.entity.patient;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
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;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
/**
|
||||
* <p>
|
||||
* 挂号表
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-30
|
||||
* @since 2025-05-23
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -93,4 +93,11 @@ public class PatientRegistration implements Serializable {
|
|||
|
||||
@ApiModelProperty("流水号")
|
||||
private String fstNo;
|
||||
|
||||
@ApiModelProperty("挂号时间")
|
||||
private LocalDateTime appointmentTime;
|
||||
|
||||
@ApiModelProperty("是否预约")
|
||||
@TableField(exist = false)
|
||||
private Boolean isAppointment;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,4 +79,6 @@ public class RegistrationSaveDto {
|
|||
|
||||
@ApiModelProperty("医保余额")
|
||||
private BigDecimal insuBalance;
|
||||
@ApiModelProperty("预约时间")
|
||||
private String appointmentTime;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,6 +102,15 @@ public class DiagnosisService extends BaseService {
|
|||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save(MedicalRecordSaveDto saveDto) {
|
||||
int regisId =saveDto.getRegistrationId();
|
||||
|
||||
QueryWrapper<Diagnosis> queryWrapperRegis = new QueryWrapper<>();
|
||||
queryWrapperRegis.eq("registration_id", regisId);
|
||||
Diagnosis regisDbDiagnosis = diagnosisMapper.selectOne(queryWrapperRegis);
|
||||
if(regisDbDiagnosis!=null){
|
||||
throw new MessageException("该挂号已完诊,请不要重复完诊");
|
||||
}
|
||||
|
||||
if (saveDto == null){
|
||||
throw new MessageException("参数不能为空");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import com.syjiaer.clinic.server.common.exception.MessageException;
|
|||
import com.syjiaer.clinic.server.common.util.DateUtil;
|
||||
import com.syjiaer.clinic.server.common.util.StringUtil;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
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;
|
||||
|
|
@ -21,6 +22,7 @@ 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.manager.ManagerUserMapper;
|
||||
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
|
||||
import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
|
||||
import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
|
||||
|
|
@ -35,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -53,6 +57,8 @@ public class PatientRegistrationService extends BaseService {
|
|||
@Autowired
|
||||
private OrganizationSectionMapper organizationSectionMapper;
|
||||
@Autowired
|
||||
private ManagerUserMapper managerUserMapper;
|
||||
@Autowired
|
||||
@Lazy
|
||||
private PatientRegistrationService patientRegistrationService;
|
||||
@Autowired
|
||||
|
|
@ -75,6 +81,20 @@ public class PatientRegistrationService extends BaseService {
|
|||
throw new MessageException("证件号码不能为空");
|
||||
}
|
||||
|
||||
LocalDateTime appointmentTime=null;
|
||||
if(registrationParam.getAppointmentTime()!=null &&!registrationParam.getAppointmentTime().isEmpty()){
|
||||
try{
|
||||
appointmentTime = LocalDateTime.parse(registrationParam.getAppointmentTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
|
||||
}
|
||||
catch (Exception e){
|
||||
appointmentTime=LocalDateTime.now();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(appointmentTime==null||appointmentTime.isBefore(LocalDateTime.now())){
|
||||
appointmentTime=LocalDateTime.now();
|
||||
}
|
||||
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
String fstNo = StringUtil.getCode("FSN");
|
||||
|
|
@ -96,6 +116,7 @@ public class PatientRegistrationService extends BaseService {
|
|||
BeanUtils.copyProperties(registrationParam, registration);
|
||||
registration.setFstNo(fstNo);
|
||||
registration.setRegistrationMoney(new BigDecimal("0"));
|
||||
registration.setAppointmentTime(appointmentTime);
|
||||
registration.setCreateDatetime(now);
|
||||
registration.setStatus(1);
|
||||
OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
|
||||
|
|
@ -235,9 +256,42 @@ public class PatientRegistrationService extends BaseService {
|
|||
* 根据查询条件查询挂号信息
|
||||
* @param query 查询条件
|
||||
*/
|
||||
public Page<PatientRegistration> getPageByType(RegistrationQuery query) {
|
||||
public Page<PatientRegistration> getListByType(RegistrationQuery query) {
|
||||
ManagerUser user = getManagerUser();
|
||||
List<PatientRegistration> Beforlist = patientRegistrationMapper.selectList(getQueryWrapper(query, user,true));
|
||||
List<PatientRegistration> Afterlist = patientRegistrationMapper.selectList(getQueryWrapper(query, user,false));
|
||||
|
||||
List<PatientRegistration> list = new ArrayList<>();
|
||||
list.addAll(Beforlist);
|
||||
list.addAll(Afterlist);
|
||||
list.forEach((regis)->{
|
||||
LocalDateTime appointmentTime = regis.getAppointmentTime();
|
||||
if (appointmentTime.isBefore(LocalDateTime.now())) {
|
||||
regis.setIsAppointment(false);
|
||||
} else {
|
||||
regis.setIsAppointment(true);
|
||||
}
|
||||
});
|
||||
Page<PatientRegistration> page = new Page<>();
|
||||
page.setList(list);
|
||||
page.setTotal_count(10000);
|
||||
page.setTotal_page(1);
|
||||
return page;
|
||||
}
|
||||
|
||||
|
||||
private QueryWrapper getQueryWrapper(RegistrationQuery query, ManagerUser user,boolean isBefore){
|
||||
QueryWrapper<PatientRegistration> regisQuery = new QueryWrapper<>();
|
||||
ManagerUser dbUser = managerUserMapper.selectById(user.getId());
|
||||
OrganizationMember member= null;
|
||||
if (dbUser != null && dbUser.getOrganizationMemberId() != null){
|
||||
member = organizationMemberMapper.selectById(dbUser.getOrganizationMemberId());
|
||||
}
|
||||
|
||||
regisQuery.eq("del_flag", 0);
|
||||
if (member != null && member.getRole() == 1){
|
||||
regisQuery.eq("organization_doctor_id", member.getId());
|
||||
}
|
||||
if (query.getStatus() != null) {
|
||||
regisQuery.eq("status", query.getStatus());
|
||||
}
|
||||
|
|
@ -252,13 +306,19 @@ public class PatientRegistrationService extends BaseService {
|
|||
query.setPageSize(Constants.DetailPageSize);
|
||||
}
|
||||
if (query.getBeginTime() != null) {
|
||||
regisQuery.ge("create_datetime", query.getBeginTime());
|
||||
regisQuery.ge("appointment_time", query.getBeginTime());
|
||||
}
|
||||
if (query.getEndTime() != null) {
|
||||
regisQuery.le("create_datetime", query.getEndTime());
|
||||
regisQuery.le("appointment_time", query.getEndTime());
|
||||
}
|
||||
|
||||
return pageHelper(query.getPageNum(), query.getPageSize(), regisQuery, patientRegistrationMapper, "create_datetime", false);
|
||||
if(isBefore){
|
||||
regisQuery.le("appointment_time", LocalDateTime.now());
|
||||
regisQuery.orderByDesc("appointment_time");
|
||||
}else{
|
||||
regisQuery.ge("appointment_time", LocalDateTime.now());
|
||||
regisQuery.orderByAsc("appointment_time");
|
||||
}
|
||||
return regisQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -471,7 +471,7 @@ public class SocialInventoryUploadService extends BaseService {
|
|||
if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())) {
|
||||
//医保支付
|
||||
ChargeSocialPayLog payLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper<ChargeSocialPayLog>().
|
||||
eq("retail_order_code", orderInventory.getChargeOrderCode()).last("limit 1"));
|
||||
eq("charge_order_code", orderInventory.getChargeOrderCode()).last("limit 1"));
|
||||
im3505.setSetlId(payLog.getSetlId());
|
||||
im3505.setMdtrtSn(payLog.getMdtrtId());
|
||||
im3505.setPsnNo(payLog.getPsnNo());
|
||||
|
|
@ -495,7 +495,8 @@ public class SocialInventoryUploadService extends BaseService {
|
|||
|
||||
|
||||
List<Map<String, String>> drugtracinfo = new ArrayList<>();
|
||||
List<String> TracCodgList = orderInventory.getTraceabilityCode() == null ? new ArrayList<>()
|
||||
List<String> TracCodgList = orderInventory.getTraceabilityCode() == null||
|
||||
orderInventory.getTraceabilityCode().isEmpty() ? new ArrayList<>()
|
||||
: Arrays.asList(orderInventory.getTraceabilityCode().split(","));
|
||||
for (String tracCodg : TracCodgList) {
|
||||
Map<String, String> map =new HashMap<>();
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
|
|||
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
|
||||
import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis;
|
||||
import com.syjiaer.clinic.server.entity.goods.Goods;
|
||||
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
|
||||
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
|
||||
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
|
||||
import com.syjiaer.clinic.server.entity.statistics.*;
|
||||
|
|
@ -14,6 +15,7 @@ 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.goods.GoodsMapper;
|
||||
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
|
||||
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
|
||||
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
|
|
@ -39,6 +41,8 @@ public class StatisticsService extends BaseService {
|
|||
private DiagnosisMapper diagnosisMapper;
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
@Autowired
|
||||
private ManagerUserMapper managerUserMapper;
|
||||
|
||||
public RevenueOverviewVo getRevenueOverview(LocalDateTime begin, LocalDateTime end) {
|
||||
RevenueOverviewVo overviewVo = new RevenueOverviewVo();
|
||||
|
|
@ -187,29 +191,46 @@ public class StatisticsService extends BaseService {
|
|||
}
|
||||
|
||||
public TipCountVo getWaitCount(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
ManagerUser user = getManagerUser();
|
||||
ManagerUser dbUser = managerUserMapper.selectById(user.getId());
|
||||
OrganizationMember member= null;
|
||||
if (dbUser != null && dbUser.getOrganizationMemberId() != null){
|
||||
member = organizationMemberMapper.selectById(dbUser.getOrganizationMemberId());
|
||||
}
|
||||
|
||||
|
||||
TipCountVo tipCountVo = new TipCountVo();
|
||||
RegistrationStatusEnum registrationStatusEnum = RegistrationStatusEnum.waiting;
|
||||
QueryWrapper<PatientRegistration> registrationWrapper = new QueryWrapper<>();
|
||||
registrationWrapper.lt("create_datetime", endTime);
|
||||
registrationWrapper.ge("create_datetime", beginTime);
|
||||
registrationWrapper.lt("appointment_time", endTime);
|
||||
registrationWrapper.ge("appointment_time", beginTime);
|
||||
registrationWrapper.eq("status", registrationStatusEnum.getStatus());
|
||||
registrationWrapper.eq("del_flag",0);
|
||||
if (member != null && member.getRole() == 1){
|
||||
registrationWrapper.eq("organization_doctor_id", member.getId());
|
||||
}
|
||||
tipCountVo.setWaitDiagnosisCount(patientRegistrationMapper.selectCount(registrationWrapper));
|
||||
|
||||
registrationStatusEnum = RegistrationStatusEnum.inProgress;
|
||||
registrationWrapper = new QueryWrapper<>();
|
||||
registrationWrapper.lt("create_datetime", endTime);
|
||||
registrationWrapper.ge("create_datetime", beginTime);
|
||||
registrationWrapper.lt("appointment_time", endTime);
|
||||
registrationWrapper.ge("appointment_time", beginTime);
|
||||
registrationWrapper.eq("status", registrationStatusEnum.getStatus());
|
||||
registrationWrapper.eq("del_flag",0);
|
||||
if (member != null && member.getRole() == 1){
|
||||
registrationWrapper.eq("organization_doctor_id", member.getId());
|
||||
}
|
||||
tipCountVo.setDiagnosingCount(patientRegistrationMapper.selectCount(registrationWrapper));
|
||||
|
||||
registrationStatusEnum = RegistrationStatusEnum.complete;
|
||||
registrationWrapper = new QueryWrapper<>();
|
||||
registrationWrapper.lt("create_datetime", endTime);
|
||||
registrationWrapper.ge("create_datetime", beginTime);
|
||||
registrationWrapper.lt("appointment_time", endTime);
|
||||
registrationWrapper.ge("appointment_time", beginTime);
|
||||
registrationWrapper.eq("status", registrationStatusEnum.getStatus());
|
||||
registrationWrapper.eq("del_flag",0);
|
||||
if (member != null && member.getRole() == 1){
|
||||
registrationWrapper.eq("organization_doctor_id", member.getId());
|
||||
}
|
||||
tipCountVo.setCompleteDiaCount(patientRegistrationMapper.selectCount(registrationWrapper));
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue