Browse Source

添加定时任务

yangwanyi 3 years ago
parent
commit
45294ada35

+ 20 - 23
src/main/java/com/persagy/transfer/service/impl/WdDbServiceImpl.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.persagy.common.utils.IdGenerator;
 import com.persagy.transfer.constant.InfosKeyConstant;
 import com.persagy.transfer.constant.SwitchConstant;
 import com.persagy.transfer.mapper.HydomcAssetMapper;
@@ -49,7 +48,7 @@ public class WdDbServiceImpl implements WdDbService {
     }
 
     /**
-     * @param infosObj         博锐尚格项目表的infos字段值
+     * @param infosObj         博锐尚格项目表的debugs字段值
      * @param wdProjectId      博锐尚格项目ID映射的万达项目ID
      * @param hydomcAsset      万达设备信息对象
      * @param valid            项目数据对象状态:1有效,0无效
@@ -61,11 +60,11 @@ public class WdDbServiceImpl implements WdDbService {
      */
     @DS(value = SwitchConstant.DS_MASTER_2)
     public void sycnHydomcAsset(JSONObject infosObj, String wdProjectId, HydomcAsset hydomcAsset, Integer valid, java.util.Date updateTime, String classstrucrureid) {
-        log.info("准备同步万达设备信息对象数据");
+        log.debug("准备同步万达设备信息对象数据");
         // 根据万达设备信息表的主键查询数据是否存在
         hydomcAsset = this.getHydomcAssetByPKey(String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE)));
         if (hydomcAsset == null) {
-            log.info("万达数据库没有这条数据,准备新增");
+            log.debug("万达数据库没有这条数据,准备新增");
             hydomcAsset = new HydomcAsset(); // 万达设备信息主表实体
             hydomcAsset.setSbybm(String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE))); // 主键  无其他主键可采用设备编码为主键,但要确保唯一(工程信息化设备原码)
             hydomcAsset.setDescription(String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_NAME))); // 设备名称
@@ -103,11 +102,11 @@ public class WdDbServiceImpl implements WdDbService {
             UpdateWrapper<HydomcAsset> updateWrapper = new UpdateWrapper<>();
             // 数据更新时间 增量字段
             if (valid == 0) {
-                log.info("万达数据库已经存在该条数据,且博锐尚格这条数据状态为无效,因此直接更新万达这条数据状态为delete即可");
+                log.debug("万达数据库已经存在该条数据,且博锐尚格这条数据状态为无效,因此直接更新万达这条数据状态为delete即可");
                 updateWrapper.set("status", SwitchConstant.SCRAP); // 设备状态 运行中/报废    默认都为运行中
                 updateWrapper.set("datastatus", SwitchConstant.IS_DELETE); // 数据状态 update/delete 当数据状态为delete时,设备状态需改为报废
             } else {
-                log.info("万达数据库已经存在该条数据,但博锐尚格这条数据状态为有效,因此需要更新所有字段");
+                log.debug("万达数据库已经存在该条数据,但博锐尚格这条数据状态为有效,因此需要更新所有字段");
                 updateWrapper.set("sbybm", String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE))); // 主键  无其他主键可采用设备编码为主键,但要确保唯一(工程信息化设备原码)
                 updateWrapper.set("description", String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_NAME))); // 设备名称
                 // updateWrapper.setWzqy(); // 详细设备安装位置,格式:楼体-楼层-区域 没有key 后续补充
@@ -148,7 +147,7 @@ public class WdDbServiceImpl implements WdDbService {
     /**
      * @param wdfacilityRelList 筛选后的万达设备参数信息表与博锐尚格信息点的映射表数据
      * @param wdProjectid       万达项目ID(广场ID)
-     * @param infosObj          博锐尚格项目表的infos字段值
+     * @param infosObj          博锐尚格项目表的debugs字段值
      * @param updateTime        项目最后更新时间
      * @author YangWanYi
      * @describe 同步万达设备参数对象数据
@@ -156,25 +155,23 @@ public class WdDbServiceImpl implements WdDbService {
      */
     @DS(value = SwitchConstant.DS_MASTER_2)
     public void sycnHydomcAssetspec(List<WdfacilityRelPersagy> wdfacilityRelList, String wdProjectid, JSONObject infosObj, java.util.Date updateTime) {
-        log.info("准备同步万达设备参数对象数据");
+        log.debug("准备同步万达设备参数对象数据");
         HydomcAssetspec hydomcAssetspec;
         for (WdfacilityRelPersagy wdfacilityRelPersagy : wdfacilityRelList) {
             // 根据万达设备信息表的SITEID、SBYBM、ASSETATTRID查询数据是否存在
             hydomcAssetspec = this.getHydomcAssetspec(wdProjectid, String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE)), wdfacilityRelPersagy.getAssetattrid());
             if (hydomcAssetspec == null) {
-                log.info("万达表hydomc_assetspec没有这条数据,准备新增");
-//                hydomcAssetspec = new HydomcAssetspec();
-//                hydomcAssetspec.setAssetspecid(IdGenerator.getSnowIdStr(prefix););
+                log.debug("万达表hydomc_assetspec没有这条数据,准备新增");
                 hydomcAssetspec = this.handleHydomcAssetspec(new HydomcAssetspec(), wdProjectid, infosObj, wdfacilityRelPersagy, updateTime);
                 this.hydomcAssetspecMapper.insert(hydomcAssetspec);
             } else {
-                // key为wdfacility_rel_persagy的code值从infos取 有值update 无值(空、空字符串)就是delete
+                // key为wdfacility_rel_persagy的code值从debugs取 有值update 无值(空、空字符串)就是delete
                 if (StringUtils.isBlank(String.valueOf(infosObj.get(wdfacilityRelPersagy.getCode())))) {
-                    log.info("万达表hydomc_assetspec有这条数据,但code没有值,只需要更新数据状态为delete即可");
+                    log.debug("万达表hydomc_assetspec有这条数据,但code没有值,只需要更新数据状态为delete即可");
                     hydomcAssetspec.setDatastatus(SwitchConstant.IS_DELETE); // 数据状态 update/delete
                     hydomcAssetspec.setChangedate(updateTime); // 数据更新时间 增量字段
                 } else {
-                    log.info("万达表hydomc_assetspec有这条数据,code有值,需要更新所有字段");
+                    log.debug("万达表hydomc_assetspec有这条数据,code有值,需要更新所有字段");
                     hydomcAssetspec = this.handleHydomcAssetspec(hydomcAssetspec, wdProjectid, infosObj, wdfacilityRelPersagy, updateTime);
                 }
                 this.hydomcAssetspecMapper.updateById(hydomcAssetspec);
@@ -185,7 +182,7 @@ public class WdDbServiceImpl implements WdDbService {
     /**
      * @param hydomcAssetspec      设备参数信息对象
      * @param wdProjectid          广场ID(万达项目ID)
-     * @param infosObj             博锐尚格项目表infos字段数据
+     * @param infosObj             博锐尚格项目表debugs字段数据
      * @param wdfacilityRelPersagy 万达设备参数信息表与博锐尚格信息点的映射表
      * @param changedate           数据更新时间
      * @return com.persagy.transfer.pojo.dto.HydomcAssetspec
@@ -197,22 +194,22 @@ public class WdDbServiceImpl implements WdDbService {
         hydomcAssetspec.setSiteid(wdProjectid); // 广场id 关联设备信息 Pj4403070003
         hydomcAssetspec.setSbybm(String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE))); // 设备编码 关联设备信息 wD_gongchengxinxihua
         hydomcAssetspec.setClassstructureid(String.valueOf(infosObj.get(InfosKeyConstant.EQUIPMENT_SORT))); // 设备分类id 1507
-        // 根据Datatype判断设置设备参数数字值还是设备参数文本值 key为wdfacility_rel_persagy的code值从infos取
+        // 根据Datatype判断设置设备参数数字值还是设备参数文本值 key为wdfacility_rel_persagy的code值从debugs取
         final String IS_NUMBER = "数字";
         final String IS_LETTER = "字母";
         if (IS_NUMBER.equals(wdfacilityRelPersagy.getDatatype())) { // 是数字
-            log.info("dataType是数字");
-            hydomcAssetspec.setNumvalue(StringTool.object2Double(infosObj.get(wdfacilityRelPersagy.getCode()))); // 设备参数数字值 (取自infos)
+            log.debug("dataType是数字");
+            hydomcAssetspec.setNumvalue(StringTool.object2Double(infosObj.get(wdfacilityRelPersagy.getCode()))); // 设备参数数字值 (取自debugs)
         } else if (IS_LETTER.equals(wdfacilityRelPersagy.getDatatype())) { // 是字母
-            log.info("dataType是字母");
-            hydomcAssetspec.setAlnvalue(String.valueOf(infosObj.get(wdfacilityRelPersagy.getCode()))); // 设备参数文本值 (取自infos)
+            log.debug("dataType是字母");
+            hydomcAssetspec.setAlnvalue(String.valueOf(infosObj.get(wdfacilityRelPersagy.getCode()))); // 设备参数文本值 (取自debugs)
         }
-        // key为wdfacility_rel_persagy的code值从infos取 有值update 无值(空、空字符串)就是delete
+        // key为wdfacility_rel_persagy的code值从debugs取 有值update 无值(空、空字符串)就是delete
         if (StringUtils.isBlank(String.valueOf(infosObj.get(wdfacilityRelPersagy.getCode())))) {
-            log.info("code没有值,数据状态设置为delete");
+            log.debug("code没有值,数据状态设置为delete");
             hydomcAssetspec.setDatastatus(SwitchConstant.IS_DELETE); // 数据状态 update/delete
         } else {
-            log.info("code有值,数据状态设置为update");
+            log.debug("code有值,数据状态设置为update");
             hydomcAssetspec.setDatastatus(SwitchConstant.IS_UPDATE); // 数据状态 update/delete
         }
         hydomcAssetspec.setClassqc(wdfacilityRelPersagy.getClassqc()); // 设备分类名称 电梯系统/扶梯/人行步道 (取自中间表wdfacility_rel_persagy)

+ 15 - 3
src/main/java/com/persagy/transfer/task/SycnEquDataToWdTask.java

@@ -1,6 +1,9 @@
 package com.persagy.transfer.task;
 
+import com.persagy.transfer.service.PersagyDbService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.PropertySource;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -11,16 +14,25 @@ import org.springframework.stereotype.Component;
  **/
 @Component
 @Slf4j
+@PropertySource("classpath:/configuration.properties")
 public class SycnEquDataToWdTask {
 
     private int times;
 
+    @Autowired
+    private PersagyDbService persagyDbService;
+
     /**
      * 数据同步逻辑
      */
-    @Scheduled(cron = "*/15 * * * * ?")
+    @Scheduled(cron = "${sycnData2wdTaskCron:*/15 * * * * ?}")
     public void execute() {
-        log.info("thread id:{},FixedPrintTask execute times:{}", Thread.currentThread().getId(), ++times);
-
+        log.info("定时任务:开始同步设备信息到万达数据库,类限定名:com.persagy.transfer.task.SycnEquDataToWdTask,thread id:{},FixedPrintTask execute times:{}", Thread.currentThread().getId(), ++times);
+        try {
+            this.persagyDbService.syncData2WD();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("定时任务:同步设备信息到万达数据库处理失败,类限定名:com.persagy.transfer.task.SycnEquDataToWdTask,thread id:{},msg:{},error:{}", Thread.currentThread().getId(), e.getMessage(), e.getStackTrace());
+        }
     }
 }

+ 1 - 0
src/main/resources/configuration.properties

@@ -0,0 +1 @@
+sycnData2wdTaskCron=0 */10 * * * ?