LAPTOP-KB9HII50\70708 преди 11 месеца
родител
ревизия
5681d8ba2e

+ 22 - 3
business/es-service/src/main/java/com/yihu/jw/es/service/DataService.java

@ -14,11 +14,11 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -34,13 +34,30 @@ public class DataService {
    @Resource(name="restHighLevelClient")
    private RestHighLevelClient restHighLevelClient;
    private final String esIndex = "hlw_quota_prod";
    @Value("${es.index.Statistics}")
    private String esIndex;
    public void deleteData(String quotaDate, String quotaCode, String timeLevel) {
        try {
            //es超过5w条的删除不干净。循环处理,最多删除10次
            int i = 0;
            int num = delData(quotaDate, quotaCode, timeLevel);
            while (num==50000&&i<10){
                i++;
                num = delData(quotaDate, quotaCode, timeLevel);
            }
        } catch (Exception e) {
            logger.info("delete error:"+e.getMessage());
        }
    }
    /**
     * 删除 某个指标某一天的某个timelevel的数据
     *
     */
    public void deleteData(Date quotaDate, String quotaCode, String timeLevel) {
    public int delData(String quotaDate, String quotaCode, String timeLevel) {
        int num = 0;
        try {
            //先根据条件查找出来
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
@ -71,8 +88,10 @@ public class DataService {
                logger.info("delete data count:" + saveModels.size());
                logger.info("delete flag:" + !bulkResponse.hasFailures());
            }
            num = result.size();
        } catch (Exception e) {
            logger.info("delete error:"+e.getMessage());
        }
        return num;
    }
}

+ 1 - 2
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/DsyyPrescriptionCotroller.java

@ -10,7 +10,6 @@ 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 com.yihu.jw.util.date.DateUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -51,7 +50,7 @@ public class DsyyPrescriptionCotroller extends EnvelopRestEndpoint {
            if(StringUtils.isBlank(quotaDate)||StringUtils.isBlank(quotaCode)||StringUtils.isBlank(timeLevel)){
                return Envelop.getError("参数错误");
            }
            dataService.deleteData(DateUtil.strToDate(quotaDate, "yyyy-MM-dd"),quotaCode,timeLevel);
            dataService.deleteData(quotaDate,quotaCode,timeLevel);
            return Envelop.getSuccess("ok");
        }catch (Exception e){
            e.printStackTrace();

+ 19 - 1
svr/svr-statistics-hlw/src/main/java/com/yihu/jw/statistics/job/business/MysqlToEsQuotaJob.java

@ -193,6 +193,22 @@ public class MysqlToEsQuotaJob implements Job {
     * @param timeLevel
     */
    private void deleteData(Date quotaDate, String quotaCode, String timeLevel) {
        try {
            //es超过5w条的删除不干净。循环处理,最多删除10次
            int i = 0;
            int num = delData(quotaDate, quotaCode, timeLevel);
            while (num==50000&&i<10){
                i++;
                num = delData(quotaDate, quotaCode, timeLevel);
            }
        } catch (Exception e) {
            logger.info("delete error:"+e.getMessage());
        }
    }
    private int delData(Date quotaDate, String quotaCode, String timeLevel) {
        int num = 0;
        try {
            //先根据条件查找出来
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
@ -201,7 +217,7 @@ public class MysqlToEsQuotaJob implements Job {
                            .must(QueryBuilders.matchQuery("quotaCode", quotaCode))
                            .must(QueryBuilders.matchQuery("timeLevel", timeLevel))
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))
            ).size(50000);//一次取10000条
            ).size(50000);//一次取10000条 es目前配置最多查5w.可通过修改配置,但是占用资源比较多
            List<String> result = elasticSearch7Helper.search(esIndex,searchSourceBuilder);
            List<SaveModel> saveModels = new ArrayList<>();
            for (String s:result){
@ -223,9 +239,11 @@ public class MysqlToEsQuotaJob implements Job {
                logger.info("delete data count:" + saveModels.size());
                logger.info("delete flag:" + !bulkResponse.hasFailures());
            }
            num = result.size();
        } catch (Exception e) {
            logger.info("delete error:"+e.getMessage());
        }
        return num;
    }
    @Transactional