1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636 |
- package com.galaxis.manatee.task;
- import com.fasterxml.jackson.annotation.JsonProperty;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
- import com.galaxis.manatee.capsule.bo.ChuanyunObject;
- import com.galaxis.manatee.constant.ChuanYunConstant;
- import com.galaxis.manatee.constant.StringConstant;
- import com.galaxis.manatee.dao.*;
- import com.galaxis.manatee.entity.chuanyun.data.object.*;
- import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunFindAllBizDTO;
- import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunProjectCashFlowDTO;
- import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
- import com.galaxis.manatee.entity.chuanyun.dto.Filter;
- import com.galaxis.manatee.exception.BigSizeException;
- import com.galaxis.manatee.manager.ChuanYunManager;
- import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
- import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
- import lombok.Data;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.BeanUtils;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.util.StringUtils;
- import java.math.BigDecimal;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.util.ArrayList;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.concurrent.atomic.AtomicInteger;
- /**
- * @author zcj
- * @version 0.1
- */
- @Service
- @Slf4j
- public class ChuanyunBasicDataScheduledTask {
- private final Integer pageSize = 20;
- private final ChuanYunManager chuanYunManager;
- private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
- private final ChuanyunUserDao chuanyunUserDao;
- private final ChuanyunSupplierDao chuanyunSupplierDao;
- private final ChuanyunCompanyDao chuanyunCompanyDao;
- private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
- private final ChuanyunCostDao chuanyunCostDao;
- private final ChuanyunReimbursementSubjectDao chuanyunReimbursementSubjectDao;
- private final ChuanyunProjectTypeDao chuanyunProjectTypeDao;
- private final ChuanyunSpecialProcedureDao chuanyunSpecialProcedureDao;
- private final ChuanyunCostCollectionDao chuanyunCostCollectionDao;
- private final ChuanyunReimbursementItemsDao chuanyunReimbursementItemsDao;
- private final ChuanyunAskForLeaveDao chuanyunAskForLeaveDao;
- private final ChuanyunMaterialDao chuanyunMaterialDao;
- private final ChuanyunOutDepartmentDao chuanyunOutDepartmentDao;
- private final ChuanyunBusinessEntertainmentDao chuanyunBusinessEntertainmentDao;
- private final ChuanyunProjectChangeDao chuanyunProjectChangeDao;
- private final ChuanyunAttachmentDao chuanyunAttachmentDao;
- private final ChuanyunProjectAttachmentDao chuanyunProjectAttachmentDao;
- private final ChuanyunSubProjectDao chuanyunSubProjectDao;
- public ChuanyunBasicDataScheduledTask(ChuanYunManager chuanYunManager, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserDao chuanyunUserDao, ChuanyunSupplierDao chuanyunSupplierDao, ChuanyunCompanyDao chuanyunCompanyDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunCostDao chuanyunCostDao, ChuanyunReimbursementSubjectDao chuanyunReimbursementSubjectDao, ChuanyunProjectTypeDao chuanyunProjectTypeDao, ChuanyunSpecialProcedureDao chuanyunSpecialProcedureDao, ChuanyunCostCollectionDao chuanyunCostCollectionDao, ChuanyunReimbursementItemsDao chuanyunReimbursementItemsDao, ChuanyunAskForLeaveDao chuanyunAskForLeaveDao, ChuanyunMaterialDao chuanyunMaterialDao, ChuanyunOutDepartmentDao chuanyunOutDepartmentDao, ChuanyunBusinessEntertainmentDao chuanyunBusinessEntertainmentDao, ChuanyunProjectChangeDao chuanyunProjectChangeDao, ChuanyunAttachmentDao chuanyunAttachmentDao, ChuanyunProjectAttachmentDao chuanyunProjectAttachmentDao, ChuanyunSubProjectDao chuanyunSubProjectDao) {
- this.chuanYunManager = chuanYunManager;
- this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
- this.chuanyunUserDao = chuanyunUserDao;
- this.chuanyunSupplierDao = chuanyunSupplierDao;
- this.chuanyunCompanyDao = chuanyunCompanyDao;
- this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
- this.chuanyunCostDao = chuanyunCostDao;
- this.chuanyunReimbursementSubjectDao = chuanyunReimbursementSubjectDao;
- this.chuanyunProjectTypeDao = chuanyunProjectTypeDao;
- this.chuanyunSpecialProcedureDao = chuanyunSpecialProcedureDao;
- this.chuanyunCostCollectionDao = chuanyunCostCollectionDao;
- this.chuanyunReimbursementItemsDao = chuanyunReimbursementItemsDao;
- this.chuanyunAskForLeaveDao = chuanyunAskForLeaveDao;
- this.chuanyunMaterialDao = chuanyunMaterialDao;
- this.chuanyunOutDepartmentDao = chuanyunOutDepartmentDao;
- this.chuanyunBusinessEntertainmentDao = chuanyunBusinessEntertainmentDao;
- this.chuanyunProjectChangeDao = chuanyunProjectChangeDao;
- this.chuanyunAttachmentDao = chuanyunAttachmentDao;
- this.chuanyunProjectAttachmentDao = chuanyunProjectAttachmentDao;
- this.chuanyunSubProjectDao = chuanyunSubProjectDao;
- }
- public void getReimbursementItemsManually() {
- this.getReimbursementItems();
- }
- public void getUserCompanyManually() {
- this.getUserCompany();
- }
- public void getUserListManually() {
- this.getUserList();
- }
- public void getCompanyManually() {
- this.getCompany();
- }
- public void getGroupProjectManually() {
- this.getGroupProject();
- }
- public void getCostCollectionManually() {
- this.getCostCollection();
- }
- public void getGroupProjectForSynchronizationManually() {
- this.getGroupProjectForSynchronization();
- }
- public void chuanyunUpdateProjectMemberManually(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- projectMemberListCheck(chuanyunGroupProjectDO);
- }
- /**
- * 定时将氚云中的数据保存到manatee
- */
- @Scheduled(fixedDelay = 3600000L)
- private void scheduledUserCompany() {
- //获取人员-归属公司信息
- getUserCompany();
- }
- /**
- * 定时将氚云中的数据保存到manatee
- */
- @Scheduled(fixedDelay = 3600000L)
- private void scheduledGroupProject() {
- //获取集团项目数据
- getGroupProject();
- }
- /**
- * 定时将氚云中的数据保存到manatee
- */
- @Scheduled(fixedDelay = 3600000L)
- private void scheduledSubProject() {
- //获取子项目数据
- getSubProject();
- }
- /**
- * 定时将氚云中的数据保存到manatee
- */
- @Scheduled(fixedDelay = 3600000L)
- private void scheduledGetDate() {
- //获取用户数据
- getUserList();
- //支出档案类型
- getProjectType();
- //项目备件明细
- getAttachmentId();
- //获取报销科目
- getReimbursementSubject();
- //获取成本中心
- getCost();
- //获取公司信息
- getCompany();
- //获取供应商
- getSupplier();
- //人员报销特殊项目
- getReimbursementItems();
- //人工成本特殊项目
- getCostCollection();
- //专项费用分摊
- getSpecialProcedure();
- }
- /**
- * 定时将氚云中的数据保存到manatee
- * 修改为两天同步一次
- */
- @Scheduled(fixedDelay = 172800000L)
- private void scheduledPushData() {
- //钉钉请假
- saveAskForLeave();
- //更新受益部门名称
- getOutDepartment();
- //更新业务招待申请
- updateBusinessEntertainment();
- //项目实施变更
- saveProjectChange();
- }
- /**
- * 获取用户工号
- */
- // @Scheduled(fixedDelay = 1800000L)
- private void getUserEmployeeNumber() {
- chuanyunUserDao.findAll().forEach(chuanyunUserDO -> {
- if (StringUtils.isEmpty(chuanyunUserDO.getEmployeeNumber())) {
- ChuanYunConstant.USER_EMPLOYEE_NUMBER.put(chuanyunUserDO.getObjectId(), "");
- } else {
- ChuanYunConstant.USER_EMPLOYEE_NUMBER.put(chuanyunUserDO.getObjectId(), chuanyunUserDO.getEmployeeNumber());
- }
- });
- log.info("用户工号MAP更新完成");
- }
- /**
- * 从氚云中获取用户列表
- */
- private void getUserList() {
- var objectMapper = new ObjectMapper();
- var chuanyunFindAllDTO = chuanYunManager.findAll(ChuanyunUserDO.APP_CODE, ChuanyunUserDO.ACTION_NAME, ChuanyunUserDO.CONTROLLER);
- var totalCount = 0;
- try {
- List<ChuanyunUserDO> userList = objectMapper.readValue(chuanyunFindAllDTO.getReturnData().getData(), new TypeReference<>() {
- });
- totalCount = chuanyunUserDao.saveAll(userList).size();
- } catch (Exception e) {
- e.printStackTrace();
- }
- log.info("用户信息保存保存" + totalCount + "工号映射更新完成");
- }
- /**
- * 从氚云获取集团项目信息
- */
- private void getGroupProject() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunGroupProjectDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunGroupProjectDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- result.forEach(chuanyunGroupProjectDO -> {
- var tmpGroupProjectDO = chuanyunGroupProjectDao.findById(chuanyunGroupProjectDO.getObjectId());
- tmpGroupProjectDO.ifPresent(projectDO -> {
- chuanyunGroupProjectDO.setIsCreate(projectDO.getIsCreate());
- chuanyunGroupProjectDao.delete(tmpGroupProjectDO.get());
- });
- projectMemberString(chuanyunGroupProjectDO);
- //处理项目对象中的项目成员数据
- projectMemberListCheck(chuanyunGroupProjectDO);
- //处理项目对象中的项目经理、项目负责人数据
- projectManagerCheck(chuanyunGroupProjectDO);
- chuanyunGroupProjectDao.save(chuanyunGroupProjectDO);
- });
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("集团项目信息保存保存" + totalCount + "项目映射更新完成");
- }
- public void projectMemberString(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- var objectMapper = new ObjectMapper();
- if (chuanyunGroupProjectDO.getProjectMemberList() != null && chuanyunGroupProjectDO.getProjectMemberList().length > 0 && chuanyunGroupProjectDO.getProjectMemberList().length < 500) {
- try {
- ProjectMemberDTO groupProjectMemberListUpdateDTO = new ProjectMemberDTO();
- //将项目组成员名称拼成字符串
- String memberString = "";
- for (int i = 0; i < chuanyunGroupProjectDO.getProjectMemberList().length; i++) {
- memberString += chuanyunGroupProjectDO.getProjectMemberList()[i] + StringConstant.SEMICOLON;
- }
- groupProjectMemberListUpdateDTO.setProjectMemberString(memberString);
- var groupProjectMemberListUpdateString = objectMapper.writeValueAsString(groupProjectMemberListUpdateDTO);
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunGroupProjectDO.getObjectId(), groupProjectMemberListUpdateString);
- if (chuanyunSaveDTO.getSuccessful()) {
- // log.info("更新项目组成员名称成功");
- }
- } catch (Exception e) {
- e.printStackTrace();
- log.error(e.getMessage());
- }
- }
- }
- /**
- * 更新项目成员方法
- *
- * @param chuanyunGroupProjectDO 项目对象
- */
- private void projectMemberListCheck(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- var objectMapper = new ObjectMapper();
- //第一步,清除项目负责人、项目经理数据。保证能够触发权限修改流程
- GroupProjectMemberListUpdateDTO groupProjectMemberListUpdateDTO = new GroupProjectMemberListUpdateDTO(chuanyunGroupProjectDO);
- if (groupProjectMemberListUpdateDTO.getProjectMemberList() != null && groupProjectMemberListUpdateDTO.getProjectMemberList().length > 0) {
- //添加项目组成员权限
- // groupProjectMemberListUpdateDTO.add();
- // String[] addProjectMemberList = groupProjectMemberListUpdateDTO.getProjectMemberList();
- // try {
- // ChuanyunSaveDTO newChuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),objectMapper.writeValueAsString(groupProjectMemberListUpdateDTO));
- // } catch (Exception e) {
- // e.printStackTrace();
- // log.warn(chuanyunGroupProjectDO.getObjectId()+"更新项目成员失败"+e.getMessage());
- // }
- groupProjectMemberListUpdateDTO.delete();
- // 第一次更新为提交操作,后进行删除后,再次进行更新操作。之后再新增成员后更新。
- try {
- ChuanyunSaveDTO newChuanyunSaveDTO = chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunGroupProjectDO.getObjectId(), objectMapper.writeValueAsString(groupProjectMemberListUpdateDTO));
- } catch (Exception e) {
- log.error("manatee自动删除项目组成员后更新失败: {}, 异常信息: {}", chuanyunGroupProjectDO.getObjectId(), e.getMessage());
- e.printStackTrace();
- }
- //保证项目成员信息更新成功
- boolean updateFlag = false;
- int count = 0;
- while (!updateFlag) {
- try {
- count++;
- if (count == 20){
- updateFlag = true;
- }
- // 再次将项目组成员设置进去。
- GroupProjectMemberListUpdateDTO againGroupProjectMemberListUpdateDTO = new GroupProjectMemberListUpdateDTO(chuanyunGroupProjectDO);
- var groupProjectMemberListUpdateString = objectMapper.writeValueAsString(againGroupProjectMemberListUpdateDTO);
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunGroupProjectDO.getObjectId(), groupProjectMemberListUpdateString);
- if (chuanyunSaveDTO.getSuccessful()) {
- // log.info("更新项目成员成功"+groupProjectMemberListUpdateString);
- updateFlag = true;
- } else {
- log.warn(chuanyunGroupProjectDO.getObjectId() + "更新项目成员失败" + againGroupProjectMemberListUpdateDTO);
- log.warn("{}", chuanyunGroupProjectDO);
- }
- } catch (Exception e) {
- e.printStackTrace();
- log.warn(chuanyunGroupProjectDO.getObjectId() + "更新项目成员失败" + e.getMessage());
- }
- }
- }
- }
- public void push(){
- saveProjectChange();
- }
- /**
- * 更新钉钉项目实施变更申请
- */
- private void saveProjectChange() {
- var objectMapper = new ObjectMapper();
- AtomicInteger totalCount = new AtomicInteger();
- //获取项目实施变更的信息
- List<ChuanyunProjectChangeDO> projectChangeList = chuanyunProjectChangeDao.findAll();
- projectChangeList.forEach(projectChange -> {
- try {
- //根据钉钉号获取氚云用户Id
- ChuanyunUserDO chuanyunUserDO = chuanyunUserDao.findByDingTalkAccountContaining(projectChange.getOriginatorUserid());
- if (chuanyunUserDO != null) {
- projectChange.setProjectChangeUserId(chuanyunUserDO.getObjectId());
- }
- //将对象转化为json格式的字符串
- var purcostString = objectMapper.writeValueAsString(ProjectChangeDTO.fromChuanyunProjectChangeDO(projectChange));
- ChuanyunSaveDTO chuanyunSaveDTO;
- //根据项目号判断是否存在
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000001_2," + projectChange.getTitle());
- var filter = Filter.instance(0, 1, true, "And", matchers);
- ChuanyunFindAllBizDTO<LinkedHashMap<String, String>> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectChangeDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null && (projectChange.getIsCancel() == 1)) {
- return;
- }
- if (chuanyunFindAllResponse.getReturnData() == null && (projectChange.getIsCancel() == 0)) {
- //新增
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectChangeDO.SCHEMA_CODE, purcostString, true);
- } else if (chuanyunFindAllResponse.getReturnData() != null && (projectChange.getIsCancel() == 1)) {
- //删除撤销
- chuanyunSaveDTO = chuanYunManager.delete(ChuanyunProjectChangeDO.SCHEMA_CODE, chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"));
- } else {
- //更新
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectChangeDO.SCHEMA_CODE, chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"), purcostString);
- }
- if (chuanyunSaveDTO.getSuccessful()) {
- totalCount.getAndIncrement();
- // log.info("新增第"+totalCount+"条项目实施变更信息成功");
- } else {
- log.warn("新增项目实施变更信息失败");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- log.info("共新增" + totalCount + "条项目实施变更信息成功");
- }
- /**
- * 通过更新集团项目中的项目负责人、EBG项目经理、IBG项目经理
- *
- * @param chuanyunGroupProjectDO 项目对象
- */
- private void projectManagerCheck(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- //将projectManger和projectOwner替换为主键
- if (!StringUtils.isEmpty(chuanyunGroupProjectDO.getProjectOwner())) {
- chuanyunGroupProjectDO.setProjectOwner(chuanyunGroupProjectDO.getProjectOwnerObject().getObjectId());
- }
- if (!StringUtils.isEmpty(chuanyunGroupProjectDO.getEbgProjectManager())) {
- chuanyunGroupProjectDO.setEbgProjectManager(chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId());
- }
- if (!StringUtils.isEmpty(chuanyunGroupProjectDO.getIbgProjectManager())) {
- chuanyunGroupProjectDO.setIbgProjectManager(chuanyunGroupProjectDO.getIbgProjectManagerObject().getObjectId());
- }
- if (StringUtils.isEmpty(chuanyunGroupProjectDO.getOutProjectName())) {
- chuanyunGroupProjectDO.setOutProjectName(chuanyunGroupProjectDO.getProjectName());
- }
- var objectMapper = new ObjectMapper();
- //第一步,清除项目负责人、项目经理数据。保证能够触发权限修改流程
- GroupProjectUpdateDTO groupProjectUpdateDTO = new GroupProjectUpdateDTO();
- try {
- chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunGroupProjectDO.getObjectId(), objectMapper.writeValueAsString(groupProjectUpdateDTO));
- } catch (Exception e) {
- e.printStackTrace();
- log.warn(chuanyunGroupProjectDO.getObjectId() + "更新项目经理失败" + e.getMessage());
- }
- groupProjectUpdateDTO = new GroupProjectUpdateDTO(chuanyunGroupProjectDO);
- //保证项目经理信息更新成功
- boolean updateFlag = false;
- int count = 0;
- while (!updateFlag) {
- try {
- count++;
- if (count == 20){
- updateFlag = true;
- }
- var groupProjectUpdateString = objectMapper.writeValueAsString(groupProjectUpdateDTO);
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunGroupProjectDO.getObjectId(), groupProjectUpdateString);
- if (chuanyunSaveDTO.getSuccessful()) {
- updateFlag = true;
- //更新成功之后重新获取集团项目组信息,防止id为空
- var chuanyunFindResponse = chuanYunManager.find(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunGroupProjectDO.getObjectId());
- ChuanyunGroupProjectDO tmpChuanyunGroupProjectDO = objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObject(), new TypeReference<>() {
- });
- chuanyunGroupProjectDO.setDetailList(tmpChuanyunGroupProjectDO.getDetailList());
- } else {
- log.warn(chuanyunGroupProjectDO.getObjectId() + "更新项目经理失败" + groupProjectUpdateString);
- log.warn(chuanyunGroupProjectDO + "");
- Thread.sleep(5000L);
- }
- } catch (Exception e) {
- e.printStackTrace();
- log.warn(chuanyunGroupProjectDO.getObjectId() + "更新项目经理失败" + e.getMessage());
- }
- }
- }
- /**
- * 更新业务招待申请
- */
- private void updateBusinessEntertainment() {
- var objectMapper = new ObjectMapper();
- List<ChuanyunBusinessEntertainmentDO> list = chuanyunBusinessEntertainmentDao.findAll();
- list.forEach(chuanyunBusinessEntertainmentDO -> {
- try {
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000010_2," + chuanyunBusinessEntertainmentDO.getBusinessId());
- var filter = Filter.instance(0, 1, true, "And", matchers);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunBusinessEntertainmentDO.SCHEMA_CODE, filter);
- BusinessEntertainmentDTO businessEntertainmentDTO = new BusinessEntertainmentDTO(chuanyunBusinessEntertainmentDO);
- ChuanyunUserDO chuanyunUserDO = chuanyunUserDao.findByName(chuanyunBusinessEntertainmentDO.getApplicant());
- if (chuanyunUserDO != null) {
- businessEntertainmentDTO.setApplicant(chuanyunUserDO.getObjectId());
- }
- var businessString = objectMapper.writeValueAsString(businessEntertainmentDTO);
- ChuanyunSaveDTO chuanyunSaveDTO;
- if (chuanyunFindAllResponse.getReturnData() != null) {
- List<ChuanyunBusinessEntertainmentDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- chuanyunSaveDTO = chuanYunManager.delete(ChuanyunBusinessEntertainmentDO.SCHEMA_CODE, result.get(0).getObjectId());
- }
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunBusinessEntertainmentDO.SCHEMA_CODE, businessString, true);
- if (chuanyunSaveDTO.getSuccessful()) {
- log.info("新增业务招待申请成功");
- } else {
- log.error("新增业务招待申请失败");
- }
- } catch (JsonProcessingException | BigSizeException e) {
- e.printStackTrace();
- }
- });
- }
- public void pushAskForLeave(){
- saveAskForLeave();
- }
- /**
- * 更新请假信息
- */
- private void saveAskForLeave() {
- var objectMapper = new ObjectMapper();
- //获取请假的信息
- List<ChuanyunAskForLeaveDO> askForLeaveList = chuanyunAskForLeaveDao.findAll();
- log.info("开始上传请假信息");
- askForLeaveList.forEach(askForLeave -> {
- try {
- //根据钉钉号获取氚云用户Id
- ChuanyunUserDO chuanyunUserDO = chuanyunUserDao.findByDingTalkAccountContaining(askForLeave.getOriginatorUserid());
- if (chuanyunUserDO != null) {
- askForLeave.setAskForLeaveUserId(chuanyunUserDO.getObjectId());
- }
- //根据dingTalkUserId获取chuanyunUser
- var purcostString = objectMapper.writeValueAsString(AskForLeaveDTO.fromChuanyunAskForLeaveDO(askForLeave));
- ChuanyunSaveDTO chuanyunSaveDTO;
- //根据项目号判断是否存在
- List<String> matchers = new ArrayList<>();
- matchers.add("F0000001_2," + askForLeave.getTitle());
- var filter = Filter.instance(0, 1, true, "And", matchers);
- ChuanyunFindAllBizDTO<LinkedHashMap<String, String>> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunAskForLeaveDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null && (askForLeave.getIsCanncel() == 1)) {
- return;
- }
- if (chuanyunFindAllResponse.getReturnData() == null && (askForLeave.getIsCanncel() == 0)) {
- //新增
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunAskForLeaveDO.SCHEMA_CODE, purcostString, true);
- } else if (chuanyunFindAllResponse.getReturnData() != null && (askForLeave.getIsCanncel() == 1)) {
- //删除撤销
- chuanyunSaveDTO = chuanYunManager.delete(ChuanyunAskForLeaveDO.SCHEMA_CODE, chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"));
- } else {
- //更新
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunAskForLeaveDO.SCHEMA_CODE, chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"), purcostString);
- }
- if (chuanyunSaveDTO.getSuccessful()) {
- // log.info("新增请假信息成功");
- } else {
- log.warn("新增请假信息失败");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- log.info("新增请假信息完成");
- }
- /**
- * 更新外部部门名称
- */
- private void getOutDepartment() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunOutDepartmentDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunOutDepartmentDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- result.forEach(chuanyunOutDepartmentDO -> {
- chuanyunOutDepartmentDO.setDepartmentId(chuanyunOutDepartmentDO.getDepartmentObject().getObjectId());
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunOutDepartmentDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("外部部门名称保存保存" + totalCount);
- }
- /**
- * 更新报销受益部门
- */
- private void getReimbursement() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- List<String> matchersString = new ArrayList<>();
- matchersString.add("Status_2,1");
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true, Filter.AND, matchersString);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunReimbursementDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- List<ChuanyunReimbursementDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- result.forEach(chuanyunReimbursementDO -> {
- ReimbursementDTO reimbursementDTO = new ReimbursementDTO(chuanyunReimbursementDO);
- try {
- var selfMonthString = objectMapper.writeValueAsString(reimbursementDTO);
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunReimbursementDO.SCHEMA_CODE, chuanyunReimbursementDO.getObjectId(), selfMonthString);
- if (!chuanyunSaveDTO.getSuccessful()) {
- log.warn("更新报销单受益部门失败");
- }
- } catch (JsonProcessingException | BigSizeException e) {
- e.printStackTrace();
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- log.info(e.getMessage());
- }
- }
- }
- /**
- * 获取供应商信息
- */
- private void getSupplier() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunSupplierDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunSupplierDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunSupplierDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("供应商信息保存保存" + totalCount);
- }
- /**
- * 同步子项目
- */
- public void getSubProject() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunSubProjectDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- List<ChuanyunSubProjectDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- result.forEach(chuanyunSubProjectDO -> {
- if (chuanyunSubProjectDO.getProjectMemberList() != null && chuanyunSubProjectDO.getProjectMemberList().length > 0) {
- String memberString = "";
- for (ChuanyunObject chuanyunObject : chuanyunSubProjectDO.getProjectMemberObject()) {
- memberString += chuanyunObject.getObjectId() + StringConstant.SEMICOLON;
- }
- chuanyunSubProjectDO.setProjectMember(memberString);
- }
- });
- chuanyunSubProjectDao.saveAll(result);
- } catch (Exception e) {
- e.printStackTrace();
- log.warn(e.getMessage());
- }
- }
- }
- public void getAttachmentId() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunAttachmentDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- List<ChuanyunAttachmentDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- chuanyunAttachmentDao.saveAll(result);
- chuanyunProjectAttachmentDao.deleteAll();
- result.forEach(chuanyunAttachmentDO -> {
- chuanyunAttachmentDO.getList().forEach(chuanyunAttachmentDetailDO -> {
- ChuanyunProjectAttachmentDO chuanyunProjectAttachmentDO = new ChuanyunProjectAttachmentDO();
- ChuanyunGroupProjectDO chuanyunGroupProjectDO = chuanyunGroupProjectDao.findByObjectId(chuanyunAttachmentDO.getProjectId());
- if (chuanyunGroupProjectDO != null) {
- chuanyunProjectAttachmentDO.setProjectName(chuanyunGroupProjectDO.getProjectName());
- }
- chuanyunProjectAttachmentDO.setProjectCode(chuanyunAttachmentDO.getProjectCode());
- ChuanyunMaterialDO chuanyunMaterialDO = chuanyunMaterialDao.findByObjectId(chuanyunAttachmentDetailDO.getMaterialCode());
- if (chuanyunMaterialDO != null) {
- chuanyunProjectAttachmentDO.setMaterialCode(chuanyunMaterialDO.getTitle());
- }
- chuanyunProjectAttachmentDO.setEnclosureId(chuanyunAttachmentDetailDO.getEnclosureId());
- chuanyunProjectAttachmentDO.setEnglishName(chuanyunAttachmentDetailDO.getEnglishName());
- chuanyunProjectAttachmentDO.setPartsOwnership(chuanyunAttachmentDetailDO.getPartsOwnership());
- chuanyunProjectAttachmentDO.setQty(chuanyunAttachmentDetailDO.getQty());
- chuanyunProjectAttachmentDO.setUnit(chuanyunAttachmentDetailDO.getUnit());
- chuanyunProjectAttachmentDO.setUnitPricewithoutTax(chuanyunAttachmentDetailDO.getUnitPricewithoutTax());
- chuanyunProjectAttachmentDO.setConsumableParts(chuanyunAttachmentDetailDO.getConsumableParts());
- chuanyunProjectAttachmentDO.setRemarks(chuanyunAttachmentDetailDO.getRemarks());
- chuanyunProjectAttachmentDO.setCoefficient(chuanyunAttachmentDetailDO.getCoefficient());
- chuanyunProjectAttachmentDO.setExchangeRate(chuanyunAttachmentDetailDO.getExchangeRate());
- chuanyunProjectAttachmentDO.setTotalPrice(chuanyunAttachmentDetailDO.getTotalPrice());
- chuanyunProjectAttachmentDO.setMaterialName(chuanyunAttachmentDetailDO.getMaterialName());
- chuanyunProjectAttachmentDao.save(chuanyunProjectAttachmentDO);
- });
- });
- log.info("项目备件更新完成");
- } catch (Exception e) {
- e.printStackTrace();
- log.warn(e.getMessage());
- }
- }
- }
- /**
- * 更新支出档案类型
- */
- public void getProjectType() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectTypeDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunProjectTypeDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunProjectTypeDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- log.info("支出档案类型" + totalCount);
- }
- }
- /**
- * 更新公司信息
- */
- private void getCompany() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunCompanyDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunCompanyDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunCompanyDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("公司信息保存保存" + totalCount);
- }
- /**
- * 更新成本中心
- */
- private void getCost() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunCostDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunCostDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunCostDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("成本中心保存保存" + totalCount);
- }
- /**
- * 获取专项分摊规则
- */
- private void getSpecialProcedure() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunSpecialProcedureDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunSpecialProcedureDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunSpecialProcedureDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("专项分摊信息保存保存" + totalCount);
- }
- /**
- * 获取人员报销特殊项目
- */
- private void getReimbursementItems() {
- chuanyunReimbursementItemsDao.deleteAll();
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunReimbursementItemsDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunReimbursementItemsDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- result.forEach(chuanyunReimbursementItemsDO -> {
- //同步外部项目名称
- var chuanyunFindResponse = chuanYunManager.find(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunReimbursementItemsDO.getAdjustProjectId());
- ChuanyunGroupProjectDO tmpChuanyunGroupProjectDO = objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObject(), new TypeReference<>() {
- });
- if (!chuanyunReimbursementItemsDO.getAdjustProjectName().equals(tmpChuanyunGroupProjectDO.getOutProjectName())) {
- chuanyunReimbursementItemsDO.setAdjustProjectName(tmpChuanyunGroupProjectDO.getOutProjectName());
- var reimbursementItemsDTO = new ReimbursementItemsDTO(chuanyunReimbursementItemsDO);
- String groupProjectUpdateString = null;
- try {
- groupProjectUpdateString = objectMapper.writeValueAsString(reimbursementItemsDTO);
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunReimbursementItemsDO.SCHEMA_CODE, chuanyunReimbursementItemsDO.getObjectId(), groupProjectUpdateString);
- if (chuanyunSaveDTO.getSuccessful()) {
- // log.info(chuanyunReimbursementItemsDO.getObjectId() + "同步外部项目名称成功" + groupProjectUpdateString);
- } else {
- log.warn(chuanyunReimbursementItemsDO.getObjectId() + "同步外部项目名称失败" + groupProjectUpdateString);
- }
- } catch (JsonProcessingException | BigSizeException e) {
- e.printStackTrace();
- }
- }
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunReimbursementItemsDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("人员报销特殊项目保存保存" + totalCount);
- }
- /**
- * 获取人工成本特殊项目
- */
- private void getCostCollection() {
- chuanyunCostCollectionDao.deleteAll();
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunCostCollectionDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunCostCollectionDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- result.forEach(chuanyunCostCollectionDO -> {
- //同步外部项目名称
- var chuanyunFindResponse = chuanYunManager.find(ChuanyunGroupProjectDO.SCHEMA_CODE, chuanyunCostCollectionDO.getProjectId());
- ChuanyunGroupProjectDO tmpChuanyunGroupProjectDO = objectMapper.convertValue(chuanyunFindResponse.getReturnData().getBizObject(), new TypeReference<>() {
- });
- //外部名称有修改就更新
- if (!tmpChuanyunGroupProjectDO.getOutProjectName().equals(chuanyunCostCollectionDO.getOutProjectName())) {
- chuanyunCostCollectionDO.setOutProjectName(tmpChuanyunGroupProjectDO.getOutProjectName());
- var costCollectionDTO = new CostCollectionDTO(chuanyunCostCollectionDO);
- String groupProjectUpdateString = null;
- try {
- groupProjectUpdateString = objectMapper.writeValueAsString(costCollectionDTO);
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunCostCollectionDO.SCHEMA_CODE, chuanyunCostCollectionDO.getObjectId(), groupProjectUpdateString);
- if (chuanyunSaveDTO.getSuccessful()) {
- log.info(chuanyunCostCollectionDO.getObjectId() + "同步外部项目名称成功" + groupProjectUpdateString);
- } else {
- log.warn(chuanyunCostCollectionDO.getObjectId() + "同步外部项目名称失败" + groupProjectUpdateString);
- }
- } catch (JsonProcessingException | BigSizeException e) {
- e.printStackTrace();
- }
- }
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunCostCollectionDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("人工成本特殊项目保存保存" + totalCount);
- }
- /**
- * 获取人员-归属公司信息
- */
- private void getUserCompany() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunUserCompanyDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunUserCompanyDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- result.forEach(chuanyunUserCompanyDO -> {
- try {
- if (chuanyunUserCompanyDO.getUser() != null) {
- chuanyunUserCompanyDO.setUserId(chuanyunUserCompanyDO.getUser().getObjectId());
- }
- if (!StringUtils.isEmpty(chuanyunUserCompanyDO.getDepartment())) {
- chuanyunUserCompanyDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentObject().getObjectId());
- }
- } catch (Exception exception) {
- log.warn(chuanyunUserCompanyDO + "");
- log.warn(exception.getMessage());
- }
- try {
- ChuanYunConstant.USER_BUSINESS_GROUP.put(chuanyunUserCompanyDO.getUserId(), chuanyunCompanyDao.findByObjectId(chuanyunUserCompanyDO.getCompanyId()).getBusinessGroup());
- } catch (Exception e) {
- log.warn("更新用户BG信息时发生异常" + e.getMessage());
- }
- if (!StringUtils.isEmpty(chuanyunUserCompanyDO.getUserId())) {
- ChuanYunConstant.USER_DEPARTMENT.put(chuanyunUserCompanyDO.getUserId(), chuanyunUserCompanyDO.getDepartmentObject().getObjectId());
- }
- });
- chuanyunUserCompanyDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("人员归属公司信息保存保存" + totalCount);
- }
- /**
- * 获取报销科目
- */
- private void getReimbursementSubject() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunReimbursementSubjectDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunReimbursementSubjectDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- chuanyunReimbursementSubjectDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("报销科目信息保存保存" + totalCount);
- }
- /**
- * 同步集团总表(手动更新调用)
- */
- private void getGroupProjectForSynchronization() {
- var objectMapper = new ObjectMapper();
- var start = 0;
- var totalCount = 0L;
- var flag = true;
- while (flag) {
- try {
- //从氚云查询数据
- var filter = Filter.instance(start, start + pageSize, true);
- var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunGroupProjectDO.SCHEMA_CODE, filter);
- if (chuanyunFindAllResponse.getReturnData() == null) {
- flag = false;
- continue;
- }
- if (chuanyunFindAllResponse.getReturnData().getTotalCount() >= start + pageSize) {
- start += pageSize;
- } else {
- flag = false;
- }
- //转化为POJO
- List<ChuanyunGroupProjectDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
- });
- //获取项目总数
- totalCount = chuanyunFindAllResponse.getReturnData().getTotalCount();
- //保存
- result.forEach(chuanyunGroupProjectDO -> {
- var tmpGroupProjectDO = chuanyunGroupProjectDao.findById(chuanyunGroupProjectDO.getObjectId());
- tmpGroupProjectDO.ifPresent(projectDO -> {
- chuanyunGroupProjectDO.setIsCreate(projectDO.getIsCreate());
- chuanyunGroupProjectDao.delete(tmpGroupProjectDO.get());
- });
- });
- chuanyunGroupProjectDao.saveAll(result);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- }
- }
- log.info("集团项目信息保存保存" + totalCount + "项目映射更新完成");
- }
- @Data
- class GroupProjectDetailDTO {
- @JsonProperty("D001789Fvspc68z01idftf5nqt66pkuc0")
- private List<ChuanyunGroupProjectDetailDO> detailList;
- public GroupProjectDetailDTO(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- if (null != chuanyunGroupProjectDO) {
- if (null != chuanyunGroupProjectDO.getDetailList()) {
- this.detailList = chuanyunGroupProjectDO.getDetailList();
- }
- }
- }
- }
- @Data
- class CostCollectionDTO {
- /**
- * 外部项目名称
- */
- @JsonProperty("F0000008")
- public String outProjectName;
- public CostCollectionDTO(ChuanyunCostCollectionDO chuanyunCostCollectionDO) {
- if (null != chuanyunCostCollectionDO) {
- if (null != chuanyunCostCollectionDO.getOutProjectName()) {
- this.outProjectName = chuanyunCostCollectionDO.getOutProjectName();
- }
- }
- }
- }
- @Data
- class ReimbursementItemsDTO {
- /**
- * 调整项目名称
- */
- @JsonProperty("F0000007")
- private String adjustProjectName;
- public ReimbursementItemsDTO(ChuanyunReimbursementItemsDO chuanyunReimbursementItemsDO) {
- if (null != chuanyunReimbursementItemsDO) {
- if (null != chuanyunReimbursementItemsDO.getAdjustProjectName()) {
- this.adjustProjectName = chuanyunReimbursementItemsDO.getAdjustProjectName();
- }
- }
- }
- }
- @Data
- class ReimbursementDTO {
- @JsonProperty("F0000093")
- private String projectId;
- public ReimbursementDTO(ChuanyunReimbursementDO chuanyunReimbursementDO) {
- if (null != chuanyunReimbursementDO) {
- if (null != chuanyunReimbursementDO.getGroupProjectId()) {
- this.projectId = chuanyunReimbursementDO.getGroupProjectId();
- }
- }
- }
- }
- @Data
- static class ProjectChangeDTO {
- /**
- * 标题
- */
- @JsonProperty("F0000001")
- private String title;
- /**
- * 审批结果: 同意 和 不同意
- */
- @JsonProperty("F0000015")
- private String approvalResult;
- /**
- * 审批实例业务编号
- */
- @JsonProperty("F0000014")
- private String businessId;
- /**
- * 变更类型
- */
- @JsonProperty("F0000002")
- private String changeType;
- /**
- * 项目名称
- */
- @JsonProperty("F0000003")
- private String projectName;
- /**
- * 涉及变更项
- */
- @JsonProperty("F0000004")
- private String changes;
- /**
- * 项目合同内容是否变更
- */
- @JsonProperty("F0000005")
- private String projectContractContentIsChange;
- /**
- * 采购合同内容是否变更
- */
- @JsonProperty("F0000006")
- private String procurementContractContentIsChange;
- /**
- * 变更方案要求完成日期
- */
- @JsonProperty("F0000007")
- private String completeTime;
- /**
- * 变更涉及部门
- */
- @JsonProperty("F0000008")
- private String changeInvolveDeptName;
- @JsonProperty("F0000013")
- private String result;
- /**
- * 变更内容描述
- */
- @JsonProperty("F0000010")
- private String changeContentDescribe;
- /**
- * 变更影响描述
- */
- @JsonProperty("F0000011")
- private String changeInfluenceDescribe;
- /**
- * 备注
- */
- @JsonProperty("F0000012")
- private String remarks;
- /**
- * 申请人Id
- */
- @JsonProperty("F0000016")
- private String projectChangeUserId;
- public static ProjectChangeDTO fromChuanyunProjectChangeDO(ChuanyunProjectChangeDO chuanyunProjectChangeDO) {
- ProjectChangeDTO projectChangeDTO = new ProjectChangeDTO();
- BeanUtils.copyProperties(chuanyunProjectChangeDO, projectChangeDTO);
- return projectChangeDTO;
- }
- }
- @Data
- class CashFlowDTO {
- @JsonProperty("F0000001")
- private String projectcode;
- /**
- * 收款金额
- */
- @JsonProperty("F0000002")
- private BigDecimal income;
- /**
- * 付款金额
- */
- @JsonProperty("F0000003")
- private BigDecimal outcome;
- public CashFlowDTO(ChuanyunProjectCashFlowDTO chuanyunProjectCashFlowDTO) {
- if (null != chuanyunProjectCashFlowDTO) {
- if (null != chuanyunProjectCashFlowDTO.getProjectcode()) {
- this.projectcode = chuanyunProjectCashFlowDTO.getProjectcode();
- }
- if (null != chuanyunProjectCashFlowDTO.getOutcome()) {
- this.outcome = chuanyunProjectCashFlowDTO.getOutcome();
- }
- if (null != chuanyunProjectCashFlowDTO.getIncome()) {
- this.income = chuanyunProjectCashFlowDTO.getIncome();
- }
- }
- }
- }
- /**
- * 用于刷新项目经理权限的对象
- */
- @Data
- class GroupProjectUpdateDTO {
- /**
- * 项目总监
- * U9项目责任人
- */
- @JsonProperty(value = "F0000006")
- private String projectOwner;
- /**
- * IBG项目经理
- */
- @JsonProperty("F0000012")
- private String ibgProjectManager;
- /**
- * EBG项目经理
- */
- @JsonProperty("F0000011")
- private String ebgProjectManager;
- /**
- * 外部项目名称
- */
- @JsonProperty(value = "F0000038")
- private String outProjectName;
- public GroupProjectUpdateDTO() {
- }
- public GroupProjectUpdateDTO(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- if (null != chuanyunGroupProjectDO) {
- if (null != chuanyunGroupProjectDO.getProjectOwnerObject()) {
- this.projectOwner = chuanyunGroupProjectDO.getProjectOwnerObject().getObjectId();
- }
- if (null != chuanyunGroupProjectDO.getIbgProjectManagerObject()) {
- this.ibgProjectManager = chuanyunGroupProjectDO.getIbgProjectManagerObject().getObjectId();
- }
- if (null != chuanyunGroupProjectDO.getEbgProjectManagerObject()) {
- this.ebgProjectManager = chuanyunGroupProjectDO.getEbgProjectManagerObject().getObjectId();
- }
- if (null != chuanyunGroupProjectDO.getOutProjectName()) {
- this.outProjectName = chuanyunGroupProjectDO.getOutProjectName();
- }
- }
- }
- }
- @Data
- class ProjectMemberDTO {
- @JsonProperty("F0000052")
- private String projectMemberString;
- @JsonProperty("F0000051")
- private String projectMemberStringTest;
- }
- @Data
- class BusinessEntertainmentDTO {
- /**
- * 劳动合同所属公司
- */
- @JsonProperty("F0000001")
- private String company;
- /**
- * 申请人
- */
- @JsonProperty("F0000002")
- private String applicant;
- /**
- * 部门
- */
- @JsonProperty("F0000003")
- private String department;
- /**
- * 日期
- */
- @JsonProperty("F0000004")
- @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
- @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
- private LocalDateTime datetime;
- /**
- * 招待事由
- */
- @JsonProperty("F0000005")
- private String reason;
- /**
- * 招待总金额(元)
- */
- @JsonProperty("F0000006")
- private BigDecimal totalamount;
- /**
- * 招待人数(含接待人员)
- */
- @JsonProperty("F0000007")
- private String personcount;
- /**
- * 人均餐费
- */
- @JsonProperty("F0000008")
- private BigDecimal averageamount;
- /**
- * 备注
- */
- @JsonProperty("F0000009")
- private String remark;
- @JsonProperty("F0000010")
- private String businessId;
- public BusinessEntertainmentDTO(ChuanyunBusinessEntertainmentDO chuanyunBusinessEntertainmentDO) {
- if (null != chuanyunBusinessEntertainmentDO) {
- if (null != chuanyunBusinessEntertainmentDO.getCompany()) {
- this.company = chuanyunBusinessEntertainmentDO.getCompany();
- }
- if (null != chuanyunBusinessEntertainmentDO.getApplicant()) {
- this.applicant = chuanyunBusinessEntertainmentDO.getApplicant();
- }
- if (null != chuanyunBusinessEntertainmentDO.getDepartment()) {
- this.department = chuanyunBusinessEntertainmentDO.getDepartment();
- }
- if (null != chuanyunBusinessEntertainmentDO.getDatetime()) {
- this.datetime = chuanyunBusinessEntertainmentDO.getDatetime();
- }
- if (null != chuanyunBusinessEntertainmentDO.getReason()) {
- this.reason = chuanyunBusinessEntertainmentDO.getReason();
- }
- if (null != chuanyunBusinessEntertainmentDO.getTotalamount()) {
- this.totalamount = chuanyunBusinessEntertainmentDO.getTotalamount();
- }
- if (null != chuanyunBusinessEntertainmentDO.getPersoncount()) {
- this.personcount = chuanyunBusinessEntertainmentDO.getPersoncount();
- }
- if (null != chuanyunBusinessEntertainmentDO.getAverageamount()) {
- this.averageamount = chuanyunBusinessEntertainmentDO.getAverageamount();
- }
- if (null != chuanyunBusinessEntertainmentDO.getRemark()) {
- this.remark = chuanyunBusinessEntertainmentDO.getRemark();
- }
- if (null != chuanyunBusinessEntertainmentDO.getBusinessId()) {
- this.businessId = chuanyunBusinessEntertainmentDO.getBusinessId();
- }
- }
- }
- }
- @Data
- static class GroupProjectMemberListUpdateDTO {
- /**
- * 项目组成员(前端传数据用)
- */
- @JsonProperty("F0000034")
- private String[] projectMemberList;
- @JsonProperty("F0000050")
- private String projectMemberString;
- public void add() {
- String[] newProjectMemberList = new String[projectMemberList.length + 1];
- System.arraycopy(projectMemberList, 0, newProjectMemberList, 0, projectMemberList.length);
- // newProjectMemberList[projectMemberList.length]="8bbb21c4-1140-4bfa-8713-6ee50ea34df0";
- projectMemberList = newProjectMemberList;
- }
- public void delete() {
- String[] newProjectMemberList = new String[projectMemberList.length - 1];
- System.arraycopy(projectMemberList, 0, newProjectMemberList, 0, projectMemberList.length - 1);
- projectMemberList = newProjectMemberList;
- }
- public GroupProjectMemberListUpdateDTO(ChuanyunGroupProjectDO chuanyunGroupProjectDO) {
- if (null != chuanyunGroupProjectDO) {
- if (null != chuanyunGroupProjectDO.getProjectMemberList()) {
- List<String> memberList = new ArrayList<>();
- chuanyunGroupProjectDO.getProjectMemberObject().forEach(chuanyunObject -> memberList.add(chuanyunObject.getObjectId()));
- this.projectMemberList = memberList.toArray(new String[0]);
- }
- }
- }
- }
- @Data
- static class AskForLeaveDTO {
- /**
- * 标题
- */
- @JsonProperty("F0000001")
- private String title;
- /**
- * 发起人姓名
- */
- @JsonProperty("F0000007")
- private String originatorUserName;
- /**
- * 发起部门
- */
- @JsonProperty("F0000002")
- private String originatorDeptName;
- /**
- * 请假事由
- */
- @JsonProperty("F0000005")
- private String leaveType;
- /**
- * 劳动合同所属公司
- */
- @JsonProperty("F0000004")
- private String contractOwnerLtd;
- @JsonProperty("F0000006")
- private String result;
- /**
- * 请假开始时间
- */
- @JsonProperty("F0000016")
- private String startTime;
- /**
- * 请假时长
- */
- @JsonProperty("F0000017")
- private BigDecimal totalDay;
- /**
- * 请假人Id
- */
- @JsonProperty("F0000018")
- private String askForLeaveUserId;
- public static AskForLeaveDTO fromChuanyunAskForLeaveDO(ChuanyunAskForLeaveDO chuanyunAskForLeaveDO) {
- AskForLeaveDTO askForLeaveDTO = new AskForLeaveDTO();
- BeanUtils.copyProperties(chuanyunAskForLeaveDO, askForLeaveDTO);
- return askForLeaveDTO;
- }
- }
- }
|