|
@@ -12,10 +12,12 @@ import com.zfire.jiasm.syncdata.plus.entity.*;
|
|
|
import com.zfire.jiasm.syncdata.plus.service.*;
|
|
|
import com.zfire.jiasm.syncdata.request.SignSplb;
|
|
|
import com.zfire.jiasm.syncdata.request.ZJInfo;
|
|
|
+import com.zfire.jiasm.syncdata.request.ZJInfoC;
|
|
|
import com.zfire.jiasm.syncdata.response.WangdianWxgVos;
|
|
|
import com.zfire.jiasm.syncdata.response.WxgQueryInfo;
|
|
|
import com.zfire.jiasm.syncdata.service.GLPPWXGQueryAddService;
|
|
|
import com.zfire.jiasm.syncdata.service.PublicService;
|
|
|
+import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
|
|
|
import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -26,6 +28,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.File;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -83,10 +87,8 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
|
|
|
Map<String,Object> req = new HashMap<>();
|
|
|
Map<String,List<Worker>> workerIdcardMap = new HashMap<>();
|
|
|
Map<String,List<Worker>> workerWorkeridMap = new HashMap<>();
|
|
|
- Map<String,List<WorkerCert>> WorkerCertMaps = new HashMap<>();
|
|
|
+ Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps = new HashMap<>();
|
|
|
List<ItfTblWangdianWxgDownload> wxgDownladRecs = new ArrayList<>();
|
|
|
- // 身份证 + 姓名 + 手机号
|
|
|
- List<String> wxgs = new ArrayList<>();
|
|
|
|
|
|
// 提取品牌信息
|
|
|
Brand brand = baseService.getBrand();
|
|
@@ -110,22 +112,18 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
|
|
|
ItfTblWangdianWxgDownload::getWxgmc,
|
|
|
ItfTblWangdianWxgDownload::getYddh,
|
|
|
ItfTblWangdianWxgDownload::getFlag)
|
|
|
- // .eq(ItfTblWangdianWxgDownload::getSfzen,"440281197906113814")// 测试用
|
|
|
+ .eq(ItfTblWangdianWxgDownload::getSfzen,"441827198312116217")// 测试用
|
|
|
.like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
|
|
|
|
|
|
- // 提取现有已存在的证件信息的师傅信息
|
|
|
- List<WorkerCert> wc = workerCertService.lambdaQuery().list();
|
|
|
+ // 提取现有已存在的证件信息的师傅信息(待回传同步的证件不处理)
|
|
|
+ List<WorkerCert> wc = workerCertService.lambdaQuery()
|
|
|
+ .eq(WorkerCert::getOutSyncStatus,1).list();
|
|
|
if (CollectionUtils.isNotEmpty(wc)){
|
|
|
- WorkerCertMaps = wc.stream().collect(Collectors.groupingBy(WorkerCert::getWorkerId));
|
|
|
+ WorkerCertWorkerIdMaps = wc.stream().collect(Collectors.groupingBy(WorkerCert::getWorkerId));
|
|
|
}
|
|
|
|
|
|
|
|
|
for (ItfTblWangdianWxgDownload wxg :wxgDownladRecs){
|
|
|
- // 防止 ItfTblWangdianWxgDownload表有重复记录
|
|
|
- if (wxgs.contains(wxg.getSfzen() + wxg.getWxgmc().trim() + wxg.getYddh())){
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
// 无效的数据不新增
|
|
|
if (wxg.getFlag() != null){
|
|
|
if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
|
|
@@ -140,9 +138,9 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
|
|
|
}
|
|
|
|
|
|
// 有证件信息的师傅不再新增
|
|
|
- if (WorkerCertMaps.containsKey(workerId)){
|
|
|
+ /*if (WorkerCertWorkerIdMaps.containsKey(workerId)){
|
|
|
continue;
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
// 参数 获取网点维修工信息
|
|
|
getParameter(wxg.getWdno(), wxg.getWxgno(), req);
|
|
@@ -162,34 +160,33 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
|
|
|
|
|
|
log.info("总部获取的工程师证件照信息wvos:{}", JSONObject.toJSONString(wvos));
|
|
|
// 同步-新增证件信息
|
|
|
- getCertInfo(wvos, addList, workerId, workerWorkeridMap.get(workerId).get(0).getWorkerName());
|
|
|
+ getCertInfo(wvos, addList, workerId, workerWorkeridMap.get(workerId).get(0).getWorkerName(), WorkerCertWorkerIdMaps);
|
|
|
// 新增或修改(证件)
|
|
|
addDataCert(addList);
|
|
|
- wxgs.add(wxg.getSfzen() + wxg.getWxgmc().trim() + wxg.getYddh());
|
|
|
log.info("工程师证件照信息同步成功-师傅证件信息:{}", wxg.getSfzen());
|
|
|
} else {
|
|
|
log.info("获取工程师证件照信息失败-师傅证件信息:{}", wxg.getSfzen());
|
|
|
log.info("msg:{}", response.getMsg());
|
|
|
}
|
|
|
} catch (Exception ex) {
|
|
|
+ addDataCert(addList);
|
|
|
ex.printStackTrace();
|
|
|
log.info("工程师证件照信息同步失败-师傅证件信息:{}", wxg.getSfzen());
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- wxgs.clear();
|
|
|
}
|
|
|
|
|
|
private String checkIsGreeWroker(Map<String, List<Worker>> workerIdcardMap, ItfTblWangdianWxgDownload wxg) {
|
|
|
String workerId="";
|
|
|
if (workerIdcardMap.containsKey(wxg.getSfzen())){
|
|
|
- for (Worker w: workerIdcardMap.get(wxg.getSfzen())){
|
|
|
+ workerId = workerIdcardMap.get(wxg.getSfzen()).get(0).getWorkerId();
|
|
|
+ /*for (Worker w: workerIdcardMap.get(wxg.getSfzen())){
|
|
|
if (w.getWorkerName().equals(wxg.getWxgmc().trim()) && w.getMobile().equals(wxg.getYddh())){
|
|
|
workerId = w.getWorkerId();
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
}
|
|
|
return workerId;
|
|
|
}
|
|
@@ -622,44 +619,73 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
|
|
|
public void addDataCert(List<WorkerCert> addList) {
|
|
|
// 证件同步
|
|
|
if (addList.size()>0){
|
|
|
- workerCertService.saveBatch(addList);
|
|
|
+ workerCertService.saveOrUpdateBatch(addList);
|
|
|
addList.clear();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @NotNull
|
|
|
private String putCert(String image) throws Exception {
|
|
|
- String id = IdWorker.getIdStr();
|
|
|
- baseService.saveToFile(greeLogic.greeFileUrl(image), id);
|
|
|
- ossUtil.uploadFile(id, new File(id));
|
|
|
- return id;
|
|
|
+ SimpleDateFormat sdfs = new SimpleDateFormat("yyyyMM/");
|
|
|
+ String fileId = "";
|
|
|
+ String id = sdfs.format(new Date())+IdWorker.getIdStr();
|
|
|
+ try{
|
|
|
+ baseService.saveToFile(greeLogic.greeFileUrl(image), id);
|
|
|
+ ossUtil.uploadFile(id, new File(id));
|
|
|
+ fileId = id;
|
|
|
+ return fileId;
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ log.info("生成师傅证件照信息失败");
|
|
|
+ }
|
|
|
+ return fileId;
|
|
|
}
|
|
|
|
|
|
- private void workercertAdd(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId, ZJInfo zj, String workerName) throws Exception {
|
|
|
+ private void workercertAdd(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId, ZJInfoC zjinfo, String workerName) throws Exception {
|
|
|
+ ZJInfo zj = new ZJInfo();
|
|
|
+ zj=zjinfo.getZjInfo();
|
|
|
+
|
|
|
// 新增
|
|
|
WorkerCert add = new WorkerCert();
|
|
|
- add.setId(UUID.randomUUID().toString());
|
|
|
- add.setWorkerId(workerId);
|
|
|
- add.setCertName(zj.getZjmc());
|
|
|
- add.setName(workerName);
|
|
|
+ if (zjinfo.getWorkerCert() !=null){
|
|
|
+ MyBeanUtils.copyProperties(zjinfo.getWorkerCert(),add);
|
|
|
+ } else {
|
|
|
+ setAdd(wvos, workerId, workerName, zj, add);
|
|
|
+ }
|
|
|
|
|
|
if (zj.getZjlj().contains(",")){
|
|
|
List<String> result = Arrays.asList(zj.getZjlj().split(","));
|
|
|
- add.setOutFileUrl(result.get(0));
|
|
|
- add.setOutFileUrl2(result.get(1));
|
|
|
// 上传图片
|
|
|
String id = putCert(result.get(0));
|
|
|
- add.setFileUrl(id);
|
|
|
+ if (StringUtils.isNotEmpty(id)){
|
|
|
+ add.setFileUrl(id);
|
|
|
+ add.setOutFileUrl(result.get(0));
|
|
|
+ }
|
|
|
+
|
|
|
String id2 = putCert(result.get(1));
|
|
|
- add.setFileUrl2(id2);
|
|
|
+ if (StringUtils.isNotEmpty(id2)){
|
|
|
+ add.setFileUrl2(id2);
|
|
|
+ add.setOutFileUrl2(result.get(1));
|
|
|
+ }
|
|
|
new File(id).delete();
|
|
|
new File(id2).delete();
|
|
|
} else {
|
|
|
- add.setOutFileUrl(zj.getZjlj());
|
|
|
String id = putCert(zj.getZjlj());
|
|
|
- add.setFileUrl(id);
|
|
|
+ if (StringUtils.isNotEmpty(id)){
|
|
|
+ add.setFileUrl(id);
|
|
|
+ add.setOutFileUrl(zj.getZjlj());
|
|
|
+ }
|
|
|
new File(id).delete();
|
|
|
}
|
|
|
+ addList.add(add);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setAdd(WangdianWxgVos wvos, String workerId, String workerName, ZJInfo zj, WorkerCert add) throws ParseException {
|
|
|
+ add.setId(UUID.randomUUID().toString());
|
|
|
+ add.setWorkerId(workerId);
|
|
|
+ add.setCertName(zj.getZjmc().trim());
|
|
|
+ add.setName(workerName);
|
|
|
+
|
|
|
+
|
|
|
if (zj.getZjbh().contains("/")){
|
|
|
List<String> result = Arrays.asList(zj.getZjbh().split("/"));
|
|
|
add.setCertNo(result.get(1));
|
|
@@ -672,23 +698,79 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
|
|
|
if (StringUtils.isNotEmpty(zj.getZjfssj())){
|
|
|
add.setReviewTime(baseService.utcToDateStr(zj.getZjfssj()));
|
|
|
}
|
|
|
-
|
|
|
add.setExamineStatus("OK");
|
|
|
add.setSex(wvos.getXingb());
|
|
|
add.setOutSyncStatus(1);
|
|
|
add.setOutSyncTime(new Date());
|
|
|
-
|
|
|
- addList.add(add);
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,String workerName) throws Exception {
|
|
|
+ private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,String workerName,
|
|
|
+ Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps) throws Exception {
|
|
|
// 同步-新增证件信息
|
|
|
for (ZJInfo zj: wvos.getZjInfoList()){
|
|
|
- workercertAdd(wvos, addList, workerId, zj, workerName);
|
|
|
+ // 校验证件是否需要新增同步
|
|
|
+ ZJInfoC addZj =checkCertInfo(workerId,WorkerCertWorkerIdMaps,zj);
|
|
|
+ if (addZj.getZjInfo()!=null){
|
|
|
+ workercertAdd(wvos, addList, workerId, addZj, workerName);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private ZJInfoC checkCertInfo(String workerId,Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,ZJInfo zj) {
|
|
|
+ ZJInfo resultZjinfo = new ZJInfo();
|
|
|
+ ZJInfoC zjinfo = new ZJInfoC();
|
|
|
+
|
|
|
+ zjinfo.setZjInfo(zj);
|
|
|
+
|
|
|
+ // 不存在时直接新增
|
|
|
+ if (!WorkerCertWorkerIdMaps.containsKey(workerId)){
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已有证件信息,看是否已全部同步(相同证件名且证件照不为空)
|
|
|
+ for (WorkerCert item:WorkerCertWorkerIdMaps.get(workerId)){
|
|
|
+ // 名称相同 即表中已存在,只能是修改
|
|
|
+ if (item.getCertName().equals(zj.getZjmc())){
|
|
|
+ zjinfo.setWorkerCert(item);
|
|
|
+ //证件信息不为空不处理
|
|
|
+ // 两个证件照时
|
|
|
+ if (zj.getZjlj().contains(",")){
|
|
|
+ // 都存在该证件照不同步
|
|
|
+ if (StringUtils.isNotEmpty(item.getFileUrl()) && StringUtils.isNotEmpty(item.getFileUrl2())){
|
|
|
+ zjinfo.setZjInfo(null);
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+ List<String> result = Arrays.asList(zj.getZjlj().split(","));
|
|
|
+ // 未同步时直接返回新增
|
|
|
+ if (StringUtils.isEmpty(item.getFileUrl()) && StringUtils.isEmpty(item.getFileUrl2())){
|
|
|
+ zjinfo.setZjInfo(zj);
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+ // 只有一个未同步时新增也是修改
|
|
|
+ MyBeanUtils.copyProperties(zj,resultZjinfo);
|
|
|
+ resultZjinfo.setZjlj(result.get(0));
|
|
|
+ if (StringUtils.isEmpty(item.getFileUrl2())){
|
|
|
+ resultZjinfo.setZjlj(result.get(1));
|
|
|
+ }
|
|
|
+ zjinfo.setZjInfo(resultZjinfo);
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+ // 只有一个证件时 已同步不处理
|
|
|
+ if (StringUtils.isNotEmpty(item.getFileUrl())){
|
|
|
+ zjinfo.setZjInfo(null);
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ zjinfo.setWorkerCert(null);
|
|
|
+
|
|
|
+ return zjinfo;
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void wxgCategoryQueryAdd(ItfTblWangdianWxgDownload wxgDownload,
|
|
|
List<WorkerBrandAccount> workerBrandAccounts,
|