ChscSchedule.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.onemap.analyse.task;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.fasterxml.jackson.core.type.TypeReference;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.onemap.analyse.domain.*;
  6. import com.onemap.analyse.mapper.*;
  7. import com.onemap.analyse.utils.DozerUtils;
  8. import com.onemap.analyse.utils.NpoiHelper;
  9. import com.onemap.common.core.utils.StringUtils;
  10. import com.onemap.common.core.web.domain.RequestResult;
  11. import com.onemap.common.security.utils.SecurityUtils;
  12. import org.apache.commons.io.FileUtils;
  13. import org.apache.poi.xwpf.usermodel.*;
  14. import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
  15. import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
  16. import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.scheduling.annotation.Async;
  22. import org.springframework.scheduling.annotation.Scheduled;
  23. import org.springframework.stereotype.Component;
  24. import javax.annotation.Resource;
  25. import java.io.File;
  26. import java.io.FileOutputStream;
  27. import java.io.OutputStream;
  28. import java.math.BigInteger;
  29. import java.text.SimpleDateFormat;
  30. import java.util.*;
  31. import static com.onemap.analyse.utils.Fxfw2SdeUtils.fzxzvector2Sde;
  32. /**
  33. * 策划生成模块定时刷新任务
  34. */
  35. @Component
  36. public class ChscSchedule {
  37. //间隔时间 单位ms
  38. public static final long TIME_INTERVAL = 1 * 15000;
  39. //任务状态标识码
  40. private RwztDTO Rwzt = new RwztDTO();
  41. private XzlbDTO xzlbDTO = new XzlbDTO();
  42. private FxfwDictDTO fxfwDictDTO = new FxfwDictDTO();
  43. @Autowired
  44. private FzxzMapper fzxzMapper;
  45. @Autowired
  46. private FzxzXzyzMapper fzxzXzyzMapper;
  47. @Resource
  48. private HgxfxMapper hgxfxMapper;
  49. @Resource
  50. HgxfxHgscxMapper hgxfxHgscxMapper;
  51. @Resource
  52. HgxfxScxMapper hgxfxScxMapper;
  53. @Resource
  54. private FxrwrzMapper fxrwrzMapper;
  55. @Resource
  56. private FzssChscMapper fzssChscMapper;
  57. @Resource
  58. private FzssChscFileMapper fzssChscFileMapper;
  59. @Resource
  60. private HgxfxTemplateMapper hgxfxTemplateMapper;
  61. //合规性分析python方法名标识
  62. @Value("${Hgxfx.functionId}")
  63. private String functionId;
  64. @Value("${Hgxfx.temp}")
  65. private String temp;
  66. private static final Logger log = LoggerFactory.getLogger(ChscSchedule.class);
  67. @Async("taskExecutor")
  68. @Scheduled(fixedDelay = TIME_INTERVAL)
  69. public void ChscStatus() {
  70. try {
  71. QueryWrapper<FzxzChscDTO> wrapper = new QueryWrapper<FzxzChscDTO>();
  72. wrapper.eq("rwzt", Rwzt.getNoJX());
  73. //以创建时间正序排列
  74. wrapper.orderByAsc("cjsj");
  75. //每次只操作一条记录
  76. List<FzxzChscDTO> ress = fzssChscMapper.selectList(wrapper);
  77. if (ress.size() > 0) {
  78. FzxzChscDTO zhxzChsc = ress.get(0);
  79. //更新策划生成任务状态
  80. QueryWrapper<FzxzChscDTO> chscwrapper = new QueryWrapper<FzxzChscDTO>();
  81. chscwrapper.eq("bsm", zhxzChsc.getBsm());
  82. zhxzChsc.setRwjd(1);
  83. zhxzChsc.setRwzt(Rwzt.getCreate());
  84. fzssChscMapper.update(zhxzChsc, chscwrapper);
  85. //获取分析范围
  86. String curfxfw = "";
  87. if (zhxzChsc.getFwlx() == fxfwDictDTO.getShp()) {
  88. FzssChscFileDTO fileDto = fzssChscFileMapper.selectOne(new QueryWrapper<FzssChscFileDTO>().eq("bsm", zhxzChsc.getXzfw()));
  89. curfxfw = fileDto.getWj();
  90. }
  91. //插入任务日志
  92. FxrwrzDTO rzDto = new FxrwrzDTO();
  93. rzDto.setRwbsm(zhxzChsc.getBsm());
  94. rzDto.setRwlx("策划生成");
  95. rzDto.setRzlr("项目策划生成解析");
  96. rzDto.setRzlx("info");
  97. rzDto.setRzsj(new Date());
  98. fxrwrzMapper.insert(rzDto);
  99. //根据选址类别区分进行任务分配执行
  100. String rwlx = "";
  101. if (zhxzChsc.getXzlb() == xzlbDTO.getXmxz()) {//项目选址
  102. //TODO wanger 对接智慧选址
  103. rwlx = "辅助选址";
  104. FzxzDTO fzxzDTO = new FzxzDTO();
  105. fzxzDTO.setBsm(zhxzChsc.getBsm());
  106. fzxzDTO.setFwlx(zhxzChsc.getFwlx());
  107. fzxzDTO.setJsdw(zhxzChsc.getSbdw());
  108. fzxzDTO.setXmmc(zhxzChsc.getXmmc());
  109. fzxzDTO.setXzfw(zhxzChsc.getXzfw());
  110. fzxzDTO.setXzmj(zhxzChsc.getNydmj());
  111. fzxzDTO.setYdmjbegin(zhxzChsc.getYdmjks());
  112. fzxzDTO.setYdmjend(zhxzChsc.getYdmjjs());
  113. fzxzDTO.setCjyh(zhxzChsc.getCjyh());
  114. fzxzDTO.setSjy(zhxzChsc.getSjy());
  115. fzxzDTO.setYdxz_bsm(zhxzChsc.getYdlx());
  116. fzxzDTO.setRwzt(Rwzt.getCreate());
  117. fzxzDTO.setRwly("OpenAPI");
  118. fzxzMapper.insert(fzxzDTO);
  119. if (StringUtils.isNotEmpty(zhxzChsc.getYxyz())) {
  120. String yxyz = zhxzChsc.getYxyz();
  121. List<Map<String, Object>> list = null;
  122. try {
  123. ObjectMapper mapper = new ObjectMapper();
  124. list = mapper.readValue(yxyz, new TypeReference<List<Map<String, Object>>>() {
  125. });
  126. } catch (Exception e) {
  127. e.printStackTrace();
  128. }
  129. for (int i = 0; i < list.size(); i++) {
  130. FzxzXzyzDTO dto = DozerUtils.map(list.get(i), FzxzXzyzDTO.class);
  131. dto.setBsm(StringUtils.getUUID());
  132. dto.setRwbsm(fzxzDTO.getBsm());
  133. fzxzXzyzMapper.insert(dto);
  134. }
  135. }
  136. //TODO 入储备库
  137. // FzssZhxzCbk cbk = zhxzChsc.MapTo<FzssZhxzCbk>();
  138. // cbk.BSM = zhxzChsc.BSM;
  139. // var listFields = EsriClassField.ToFields<FzssZhxzCbk>(cbk);
  140. // PyUtils.Shp2Sde(shpfile, "KJGH.T_FZSS_ZHXZ_CBK", listFields);
  141. System.out.println("XZLB暂不支持" + zhxzChsc.getXzlb());
  142. } else if (zhxzChsc.getXzlb() == xzlbDTO.getHgxfx()) {
  143. rwlx = "合规性分析";
  144. //插入合规性分析主表
  145. HgxfxDTO fzssHgxfx = DozerUtils.map(zhxzChsc, HgxfxDTO.class);
  146. fzssHgxfx.setCjyh(SecurityUtils.getUsername());
  147. fzssHgxfx.setFxmj(zhxzChsc.getNydmj());
  148. fzssHgxfx.setJsdw(zhxzChsc.getSbdw());
  149. fzssHgxfx.setRwly("OpenAPI");
  150. fzssHgxfx.setBsm(zhxzChsc.getBsm());
  151. fzssHgxfx.setRwzt(Rwzt.getCreate());
  152. //TODO 确认下是否需要任务进度字段
  153. //fzssHgxfx.setRwjd(0);
  154. hgxfxMapper.insert(fzssHgxfx);
  155. //插入合规性分析分析因子表
  156. //默认把基础分析写入到分析因子里面
  157. QueryWrapper<HgxfxScxDTO> basefxyzwrapper = new QueryWrapper<HgxfxScxDTO>();
  158. basefxyzwrapper.eq("kzxjb", 0);
  159. List<HgxfxScxDTO> basefxyz = hgxfxScxMapper.selectList(basefxyzwrapper);
  160. //查询看是否已配置分析因子模板,如果没有全部查询插入分析因子表
  161. HgxfxTemplateDTO template = hgxfxTemplateMapper.selectOne(new QueryWrapper<HgxfxTemplateDTO>().eq("mbmc", zhxzChsc.getYwlx()));
  162. if (template != null) {
  163. QueryWrapper<HgxfxScxDTO> fxyzwrapper = new QueryWrapper<HgxfxScxDTO>();
  164. fxyzwrapper.in("bsm", template.getFxyz().split(",")).orderByAsc("xssx");
  165. List<HgxfxScxDTO> res = hgxfxScxMapper.selectList(fxyzwrapper);
  166. if (res.size() > 0) {
  167. basefxyz.addAll(res);
  168. }
  169. } else if (StringUtils.isNotEmpty(zhxzChsc.getYxyz())) {
  170. //查询审查项 默认把控制线级别等于0的也添加进去
  171. QueryWrapper<HgxfxScxDTO> fxyzwrapper = new QueryWrapper<HgxfxScxDTO>();
  172. fxyzwrapper.gt("kzxjb", 0).eq("status", 1);
  173. // fxyzwrapper.in("bsm", zhxzChsc.getYxyz().split(",")).orderByAsc("xssx");
  174. List<HgxfxScxDTO> res = hgxfxScxMapper.selectList(fxyzwrapper);
  175. if (res.size() > 0) {
  176. basefxyz.addAll(res);
  177. }
  178. }
  179. for (HgxfxScxDTO cur : basefxyz) {
  180. HgxfxHgscxDTO scx = new HgxfxHgscxDTO();
  181. scx.setBsm(StringUtils.getUUID());
  182. scx.setRwbsm(zhxzChsc.getBsm());
  183. scx.setScxbsm(cur.getBsm());
  184. scx.setYsmc(cur.getYsmc());
  185. hgxfxHgscxMapper.insert(scx);
  186. }
  187. //TODO 入储备库
  188. // FzssZhxzCbk cbk = zhxzChsc.MapTo<FzssZhxzCbk>();
  189. // cbk.BSM = zhxzChsc.BSM;
  190. // var listFields = EsriClassField.ToFields<FzssZhxzCbk>(cbk);
  191. // PyUtils.Shp2Sde(shpfile, "KJGH.T_FZSS_ZHXZ_CBK", listFields);
  192. }
  193. FzxzDTO fzxzDTO = new FzxzDTO();
  194. fzxzDTO.setBsm(zhxzChsc.getBsm());
  195. fzxzDTO.setFwlx(zhxzChsc.getFwlx());
  196. fzxzDTO.setXzfw(curfxfw);
  197. RequestResult info = fzxzvector2Sde(fzxzDTO, rwlx);
  198. if (info != null) {
  199. System.out.println("策划生成分析范围数据入库失败");
  200. } else {
  201. System.out.println("策划生成分析模块:" + zhxzChsc.getBsm() + "完成!!!!!!!! " + new Date().toString());
  202. }
  203. //进度更新
  204. zhxzChsc.setRwzt(Rwzt.getCreate());
  205. zhxzChsc.setRwjd(3);
  206. fzssChscMapper.update(zhxzChsc, chscwrapper);
  207. }
  208. } catch (Exception e) {
  209. e.printStackTrace();
  210. }
  211. }
  212. }