提交 7fbb5aec authored 作者: 李秋林's avatar 李秋林

1、开发功能:通过有效的经销商,查询有效的门店,更新门店的大区、战区、大区总监、战区经理、城市经理(经销商的客户经理);2:代码封版

上级 3f3cfd34
package com.sfa.job.domain.qince.dao;
import com.sfa.job.pojo.qince.response.QinceClienteleStoreDto;
import java.util.List;
/**
* @author : liqiulin
* @date : 2025-05-09 10
* @describe :
*/
public interface IQinceClienteleStoreDao {
List<QinceClienteleStoreDto> findListByDealerId(String dealerId);
}
...@@ -14,4 +14,5 @@ public interface IQinceDealerDao { ...@@ -14,4 +14,5 @@ public interface IQinceDealerDao {
List<QinceDealerDto> getPushQinceDealers(); List<QinceDealerDto> getPushQinceDealers();
List<QinceDealerDto> findModifyList(String dateStr);
} }
package com.sfa.job.domain.qince.dao;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.sfa.common.core.utils.bean.BeanUtils;
import com.sfa.job.domain.qince.entity.QinceClienteleStore;
import com.sfa.job.domain.qince.mapper.QinceClienteleStoreMapper;
import com.sfa.job.pojo.qince.response.QinceClienteleStoreDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author : liqiulin
* @date : 2025-05-09 10
* @describe :
*/
@DS("promotion")
@Service
public class QinceClienteleStoreDaoImpl implements IQinceClienteleStoreDao {
@Autowired
private QinceClienteleStoreMapper qinceClienteleStoreMapper;
@Override
public List<QinceClienteleStoreDto> findListByDealerId(String dealerId) {
List<QinceClienteleStore> storelist = qinceClienteleStoreMapper.findListByDealerId(dealerId);
return BeanUtils.transitionDtos(storelist, QinceClienteleStoreDto.class);
}
}
...@@ -29,4 +29,10 @@ public class QinceDealerDaoImpl implements IQinceDealerDao{ ...@@ -29,4 +29,10 @@ public class QinceDealerDaoImpl implements IQinceDealerDao{
List<QinceDealer> qinceDealers = qinceDealerMapper.pushQinceDealers(today); List<QinceDealer> qinceDealers = qinceDealerMapper.pushQinceDealers(today);
return BeanUtils.transitionDtos(qinceDealers, QinceDealerDto.class); return BeanUtils.transitionDtos(qinceDealers, QinceDealerDto.class);
} }
@Override
public List<QinceDealerDto> findModifyList(String dateStr) {
List<QinceDealer> qinceDealers = qinceDealerMapper.findModifyList(dateStr);
return BeanUtils.transitionDtos(qinceDealers, QinceDealerDto.class);
}
} }
...@@ -51,6 +51,10 @@ public class QinceDealer implements Serializable { ...@@ -51,6 +51,10 @@ public class QinceDealer implements Serializable {
*/ */
private String dealerDeptName; private String dealerDeptName;
private String dealerManagerCode;
private String dealerManager;
/** /**
* 经销商编码 * 经销商编码
*/ */
......
...@@ -2,6 +2,7 @@ package com.sfa.job.domain.qince.mapper; ...@@ -2,6 +2,7 @@ package com.sfa.job.domain.qince.mapper;
import com.sfa.job.domain.qince.entity.QinceDealer; import com.sfa.job.domain.qince.entity.QinceDealer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sfa.job.pojo.qince.response.QinceDealerDto;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -17,6 +18,8 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealer> { ...@@ -17,6 +18,8 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealer> {
List<QinceDealer> pushQinceDealers(String today); List<QinceDealer> pushQinceDealers(String today);
List<QinceDealer> findModifyList(String dateStr);
} }
......
...@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service; ...@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
*/ */
@DS("bi") @DS("bi")
@Service @Service
public class FeishuSheetRecordDaoImpl implements FeishuSheetRecordDao{ public class FeishuSheetRecordDaoImpl implements IFeishuSheetRecordDao {
@Autowired @Autowired
private FeishuSheetRecordMapper feishuSheetRecordMapper; private FeishuSheetRecordMapper feishuSheetRecordMapper;
......
...@@ -7,6 +7,6 @@ import com.sfa.job.pojo.response.FeishuSheetRecordDto; ...@@ -7,6 +7,6 @@ import com.sfa.job.pojo.response.FeishuSheetRecordDto;
* @date : 2025-04-08 17 * @date : 2025-04-08 17
* @describe : * @describe :
*/ */
public interface FeishuSheetRecordDao { public interface IFeishuSheetRecordDao {
FeishuSheetRecordDto selectOne(Integer type); FeishuSheetRecordDto selectOne(Integer type);
} }
...@@ -35,6 +35,11 @@ public class FeishuSheetRecord implements Serializable { ...@@ -35,6 +35,11 @@ public class FeishuSheetRecord implements Serializable {
*/ */
private String createMonth; private String createMonth;
/**
* sheet页中的数据范围
*/
private String ranges;
/** /**
* 1:axmr005_战区(每天);2:axmr005_战区(每月); * 1:axmr005_战区(每天);2:axmr005_战区(每月);
*/ */
......
...@@ -13,7 +13,10 @@ public enum FSRecordEnum { ...@@ -13,7 +13,10 @@ public enum FSRecordEnum {
* 1:axmr005_战区(每天) * 1:axmr005_战区(每天)
*/ */
AXMR005_1(1), AXMR005_1(1),
AXMR005_2(2), /**
* 营销中心-区域销售-逻辑组织架构
*/
XS_USER_RELATION(2),
; ;
private Integer type; private Integer type;
......
package com.sfa.job.pojo.qince.response;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 勤策-客户管理-终端
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class QinceClienteleStoreDto implements Serializable {
/**
* 主键id
*/
private Long id;
/**
* 勤策的门店唯一ID
*/
private String qcId;
/**
* 门店名称
*/
private String storeName;
/**
* 门店编码
*/
private String storeCode;
/**
* 城市经理
*/
private String managerName;
/**
*
* 战区经理
*/
private String zqManagerName;
/**
* 大区总监
*/
private String dqManagerName;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
public QinceClienteleStoreDto(String managerName, String zqManagerName, String dqManagerName) {
this.managerName = managerName;
this.zqManagerName = zqManagerName;
this.dqManagerName = dqManagerName;
}
}
\ No newline at end of file
...@@ -45,6 +45,10 @@ public class QinceDealerDto implements Serializable { ...@@ -45,6 +45,10 @@ public class QinceDealerDto implements Serializable {
*/ */
private String dealerDeptName; private String dealerDeptName;
private String dealerManagerCode;
private String dealerManager;
/** /**
* 经销商编码 * 经销商编码
*/ */
......
...@@ -33,6 +33,11 @@ public class FeishuSheetRecordDto { ...@@ -33,6 +33,11 @@ public class FeishuSheetRecordDto {
*/ */
private String createMonth; private String createMonth;
/**
* sheet页中的数据范围
*/
private String ranges;
/** /**
* 1:axmr005_战区(每天);2:axmr005_战区(每月); * 1:axmr005_战区(每天);2:axmr005_战区(每月);
*/ */
......
package com.sfa.job.service.erp.impl; package com.sfa.job.service.erp.impl;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.sfa.common.core.utils.DateUtils;
import com.sfa.job.domain.erp.dao.ErpAxmr005ShippingDetailsDao; import com.sfa.job.domain.erp.dao.ErpAxmr005ShippingDetailsDao;
import com.sfa.job.pojo.response.FeishuSheetRecordDto; import com.sfa.job.pojo.response.FeishuSheetRecordDto;
import com.sfa.job.service.erp.ErpAxmr005Service; import com.sfa.job.service.erp.ErpAxmr005Service;
import com.sfa.job.util.FeiShuUtil; import com.sfa.job.util.FeiShuUtil;
import com.sfa.job.domain.use.dao.FeishuSheetRecordDao; import com.sfa.job.domain.use.dao.IFeishuSheetRecordDao;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -25,7 +24,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service { ...@@ -25,7 +24,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
@Autowired @Autowired
private ErpAxmr005ShippingDetailsDao erpAxmr005ShippingDetailsDao; private ErpAxmr005ShippingDetailsDao erpAxmr005ShippingDetailsDao;
@Autowired @Autowired
private FeishuSheetRecordDao feishuSheetRecordDao; private IFeishuSheetRecordDao feishuSheetRecordDao;
@Autowired @Autowired
private FeiShuUtil feiShuUtil; private FeiShuUtil feiShuUtil;
...@@ -42,8 +41,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service { ...@@ -42,8 +41,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
* 将结果推送到飞书表格,每次推100条 * 将结果推送到飞书表格,每次推100条
*/ */
String range = recordDto.getSheetId() + "!A:H"; String range = recordDto.getSheetId() + "!A:H";
JSONObject botToken1 = feiShuUtil.getBotToken1(); String tenantAccessToken = feiShuUtil.getBotToken1();
String tenantAccessToken = botToken1.getString("tenant_access_token");
int batchSize = 100; int batchSize = 100;
for (int i = 0; i < zhanquDataset.size(); i+=batchSize) { for (int i = 0; i < zhanquDataset.size(); i+=batchSize) {
// 计算当前批次的结束位置 // 计算当前批次的结束位置
......
package com.sfa.job.service.feishu;
/**
* @author : liqiulin
* @date : 2025-05-09 16
* @describe :
*/
public interface IPullSheetService {
void qinceSotreManage();
}
package com.sfa.job.service.feishu;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.sfa.job.domain.use.dao.IFeishuSheetRecordDao;
import com.sfa.job.enums.FSRecordEnum;
import com.sfa.job.pojo.response.FeishuSheetRecordDto;
import com.sfa.job.util.FeiShuUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.stream.DoubleStream;
/**
* @author : liqiulin
* @date : 2025-05-09 16
* @describe :
*/
@Service
public class PullSheetServiceImpl implements IPullSheetService{
@Autowired
private IFeishuSheetRecordDao feishushetRecordDao;
@Autowired
private FeiShuUtil feiShuUtil;
/**
* 拉取表格 - 勤策门店的城市经理、省区经理、大区总监
* https://wangxiaolu.feishu.cn/sheets/I076slXhlhY2RdtDetEc17ornYd?sheet=49e4ba
*/
@Override
public void qinceSotreManage() {
FeishuSheetRecordDto recordDto = feishushetRecordDao.selectOne(FSRecordEnum.XS_USER_RELATION.getType());
JSONObject jsonObject = feiShuUtil.pullSheetOneRange(recordDto.getSheetToken(), feiShuUtil.getBotToken1(), recordDto.getRanges());
JSONArray values = jsonObject.getJSONArray("values");
// 创建逻辑构架人员关系表
// 创建逻辑构架人员关系对象
// 遍历values数组,获取每个对象的values数组
values.forEach(item -> {
JSONArray jsonArray = (JSONArray) item;
});
}
}
...@@ -7,4 +7,10 @@ package com.sfa.job.service.qince; ...@@ -7,4 +7,10 @@ package com.sfa.job.service.qince;
*/ */
public interface IQinceDealerQueryService { public interface IQinceDealerQueryService {
void updateQinceDealerInfo(); void updateQinceDealerInfo();
void queryCusVisitRecord();
void updateQinceStore();
} }
package com.sfa.job.service.qince.impl; package com.sfa.job.service.qince.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.sfa.job.domain.qince.dao.IQinceClienteleStoreDao;
import com.sfa.job.domain.qince.dao.IQinceDealerDao; import com.sfa.job.domain.qince.dao.IQinceDealerDao;
import com.sfa.job.pojo.qince.response.QinceClienteleStoreDto;
import com.sfa.job.pojo.qince.response.QinceDealerDto; import com.sfa.job.pojo.qince.response.QinceDealerDto;
import com.sfa.job.service.qince.IQinceDealerQueryService; import com.sfa.job.service.qince.IQinceDealerQueryService;
import com.sfa.job.util.QinCeUtils; import com.sfa.job.util.QinCeUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.groovy.util.Maps;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @author : liqiulin * @author : liqiulin
...@@ -26,6 +29,8 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService { ...@@ -26,6 +29,8 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
@Autowired @Autowired
private IQinceDealerDao qinceDealerDao; private IQinceDealerDao qinceDealerDao;
@Autowired @Autowired
private IQinceClienteleStoreDao qinceClienteleStoreDao;
@Autowired
private QinCeUtils qinCeUtils; private QinCeUtils qinCeUtils;
@Override @Override
...@@ -65,6 +70,57 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService { ...@@ -65,6 +70,57 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
} }
} }
log.info("更新勤策经销商战区、大区信息完成,更新量:{}",pushQinceDealers.size()); log.info("更新勤策经销商战区、大区信息完成,更新量:{}", pushQinceDealers.size());
}
@Override
public void queryCusVisitRecord() {
try {
// 获取t-1日期
String queryDate = DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN);
Map<String, Object> params = qinCeUtils.queryCusVisitRecordParams(queryDate);
String url = qinCeUtils.builderUrl(QinCeUtils.QUERY_CUS_VISIT_RECORD, params);
JSONArray recordsJson = qinCeUtils.postArray(url, params);
System.out.println(recordsJson);
} catch (Exception e) {
log.error("查询城市经理客户拜访失败:{}", e.getMessage());
}
}
@Override
public void updateQinceStore() {
String dateStr = DateUtil.today();
List<QinceDealerDto> dealers = qinceDealerDao.findModifyList(dateStr);
for (QinceDealerDto dealer : dealers) {
List<QinceClienteleStoreDto> storeDtoList = qinceClienteleStoreDao.findListByDealerId(dealer.getDealerId());
// 查询客户经理的上级、上上级
String managerCode = dealer.getDealerManagerCode();
QinceClienteleStoreDto storeInfo = new QinceClienteleStoreDto(dealer.getDealerManager(),"","");
pushQinceStoreInfo(storeDtoList,storeInfo);
break;
}
}
private void pushQinceStoreInfo(List<QinceClienteleStoreDto> storeDtoList,QinceClienteleStoreDto storeInfo) {
for (QinceClienteleStoreDto storeDto : storeDtoList) {
try {
System.out.println(storeDto.getQcId() + " ---- " + storeDto.getStoreName());
Map<String, Object> params = new HashMap<>();
params.put("store_waiqin_id", storeDto.getQcId());
params.put("store_name", storeDto.getStoreName());
List<Map<String, String>> exts = new ArrayList<>();
exts.add(Maps.of("store_ext_key", "城市经理", "store_ext_value", storeInfo.getManagerName()));
exts.add(Maps.of("store_ext_key", "战区经理", "store_ext_value", ""));
exts.add(Maps.of("store_ext_key", "大区总监", "store_ext_value", ""));
params.put("exts", exts);
// String url = qinCeUtils.builderUrl(QinCeUtils.MODIFY_STORE, params);
// JSONObject jsonObject = qinCeUtils.postQC(url, params);
}catch (Exception e) {
log.error("更新勤策门店失败:{}", e.getMessage());
}
break;
}
} }
} }
...@@ -47,6 +47,7 @@ public class FeiShuUtil { ...@@ -47,6 +47,7 @@ public class FeiShuUtil {
private static final String TENANT_ACCESS_TOKEN_URL = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"; private static final String TENANT_ACCESS_TOKEN_URL = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";
private static final String VALUES_APPEND = "/values_append"; private static final String VALUES_APPEND = "/values_append";
private static final String VALUES_IMAGE = "/values_image"; private static final String VALUES_IMAGE = "/values_image";
private static final String VALUES_BATCH_GET = "/values_batch_get";
private static final String VALUES = "/values"; private static final String VALUES = "/values";
private static final String STYLE = "/style"; private static final String STYLE = "/style";
...@@ -103,6 +104,27 @@ public class FeiShuUtil { ...@@ -103,6 +104,27 @@ public class FeiShuUtil {
return null; return null;
} }
/**
* 获取表格数据
*/
public JSONArray pullSheet(String sheetToken, String autoToken, String ranges) {
try {
Map<String, Object> params = new HashMap<>();
params.put("ranges", ranges);
String result = HttpUtil.createGet(SHEET_URL + sheetToken + VALUES_BATCH_GET).form(params).auth("Bearer " + autoToken).contentType(CONTENT_TYPE).execute().body();
JSONObject resultJson = JSONObject.parseObject(result);
System.out.println(resultJson);
int code = resultJson.getInteger("code");
if (code != 0) {
throw new RuntimeException("获取飞书表格范围数据错误:"+resultJson.getString("msg"));
}
return resultJson.getJSONObject("data").getJSONArray("valueRanges");
}catch (Exception e) {
log.error("拉取表格数据失败,停止执行!", e);
}
return new JSONArray();
}
private Client getClient() { private Client getClient() {
return Client.newBuilder(appId, appSecret).build(); return Client.newBuilder(appId, appSecret).build();
} }
...@@ -128,7 +150,7 @@ public class FeiShuUtil { ...@@ -128,7 +150,7 @@ public class FeiShuUtil {
} }
public JSONObject getBotToken1() { public String getBotToken1() {
Map<String, Object> bodyMap = new HashMap<>(); Map<String, Object> bodyMap = new HashMap<>();
bodyMap.put("app_id", botAppId1); bodyMap.put("app_id", botAppId1);
bodyMap.put("app_secret", botAppSecret1); bodyMap.put("app_secret", botAppSecret1);
...@@ -144,7 +166,7 @@ public class FeiShuUtil { ...@@ -144,7 +166,7 @@ public class FeiShuUtil {
if (code != 0) { if (code != 0) {
throw new RuntimeException("获取tenant_access_token错误"); throw new RuntimeException("获取tenant_access_token错误");
} }
return resultJson; return resultJson.getString("tenant_access_token");
} }
public void appendStyle(String sheetToken, Map<String, Object> body,String autoToken) { public void appendStyle(String sheetToken, Map<String, Object> body,String autoToken) {
...@@ -154,4 +176,8 @@ public class FeiShuUtil { ...@@ -154,4 +176,8 @@ public class FeiShuUtil {
.body(JSONObject.toJSONString(body)) .body(JSONObject.toJSONString(body))
.execute().body(); .execute().body();
} }
public JSONObject pullSheetOneRange(String sheetToken, String botToken1, String ranges) {
return pullSheet(sheetToken, botToken1, ranges).getJSONObject(0);
}
} }
package com.sfa.job.util; package com.sfa.job.util;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
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.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
...@@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
...@@ -36,6 +38,8 @@ public class QinCeUtils { ...@@ -36,6 +38,8 @@ public class QinCeUtils {
*/ */
// 修改经销商 // 修改经销商
public static final String MODIFY_DEALER = "/api/dealer/v1/modifyDealer/"; public static final String MODIFY_DEALER = "/api/dealer/v1/modifyDealer/";
public static final String MODIFY_STORE = "/api/store/v1/modifyStore/";
public static final String QUERY_CUS_VISIT_RECORD = "/api/cusVisit/v1/queryCusVisitRecord/";
public String builderUrl(String sidepath, Map<String, Object> params) { public String builderUrl(String sidepath, Map<String, Object> params) {
String msgId = UUID.randomUUID().toString(); String msgId = UUID.randomUUID().toString();
...@@ -45,8 +49,13 @@ public class QinCeUtils { ...@@ -45,8 +49,13 @@ public class QinCeUtils {
return builder.toString(); return builder.toString();
} }
public Map<String, Object> modifyDealerParams(){ public Map<String, Object> queryCusVisitRecordParams(String visitDate){
return null; Map<String,Object> params = new HashMap<>();
params.put("date_start",visitDate);
params.put("date_end",visitDate);
params.put("page","1");
params.put("rows","1000");
return params;
} }
...@@ -56,6 +65,7 @@ public class QinCeUtils { ...@@ -56,6 +65,7 @@ public class QinCeUtils {
JSONObject resultJson = JSONObject.parseObject(requestBody); JSONObject resultJson = JSONObject.parseObject(requestBody);
String returnCode = resultJson.getString("return_code"); String returnCode = resultJson.getString("return_code");
if (!"0".equals(returnCode)) { if (!"0".equals(returnCode)) {
log.error("请求错误,返回结果:{}", requestBody);
throw new RuntimeException("OkHttp.post请求error,详情:" + requestBody); throw new RuntimeException("OkHttp.post请求error,详情:" + requestBody);
} }
return resultJson; return resultJson;
...@@ -69,4 +79,9 @@ public class QinCeUtils { ...@@ -69,4 +79,9 @@ public class QinCeUtils {
String digest = DigestUtils.md5Hex(json + "|" + APP_KEY + "|" + currentTimeMillis); String digest = DigestUtils.md5Hex(json + "|" + APP_KEY + "|" + currentTimeMillis);
return digest; return digest;
} }
public JSONArray postArray(String url, Map<String, Object> params) throws Exception {
JSONObject jsonObject = postQC(url, params);
return jsonObject.getJSONArray("response_data");
}
} }
...@@ -33,13 +33,6 @@ public class shippingTask { ...@@ -33,13 +33,6 @@ public class shippingTask {
axmr005ZQToFSByDate(date,type); axmr005ZQToFSByDate(date,type);
} }
@XxlJob("axmr005_zhanqu_month")
public void axmr005ZQByMonth() {
Date date = DateUtils.addDays(new Date(), -4);
Integer type = FSRecordEnum.AXMR005_2.getType();
axmr005ZQToFSByDate(date,type);
}
private void axmr005ZQToFSByDate(Date date,Integer type) { private void axmr005ZQToFSByDate(Date date,Integer type) {
erpAxmr005Service.axmr005ZQToFS(date, type); erpAxmr005Service.axmr005ZQToFS(date, type);
} }
......
package com.sfa.job.xxljob.feishu;
import com.sfa.job.service.feishu.IPullSheetService;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author : liqiulin
* @date : 2025-05-09 15
* @describe :
*/
@Component
public class PullSheet {
@Autowired
private IPullSheetService pullSheetService;
@XxlJob("PullSheetSotreManage")
public void qinceSotreManage(){
pullSheetService.qinceSotreManage();
}
}
...@@ -23,4 +23,18 @@ public class QinceCoreTask { ...@@ -23,4 +23,18 @@ public class QinceCoreTask {
qinceCoreService.updateQinceDealerInfo(); qinceCoreService.updateQinceDealerInfo();
log.info("回写勤策经销商大区、战区信息 end"); log.info("回写勤策经销商大区、战区信息 end");
} }
public void qinceCoreStore(){
log.info("回写勤策门店城市经理、战区经理、大区总监 start");
qinceCoreService.updateQinceStore();
log.info("回写勤策门店城市经理、战区经理、大区总监 end");
}
@XxlJob("qince_cus_visit_record")
public void queryCusVisitRecord() {
log.info("查询勤策客户拜访记录 start");
qinceCoreService.queryCusVisitRecord();
log.info("查询勤策客户拜访记录 start");
}
} }
...@@ -32,6 +32,15 @@ ...@@ -32,6 +32,15 @@
<result property="dealerName" column="dealer_name" jdbcType="VARCHAR"/> <result property="dealerName" column="dealer_name" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<resultMap id="PushQince_2" type="com.sfa.job.domain.qince.entity.QinceDealer">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="dealerId" column="dealer_id" jdbcType="VARCHAR"/>
<result property="dealerName" column="dealer_name" jdbcType="VARCHAR"/>
<result property="dealerManagerCode" column="dealer_manager_code" jdbcType="VARCHAR"/>
<result property="dealerManager" column="dealer_manager" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,dq_org_qc_id,dq_org_name, id,dq_org_qc_id,dq_org_name,
zq_org_qc_id,zq_org_name,dealer_dept_waiqin365_id, zq_org_qc_id,zq_org_name,dealer_dept_waiqin365_id,
...@@ -57,4 +66,15 @@ ...@@ -57,4 +66,15 @@
and DATE (mt) = #{today} and DATE (mt) = #{today}
</select> </select>
<!--
and DATE(mt) = #{dateStr};-->
<select id="findModifyList" resultMap="PushQince_2">
select dealer_id, dealer_name, dealer_manager, dealer_manager_code
from qince_dealer
where dealer_type = '经销商'
and dealer_cooperate_status = '1'
and dealer_status = '1'
and dealer_id = '000324'
</select>
</mapper> </mapper>
...@@ -9,12 +9,13 @@ ...@@ -9,12 +9,13 @@
<result property="sheetToken" column="sheet_token" jdbcType="VARCHAR"/> <result property="sheetToken" column="sheet_token" jdbcType="VARCHAR"/>
<result property="sheetId" column="sheet_id" jdbcType="VARCHAR"/> <result property="sheetId" column="sheet_id" jdbcType="VARCHAR"/>
<result property="createMonth" column="create_month" jdbcType="VARCHAR"/> <result property="createMonth" column="create_month" jdbcType="VARCHAR"/>
<result property="ranges" column="ranges" jdbcType="VARCHAR"/>
<result property="type" column="type" jdbcType="INTEGER"/> <result property="type" column="type" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,sheet_token,sheet_id, id,sheet_token,sheet_id,
create_month,type create_month,ranges,type
</sql> </sql>
<select id="findOne" resultMap="BaseResultMap"> <select id="findOne" resultMap="BaseResultMap">
......
package com.sfa.job.service.feishu;
import org.junit.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.Assert.*;
/**
* @author : liqiulin
* @date : 2025-05-09 17
* @describe :
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class PullSheetServiceImplTest {
@Autowired
private PullSheetServiceImpl pullSheetService;
@Test
public void qinceSotreManage() {
pullSheetService.qinceSotreManage();
}
}
\ No newline at end of file
...@@ -25,4 +25,14 @@ public class QinceDealerQueryServiceImplTest { ...@@ -25,4 +25,14 @@ public class QinceDealerQueryServiceImplTest {
public void updateQinceDealerInfo() { public void updateQinceDealerInfo() {
qinceDealerQueryService.updateQinceDealerInfo(); qinceDealerQueryService.updateQinceDealerInfo();
} }
@Test
public void queryCusVisitRecord() {
qinceDealerQueryService.queryCusVisitRecord();
}
@Test
public void updateQinceStore() {
qinceDealerQueryService.updateQinceStore();
}
} }
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论