天水北方:

oss文件管理,桶物理地址转换附件id。
定时同步,批量同步eb表单。
表单数据浏览框做过滤。
main
howec 1 year ago
parent ea4444ede5
commit 7affee8f1a

@ -0,0 +1,160 @@
package com.weaver.seconddev.tjzs.cronjob.job.annexSync;
import cn.hutool.core.collection.CollectionUtil;
import com.weaver.common.escheduler.handler.annotation.ESchedulerHandler;
import com.weaver.common.hrm.util.HrmCommonUtil;
import com.weaver.eteams.file.client.file.FileObj;
import com.weaver.eteams.file.client.file.StoreResults;
import com.weaver.eteams.file.client.param.RemoteUploadParam;
import com.weaver.eteams.file.client.remote.UploadClientService;
import com.weaver.file.ud.rpc.storage.match.FileStoRuleMatchClient;
import com.weaver.file.ud.storage.match.StoRuleMatchDto;
import com.weaver.file.ud.storage.match.StoRuleMatchParam;
import com.weaver.framework.rpc.annotation.RpcReference;
import com.weaver.seconddev.tjzs.tb.config.EbDbDataSourceConfig;
import com.weaver.teams.domain.EntityType;
import com.weaver.teams.domain.user.SimpleEmployee;
import com.weaver.teams.storage.constant.FileStorage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.activation.MimetypesFileTypeMap;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* uf_oldoafileid
* iduf_hornor
*/
@Slf4j
@Service
@Component
public class CompanyAnnexSyncJob {
@Autowired
private JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource());
/**
* ID
*/
private final static Long employeeId = 881987666380087298L;//张彦斌
private final static Long folderId = 1450581256459833792L; //公共知识库-公司外网
private final static String tenantKey = "tj02iu5kla";//生产租户key
@RpcReference
private UploadClientService uploadClientService;
@Autowired
private HrmCommonUtil hrmCommonUtil;
@RpcReference
private FileStoRuleMatchClient fileStoRuleMatchClient;
//每天中午12点触发
@ESchedulerHandler(value = "syncCompanyAnnexJob",cron = "0 0 12 * * ?")
public void syncCompanyAnnexJob() {
log.error("附件同步开始howec......");
//获取未同步附件id的所有数据
String sql = "select id,oldoaid,filename,ossid,filesize from uf_oldoafile where fjsfytb <> '1' or fjsfytb is NULL";
List<Map<String, Object>> historylist = jdbcTemplate.queryForList(sql);
if(CollectionUtil.isNotEmpty(historylist)) {
log.error("未同步的uf_oldoafile数据size:"+historylist.size());
for(Map<String, Object> singlemap : historylist) {
String oldid = String.valueOf(singlemap.get("id"));//数据ID
String oldoaid = String.valueOf(singlemap.get("oldoaid"));//关联id
String filename = String.valueOf(singlemap.get("filename"));//文件名称
String ossid = String.valueOf(singlemap.get("ossid")); //附件物理地址路径
String filesize1 = String.valueOf(singlemap.get("filesize")); //文件大小
BigDecimal dw = new BigDecimal("1024");
BigDecimal filesize2 = new BigDecimal(filesize1);
filesize2 = filesize2.multiply(dw).multiply(dw);
Long filesize = filesize2.toBigInteger().longValue();
log.error("oldid:{},oldoaid:{},filename:{},ossid:{},filesize:{}",oldid,oldoaid,filename,ossid,filesize);
//判断关联id在主表uf_hornor中是否存在存在则上传附件建立连接
sql = "select count(id) as nums from uf_hornor where IS_DELETE = '0' and oldoa_id = "+oldoaid;
log.error("sql1:::::"+sql);
Map<String,Object> dataExistmap = jdbcTemplate.queryForMap(sql);
long sums = (long)dataExistmap.get("nums");
if(sums == 1l) {
//获取行信息id进行关联
sql = "select id,file_name2 from uf_hornor where IS_DELETE = '0' and oldoa_id = "+oldoaid;
log.error("sql2:::::"+sql);
Map<String, Object> idmap = jdbcTemplate.queryForMap(sql);
//业务id。用于关联某个业务。如在邮件A上上传几个附件refId 可以传邮件A的id
String refId1 = String.valueOf(idmap.get("id"));
Long refId = Long.parseLong(refId1);
String file_name2 = idmap.get("file_name2") == null ? "" : String.valueOf(idmap.get("file_name2"));
//上传附件
SimpleEmployee simpleEmployee = hrmCommonUtil.getSimpleEmployee(employeeId);
//获取文件类型
String contentType = new MimetypesFileTypeMap().getContentType(filename);
//上传时间
String lastModified = String.valueOf(System.currentTimeMillis());
//附近的模块标识,标识为EB表单的模块
String module = EntityType.ebuilderform.name();
//上传的文件是否生成文档,true 生成false 不生成
boolean createDoc = true;
//标识附件来源,操作来源(用于标识,文件是从哪里操作上传,便于特殊业务逻辑处理)目前取值:
// 1. comment 来源于评论的附件2. form 来源表单自定义附件字段3.relation 来源关联附件字段 4.richText 来源富文本 5. fileAuth 主要用于记录鉴权参数
String source = "form";
String s1[] = ossid.split("/");
String url =s1[s1.length-1] ;
String s12 = "/"+s1[s1.length-1];
String filePath = ossid.replace(s12,"");
log.error("howec::::1:::url:{},filePath{}",url,filePath);
//设置物理文件信息
StoreResults storeResults = new StoreResults();
//设置租户key
storeResults.setCurrentTenantKey(tenantKey);
//设置物理关联信息
storeResults.setFileUrl(url);
//设置存储路径
storeResults.setFilePath(filePath);
//设置MD5是否变化默认false
storeResults.setMd5Change(false);
//设置文件名
storeResults.setFileName(filename);
//设置文件大小
storeResults.setFileRealSize(filesize);
//设置存储规则id
StoRuleMatchParam stoRuleMatchParam = new StoRuleMatchParam.MatchBuilder()
.setEmployeeId(employeeId).extModule(module).setTenantKey(tenantKey).build();
StoRuleMatchDto stoRuleMatchDto = fileStoRuleMatchClient.match(stoRuleMatchParam);
storeResults.setRuleVersionId(stoRuleMatchDto.getRuleVersionId());
//设置存储类型
FileStorage fileStorage = Optional.ofNullable(stoRuleMatchDto.getFileStorage()).orElse(FileStorage.NONE);
storeResults.setStorageType(fileStorage.getStorageKey());
//存储物理文件信息
uploadClientService.saveStorageInfo(storeResults);
//构建请求数据
RemoteUploadParam remoteUploadParam = new RemoteUploadParam(filename,lastModified,module);
remoteUploadParam.setSize(filesize);
remoteUploadParam.setCreateDoc(createDoc);
remoteUploadParam.setFolderId(folderId);
remoteUploadParam.setSource(source);
remoteUploadParam.setUrl(url);
remoteUploadParam.setRefId(refId);
remoteUploadParam.setStoreResults(storeResults);
FileObj fileObj = uploadClientService.remoteUploadSaveData(simpleEmployee,contentType,remoteUploadParam);
Long fjid = fileObj.getId();
if(file_name2.length()>0) {
file_name2 = file_name2+","+fjid;
}else {
file_name2 = fjid.toString();
}
//上传成功,更新同步状态,更新附件
sql = "update uf_hornor set file_name2 = '"+file_name2+"' where id = "+refId;
log.error("sql3:::::"+sql);
jdbcTemplate.execute(sql);
//将历史数据表中的是否已同步更新
sql = "update uf_oldoafile set fjsfytb = '1' where id = "+oldid;
log.error("sql4:::::"+sql);
jdbcTemplate.execute(sql);
}
}
}
}
}

@ -0,0 +1,55 @@
package com.weaver.seconddev.tjzs.controller.banquethall;
import cn.hutool.core.collection.CollectionUtil;
import com.weaver.common.authority.annotation.WeaPermission;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.seconddev.tjzs.tb.config.EbDbDataSourceConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @useid
* @author liuhao
* @return String,id
*/
@RestController
@RequestMapping("/papi/secondev/tjzs")
@Slf4j
public class BanquetHallCheckController {
@Autowired
private JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource());
@WeaPermission(publicPermission = true)
@PostMapping("/checkBanquetHallByPeople")
public WeaResult<String> check(
@RequestParam("peoplenums") int peoplenums
){
log.error("peoplenums:{}",peoplenums);
String ids = "";
Map<String,String> rs = new HashMap<>();
//根据人数判断符合条件数据 表单uf_ballroom_informat_registrat【宴会厅信息登记】
String sql = "select id from uf_ballroom_informat_registrat where max_num >= "+peoplenums+" and min_num <= "+peoplenums+" and IS_DELETE = '0'";
List<Map<String, Object>> infolist = jdbcTemplate.queryForList(sql);
if(CollectionUtil.isNotEmpty(infolist)) {
List<String>idslist = new ArrayList<>();
for(Map<String,Object> rs1 : infolist) {
String id = String.valueOf(rs1.get("id"));
idslist.add(id);
}
ids = idslist.stream().map(String::valueOf).collect(Collectors.joining(","));
}
return WeaResult.success(ids);
}
}

@ -0,0 +1,221 @@
package com.weaver.seconddev.tjzs.cronjob.job.baseDataSync;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.weaver.common.escheduler.handler.annotation.ESchedulerHandler;
import com.weaver.ebuilder.common.exception.BusinessException;
import com.weaver.ebuilder.form.client.entity.data.*;
import com.weaver.ebuilder.form.client.service.data.RemoteSimpleDataService;
import com.weaver.framework.rpc.annotation.RpcReference;
import com.weaver.framework.rpc.context.impl.TenantRpcContext;
import com.weaver.mc.util.StringUtils;
import com.weaver.seconddev.tjzs.cronjob.job.util.DataUtil;
import com.weaver.seconddev.tjzs.tb.config.EbDbDataSourceConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* use
* authorliuhao
*/
@Slf4j
@Service
@Component
public class SyncBaseInfoAreaJob {
@Autowired
private static JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource());
//测试
static {
//根据表单配置获取同步方式。全量,天,月,年
String sql = "select timeperiodname as name,timeperiod as num from ec_base.uf_setdaymaindata";
Map<String, Object> map = jdbcTemplate.queryForMap(sql);
String count = String.valueOf(map.get("num"));
code = Integer.parseInt(count);
}
private String quyuformid;
private String sysadminid;
private String tenantkey;
private String quyucode;
private String quyuareaorder;
private String quyuname;
private String quyuregionbelong;
private String quyusimplename;
private String quyuareaowner;
public SyncBaseInfoAreaJob() {
PropertiesConfiguration p = null;
try {
p = new PropertiesConfiguration();
p.setEncoding("utf-8");
p.setFileName("tjzssecond.properties");
p.load();
this.tenantkey = p.getString("tenantkey");
this.quyucode = p.getString("quyu.code");
this.quyuareaorder = p.getString("quyu.areaorder");
this.quyuname = p.getString("quyu.name");
this.quyuregionbelong = p.getString("quyu.regionbelong");
this.quyusimplename = p.getString("quyu.simplename");
this.quyuareaowner = p.getString("quyu.areaowner");
this.quyuformid=p.getString("quyu.formid");
this.sysadminid=p.getString("sysadminid");
}catch (ConfigurationException e) {
throw new BusinessException("获取tjzssecond.properties配置文件失败", e);
}
}
private static int code;
@RpcReference(group = "ebuilderform")
private RemoteSimpleDataService remoteSimpleDataService;
@ESchedulerHandler(value = "syncBaseInfoAreaJob",cron = "0 0 0/4 * * ?")
public void syncProjectPostJob() {
log.error("更新区域信息启动...");
Map<String, Object> datajson = new HashMap<>();
//通过接口获取区域信息,全量获取,动态分页
DataUtil dataUtil = new DataUtil();
//获取总页数,总条数
String tmpData = dataUtil.syncData(1, code, "区域信息");
log.error("获取区域信息返回报文:{}",tmpData);
if (!StringUtils.isBlank(tmpData)) {
JSONObject obj = JSONObject.parseObject(tmpData);
boolean suc = (boolean) obj.get("Success");
if (suc) {
int pageNum;
JSONObject pageObj = obj.getJSONObject("Page");
int totalNumber = pageObj.getIntValue("TotalNumber");
int pageSize = pageObj.getIntValue("PageSize");
if (totalNumber % pageSize == 0) {
pageNum = totalNumber / pageSize;
} else {
pageNum = totalNumber / pageSize + 1;
}
//开始分页
for (int i = 1; i <= pageNum; i++) {
tmpData = dataUtil.syncData(i, code, "区域信息");
JSONObject resdata = JSONObject.parseObject(tmpData);
JSONArray data = resdata.getJSONArray("Data");
if (data != null && data.size() > 0) {
List<EBDataReqDto> mainDatas = new ArrayList<>();
for (int a = 0; a < data.size(); a++) {
JSONObject dataobj = data.getJSONObject(a);
String MemberCode = dataobj.getString("MemberCode");
String MemberName = dataobj.getString("MemberName");
Map<String, String> smallarray = getValueByNameArea(dataobj.getJSONArray("MemberAttributes"));
String AeraCom_SimpleName =smallarray.containsKey("AeraCom_SimpleName")? smallarray.get("AeraCom_SimpleName") : "";
String AeraCom_OwnerGroup = smallarray.containsKey("AeraCom_OwnerGroup")? smallarray.get("AeraCom_OwnerGroup"): "";
// String AeraCom_OwnerGroup="ceshi";
String AeraCom_Order = smallarray.containsKey("AeraCom_Order")? smallarray.get("AeraCom_Order"): "";
String AeraCom_RegionBelong = smallarray.containsKey("AeraCom_RegionBelong")? smallarray.get("AeraCom_RegionBelong"): "";
//根据AeraCom_Order反查人员id如果存在执行不存在本条记录不做处理
String sql = "select count(id) as nums from eteams.employee where job_num = '"+AeraCom_OwnerGroup+"'";
log.error("howec111:{}",sql);
Map<String, Object> rs = jdbcTemplate.queryForMap(sql);
String userid = "";
long nums = (long) rs.get("nums");
if(nums==1l) {
sql = "select id from eteams.employee where job_num = '"+AeraCom_OwnerGroup+"'";
log.error("howec222:{}",sql);
rs = jdbcTemplate.queryForMap(sql);
userid = String.valueOf(rs.get("id"));
}
//根据MemberCode判断是否更新
String id = "yongyuanbucunzaiid";//如果是新增则传一个数据库永远不存在的id
sql = "select count(id) as nums from uf_region_tripartite where code = '" + MemberCode + "'";
rs = jdbcTemplate.queryForMap(sql);
nums = (long) rs.get("nums");
if (nums > 0l) {
sql = "select id from uf_region_tripartite where code = '" + MemberCode + "'";
log.error("howec333:{}",sql);
rs = jdbcTemplate.queryForMap(sql);
id = String.valueOf(rs.get("id"));
}
//数据拼接
EBDataReqDto ebDataReqDto = new EBDataReqDto();
List<EBDataReqDetailDto> singledata = Lists.newArrayList();
singledata.add(new EBDataReqDetailDto("id", id));
singledata.add(new EBDataReqDetailDto(quyucode, MemberCode));
singledata.add(new EBDataReqDetailDto(quyuareaorder, AeraCom_Order));
singledata.add(new EBDataReqDetailDto(quyuname, MemberName));
singledata.add(new EBDataReqDetailDto(quyuregionbelong, AeraCom_RegionBelong));
singledata.add(new EBDataReqDetailDto(quyusimplename, AeraCom_SimpleName));
singledata.add(new EBDataReqDetailDto(quyuareaowner, userid));//人员code转换为系统人员id
ebDataReqDto.setMainDatas(singledata);
mainDatas.add(ebDataReqDto);
log.error("howec:::::::::id:{},quyucode:{},quyuareaorder:{},quyuname:{},quyuregionbelong:{},quyusimplename:{},quyuareaowner:{}",id,MemberCode,AeraCom_Order,MemberName,AeraCom_RegionBelong,AeraCom_SimpleName,userid);
}
//保存
if(CollectionUtil.isNotEmpty(mainDatas)) {
saveEb(mainDatas,quyuformid);
}else {
log.error("howec无符合数据");
}
}
}
}
}
}
/**
* eb
* EB,
*/
private void saveEb(List<EBDataReqDto> datas,String formid) {
Gson gson = new Gson();
String jsonString = gson.toJson(datas);
log.error("howec:::tenantkey:{}",tenantkey);
log.error("howec:::sysadminid:{}",sysadminid);
log.error("howec:::jsons:{}",jsonString);
//二开免登陆的方式,设置租户
TenantRpcContext.setTargetTenantKey(tenantkey);
EBDataChangeReqDto ebDataChangeReqDto = new EBDataChangeReqDto();
// 构建基础参数; objId 表单id, operator 操作人, tenantKey 租户
ebDataChangeReqDto.setHeader(new EBDataReqHeader(formid, sysadminid, tenantkey));
EBDataReqOperation ebDataReqOperation = new EBDataReqOperation();
ebDataReqOperation.setUpdateType(EBDataUpdateType.ids);
EBDataReqOperationInfo ebDataReqOperationInfo = new EBDataReqOperationInfo();
ebDataReqOperationInfo.setNeedAdd(true);
ebDataReqOperation.setMainData(ebDataReqOperationInfo);
ebDataChangeReqDto.setOperation(ebDataReqOperation);
ebDataChangeReqDto.setDatas(datas);
EBDataChangeResult ebDataChangeResult = remoteSimpleDataService.updateFormData(ebDataChangeReqDto);
log.error("批量更新/新增eb-uf_region_tripartite返回值"+ebDataChangeResult.getMessage());
log.error("批量更新/新增eb-uf_region_tripartite返回值"+ebDataChangeResult.getStatus());
log.error("批量更新/新增eb-uf_region_tripartite返回值"+ebDataChangeResult.getDataIds().toString());
}
private Map<String,String> getValueByNameArea(JSONArray jsonArray) {
if(jsonArray == null || jsonArray.size() == 0) {
return null;
}
Map<String,String> map = new HashMap<>();
for(int i = 0 ;i < jsonArray.size(); i++) {
JSONObject obj1 = jsonArray.getJSONObject(i);
String name1 = obj1.getString("Name");
if("String".equals(obj1.getString("ValueType"))) {
map.put(name1,obj1.getString("Value"));
}
if("Domain".equals(obj1.getString("ValueType"))) {
JSONObject v2 = obj1.getJSONObject("Value");
String code = v2.getString("Code");
map.put(name1,code);
}
}
return map;
}
}

@ -0,0 +1,188 @@
package com.weaver.seconddev.tjzs.cronjob.job.baseDataSync;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.weaver.common.escheduler.handler.annotation.ESchedulerHandler;
import com.weaver.ebuilder.common.exception.BusinessException;
import com.weaver.ebuilder.form.client.entity.data.*;
import com.weaver.ebuilder.form.client.service.data.RemoteSimpleDataService;
import com.weaver.framework.rpc.annotation.RpcReference;
import com.weaver.framework.rpc.context.impl.TenantRpcContext;
import com.weaver.mc.util.StringUtils;
import com.weaver.seconddev.tjzs.cronjob.job.util.DataUtil;
import com.weaver.seconddev.tjzs.tb.config.EbDbDataSourceConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* use
* authorliuhao
*/
@Slf4j
@Service
@Component
public class SyncBaseInfoTeamAndUserJob {
@Autowired
private static JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource());
static {
//根据表单配置获取同步方式。全量,天,月,年
String sql = "select timeperiodname as name,timeperiod as num from ec_base.uf_setdaymaindata";
Map<String, Object> map = jdbcTemplate.queryForMap(sql);
String count = String.valueOf(map.get("num"));
code = Integer.parseInt(count);
}
private String teamuserformid;
private String sysadminid;
private String tenantkey;
private String teamusercode;
private String teamusername;
private String teamcode;
private String usercode;
public SyncBaseInfoTeamAndUserJob() {
PropertiesConfiguration p = null;
try {
p = new PropertiesConfiguration();
p.setEncoding("utf-8");
p.setFileName("tjzssecond.properties");
p.load();
this.tenantkey = p.getString("tenantkey");
this.teamuserformid = p.getString("teamuser.formid");
this.teamusercode = p.getString("teamuser.teamusercode");
this.teamusername = p.getString("teamuser.teamusername");
this.teamcode = p.getString("teamuser.teamcode");
this.usercode = p.getString("teamuser.usercode");
this.sysadminid=p.getString("sysadminid");
}catch (ConfigurationException e) {
throw new BusinessException("获取tjzssecond.properties配置文件失败", e);
}
}
private static int code;
@RpcReference(group = "ebuilderform")
private RemoteSimpleDataService remoteSimpleDataService;
@ESchedulerHandler(value = "syncBaseInfoTeamAndUserJob",cron = "0 0 0/4 * * ?")
public void syncProjectPostJob() {
log.error("更新团队人员关系信息启动...");
Map<String, Object> datajson = new HashMap<>();
//通过接口获取团队人员关系信息,全量获取,动态分页
DataUtil dataUtil = new DataUtil();
//获取总页数,总条数
String tmpData = dataUtil.syncData(1, code, "团队人员关系信息");
log.error("获取团队人员关系信息返回报文:{}",tmpData);
if (!StringUtils.isBlank(tmpData)) {
JSONObject obj = JSONObject.parseObject(tmpData);
boolean suc = (boolean) obj.get("Success");
if (suc) {
int pageNum;
JSONObject pageObj = obj.getJSONObject("Page");
int totalNumber = pageObj.getIntValue("TotalNumber");
int pageSize = pageObj.getIntValue("PageSize");
if (totalNumber % pageSize == 0) {
pageNum = totalNumber / pageSize;
} else {
pageNum = totalNumber / pageSize + 1;
}
//开始分页
for (int i = 1; i <= pageNum; i++) {
tmpData = dataUtil.syncData(i, code, "团队人员关系信息");
log.error("获取团队信息返回报文:{},当前页数:{}",tmpData,i);
JSONObject resdata = JSONObject.parseObject(tmpData);
JSONArray data = resdata.getJSONArray("Data");
if (data != null && data.size() > 0) {
List<EBDataReqDto> mainDatas = new ArrayList<>();
for (int a = 0; a < data.size(); a++) {
JSONObject dataobj = data.getJSONObject(a);
String MemberCode = dataobj.getString("MemberCode");
String MemberName = dataobj.getString("MemberName");
Map<String, String> smallarray = getValueByNameArea(dataobj.getJSONArray("MemberAttributes"));
String Team_Code =smallarray.containsKey("Team_Code")? smallarray.get("Team_Code") : "";
String Ppl_Code =smallarray.containsKey("Ppl_Code")? smallarray.get("Ppl_Code") : "";
//根据MemberCode判断是否更新
String id = "yongyuanbucunzaiid";//如果是新增则传一个数据库永远不存在的id
String sql = "select count(id) as nums from uf_teamuserelaship where teamusercode = '" + MemberCode + "'";
Map<String, Object> rs = jdbcTemplate.queryForMap(sql);
long nums = (long) rs.get("nums");
if (nums > 0l) {
sql = "select id from uf_teamuserelaship where teamusercode = '" + MemberCode + "'";
rs = jdbcTemplate.queryForMap(sql);
id = String.valueOf(rs.get("id"));
}
//数据拼接
EBDataReqDto ebDataReqDto = new EBDataReqDto();
List<EBDataReqDetailDto> singledata = Lists.newArrayList();
singledata.add(new EBDataReqDetailDto("id", id));
singledata.add(new EBDataReqDetailDto(teamusercode, MemberCode));
singledata.add(new EBDataReqDetailDto(teamusername, MemberName));
singledata.add(new EBDataReqDetailDto(teamcode, Team_Code));
singledata.add(new EBDataReqDetailDto(usercode, Ppl_Code));
ebDataReqDto.setMainDatas(singledata);
mainDatas.add(ebDataReqDto);
}
//保存
saveEb(mainDatas,teamuserformid);
}
}
}
}
}
/**
* eb
* EB,
*/
private void saveEb(List<EBDataReqDto> datas,String formid) {
//二开免登陆的方式,设置租户
TenantRpcContext.setTargetTenantKey(tenantkey);
EBDataChangeReqDto ebDataChangeReqDto = new EBDataChangeReqDto();
// 构建基础参数; objId 表单id, operator 操作人, tenantKey 租户
ebDataChangeReqDto.setHeader(new EBDataReqHeader(formid, sysadminid, tenantkey));
EBDataReqOperation ebDataReqOperation = new EBDataReqOperation();
ebDataReqOperation.setUpdateType(EBDataUpdateType.ids);
EBDataReqOperationInfo ebDataReqOperationInfo = new EBDataReqOperationInfo();
ebDataReqOperationInfo.setNeedAdd(true);
ebDataReqOperation.setMainData(ebDataReqOperationInfo);
ebDataChangeReqDto.setOperation(ebDataReqOperation);
ebDataChangeReqDto.setDatas(datas);
EBDataChangeResult ebDataChangeResult = remoteSimpleDataService.updateFormData(ebDataChangeReqDto);
log.info("批量更新/新增eb-uf_teamuserelaship返回值"+ebDataChangeResult.getMessage());
log.info("批量更新/新增eb-uf_teamuserelaship返回值"+ebDataChangeResult.getStatus());
log.info("批量更新/新增eb-uf_teamuserelaship返回值"+ebDataChangeResult.getDataIds().toString());
}
private Map<String,String> getValueByNameArea(JSONArray jsonArray) {
if(jsonArray == null || jsonArray.size() == 0) {
return null;
}
Map<String,String> map = new HashMap<>();
for(int i = 0 ;i < jsonArray.size(); i++) {
JSONObject obj1 = jsonArray.getJSONObject(i);
String name1 = obj1.getString("Name");
if("String".equals(obj1.getString("ValueType"))) {
map.put(name1,obj1.getString("Value"));
}
if("Domain".equals(obj1.getString("ValueType"))) {
JSONObject v2 = obj1.getJSONObject("Value");
String code = v2.getString("Code");
map.put(name1,code);
}
}
return map;
}
}

@ -0,0 +1,189 @@
package com.weaver.seconddev.tjzs.cronjob.job.baseDataSync;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.weaver.common.escheduler.handler.annotation.ESchedulerHandler;
import com.weaver.ebuilder.common.exception.BusinessException;
import com.weaver.ebuilder.form.client.entity.data.*;
import com.weaver.ebuilder.form.client.service.data.RemoteSimpleDataService;
import com.weaver.framework.rpc.annotation.RpcReference;
import com.weaver.framework.rpc.context.impl.TenantRpcContext;
import com.weaver.mc.util.StringUtils;
import com.weaver.seconddev.tjzs.cronjob.job.util.DataUtil;
import com.weaver.seconddev.tjzs.tb.config.EbDbDataSourceConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* use
* authorliuhao
*/
@Slf4j
@Service
@Component
public class SyncBaseInfoTeamJob {
@Autowired
private static JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource());
//测试
static {
//根据表单配置获取同步方式。全量,天,月,年
String sql = "select timeperiodname as name,timeperiod as num from ec_base.uf_setdaymaindata";
Map<String, Object> map = jdbcTemplate.queryForMap(sql);
String count = String.valueOf(map.get("num"));
code = Integer.parseInt(count);
}
private String teamformid;
private String sysadminid;
private String tenantkey;
private String teamcode;
private String teamname;
private String usercode;
private String description;
public SyncBaseInfoTeamJob() {
PropertiesConfiguration p = null;
try {
p = new PropertiesConfiguration();
p.setEncoding("utf-8");
p.setFileName("tjzssecond.properties");
p.load();
this.tenantkey = p.getString("tenantkey");
this.teamformid = p.getString("team.formid");
this.teamcode = p.getString("team.teamcode");
this.teamname = p.getString("team.teamname");
this.usercode = p.getString("team.usercode");
this.description = p.getString("team.description");
this.sysadminid=p.getString("sysadminid");
}catch (ConfigurationException e) {
throw new BusinessException("获取tjzssecond.properties配置文件失败", e);
}
}
private static int code;
@RpcReference(group = "ebuilderform")
private RemoteSimpleDataService remoteSimpleDataService;
@ESchedulerHandler(value = "syncBaseInfoTeamJob",cron = "0 0 0/4 * * ?")
public void syncProjectPostJob() {
log.error("更新团队信息启动...");
Map<String, Object> datajson = new HashMap<>();
//通过接口获取团队信息,全量获取,动态分页
DataUtil dataUtil = new DataUtil();
//获取总页数,总条数
String tmpData = dataUtil.syncData(1, code, "团队信息");
log.error("获取团队信息返回报文:{}",tmpData);
if (!StringUtils.isBlank(tmpData)) {
JSONObject obj = JSONObject.parseObject(tmpData);
boolean suc = (boolean) obj.get("Success");
if (suc) {
int pageNum;
JSONObject pageObj = obj.getJSONObject("Page");
int totalNumber = pageObj.getIntValue("TotalNumber");
int pageSize = pageObj.getIntValue("PageSize");
if (totalNumber % pageSize == 0) {
pageNum = totalNumber / pageSize;
} else {
pageNum = totalNumber / pageSize + 1;
}
//开始分页
for (int i = 1; i <= pageNum; i++) {
tmpData = dataUtil.syncData(i, code, "团队信息");
log.error("获取团队信息返回报文:{},当前页数:{}",tmpData,i);
JSONObject resdata = JSONObject.parseObject(tmpData);
JSONArray data = resdata.getJSONArray("Data");
if (data != null && data.size() > 0) {
List<EBDataReqDto> mainDatas = new ArrayList<>();
for (int a = 0; a < data.size(); a++) {
JSONObject dataobj = data.getJSONObject(a);
String MemberCode = dataobj.getString("MemberCode");
String MemberName = dataobj.getString("MemberName");
Map<String, String> smallarray = getValueByNameArea(dataobj.getJSONArray("MemberAttributes"));
String Team_Remark =smallarray.containsKey("Team_Remark")? smallarray.get("Team_Remark") : "";
String Team_UserCode =smallarray.containsKey("Team_UserCode")? smallarray.get("Team_UserCode") : "";
//根据MemberCode判断是否更新
String id = "yongyuanbucunzaiid";//如果是新增则传一个数据库永远不存在的id
String sql = "select count(id) as nums from uf_teaminfo where teamcode = '" + MemberCode + "'";
Map<String, Object> rs = jdbcTemplate.queryForMap(sql);
long nums = (long) rs.get("nums");
if (nums > 0l) {
sql = "select id from uf_teaminfo where teamcode = '" + MemberCode + "'";
rs = jdbcTemplate.queryForMap(sql);
id = String.valueOf(rs.get("id"));
}
//数据拼接
EBDataReqDto ebDataReqDto = new EBDataReqDto();
List<EBDataReqDetailDto> singledata = Lists.newArrayList();
singledata.add(new EBDataReqDetailDto("id", id));
singledata.add(new EBDataReqDetailDto(teamcode, MemberCode));
singledata.add(new EBDataReqDetailDto(teamname, MemberName));
singledata.add(new EBDataReqDetailDto(usercode, Team_UserCode));
singledata.add(new EBDataReqDetailDto(description, Team_Remark));
ebDataReqDto.setMainDatas(singledata);
mainDatas.add(ebDataReqDto);
}
//保存
saveEb(mainDatas,teamformid);
}
}
}
}
}
/**
* eb
* EB,
*/
private void saveEb(List<EBDataReqDto> datas,String formid) {
//二开免登陆的方式,设置租户
TenantRpcContext.setTargetTenantKey(tenantkey);
EBDataChangeReqDto ebDataChangeReqDto = new EBDataChangeReqDto();
// 构建基础参数; objId 表单id, operator 操作人, tenantKey 租户
ebDataChangeReqDto.setHeader(new EBDataReqHeader(formid, sysadminid, tenantkey));
EBDataReqOperation ebDataReqOperation = new EBDataReqOperation();
ebDataReqOperation.setUpdateType(EBDataUpdateType.ids);
EBDataReqOperationInfo ebDataReqOperationInfo = new EBDataReqOperationInfo();
ebDataReqOperationInfo.setNeedAdd(true);
ebDataReqOperation.setMainData(ebDataReqOperationInfo);
ebDataChangeReqDto.setOperation(ebDataReqOperation);
ebDataChangeReqDto.setDatas(datas);
EBDataChangeResult ebDataChangeResult = remoteSimpleDataService.updateFormData(ebDataChangeReqDto);
log.error("批量更新/新增eb-uf_teaminfo返回值"+ebDataChangeResult.getMessage());
log.error("批量更新/新增eb-uf_teaminfo返回值"+ebDataChangeResult.getStatus());
log.error("批量更新/新增eb-uf_teaminfo返回值"+ebDataChangeResult.getDataIds().toString());
}
private Map<String,String> getValueByNameArea(JSONArray jsonArray) {
if(jsonArray == null || jsonArray.size() == 0) {
return null;
}
Map<String,String> map = new HashMap<>();
for(int i = 0 ;i < jsonArray.size(); i++) {
JSONObject obj1 = jsonArray.getJSONObject(i);
String name1 = obj1.getString("Name");
if("String".equals(obj1.getString("ValueType"))) {
map.put(name1,obj1.getString("Value"));
}
if("Domain".equals(obj1.getString("ValueType"))) {
JSONObject v2 = obj1.getJSONObject("Value");
String code = v2.getString("Code");
map.put(name1,code);
}
}
return map;
}
}
Loading…
Cancel
Save