LAPTOP-KB9HII50\70708 2 years ago
parent
commit
8d2c55e82d

+ 40 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/admin/AdminManageEndpoint.java

@ -0,0 +1,40 @@
package com.yihu.jw.care.endpoint.admin;
import com.yihu.jw.care.service.admin.AdminManageService;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 *
 * Created by yeshijie on 2022/11/15.
 */
@RestController
@RequestMapping(value = "adminManage")
@Api(value = "管理员-管理端",  tags = {"管理员-管理端"})
public class AdminManageEndpoint extends EnvelopRestEndpoint {
    @Resource
    private AdminManageService adminManageService;
    @GetMapping(value = "getUserList")
    @ApiOperation(value = "获取人员列表")
    public PageEnvelop getUserList(@ApiParam(name = "type",value = "类型。1医生,2社工,3教师,4助老员 5幼儿") @RequestParam String type,
                                         @ApiParam(name = "page",value = "页码") @RequestParam Integer page,
                                         @ApiParam(name = "size",value = "每页大小") @RequestParam Integer size,
                                         @ApiParam(name = "name",value = "模糊搜索名字") @RequestParam(name = "name",required = false)String name){
        try {
            return adminManageService.getUserList(type,name, page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
}

+ 309 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/admin/AdminManageService.java

@ -0,0 +1,309 @@
package com.yihu.jw.care.service.admin;
import com.yihu.jw.care.vo.OrgVo;
import com.yihu.jw.care.vo.UserVo;
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.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Created by yeshijie on 2022/11/15.
 */
@Service
public class AdminManageService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 管理端通讯录
     * type 1照护老人 2社工 3助老员 4教师 5幼儿
     */
    public PageEnvelop getUserList(String type, String name, Integer page, Integer size){
        PageEnvelop envelop = new PageEnvelop();
        String limit = " limit "+(page-1)*size+","+size;
        switch (type){
            case "1":
                envelop = getOlderList(name, limit);
                break;
            case "2":
                envelop = getSocialWorkerList(name, limit);
                break;
            case "3":
                envelop = getHelperList(name, limit);
                break;
            case "4":
                envelop = getTeacherList(name, limit);
                break;
            case "5":
                envelop = getChildList(name, limit);
                break;
        }
        envelop.setPageSize(size);
        envelop.setCurrPage(page);
        return envelop;
    }
    public PageEnvelop getOlderList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and a.id not in ('"+orgCodes+"')";
        }
        List<Map<String,Object>> list = findOld(name,null,limit,filter);
        Long count = findOldTotal(name,null,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<Map<String,Object>> findOld(String name,String residentialArea,String limit,String filter1){
        String sql = "SELECT DISTINCT a.id,a.name,a.photo,a.idcard,CAST(IFNULL(a.birthday,'') AS char ) birthday,a.residential_area residentialArea,a.sex " +
                ",a.ykt_id yktId, case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online,IFNULL(sign_status,0) signStatus from base_patient a " +
                " WHERE a.archive_type = 1 and a.del = '1'   ";
        sql+=" and (a.sign_status=1 or (EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0))) ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter1;
        sql += " GROUP BY a.id,a.name,a.photo,a.idcard,a.birthday,a.residential_area,a.sex,a.ykt_id,online,signStatus ";
        sql += " ORDER BY online desc,a.ykt_id desc,signStatus desc";
        sql += limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            String id = map.get("id")+"";
            String familySql = "select t2.id,t2.name,t2.sex,t2.mobile,t2.idcard,if(t2.openid is null,0,1) online,t2.photo,t1.family_relation " +
                    "from base_patient t2 left JOIN base_patient_family_member t1 on t1.family_member = t2.id " +
                    "where t2.archive_type=3 and t2.del=1 and t1.patient='"+id+"'";
            map.put("family",jdbcTemplate.queryForList(familySql));
        }
        return list;
    }
    public Long findOldTotal(String name,String residentialArea,String filter){
        String sql = "SELECT count(DISTINCT a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' ";
        sql+=" and (a.sign_status=1 or (EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0))) ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getSocialWorkerList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and t.org_code not in ('"+orgCodes+"')";
        }
        List<OrgVo> list = findSocialWorker(name,limit,filter);
        Long count = findSocialWorkerTotal(name,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<OrgVo> findSocialWorker(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online,a.mobile,t.name orgName,t.id orgCode" +
                " from base_doctor a,base_team t,base_team_member tm" +
                "  WHERE a.id=tm.doctor_code and a.doctor_level = 2 and t.id =tm.team_code and t.del=1 and a.del = '1' and tm.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
//        sql+=limit;
        List<UserVo> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(UserVo.class));
        Map<String,List<UserVo>> userMap = list.stream().collect(Collectors.groupingBy(UserVo::getOrgCode));
        Map<String,String> orgMap = list.stream().collect(Collectors.toMap(UserVo::getOrgCode, UserVo::getOrgName,(key1 , key2)-> key2 ));
        List<OrgVo> orgVoList = new ArrayList<>();
        for (String key:orgMap.keySet()){
            String orgName = orgMap.get(key);
            OrgVo orgVo = new OrgVo();
            orgVo.setOrgName(orgName);
            orgVo.setOrgCode(key);
            List<UserVo> temList = userMap.get(key);
            orgVo.setUserList(temList);
            orgVoList.add(orgVo);
        }
        return orgVoList;
    }
    public Long findSocialWorkerTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_team t,base_team_member tm " +
                "WHERE a.id=tm.doctor_code and a.doctor_level = 2 and t.id =tm.team_code and t.del=1 and a.del = '1' and tm.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getHelperList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and h.org_code not in ('"+orgCodes+"')";
        }
        List<OrgVo> list = findHelper(name,limit,filter);
        Long count = findHelperTotal(name,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<OrgVo> findHelper(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online,a.mobile,h.org_name orgName,h.org_code orgCode from base_doctor a,base_doctor_hospital h" +
                "  WHERE a.id=h.doctor_code and a.doctor_level = 4 and a.del = '1' and h.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
        sql+=limit;
        List<UserVo> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(UserVo.class));
        Map<String,List<UserVo>> userMap = list.stream().collect(Collectors.groupingBy(UserVo::getOrgCode));
        Map<String,String> orgMap = list.stream().collect(Collectors.toMap(UserVo::getOrgCode, UserVo::getOrgName,(key1 , key2)-> key2 ));
        List<OrgVo> orgVoList = new ArrayList<>();
        for (String key:orgMap.keySet()){
            String orgName = orgMap.get(key);
            OrgVo orgVo = new OrgVo();
            orgVo.setOrgName(orgName);
            orgVo.setOrgCode(key);
            List<UserVo> temList = userMap.get(key);
            orgVo.setUserList(temList);
            orgVoList.add(orgVo);
        }
        return orgVoList;
    }
    public Long findHelperTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_doctor_hospital h WHERE  a.id=h.doctor_code and a.doctor_level = 4 and a.del = '1' and h.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getTeacherList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and h.org_code not in ('"+orgCodes+"')";
        }
        List<OrgVo> list = findTeacherper(name,limit,filter);
        Long count = findTeacherTotal(name,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<OrgVo> findTeacherper(String name,String limit,String fileter){
        String sql = "SELECT a.id,a.name,a.photo,a.sex,IFNULL(a.on_line,0) online,a.mobile,h.org_name orgName,h.org_code orgCode from base_doctor a,base_doctor_hospital h" +
                "  WHERE a.id=h.doctor_code and a.doctor_level = 3 and a.del = '1' and h.del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and a.name like '%"+name+"%' ";
        }
        sql += fileter;
        sql += " ORDER BY online desc";
        sql+=limit;
        List<UserVo> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(UserVo.class));
        Map<String,List<UserVo>> userMap = list.stream().collect(Collectors.groupingBy(UserVo::getOrgCode));
        Map<String,String> orgMap = list.stream().collect(Collectors.toMap(UserVo::getOrgCode, UserVo::getOrgName,(key1 , key2)-> key2 ));
        List<OrgVo> orgVoList = new ArrayList<>();
        for (String key:orgMap.keySet()){
            String orgName = orgMap.get(key);
            OrgVo orgVo = new OrgVo();
            orgVo.setOrgName(orgName);
            orgVo.setOrgCode(key);
            List<UserVo> temList = userMap.get(key);
            orgVo.setUserList(temList);
            orgVoList.add(orgVo);
        }
        return orgVoList;
    }
    public Long findTeacherTotal(String name,String filter){
        String sql = "SELECT count(a.id) from base_doctor a,base_doctor_hospital h WHERE  a.id=h.doctor_code and a.doctor_level = 3 and a.del = '1' and h.del = '1'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
    public PageEnvelop getChildList(String name,String limit){
        String filter = "";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' ";
        List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
        if(listtmp.size()>0){
            String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
            orgCodes = orgCodes.replaceAll(",","','");
            filter = " and id not in ('"+orgCodes+"')";
        }
        List<Map<String,Object>> list = findChild(name,null,limit,filter);
        Long count = findChildTotal(name,null,filter);
        return PageEnvelop.getSuccessListWithPage("查找成功",list,0,0,count);
    }
    public List<Map<String,Object>> findChild(String name,String residentialArea,String limit,String filter1){
        String sql = "SELECT id,name,photo,mobile,idcard,sex,birthday  from base_patient WHERE archive_type = 2 and del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter1;
        sql += " order by id desc";
        sql+=limit;
        List<Map<String,Object>>  list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
            String paientId = map.get("id").toString();
            String idcardNo = map.get("idcard") + "";
            if(map.get("birthday")!=null){
                Date birthday = DateUtil.strToDate(map.get("birthday").toString());
                Integer age = IdCardUtil.getAgeByIdcardOrBirthday(idcardNo,birthday);
                map.put("age",age);
            }else {
                Integer age = IdCardUtil.getAgeForIdcard(idcardNo);
                map.put("age",age);
            }
        }
        return list;
    }
    public Long findChildTotal(String name,String residentialArea,String filter){
        String sql = "SELECT count(id) from base_patient WHERE archive_type = 2 and del = '1' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
        if(!StringUtil.isBlank(residentialArea)){
            sql+= " and residential_area = '"+residentialArea+"' ";
        }
        sql += filter;
        return jdbcTemplate.queryForObject(sql,Long.class);
    }
}

+ 39 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/vo/OrgVo.java

@ -0,0 +1,39 @@
package com.yihu.jw.care.vo;
import java.io.Serializable;
import java.util.List;
/**
 * Created by yeshijie on 2022/11/15.
 */
public class OrgVo implements Serializable {
    private String orgCode;
    private String orgName;
    private List<UserVo> userList;
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public List<UserVo> getUserList() {
        return userList;
    }
    public void setUserList(List<UserVo> userList) {
        this.userList = userList;
    }
}

+ 92 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/vo/UserVo.java

@ -0,0 +1,92 @@
package com.yihu.jw.care.vo;
import java.io.Serializable;
/**
 * Created by yeshijie on 2022/11/15.
 */
public class UserVo implements Serializable {
    private String id;
    private String name;
    private String photo;
    private String sex;
    private String mobile;
    private String idcard;
    private String online;
    private String orgCode;
    private String orgName;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getOnline() {
        return online;
    }
    public void setOnline(String online) {
        this.online = online;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}