瀏覽代碼

代码修改

LAPTOP-KB9HII50\70708 3 年之前
父節點
當前提交
edd5310028

+ 117 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/visit/BaseVisitDO.java

@ -0,0 +1,117 @@
package com.yihu.jw.entity.care.visit;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by yeshijie on 2021/11/11.
 */
@Entity
@Table(name = "base_visit")
public class BaseVisitDO extends UuidIdentityEntityWithCreateTime {
    private String patient;
    private String patientName;
    private String type;//类型 1老人日常走访
    private String status;//状态 0计划中 1 已完成 2计划超时
    private Date visitDate;//完成走访时间
    private Date visitPlanDate;//计划走访时间
    private String doctor;
    private String doctorName;
    private String visitContent;//走访记录
    private String visitImg;//走访图片
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    @Column(name = "patient_name")
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "visit_date")
    public Date getVisitDate() {
        return visitDate;
    }
    public void setVisitDate(Date visitDate) {
        this.visitDate = visitDate;
    }
    @Column(name = "visit_plan_date")
    public Date getVisitPlanDate() {
        return visitPlanDate;
    }
    public void setVisitPlanDate(Date visitPlanDate) {
        this.visitPlanDate = visitPlanDate;
    }
    @Column(name = "doctor")
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    @Column(name = "doctor_name")
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    @Column(name = "visit_content")
    public String getVisitContent() {
        return visitContent;
    }
    public void setVisitContent(String visitContent) {
        this.visitContent = visitContent;
    }
    @Column(name = "visit_img")
    public String getVisitImg() {
        return visitImg;
    }
    public void setVisitImg(String visitImg) {
        this.visitImg = visitImg;
    }
}

+ 6 - 0
svr/svr-cloud-care/pom.xml

@ -242,6 +242,12 @@
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>
        <!-- 个推v2sdk -->
        <dependency>
            <groupId>com.getui.push</groupId>
            <artifactId>restful-sdk</artifactId>
            <version>1.0.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>

+ 18 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/visit/BaseVisitDao.java

@ -0,0 +1,18 @@
package com.yihu.jw.care.dao.visit;
import com.yihu.jw.entity.care.visit.BaseVisitDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
/**
 * Created by yeshijie on 2021/11/11.
 */
public interface BaseVisitDao  extends PagingAndSortingRepository<BaseVisitDO, String>, JpaSpecificationExecutor<BaseVisitDO> {
    @Query("select a from BaseVisitDO a where a.doctor = ?1 and a.visitPlanDate between ?2 and ?3 ")
    List<BaseVisitDO> findByDoctor(String doctor, Date begin, Date end) throws Exception;
}

+ 134 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/visit/VisitEndpoint.java

@ -0,0 +1,134 @@
package com.yihu.jw.care.endpoint.visit;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.visit.BaseVisitService;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import com.yihu.jw.entity.care.visit.BaseVisitDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * 日常走访
 * Created by yeshijie on 2021/11/11.
 */
@RestController
@RequestMapping(value = "visit", produces = "application/json;charset=UTF-8")
@Api(value = "日常走访", description = "日常走访", tags = {"日常走访"})
public class VisitEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseVisitService baseVisitService;
    @ApiOperation("获取日常走访列表")
    @RequestMapping(value = "/getListByDoctor", method = RequestMethod.GET)
    public ListEnvelop getListByDoctor(@ApiParam(name = "startTime", value = "开始时间", defaultValue = "2021-11-11 00:00:00")
                                        @RequestParam(value = "startTime", required = true) String startTime,
                                       @ApiParam(name = "endTime", value = "结束时间", defaultValue = "2021-11-30 00:00:00")
                                        @RequestParam(value = "endTime", required = true) String endTime,
                                       @ApiParam(name = "doctor", value = "医生id")
                                        @RequestParam(value = "doctor", required = true) String doctor) {
        try {
            List<Map<String, Object>> result = baseVisitService.getListByDoctor(doctor, startTime, endTime);
            return ListEnvelop.getSuccess("创建成功",result);
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
    @ApiOperation("获取日常走访详情")
    @RequestMapping(value = "findVisitDetail", method = RequestMethod.GET)
    public ObjEnvelop findVisitDetail(@ApiParam(name = "id", value = "id")
                                       @RequestParam(value = "id", required = true) String id) {
        try {
            Map<String, String> result = baseVisitService.findVisitDetail(id);
            return ObjEnvelop.getSuccess("创建成功",result);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("新增走访计划(批量)")
    @RequestMapping(value = "/addVisitPlan",method = RequestMethod.POST)
    @ObserverRequired
    public Envelop addVistiPlan(@ApiParam(name = "patient", value = "患者代码", defaultValue = "443a196ef8744536a531260eb26c05d7")
                                  @RequestParam(value = "patient", required = true) String patient,
                                @ApiParam(name = "data", value = "随访计划列表json", defaultValue = "[{\"date\":\"2021-11-16 20:00:00\"},{\"date\":\"2021-11-17 15:00:00\"}]")
                                  @RequestParam(value = "data", required = true) String data,
                                @ApiParam(name = "doctor", value = "医生id")
                                  @RequestParam(value = "doctor", required = true) String doctor) {
        try {
            baseVisitService.addVistiPlan(doctor, patient, data);
            return Envelop.getSuccess("创建成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
    @ApiOperation("删除走访计划")
    @RequestMapping(value = "/delVisti",method = RequestMethod.POST)
    @ObserverRequired
    public Envelop delVisti(@ApiParam(name = "id", value = "走访id")
                                @RequestParam(value = "id", required = true) String id) {
        try {
            String result = baseVisitService.delVisti(id);
            if(StringUtils.isNotBlank(result)){
                return Envelop.getError("删除失败:"+result,-1);
            }
            return Envelop.getSuccess("删除成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
    @ApiOperation("修改走访计划时间")
    @RequestMapping(value = "/updVisit",method = RequestMethod.POST)
    @ObserverRequired
    public Envelop updVisit(@ApiParam(name = "id", value = "走访id")
                            @RequestParam(value = "id", required = true) String id,
                            @ApiParam(name = "visitPlanDate", value = "走访计划时间")
                            @RequestParam(value = "visitPlanDate", required = true) String visitPlanDate) {
        try {
            String result = baseVisitService.updVisit(id,visitPlanDate);
            if(StringUtils.isNotBlank(result)){
                return Envelop.getError("修改失败:"+result,-1);
            }
            return Envelop.getSuccess("修改成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
    @ApiOperation("完成走访计划时间")
    @RequestMapping(value = "/completeVisit",method = RequestMethod.POST)
    @ObserverRequired
    public Envelop completeVisit(@ApiParam(name = "id", value = "走访id")
                            @RequestParam(value = "id", required = true) String id,
                            @ApiParam(name = "visitContent", value = "走访记录")
                            @RequestParam(value = "visitContent", required = true) String visitContent,
                            @ApiParam(name = "visitImg", value = "走访图片")
                            @RequestParam(value = "visitImg", required = true) String visitImg) {
        try {
            String result = baseVisitService.completeVisit(id,visitContent,visitImg);
            if(StringUtils.isNotBlank(result)){
                return Envelop.getError("操作失败:"+result,-1);
            }
            return Envelop.getSuccess("操作成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
}

+ 208 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java

@ -0,0 +1,208 @@
package com.yihu.jw.care.service.visit;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.visit.BaseVisitDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.visit.BaseVisitDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.*;
/**
 * Created by yeshijie on 2021/11/11.
 */
@Service
public class BaseVisitService {
    @Autowired
    private BaseVisitDao baseVisitDao;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    /**
     * 获取走访列表-日历
     */
    public List<Map<String, Object>> getListByDoctor(String doctorCode, String startTime, String endTime) throws Exception {
        List<Map<String, Object>> re = new ArrayList<>();
        Map<String, Map<String, Object>> temp = new HashMap<>();
        List<BaseVisitDO> list = baseVisitDao.findByDoctor(doctorCode, DateUtil.strToDate(startTime), DateUtil.strToDate(endTime));
        if (list != null && list.size() > 0) {
            for (BaseVisitDO visitDO : list) {
                String date = DateUtil.dateToStrShort(visitDO.getVisitPlanDate());
                Map<String, String> map = getVisitDetail(visitDO);
                if (temp.containsKey(date)) {
                    Map<String, Object> vo = temp.get(date);
                    vo.put("num", Integer.parseInt(vo.get("num").toString()) + 1);
                    ((List<Map<String, String>>) vo.get("list")).add(map);
                    temp.put(date, vo);
                } else {
                    Map<String, Object> vo = new HashMap<>();
                    List<Map<String, String>> list1 = new ArrayList<>();
                    vo.put("date", date);
                    vo.put("num", 1);
                    list1.add(map);
                    vo.put("list", list1);
                    temp.put(date, vo);
                }
            }
            for (Map<String, Object> map : temp.values()) {
                re.add(map);
            }
        }
        return re;
    }
    /**
     * 转译走访信息
     */
    private Map<String, String> getVisitDetail(BaseVisitDO visitDO) {
        Map<String, String> re = new HashMap<>();
        re.put("id", visitDO.getId());
        re.put("visitDate", DateUtil.dateToStrLong(visitDO.getVisitDate()));
        re.put("visitPlanDate", DateUtil.dateToStrLong(visitDO.getVisitPlanDate()));
        re.put("type", visitDO.getType());
        re.put("status", visitDO.getStatus());
        re.put("doctor", visitDO.getDoctor());
        re.put("doctorName", visitDO.getDoctorName());
        re.put("pateint", visitDO.getPatient());
        re.put("patientName", visitDO.getPatientName());
        return re;
    }
    /**
     * 删除
     * @param id
     * @return
     */
    public String delVisti(String id){
        BaseVisitDO visitDO = baseVisitDao.findOne(id);
        if(visitDO == null){
            return "走访已删除,请勿重复操作";
        }
        if("1".equals(visitDO.getStatus())){
            return "走访已完成不能删除";
        }
        return null;
    }
    /**
     * 修改走访计划时间
     * @param id
     * @return
     */
    public String updVisit(String id,String visitPlanDate){
        BaseVisitDO visitDO = baseVisitDao.findOne(id);
        if("1".equals(visitDO.getStatus())){
            return "走访已完成不能修改";
        }
        visitDO.setVisitPlanDate(DateUtil.strToDate(visitPlanDate));
        visitDO.setStatus("0");
        baseVisitDao.save(visitDO);
        return null;
    }
    /**
     * 完成走访
     * @param id
     * @return
     */
    public String completeVisit(String id,String visitContent,String visitImg){
        BaseVisitDO visitDO = baseVisitDao.findOne(id);
        if("1".equals(visitDO.getStatus())){
            return "走访已完成,请勿重复操作";
        }
        visitDO.setVisitDate(new Date());
        visitDO.setStatus("1");
        visitDO.setVisitContent(visitContent);
        visitDO.setVisitImg(visitImg);
        baseVisitDao.save(visitDO);
        return null;
    }
    /**
     * 获取走访详情
     * @param id
     * @return
     */
    public Map<String, String> findVisitDetail(String id){
        Map<String, String> re = new HashMap<>();
        BaseVisitDO visitDO = baseVisitDao.findOne(id);
        re.put("id", visitDO.getId());
        re.put("visitDate", DateUtil.dateToStrLong(visitDO.getVisitDate()));
        re.put("visitPlanDate", DateUtil.dateToStrLong(visitDO.getVisitPlanDate()));
        re.put("type", visitDO.getType());
        re.put("status", visitDO.getStatus());
        re.put("doctor", visitDO.getDoctor());
        re.put("doctorName", visitDO.getDoctorName());
        re.put("pateint", visitDO.getPatient());
        re.put("patientName", visitDO.getPatientName());
        re.put("visitImg",visitDO.getVisitImg());
        re.put("visitContent",visitDO.getVisitContent());
        BasePatientDO patient = patientDao.findById(visitDO.getPatient());
        if (patient != null) {
            re.put("idcard", patient.getIdcard());
            String mobile = patient.getMobile();
            re.put("mobile", mobile);
            re.put("sex", String.valueOf(patient.getSex()));
            re.put("birthday", DateUtil.dateToStrLong(patient.getBirthday()));
            re.put("photo", patient.getPhoto());
            re.put("age", IdCardUtil.getAgeByIdcardOrBirthday(patient.getIdcard(),patient.getBirthday())+"");
        }
        return re;
    }
    /**
     * 新增随访计划(批量)
     */
    @Transactional
    public void addVistiPlan(String doctorCode, String patientCode, String data) throws Exception {
        //批量随访计划
        JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Map.class);
        List<Map<String, String>> list = objectMapper.readValue(data, javaType);
        if (list != null && list.size() > 0) {
            //获取患者信息
            BasePatientDO patient = patientDao.findById(patientCode);
            if (patient == null) {
                throw new Exception("获取不到用户信息!");
            }
            BaseDoctorDO doctor = doctorDao.findById(doctorCode);
            if (doctor == null) {
                throw new Exception("获取不到医生信息!");
            }
            List<BaseVisitDO> visitPlans = new ArrayList<>();
            for (Map<String, String> map : list) {
                BaseVisitDO visitDO = new BaseVisitDO();
                visitDO.setType("1");
                visitDO.setStatus("0");
                Date date = DateUtil.strToDate(map.get("date"));
                visitDO.setVisitPlanDate(date);
                visitDO.setDoctor(doctorCode);
                visitDO.setDoctorName(doctor.getName());
                visitDO.setPatient(patientCode);
                visitDO.setPatientName(patient.getName());
                visitPlans.add(visitDO);
            }
            baseVisitDao.save(visitPlans);
        }
    }
}

+ 78 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/GetuiUtil.java

@ -0,0 +1,78 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSONObject;
import com.getui.push.v2.sdk.ApiHelper;
import com.getui.push.v2.sdk.GtApiConfiguration;
import com.getui.push.v2.sdk.api.PushApi;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.Settings;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
/**
 * Created with IntelliJ IDEA.
 * 个推推送工具类
 * @Author: yeshijie
 * @Date: 2021/7/8
 * @Description:
 */
public class GetuiUtil {
    private static final Logger logger = LoggerFactory.getLogger(GetuiUtil.class);
    public static String AppID = "GjGtBQUgSbASF0F9svJ6b7";
    public static String AppKey = "LcDj4vwtE29Q88KyPjJEj9";
    public static String AppSecret = "0VAMmhF1F76oGjheYWATM3";
    public static String MasterSecret = "hB6swhmr0mAeaJgyoLMkC5";
    private static PushApi getPushApi(){
        GtApiConfiguration apiConfiguration = new GtApiConfiguration();
        //填写应用配置
        apiConfiguration.setAppId(AppID);
        apiConfiguration.setAppKey(AppKey);
        apiConfiguration.setMasterSecret(MasterSecret);
        // 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId
        apiConfiguration.setDomain("https://restapi.getui.com/v2/");
        // 实例化ApiHelper对象,用于创建接口对象
        ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
        // 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi
        PushApi pushApi = apiHelper.creatApi(PushApi.class);
        return pushApi;
    }
    /**
     * 单推
     */
    public static ApiResult<Map<String, Map<String, String>>> pushToSingleByCid(String cid, JSONObject json) {
        //根据cid进行单推
        PushDTO<Audience> pushDTO = new PushDTO<>();
        // 设置推送参数
        pushDTO.setRequestId(System.currentTimeMillis() + "");
        PushMessage pushMessage = new PushMessage();
        pushDTO.setPushMessage(pushMessage);
        GTNotification notification = new GTNotification();
        pushMessage.setNotification(notification);
        notification.setTitle(json.getString("title"));
        notification.setBody(json.getString("body"));
        notification.setClickType(json.getString("clickType"));
        notification.setUrl(json.getString("url"));
        // 设置接收人信息
        Audience audience = new Audience();
        pushDTO.setAudience(audience);
        audience.addCid(cid);
        //消息离线时间设置
        Settings settings = new Settings();
        //	消息离线时间设置,单位毫秒,-1表示不设离线,-1 ~ 3 * 24 * 3600 * 1000(3天)之间
        settings.setTtl(3 * 24 * 3600 * 1000);
        pushDTO.setSettings(settings);
        // 进行cid单推
        return getPushApi().pushToSingleByCid(pushDTO);
    }
}