浏览代码

代码修改

LAPTOP-KB9HII50\70708 3 年之前
父节点
当前提交
a884cd9657

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

@ -53,6 +53,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 = "统计总数")