Selaa lähdekoodia

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

hxm 3 vuotta sitten
vanhempi
commit
b26214368f

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java

@ -61,4 +61,8 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Query("select a from SystemMessageDO a where  a.type=?1 and  a.del='1'")
    Page<SystemMessageDO> getByType(String type, Pageable pageRequest);
    @Modifying
    @Query("update SystemMessageDO a set a.del=0 where a.id in (?1)")
    Integer delMessage(String[] ids);
}

+ 40 - 0
business/es-service/src/main/java/com/yihu/jw/es/util/ElasticsearchUtil.java

@ -56,6 +56,46 @@ public class ElasticsearchUtil {
    @Value("${es.index.Statistics}")
    private String esIndex;
    /**
     * 直接执行essql语句
     * @param sql
     * @return
     * @throws Exception
     */
    public ObjectResult excuteSql(String sql) throws Exception{
        SQLExprParser parser = new ElasticSqlExprParser(sql);
        SQLExpr expr = parser.expr();
        SQLQueryExpr queryExpr = (SQLQueryExpr) expr;
        Select select = null;
        select = new SqlParser().parseSelect(queryExpr);
        //通过抽象语法树,封装成自定义的Select,包含了select、from、where group、limit等
        AggregationQueryAction action = null;
        DefaultQueryAction queryAction = null;
        SqlElasticSearchRequestBuilder requestBuilder = null;
        if (select.isAgg) {
            //包含计算的的排序分组的
            action = new AggregationQueryAction(elasticFactory.getTransportClient(), select);
            requestBuilder = action.explain();
        } else {
            //封装成自己的Select对象
            queryAction = new DefaultQueryAction(elasticFactory.getTransportClient(), select);
            requestBuilder = queryAction.explain();
        }
        SearchResponse response = (SearchResponse) requestBuilder.get();
        Object queryResult = null;
        if (sql.toUpperCase().indexOf("GROUP") != -1 || sql.toUpperCase().indexOf("SUM") != -1 || select.isAgg) {
            queryResult = response.getAggregations();
        } else {
            queryResult = response.getHits();
        }
        ObjectResult temp = new ObjectResultsExtractor(true, true, true).extractResults(queryResult, true);
        return temp;
    }
    public List excute(String sql, Class clazz, String esType, String esIndex) {
        List saveModels = new ArrayList<>();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");

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

@ -0,0 +1,123 @@
package com.yihu.jw.care.endpoint.admin;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.label.BaseCapacityLabelDao;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.label.BaseCapacityLabelDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.utils.ByteToInputStream;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/9/29.
 */
@RestController
@RequestMapping(value = "/common", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "通用测试接口")
public class CommonEndpoint extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(CommonEndpoint.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private BaseCapacityLabelDao baseCapacityLabelDao;
    @Autowired
    private BasePatientDao patientDao;
    @GetMapping(value = "open/importCapLabel")
    @ApiOperation(value = "导入居民能力状况")
    public Envelop importCapLabel() {
        try {
            String sql = "select * from base_capacity_label_tmp";
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            List<BaseCapacityLabelDO> labelDOList = new ArrayList<>();
            for (Map<String,Object> map:list){
                String idcard = map.get("idcard")+"";
                BasePatientDO patientDO = patientDao.findByIdcard(idcard);
                if(patientDO == null){
                    logger.info("居民不存在:"+idcard);
                    continue;
                }
                String patientId = patientDO.getId();
                BaseCapacityLabelDO capacityLabelDO = baseCapacityLabelDao.findByPatient(patientId);
                if(capacityLabelDO != null){
                    logger.info("居民能力状况已经存在:"+idcard);
                    continue;
                }
                capacityLabelDO = new BaseCapacityLabelDO();
                capacityLabelDO.setPatient(patientId);
                capacityLabelDO.setFamily(transfor(map.get("family")+""));
                capacityLabelDO.setHypertension(transfor(map.get("hypertension")+""));
                capacityLabelDO.setHyperglycemia(transfor(map.get("hyperglycemia")+""));
                capacityLabelDO.setHeartDisease(transfor(map.get("heart_disease")+""));
                capacityLabelDO.setWorkStatus(transfor(map.get("work_status")+""));
                capacityLabelDO.setDisability(transfor(map.get("disability")+""));
                if("1".equals(capacityLabelDO.getDisability())){
                    capacityLabelDO.setDisabledPart(map.get("disabled_part")+"");
                }
                capacityLabelDO.setVisualCondition(transfor(map.get("visual_condition")+""));
                capacityLabelDO.setAuditoryCondition(transfor(map.get("auditory_condition")+""));
                capacityLabelDO.setCommunication(transfor(map.get("communication")+""));
                capacityLabelDO.setMentalIllness(transfor(map.get("mental_illness")+""));
                capacityLabelDO.setOftenGoOut(transfor(map.get("often_go_out")+""));
                capacityLabelDO.setUsePhone(transfor(map.get("use_phone")+""));
                capacityLabelDO.setTakeExercise(transfor(map.get("take_exercise")+""));
                labelDOList.add(capacityLabelDO);
            }
            if(labelDOList.size()>0){
                baseCapacityLabelDao.save(labelDOList);
            }
            return success("导入成功");
        } catch (Exception e) {
            return failedException2(e);
        }
    }
    public String transfor(String label){
        if(StringUtils.isBlank(label)){
            return label;
        }
        if("是".equals(label)){
            return "1";
        }
        if("否".equals(label)){
            return "0";
        }
        if("迟缓".equals(label)||"看不见".equals(label)||"听不见".equals(label)||"不善于".equals(label)){
            return "1";
        }
        if("大声量".equals(label)||"一般".equals(label)||"近距离".equals(label)){
            return "2";
        }
        if("健步如飞".equals(label)||"正常".equals(label)||"善于".equals(label)){
            return "3";
        }
        if("null".equals(label)){
            return null;
        }
        return label;
    }
}

+ 26 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/OpenStatisticsEndpoint.java

@ -6,6 +6,8 @@ import com.yihu.jw.care.service.doctor.CareDoctorService;
import com.yihu.jw.care.service.lifeCare.LifeCareOrderService;
import com.yihu.jw.care.service.patient.CarePatientService;
import com.yihu.jw.care.service.statistics.StatisticsService;
import com.yihu.jw.es.util.ElasticsearchUtil;
import com.yihu.jw.es.util.SaveModel;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -45,6 +47,30 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
    private LifeCareOrderService lifeCareOrderService;
    @Autowired
    private EmergencyAssistanceService emergencyAssistanceService;
    @Autowired
    private ElasticsearchUtil elasticsearchUtil;
    @GetMapping(value = "executeESSQL1")
    @ApiOperation(value = "执行essql语句 返回savemodel")
    public ListEnvelop executeESSQL1(
            @RequestParam(required = true) String sql) {
        try {
            return success(elasticsearchUtil.excute(sql, SaveModel.class,null,null));
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "executeESSQL2")
    @ApiOperation(value = "执行essql语句")
    public ObjEnvelop executeESSQL2(
            @RequestParam(required = true) String sql) {
        try {
            return success(elasticsearchUtil.excuteSql(sql));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "statisticsTotalAmount")
    @ApiOperation(value = "统计总数")

+ 45 - 10
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/StatisticsEndpoint.java

@ -2,7 +2,9 @@ package com.yihu.jw.care.endpoint.statistics;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.statistics.StatisticsService;
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.PageEnvelop;
@ -11,10 +13,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.web.bind.annotation.*;
import java.util.Locale;
@ -213,7 +212,8 @@ public class StatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping("olderBindingDeviceStatus")
    @ApiOperation("管理端首页老人接入情况")
    public ObjEnvelop olderBindingDeviceStatus(@RequestParam(required = false) String area){
    public ObjEnvelop olderBindingDeviceStatus(@RequestParam(required = false) String area,
                                               @RequestParam(required = false) Integer level){
        try {
            return ObjEnvelop.getSuccess("查询成功",statisticsService.olderBindingDeviceStatus(area));
        }catch (Exception e){
@ -238,7 +238,8 @@ public class StatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "deviceGrantAndService")
    @ApiOperation("设备分析--投放、照护类型")
    public ObjEnvelop deviceGrantAndService(@RequestParam(required = false) String area){
    public ObjEnvelop deviceGrantAndService(@RequestParam(required = false) String area,
                                            @RequestParam(required = false) Integer level){
        try {
            return ObjEnvelop.getSuccess("查询成功",statisticsService.deviceGrantAndService());
        }catch (Exception e){
@ -248,19 +249,35 @@ public class StatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getAllDeviceLostMessage")
    @ApiOperation("设备分析--异常消息通知")
    public ObjEnvelop getAllDeviceLostMessage(@RequestParam(required = false) String area,
    public PageEnvelop getAllDeviceLostMessage(@RequestParam(required = false) String area,
                                              @RequestParam(required = false) Integer level,
                                              @RequestParam(required = false) Integer page,
                                              @RequestParam(required = false) Integer size){
        try {
            return ObjEnvelop.getSuccess("查询成功",statisticsService.getAllDeviceLostMessage(area,page,size));
           return statisticsService.getAllDeviceLostMessage(area,page,size);
        }catch (Exception e){
            return failedObjEnvelopException2(e);
            return failedPageEnvelopException2(e);
        }
    }
    @PostMapping(value = "/delMessageRead")
    @ApiOperation("删除消息")
    @ObserverRequired
    public Envelop delMessageRead(@ApiParam(name = "messageId",required = true)
                                  @RequestParam(value = "messageId")String messageId){
        try {
            statisticsService.delMessageRead(messageId);
            return Envelop.getSuccess("修改成功");
        }catch (Exception e){
            return failedException2(e);
        }
    }
    @GetMapping(value = "deviceUsingInfo")
    @ApiOperation("设备分析--使用管理")
    public ObjEnvelop deviceUsingInfo(@RequestParam(required = false) String area){
    public ObjEnvelop deviceUsingInfo(@RequestParam(required = false) String area,
                                      @RequestParam(required = false) Integer level){
        try {
            return ObjEnvelop.getSuccess("查询成功",statisticsService.deviceUsingInfo(area));
        }catch (Exception e){
@ -272,6 +289,7 @@ public class StatisticsEndpoint extends EnvelopRestEndpoint {
    @ApiOperation("管理端安防监护--安防动态")
    public PageEnvelop getSecurityOrderList(@RequestParam(required = false) String area,
                                            @RequestParam(required = false) String status,
                                            @RequestParam(required = false) Integer level,
                                            @RequestParam(required = false) String svrDesc,
                                            @RequestParam(required = false) String topicItem,
                                            @RequestParam(required = false) Integer page,
@ -283,6 +301,23 @@ public class StatisticsEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "getSecurityTab")
    @ApiOperation(value = "获取安防tab数量")
    public ObjEnvelop getSecurityTab(@RequestParam(required = false) String area,
                                     @RequestParam(required = false) Integer level,
                                     @ApiParam(name="status",value = "工单状态-2误报警-1已取消0已完成1申请中")
                                     @RequestParam(value = "status",required = false)String status,
                                     @ApiParam(name="svrDesc",value = "服务类型 关联security_server_dict字典")
                                     @RequestParam(value = "svrDesc",required = false)String svrDesc,
                                     @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
                                     @RequestParam(value = "topicItem",required = false) String topicItem){
        try {
            return ObjEnvelop.getSuccess("查询成功",statisticsService.getSecurityTab(area,status,svrDesc,topicItem));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "statisticsSecurityWarnInfo")
    @ApiOperation(value = "管理端安防监护--预警分析")
    public ObjEnvelop statisticsOrderServer(

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -250,7 +250,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1099807",doctorDO.getMobile(),orderDO.getPatientName(),orderDO.getServeDesc());
                    messageUtil.sendTXYSJson("1141719",doctorDO.getMobile(),orderDO.getPatientName(),orderDO.getServeDesc());
                }
            }catch (Exception e){}
            imUtil.sendMDTSocketMessageToDoctor(doctorDO.getId(),message.toString());

+ 79 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java

@ -35,7 +35,9 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.Transient;
import javax.persistence.criteria.CriteriaBuilder;
import java.awt.print.Pageable;
import java.text.DecimalFormat;
@ -74,6 +76,8 @@ public class StatisticsService {
    private SystemMessageDao messageDao;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    private SystemMessageDao systemMessageDao;
    private static final String defalutArea = "330100";
@ -1112,10 +1116,29 @@ public class StatisticsService {
        return result;
    }
    public Page<SystemMessageDO> getAllDeviceLostMessage(String area,Integer page,Integer size){
        PageRequest pageRequest = new PageRequest(page - 1, size);
        Page<SystemMessageDO> systemMessageDOS = messageDao.getByType("43",pageRequest);
        return systemMessageDOS;
    public PageEnvelop getAllDeviceLostMessage(String area,Integer page,Integer size){
        page = page>0?page-1:0;
        String sql ="select GROUP_CONCAT(id) id,type,title,sender,sender_name senderName,\n" +
                "receiver,receiver_name receiverName,relation_code relationCode,\n" +
                "data,is_read isRead,create_time createTime,sender_photo\n" +
                "from base_system_message where type=43 and del=1 GROUP BY relation_code order by createTime desc ";
        Long count = jdbcTemplate.queryForObject(" select count(id) from ("+sql+")A ",Long.class);
        sql +=" limit "+page*size+","+size ;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page++,size,count);
    }
    @Transactional
    public void delMessageRead(String msgId){
        if (StringUtils.isNotBlank(msgId)){
            String[] ids = msgId.split(",");
            if (ids.length>0){
                systemMessageDao.delMessage(ids);
            }
        }
    }
    public JSONObject deviceUsingInfo(String area){
@ -1142,6 +1165,7 @@ public class StatisticsService {
    }
    public PageEnvelop getSecurityOrderList(String area,String status, String svrDesc,String topicItem, Integer page, Integer pageSize){
        page = page>1?page-1:0;
        JSONArray result = new JSONArray();
        String sqlCount = "select count(ord.id) from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
@ -1215,6 +1239,56 @@ public class StatisticsService {
        return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,count);
    }
    public JSONObject getSecurityTab(String area,String status,String svrDesc,String topicItem){
        if (StringUtils.isNotBlank(area)){
        }
        JSONObject result = new JSONObject();
        result.put("status_-2",0);//误报警
        result.put("status_-1",0);//已取消
        result.put("status_0",0);//已完成
        result.put("status_1",0);//预警中
        result.put("status_all",0);//
        result.put("svr_all",0);//
        Map<String,String> serverTmp = new HashMap<>();
        String sql = " select py_code,dict_value from wlyy_hospital_sys_dict where dict_name='security_server_dict' ";
        List<Map<String,Object>> servers = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> server:servers){
            result.put("svr_"+server.get("py_code").toString(),0);
            serverTmp.put(server.get("dict_value").toString(),server.get("py_code").toString());
        }
        sql = "select ord.status,ord.serve_desc,count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "where 1=1 ";
        String fliter = "  ";
        if (org.apache.commons.lang3.StringUtils.isNotBlank(status)){
            fliter+=" and ord.status='"+Integer.parseInt(status)+"' ";
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(svrDesc)){
            fliter+=" and ord.serve_desc='"+svrDesc+"' ";
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(topicItem)){
            fliter+=" and ord.topic_item='"+topicItem+"' ";
        }
        fliter+=" group by ord.status,ord.serve_desc ";
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql+fliter);
        String pyCode = "";
        for (Map<String,Object> map:sqlResult){
            result.put("status_"+map.get("status"),result.getInteger("status_"+map.get("status"))+Integer.parseInt(map.get("count").toString()));
            pyCode =  serverTmp.get(map.get("serve_desc"))==null?null:serverTmp.get(map.get("serve_desc")).toString();
            if (org.apache.commons.lang3.StringUtils.isNotBlank(pyCode)){
                result.put("svr_"+pyCode,result.getInteger("svr_"+pyCode)+Integer.parseInt(map.get("count").toString()));
                result.put("status_all",result.getInteger("status_all")+Integer.parseInt(map.get("count").toString()));
                result.put("svr_all",result.getInteger("svr_all")+Integer.parseInt(map.get("count").toString()));
            }
        }
        return result;
    }
    public JSONObject statisticsSecurityWarnInfo(String endDate,String area,Integer level,String index) throws Exception {
        JSONObject res = new JSONObject();
        String[] indexes = index.split(",");
@ -1264,7 +1338,7 @@ public class StatisticsService {
    public JSONArray statisticsSecurityTrend(String startDate,String endDate,String area,Integer level,String index) throws Exception {
        //安防总数
        List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_ZL,SaveModel.interval_day,null);
        List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,null);
        JSONArray jsonArray = new JSONArray();
        for (SaveModel tmp:saveModels){
            JSONObject jsonTmp = new JSONObject();

+ 6 - 10
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java

@ -159,16 +159,12 @@ public class ComputeHelper {
    private String getCityKey(DataModel one, int size) {
        try {
            if (size > 0) {
                StringBuffer str = new StringBuffer("330100");
                for (int i = 1; i <= size; i++) {
                    String invokeKey = (String) DataModel.class.getMethod("getSlaveKey" + i).invoke(one);
                    str.append("-" + invokeKey);
                }
                return str.toString();
            } else {
                return one.getHospital();
            }
             StringBuffer str = new StringBuffer("330100");
             for (int i = 1; i <= size; i++) {
                 String invokeKey = (String) DataModel.class.getMethod("getSlaveKey" + i).invoke(one);
                 str.append("-" + invokeKey);
             }
             return str.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return null;