|
@@ -49,10 +49,6 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
// 数据同步落到同步信息表
|
|
|
extractedAddOrUpdate(addRec, updateRec, jsonArray);
|
|
|
|
|
|
- // 数据同步到本地表(worker:师傅信息表 + worker_brand_account:师傅网点对应品牌网点信息表 + websit_worker:网点师傅信息表)
|
|
|
- // 师傅信息一定新增
|
|
|
- // 品牌网点与平台网点有对应关系才会同步生成相应的网点数据
|
|
|
- extractedLocalAddOrUpdate(addRec, updateRec);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -63,9 +59,6 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
|
|
|
// 数据同步落到同步信息表
|
|
|
extractedAddOrUpdate(addRec, updateRec, jsonArray);
|
|
|
-
|
|
|
- // 数据同步到本地表
|
|
|
- extractedLocalAddOrUpdate(addRec, updateRec);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -76,9 +69,6 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
|
|
|
// 数据同步落到同步信息表
|
|
|
extractedAddOrUpdate(addRec, updateRec, jsonArray);
|
|
|
-
|
|
|
- // 数据同步到本地表
|
|
|
- extractedLocalAddOrUpdate(addRec, updateRec);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -89,11 +79,78 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
|
|
|
// 数据同步落到同步信息表
|
|
|
extractedAddOrUpdate(addRec, updateRec, jsonArray);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void inputData(){
|
|
|
+ // 提取所有的数据
|
|
|
+ List<ItfTblWangdianWxgDownload> recs = new ArrayList<>();
|
|
|
+ recs = itfTblWangdianWxgDownloadService.lambdaQuery().list();
|
|
|
+
|
|
|
+ // 新增或修改师傅数据 worker:师傅信息表
|
|
|
+ addWorker(recs);
|
|
|
|
|
|
- // 数据同步到本地表
|
|
|
- extractedLocalAddOrUpdate(addRec, updateRec);
|
|
|
+ // 新增网点师傅 websit_worker+商户网点师傅信息 存在修改,不存在新增
|
|
|
+ addWebsitWorkerBrandAccountsInfo(recs);
|
|
|
+ recs.clear();
|
|
|
}
|
|
|
|
|
|
+ private void addWebsitWorkerBrandAccountsInfo(List<ItfTblWangdianWxgDownload> addRec) {
|
|
|
+ // 新增网点师傅 websit_worker+商户网点师傅信息 存在修改,不存在新增
|
|
|
+ Map<String,List<WebsitOrderSign>> websitOrderSignMap = new HashMap<>();
|
|
|
+ Map<String, List<Worker>> workerIdCardMap = new HashMap<>();
|
|
|
+ List<Websit> websitrec = new ArrayList<>();
|
|
|
+ Map<String,List<Websit>> websitMap = new HashMap<>();
|
|
|
+ List<WorkerBrandAccount> addwbas = new ArrayList<>();
|
|
|
+ List<WebsitWorker> websitWorkeradd = new ArrayList<>();
|
|
|
+ List<WorkerBrandAccount> upWorkerBrandAccount = new ArrayList<>();
|
|
|
+
|
|
|
+ // 提取平台师傅信息
|
|
|
+ List<Worker> oldWorkerRec = workerService.lambdaQuery()
|
|
|
+ .select(Worker::getIdcard,Worker::getWorkerId,Worker::getWorkerName,Worker::getMobile).list();
|
|
|
+ if (CollectionUtils.isNotEmpty(oldWorkerRec)){
|
|
|
+ workerIdCardMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getIdcard));
|
|
|
+ }
|
|
|
+
|
|
|
+ websitrec = websitService.lambdaQuery()
|
|
|
+ .select(Websit::getWebsitId,Websit::getServiceId,Websit::getWebsitName).list();
|
|
|
+ if (CollectionUtils.isNotEmpty(websitrec)){
|
|
|
+ websitMap = websitrec.stream().collect(Collectors.groupingBy(Websit::getWebsitId));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查看品牌网点与平台网点是否存在对应关系 (存在品牌网点对应平台多网点)
|
|
|
+ List<WebsitOrderSign> wos = publicService.SyncshshwdToptshwd();
|
|
|
+ if (CollectionUtils.isNotEmpty(wos)){
|
|
|
+ websitOrderSignMap = wos.stream().collect(Collectors.groupingBy(WebsitOrderSign::getBrandWebsitId));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (addRec.size()>0){
|
|
|
+ // 生成平台网点及品牌商网点师傅数据
|
|
|
+ getWebsitWorkerBrandAccounts(addRec, websitOrderSignMap, workerIdCardMap, websitMap, addwbas,
|
|
|
+ websitWorkeradd, upWorkerBrandAccount);
|
|
|
+
|
|
|
+ // 修改品牌商网点师傅数据
|
|
|
+ if (upWorkerBrandAccount.size()>0){
|
|
|
+ workerBrandAccountService.updateBatchById(upWorkerBrandAccount);
|
|
|
+ upWorkerBrandAccount.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增品牌师傅网点信息
|
|
|
+ if (addwbas.size()>0){
|
|
|
+ workerBrandAccountService.saveBatch(addwbas);
|
|
|
+ addwbas.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增师傅所在平台网点信息
|
|
|
+ if (websitWorkeradd.size()>0){
|
|
|
+ websitWorkerService.saveBatch(websitWorkeradd);
|
|
|
+ websitWorkeradd.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void addWebsitWorkerBrandAccounts(List<ItfTblWangdianWxgDownload> addRec, List<ItfTblWangdianWxgDownload> updateRec) {
|
|
|
// 新增网点师傅 websit_worker+商户网点师傅信息 存在修改,不存在新增
|
|
|
Map<String,List<WebsitOrderSign>> websitOrderSignMap = new HashMap<>();
|
|
@@ -150,7 +207,8 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
|
|
|
if (updateRec.size()>0){
|
|
|
// 生成平台网点及品牌商网点师傅数据
|
|
|
- getWebsitWorkerBrandAccounts(updateRec, websitOrderSignMap, workerIdCardMap, websitMap, addwbas, websitWorkeradd, upWorkerBrandAccount);
|
|
|
+ getWebsitWorkerBrandAccounts(updateRec, websitOrderSignMap, workerIdCardMap, websitMap,
|
|
|
+ addwbas, websitWorkeradd, upWorkerBrandAccount);
|
|
|
|
|
|
// 修改品牌商网点师傅数据
|
|
|
if (upWorkerBrandAccount.size()>0){
|
|
@@ -180,6 +238,8 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
List<WorkerBrandAccount> addwbas,
|
|
|
List<WebsitWorker> websitWorkeradd,
|
|
|
List<WorkerBrandAccount> upWorkerBrandAccounts) {
|
|
|
+ List<String> WebsitWorkers = new ArrayList<>();
|
|
|
+
|
|
|
for (ItfTblWangdianWxgDownload m : addRec){
|
|
|
// 只有存在网点对应关系才可以新增师傅到网点信息中来 存在品牌网点对应平台多网点
|
|
|
if (!websitOrderSignMap.containsKey(m.getWdno())){
|
|
@@ -205,26 +265,56 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
upWorkerBrandAccounts.addAll(oldwbas);
|
|
|
// 修改平台网点师傅信息 要求存在就不修改只新增
|
|
|
} else {
|
|
|
- // 新增师傅所在品牌、商网点信息
|
|
|
+ // 新增师傅所在品牌、商户网点信息
|
|
|
List<WebsitOrderSign> wosrec = new ArrayList<>();
|
|
|
wosrec = websitOrderSignMap.get(m.getWdno());
|
|
|
// 存在品牌网点对应平台多网点 平台网点信息
|
|
|
for (WebsitOrderSign i : wosrec){
|
|
|
+ // 若师傅身份证没找到说明师傅信息未同步到师傅信息表,不处理 等下次处理即可
|
|
|
+ if (!workerIdCardMap.containsKey(m.getSfzen())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
// 生成品牌师傅网点信息对像
|
|
|
WorkerBrandAccount add = getWorkerBrandAccount(workerIdCardMap, websitMap, m, addwbas, i);
|
|
|
+ // 主键: worker_id + websit_id 已添加过就不再添加
|
|
|
+ if (WebsitWorkers.contains(add.getWorkerId()+add.getWebsitId())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WebsitWorkers.add(add.getWorkerId()+add.getWebsitId());
|
|
|
// 生成师傅所在平台网点信息对像(如已存在不再新增 即不修改平台网点师傅信息)
|
|
|
WebsitWorker ww = websitWorkerService.lambdaQuery()
|
|
|
- .eq(WebsitWorker::getWorkerId,workerIdCardMap.get(m.getSfzen()).get(0).getWorkerId())
|
|
|
+ .eq(WebsitWorker::getWorkerId,add.getWorkerId())
|
|
|
.eq(WebsitWorker::getWebsitId,i.getWebsitId()).one();
|
|
|
+
|
|
|
if (ww == null){
|
|
|
getWebsitWorker(workerIdCardMap, websitMap, m, websitWorkeradd, i, add);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // 修改品牌商网点师傅数据
|
|
|
+ if (upWorkerBrandAccounts.size()>3000){
|
|
|
+ workerBrandAccountService.updateBatchById(upWorkerBrandAccounts);
|
|
|
+ upWorkerBrandAccounts.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增品牌师傅网点信息
|
|
|
+ if (addwbas.size()>3000){
|
|
|
+ workerBrandAccountService.saveBatch(addwbas);
|
|
|
+ addwbas.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增师傅所在平台网点信息
|
|
|
+ if (websitWorkeradd.size()>3000){
|
|
|
+ websitWorkerService.saveBatch(websitWorkeradd);
|
|
|
+ websitWorkeradd.clear();
|
|
|
+ }
|
|
|
}
|
|
|
+ WebsitWorkers.clear();
|
|
|
}
|
|
|
|
|
|
- private void getWebsitWorker(Map<String, List<Worker>> workerIdCardMap, Map<String, List<Websit>> websitrecMap, ItfTblWangdianWxgDownload m, List<WebsitWorker> websitWorkeradd, WebsitOrderSign i, WorkerBrandAccount add) {
|
|
|
+ private void getWebsitWorker(Map<String, List<Worker>> workerIdCardMap, Map<String, List<Websit>> websitrecMap,
|
|
|
+ ItfTblWangdianWxgDownload m, List<WebsitWorker> websitWorkeradd,
|
|
|
+ WebsitOrderSign i, WorkerBrandAccount add) {
|
|
|
WebsitWorker v = new WebsitWorker();
|
|
|
// 一定要与worker_brand_account.websit_worker_id相同
|
|
|
v.setWebsitWorkerId(add.getWebsitWorkerId());
|
|
@@ -247,7 +337,15 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
if (m.getLastModifiedDate() != null){
|
|
|
v.setUpdateTime(m.getLastModifiedDate());
|
|
|
}
|
|
|
- v.setWorkerName(workerIdCardMap.get(m.getSfzen()).get(0).getWorkerName());
|
|
|
+
|
|
|
+ for (Worker w:workerIdCardMap.get(m.getSfzen())){
|
|
|
+ if (w.getMobile().equals(m.getYddh())){
|
|
|
+ v.setWorkerName(w.getWorkerName());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // v.setWorkerName(workerIdCardMap.get(m.getSfzen()).get(0).getWorkerName());
|
|
|
+
|
|
|
v.setStatus(DictTypeEnum.DICT_TYPE_ON.getCode());
|
|
|
if (m.getFlag() != null){
|
|
|
if (!m.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
|
|
@@ -329,11 +427,20 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
}
|
|
|
|
|
|
@NotNull
|
|
|
- private WorkerBrandAccount getWorkerBrandAccount(Map<String, List<Worker>> workerIdCardMap, Map<String, List<Websit>> websitrecMap,
|
|
|
+ private WorkerBrandAccount getWorkerBrandAccount(Map<String, List<Worker>> workerIdCardMap,
|
|
|
+ Map<String, List<Websit>> websitrecMap,
|
|
|
ItfTblWangdianWxgDownload m,
|
|
|
List<WorkerBrandAccount> addwbas, WebsitOrderSign i) {
|
|
|
WorkerBrandAccount add = new WorkerBrandAccount();
|
|
|
- add.setWorkerId(workerIdCardMap.get(m.getSfzen()).get(0).getWorkerId());
|
|
|
+
|
|
|
+ for (Worker w:workerIdCardMap.get(m.getSfzen())){
|
|
|
+ if (w.getWorkerName().equals(m.getWxgmc()) && w.getMobile().equals(m.getYddh())){
|
|
|
+ add.setWorkerId(w.getWorkerId());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // add.setWorkerId(workerIdCardMap.get(m.getSfzen()).get(0).getWorkerId());
|
|
|
+
|
|
|
// 自生成 一定要与websit_worker.websit_worker_id相同
|
|
|
add.setWebsitWorkerId(IdWorker.getIdStr());
|
|
|
add.setGroupCompanyId(i.getGroupCompanyId());
|
|
@@ -373,12 +480,20 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
}
|
|
|
|
|
|
private void getWorker(List<Worker> addWorkerRec, List<String> sfzens, ItfTblWangdianWxgDownload m,
|
|
|
- Map<String, List<Worker>> oldRecMap) {
|
|
|
+ Map<String, List<Worker>> workerIdcardMap) {
|
|
|
+ Boolean flag = Boolean.FALSE;
|
|
|
Worker v = new Worker();
|
|
|
v.setWorkerId(IdWorker.getIdStr());
|
|
|
- // 师傅身份证已存在为修改
|
|
|
- if (oldRecMap.containsKey(m.getSfzen())){
|
|
|
- v.setWorkerId(oldRecMap.get(m.getSfzen()).get(0).getWorkerId());
|
|
|
+ // 师傅身份证,名称,电话 已存在为修改
|
|
|
+ if (workerIdcardMap.containsKey(m.getSfzen())){
|
|
|
+ // v.setWorkerId(workerIdcardMap.get(m.getSfzen()).get(0).getWorkerId());
|
|
|
+ for (Worker w:workerIdcardMap.get(m.getSfzen())){
|
|
|
+ if (w.getWorkerName().equals(m.getWxgmc()) && w.getMobile().equals(m.getYddh())){
|
|
|
+ v.setWorkerId(w.getWorkerId());
|
|
|
+ flag = Boolean.TRUE;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
v.setWorkerName(m.getWxgmc());
|
|
|
//v.setIsReal("YES");
|
|
@@ -462,28 +577,32 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
v.setCarNo(m.getCphm());
|
|
|
v.setGpsMachineId(m.getGpsid());
|
|
|
v.setVipFlag(m.getVipflag());
|
|
|
- v.setSyncFlag(1);
|
|
|
+ // 修改时不变动来源
|
|
|
+ if (!flag){
|
|
|
+ v.setSyncFlag(1);
|
|
|
+ }
|
|
|
addWorkerRec.add(v);
|
|
|
- sfzens.add(m.getSfzen());
|
|
|
+ sfzens.add(m.getSfzen() + m.getWxgmc() + m.getYddh());
|
|
|
}
|
|
|
|
|
|
private void extractedWorkerAddNew(List<ItfTblWangdianWxgDownload> addRec, List<Worker> addWorkerRec) {
|
|
|
+ // 身份证 + 姓名 + 手机号
|
|
|
List<String> sfzens = new ArrayList<>();
|
|
|
- Map<String, List<Worker>> oldRecMap = new HashMap<>();
|
|
|
+ Map<String, List<Worker>> workerIdcardMap = new HashMap<>();
|
|
|
// 提取原有的信息
|
|
|
List<Worker> oldWorkerRec = workerService.lambdaQuery()
|
|
|
- .select(Worker::getIdcard,Worker::getWorkerId).list();
|
|
|
+ .select(Worker::getIdcard,Worker::getWorkerId,Worker::getWorkerName,Worker::getMobile).list();
|
|
|
if (CollectionUtils.isNotEmpty(oldWorkerRec)){
|
|
|
- oldRecMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getIdcard));
|
|
|
+ workerIdcardMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getIdcard));
|
|
|
}
|
|
|
|
|
|
for (ItfTblWangdianWxgDownload m : addRec){
|
|
|
// 已处理过不再处理 因为这里是网点师傅会存在重复数据
|
|
|
- if (sfzens.contains(m.getSfzen())){
|
|
|
+ if (sfzens.contains(m.getSfzen() + m.getWxgmc() + m.getYddh())){
|
|
|
continue;
|
|
|
}
|
|
|
// 生成对象
|
|
|
- getWorker(addWorkerRec, sfzens, m, oldRecMap);
|
|
|
+ getWorker(addWorkerRec, sfzens, m, workerIdcardMap);
|
|
|
|
|
|
// 新增的插入到表
|
|
|
if (addWorkerRec.size()>=3000){
|
|
@@ -492,6 +611,8 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
addWorkerRec.clear();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ sfzens.clear();
|
|
|
}
|
|
|
|
|
|
private void addWorkerInfo(List<ItfTblWangdianWxgDownload> addRec, List<ItfTblWangdianWxgDownload> updateRec, List<Worker> addWorkerRec) {
|
|
@@ -520,7 +641,24 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void addWorker(List<ItfTblWangdianWxgDownload> Recs) {
|
|
|
+ List<Worker> addWorkerRec = new ArrayList<>();
|
|
|
+ // 新增的
|
|
|
+ if (Recs.size()>0){
|
|
|
+ // worker:师傅信息
|
|
|
+ extractedWorkerAddNew(Recs, addWorkerRec);
|
|
|
+
|
|
|
+ // 新增的插入到表
|
|
|
+ if (addWorkerRec.size()>0){
|
|
|
+ workerService.saveOrUpdateBatch(addWorkerRec);
|
|
|
+ log.info("本地网点维修工人员信息表新增插入了{}条数据", addWorkerRec.size());
|
|
|
+ addWorkerRec.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void extractedLocalAddOrUpdate(List<ItfTblWangdianWxgDownload> addRec, List<ItfTblWangdianWxgDownload> updateRec) {
|
|
|
+
|
|
|
List<Worker> addWorkerRec = new ArrayList<>();
|
|
|
|
|
|
// 新增师傅数据 worker:师傅信息表
|
|
@@ -555,7 +693,7 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
ItfTblWangdianWxgDownload old = oldRecMap.get(item.getWxgid()).get(0);
|
|
|
MyBeanUtils.copyProperties(item,old);
|
|
|
update.add(old);
|
|
|
- if (update.size()>2000){
|
|
|
+ if (update.size()>3000){
|
|
|
itfTblWangdianWxgDownloadService.updateBatchById(update);
|
|
|
log.info("网点维修工基础资料信息同步更新修改了{}条数据", update.size());
|
|
|
updateRec.addAll(update);
|
|
@@ -570,7 +708,7 @@ public class GLPPGFWebsitWorkerServiceImpl implements GLPPGFWebsitWorkerService
|
|
|
item.setSynTimes(0);
|
|
|
add.add(item);
|
|
|
|
|
|
- if (add.size()>=2000){
|
|
|
+ if (add.size()>3000){
|
|
|
itfTblWangdianWxgDownloadService.saveBatch(add);
|
|
|
log.info("网点维修工基础资料信息同步新增插入了{}条数据", add.size());
|
|
|
addRec.addAll(add);
|