From 7affee8f1a764788780ff84353216092d3aa4acf Mon Sep 17 00:00:00 2001 From: howec <> Date: Tue, 30 Jan 2024 16:37:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E6=B0=B4=E5=8C=97=E6=96=B9=EF=BC=9A?= =?UTF-8?q?=20oss=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86=EF=BC=8C=E6=A1=B6?= =?UTF-8?q?=E7=89=A9=E7=90=86=E5=9C=B0=E5=9D=80=E8=BD=AC=E6=8D=A2=E9=99=84?= =?UTF-8?q?=E4=BB=B6id=E3=80=82=20=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=EF=BC=8C=E6=89=B9=E9=87=8F=E5=90=8C=E6=AD=A5eb=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E3=80=82=20=E8=A1=A8=E5=8D=95=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E6=A1=86=E5=81=9A=E8=BF=87=E6=BB=A4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 中水北方/annexSync/CompanyAnnexSyncJob.java | 160 +++++++++++++ .../banquethall/BanquetHallCheckController.java | 55 +++++ .../baseDataSync/SyncBaseInfoAreaJob.java | 221 ++++++++++++++++++ .../baseDataSync/SyncBaseInfoTeamAndUserJob.java | 188 +++++++++++++++ .../baseDataSync/SyncBaseInfoTeamJob.java | 189 +++++++++++++++ 5 files changed, 813 insertions(+) create mode 100644 中水北方/annexSync/CompanyAnnexSyncJob.java create mode 100644 中水北方/banquethall/BanquetHallCheckController.java create mode 100644 中水北方/baseDataSync/SyncBaseInfoAreaJob.java create mode 100644 中水北方/baseDataSync/SyncBaseInfoTeamAndUserJob.java create mode 100644 中水北方/baseDataSync/SyncBaseInfoTeamJob.java diff --git a/中水北方/annexSync/CompanyAnnexSyncJob.java b/中水北方/annexSync/CompanyAnnexSyncJob.java new file mode 100644 index 0000000..61f9528 --- /dev/null +++ b/中水北方/annexSync/CompanyAnnexSyncJob.java @@ -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_oldoafile取物理地址,创建附件id + * 根据附件id,关联到官网内容详情表:uf_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> historylist = jdbcTemplate.queryForList(sql); + if(CollectionUtil.isNotEmpty(historylist)) { + log.error("未同步的uf_oldoafile数据size:"+historylist.size()); + for(Map 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 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 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); + } + } + } + } +} diff --git a/中水北方/banquethall/BanquetHallCheckController.java b/中水北方/banquethall/BanquetHallCheckController.java new file mode 100644 index 0000000..a6ff9fa --- /dev/null +++ b/中水北方/banquethall/BanquetHallCheckController.java @@ -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; + +/** + * @use:根据人数获取符合条件的宴会厅id列表 + * @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 check( + @RequestParam("peoplenums") int peoplenums + ){ + log.error("peoplenums:{}",peoplenums); + String ids = ""; + Map 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> infolist = jdbcTemplate.queryForList(sql); + if(CollectionUtil.isNotEmpty(infolist)) { + Listidslist = new ArrayList<>(); + for(Map 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); + } +} diff --git a/中水北方/baseDataSync/SyncBaseInfoAreaJob.java b/中水北方/baseDataSync/SyncBaseInfoAreaJob.java new file mode 100644 index 0000000..2279798 --- /dev/null +++ b/中水北方/baseDataSync/SyncBaseInfoAreaJob.java @@ -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:基础信息同步 区域 + * author:liuhao + */ +@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 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 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 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 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 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 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 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 getValueByNameArea(JSONArray jsonArray) { + if(jsonArray == null || jsonArray.size() == 0) { + return null; + } + Map 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; + } +} diff --git a/中水北方/baseDataSync/SyncBaseInfoTeamAndUserJob.java b/中水北方/baseDataSync/SyncBaseInfoTeamAndUserJob.java new file mode 100644 index 0000000..8fe9015 --- /dev/null +++ b/中水北方/baseDataSync/SyncBaseInfoTeamAndUserJob.java @@ -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:基础信息同步 团队人员关系信息 + * author:liuhao + */ +@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 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 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 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 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 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 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 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 getValueByNameArea(JSONArray jsonArray) { + if(jsonArray == null || jsonArray.size() == 0) { + return null; + } + Map 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; + } +} diff --git a/中水北方/baseDataSync/SyncBaseInfoTeamJob.java b/中水北方/baseDataSync/SyncBaseInfoTeamJob.java new file mode 100644 index 0000000..6381a64 --- /dev/null +++ b/中水北方/baseDataSync/SyncBaseInfoTeamJob.java @@ -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:基础信息同步 团队信息 + * author:liuhao + */ +@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 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 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 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 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 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 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 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 getValueByNameArea(JSONArray jsonArray) { + if(jsonArray == null || jsonArray.size() == 0) { + return null; + } + Map 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; + } +}