提交 a190e6ee authored 作者: 杨凯's avatar 杨凯

feat:家庭医生初始化

上级 f6310f70
......@@ -61,4 +61,6 @@ public class MobileBenefitPackageEntity {
@ApiModelProperty(value = "医生id")
private String doctorId;
private Integer version;
}
......@@ -27,5 +27,9 @@ public interface MobileBenefitPackageMapper {
void updateDoctorId(MobileBenefitPackageEntity entity);
void updateVersion(MobileBenefitPackageEntity entity);
List<String> getPatientIdsByPhoneAndOrderId(@Param("phone") String phone);
List<MobileBenefitPackageEntity> queryMaxOneList();
}
......@@ -39,7 +39,7 @@ public class RabbitConsumer {
// 存在进行中订单则将订单状态改为失效
if (StatusEnum.IN_CONSULTATION.getValue().equals(patientSignEntity.getStatus())) {
patientSignEntity.setStatus(StatusEnum.EXPIRED.getValue());
patientSignEntity.setStatus(StatusEnum.FINISH_APPLY.getValue());
patientSignMapper.updateById(patientSignEntity);
}
} catch (Exception e) {
......
......@@ -8,6 +8,8 @@ import org.springframework.amqp.core.MessageDeliveryMode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Objects;
/**
* @ClassName: RabbitProduct
* @Author:yanliang
......@@ -31,10 +33,14 @@ public class RabbitProduct {
if (orderTaskVo.getType() == 1) {
long time = EXPIRE_TIME_MAX;
if (Objects.nonNull(orderTaskVo.getExpireTime())) {
time = Long.valueOf(orderTaskVo.getExpireTime());
}
log.info("过期时间:{}", time);
long finalTime = time;
this.rabbitTemplate.convertAndSend(RabbitMqConfig.ORDER_DELAY_EXCHANGE,
RabbitMqConfig.ORDER_ROUTING_KEY_5, orderTaskVo, message -> {
message.getMessageProperties().setHeader("x-delay", time);
message.getMessageProperties().setHeader("x-delay", finalTime);
message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
return message;
});
......
......@@ -46,4 +46,8 @@ public interface PatientSignService {
BaseResponse<IMQueryUserLoginRspVO> querySdkLogin(IMQueryUserLoginReqVO reqVO);
List<PatientSignEntity> selectList(PatientSignEntity patientSignEntity);
PatientSignEntity getOneByPhone(String phone);
int updateById(PatientSignEntity patientSignEntity);
}
......@@ -27,8 +27,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
......@@ -74,11 +76,45 @@ public class PatientServiceImpl implements PatientService {
String admId = UUIDUtil.getUUID();
Date curDate = new Date();
Date signEndTime = DateUtils.getAfterDay(curDate, CommonConstants.DAY);
Date signStartTime = new Date();
try {
if (!StringUtils.isEmpty(entity.getBenefitsEndTime())) {
signEndTime = DateUtils.parseDate(entity.getBenefitsEndTime(), DateUtils.FULL_FORMAT);
signStartTime = DateUtils.parseDate(entity.getBenefitsStartTime(), DateUtils.FULL_FORMAT);
}
} catch (Exception e) {
return BaseResponse.error("没有查询到有关权益");
}
if (SignStatus.SIGNED.getValue().equals(reqVo.getSignStatus())) {
QueryWrapper<PatientSignEntity> psWrapper = new QueryWrapper<>();
PatientSignEntity patientSign = new PatientSignEntity();
patientSign.setPatientPhone(reqVo.getPhone());
patientSign.setPackageOrderId(reqVo.getPackageOrderId());
patientSign.setStatus(StatusEnum.IN_CONSULTATION.getValue());
psWrapper.setEntity(patientSign);
List<PatientSignEntity> patientSignEntities = patientSignMapper.selectList(psWrapper);
if (!patientSignEntities.isEmpty()) {
return BaseResponse.error("已经有进行中的签约的医生,不能在进行签约!!!");
}
} else if (SignStatus.CANCEL.getValue().equals(reqVo.getSignStatus())) {
QueryWrapper<PatientSignEntity> psWrapper = new QueryWrapper<>();
PatientSignEntity patientSign = new PatientSignEntity();
patientSign.setPatientPhone(reqVo.getPhone());
psWrapper.setEntity(patientSign);
psWrapper.between("update_time", entity.getBenefitsStartTime(), entity.getBenefitsEndTime());
List<PatientSignEntity> patientSignEntities = patientSignMapper.selectList(psWrapper);
if (!patientSignEntities.isEmpty() && patientSignEntities.size() >= 2) {
return BaseResponse.error("30天之内已经进行过改签医生,不能在进行改签!!!");
}
}
// 处理换绑医生
if (Objects.nonNull(reqVo.getAdmId())) {
QueryWrapper<PatientSignEntity> psWrapper = new QueryWrapper<>();
PatientSignEntity patientSign = new PatientSignEntity();
patientSign.setAdmId(admId);
patientSign.setAdmId(reqVo.getAdmId());
psWrapper.setEntity(patientSign);
PatientSignEntity patientSignEntity = patientSignMapper.selectOne(psWrapper);
if (Objects.nonNull(patientSignEntity)) {
......@@ -155,11 +191,16 @@ public class PatientServiceImpl implements PatientService {
throw new BusinessException("未查询到签约信息,不能获取排班医生!");
}
sendImMsgDTO.setOldAdmId(pse.getAdmId());
}
//放入MQ任务,处理订单到时结束
if ("0".equals(entity.getIsRenew()) || SignStatus.NORMAL.getValue().equals(reqVo.getSignStatus())) {
OrderTaskVo orderTaskVo = new OrderTaskVo();
orderTaskVo.setType(1);
orderTaskVo.setId(String.valueOf(patientSignEntity.getId()));
if ("0".equals(entity.getIsRenew())) {
orderTaskVo.setExpireTime(DateUtils.secondBetween(signStartTime, signEndTime));
}
rabbitProduct.sendDelay(orderTaskVo);
}
......
......@@ -292,6 +292,23 @@ public class PatientSignServiceImpl implements PatientSignService {
return patientSignEntities;
}
@Override
public PatientSignEntity getOneByPhone(String phone) {
QueryWrapper<PatientSignEntity> psWrapper = new QueryWrapper<>();
PatientSignEntity patientSign = new PatientSignEntity();
patientSign.setPatientPhone(phone);
psWrapper.setEntity(patientSign);
psWrapper.orderByDesc("createTime");
psWrapper.last("limit 1");
PatientSignEntity pse = patientSignMapper.selectOne(psWrapper);
return pse;
}
@Override
public int updateById(PatientSignEntity patientSignEntity) {
return patientSignMapper.updateById(patientSignEntity);
}
public ImAccountVo getImAccounts(PatientSignEntity patientSignEntity, String admId, String imAppCode, String doctorId) {
ImAccountVo admission = new ImAccountVo();
......
......@@ -7,7 +7,10 @@ import com.ebaiyihui.family.doctor.common.dto.SendImMsgDTO;
import com.ebaiyihui.family.doctor.server.common.constants.CommonConstants;
import com.ebaiyihui.family.doctor.server.common.constants.ImConstants;
import com.ebaiyihui.family.doctor.server.common.enums.MsgTempTypeEnum;
import com.ebaiyihui.family.doctor.server.common.enums.StatusEnum;
import com.ebaiyihui.family.doctor.server.entity.MobileBenefitPackageEntity;
import com.ebaiyihui.family.doctor.server.entity.PatientSignEntity;
import com.ebaiyihui.family.doctor.server.mapper.MobileBenefitPackageMapper;
import com.ebaiyihui.family.doctor.server.service.ImMsgTemplateService;
import com.ebaiyihui.family.doctor.server.service.PatientSignService;
import com.ebaiyihui.family.doctor.server.util.DateUtils;
......@@ -19,7 +22,6 @@ import com.ebaiyihui.imforward.client.vo.IMQueryUserLoginRspVO;
import com.ebaiyihui.imforward.client.vo.IMSingleMsgResultVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
......@@ -42,12 +44,16 @@ public class ScheduleTask {
@Autowired
private PatientSignService patientSignSevice;
@Autowired
private MobileBenefitPackageMapper mobileBenefitPackageMapper;
@Autowired
private ThirdOrderPushUtil thirdOrderPushUtil;
@Scheduled(cron = "0 0 10 * * ?")
// @Scheduled(cron = "0 0 10 * * ?")
public void healthRecordWhetherUpdate() {
List<PatientSignEntity> patientSignEntities = patientSignSevice.selectList(new PatientSignEntity());
if (!patientSignEntities.isEmpty()) {
for (PatientSignEntity ps : patientSignEntities) {
HealthInfoDTO healthInfoDTO = new HealthInfoDTO();
healthInfoDTO.setPhone(ps.getPatientPhone());
......@@ -120,11 +126,15 @@ public class ScheduleTask {
}
}
@Scheduled(cron = "0 0 20 * * ?")
}
// @Scheduled(cron = "0 0 20 * * ?")
public void holidayPush() {
List<PatientSignEntity> patientSignEntities = patientSignSevice.selectList(new PatientSignEntity());
for (PatientSignEntity ps : patientSignEntities) {
try {
if (!patientSignEntities.isEmpty()) {
for (PatientSignEntity ps : patientSignEntities) {
SendImMsgDTO sendImMsgDTO = new SendImMsgDTO();
sendImMsgDTO.setAppCode(CommonConstants.APP_CODE);
sendImMsgDTO.setOrganId(CommonConstants.ORGAN_CODE);
......@@ -160,10 +170,36 @@ public class ScheduleTask {
sendImMsgDTO.setType(MsgTempTypeEnum.ACT_FU_MAF.getValue());
imMsgTemplateService.sendImMsg(sendImMsgDTO);
}
}
}
} catch (Exception e) {
log.error("节日日期转换异常", e);
}
}
// @Scheduled(cron = "0 0 1 * * ?")
public void orderInvalidation() {
List<MobileBenefitPackageEntity> mobileBenefitPackageEntities = mobileBenefitPackageMapper.queryMaxOneList();
try {
if (!mobileBenefitPackageEntities.isEmpty()) {
for (MobileBenefitPackageEntity mbp : mobileBenefitPackageEntities) {
Date curTime = new Date();
Date endTime = DateUtils.parseDate(mbp.getBenefitsEndTime(), DateUtils.FULL_FORMAT);
PatientSignEntity patientSignEntity = patientSignSevice.getOneByPhone(mbp.getPhone());
mbp.setVersion(1);
if (endTime.after(curTime)) {
patientSignEntity.setPackageOrderId(mbp.getActivateOrderId());
patientSignEntity.setSignEndTime(endTime);
} else {
patientSignEntity.setStatus(StatusEnum.FINISH_APPLY.getValue());
}
patientSignSevice.updateById(patientSignEntity);
mobileBenefitPackageMapper.updateVersion(mbp);
}
}
} catch (Exception e) {
log.error("日期转换异常", e);
}
}
}
......@@ -18,4 +18,6 @@ public class OrderTaskVo implements Serializable {
private String id;
private Integer type;
private Integer expireTime;
}
......@@ -46,6 +46,12 @@
where phone = #{phone,jdbcType=VARCHAR} and orderId = #{orderId}
</update>
<update id="updateVersion">
update mobile_benefit_package set
version = #{version,jdbcType=TINYINT}
where phone = #{phone,jdbcType=VARCHAR} and orderId = #{orderId}
</update>
<select id="queryByPhone" resultType="com.ebaiyihui.family.doctor.server.entity.MobileBenefitPackageEntity">
SELECT
<include refid="base_columns"/>
......@@ -53,6 +59,7 @@
mobile_benefit_package
WHERE
phone = #{mobile} and orderId = #{activateOrderId}
and NOW() BETWEEN STR_TO_DATE(benefitsStartTime, '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE(benefitsEndTime, '%Y-%m-%d %H:%i:%s');
ORDER BY
x_create_time DESC
LIMIT 0,1
......@@ -78,4 +85,12 @@
WHERE
mbp.phone = #{phone}
</select>
<select id="queryMaxOneList" resultType="com.ebaiyihui.family.doctor.server.entity.MobileBenefitPackageEntity">
SELECT t.x_id,t.productId,t.phone,t.userId,t.orderId,t.timeLimit,t.used, t.benefitOrderId, t.benefitsStartTime, t.benefitsEndTime, t.isRenew
FROM mobile_benefit_package t
LEFT JOIN mobile_benefit_package t2
ON t.phone = t2.phone AND t.x_create_time &lt; t2.x_create_time
WHERE t2.phone IS NULL and t.isRenew = 1 and t.version = 0;
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论