提交 4d065995 authored 作者: 000516's avatar 000516 提交者: Coding

终端门店目前无用信息删除,门店绑定经销商信息由qc_id改为编码;

1、删除部分单元测试; 2、修改本地连接xxljob配置; 3、重新拉取经销商、终端门店; 4、终端门店目前无用信息删除,门店绑定经销商信息由qc_id改为编码;
package com.wangxiaolu.promotion.controller.user.qince;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.service.user.QinCeDataTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author : liqiulin
* @date : 2024-03-29 16
* @describe : 勤策同步数据接口
*/
@RestController
@RequestMapping("/user/qince/task")
public class QinCeDataTaskController {
@Autowired
QinCeDataTaskService qinCeDataTaskService;
/**
* 同步组织架构/部门数据
*/
@GetMapping("/department")
public R departmentTask(){
qinCeDataTaskService.departmentSyncTask();
return R.success();
}
/**
* 同步员工数据
*/
@GetMapping("/employee")
public R employeeTask(){
qinCeDataTaskService.employeeSyncTask();
return R.success();
}
/**
* 同步[终端数据]
*/
@GetMapping("/shops")
public R shopDetailAllTask(){
qinCeDataTaskService.shopDetailAllTask();
return R.success();
}
/**
* 同步商品类型
*/
@GetMapping("/product/type")
public R productQueryPdTypeAllTask(){
qinCeDataTaskService.productQueryPdTypeAllTask();
return R.success();
}
/**
* 同步商品数据
*/
@GetMapping("/product")
public R productAllTask(){
qinCeDataTaskService.productAllTask();
return R.success();
}
/**
* 同步经销商数据
*/
@GetMapping("/dealers")
public R productDealers(){
qinCeDataTaskService.productDealers();
return R.success();
}
}
...@@ -50,7 +50,7 @@ public class QinCeClienteleStoreDaoImpl implements QinCeClienteleStoreDao { ...@@ -50,7 +50,7 @@ public class QinCeClienteleStoreDaoImpl implements QinCeClienteleStoreDao {
List<JSONObject> dealers = qinCeShopDO.getDealers(); List<JSONObject> dealers = qinCeShopDO.getDealers();
if (!CollectionUtils.isEmpty(dealers)){ if (!CollectionUtils.isEmpty(dealers)){
qinCeShopDO.setDealersName(dealers.get(0).getString("dealer_name")); qinCeShopDO.setDealersName(dealers.get(0).getString("dealer_name"));
qinCeShopDO.setWaiqin365DealersId(dealers.get(0).getString("waiqin365_dealer_id")); qinCeShopDO.setDealerId(dealers.get(0).getString("dealer_code"));
} }
qw.eq(QinCeClienteleStoreDO::getQcId, qinCeShopDO.getQcId()); qw.eq(QinCeClienteleStoreDO::getQcId, qinCeShopDO.getQcId());
...@@ -97,7 +97,8 @@ public class QinCeClienteleStoreDaoImpl implements QinCeClienteleStoreDao { ...@@ -97,7 +97,8 @@ public class QinCeClienteleStoreDaoImpl implements QinCeClienteleStoreDao {
qw.select(QinCeClienteleStoreDO::getQcId, qw.select(QinCeClienteleStoreDO::getQcId,
QinCeClienteleStoreDO::getStoreName, QinCeClienteleStoreDO::getStoreName,
QinCeClienteleStoreDO::getStoreAddr, QinCeClienteleStoreDO::getStoreAddr,
QinCeClienteleStoreDO::getDealersName); QinCeClienteleStoreDO::getDealersName,
QinCeClienteleStoreDO::getDealerId);
QinCeClienteleStoreDO qinCeClienteleStoreDO = qinCeClienteleStoreMapper.selectOne(qw); QinCeClienteleStoreDO qinCeClienteleStoreDO = qinCeClienteleStoreMapper.selectOne(qw);
return transitionDto(qinCeClienteleStoreDO); return transitionDto(qinCeClienteleStoreDO);
......
...@@ -31,7 +31,7 @@ public class QinceDealerDaoImpl implements QinceDealerDao { ...@@ -31,7 +31,7 @@ public class QinceDealerDaoImpl implements QinceDealerDao {
@Override @Override
public void saveList(List<Object> dealerJsons) { public void saveList(List<Object> dealerJsons) {
// 目前没有查重逻辑,只在前边判断逻辑中进行新增 // 目前没有查重逻辑,只在前边判断逻辑中判断是否新增
qinceDealerMapper.saveList(dealerJsons); qinceDealerMapper.saveList(dealerJsons);
log.info("勤策同步经销商,新增数量:{}",dealerJsons.size()); log.info("勤策同步经销商,新增数量:{}",dealerJsons.size());
} }
......
...@@ -25,4 +25,5 @@ public class QinCeClienteleStoreDto { ...@@ -25,4 +25,5 @@ public class QinCeClienteleStoreDto {
private String storeAddr; private String storeAddr;
private String dealersName; private String dealersName;
private String dealerId;
} }
...@@ -282,31 +282,29 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore ...@@ -282,31 +282,29 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
sb.append("系统名称不可为空;"); sb.append("系统名称不可为空;");
} }
String dealerId = ((String) value.get(1)).trim();
if (StringUtils.isBlank(dealerId)) {
sb.append("经销商编码不可为空;");
dealerId = "";
}
String qinceStoreCode = (String) value.get(3); String qinceStoreCode = (String) value.get(3);
String storeName = (String) value.get(4); String storeName = (String) value.get(4);
if (StringUtils.isBlank(qinceStoreCode)) { if (StringUtils.isBlank(storeName) || StringUtils.isBlank(qinceStoreCode)) {
sb.append("勤策店铺编码不可为空;"); sb.append("店铺编码/名称不可为空;");
if (StringUtils.isBlank(storeName)) {
sb.append("店铺名称不可为空;");
}
} else { } else {
// 验证店铺code是否存在 // 验证店铺code是否存在
StoreWrapper storeWrap = new StoreWrapper() StoreWrapper storeWrap = new StoreWrapper().setStoreCode(qinceStoreCode);
.setStoreCode(qinceStoreCode);
QinCeClienteleStoreDto oneStore = qinCeClienteleStoreDao.getOneStore(storeWrap); QinCeClienteleStoreDto oneStore = qinCeClienteleStoreDao.getOneStore(storeWrap);
if (ObjectUtil.isEmpty(oneStore)) { if (ObjectUtil.isEmpty(oneStore)) {
sb.append("勤策店铺编码不正确;"); sb.append("勤策店铺编码不正确;");
} else { } else {
if (StringUtils.isBlank(storeName)) { if (!storeName.equals(oneStore.getStoreName())) {
sb.append("勤策店铺名称不可为空;"); sb.append("店铺名称不正确;");
} else if (!storeName.equals(oneStore.getStoreName())) {
sb.append("勤策店铺编码/名称不正确;");
} }
String dealersName = oneStore.getDealersName(); if (!dealerId.equals(oneStore.getDealerId())) {
String dealerId = ((String) value.get(1)).trim(); sb.append("经销商编码不正确;");
if (!dealers.containsKey(dealerId) || !dealers.get(dealerId).equals(dealersName)) {
sb.append("店铺不归属此经销商;");
} }
} }
} }
...@@ -362,43 +360,38 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore ...@@ -362,43 +360,38 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
employeeNos.add((String) value.get(1)); employeeNos.add((String) value.get(1));
} }
// if (!dealers.containsKey(((String) value.get(2)).trim())) {
// sb.append("经销商编码错误;");
// }
if (StringUtils.isBlank((String) value.get(3))) { if (StringUtils.isBlank((String) value.get(3))) {
sb.append("系统名称不可为空;"); sb.append("系统名称不可为空;");
} }
String dealerId = ((String) value.get(2)).trim();
if (StringUtils.isBlank(dealerId)) {
sb.append("经销商编码不可为空;");
dealerId = "";
}
String qinceStoreCode = (String) value.get(4); String qinceStoreCode = (String) value.get(4);
String storeName = (String) value.get(5); String storeName = (String) value.get(5);
if (StringUtils.isBlank(qinceStoreCode)) { if (StringUtils.isBlank(storeName) || StringUtils.isBlank(qinceStoreCode)) {
sb.append("勤策店铺编码不可为空;"); sb.append("店铺编码/名称不可为空;");
if (StringUtils.isBlank(storeName)) {
sb.append("店铺名称不可为空;");
}
} else { } else {
// 验证店铺code是否存在 // 验证店铺code是否存在
StoreWrapper storeWrap = new StoreWrapper() StoreWrapper storeWrap = new StoreWrapper().setStoreCode(qinceStoreCode);
.setStoreCode(qinceStoreCode);
QinCeClienteleStoreDto oneStore = qinCeClienteleStoreDao.getOneStore(storeWrap); QinCeClienteleStoreDto oneStore = qinCeClienteleStoreDao.getOneStore(storeWrap);
if (ObjectUtil.isEmpty(oneStore)) { if (ObjectUtil.isEmpty(oneStore)) {
sb.append("勤策店铺编码不正确;"); sb.append("勤策店铺编码不正确;");
} else { } else {
if (StringUtils.isBlank(storeName)) { if (!storeName.equals(oneStore.getStoreName())) {
sb.append("勤策店铺名称不可为空;"); sb.append("店铺名称不正确;");
} else if (!storeName.equals(oneStore.getStoreName())) {
sb.append("勤策店铺编码/名称不正确;");
} }
String dealersName = oneStore.getDealersName(); if (!dealerId.equals(oneStore.getDealerId())) {
String dealerId = ((String) value.get(2)).trim(); sb.append("经销商编码不正确;");
if (!dealers.containsKey(dealerId) || !dealers.get(dealerId).equals(dealersName)) {
sb.append("店铺不归属此经销商;");
} }
} }
} }
String pattern = (String) value.get(6); String pattern = (String) value.get(6);
if (StringUtils.isBlank(pattern)) { if (StringUtils.isBlank(pattern)) {
sb.append("活动模式不可为空;"); sb.append("活动模式不可为空;");
......
...@@ -69,7 +69,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -69,7 +69,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
// 查询组织架构参数、创建url // 查询组织架构参数、创建url
Map<String, Object> params = qinCeUtils.queryEmployeeParam(false); Map<String, Object> params = qinCeUtils.queryEmployeeParam(false);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_EMPLOYEE, params); String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_EMPLOYEE, params);
System.out.println(url);
// 发起请求、接收结果 // 发起请求、接收结果
JSONObject resultJson = OkHttp.postQC(url, params); JSONObject resultJson = OkHttp.postQC(url, params);
JSONArray responseDatas = resultJson.getJSONArray("response_data"); JSONArray responseDatas = resultJson.getJSONArray("response_data");
...@@ -145,7 +144,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -145,7 +144,6 @@ 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");
log.info("勤策-查询一周内修改过的经销商,第{}页数据「{}」条", pageNum, responseDatas.size());
if (responseDatas.size() <= 0) { if (responseDatas.size() <= 0) {
return false; return false;
} }
...@@ -156,7 +154,11 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -156,7 +154,11 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
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);
String dealerId = jsonObject.getString("dealer_id"); String dealerId = jsonObject.getString("dealer_id");
if (StringUtils.isBlank(dealerId)|| (dealerId.length() != 6) || dealerIdsR.contains(dealerId)){ if (Objects.isNull(dealerId)){
dealerId = jsonObject.getString("dealer_code");
jsonObject.put("dealer_id",dealerId);
}
if (StringUtils.isBlank(dealerId)|| dealerIdsR.contains(dealerId)){
continue; continue;
} }
dealerJsons.add(jsonObject); dealerJsons.add(jsonObject);
...@@ -167,7 +169,7 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -167,7 +169,7 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
if (CollectionUtils.isEmpty(dealerJsons)){ if (CollectionUtils.isEmpty(dealerJsons)){
return true; return true;
} }
log.info("勤策-同步一周内修改过的经销商,第{}页数据「{}」条", pageNum, dealerJsons.size()); log.info("勤策-经销商新增,第{}页数据「{}」条", pageNum, dealerJsons.size());
qinceDealerDao.saveList(dealerJsons); qinceDealerDao.saveList(dealerJsons);
redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers); redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers);
return true; return true;
...@@ -177,7 +179,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -177,7 +179,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
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);
...@@ -191,7 +192,7 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService { ...@@ -191,7 +192,7 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
log.info("勤策-同步一周内修改过的终端store数据,第{}页数据「{}」条", pageNum, responseDatas.size()); log.info("勤策-同步一周内修改过的终端store数据,第{}页数据「{}」条", pageNum, responseDatas.size());
qinCeClienteleShopDao.shopDetailAllTask(responseDatas); qinCeClienteleShopDao.shopDetailAllTask(responseDatas);
promotionStoreDao.qinceShopDetailAllTask(responseDatas); // promotionStoreDao.qinceShopDetailAllTask(responseDatas);
return true; return true;
} }
} }
...@@ -110,10 +110,9 @@ public class QinCeUtils { ...@@ -110,10 +110,9 @@ public class QinCeUtils {
HashMap<String, Object> params = new HashMap<>(); HashMap<String, Object> params = new HashMap<>();
// 分页页码,默认1 // 分页页码,默认1
params.put("page_number", pageNum); params.put("page_number", pageNum);
// 记录状态。0:已删除(客户回收站中的终端数据),1:正常
// params.put("status", "1"); // after_modify_date:更新时间之后,查询更新时间之后的门店数据。格式:yyyy-MM-dd HH:mm:SS
// after_modify_date:更新时间之后,查询更新时间之后的门店数据。格式:yyyy-MM-dd HH:mm:SS DateTime dateTime = DateUtil.offsetDay(new Date(), -2);
DateTime dateTime = DateUtil.offsetDay(new Date(), -7);
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;
} }
...@@ -158,10 +157,11 @@ public class QinCeUtils { ...@@ -158,10 +157,11 @@ public class QinCeUtils {
public Map<String, Object> queryDealerParam(Integer pageNum) { public Map<String, Object> queryDealerParam(Integer pageNum) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("page_number", pageNum); params.put("page_number", pageNum);
// 记录状态。0:已删除,1:正常
params.put("status", "1"); params.put("status", "1");
// 全量数据同步后,再开启指定日期同步 // 全量数据同步后,再开启指定日期同步
DateTime dateTime = DateUtil.offsetDay(new Date(), -7); DateTime dateTime = DateUtil.offsetDay(new Date(), -2);
params.put("after_create_date", DateUtil.format(dateTime, DatePattern.NORM_DATETIME_PATTERN)); params.put("after_create_date", DateUtil.format(dateTime, DatePattern.NORM_DATETIME_PATTERN));
return params; return params;
} }
......
...@@ -51,7 +51,7 @@ public class XxlJobHandler { ...@@ -51,7 +51,7 @@ public class XxlJobHandler {
/** /**
* 同步[终端数据] * 同步[终端数据]
* 7日内有更新的终端 * 近2日内有更新的终端
* 0 0 0 * 0 0 0
*/ */
@XxlJob("qince_shop_task") @XxlJob("qince_shop_task")
...@@ -87,6 +87,7 @@ public class XxlJobHandler { ...@@ -87,6 +87,7 @@ public class XxlJobHandler {
/** /**
* 同步[经销商列表] * 同步[经销商列表]
* 近2日内更新的经销商
* 0 0 2 * 0 0 2
*/ */
@XxlJob("qince_dealers") @XxlJob("qince_dealers")
......
...@@ -85,11 +85,11 @@ xxl: ...@@ -85,11 +85,11 @@ xxl:
job: job:
accessToken: default_token accessToken: default_token
admin: admin:
addresses: http://42.193.103.153:9001/xxl-job-admin addresses: http://192.168.100.38:9001/xxl-job-admin
executor: executor:
appname: promotion-dev appname: promotion-dev
port: 9999 port: 9996
logretentiondays: 30 logretentiondays: 30
address: address:
ip: ip:
logpath: /var/logs/xxl_job # 执行器日志路径 logpath: /Users/a02200059/Desktop/wangxiaolu-sfa/log/xxl_job # 执行器日志路径
\ No newline at end of file
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
(#{item.dealer_id}, #{item.dealer_name}, (#{item.dealer_id}, #{item.dealer_name},
#{item.dealer_cooperate_status},#{item.create_time}) #{item.dealer_cooperate_status},#{item.create_time})
</foreach> </foreach>
ON DUPLICATE KEY UPDATE
dealer_name = values(dealer_name),
dealer_cooperate_status = values(dealer_cooperate_status);
</insert> </insert>
</mapper> </mapper>
package com.wangxiaolu.promotion.service.user.impl;
import com.wangxiaolu.promotion.service.user.QinCeDataTaskService;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author : liqiulin
* @date : 2025-01-02 14
* @describe :
*/
@SpringBootTest
@RunWith(SpringRunner.class)
class QinCeDataTaskServiceImplTest {
@Autowired
private QinCeDataTaskService qinCeDataTaskService;
@Test
void productDealers() {
qinCeDataTaskService.productDealers();
}
}
\ No newline at end of file
...@@ -17,11 +17,4 @@ import static org.junit.jupiter.api.Assertions.*; ...@@ -17,11 +17,4 @@ import static org.junit.jupiter.api.Assertions.*;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
class ActivityTypeXxlJobHandlerTest { class ActivityTypeXxlJobHandlerTest {
@Autowired
ActivityTypeXxlJobHandler activityTypeXxlJobHandler;
@Test
void activityTypePattern() {
activityTypeXxlJobHandler.activityTypePattern();
}
} }
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论