Browse Source

云照护修改

LAPTOP-KB9HII50\70708 1 năm trước cách đây
mục cha
commit
c21c047fda

+ 101 - 6
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java

@ -17,6 +17,7 @@ import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.entity.ServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -48,10 +49,104 @@ public class SignEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private ServicePackageService servicePackageService;
    @GetMapping(value = "signPage")
    @ApiOperation(value = "获取签约记录分页")
    public PageEnvelop signPage (
            @ApiParam(name = "name", value = "居民姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "doctorId", value = "医生code", required = false)
            @RequestParam(value = "doctorId",required = false) String doctorId,
            @ApiParam(name = "patientId", value = "居民id", required = false)
            @RequestParam(value = "patientId",required = false) String patientId,
            @ApiParam(name = "status", value = "状态 不传全部 0待审核 1已签约 2待支付 3已拒绝 -1已过期 -2已失效 -3已撤销", required = false)
            @RequestParam(value = "status",required = false) String status,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) {
        try{
            return servicePackageService.signPage(patientId, doctorId,name,status, page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "servicePackagePage")
    @ApiOperation(value = "服务包列表")
    public PageEnvelop servicePackagePage (
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) {
        try{
            return servicePackageService.servicePackagePage( page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "servicePackageInfo")
    @ApiOperation(value = "服务包详情")
    public ObjEnvelop servicePackageInfo(
            @ApiParam(name = "id", value = "服务包id", required = true)
            @RequestParam String id) {
        try{
            return ObjEnvelop.getSuccess("查询成功",servicePackageService.servicePackageInfo(id));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "isSignPackage")
    @ApiOperation(value = "是否签约服务包")
    public ObjEnvelop isSignPackage(
            @ApiParam(name = "patientId", value = "居民id", required = true)
            @RequestParam String patientId,
            @ApiParam(name = "servicePackageId", value = "服务包id", required = true)
            @RequestParam String servicePackageId) {
        try{
            return ObjEnvelop.getSuccess("查询成功",servicePackageService.isSignPackage(patientId,servicePackageId));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @PostMapping(value = "patient/sign")
    @ApiOperation(value = "申请签约")
    public ObjEnvelop patientSign(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) {
        try{
            return ObjEnvelop.getSuccess("查询成功",servicePackageService.sign(jsonData,getUID(),"1"));
        }catch (ServiceException se){
            return ObjEnvelop.getError(se.getMessage());
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @PostMapping(value = "doctor/sign")
    @ObserverRequired
    @ApiOperation(value = "申请签约")
    public ObjEnvelop doctorSign(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) {
        try{
            return ObjEnvelop.getSuccess("查询成功",servicePackageService.sign(jsonData,getUID(),"2"));
        }catch (ServiceException se){
            return ObjEnvelop.getError(se.getMessage());
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    /*************************************************************************************************************/
    @PostMapping(value = "addPatientSignList")
    @ApiOperation(value = "添加签约数据")
    @ObserverRequired
    public Envelop addPatientSignList () throws Exception {
    public Envelop addPatientSignList () {
        try{
            servicePackageService.addPatientSignList();
            return success("添加成功");
@ -68,7 +163,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "name", value = "机构名称", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "type", value = "类型 3 养老 4 教育,1 医疗", required = false)
            @RequestParam(value = "type",required = false) String type) throws Exception {
            @RequestParam(value = "type",required = false) String type) {
        try{
            return ListEnvelop.getSuccess("查询成功",servicePackageService.findSignOrg(patient,name,type));
        }catch (Exception e){
@ -84,7 +179,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "name", value = "机构名称", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "type", value = "类型 3 养老 4 教育,1 医疗", required = false)
            @RequestParam(value = "type",required = false) String type) throws Exception {
            @RequestParam(value = "type",required = false) String type) {
        try{
            return ListEnvelop.getSuccess("查询成功",servicePackageService.findOrgWithoutSigned(patient,name,type));
        }catch (Exception e){
@ -98,7 +193,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "patient", value = "居民code", required = true)
            @RequestParam(value = "patient",required = true) String patient,
            @ApiParam(name = "orgCode", value = "医院code", required = false)
            @RequestParam(value = "orgCode",required = false) String orgCode) throws Exception {
            @RequestParam(value = "orgCode",required = false) String orgCode) {
        try{
            return ListEnvelop.getSuccess("查询成功",servicePackageService.findSignDoctor(patient,orgCode));
        }catch (Exception e){
@ -112,7 +207,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "patient", value = "居民code", required = true)
            @RequestParam(value = "patient",required = true) String patient,
            @ApiParam(name = "orgCode", value = "医院code", required = false)
            @RequestParam(value = "orgCode",required = false) String orgCode) throws Exception {
            @RequestParam(value = "orgCode",required = false) String orgCode) {
        try{
            return ListEnvelop.getSuccess("查询成功",servicePackageService.findSignDoctor(patient,orgCode));
        }catch (Exception e){
@ -130,7 +225,7 @@ public class SignEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
            @RequestParam(value = "size") int size) {
        try{
            return servicePackageService.signRecordPage(name, doctorId, page, size);
        }catch (Exception e){

+ 139 - 19
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java

@ -22,6 +22,8 @@ import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.ServiceException;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
@ -34,6 +36,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@ -84,6 +87,142 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    @Autowired
    private BasePatientHelperDao patientHelperDao;
    /**
     * 签约记录
     * status 状态 0待审核 1已签约 2待支付 3已拒绝 -1已过期 -2已失效 -3已撤销
     */
    public PageEnvelop signPage(String patientId,String doctorId,String name,String status,Integer page,Integer size){
        String sql = "SELECT DISTINCT if(ar.id=null,'0','1') isCapacityAssessment,r.id,r.`status`,di.dict_value statusName" +
                ",r.patient,p.`name`,p.sex,p.mobile,p.idcard,p.birthday,p.openid " +
                ",p.photo,r.create_time createTime,r.type,sp.`name` packageName,sp.num,sp.org_name orgName";
        String countSql = "select count(distinct r.id) ";
        String filter = " from base_service_package_sign_record r " +
                " inner JOIN base_patient p on p.id = r.patient " +
                " LEFT JOIN base_service_package sp on r.service_package_id=sp.id " +
                " LEFT JOIN wlyy_hospital_sys_dict di on di.dict_name = 'sign_status' and di.dict_code=r.status " +
                " LEFT JOIN base_capacity_assessment_record ar on ar.patient = r.patient and ar.assessment_time>= '" + DateUtil.getNowYear() + "-01-01'" +
                " where 1=1 ";
        if(StringUtils.isNotBlank(patientId)){
            filter += " and r.patient = '"+patientId+"' ";
        }
        if(StringUtils.isNotBlank(doctorId)){
            filter += " and r.check_doctor = '"+doctorId+"' ";
        }
        if(StringUtils.isNotBlank(status)){
            filter += " and r.status = "+status+" ";
        }
        if(StringUtils.isNotBlank(name)){
            filter += " and p.name like '%"+name+"%' ";
        }
        String oderBy = " order by r.id desc limit "+(page-1)*size+","+size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filter+oderBy);
        for (Map<String,Object> map:list){
            String idcard = map.get("idcard")+"";
            String birthday = map.get("birthday")+"";
            map.put("age", IdCardUtil.getAgeByBirthdayStrOrIdcard(idcard,birthday));
        }
        long count = jdbcTemplate.queryForObject(countSql+filter+oderBy,Long.class);
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,size,count);
    }
    //是否签约服务包
    public boolean isSignPackage(String patientId,String servicePackageId) {
        String sql = "SELECT count(*) from base_service_package_sign_record WHERE patient='"+patientId+"' and service_package_id='"+servicePackageId+"' and `status`>0";
        int count = jdbcTemplate.queryForObject(sql,Integer.class);
        return count==0;
    }
    /**
     * 申请签约
     * @param jsonData
     * @param uid
     * @param type 1居民 2医生
     * @throws Exception
     */
    public ServicePackageSignRecordDO sign(String jsonData,String uid,String type) throws Exception{
        ServicePackageSignRecordDO signRecordDO = objectMapper.readValue(jsonData, ServicePackageSignRecordDO.class);
        String patientId = signRecordDO.getPatient();
        if(StringUtils.isBlank(patientId)){
            throw new ServiceException("参数错误");
        }
        synchronized (patientId.intern()){
            ServicePackageDO servicePackageDO = servicePackageDao.findOne(signRecordDO.getServicePackageId());
            if(servicePackageDO==null){
                throw new ServiceException("服务包不存在");
            }
            if(!isSignPackage(patientId,signRecordDO.getServicePackageId())){
                throw new ServiceException("您已经申请过该服务包,请勿重复申请");
            }
            if("1".equals(servicePackageDO.getIsCheck())){
                //开启审核
                signRecordDO.setStatus(0);//待审核
                signRecordDO.setCheckDoctor(servicePackageDO.getCheckDoctor());
                signRecordDO.setCheckDoctorName(servicePackageDO.getCheckDoctorName());
            }else {
                signRecordDO.setStatus(2);//待支付
                //判断支付金额
                if(new BigDecimal(0).compareTo(servicePackageDO.getPrice())==0){
                    //不需要支付
                    signRecordDO.setStatus(1);//已签约
                }else{
                    signRecordDO.setPayTime("10");//10分钟
                }
            }
            signRecordDO.setCreateTime(new Date());
            signRecordDO.setUpdateTime(new Date());
            if(patientId.equals(uid)){
                //本人
                signRecordDO.setType("1");
                signRecordDO.setProxyPatient(signRecordDO.getPatient());
                signRecordDO.setProxyPatientName(signRecordDO.getName());
            }else if("1".equals(type)){
                //家属
                BasePatientDO patientDO = patientDao.findById(uid);
                signRecordDO.setType("2");
                signRecordDO.setProxyPatient(patientDO.getId());
                signRecordDO.setProxyPatientName(patientDO.getName());
            }else {
                //医生
                BaseDoctorDO doctorDO = doctorDao.findById(uid);
                signRecordDO.setType("3");
                signRecordDO.setProxyPatient(doctorDO.getId());
                signRecordDO.setProxyPatientName(doctorDO.getName());
            }
            servicePackageSignRecordDao.save(signRecordDO);
            return signRecordDO;
        }
    }
    //服务包列表
    public PageEnvelop servicePackagePage(Integer page,Integer size){
        String sql = "SELECT id,name,type,price,org_name orgName,server_time_type serverTimeType,serverTime,isCheck,feeAfter ";
        String countSql = "select count(*) ";
        String filter = " from base_service_package WHERE del='1' ";
        String orderBy = " ORDER BY create_time desc limit "+(page-1)*size+","+size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filter+orderBy);
        String itemSql = "SELECT i.name,c.server_count serverCount from base_service_package_item i " +
                "LEFT JOIN base_service_item_config c on i.id=c.server_item_id WHERE i.service_package_id=? ";
        for (Map<String,Object> map:list){
            String id = map.get("id")+"";
            List<Map<String,Object>> items = jdbcTemplate.queryForList(itemSql,new Object[]{id});
            map.put("items",items);
        }
        Long count = jdbcTemplate.queryForObject(countSql+filter,Long.class);
        return PageEnvelop.getSuccessListWithPage("获取成功",list,page,size,count);
    }
    //服务包详情
    public ServicePackageDO servicePackageInfo(String id){
        ServicePackageDO packageDO = servicePackageDao.findOne(id);
        String itemSql = "SELECT i.*,c.server_count serverCount from base_service_package_item i " +
                "LEFT JOIN base_service_item_config c on i.id=c.server_item_id WHERE i.service_package_id='"+id+"' ";
        List<ServicePackageItemDO> itemDOList = jdbcTemplate.query(itemSql,new BeanPropertyRowMapper<>(ServicePackageItemDO.class));
        packageDO.setPackageItemDOList(itemDOList);
        return packageDO;
    }
    public void addPatientSignList(){
        String lableCode = "0";
@ -436,9 +575,6 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        String signId = signRecordDO.getId();
        List<String> idList = new ArrayList<>();
        if(StringUtil.isEmpty(signId)){
//            List<ServicePackageSignRecordDO> signRecordDOs = servicePackageSignRecordDao.findByStatusAndPatient(1,signRecordDO.getPatient());
//            if(signRecordDOs.size()==0){
                BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
                //需要新增签约记录
                signRecordDO.setStatus(1);
@ -477,22 +613,6 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
                    saveList.add(archiveDO);
                }
                archiveDao.save(saveList);
//            }else{
//                //不能重复签约
//                result.put(ResponseContant.resultFlag, ResponseContant.fail);
//                result.put(ResponseContant.resultMsg,"请勿重复签约");
//                return result;
////                ArchiveDO archiveDO = archiveDao.findByPatientAndDoctorCode(patientId,doctorId);
////                if(archiveDO!=null){
////                    archiveDO.setSignStatus(1);
////                    archiveDao.save(archiveDO);
////                }
////                signId = signRecordDOs.get(0).getId();
////                List<ServicePackageRecordDO> existList = servicePackageRecordDao.findBySignId(signId);
////                idList = existList.stream().map(ServicePackageRecordDO::getServicePackageId).collect(Collectors.toList());
//            }
        }else{
            //不能重复签约
            result.put(ResponseContant.resultFlag, ResponseContant.fail);

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

@ -239,11 +239,11 @@ public class BaseVisitService {
    }
    /**
     * 新增随访计划(批量)
     * 新增走访计划(批量)
     */
    @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) {