提交 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 {
List<JSONObject> dealers = qinCeShopDO.getDealers();
if (!CollectionUtils.isEmpty(dealers)){
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());
......@@ -97,7 +97,8 @@ public class QinCeClienteleStoreDaoImpl implements QinCeClienteleStoreDao {
qw.select(QinCeClienteleStoreDO::getQcId,
QinCeClienteleStoreDO::getStoreName,
QinCeClienteleStoreDO::getStoreAddr,
QinCeClienteleStoreDO::getDealersName);
QinCeClienteleStoreDO::getDealersName,
QinCeClienteleStoreDO::getDealerId);
QinCeClienteleStoreDO qinCeClienteleStoreDO = qinCeClienteleStoreMapper.selectOne(qw);
return transitionDto(qinCeClienteleStoreDO);
......
......@@ -31,7 +31,7 @@ public class QinceDealerDaoImpl implements QinceDealerDao {
@Override
public void saveList(List<Object> dealerJsons) {
// 目前没有查重逻辑,只在前边判断逻辑中进行新增
// 目前没有查重逻辑,只在前边判断逻辑中判断是否新增
qinceDealerMapper.saveList(dealerJsons);
log.info("勤策同步经销商,新增数量:{}",dealerJsons.size());
}
......
......@@ -25,4 +25,5 @@ public class QinCeClienteleStoreDto {
private String storeAddr;
private String dealersName;
private String dealerId;
}
......@@ -282,31 +282,29 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
sb.append("系统名称不可为空;");
}
String dealerId = ((String) value.get(1)).trim();
if (StringUtils.isBlank(dealerId)) {
sb.append("经销商编码不可为空;");
dealerId = "";
}
String qinceStoreCode = (String) value.get(3);
String storeName = (String) value.get(4);
if (StringUtils.isBlank(qinceStoreCode)) {
sb.append("勤策店铺编码不可为空;");
if (StringUtils.isBlank(storeName)) {
sb.append("店铺名称不可为空;");
}
if (StringUtils.isBlank(storeName) || StringUtils.isBlank(qinceStoreCode)) {
sb.append("店铺编码/名称不可为空;");
} else {
// 验证店铺code是否存在
StoreWrapper storeWrap = new StoreWrapper()
.setStoreCode(qinceStoreCode);
StoreWrapper storeWrap = new StoreWrapper().setStoreCode(qinceStoreCode);
QinCeClienteleStoreDto oneStore = qinCeClienteleStoreDao.getOneStore(storeWrap);
if (ObjectUtil.isEmpty(oneStore)) {
sb.append("勤策店铺编码不正确;");
} else {
if (StringUtils.isBlank(storeName)) {
sb.append("勤策店铺名称不可为空;");
} else if (!storeName.equals(oneStore.getStoreName())) {
sb.append("勤策店铺编码/名称不正确;");
if (!storeName.equals(oneStore.getStoreName())) {
sb.append("店铺名称不正确;");
}
String dealersName = oneStore.getDealersName();
String dealerId = ((String) value.get(1)).trim();
if (!dealers.containsKey(dealerId) || !dealers.get(dealerId).equals(dealersName)) {
sb.append("店铺不归属此经销商;");
if (!dealerId.equals(oneStore.getDealerId())) {
sb.append("经销商编码不正确;");
}
}
}
......@@ -362,43 +360,38 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
employeeNos.add((String) value.get(1));
}
// if (!dealers.containsKey(((String) value.get(2)).trim())) {
// sb.append("经销商编码错误;");
// }
if (StringUtils.isBlank((String) value.get(3))) {
sb.append("系统名称不可为空;");
}
String dealerId = ((String) value.get(2)).trim();
if (StringUtils.isBlank(dealerId)) {
sb.append("经销商编码不可为空;");
dealerId = "";
}
String qinceStoreCode = (String) value.get(4);
String storeName = (String) value.get(5);
if (StringUtils.isBlank(qinceStoreCode)) {
sb.append("勤策店铺编码不可为空;");
if (StringUtils.isBlank(storeName)) {
sb.append("店铺名称不可为空;");
}
if (StringUtils.isBlank(storeName) || StringUtils.isBlank(qinceStoreCode)) {
sb.append("店铺编码/名称不可为空;");
} else {
// 验证店铺code是否存在
StoreWrapper storeWrap = new StoreWrapper()
.setStoreCode(qinceStoreCode);
StoreWrapper storeWrap = new StoreWrapper().setStoreCode(qinceStoreCode);
QinCeClienteleStoreDto oneStore = qinCeClienteleStoreDao.getOneStore(storeWrap);
if (ObjectUtil.isEmpty(oneStore)) {
sb.append("勤策店铺编码不正确;");
} else {
if (StringUtils.isBlank(storeName)) {
sb.append("勤策店铺名称不可为空;");
} else if (!storeName.equals(oneStore.getStoreName())) {
sb.append("勤策店铺编码/名称不正确;");
if (!storeName.equals(oneStore.getStoreName())) {
sb.append("店铺名称不正确;");
}
String dealersName = oneStore.getDealersName();
String dealerId = ((String) value.get(2)).trim();
if (!dealers.containsKey(dealerId) || !dealers.get(dealerId).equals(dealersName)) {
sb.append("店铺不归属此经销商;");
if (!dealerId.equals(oneStore.getDealerId())) {
sb.append("经销商编码不正确;");
}
}
}
String pattern = (String) value.get(6);
if (StringUtils.isBlank(pattern)) {
sb.append("活动模式不可为空;");
......
......@@ -69,7 +69,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
// 查询组织架构参数、创建url
Map<String, Object> params = qinCeUtils.queryEmployeeParam(false);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_EMPLOYEE, params);
System.out.println(url);
// 发起请求、接收结果
JSONObject resultJson = OkHttp.postQC(url, params);
JSONArray responseDatas = resultJson.getJSONArray("response_data");
......@@ -145,7 +144,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
JSONObject resultJson = OkHttp.postQC(url, params);
JSONArray responseDatas = resultJson.getJSONArray("response_data");
log.info("勤策-查询一周内修改过的经销商,第{}页数据「{}」条", pageNum, responseDatas.size());
if (responseDatas.size() <= 0) {
return false;
}
......@@ -156,7 +154,11 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
for (int index = 0; index < responseDatas.size(); index++) {
JSONObject jsonObject = responseDatas.getJSONObject(index);
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;
}
dealerJsons.add(jsonObject);
......@@ -167,7 +169,7 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
if (CollectionUtils.isEmpty(dealerJsons)){
return true;
}
log.info("勤策-同步一周内修改过的经销商,第{}页数据「{}」条", pageNum, dealerJsons.size());
log.info("勤策-经销商新增,第{}页数据「{}」条", pageNum, dealerJsons.size());
qinceDealerDao.saveList(dealerJsons);
redisCache.putAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey(),dealers);
return true;
......@@ -177,7 +179,6 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
private boolean booleanshopDetailPage(Integer pageNum) {
// 查找一周内修改或新增的数据
Map<String, Object> params = qinCeUtils.queryShopParam(pageNum);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_SHORE, params);
......@@ -191,7 +192,7 @@ public class QinCeDataTaskServiceImpl implements QinCeDataTaskService {
log.info("勤策-同步一周内修改过的终端store数据,第{}页数据「{}」条", pageNum, responseDatas.size());
qinCeClienteleShopDao.shopDetailAllTask(responseDatas);
promotionStoreDao.qinceShopDetailAllTask(responseDatas);
// promotionStoreDao.qinceShopDetailAllTask(responseDatas);
return true;
}
}
......@@ -110,10 +110,9 @@ public class QinCeUtils {
HashMap<String, Object> params = new HashMap<>();
// 分页页码,默认1
params.put("page_number", pageNum);
// 记录状态。0:已删除(客户回收站中的终端数据),1:正常
// params.put("status", "1");
// after_modify_date:更新时间之后,查询更新时间之后的门店数据。格式:yyyy-MM-dd HH:mm:SS
DateTime dateTime = DateUtil.offsetDay(new Date(), -7);
// after_modify_date:更新时间之后,查询更新时间之后的门店数据。格式:yyyy-MM-dd HH:mm:SS
DateTime dateTime = DateUtil.offsetDay(new Date(), -2);
params.put("after_modify_date", DateUtil.format(dateTime, DatePattern.NORM_DATETIME_PATTERN));
return params;
}
......@@ -158,10 +157,11 @@ public class QinCeUtils {
public Map<String, Object> queryDealerParam(Integer pageNum) {
Map<String, Object> params = new HashMap<>();
params.put("page_number", pageNum);
// 记录状态。0:已删除,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));
return params;
}
......
......@@ -51,7 +51,7 @@ public class XxlJobHandler {
/**
* 同步[终端数据]
* 7日内有更新的终端
* 近2日内有更新的终端
* 0 0 0
*/
@XxlJob("qince_shop_task")
......@@ -87,6 +87,7 @@ public class XxlJobHandler {
/**
* 同步[经销商列表]
* 近2日内更新的经销商
* 0 0 2
*/
@XxlJob("qince_dealers")
......
......@@ -85,11 +85,11 @@ xxl:
job:
accessToken: default_token
admin:
addresses: http://42.193.103.153:9001/xxl-job-admin
addresses: http://192.168.100.38:9001/xxl-job-admin
executor:
appname: promotion-dev
port: 9999
port: 9996
logretentiondays: 30
address:
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 @@
(#{item.dealer_id}, #{item.dealer_name},
#{item.dealer_cooperate_status},#{item.create_time})
</foreach>
ON DUPLICATE KEY UPDATE
dealer_name = values(dealer_name),
dealer_cooperate_status = values(dealer_cooperate_status);
</insert>
</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.*;
@RunWith(SpringRunner.class)
class ActivityTypeXxlJobHandlerTest {
@Autowired
ActivityTypeXxlJobHandler activityTypeXxlJobHandler;
@Test
void activityTypePattern() {
activityTypeXxlJobHandler.activityTypePattern();
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论