Browse Source

添加选址任务

董珍珍 1 year ago
parent
commit
d2f61fac1d

+ 1 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/FzxzXzyzDTO.java

@@ -2,6 +2,7 @@ package com.onemap.analyse.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 
+//辅助选址选址因子
 @TableName("t_fzss_fzxz_xzyz")
 public class FzxzXzyzDTO {
     private String bsm;

+ 15 - 9
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/FzssServiceImpl.java

@@ -11,6 +11,7 @@ import com.onemap.analyse.domain.ESRI.EsriJsonModel;
 import com.onemap.analyse.domain.GeoJSON.Geometry;
 import com.onemap.analyse.mapper.*;
 import com.onemap.analyse.service.IFzssService;
+import com.onemap.analyse.task.FzxzPlanSchedule;
 import com.onemap.analyse.task.FzxzSchedule;
 import com.onemap.analyse.task.PythonExecute;
 import com.onemap.analyse.utils.DozerUtils;
@@ -105,30 +106,35 @@ public class FzssServiceImpl implements IFzssService {
     @Override
     public RequestResult AddFzxz(Map params) {
         try {
-            //辅助选址,解解析参数
+            //辅助选址
             FzxzDTO fzxzDTO = DozerUtils.map(params, FzxzDTO.class);
             fzxzDTO.setBsm(StringUtils.getUUID());
             fzxzDTO.setCjsj(new Date());
             fzxzDTO.setYdxz_bsm(fzxzDTO.getYdxz_bsm().replaceAll("\\[", "").replaceAll("\\]", ""));
-//            //将分析范围矢量数据插入到KJGH.T_FZSS_FXRW_GIS
-//            RequestResult info = fzxzvector2Sde(fzxzDTO, null);
-//            if (info != null) {
-//                return info;
-//            }
+            ////将分析范围矢量数据插入到KJGH.T_FZSS_FXRW_GIS
+            //RequestResult info = fzxzvector2Sde(fzxzDTO, null);
+            //if (info != null) {
+            //    return info;
+            //}
 
-            // 拿到空间数据
-
-            // 选址因子
+            //选址因子
             ArrayList xzyx = (ArrayList) params.get("yxyz");
+            List<FzxzXzyzDTO> xzyxList = DozerUtils.mapList(xzyx, FzxzXzyzDTO.class);
             for (int i = 0; i < xzyx.size(); i++) {
                 FzxzXzyzDTO dto = DozerUtils.map(xzyx.get(i), FzxzXzyzDTO.class);
                 dto.setBsm(StringUtils.getUUID());
                 dto.setRwbsm(fzxzDTO.getBsm());
                 fzxzXzyzMapper.insert(dto);
+
+                xzyxList.add(dto);
             }
             fzxzDTO.setRwzt(Rwzt.getCreate());
             fzxzDTO.setCjyh(SecurityUtils.getUsername());
             fzxzMapper.insert(fzxzDTO);
+
+            //开始选址规划
+            FzxzPlanSchedule.startPlan(fzxzDTO,xzyxList);
+
             return RequestResult.success("保存成功!", fzxzDTO.getBsm());
         } catch (Exception e) {
             e.printStackTrace();

+ 21 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/FzxzPlanSchedule.java

@@ -0,0 +1,21 @@
+package com.onemap.analyse.task;
+
+import com.onemap.analyse.domain.FzxzDTO;
+import com.onemap.analyse.domain.FzxzXzyzDTO;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 辅助规划选址,通过超图iObject分析
+ */
+@Component
+public class FzxzPlanSchedule {
+    /**
+     * @param fzxzDTO  选址任务
+     * @param xzyzList 选址因子
+     */
+    public static void startPlan(FzxzDTO fzxzDTO, List<FzxzXzyzDTO> xzyzList) {
+
+    }
+}

+ 85 - 88
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/FzxzSchedule.java

@@ -17,8 +17,6 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -49,6 +47,7 @@ public class FzxzSchedule {
     private FzxzTbMapper fzxzTbMapper;
     @Resource
     private FzxzJgyzMapper fzxzJgyzMapper;
+
     //辅助选址python方法名标识
     @Value("${Fzxz.functionId}")
     private String functionId;
@@ -58,90 +57,90 @@ public class FzxzSchedule {
     private String fzxzShp;
     @Value("${Hgxfx.temp}")
     private String temp;
-    /**
-     * Scheduled 定时器参数
-     * cron表达式:指定任务在特定时间执行
-     * fixedDelay:表示上一次任务执行完成后多久再执行,参数类型long,单位:ms
-     * fixedDelayString:与fixedDelay一样,只是参数类型是String
-     * fixedRate:表示按一定的频率执行任务,参数类型long,单位:ms 如: fixedRate(5000),表示这个定时器任务每5秒执行一次
-     * fixedRateString:与fixedRate一样,只是参数类型变为String
-     * initialDelay:表示延迟多久再第一次执行任务,参数类型为long ,单位:ms
-     * initialDelayString:与initialDelay一样,只是参数类型String
-     */
-    /**
-     * @Async("name") 开启多线程
-     */
-    /**
-     * 辅助选址执行入口
-     */
-    @Async("taskExecutor")
-    @Scheduled(fixedDelay = TIME_INTERVAL)
-    public void FzxzStatus() {
-        try {
-            QueryWrapper<FzxzDTO> wrapper = new QueryWrapper<FzxzDTO>();
-            wrapper.eq("rwzt", Rwzt.getCreate());
-            //以创建时间正序排列
-            wrapper.orderByAsc("cjsj");
-            //每次只操作一条记录
-            List<FzxzDTO> ress = fzxzMapper.selectList(wrapper);
-            if (ress.size() > 0) {
-                FzxzDTO res = ress.get(0);
-                //插入执行状态
-                res.setRwzt(Rwzt.getRun());
-                res.setRwkssj(new Date());
-                QueryWrapper<FzxzDTO> query = new QueryWrapper<FzxzDTO>();
-                query.eq("bsm", res.getBsm());
-                fzxzMapper.update(res, query);
-                //插入任务日志
-                FxrwrzDTO rzDto = new FxrwrzDTO();
-                rzDto.setRwbsm(res.getBsm());
-                rzDto.setRwlx("辅助选址");
-                rzDto.setRzlr("开始分析");
-                rzDto.setRzlx("info");
-                rzDto.setRzsj(new Date());
-                fxrwrzMapper.insert(rzDto);
-                //执行python
-                Map<String, String> params = new HashMap<>();
-                params.put("bsm", res.getBsm());
-                String result = PythonExecute.Run(functionId, params);
-                if (!StringUtils.isEmpty(result) && result.contains("OK")) {//成功
-                    res.setRwjssj(new Date());
-                    res.setRwzt(Rwzt.getComplete());
-                    //TODO 生成辅助选址结果报告 返回 FxReport实体
-                    FzxzReport report = createReport(res.getBsm(), null);
-                    if (report != null) {
-                        res.setFxbg(report.getReportfile().replace(".docx", ".pdf"));
-                        res.setZip(report.getZipfile());
-                    }
-                    fzxzMapper.update(res, query);
-                    //插入成功日志
-                    FxrwrzDTO successDto = new FxrwrzDTO();
-                    successDto.setRwbsm(res.getBsm());
-                    successDto.setRwlx("辅助选址");
-                    successDto.setRzlr("计算完成");
-                    successDto.setRzlx("info");
-                    successDto.setRzsj(new Date());
-                    fxrwrzMapper.insert(successDto);
-                } else {//失败
-                    res.setRwjssj(new Date());
-                    res.setRwzt(Rwzt.getError());
-                    fzxzMapper.update(res, query);
-                    //插入任务日志
-                    FxrwrzDTO errorDto = new FxrwrzDTO();
-                    errorDto.setRwbsm(res.getBsm());
-                    errorDto.setRwlx("辅助选址");
-                    errorDto.setRzlr("计算错误");
-                    errorDto.setRzsj(new Date());
-                    errorDto.setRzlx("error");
-                    errorDto.setFxjg(result);
-                    fxrwrzMapper.insert(errorDto);
-                }
-                System.out.println("辅助选址模块:" + res.getBsm() + "完成!!!!!!!! " + new Date().toString());
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
+    ///**
+    // * Scheduled 定时器参数
+    // * cron表达式:指定任务在特定时间执行
+    // * fixedDelay:表示上一次任务执行完成后多久再执行,参数类型long,单位:ms
+    // * fixedDelayString:与fixedDelay一样,只是参数类型是String
+    // * fixedRate:表示按一定的频率执行任务,参数类型long,单位:ms 如: fixedRate(5000),表示这个定时器任务每5秒执行一次
+    // * fixedRateString:与fixedRate一样,只是参数类型变为String
+    // * initialDelay:表示延迟多久再第一次执行任务,参数类型为long ,单位:ms
+    // * initialDelayString:与initialDelay一样,只是参数类型String
+    // */
+    ///**
+    // * @Async("name") 开启多线程
+    // */
+    ///**
+    // * 辅助选址执行入口
+    // */
+    //@Async("taskExecutor")
+    //@Scheduled(fixedDelay = TIME_INTERVAL)
+    //public void FzxzStatus() {
+    //    try {
+    //        QueryWrapper<FzxzDTO> wrapper = new QueryWrapper<FzxzDTO>();
+    //        wrapper.eq("rwzt", Rwzt.getCreate());
+    //        //以创建时间正序排列
+    //        wrapper.orderByAsc("cjsj");
+    //        //每次只操作一条记录
+    //        List<FzxzDTO> ress = fzxzMapper.selectList(wrapper);
+    //        if (ress.size() > 0) {
+    //            FzxzDTO res = ress.get(0);
+    //            //插入执行状态
+    //            res.setRwzt(Rwzt.getRun());
+    //            res.setRwkssj(new Date());
+    //            QueryWrapper<FzxzDTO> query = new QueryWrapper<FzxzDTO>();
+    //            query.eq("bsm", res.getBsm());
+    //            fzxzMapper.update(res, query);
+    //            //插入任务日志
+    //            FxrwrzDTO rzDto = new FxrwrzDTO();
+    //            rzDto.setRwbsm(res.getBsm());
+    //            rzDto.setRwlx("辅助选址");
+    //            rzDto.setRzlr("开始分析");
+    //            rzDto.setRzlx("info");
+    //            rzDto.setRzsj(new Date());
+    //            fxrwrzMapper.insert(rzDto);
+    //            //执行python
+    //            Map<String, String> params = new HashMap<>();
+    //            params.put("bsm", res.getBsm());
+    //            String result = PythonExecute.Run(functionId, params);
+    //            if (!StringUtils.isEmpty(result) && result.contains("OK")) {//成功
+    //                res.setRwjssj(new Date());
+    //                res.setRwzt(Rwzt.getComplete());
+    //                //TODO 生成辅助选址结果报告 返回 FxReport实体
+    //                FzxzReport report = createReport(res.getBsm(), null);
+    //                if (report != null) {
+    //                    res.setFxbg(report.getReportfile().replace(".docx", ".pdf"));
+    //                    res.setZip(report.getZipfile());
+    //                }
+    //                fzxzMapper.update(res, query);
+    //                //插入成功日志
+    //                FxrwrzDTO successDto = new FxrwrzDTO();
+    //                successDto.setRwbsm(res.getBsm());
+    //                successDto.setRwlx("辅助选址");
+    //                successDto.setRzlr("计算完成");
+    //                successDto.setRzlx("info");
+    //                successDto.setRzsj(new Date());
+    //                fxrwrzMapper.insert(successDto);
+    //            } else {//失败
+    //                res.setRwjssj(new Date());
+    //                res.setRwzt(Rwzt.getError());
+    //                fzxzMapper.update(res, query);
+    //                //插入任务日志
+    //                FxrwrzDTO errorDto = new FxrwrzDTO();
+    //                errorDto.setRwbsm(res.getBsm());
+    //                errorDto.setRwlx("辅助选址");
+    //                errorDto.setRzlr("计算错误");
+    //                errorDto.setRzsj(new Date());
+    //                errorDto.setRzlx("error");
+    //                errorDto.setFxjg(result);
+    //                fxrwrzMapper.insert(errorDto);
+    //            }
+    //            System.out.println("辅助选址模块:" + res.getBsm() + "完成!!!!!!!! " + new Date().toString());
+    //        }
+    //    } catch (Exception e) {
+    //        e.printStackTrace();
+    //    }
+    //}
 
     //根据选址任务生成报告
     public FzxzReport createReport(String bsm, List<String> xzbsmList) {
@@ -204,7 +203,6 @@ public class FzxzSchedule {
     /**
      * 选址报告
      */
-
     private void createReport(FzxzEntityDTO res, String reportPath, List<String> xzbsmList) {
         List<String> imgList = ReportImg(res, xzbsmList);
         //创建document文档对象对象实例
@@ -557,7 +555,6 @@ public class FzxzSchedule {
     /**
      * 选址简报
      */
-
     private void createSimpleReport(FzxzEntityDTO res, String reportPath, List<String> xzbsmList) {
         //创建document文档对象对象实例
         XWPFDocument document = null;

+ 16 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/utils/SuperMapAnalysisUtil.java

@@ -0,0 +1,16 @@
+package com.onemap.analyse.utils;
+
+import com.onemap.analyse.domain.FzxzDTO;
+import com.supermap.data.Geometry;
+import com.supermap.data.Toolkit;
+
+/**
+ * 超图空间分析方法
+ */
+public class SuperMapAnalysisUtil {
+    // 辅助选址计算
+    private static void fzxz(FzxzDTO fzxzDTO) {
+        // 拿到空间数据
+        Geometry geometry = Toolkit.WKTToGeometry(fzxzDTO.getXzfw());
+    }
+}