274 lines
14 KiB
Java
274 lines
14 KiB
Java
package com.zhgd.xmgl.async;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.zhgd.xmgl.modules.basicdata.service.UploadFileService;
|
|
import com.zhgd.xmgl.modules.project.entity.Project;
|
|
import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
|
|
import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper;
|
|
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
|
import com.zhgd.xmgl.modules.worker.entity.*;
|
|
import com.zhgd.xmgl.modules.worker.mapper.*;
|
|
import com.zhgd.xmgl.util.Base64Util;
|
|
import com.zhgd.xmgl.util.IdCardUtils;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.collections.MapUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* @program: wisdomSite
|
|
* @description:
|
|
* @author: Mr.Peng
|
|
* @create: 2022-05-27 16:21
|
|
**/
|
|
@Slf4j
|
|
@Component
|
|
public class AsyncProjectWork {
|
|
@Autowired
|
|
private WorkerInfoMapper workerInfoMapper;
|
|
@Autowired
|
|
private ProjectMapper projectMapper;
|
|
@Autowired
|
|
private TeamInfoMapper teamInfoMapper;
|
|
@Autowired
|
|
private EnterpriseInfoMapper enterpriseInfoMapper;
|
|
@Autowired
|
|
private ProjectEnterpriseMapper projectEnterpriseMapper;
|
|
@Autowired
|
|
private EnterpriseTypeMapper enterpriseTypeMapper;
|
|
@Autowired
|
|
private DepartmentInfoMapper departmentInfoMapper;
|
|
@Autowired
|
|
private WorkerTypeMapper workerTypeMapper;
|
|
@Autowired
|
|
private UploadFileService uploadFileService;
|
|
|
|
@Async("sendWorkerExecutor")
|
|
public void updateOrAddProjectWorkerData(Map<String, Object> map) {
|
|
if(map!=null) {
|
|
String projectSn = MapUtils.getString(map, "projectSn");
|
|
String projectName = MapUtils.getString(map, "projectName");
|
|
QueryWrapper<Project> queryWrapper=new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(Project::getProjectSn,projectSn);
|
|
int count=projectMapper.selectCount(queryWrapper);
|
|
if(count>0){
|
|
log.info("---开始同步项目人员数据-----"+projectName+"------编号:"+projectSn);
|
|
List<Map<String, Object>> list= (List<Map<String, Object>>) map.get("list");
|
|
if(list!=null&&list.size()>0){
|
|
for(Map<String, Object> data:list){
|
|
addOrEditProjectWork(data,projectSn);
|
|
}
|
|
log.info("---同步项目人员数据完成-----"+projectName+"------编号:"+projectSn);
|
|
}else{
|
|
log.info("---未获取到需要同步的人员数据-----"+projectName+"------编号:"+projectSn);
|
|
}
|
|
}else{
|
|
log.info("---未找到对应的项目,同步老项目版人员数据失败-----"+projectName+"------编号:"+projectSn);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void addOrEditProjectWork(Map<String,Object> info,String projectSn){
|
|
try {
|
|
log.info("---同步人员开始-----"+MapUtils.getString(info, "workerName")+"------项目编号:"+projectSn);
|
|
WorkerInfo workerInfo = new WorkerInfo();
|
|
workerInfo.setWorkerName(MapUtils.getString(info, "workerName"));
|
|
if (StringUtils.isNotEmpty(MapUtils.getString(info, "workerNumber"))) {
|
|
workerInfo.setAttendanceNumber(MapUtils.getString(info, "workerNumber"));
|
|
} else {
|
|
workerInfo.setAttendanceNumber(MapUtils.getString(info, "idCard"));
|
|
}
|
|
workerInfo.setIdCard(MapUtils.getString(info, "idCard"));
|
|
workerInfo.setProjectSn(projectSn);
|
|
if (StringUtils.isNotEmpty(workerInfo.getIdCard())) {
|
|
Map<String, String> idCardInfoMap = IdCardUtils.getBirthdayAgeSex(workerInfo.getIdCard());
|
|
workerInfo.setSex(MapUtils.getInteger(idCardInfoMap, "sex"));
|
|
workerInfo.setBirthday(MapUtils.getString(idCardInfoMap, "birthday"));
|
|
}
|
|
|
|
workerInfo.setNativePlace(MapUtils.getString(info, "nativePlace"));
|
|
workerInfo.setNation(MapUtils.getString(info, "nationId"));
|
|
workerInfo.setPhoneNumber(MapUtils.getString(info, "phoneNumber"));
|
|
workerInfo.setIssuingAuthorityForIdcard(MapUtils.getString(info, "issuingAuthorityForIdcard"));
|
|
workerInfo.setEducational(MapUtils.getString(info, "educational"));
|
|
|
|
workerInfo.setPoliticsStatus(MapUtils.getInteger(info, "politicsStatus"));
|
|
workerInfo.setEmergentPerson(MapUtils.getString(info, "emergentPerson"));
|
|
workerInfo.setEmergentPhone(MapUtils.getString(info, "emergentPhone"));
|
|
if (StringUtils.isNotEmpty(MapUtils.getString(info, "idCardEndDate"))) {
|
|
if (MapUtils.getString(info, "idCardEndDate").indexOf("长期") >= 0) {
|
|
workerInfo.setLongTerm(1);
|
|
} else {
|
|
workerInfo.setIdCardEndDate(MapUtils.getString(info, "idCardEndDate"));
|
|
}
|
|
}
|
|
workerInfo.setPersonSn(MapUtils.getString(info, "workInfoSn"));
|
|
workerInfo.setEnterDate(MapUtils.getString(info, "enterDate"));
|
|
workerInfo.setPayRollBankNumber(MapUtils.getString(info, "bankCode"));
|
|
workerInfo.setPayRollBankName(MapUtils.getString(info, "payRollBankName"));
|
|
workerInfo.setInserviceType(1);
|
|
|
|
QueryWrapper<EnterpriseInfo> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(EnterpriseInfo::getSocialCode, MapUtils.getString(info, "socialCode"));
|
|
EnterpriseInfo tempEnterpriseInfo = enterpriseInfoMapper.selectOne(queryWrapper);
|
|
QueryWrapper<EnterpriseType> enterpriseTypeQueryWrapper = new QueryWrapper<>();
|
|
enterpriseTypeQueryWrapper.lambda().eq(EnterpriseType::getCompanyTypeName, MapUtils.getString(info, "companyTypeName"));
|
|
EnterpriseType oldEnterpriseType = enterpriseTypeMapper.selectOne(enterpriseTypeQueryWrapper);
|
|
String enterpriseName = "";
|
|
if (tempEnterpriseInfo != null) {
|
|
QueryWrapper<ProjectEnterprise> queryWrapper1 = new QueryWrapper<>();
|
|
queryWrapper1.lambda().eq(ProjectEnterprise::getEnterpriseId, tempEnterpriseInfo.getId())
|
|
.eq(ProjectEnterprise::getProjectSn, projectSn);
|
|
int count = projectEnterpriseMapper.selectCount(queryWrapper1);
|
|
if (count == 0) {
|
|
ProjectEnterprise projectEnterprise = new ProjectEnterprise();
|
|
projectEnterprise.setEnterpriseId(tempEnterpriseInfo.getId());
|
|
projectEnterprise.setProjectSn(projectSn);
|
|
if (oldEnterpriseType != null) {
|
|
projectEnterprise.setEnterpriseTypeId(oldEnterpriseType.getId());
|
|
} else {
|
|
projectEnterprise.setEnterpriseTypeId(12L);
|
|
}
|
|
projectEnterpriseMapper.insert(projectEnterprise);
|
|
}
|
|
workerInfo.setEnterpriseId(tempEnterpriseInfo.getId());
|
|
enterpriseName = tempEnterpriseInfo.getEnterpriseName();
|
|
} else {
|
|
EnterpriseInfo enterpriseInfo = new EnterpriseInfo();
|
|
enterpriseInfo.setEnterpriseSn(MapUtils.getString(info, "companysn"));
|
|
enterpriseInfo.setProjectSn(projectSn);
|
|
enterpriseInfo.setSocialCode(MapUtils.getString(info, "socialCode"));
|
|
enterpriseInfo.setEnterpriseName(MapUtils.getString(info, "companyName"));
|
|
enterpriseInfoMapper.insert(enterpriseInfo);
|
|
ProjectEnterprise projectEnterprise = new ProjectEnterprise();
|
|
projectEnterprise.setEnterpriseId(enterpriseInfo.getId());
|
|
projectEnterprise.setProjectSn(enterpriseInfo.getProjectSn());
|
|
if (oldEnterpriseType != null) {
|
|
projectEnterprise.setEnterpriseTypeId(oldEnterpriseType.getId());
|
|
} else {
|
|
projectEnterprise.setEnterpriseTypeId(12L);
|
|
}
|
|
projectEnterpriseMapper.insert(projectEnterprise);
|
|
workerInfo.setEnterpriseId(enterpriseInfo.getId());
|
|
enterpriseName = enterpriseInfo.getEnterpriseName();
|
|
}
|
|
Integer personType = MapUtils.getInteger(info, "personType");
|
|
workerInfo.setPersonType(personType);
|
|
workerInfo.setFieldAcquisitionUrl(getImageUrl(MapUtils.getString(info, "workFieldAcquisitionUrl")));
|
|
workerInfo.setIdCardUpPhotoUrl(getImageUrl(MapUtils.getString(info, "idCardUpPhotoUrl")));
|
|
workerInfo.setIdCardBigPhotoUrl(getImageUrl(MapUtils.getString(info, "idCardBigPhotoUrl")));
|
|
workerInfo.setIdCardDownPhotoUrl(getImageUrl(MapUtils.getString(info, "idCardDownPhotoUrl")));
|
|
if (personType == 2) {
|
|
String teamName = "";
|
|
if (StringUtils.isNotEmpty(MapUtils.getString(info, "teamName"))) {
|
|
teamName = MapUtils.getString(info, "teamName");
|
|
} else {
|
|
teamName = "其它";
|
|
}
|
|
teamName = teamName + "-" + enterpriseName;
|
|
QueryWrapper<DepartmentInfo> departmentInfoQueryWrapper = new QueryWrapper<>();
|
|
departmentInfoQueryWrapper.lambda().eq(DepartmentInfo::getProjectSn, workerInfo.getProjectSn())
|
|
.eq(DepartmentInfo::getEnterpriseId, workerInfo.getEnterpriseId())
|
|
.eq(DepartmentInfo::getDepartmentName, teamName);
|
|
DepartmentInfo oldDepartmentInfo = departmentInfoMapper.selectOne(departmentInfoQueryWrapper);
|
|
if (oldDepartmentInfo != null) {
|
|
workerInfo.setDepartmentId(oldDepartmentInfo.getId());
|
|
} else {
|
|
DepartmentInfo departmentInfo = new DepartmentInfo();
|
|
departmentInfo.setDepartmentName(teamName);
|
|
departmentInfo.setProjectSn(workerInfo.getProjectSn());
|
|
departmentInfo.setEnterpriseId(workerInfo.getEnterpriseId());
|
|
departmentInfoMapper.insert(departmentInfo);
|
|
workerInfo.setDepartmentId(departmentInfo.getId());
|
|
}
|
|
} else if (personType == 1) {
|
|
String teamName = "";
|
|
if (StringUtils.isNotEmpty(MapUtils.getString(info, "teamName"))) {
|
|
teamName = MapUtils.getString(info, "teamName");
|
|
} else {
|
|
teamName = "其它";
|
|
}
|
|
teamName = teamName + "-" + enterpriseName;
|
|
QueryWrapper<TeamInfo> teamInfoQueryWrapper = new QueryWrapper<>();
|
|
teamInfoQueryWrapper.lambda().eq(TeamInfo::getProjectSn, workerInfo.getProjectSn())
|
|
.eq(TeamInfo::getTeamName, teamName);
|
|
TeamInfo oldTeamInfo = teamInfoMapper.selectOne(teamInfoQueryWrapper);
|
|
if (oldTeamInfo != null) {
|
|
workerInfo.setTeamId(oldTeamInfo.getId());
|
|
} else {
|
|
String typeName = "";
|
|
if (StringUtils.isNotEmpty(MapUtils.getString(info, "typeName"))) {
|
|
typeName = MapUtils.getString(info, "typeName");
|
|
} else {
|
|
teamName = "其它";
|
|
}
|
|
QueryWrapper<WorkerType> workerTypeQueryWrapper = new QueryWrapper<>();
|
|
workerTypeQueryWrapper.lambda().eq(WorkerType::getProjectSn, workerInfo.getProjectSn())
|
|
.eq(WorkerType::getTypeName, typeName);
|
|
WorkerType oldWorkerType = workerTypeMapper.selectOne(workerTypeQueryWrapper);
|
|
TeamInfo teamInfo = new TeamInfo();
|
|
if (oldWorkerType != null) {
|
|
teamInfo.setWorkerTypeId(oldWorkerType.getId());
|
|
} else {
|
|
WorkerType workerType = new WorkerType();
|
|
workerType.setProjectSn(workerInfo.getProjectSn());
|
|
workerType.setTypeName(typeName);
|
|
workerTypeMapper.insert(workerType);
|
|
teamInfo.setWorkerTypeId(workerType.getId());
|
|
}
|
|
|
|
teamInfo.setTeamName(teamName);
|
|
teamInfo.setProjectSn(workerInfo.getProjectSn());
|
|
teamInfo.setEnterpriseId(workerInfo.getEnterpriseId());
|
|
String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
|
|
teamInfo.setTeamSn(uuid);
|
|
//teamInfo.setTeamSn(MapUtils.getString(info,"teamSn"));
|
|
teamInfoMapper.insert(teamInfo);
|
|
workerInfo.setTeamId(teamInfo.getId());
|
|
}
|
|
}
|
|
QueryWrapper<WorkerInfo> queryWrapper1 = new QueryWrapper<>();
|
|
queryWrapper1.lambda().eq(WorkerInfo::getProjectSn, workerInfo.getProjectSn())
|
|
.eq(WorkerInfo::getPersonSn, workerInfo.getPersonSn());
|
|
WorkerInfo oldWorkerInfo = workerInfoMapper.selectOne(queryWrapper1);
|
|
if (oldWorkerInfo != null) {
|
|
workerInfo.setId(oldWorkerInfo.getId());
|
|
workerInfoMapper.updateById(workerInfo);
|
|
} else {
|
|
workerInfo.setAddTime(new Date());
|
|
workerInfoMapper.insert(workerInfo);
|
|
}
|
|
}catch (Exception e){
|
|
log.error("---同步人员失败-----"+MapUtils.getString(info, "workerName")+"------项目编号:"+projectSn+"----原因:"+e.getMessage());
|
|
}
|
|
}
|
|
|
|
private String getImageUrl(String imageData){
|
|
String imageUrl=null;
|
|
try {
|
|
if (StringUtils.isNotEmpty(imageData)) {
|
|
String img = Base64Util.getFileToBase64(imageData);
|
|
if (!img.startsWith("data:image")) {
|
|
img = "data:image/jpg;base64," + img;
|
|
}
|
|
Map<String, Object> result2 = uploadFileService.uploadBase64Image(img);
|
|
if ("SUCCESS".equals(MapUtils.getString(result2, "status"))) {
|
|
Map<String, Object> dataMap = (Map<String, Object>) result2.get("data");
|
|
imageUrl=MapUtils.getString(dataMap, "imageUrl");
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
log.error(e.getMessage());
|
|
}
|
|
return imageUrl;
|
|
}
|
|
|
|
}
|