提交 1e0cb9d2 authored 作者: 000516's avatar 000516 提交者: Coding

每天凌晨,同步部门数据,同时同步经销商战区、大区信息

Merge Request: 每天凌晨,同步部门数据,同时同步经销商战区、大区信息 Created By: @李秋林 Accepted By: @李秋林 URL: https://g-pkkp8204.coding.net/p/promotion/d/promotion-service/git/merge/286?initial=true
...@@ -21,4 +21,7 @@ public interface QinceDealerDao { ...@@ -21,4 +21,7 @@ public interface QinceDealerDao {
Map<Object,Object> selectAll(); Map<Object,Object> selectAll();
List<QinCeDealerDto> selectList(DealerWrapper dw); List<QinCeDealerDto> selectList(DealerWrapper dw);
void updateOrg();
} }
...@@ -55,7 +55,6 @@ public class QinCeDepartmentDaoImpl implements QinCeDepartmentDao { ...@@ -55,7 +55,6 @@ public class QinCeDepartmentDaoImpl implements QinCeDepartmentDao {
} }
} }
} }
@Override @Override
......
...@@ -33,7 +33,6 @@ public class QinceDealerDaoImpl implements QinceDealerDao { ...@@ -33,7 +33,6 @@ public class QinceDealerDaoImpl implements QinceDealerDao {
public void saveList(List<Object> dealerJsons) { public void saveList(List<Object> dealerJsons) {
// 目前没有查重逻辑,只在前边判断逻辑中判断是否新增 // 目前没有查重逻辑,只在前边判断逻辑中判断是否新增
qinceDealerMapper.saveList(dealerJsons); qinceDealerMapper.saveList(dealerJsons);
log.info("勤策同步经销商,新增数量:{}",dealerJsons.size());
} }
@Override @Override
...@@ -77,6 +76,34 @@ public class QinceDealerDaoImpl implements QinceDealerDao { ...@@ -77,6 +76,34 @@ public class QinceDealerDaoImpl implements QinceDealerDao {
return transitionDtos(qinceDealerDOS); return transitionDtos(qinceDealerDOS);
} }
@Override
public void updateOrg() {
/**
* 更新非直营经销商的所属战区ID、战区名
* 非直营经销商所属部门是经销商级部门,上级战区无论是xx战区还是重客都可以直接将上级部门进行补充到org信息中
*/
qinceDealerMapper.updateOrg();
/**
* 更新直营经销商的所属战区ID、战区名
* 直营经销商所属部门是直属战区(没有经销商级部门),直接将所属部门补充到org信息中
*/
qinceDealerMapper.updateOrgZY();
/**
* 更新非直营经销商的所属大区ID、大区名
* 判断是否是重客,如果是重客直接将重客放到大区中
* 如果不是重客,直接将所属战区的parent部门放到大区中
*/
qinceDealerMapper.updateParentOrg();
qinceDealerMapper.updateParentOrgZK();
/**
* 直接将所属战区的parent部门放到大区中(目前重客没有直接经销商)
*/
qinceDealerMapper.updateParentOrgZY();
}
/** /**
* DO to DTO (单个对象) * DO to DTO (单个对象)
* *
......
package com.wangxiaolu.promotion.domain.user.mapper; package com.wangxiaolu.promotion.domain.user.mapper;
import com.wangxiaolu.promotion.domain.user.mapper.entity.QinceDealerDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wangxiaolu.promotion.domain.user.mapper.entity.QinceDealerDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.STRowID;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author a02200059 * @author a02200059
...@@ -23,6 +20,15 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealerDO> { ...@@ -23,6 +20,15 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealerDO> {
void saveList(@Param("dealerJsons") List<Object> dealerJsons); void saveList(@Param("dealerJsons") List<Object> dealerJsons);
void updateOrg();
void updateOrgZY();
void updateParentOrg();
void updateParentOrgZY();
void updateParentOrgZK();
} }
......
...@@ -17,4 +17,6 @@ public interface QinCeDataTaskService { ...@@ -17,4 +17,6 @@ public interface QinCeDataTaskService {
void productAllTask(); void productAllTask();
void productDealers(); void productDealers();
void putDealersOrg();
} }
...@@ -61,7 +61,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -61,7 +61,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
return; return;
} }
qinCeDepartmentDao.departmentSyncTask(responseDatas); qinCeDepartmentDao.departmentSyncTask(responseDatas);
} }
@Override @Override
...@@ -122,23 +121,33 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -122,23 +121,33 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void productDealers() { public void productDealers() {
Set<Object> dealerIdsR = redisCache.getHashKeys(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey()); // Set<Object> dealerIdsR = redisCache.getHashKeys(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey());
if (CollectionUtils.isEmpty(dealerIdsR)){ // if (CollectionUtils.isEmpty(dealerIdsR)){
// 将数据库中的经销商保存到redis中 // // 将数据库中的经销商保存到redis中
Map<Object, Object> dealers = qinceDealerDao.selectAll(); // Map<Object, Object> dealers = qinceDealerDao.selectAll();
dealerIdsR = dealers.keySet(); // dealerIdsR = dealers.keySet();
redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers); // redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers);
} // }
int i = 0; int i = 0;
boolean nextPage = true; boolean nextPage = true;
while (nextPage) { while (nextPage) {
i++; i++;
nextPage = booleanDealersPage(i,dealerIdsR); nextPage = booleanDealersPage(i);
} }
} }
private boolean booleanDealersPage(Integer pageNum,Set<Object> dealerIdsR){ /**
* 修改经销商
* 同步有独立部门经销商的战区、大区
* 同步王小卤直营经销商数据
*/
@Override
public void putDealersOrg() {
qinceDealerDao.updateOrg();
}
private boolean booleanDealersPage(Integer pageNum){
Map<String, Object> params = qinCeUtils.queryDealerParam(pageNum); Map<String, Object> params = qinCeUtils.queryDealerParam(pageNum);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_DEALER, params); String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_DEALER, params);
...@@ -148,36 +157,42 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -148,36 +157,42 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
return false; return false;
} }
List<Object> dealerJsons = new ArrayList<>(1500); List<Object> dealerAddJsons = new ArrayList<>(1500);
Map<Object,Object> dealers = new HashMap<>(1500); Map<Object,Object> dealers = new HashMap<>(1500);
for (int index = 0; index < responseDatas.size(); index++) { for (int index = 0; index < responseDatas.size(); index++) {
JSONObject jsonObject = responseDatas.getJSONObject(index); JSONObject jsonObject = responseDatas.getJSONObject(index);
// 判断经销商是否有id,没有id则使用code
String dealerId = jsonObject.getString("dealer_id"); String dealerId = jsonObject.getString("dealer_id");
if (Objects.isNull(dealerId)){ if (Objects.isNull(dealerId)){
dealerId = jsonObject.getString("dealer_code"); dealerId = jsonObject.getString("dealer_code");
jsonObject.put("dealer_id",dealerId); jsonObject.put("dealer_id",dealerId);
} }
if (StringUtils.isBlank(dealerId)|| dealerIdsR.contains(dealerId)){ // id、code都为空,跳过
if (StringUtils.isBlank(dealerId)){
continue; continue;
} }
dealerJsons.add(jsonObject); dealerAddJsons.add(jsonObject);
dealers.put(dealerId,jsonObject.getString("dealer_name"));
// 如果经销商不是合作中,则不存在到redis中
String dealerCooperateStatus = jsonObject.getString("dealer_cooperate_status");
if (Objects.nonNull(dealerCooperateStatus) && "1".equals(dealerCooperateStatus)){
dealers.put(dealerId,jsonObject.getString("dealer_name"));
}
} }
// 未新增数据不保存 // 未新增数据不保存
if (CollectionUtils.isEmpty(dealerJsons)){ if (CollectionUtils.isEmpty(dealerAddJsons)){
return true; return true;
} }
log.info("勤策-经销商新增,第{}页数据「{}」条", pageNum, dealerJsons.size());
qinceDealerDao.saveList(dealerJsons); log.info("勤策-经销商更新,第{}页数据「{}」条", pageNum, dealerAddJsons.size());
qinceDealerDao.saveList(dealerAddJsons);
redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers); redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers);
return true; return true;
} }
private boolean booleanshopDetailPage(Integer pageNum) { private boolean booleanshopDetailPage(Integer pageNum) {
Map<String, Object> params = qinCeUtils.queryShopParam(pageNum); Map<String, Object> params = qinCeUtils.queryShopParam(pageNum);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_SHORE, params); String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_SHORE, params);
...@@ -186,11 +201,11 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -186,11 +201,11 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
JSONObject resultJson = OkHttp.postQC(url, params); JSONObject resultJson = OkHttp.postQC(url, params);
JSONArray responseDatas = resultJson.getJSONArray("response_data"); JSONArray responseDatas = resultJson.getJSONArray("response_data");
if (responseDatas.size() <= 0) { if (responseDatas.size() <= 0) {
log.info("勤策-同步一周内修改过的终端store数据,第{}页未查询到数据",pageNum); log.info("勤策-同步终端数据,第{}页未查询到数据",pageNum);
return false; return false;
} }
log.info("勤策-同步一周内修改过的终端store数据,第{}页数据「{}」条", pageNum, responseDatas.size()); log.info("勤策-同步终端数据,,第{}页数据「{}」条", pageNum, responseDatas.size());
qinCeClienteleShopDao.shopDetailAllTask(responseDatas); qinCeClienteleShopDao.shopDetailAllTask(responseDatas);
// promotionStoreDao.qinceShopDetailAllTask(responseDatas); // promotionStoreDao.qinceShopDetailAllTask(responseDatas);
return true; return true;
......
...@@ -84,9 +84,8 @@ public class QinCeUtils { ...@@ -84,9 +84,8 @@ public class QinCeUtils {
*/ */
public Map<String, Object> queryOrgParam() { public Map<String, Object> queryOrgParam() {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
// DateTime dateTime = DateUtil.offsetDay(new Date(), -1); DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
// params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN)); params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
params.put("modify_date", "");
return params; return params;
} }
...@@ -99,9 +98,8 @@ public class QinCeUtils { ...@@ -99,9 +98,8 @@ public class QinCeUtils {
if (queryId) { if (queryId) {
params.put("id", ""); params.put("id", "");
} }
// DateTime dateTime = DateUtil.offsetDay(new Date(), -1); DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
// params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN)); params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
params.put("modify_date", "");
return params; return params;
} }
...@@ -113,7 +111,8 @@ public class QinCeUtils { ...@@ -113,7 +111,8 @@ public class QinCeUtils {
// 分页页码,默认1 // 分页页码,默认1
params.put("page_number", pageNum); params.put("page_number", pageNum);
// 查询指定数据 params.put("store_code", "POS00040423"); after_modify_date:查询更新时间(2小时之内)的门店数据。格式:yyyy-MM-dd HH:mm:SS // 查询指定数据 params.put("store_code", "POS00040423"); after_modify_date:查询更新时间(2小时之内)的门店数据。格式:yyyy-MM-dd HH:mm:SS
DateTime dateTime = DateUtil.offsetDay(new Date(), -1); // DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
DateTime dateTime = DateUtil.offsetHour(new Date(), -1);
params.put("after_modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATETIME_PATTERN)); params.put("after_modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATETIME_PATTERN));
return params; return params;
} }
......
...@@ -26,37 +26,37 @@ public class XxlJobHandler { ...@@ -26,37 +26,37 @@ public class XxlJobHandler {
/** /**
* 同步组织架构/部门数据 * t-1更新的组织架构/部门数据
* 每2小时同步修改日期为今天的数据
*/ */
@XxlJob("qince_department_task") @XxlJob("qince_department_task")
public void departmentSyncTask(){ public void departmentSyncTask(){
log.info("[xxl-job] start === 同步全量勤策部门数据"); log.info("[xxl-job] start === 同步昨日修改过的勤策部门数据");
qinCeDataTaskService.departmentSyncTask(); qinCeDataTaskService.departmentSyncTask();
log.info("[xxl-job] end === 同步全量勤策部门数据"); log.info("[xxl-job] end === 同步昨日修改过的勤策部门数据");
log.info("[xxl-job] start === 更新经销商所属战区、大区信息");
qinCeDataTaskService.putDealersOrg();
log.info("[xxl-job] end === 更新经销商所属战区、大区信息");
} }
/** /**
* 同步员工数据 * t-1更新的员工数据
* 每2小时同步修改日期为今天的数据
*/ */
@XxlJob("qince_employee_task") @XxlJob("qince_employee_task")
public void employeeSyncTask(){ public void employeeSyncTask(){
log.info("[xxl-job] start === 同步全量员工数据"); log.info("[xxl-job] start === 同步昨日修改过的员工数据");
qinCeDataTaskService.employeeSyncTask(); qinCeDataTaskService.employeeSyncTask();
log.info("[xxl-job] end === 同步全量员工修改数据"); log.info("[xxl-job] end === 同步昨日修改过的员工修改数据");
} }
/** /**
* 同步[终端数据] * 1小时内修改过的终端数据
* 近2日内有更新的终端
* 0 0 0
*/ */
@XxlJob("qince_shop_task") @XxlJob("qince_shop_task")
public void shopDetailAllTask(){ public void shopDetailAllTask(){
log.info("[xxl-job] start === 同步近1日内终端数据"); log.info("[xxl-job] start === 同步1小时内终端数据");
qinCeDataTaskService.shopDetailAllTask(); qinCeDataTaskService.shopDetailAllTask();
log.info("[xxl-job] end === 同步近1内终端数据"); log.info("[xxl-job] end === 同步近1小时内终端数据");
} }
/** /**
...@@ -85,14 +85,13 @@ public class XxlJobHandler { ...@@ -85,14 +85,13 @@ public class XxlJobHandler {
/** /**
* 同步[经销商列表] * 同步[经销商列表]
* 近1日内更新的经销商 * t-1更新的经销商
* 0 0 2
*/ */
@XxlJob("qince_dealers") @XxlJob("qince_dealers")
public void dealersTask(){ public void dealersTask(){
log.info("[xxl-job] start === 同步近1日内经销商"); log.info("[xxl-job] start === 同步昨日经销商");
qinCeDataTaskService.productDealers(); qinCeDataTaskService.productDealers();
log.info("[xxl-job] end === 同步近1日内经销商"); log.info("[xxl-job] end === 同步昨日经销商");
} }
} }
...@@ -85,7 +85,7 @@ xxl: ...@@ -85,7 +85,7 @@ xxl:
port: 9998 port: 9998
logretentiondays: 30 logretentiondays: 30
address: address:
ip: ip: 192.168.0.4
logpath: /var/logs/xxl_job # 执行器日志路径 logpath: /var/logs/xxl_job # 执行器日志路径
......
...@@ -93,7 +93,7 @@ xxl: ...@@ -93,7 +93,7 @@ xxl:
port: 9997 port: 9997
logretentiondays: 30 logretentiondays: 30
address: address:
ip: ip: 192.168.100.39
logpath: /var/logs/xxl_job logpath: /var/logs/xxl_job
aliyun: aliyun:
......
...@@ -18,17 +18,73 @@ ...@@ -18,17 +18,73 @@
<insert id="saveList"> <insert id="saveList">
insert into qince_dealer insert into qince_dealer
(dealer_id, dealer_name, dealer_cooperate_status, create_time,dealer_dept_waiqin365_id,dealer_dept_name) (dealer_id, dealer_name, dealer_cooperate_status, create_time,dealer_dept_waiqin365_id,dealer_dept_name,dealer_type,dealer_status)
VALUES VALUES
<foreach collection="dealerJsons" item="item" separator=","> <foreach collection="dealerJsons" item="item" separator=",">
(#{item.dealer_id}, #{item.dealer_name}, (#{item.dealer_id}, #{item.dealer_name},
#{item.dealer_cooperate_status},#{item.create_time},#{item.dealer_dept_waiqin365_id},#{item.dealer_dept_name}) #{item.dealer_cooperate_status},#{item.create_time},#{item.dealer_dept_waiqin365_id},#{item.dealer_dept_name},#{item.dealer_type},#{item.dealer_status})
</foreach> </foreach>
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
dealer_name = values(dealer_name), dealer_name = values(dealer_name),
dealer_cooperate_status = values(dealer_cooperate_status), dealer_cooperate_status = values(dealer_cooperate_status),
dealer_dept_waiqin365_id = values(dealer_dept_waiqin365_id), dealer_dept_waiqin365_id = values(dealer_dept_waiqin365_id),
dealer_dept_name = values(dealer_dept_name); dealer_dept_name = values(dealer_dept_name),
dealer_type = values(dealer_type),
dealer_status = values(dealer_status);
</insert> </insert>
<update id="updateOrg">
update qince_dealer de
inner join qince_department dept
set de.zq_org_qc_id = dept.waiqin365_parent_id,
de.zq_org_name = dept.parent_name
where de.dealer_dept_waiqin365_id = dept.qc_id
and de.dealer_cooperate_status = 1
and de.dealer_status = 1
and de.dealer_type = '经销商'
and de.dealer_dept_name = de.dealer_name;
</update>
<update id="updateOrgZY">
update qince_dealer
set zq_org_qc_id = dealer_dept_waiqin365_id,
zq_org_name=dealer_dept_name
where dealer_cooperate_status = 1
and dealer_status = 1
and dealer_type = '经销商'
and dealer_name like '王小卤直营%';
</update>
<update id="updateParentOrg">
update qince_dealer de inner join qince_department dept
set dq_org_qc_id = dept.waiqin365_parent_id,
dq_org_name = dept.parent_name
where de.zq_org_qc_id = dept.qc_id
and de.dealer_cooperate_status = 1
and de.dealer_status = 1
and de.dealer_type = '经销商'
and de.dealer_dept_name = de.dealer_name
and zq_org_name != '重客销售部'
</update>
<update id="updateParentOrgZK">
update qince_dealer
set dq_org_qc_id = zq_org_qc_id,
dq_org_name = zq_org_name
where dealer_cooperate_status = 1
and dealer_status = 1
and dealer_type = '经销商'
and zq_org_name = '重客销售部';
</update>
<update id="updateParentOrgZY">
update qince_dealer de inner join qince_department dept
set dq_org_qc_id = dept.waiqin365_parent_id,
dq_org_name = dept.parent_name
where de.zq_org_qc_id = dept.qc_id
and de.dealer_cooperate_status = 1
and de.dealer_status = 1
and de.dealer_type = '经销商'
and dealer_name like '王小卤直营%';
</update>
</mapper> </mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论