AllianceCityWebsiteSchedul.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. package com.trs.ggzyexchange.schedul;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.fasterxml.jackson.core.JsonProcessingException;
  5. import com.trs.ggzyexchange.entity.*;
  6. import com.trs.ggzyexchange.enums.ClassIfy;
  7. import com.trs.ggzyexchange.enums.JobLock;
  8. import com.trs.ggzyexchange.service.*;
  9. import com.trs.ggzyexchange.utils.TenderDetailsVoUtils;
  10. import org.apache.commons.lang3.ObjectUtils;
  11. import org.quartz.Job;
  12. import org.quartz.JobExecutionContext;
  13. import org.quartz.JobExecutionException;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.text.SimpleDateFormat;
  19. import java.util.ArrayList;
  20. import java.util.Date;
  21. import java.util.List;
  22. /**
  23. * <p>
  24. * 成交结果公告 定时任务
  25. * </p>
  26. *
  27. * @author trs
  28. * @since 2023-02-24
  29. */
  30. @Component
  31. public class AllianceCityWebsiteSchedul implements Job {
  32. private Logger logger = LoggerFactory.getLogger(AllianceCityWebsiteSchedul.class);
  33. @Autowired
  34. private AllianceCityWebsiteService allianceCityWebsiteService;
  35. @Autowired
  36. private GcNoticeandfileService gcNoticeandfileService;
  37. @Autowired
  38. private TenderDetailsVoService tenderDetailsVoService;
  39. @Autowired
  40. private ScheduledTashService scheduledTashService;
  41. @Autowired
  42. private AreaPlatformService areaPlatformService;
  43. public void queryPageListUpdateEs() throws JsonProcessingException {
  44. /**
  45. * 查询当前在定时任务表当中的最新时间
  46. */
  47. QueryWrapper<ScheduledTash> scheduledTashQueryWrapper = new QueryWrapper<ScheduledTash>();
  48. scheduledTashQueryWrapper.eq("table_name_value","alliance_city_website");
  49. Page<ScheduledTash> pageScheduledTash = new Page<ScheduledTash>(1, 1);
  50. Page<ScheduledTash> page = scheduledTashService.page(pageScheduledTash, scheduledTashQueryWrapper);
  51. List<ScheduledTash> records = page.getRecords();
  52. ScheduledTash scheduledTash = null;
  53. if(records.size() > 0){
  54. scheduledTash = records.get(0);
  55. }
  56. Long time = null;
  57. if(ObjectUtils.isEmpty(scheduledTash)){
  58. try {
  59. /**
  60. * 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间
  61. */
  62. ScheduledTash scheduledTashTash = new ScheduledTash();
  63. scheduledTashTash.setTime(0L);
  64. time = 0L;
  65. scheduledTashTash.setTableNameValue("alliance_city_website");
  66. scheduledTashTash.setUpdateTime(new Date());
  67. scheduledTashTash.setCreateTime(new Date());
  68. scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
  69. }catch (Exception e){
  70. e.printStackTrace();
  71. }
  72. }else {
  73. /**
  74. * 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间
  75. */
  76. time = scheduledTash.getTime();
  77. }
  78. try {
  79. //查询表gcNoticeandfile表当中的最新时间
  80. Long newTime = allianceCityWebsiteService.maxDataTimeStamp();
  81. ScheduledTash scheduledTashTash = new ScheduledTash();
  82. scheduledTashTash.setTime(newTime);
  83. scheduledTashTash.setTableNameValue("alliance_city_website");
  84. scheduledTashTash.setUpdateTime(new Date());
  85. scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
  86. }catch (Exception e){
  87. e.printStackTrace();
  88. }
  89. if(!ObjectUtils.isEmpty(time)){
  90. QueryWrapper<AllianceCityWebsite> gcPerformanceQueryWrapper = new QueryWrapper<AllianceCityWebsite>();
  91. gcPerformanceQueryWrapper.gt("DATA_TIMESTAMP",time);
  92. int count = allianceCityWebsiteService.count(gcPerformanceQueryWrapper);
  93. Integer pageSize = 1000;
  94. Integer pageNum = (int)Math.ceil((double)count/pageSize);
  95. for(int i = 1; i <= pageNum;i++){
  96. List<TenderDetailsVo> tenderDetailsVoListAll = getTenderDetailsVoListAll(i, pageSize,time);
  97. gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll);
  98. }
  99. }
  100. }
  101. public List<TenderDetailsVo> getTenderDetailsVoListAll(Integer pageNo,Integer pageSize,Long time){
  102. QueryWrapper<AllianceCityWebsite> gcPerformanceQueryWrapper = new QueryWrapper<AllianceCityWebsite>();
  103. gcPerformanceQueryWrapper.gt("DATA_TIMESTAMP",time);
  104. Page<AllianceCityWebsite> page = new Page<AllianceCityWebsite>(pageNo, pageSize);
  105. Page<AllianceCityWebsite> page1 = allianceCityWebsiteService.page(page,gcPerformanceQueryWrapper);
  106. List<AllianceCityWebsite> records = page1.getRecords();
  107. List<TenderDetailsVo> tenderDetailsVos = new ArrayList<TenderDetailsVo>();
  108. for (AllianceCityWebsite record : records) {
  109. TenderDetailsVo tenderDetailsVo = new TenderDetailsVo();
  110. String projectCode1 = record.getProjectCode();
  111. if(!ObjectUtils.isEmpty(projectCode1)){
  112. tenderDetailsVo.setProjectCode(projectCode1);
  113. }
  114. String noticeName = record.getBulletinTitle();
  115. if(!ObjectUtils.isEmpty(noticeName)){
  116. tenderDetailsVo.setNoticeName(noticeName);
  117. }
  118. String projectName = record.getBulletinTitle();
  119. if(!ObjectUtils.isEmpty(projectName)){
  120. tenderDetailsVo.setProjectName(projectName);
  121. }
  122. String projectCode = record.getProjectCode();
  123. if(!ObjectUtils.isEmpty(projectCode)){
  124. tenderDetailsVo.setTenderProjectCode(projectCode);
  125. }
  126. String noticeSendTime = record.getPublishingTime();
  127. Long createDate = record.getCreateDate();
  128. if(false&&!ObjectUtils.isEmpty(createDate)&&0 != createDate){
  129. tenderDetailsVo.setNoticeSendTime(record.getCreateDate().toString());
  130. }else{
  131. if(!ObjectUtils.isEmpty(noticeSendTime)){
  132. tenderDetailsVo.setNoticeSendTime(noticeSendTime.toString());
  133. tenderDetailsVo.setDocGetStartTime(noticeSendTime.toString());
  134. }
  135. }
  136. String regionCode = record.getRegionCode();
  137. if(!ObjectUtils.isEmpty(regionCode)){
  138. tenderDetailsVo.setRegionCode(regionCode);
  139. }
  140. String noticeEndTime = record.getPublishingTime();
  141. if(!ObjectUtils.isEmpty(noticeEndTime)){
  142. tenderDetailsVo.setDocGetEndTime(noticeEndTime.toString());
  143. }
  144. String dataSourceCode = record.getSourceDataKey();
  145. if(!ObjectUtils.isEmpty(dataSourceCode)){
  146. tenderDetailsVo.setDataSourceCode(dataSourceCode);
  147. }
  148. String sourceDataKey = record.getSourceDataKey();
  149. if(!ObjectUtils.isEmpty(sourceDataKey)){
  150. tenderDetailsVo.setSourceDataKey(sourceDataKey+noticeSendTime);
  151. }
  152. if(!ObjectUtils.isEmpty(record.getBulletinType())){//1:公告,2:公示
  153. tenderDetailsVo.setTypeName(record.getBulletinType());
  154. }
  155. if(!ObjectUtils.isEmpty(record.getIndustryType())){//1:采购需求预公示2:产权类3:权益类
  156. tenderDetailsVo.setTypeCode(record.getIndustryType());
  157. }
  158. String finalNoticeContent = "";
  159. String noticeContent = record.getBulletinContent();
  160. if(!ObjectUtils.isEmpty(noticeContent)){
  161. finalNoticeContent = noticeContent;
  162. }
  163. if(!ObjectUtils.isEmpty(record.getUrl())){
  164. String fileUrl = record.getUrl();
  165. String file = "";
  166. if(!ObjectUtils.isEmpty(fileUrl)){
  167. file = "<br>附件:<br>";
  168. String[] finalFiles = fileUrl.split(";");
  169. for (int i = 0; i < finalFiles.length; i++) {
  170. String finalFile = finalFiles[i];
  171. if(finalFile.endsWith(";")){
  172. finalFile = finalFile.substring(0,finalFile.length()-1);
  173. }
  174. Integer index = 1+i;
  175. file += "<a target='_blank' style='color: blue' href='"+ finalFile +"' rel='noreferrer noopener nofollow' >附件"+index+"</a><br/>";
  176. }
  177. }
  178. finalNoticeContent = finalNoticeContent + file;
  179. }
  180. tenderDetailsVo.setNoticeContent(finalNoticeContent);
  181. tenderDetailsVos.add(tenderDetailsVo);
  182. }
  183. for (TenderDetailsVo record : tenderDetailsVos) {
  184. try {
  185. String typeName = record.getTypeName();//1:公告,2:公示
  186. String typeCode = record.getTypeCode();//1:采购需求预公示2:产权类3:权益类
  187. if(!ObjectUtils.isEmpty(typeCode)){
  188. if("1".equals(typeCode)){//采购需求预公示
  189. record.setNoticeTypeCode(ClassIfy.PRE_ANNOUNCEMENT.getCode());
  190. record.setNoticeTypeName(ClassIfy.PRE_ANNOUNCEMENT.getName());
  191. record.setTransactionTypeCode(ClassIfy.GOVERNMENT_PROCUREMENT.getCode());
  192. record.setTransactionTypeName(ClassIfy.GOVERNMENT_PROCUREMENT.getName());
  193. }else if("2".equals(typeCode)){//呼市产权交易
  194. if("1".equals(typeName)){
  195. record.setNoticeTypeCode(ClassIfy.hhht_cq_gg.getCode());
  196. record.setNoticeTypeName(ClassIfy.hhht_cq_gg.getName());
  197. }else if("2".equals(typeName)){
  198. record.setNoticeTypeCode(ClassIfy.hhht_cq_jg.getCode());
  199. record.setNoticeTypeName(ClassIfy.hhht_cq_jg.getName());
  200. }
  201. record.setTransactionTypeCode(ClassIfy.HHHT_PROPERTY.getCode());
  202. record.setTransactionTypeName(ClassIfy.HHHT_PROPERTY.getName());
  203. }else if("3".equals(typeCode)){//赤峰资源权益交易
  204. if("1".equals(typeName)){
  205. record.setNoticeTypeCode(ClassIfy.cf_cq_gg.getCode());
  206. record.setNoticeTypeName(ClassIfy.cf_cq_gg.getName());
  207. }else if("2".equals(typeName)){
  208. record.setNoticeTypeCode(ClassIfy.cf_cq_jg.getCode());
  209. record.setNoticeTypeName(ClassIfy.cf_cq_jg.getName());
  210. }
  211. record.setTransactionTypeCode(ClassIfy.CF_PROPERTY.getCode());
  212. record.setTransactionTypeName(ClassIfy.CF_PROPERTY.getName());
  213. }else if("100".equals(typeCode)){//非依法必招项目
  214. if("1".equals(typeName)){//招标公告
  215. record.setNoticeTypeCode(ClassIfy.TENDER_ANNOUNCEMENT.getCode());
  216. record.setNoticeTypeName(ClassIfy.TENDER_ANNOUNCEMENT.getName());
  217. }else if("2".equals(typeName)){//变更公告
  218. record.setNoticeTypeCode(ClassIfy.CHANGE_ANNOUNCEMENT.getCode());
  219. record.setNoticeTypeName(ClassIfy.CHANGE_ANNOUNCEMENT.getName());
  220. }else if("3".equals(typeName)){//候选人公告
  221. record.setNoticeTypeCode(ClassIfy.PUBLICITY_OF_BID_WINNER_CANDIDATES.getCode());
  222. record.setNoticeTypeName(ClassIfy.PUBLICITY_OF_BID_WINNER_CANDIDATES.getName());
  223. }else if("4".equals(typeName)){//结果公告
  224. record.setNoticeTypeCode(ClassIfy.ANNOUNCEMENT_OF_BID_WINNING_RESULTS.getCode());
  225. record.setNoticeTypeName(ClassIfy.ANNOUNCEMENT_OF_BID_WINNING_RESULTS.getName());
  226. }
  227. record.setTransactionTypeCode(ClassIfy.FYFBZ_PROJECT.getCode());
  228. record.setTransactionTypeName(ClassIfy.FYFBZ_PROJECT.getName());
  229. }else if("200".equals(typeCode)){//非依法必招项目
  230. if("1".equals(typeName)){//招标公告
  231. record.setNoticeTypeCode(ClassIfy.TRANSFER_ANNOUNCEMENT.getCode());
  232. record.setNoticeTypeName(ClassIfy.TRANSFER_ANNOUNCEMENT.getName());
  233. }else if("2".equals(typeName)){//补充
  234. record.setNoticeTypeCode(ClassIfy.SUPPLE_ANNOUNCEMENT.getCode());
  235. record.setNoticeTypeName(ClassIfy.SUPPLE_ANNOUNCEMENT.getName());
  236. }else if("3".equals(typeName)){//结果
  237. record.setNoticeTypeCode(ClassIfy.TRANSACTION_PARCEL.getCode());
  238. record.setNoticeTypeName(ClassIfy.TRANSACTION_PARCEL.getName());
  239. }
  240. record.setTransactionTypeCode(ClassIfy.ZRZY_TYZY.getCode());
  241. record.setTransactionTypeName(ClassIfy.ZRZY_TYZY.getName());
  242. }
  243. }else {
  244. continue;
  245. }
  246. try {
  247. String regionCode = record.getRegionCode();
  248. AreaPlatform areaPlatformByRegionCode = areaPlatformService.getAreaPlatformByRegionCode(regionCode);
  249. if(!ObjectUtils.isEmpty(areaPlatformByRegionCode)){
  250. record.setPlatformCode(areaPlatformByRegionCode.getPlatformCode());
  251. record.setPlatformName(areaPlatformByRegionCode.getRegionName());
  252. }
  253. }catch (Exception e){
  254. e.printStackTrace();
  255. }
  256. TenderDetailsVoUtils.isNull(record);
  257. }catch (Exception e){
  258. e.printStackTrace();
  259. }
  260. }
  261. return tenderDetailsVos;
  262. }
  263. @Override
  264. public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
  265. try {
  266. if(JobLock.AllianceCityWebsiteFlag){
  267. JobLock.AllianceCityWebsiteFlag = false;
  268. logger.info("执行AllianceCityWebsiteFlag", new SimpleDateFormat().format(new Date()));
  269. try {
  270. queryPageListUpdateEs();
  271. } catch (Exception e) {
  272. e.printStackTrace();
  273. }
  274. JobLock.AllianceCityWebsiteFlag = true;
  275. }else{
  276. logger.info("不执行AllianceCityWebsiteFlag", new SimpleDateFormat().format(new Date()));
  277. }
  278. }catch (Exception e){
  279. e.printStackTrace();
  280. JobLock.AllianceCityWebsiteFlag = true;
  281. }
  282. }
  283. }