提交 2ed93e0f 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/284?initial=true
......@@ -21,4 +21,7 @@ public interface QinceDealerDao {
Map<Object,Object> selectAll();
List<QinCeDealerDto> selectList(DealerWrapper dw);
void updateOrg();
}
......@@ -55,7 +55,6 @@ public class QinCeDepartmentDaoImpl implements QinCeDepartmentDao {
}
}
}
@Override
......
......@@ -33,7 +33,6 @@ public class QinceDealerDaoImpl implements QinceDealerDao {
public void saveList(List<Object> dealerJsons) {
// 目前没有查重逻辑,只在前边判断逻辑中判断是否新增
qinceDealerMapper.saveList(dealerJsons);
log.info("勤策同步经销商,新增数量:{}",dealerJsons.size());
}
@Override
......@@ -77,6 +76,34 @@ public class QinceDealerDaoImpl implements QinceDealerDao {
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 (单个对象)
*
......
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.wangxiaolu.promotion.domain.user.mapper.entity.QinceDealerDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.STRowID;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author a02200059
......@@ -23,6 +20,15 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealerDO> {
void saveList(@Param("dealerJsons") List<Object> dealerJsons);
void updateOrg();
void updateOrgZY();
void updateParentOrg();
void updateParentOrgZY();
void updateParentOrgZK();
}
......
......@@ -17,4 +17,6 @@ public interface QinCeDataTaskService {
void productAllTask();
void productDealers();
void putDealersOrg();
}
......@@ -61,7 +61,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
return;
}
qinCeDepartmentDao.departmentSyncTask(responseDatas);
}
@Override
......@@ -122,23 +121,33 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
@Transactional(rollbackFor = Exception.class)
@Override
public void productDealers() {
Set<Object> dealerIdsR = redisCache.getHashKeys(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey());
if (CollectionUtils.isEmpty(dealerIdsR)){
// 将数据库中的经销商保存到redis中
Map<Object, Object> dealers = qinceDealerDao.selectAll();
dealerIdsR = dealers.keySet();
redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers);
}
// Set<Object> dealerIdsR = redisCache.getHashKeys(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey());
// if (CollectionUtils.isEmpty(dealerIdsR)){
// // 将数据库中的经销商保存到redis中
// Map<Object, Object> dealers = qinceDealerDao.selectAll();
// dealerIdsR = dealers.keySet();
// redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers);
// }
int i = 0;
boolean nextPage = true;
while (nextPage) {
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);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_DEALER, params);
......@@ -148,36 +157,42 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
return false;
}
List<Object> dealerJsons = new ArrayList<>(1500);
List<Object> dealerAddJsons = new ArrayList<>(1500);
Map<Object,Object> dealers = new HashMap<>(1500);
for (int index = 0; index < responseDatas.size(); index++) {
JSONObject jsonObject = responseDatas.getJSONObject(index);
// 判断经销商是否有id,没有id则使用code
String dealerId = jsonObject.getString("dealer_id");
if (Objects.isNull(dealerId)){
dealerId = jsonObject.getString("dealer_code");
jsonObject.put("dealer_id",dealerId);
}
if (StringUtils.isBlank(dealerId)|| dealerIdsR.contains(dealerId)){
// id、code都为空,跳过
if (StringUtils.isBlank(dealerId)){
continue;
}
dealerJsons.add(jsonObject);
dealers.put(dealerId,jsonObject.getString("dealer_name"));
dealerAddJsons.add(jsonObject);
// 如果经销商不是合作中,则不存在到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;
}
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);
return true;
}
private boolean booleanshopDetailPage(Integer pageNum) {
Map<String, Object> params = qinCeUtils.queryShopParam(pageNum);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_SHORE, params);
......
......@@ -84,9 +84,8 @@ public class QinCeUtils {
*/
public Map<String, Object> queryOrgParam() {
Map<String, Object> params = new HashMap<>();
// DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
// params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
params.put("modify_date", "");
DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
return params;
}
......@@ -99,9 +98,8 @@ public class QinCeUtils {
if (queryId) {
params.put("id", "");
}
// DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
// params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
params.put("modify_date", "");
DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
params.put("modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
return params;
}
......@@ -113,7 +111,8 @@ public class QinCeUtils {
// 分页页码,默认1
params.put("page_number", pageNum);
// 查询指定数据 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));
return params;
}
......
......@@ -26,37 +26,37 @@ public class XxlJobHandler {
/**
* 同步组织架构/部门数据
* 每2小时同步修改日期为今天的数据
* t-1更新的组织架构/部门数据
*/
@XxlJob("qince_department_task")
public void departmentSyncTask(){
log.info("[xxl-job] start === 同步全量勤策部门数据");
log.info("[xxl-job] start === 同步昨日修改过的勤策部门数据");
qinCeDataTaskService.departmentSyncTask();
log.info("[xxl-job] end === 同步全量勤策部门数据");
log.info("[xxl-job] end === 同步昨日修改过的勤策部门数据");
log.info("[xxl-job] start === 更新经销商所属战区、大区信息");
qinCeDataTaskService.putDealersOrg();
log.info("[xxl-job] end === 更新经销商所属战区、大区信息");
}
/**
* 同步员工数据
* 每2小时同步修改日期为今天的数据
* t-1更新的员工数据
*/
@XxlJob("qince_employee_task")
public void employeeSyncTask(){
log.info("[xxl-job] start === 同步全量员工数据");
log.info("[xxl-job] start === 同步昨日修改过的员工数据");
qinCeDataTaskService.employeeSyncTask();
log.info("[xxl-job] end === 同步全量员工修改数据");
log.info("[xxl-job] end === 同步昨日修改过的员工修改数据");
}
/**
* 同步[终端数据]
* 近2日内有更新的终端
* 0 0 0
* 1小时内修改过的终端数据
*/
@XxlJob("qince_shop_task")
public void shopDetailAllTask(){
log.info("[xxl-job] start === 同步近1日内终端数据");
log.info("[xxl-job] start === 同步1小时内终端数据");
qinCeDataTaskService.shopDetailAllTask();
log.info("[xxl-job] end === 同步近1内终端数据");
log.info("[xxl-job] end === 同步近1小时内终端数据");
}
/**
......@@ -85,14 +85,13 @@ public class XxlJobHandler {
/**
* 同步[经销商列表]
* 近1日内更新的经销商
* 0 0 2
* t-1更新的经销商
*/
@XxlJob("qince_dealers")
public void dealersTask(){
log.info("[xxl-job] start === 同步近1日内经销商");
log.info("[xxl-job] start === 同步昨日经销商");
qinCeDataTaskService.productDealers();
log.info("[xxl-job] end === 同步近1日内经销商");
log.info("[xxl-job] end === 同步昨日经销商");
}
}
......@@ -85,7 +85,7 @@ xxl:
port: 9998
logretentiondays: 30
address:
ip:
ip: 192.168.0.4
logpath: /var/logs/xxl_job # 执行器日志路径
......
......@@ -18,17 +18,73 @@
<insert id="saveList">
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
<foreach collection="dealerJsons" item="item" separator=",">
(#{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>
ON DUPLICATE KEY UPDATE
dealer_name = values(dealer_name),
dealer_cooperate_status = values(dealer_cooperate_status),
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>
<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>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论