Commit 0275d20b authored by 王琮's avatar 王琮

定时同步邀访信息

parent 3e887912
...@@ -9,8 +9,6 @@ import com.alibaba.fastjson.JSONArray; ...@@ -9,8 +9,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTimeUtils;
import org.rcisoft.core.model.CyPersistModel;
import org.rcisoft.integration.jieLink.common.SignUtils; import org.rcisoft.integration.jieLink.common.SignUtils;
import org.rcisoft.integration.jieLink.dto.*; import org.rcisoft.integration.jieLink.dto.*;
import org.rcisoft.integration.jieLink.service.IJieLinkService; import org.rcisoft.integration.jieLink.service.IJieLinkService;
......
...@@ -56,5 +56,7 @@ public interface VisitInfomationRepository extends CyBaseMapper<VisitInfoMation> ...@@ -56,5 +56,7 @@ public interface VisitInfomationRepository extends CyBaseMapper<VisitInfoMation>
List<VisitUser> getUserList(@Param("business_id") int business_id); List<VisitUser> getUserList(@Param("business_id") int business_id);
List<VisitInfoMation> findByUser(VisitUser visitUser); List<VisitInfoMation> findByUser(VisitUser visitUser);
List<VisitInfoMation> findByTime(@Param("time")String time,@Param("realTime")String realTime);
} }
...@@ -212,5 +212,8 @@ public class VisitInfoMation extends CyIdIncreEntity<VisitInfoMation> { ...@@ -212,5 +212,8 @@ public class VisitInfoMation extends CyIdIncreEntity<VisitInfoMation> {
@Transient //访客手机号(小程序登录用户手机号) @Transient //访客手机号(小程序登录用户手机号)
@TableField(exist = false) @TableField(exist = false)
private String phone; private String phone;
// 同步状态(0:未同步,1:已同步)
private String synStatus;
} }
package org.rcisoft.sys.visit.schedule;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.rcisoft.integration.jieLink.service.IJieLinkService;
import org.rcisoft.sys.dictionary.entity.DictData;
import org.rcisoft.sys.dictionary.service.DictionaryService;
import org.rcisoft.sys.visit.dao.VisitInfomationRepository;
import org.rcisoft.sys.visit.entity.VisitInfoMation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Component
public class VisitSyncSchedule {
@Autowired
private DictionaryService dictionaryServiceImpl;
@Autowired
private VisitInfomationRepository visitInfomationRepository;
@Autowired
private IJieLinkService jieLinkService;
/**
* 捷顺开关
*/
@Value("${jieLink.synchronization}")
private boolean synchronization;
@Scheduled(cron = "0 0/30 * * * ?")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public void execute() {
// 查询提前访问时间阈值
List<DictData> dictDataList = dictionaryServiceImpl.selectByTypes("timeThreshold");
long times = 20 * 60 * 1000;
for (DictData dicData : dictDataList) {
String dictValue = dicData.getDictValue();
//此处可能会有类型转换报错的BUG
int factor = Integer.parseInt(dictValue);
String dictLabel = dicData.getDictLabel();
if (StringUtils.equals("advance", dictLabel)) {
times = times + factor * 60 * 1000;
}
}
// 获取此时未到访问时间已到禁止编辑时间的邀访记录同步到捷顺
Date date = new Date();
String realTime = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss");
String time = DateUtil.format(new Date(date.getTime() + times), "yyyy-MM-dd HH:mm:ss");
// 查询时间段内未同步的邀访记录
List<VisitInfoMation> records = visitInfomationRepository.findByTime(time, realTime);
if (records.size() > 0) {
records.forEach(r->{
if (synchronization && jieLinkService.pushVisitorData(r)) {
r.setSynStatus("1");
visitInfomationRepository.updateById(r);
}
});
}
}
}
...@@ -168,7 +168,10 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos ...@@ -168,7 +168,10 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
u.setNormal(); u.setNormal();
visitUserRepository.insert(u); visitUserRepository.insert(u);
}); });
//jieLinkService.pushVisitorData(visitInfomation); /* if(jieLinkService.pushVisitorData(visitInfomation)) {
visitInfomation.setSynStatus("1");
baseMapper.updateById(visitInfomation);
}*/
return new CyPersistModel(line); return new CyPersistModel(line);
} }
...@@ -651,7 +654,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos ...@@ -651,7 +654,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
Set set = new HashSet(); Set set = new HashSet();
for(int i=0;i<regions.length;i++){ for (int i = 0; i < regions.length; i++) {
set.add(regions[i]); set.add(regions[i]);
} }
regions = (String[]) set.toArray(new String[set.size()]); regions = (String[]) set.toArray(new String[set.size()]);
...@@ -669,7 +672,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos ...@@ -669,7 +672,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
if (regionCode.length() > 0) { if (regionCode.length() > 0) {
regionCode = regionCode.substring(0, regionCode.length() - 1); regionCode = regionCode.substring(0, regionCode.length() - 1);
visitInfoMation.setVisitRegionCode(regionCode); visitInfoMation.setVisitRegionCode(regionCode);
}else { } else {
BeanUtil.copyProperties(visitInfoDto, errorDTO); BeanUtil.copyProperties(visitInfoDto, errorDTO);
errorDTO.setError("访问区域不存在!"); errorDTO.setError("访问区域不存在!");
errorDTOArrayList.add(errorDTO); errorDTOArrayList.add(errorDTO);
......
...@@ -436,5 +436,25 @@ ...@@ -436,5 +436,25 @@
</if> </if>
and vu.person_id =#{personId} and vu.person_id =#{personId}
</select> </select>
<select id="findByTime" resultType="org.rcisoft.sys.visit.entity.VisitInfoMation">
select vi.business_id,
vi.user_name,
vi.dept_name,
vi.post_name,
vi.create_date,
vi.visit_reason,
vi.visit_region,
vi.visit_date,
vi.visit_time,
vi.visit_status,
vu.user_name,
vu.visit_phone
from visit_infomation vi
where vi.del_flag = '0'
and vi.flag = '1'
and vi.syn_status = '0'
and vi.visit_real_time &gt;= #{realTime}
and vi.visit_real_time &lt;= #{time}
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment