guoshilong
2024-03-12 b7c3fc85eba070a5c6625bc680ae9993d5553fae
hst预测定时器启用多线程请求
16 files modified
2 files added
514 ■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/AlarmGetServiceImpl.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java 138 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/AttResManagePersonController.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml 33 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml 19 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResManagePersonService.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java 121 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttResAdVO.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/PersonVO.java 20 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java 80 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/thread/MyThread.java 26 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
@@ -40,5 +40,11 @@
     */
    List<DataResPo> getResWy();
    /**
     * 获取位移水库集
     * @return
     */
    List<DataResPo> getResSl();
    List<DataResChildrenPo> getSl();
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/AlarmGetServiceImpl.java
@@ -79,7 +79,7 @@
            cdList = ztApiService.getResSy();
        } else if (type.equals("2")) {
            //获取渗流测点
            return null;
            cdList=ztApiService.getResSl();
        } else if (type.equals("3") || type.equals("4") || type.equals("5")) {
            //获取位移测点
            cdList = ztApiService.getResWy();
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
@@ -15,6 +15,7 @@
import cn.gistack.nky.vo.HstPredictVO;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +26,7 @@
import java.util.stream.Collectors;
@Service
@Slf4j
public class HstPredictServiceImpl extends ServiceImpl<HstPredictMapper, HstPredict> implements IHstPredictService {
    @Autowired
    private INkyService nkyService;
@@ -61,7 +63,8 @@
        List<DataResChildrenPo> cdList = getCdList(type);
        //暂时筛选出数据
//        List<DataResChildrenPo> collect = cdList.stream().filter(
//            item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42130350046")|| item.getRes_cd().equals("42092250024")|| item.getRes_cd().equals("42022250039")|| item.getRes_cd().equals("42132150292")
////            item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42130350046")|| item.getRes_cd().equals("42092250024")|| item.getRes_cd().equals("42022250039")|| item.getRes_cd().equals("42132150292")
//            item -> item.getRes_cd().equals("42050659003") ||item.getRes_cd().equals("42032240005")
//        ).collect(Collectors.toList());
//        predict(collect,type);
@@ -78,6 +81,7 @@
        if (collect.size() == 0){
            return;
        }
        int no = 0;
        List<NewSwFuturePo> future = new ArrayList<>();
        if (type.equals("1") || type.equals("2")){
@@ -85,35 +89,41 @@
                DataResChildrenPo dataResChildrenPo = collect.get(i);
                String currentResCd = dataResChildrenPo.getRes_cd();
                //第一个水库
                if (future.size() == 0 && resCd.equals("")){
                    future = hsybService.getNewFuture(currentResCd);
                    //当前水库
                    resCd = currentResCd;
                } else if (!resCd.equals(currentResCd)) {
                    //其他水库,获取新的预测数据
                    future = hsybService.getNewFuture(currentResCd);
                    //更换为新水库
                    resCd = currentResCd;
                try {
                    //第一个水库
                    if (future.size() == 0 && resCd.equals("")){
                        future = hsybService.getNewFuture(currentResCd);
                        //当前水库
                        resCd = currentResCd;
                        no = no +1;
                        log.info("当前为第{}个水库,水库id为{}",no,currentResCd);
                    } else if (!resCd.equals(currentResCd)) {
                        //其他水库,获取新的预测数据
                        future = hsybService.getNewFuture(currentResCd);
                        //更换为新水库
                        resCd = currentResCd;
                        no = no +1;
                        log.info("当前为第{}个水库,水库id为{}",no,currentResCd);
                    }
                    //预测数据构造请求数据
                    if (future != null && future.size() > 0) {
                        List<PredictWatersPo> po = new ArrayList<>();
                        future.forEach(item -> {
                            PredictWatersPo predictWatersPo = new PredictWatersPo();
                            //设置时间
                            predictWatersPo.setTime(item.getTime());
                            //设置预测水位
                            predictWatersPo.setValue(Double.parseDouble(item.getSw()));
                            po.add(predictWatersPo);
                        });
                        HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type, po);
                        //循环预测请求
                        nkyService.hstPredict(arimaPredictReqPo);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
                //预测数据构造请求数据
                if (future != null && future.size() > 0) {
                    List<PredictWatersPo> po = new ArrayList<>();
                    future.forEach(item -> {
                        PredictWatersPo predictWatersPo = new PredictWatersPo();
                        //设置时间
                        predictWatersPo.setTime(item.getTime());
                        //设置预测水位
                        predictWatersPo.setValue(Double.parseDouble(item.getSw()));
                        po.add(predictWatersPo);
                    });
                    HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type, po);
                    //循环预测请求
                    nkyService.hstPredict(arimaPredictReqPo);
                }
            }
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
@@ -121,39 +131,49 @@
                DataResChildrenPo dataResChildrenPo = collect.get(i);
                String currentResCd = dataResChildrenPo.getRes_cd();
                //第一个水库
                if (future.size() == 0 && resCd.equals("")){
                    future = hsybService.getNewFuture(currentResCd);
                    //当前水库
                    resCd = currentResCd;
                } else if (!resCd.equals(currentResCd)) {
                    //其他水库,获取新的预测数据
                    future = hsybService.getNewFuture(currentResCd);
                    //更换为新水库
                    resCd = currentResCd;
                try {
                    //第一个水库
                    if (future.size() == 0 && resCd.equals("")){
                        future = hsybService.getNewFuture(currentResCd);
                        //当前水库
                        resCd = currentResCd;
                        no = no +1;
                        log.info("当前为第{}个水库,水库id为{}",no,currentResCd);
                    } else if (!resCd.equals(currentResCd)) {
                        //其他水库,获取新的预测数据
                        future = hsybService.getNewFuture(currentResCd);
                        //更换为新水库
                        resCd = currentResCd;
                        no = no +1;
                        log.info("当前为第{}个水库,水库id为{}",no,currentResCd);
                    }
                    //预测数据构造请求数据
                    if (future != null && future.size() > 0) {
                        List<PredictWatersPo> po = new ArrayList<>();
                        future.forEach(item -> {
                            PredictWatersPo predictWatersPo = new PredictWatersPo();
                            //设置时间
                            predictWatersPo.setTime(item.getTime());
                            //设置预测水位
                            predictWatersPo.setValue(Double.parseDouble(item.getSw()));
                            po.add(predictWatersPo);
                        });
                        //循环预测请求(位移一起请求减少请求次数)
                        HstPredictReqPo arimaPredictReqPoX = new HstPredictReqPo(dataResChildrenPo, "3", po);
                        nkyService.hstPredict(arimaPredictReqPoX);
                        HstPredictReqPo arimaPredictReqPoY = new HstPredictReqPo(dataResChildrenPo, "4", po);
                        nkyService.hstPredict(arimaPredictReqPoY);
                        HstPredictReqPo arimaPredictReqPoZ = new HstPredictReqPo(dataResChildrenPo, "5", po);
                        nkyService.hstPredict(arimaPredictReqPoZ);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
                //预测数据构造请求数据
                if (future != null && future.size() > 0) {
                    List<PredictWatersPo> po = new ArrayList<>();
                    future.forEach(item -> {
                        PredictWatersPo predictWatersPo = new PredictWatersPo();
                        //设置时间
                        predictWatersPo.setTime(item.getTime());
                        //设置预测水位
                        predictWatersPo.setValue(Double.parseDouble(item.getSw()));
                        po.add(predictWatersPo);
                    });
                    //循环预测请求(位移一起请求减少请求次数)
                    HstPredictReqPo arimaPredictReqPoX = new HstPredictReqPo(dataResChildrenPo, "3", po);
                    nkyService.hstPredict(arimaPredictReqPoX);
                    HstPredictReqPo arimaPredictReqPoY = new HstPredictReqPo(dataResChildrenPo, "4", po);
                    nkyService.hstPredict(arimaPredictReqPoY);
                    HstPredictReqPo arimaPredictReqPoZ = new HstPredictReqPo(dataResChildrenPo, "5", po);
                    nkyService.hstPredict(arimaPredictReqPoZ);
                }
            }
        }
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
@@ -84,16 +84,19 @@
            HsybGetFuturePo hsybGetFuturePo = sendRequestToHsyb(GET_NEW_FUTURE, urlParams);
            //程序转为hashmap,手动转换类型
            List<NewSwFuturePo> data = JSON.parseArray(JSON.toJSONString(hsybGetFuturePo.getData()), NewSwFuturePo.class);
            List<NewSwFuturePo> filterData = filterPredict(data);
            if (hsybGetFuturePo.getData() !=null){
                //程序转为hashmap,手动转换类型
                List<NewSwFuturePo> data = JSON.parseArray(JSON.toJSONString(hsybGetFuturePo.getData()), NewSwFuturePo.class);
                List<NewSwFuturePo> filterData = filterPredict(data);
            log.info(StringUtil.format("过滤后的预测水位数据:{}", JSON.toJSONString(filterData)));
            return filterData;
//        }else{
//            //拿不到预测水位
//            return null;
//        }
                log.info(StringUtil.format("过滤后的预测水位数据:{}", JSON.toJSONString(filterData)));
                return filterData;
            }else {
                //因为会有data为null的数据,所以返回空数组
                List<NewSwFuturePo> list = new ArrayList<>();
                return list;
            }
    }
    public Boolean isResHasModel(String resId){
@@ -247,6 +250,7 @@
        try {
            ResponseEntity<HsybGetFuturePo> exchange = restTemplate.exchange(url, HttpMethod.GET, formEntity, HsybGetFuturePo.class);
            log.info("请求结果:"+ exchange.getBody().toString());
            return exchange.getBody();
        } catch (Exception e) {
            e.printStackTrace();
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
@@ -80,6 +80,12 @@
    }
    @Override
    public List<DataResPo> getResSl() {
        Map<String, Object> params = new LinkedHashMap<>();
        return getResData(SL_API, "get", params);
    }
    @Override
    public List<DataResChildrenPo> getSl() {
        Map<String, Object> params = new LinkedHashMap<>();
        return getData(SL_API, "get", params);
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/AttResManagePersonController.java
@@ -2,6 +2,7 @@
import cn.gistack.sm.sjztmd.entity.AttResManagePerson;
import cn.gistack.sm.sjztmd.service.IAttResManagePersonService;
import cn.gistack.sm.sjztmd.vo.PersonVO;
import cn.gistack.system.user.entity.User;
import cn.gistack.system.user.feign.IUserClient;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -131,4 +132,18 @@
        return R.data(attResManagePersonService.synchronizationAddUser());
    }
    /**
     * 查询巡查、技术、主管、行政、水行政部门责任人
     * @param resId 水库id
     * @param findType 指定查询的责任人类型
     * @return
     */
    @GetMapping("/getManagePersonList")
    public R getManagePersonList(String resId,String findType){
        List<PersonVO> list =  attResManagePersonService.getManagePersonList(resId,findType);
        return R.data(list);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
@@ -10,6 +10,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -78,4 +79,6 @@
     * @return
     */
    Integer getWaterCountByResNameAndCountyName(@Param("resName") String resName,@Param("countyCode")  String countyCode);
    AttResAdVO getResAd(@Param("resId") String resId);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -273,6 +273,39 @@
                (c."ad_grad" = 3 and c."ad_code" = #{countyCode})
            )
    </select>
    <select id="getResAd"  resultType="cn.gistack.sm.sjztmd.vo.AttResAdVO">
        SELECT
            arb."name" resName,
            arb."guid" resGuid,
            arb."interior_ad_guid",
            case when town."ad_grad" = 4 THEN town."ad_code" ELSE NULL END AS townCode,
            case when town."ad_grad" = 4 THEN town."ad_name" ELSE NULL END AS townName,
            case when town."ad_grad" = 3 THEN town."ad_code"
                 when county."ad_grad" = 3 THEN county."ad_code" END AS countyCode,
            case when town."ad_grad" = 3 THEN town."ad_name"
                 when county."ad_grad" = 3 THEN county."ad_name" END AS countyName,
            case when town."ad_grad" = 2 THEN town."ad_code"
                 when county."ad_grad" = 2 THEN county."ad_code"
                 ELSE city."ad_code" END AS cityCode,
            case when town."ad_grad" = 2 THEN town."ad_name"
                 when county."ad_grad" = 2 THEN county."ad_name"
                 ELSE city."ad_name" END AS cityName,
            case when town."ad_grad" = 1 THEN town."ad_code"
                 when county."ad_grad" = 1 THEN county."ad_code"
                 when city."ad_grad" = 1 THEN city."ad_code"
                 ELSE province."ad_code" END AS provinceCode,
            case when town."ad_grad" = 1 THEN town."ad_name"
                 when county."ad_grad" = 1 THEN county."ad_name"
                 when city."ad_grad" = 1 THEN city."ad_name"
                 ELSE province."ad_name" END AS provinceName
        FROM SJZT_MD."att_res_base" arb
                 LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
                 LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
                 LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
                 LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
        where arb."guid" = #{resId}
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
@@ -76,4 +76,8 @@
    String getCompetentDepart(@Param("resCd") String resCd);
    List<AttResManagePerson> getPersonList(@Param("resCd") String resCd);
    List<AttResManagePerson> getList(@Param("attResManagePerson") AttResManagePerson attResManagePerson);
    List<PersonVO> getPersonByRoleAndAd(@Param("roleAlias") String roleAlias,@Param("adCode") String adCode);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
@@ -244,5 +244,24 @@
    <select id="getPersonList" resultType="cn.gistack.sm.sjztmd.entity.AttResManagePerson">
        SELECT  * FROM "SJZT_MD"."att_res_manage_person" WHERE "res_guid" = #{resCd}
    </select>
    <select id="getList" resultType="cn.gistack.sm.sjztmd.entity.AttResManagePerson">
        SELECT  * FROM SJZT_MD."att_res_manage_person" where 1=1
        <if test="attResManagePerson.resGuid != null and attResManagePerson.resGuid != ''">
            AND "res_guid" = #{attResManagePerson.resGuid}
        </if>
        ORDER BY "type" ASC
    </select>
    <select id="getPersonByRoleAndAd" resultType="cn.gistack.sm.sjztmd.vo.PersonVO">
        SELECT
            BU.id as userId,
            BU.real_name as userName,
            9 as type
        FROM YWXT.BLADE_USER BU
                 LEFT JOIN YWXT.BLADE_ROLE BR ON BU.ROLE_ID LIKE CONCAT('%',BR.ID,'%')
        WHERE
            bu.is_deleted = 0
            AND BU.DEPT_ID = #{adCode}
              AND BR.ROLE_ALIAS = #{roleAlias}
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
@@ -10,6 +10,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -65,4 +66,11 @@
     * @return
     */
    Integer getWaterCountByResNameAndCountyName(String resName, String countyName);
    /**
     * 获取水库的行政区划以及行政区划等级
     * @param resId
     * @return
     */
    AttResAdVO getResAd(String resId);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResManagePersonService.java
@@ -97,4 +97,6 @@
     * @return
     */
    List<AttResManagePerson> getPersonList(String resCd);
    List<PersonVO> getManagePersonList(String resId,String findType);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
@@ -21,6 +21,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -134,4 +135,9 @@
    public Integer getWaterCountByResNameAndCountyName(String resName, String countyCode) {
        return baseMapper.getWaterCountByResNameAndCountyName(resName,countyCode);
    }
    @Override
    public AttResAdVO getResAd(String resId) {
        return baseMapper.getResAd(resId);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
@@ -6,6 +6,7 @@
import cn.gistack.sm.sjztmd.mapper.AttResManagePersonMapper;
import cn.gistack.sm.sjztmd.service.IAttResBaseService;
import cn.gistack.sm.sjztmd.service.IAttResManagePersonService;
import cn.gistack.sm.sjztmd.vo.AttResAdVO;
import cn.gistack.sm.sjztmd.vo.AttResBaseVO;
import cn.gistack.sm.sjztmd.vo.PersonVO;
import cn.gistack.sm.sjztmd.vo.UserPersonVO;
@@ -13,6 +14,8 @@
import cn.gistack.system.user.feign.IUserClient;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
@@ -20,9 +23,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @ClassName AttResManagePersonServiceImpl
@@ -198,4 +200,117 @@
    public List<AttResManagePerson> getPersonList(String resCd) {
        return  baseMapper.getPersonList(resCd);
    }
    @Override
    @DS("zt")
    public List<PersonVO> getManagePersonList(String resId,String findType) {
        List<PersonVO> result = new ArrayList<>();
        if (StringUtil.isEmpty(resId)){
            throw new ServiceException("水库id为空");
        }
        //查四个责任人
        AttResManagePerson attResManagePerson = new AttResManagePerson();
        attResManagePerson.setResGuid(resId);
        List<AttResManagePerson> list = baseMapper.getList(attResManagePerson);
        //过滤数据
        if (StringUtil.isNotBlank(findType)){
            list = list.stream().filter(e->findType.indexOf(e.getType())>-1).collect(Collectors.toList());
        }
        //赋值
        list.forEach(p->{
                List<User> userList = userClient.userInfoByPhone("000000", p.getUserPhone()).getData();
                if (userList.size() > 0) {
                    PersonVO personVO = new PersonVO();
                    personVO.setUserId(userList.get(0).getId().toString());
                    personVO.setUserName(userList.get(0).getRealName());
                    personVO.setType(p.getType());
                    //1.政府行政责任人,2.主管部门责任人,3.管理单位责任人,4.技术责任人,5.巡查责任人,6.行政责任人
                    switch (p.getType()){
                        case "1":
                            personVO.setRoleName("行政责任人");
                            break;
                        case "2":
                            personVO.setRoleName("主管部门责任人");
                            break;
                        case "3":
                            personVO.setRoleName("管理单位责任人");
                            break;
                        case "4":
                            personVO.setRoleName("技术责任人");
                            break;
                        case "5":
                            personVO.setRoleName("巡查责任人");
                            break;
                        default:
                            break;
                    }
                    result.add(personVO);
                }
        });
        AttResAdVO resAd = attResBaseService.getResAd(resId);
        String cityName = resAd.getCityName();
        String countyName = resAd.getCountyName();
        String townName = resAd.getTownName();
        if (StringUtil.isBlank(findType) || findType.indexOf("9")>-1){
            List<PersonVO> deptUser = new ArrayList<>();
            if (cityName != null && cityName.equals("省直管")){
                //如果是省直管,找省厅管理员
                String provinceCode = resAd.getProvinceCode();
                deptUser = baseMapper.getPersonByRoleAndAd("stgly",provinceCode);
                deptUser.forEach(p->{
                    p.setRoleName("省厅管理员");
                });
            } else if (countyName != null && countyName.equals("市直管")) {
                //如果是市直管,找市州管理员
                String cityCode = resAd.getCityCode();
                deptUser = baseMapper.getPersonByRoleAndAd("dsswjgly",cityCode);
                deptUser.forEach(p->{
                    p.setRoleName("市州管理员");
                });
            }else if (StringUtil.isNotBlank(townName)){
                //镇不是空的,找乡镇管理员
                String townCode = resAd.getTownCode();
                deptUser = baseMapper.getPersonByRoleAndAd("xzgly",townCode);
                deptUser.forEach(p->{
                    p.setRoleName("乡镇管理员");
                });
            }else if (StringUtil.isNotBlank(countyName)){
                //区不是空的找区县管理员
                String countyCode = resAd.getCountyCode();
                deptUser = baseMapper.getPersonByRoleAndAd("qxswjgly",countyCode);
                deptUser.forEach(p->{
                    p.setRoleName("区县管理员");
                });
            }else if (StringUtil.isNotBlank(cityName)){
                //市不是空的找市州管理员
                String cityCode = resAd.getCityCode();
                deptUser = baseMapper.getPersonByRoleAndAd("dsswjgly",cityCode);
                deptUser.forEach(p->{
                    p.setRoleName("市州管理员");
                });
            }else{
                String provinceCode = resAd.getProvinceCode();
                deptUser = baseMapper.getPersonByRoleAndAd("stgly",provinceCode);
                deptUser.forEach(p->{
                    p.setRoleName("省厅管理员");
                });
            }
            result.addAll(deptUser);
        }
        return result;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttResAdVO.java
@@ -16,6 +16,9 @@
     */
    private String resGuid;
    private String provinceCode;
    private String provinceName;
    /**
     * 市州编号
     */
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/PersonVO.java
New file
@@ -0,0 +1,20 @@
package cn.gistack.sm.sjztmd.vo;
import lombok.Data;
@Data
public class PersonVO {
    private String userId;
    private String userName;
    private String roleName;
    //1.政府行政责任人,2.主管部门责任人,3.管理单位责任人,4.技术责任人,5.巡查责任人,6.行政责任人
    //单独定义 水行政部门为9
    private String type;
}
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
@@ -1,15 +1,13 @@
package cn.gistack.job.executor.jobhandler;
import cn.gistack.job.executor.thread.MyThread;
import cn.gistack.nky.fegin.INkyClient;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * 南科院预测数据定时器
@@ -21,19 +19,20 @@
    private static final String SY = "1";
    private static final String SL = "2";
    private static final String X = "3";
    private static final String Y= "4";
    private static final String Y = "4";
    private static final String Z = "5";
    private final INkyClient nkyClient;
    /**
     * 南科院Arima请求预测
     *
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("predictNkyDataJobHandler")
    public ReturnT<String> predictNkyDataJobHandler(String param){
    public ReturnT<String> predictNkyDataJobHandler(String param) {
        XxlJobLogger.log("开始ArimaPredict预测...");
        arimaPredict();
        XxlJobLogger.log("ArimaPredict预测结束...");
@@ -44,12 +43,13 @@
    /**
     * 南科院Hst请求预测
     *
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("predictNkyHstDataJobHandler")
    public ReturnT<String> predictNkyHstDataJobHandler(String param){
    public ReturnT<String> predictNkyHstDataJobHandler(String param) {
        XxlJobLogger.log("开始Hst预测...");
        hstPredict();
@@ -60,12 +60,13 @@
    /**
     * 南科院Hst请求预测结果
     *
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("queryNkyHstDataJobHandler")
    public ReturnT<String> queryNkyHstDataJobHandler(String param){
    public ReturnT<String> queryNkyHstDataJobHandler(String param) {
        XxlJobLogger.log("开始Hst预测结果请求");
        hstQuery();
        XxlJobLogger.log("Hst预测结果请求结束");
@@ -75,49 +76,52 @@
    /**
     * 南科院Arima请求预测结果(渗压)
     *
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("queryNkyDataJobHandler")
    public ReturnT<String> queryNkyDataJobHandler(String param){
        XxlJobLogger.log("开始预测时间:"+DateUtil.now().toString());
    public ReturnT<String> queryNkyDataJobHandler(String param) {
        XxlJobLogger.log("开始预测时间:" + DateUtil.now().toString());
        nkyClient.arimaQueryData(SY);
        XxlJobLogger.log("预测结束时间:" +DateUtil.now().toString());
        XxlJobLogger.log("预测结束时间:" + DateUtil.now().toString());
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院Arima请求预测结果(渗流)
     *
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("queryNkyDataSlJobHandler")
    public ReturnT<String> queryNkyDataSlJobHandler(String param){
        XxlJobLogger.log("开始预测时间:"+DateUtil.now().toString());
    public ReturnT<String> queryNkyDataSlJobHandler(String param) {
        XxlJobLogger.log("开始预测时间:" + DateUtil.now().toString());
        nkyClient.arimaQueryData(SL);
        XxlJobLogger.log("预测结束时间:" +DateUtil.now().toString());
        XxlJobLogger.log("预测结束时间:" + DateUtil.now().toString());
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院Arima请求预测结果(位移)
     *
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("queryNkyDataWyJobHandler")
    public ReturnT<String> queryNkyDataWyJobHandler(String param){
        XxlJobLogger.log("开始预测时间:"+DateUtil.now().toString());
    public ReturnT<String> queryNkyDataWyJobHandler(String param) {
        XxlJobLogger.log("开始预测时间:" + DateUtil.now().toString());
        nkyClient.arimaQueryData(X);
        nkyClient.arimaQueryData(Y);
        nkyClient.arimaQueryData(Z);
        XxlJobLogger.log("预测结束时间:" +DateUtil.now().toString());
        XxlJobLogger.log("预测结束时间:" + DateUtil.now().toString());
        return ReturnT.SUCCESS;
    }
    public void arimaPredict(){
    public void arimaPredict() {
        XxlJobLogger.log("渗压预测开始");
        nkyClient.arimaPredictData(SY);
        XxlJobLogger.log("渗流预测开始");
@@ -127,7 +131,7 @@
    }
    public void arimaQuery(){
    public void arimaQuery() {
        nkyClient.arimaQueryData(SY);
        nkyClient.arimaQueryData(SL);
        nkyClient.arimaQueryData(X);
@@ -138,33 +142,50 @@
    /**
     * hst预测
     */
    public void hstPredict(){
        XxlJobLogger.log("渗压预测开始");
        nkyClient.hstPredictData(SY);
        XxlJobLogger.log("渗流预测开始");
        nkyClient.hstPredictData(SL);
        XxlJobLogger.log("位移预测开始");
        nkyClient.hstPredictData(X);
    public void hstPredict() {
        try {
            MyThread sl = new MyThread(nkyClient,SL);
            MyThread wy = new MyThread(nkyClient,X);
            MyThread sy = new MyThread(nkyClient,SY);
            sl.start();
            wy.start();
            sy.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
//        XxlJobLogger.log("渗流预测开始");
//        nkyClient.hstPredictData(SL);
//        XxlJobLogger.log("位移预测开始");
//        nkyClient.hstPredictData(X);
//        XxlJobLogger.log("渗压预测开始");
//        nkyClient.hstPredictData(SY);
    }
    public void hstQuery(){
        nkyClient.hstQueryData(SY);
    public void hstQuery() {
        nkyClient.hstQueryData(SL);
        nkyClient.hstQueryData(X);
        nkyClient.hstQueryData(Y);
        nkyClient.hstQueryData(Z);
        nkyClient.hstQueryData(SY);
    }
    /**
     * 南科院按库请求数据接口
     *
     * @param param
     * @return
     */
    @XxlJob("batchDataJobHandler")
    public ReturnT<String> batchDataJobHandler(String param){
    public ReturnT<String> batchDataJobHandler(String param) {
        XxlJobLogger.log("按库请求开始");
        nkyClient.batchData(SY);
        nkyClient.batchData(SL);
        nkyClient.batchData(X);
        nkyClient.batchData(Y);
        nkyClient.batchData(Z);
@@ -176,11 +197,12 @@
    /**
     * 南科院按库请求数据接口
     *
     * @param param
     * @return
     */
    @XxlJob("alarmGetJobHandler")
    public ReturnT<String> alarmGetJobHandler(String param){
    public ReturnT<String> alarmGetJobHandler(String param) {
        XxlJobLogger.log("判定异常开始");
        nkyClient.alarmGetData(SY);
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/thread/MyThread.java
New file
@@ -0,0 +1,26 @@
package cn.gistack.job.executor.thread;
import cn.gistack.nky.fegin.INkyClient;
import lombok.Data;
@Data
public class MyThread extends Thread{
    private INkyClient nkyClient;
    private String type;
    @Override
    public void run() {
        nkyClient.hstPredictData(this.type);
    }
    public MyThread(INkyClient nkyClient, String type) {
        this.nkyClient = nkyClient;
        this.type = type;
    }
    public MyThread(String type) {
        this.type = type;
    }
}