奴才表信息的更新

1. 代码原理剖析:

子表对象作为更新主表信息的参数进行传递,主表外面须要被子表更新的字段进行更新。

public int updMain(int userId, EmpKeyinfo empKeyinfo, EmpCertinfo certinfo, EmpAppinfo appinfo,EmpContract contract, EmpBank bank, EmpEducation education, EmpContact contact, EmpPayinfo empPayinfo,EmpWealinfo wealinfo, EmpRecord empRecord, EmpSalarypro empSalarypro, EmpAddress empAddress,TalentInventory talentInventory){        int i = 0;        EmpInfo empInfo = null;        if (empKeyinfo != null) {//            logger.info("!---------empKeyinfo: {}", empKeyinfo.toString());            empInfo = new EmpInfo();            empInfo.id = empKeyinfo.empId;            empInfo.empEmpno = empKeyinfo.empkeyEmpno;            empInfo.empEmpstatus = empKeyinfo.empkeyEmpstatus;            empInfo.empEmpmode = empKeyinfo.empkeyEmpmode;            empInfo.empEndate = empKeyinfo.empkeyEndate;            empInfo.empSendate = empKeyinfo.empkeySendate;            empInfo.empWorkday = empKeyinfo.empkeyWorkday;            empInfo.empEzndate = empKeyinfo.empkeyEzndate;            empInfo.empWorkday = empKeyinfo.empkeyWorkday;            empInfo.empIsgps = empKeyinfo.empkeyIsgps;            empInfo.empIscxemp = empKeyinfo.empkeyIscxemp;            empInfo.empIstxemp = empKeyinfo.empkeyIstxemp;            empInfo.empRcityid = empKeyinfo.empkeyRcityid;            empInfo.empIsjoinh = empKeyinfo.empkeyIsjoinh;            empInfo.empCuplevel = empKeyinfo.empkeyCuplevel;            empInfo.empEnglevel = empKeyinfo.empkeyEnglevel;            empInfo.empAnamnesis = empKeyinfo.empkeyAnamnesis;            empInfo.empQutype = empKeyinfo.empkeyQutype;            empInfo.empQuid = empKeyinfo.empkeyQuid;            empInfo.empQuadre = empKeyinfo.empkeyQuadre;            empInfo.empQudate = empKeyinfo.empkeyQudate;            empInfo.empHrbp = empKeyinfo.empkeyHrbp;            empInfo.empHzdjr = empKeyinfo.empkeyHzdjr;            empInfo.empCpubt = empKeyinfo.empkeyCpubt;        }        if (certinfo != null) {            if ("1".equals(certinfo.empcerIsadmid)) {//                logger.info("!---------certinfo: {}", certinfo.toString());                empInfo = new EmpInfo();                empInfo.id = certinfo.empId;                empInfo.empPaptype = certinfo.empcerType;                empInfo.empPopcode = certinfo.empcerNumber;            }        }        if (appinfo != null) {            if ("01major".equals(appinfo.empappZjpost)) {//                logger.info("!---------appinfo: {}", appinfo.toString());                empInfo = new EmpInfo();                empInfo.id = appinfo.empId;                empInfo.empZjpost = appinfo.empappZjpost;                empInfo.empPanel = appinfo.empappPanel;                empInfo.empUnitid = appinfo.empappUnitid;                empInfo.empLegalid = appinfo.empappLegalid;                empInfo.empDeptid = appinfo.empappDeptid;                empInfo.empPostid = appinfo.empappPostid;                empInfo.empCotcid = appinfo.empappCotcid;                empInfo.empCotcratio = appinfo.empappCotcratio;                empInfo.empZpid = appinfo.empappZpid;                empInfo.empTeacher = appinfo.empappTeacher;                empInfo.empEmpcity = appinfo.empappEmpcity;                empInfo.empWkcity = appinfo.empappWkcity;                empInfo.empYddate = appinfo.empappYddate;                empInfo.empYdtype = appinfo.empappYdtype;                empInfo.empOpreason = appinfo.empappOpreason;                //2021-1-6                empInfo.empRole = appinfo.empappRole;            }        }        if (contract != null) {//            logger.info("!---------contract: {}", contract.toString());            empInfo = new EmpInfo();            empInfo.id = contract.empId;            empInfo.empWcityid = contract.empconWcityid;            empInfo.empCategory = contract.empconCategory;            empInfo.empCstype = contract.empconCstype;            empInfo.empDuration = contract.empconDuration;            empInfo.empSdate = contract.empconSdate;            empInfo.empYedate = contract.empconYedate;            empInfo.empEdate = contract.empconEdate;            empInfo.empQsdate = contract.empconQsdate;            empInfo.empQdcs = contract.empconQdcs;            empInfo.empBmxy = contract.empconBmxy;            empInfo.empWttype = contract.empconWttype;            empInfo.empIsputoff = contract.empconIsputoff;            empInfo.empYjedate = contract.empconYjedate;            empInfo.empDuedate = contract.empconDuedate;            empInfo.empTrialperiod = contract.empconTrialperiod;            empInfo.empSydate = contract.empconPsdate;            empInfo.empPedate = contract.empconPedate;            empInfo.empPduedate = contract.empconPduedate;            empInfo.empLegalid = contract.empconFlstid;        }        if (bank != null) {            if ("01salary".equals(bank.empbkAcctype)) {//                logger.info("!---------bank: {}", bank.toString());                empInfo = new EmpInfo();                empInfo.id = bank.empId;                empInfo.empAcctype = bank.empbkAcctype;                empInfo.empNameid = bank.empbkNameid;                empInfo.empDeposit = bank.empbkDeposit;                empInfo.empAccount = bank.empbkAccount;            }        }        if (education != null) {//            logger.info("!---------education: {}", education.toString());            empInfo = new EmpInfo();            empInfo.id = education.empId;            if ("1".equals(education.empedcIshighest)) {                empInfo.empEsdateh = education.empedcEsdate;                empInfo.empBydateh = education.empedcBydate;                empInfo.empBackgdh = education.empedcBackgd;                empInfo.empDegreeh = education.empedcDegree;                empInfo.empContidh = education.empedcContid;                empInfo.empSchoolh = education.empedcSchool;                empInfo.empSchooltypeh = education.empedcSchooltype;                empInfo.empLearntypeh = education.empedcLearntype;                empInfo.empFirstzyh = education.empedcFirstzy;                empInfo.empSecondzyh = education.empedcSecondzy;                empInfo.empIshighest = education.empedcIshighest;            }            if ("1".equals(education.empedcFirst)) {                empInfo.empEsdate = education.empedcEsdate;                empInfo.empBydate = education.empedcBydate;                empInfo.empBackgd = education.empedcBackgd;                empInfo.empDegree = education.empedcDegree;                empInfo.empContid = education.empedcContid;                empInfo.empSchool = education.empedcSchool;                empInfo.empSchooltype = education.empedcSchooltype;                empInfo.empLearntype = education.empedcLearntype;                empInfo.empFirstzy = education.empedcFirstzy;                empInfo.empSecondzy = education.empedcSecondzy;                empInfo.empFirst = education.empedcFirst;            }        }        if (contact != null) {//            logger.info("!---------contact: {}", contact.toString());            empInfo = new EmpInfo();            empInfo.id = contact.empId;            empInfo.empMobile = contact.empctaMobile;            empInfo.empPersmail = contact.empctaPersmail;            empInfo.empCompmail = contact.empctaCompmail;            empInfo.empEmycontact = contact.empctaEmycontact;            empInfo.empEmyrelation = contact.empctaEmyrelation;            empInfo.empEmyphone = contact.empctaEmyphone;            empInfo.empEmyaddr = contact.empctaEmyaddr;        }        if (empPayinfo != null) {//            logger.info("!---------empPayinfo: {}", empPayinfo.toString());            empInfo = new EmpInfo();            empInfo.id = empPayinfo.empId;            empInfo.empCity = empPayinfo.emppayCity;            empInfo.empCompany = empPayinfo.emppayCompany;            empInfo.empSalaryset = empPayinfo.emppaySalaryset;            empInfo.empCurrency = empPayinfo.emppayCurrency;            empInfo.empPayno = empPayinfo.emppayPayno;            empInfo.empTraffic = empPayinfo.emppayTraffic;            empInfo.empCommun = empPayinfo.emppayCommun;            empInfo.empIscalculate = empPayinfo.emppayIscalculate;            empInfo.empWork = empPayinfo.emppayWork;        }        if (wealinfo != null) {//            logger.info("!---------wealinfo: {}", wealinfo.toString());            empInfo = new EmpInfo();            empInfo.id = wealinfo.empId;            empInfo.empSocial = wealinfo.empwiSocial;            empInfo.empSocialtime = wealinfo.empwiSocialtime;            empInfo.empSocialcity = wealinfo.empwiSocialcity;            empInfo.empAccumla = wealinfo.empwiAccumla;            empInfo.empSocialsup = wealinfo.empwiSocialsup;            empInfo.empSocialnum = wealinfo.empwiSocialnum;            empInfo.empBsaehouse = wealinfo.empwiBsaehouse;            empInfo.empBusisafe = wealinfo.empwiBusisafe;            empInfo.empSafetime = wealinfo.empwiSafetime;            empInfo.empSafetype = wealinfo.empwiSafetype;            empInfo.empBusipro = wealinfo.empwiBusipro;            empInfo.empWelfplat = wealinfo.empwiWelfplat;            empInfo.empWelfpro = wealinfo.empwiWelfpro;        }        if (empAddress != null) {//            logger.info("!---------empAddress: {}", empAddress.toString());            if ("02register".equals(empAddress.empaddType)) {                empInfo = new EmpInfo();                empInfo.id = empAddress.empId;                empInfo.empNatid = empAddress.empaddNatid;                empInfo.empPcityid = empAddress.empaddPcityid;                empInfo.empCityid = empAddress.empaddCityid;                empInfo.empStreet = empAddress.empaddStreet;                empInfo.empFulladdr = empAddress.empaddFulladdr;            } else if("03currentadr".equals(empAddress.empaddType)){                empInfo = new EmpInfo();                empInfo.id = empAddress.empId;                empInfo.empLivecy = empAddress.empaddNatid;                empInfo.empLivepro = empAddress.empaddPcityid;                empInfo.empLivecity = empAddress.empaddCityid;                empInfo.empLivestr = empAddress.empaddStreet;                empInfo.empLiveaddr = empAddress.empaddFulladdr;            }        }        // 人才盘点信息        if (talentInventory != null) {//            logger.info("!---------talentInventory: {}", talentInventory.toString());            empInfo = new EmpInfo();            empInfo.id = talentInventory.empId;            empInfo.empJxresult = talentInventory.talentJxresult;            empInfo.empQlresult = talentInventory.talentQlresult;            empInfo.empSudoku = talentInventory.talentSudoku;            empInfo.empTaedate = talentInventory.talentEdate;        }        if (empRecord != null && empRecord != null) {            if ("03head".equalsIgnoreCase(empRecord.emprecType)) {//                logger.info("!---------empRecord: {}", empRecord.toString());                empInfo = new EmpInfo();                empInfo.id = empRecord.empId;                empInfo.empHead = empRecord.emprecHead; // 只更新员工头像            }        }        if (empSalarypro != null && StringUtils.isNotBlank(empSalarypro.empspSalarypro)) {            empInfo = new EmpInfo();            empInfo.id = empSalarypro.empId;//            logger.info("!---------empSalarypro: {}", empSalarypro.toString());            // 判断值是否为空            List<PaysSalyman> paysSalymen = paysSalymanService.getByIds(Integer.valueOf(empSalarypro.companyId),                    PubConstants.C_LANGCN, empSalarypro.empspSalarypro, false);            if ("PI0032".equals(paysSalymen.get(0).salProcode)) {                empInfo.empMongzbz = empSalarypro.empspSum;            } else if ("PI0035".equals(paysSalymen.get(0).salProcode)) {                empInfo.empMonjxgz = empSalarypro.empspSum;            } else if ("PI0040".equals(paysSalymen.get(0).salProcode)) {                empInfo.empMonjbgz = empSalarypro.empspSum;            } else if ("PI0045".equals(paysSalymen.get(0).salProcode)) {                empInfo.empDaygzbz = empSalarypro.empspSum;            } else if ("PI0049".equals(paysSalymen.get(0).salProcode)) {                empInfo.empTranstandard = empSalarypro.empspSum;            } else if ("PI0055".equals(paysSalymen.get(0).salProcode)) {                empInfo.empTxjt = empSalarypro.empspSum;            } else if ("PI0074".equals(paysSalymen.get(0).salProcode)) {                empInfo.empHomecost = empSalarypro.empspSum;            }        }        if (empInfo != null) {            empInfo.updateTime = PubFuns.getCurrentTime();            empInfo.updateBy = String.valueOf(userId);//            logger.info("!---------upd empinfo: {}", empInfo.toString());            if (StringUtils.isBlank(empInfo.id)) {                logger.error("更新员工主信息谬误: 员工id为空");            } else {                i = empInfoMapper.updateByPrimaryKeySelective(empInfo);                try {                    // 推送OA主数据                    EmpInfo empInfoN = empInfoMapper.selectByPrimaryKey(empInfo.id);                    if (empInfoN != null) {                        List<EmpInfo> list = new ArrayList<EmpInfo>();                        list.add(empInfoN);                        pushEmpMdSynchMsg(list, PubConstants.CS_DEFAULTCOMP, "upd", PubConstants.C_LANGCN);                    }                } catch (Exception e) {                    logger.error("推送员工主信息更新谬误: " + e.getMessage(), e);                }            }        }        return i;    }

2. 办法条件的调用卡控

EmpContract子表中的信息须要更新主表中绝对应的字段,依据更新主信息的办法原理,须要把EmpContract作为参数进行传递,同时还须要落位到对应的数据元素,因而要卡控落位和数据的传递,本办法中用userId对数据的落位进行了卡控。

非凡解决:

进行了更新的数据要用更新标记 updObj.mdupdFlg = "1"; 进行标记。

/**     * 更新主数据     */    private void updMain(int userId, EmpContract objInfo) {        if (TsPubFuns.getCurrentDateEnd().compareToIgnoreCase(objInfo.empconSdate) >= 0) {            empInfoService.updMain(userId, 1000, null, null, null, null, null, null, null,                    null, null, objInfo,null,null,null, null, null, null, null);            updMdupdFlg(objInfo.id);        }    }    //跟新信息标记    public void updMdupdFlg(String id) {        EmpContract updObj = new EmpContract();        updObj.id = id;        updObj.mdupdFlg = "1";        empContractMapper.updateByPrimaryKeySelective(updObj);    }    public List<EmpContract> getNoUpdMDList() {        Example example = new Example(EmpContract.class);        Example.Criteria criteria =example.createCriteria();        criteria.andEqualTo("deleteFlag", "0");        criteria.andEqualTo("mdupdFlg", "0");        criteria.andLessThanOrEqualTo("empctaSdate", PubFuns.getCurrentDate());        criteria.andGreaterThanOrEqualTo("empctaEdate", PubFuns.getCurrentDate());        List<EmpContract> objList = empContractMapper.selectByExample(example);        return objList;    }    public List<EmpContract> getValidByObj(int companyId, String language, EmpContract empContract, Boolean isDis){        List<EmpContract> list=empContractMapper.selPageByEmpContract(empContract);        return getDisList(companyId, language, list, isDis);    }
//        EmpContract   员工合同信息        if (empContract != null) {//            logger.info("!---------empContract: {}", empContract.toString());            empInfo = new EmpInfo();            empInfo.id = empContract.empId;            empInfo.ncid = empContract.ncid;

3. 更新主数据主动工作的编写

package com.hrocloud.znjs.orgemp.autotask;import java.util.ArrayList;import java.util.List;import javax.annotation.Resource;import org.apache.commons.collections.CollectionUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.dangdang.ddframe.job.api.ShardingContext;import com.dangdang.ddframe.job.api.simple.SimpleJob;import com.hrocloud.common.constant.PubConstants;import com.hrocloud.znjs.pub.api.UserInfoService;import com.hrocloud.znjs.pub.model.UserInfo;import com.hrocloud.znjs.baseauth.api.AuthPostService;import com.hrocloud.znjs.baseauth.model.AuthPost;import com.hrocloud.znjs.orgemp.api.EmpAddressService;import com.hrocloud.znjs.orgemp.api.EmpAppinfoService;import com.hrocloud.znjs.orgemp.api.EmpBankService;import com.hrocloud.znjs.orgemp.api.EmpCertinfoService;import com.hrocloud.znjs.orgemp.api.EmpContactService;import com.hrocloud.znjs.orgemp.api.EmpContractService;import com.hrocloud.znjs.orgemp.api.EmpInfoService;import com.hrocloud.znjs.orgemp.api.EmpKeyinfoService;import com.hrocloud.znjs.orgemp.api.EmpPayinfoService;import com.hrocloud.znjs.orgemp.api.EmpRecordService;import com.hrocloud.znjs.orgemp.api.EmpSalaryproService;import com.hrocloud.znjs.orgemp.api.EmpWealinfoService;import com.hrocloud.znjs.orgemp.model.EmpAddress;import com.hrocloud.znjs.orgemp.model.EmpAppinfo;import com.hrocloud.znjs.orgemp.model.EmpBank;import com.hrocloud.znjs.orgemp.model.EmpCertinfo;import com.hrocloud.znjs.orgemp.model.EmpContact;import com.hrocloud.znjs.orgemp.model.EmpContract;import com.hrocloud.znjs.orgemp.model.EmpKeyinfo;import com.hrocloud.znjs.orgemp.model.EmpPayinfo;import com.hrocloud.znjs.orgemp.model.EmpRecord;import com.hrocloud.znjs.orgemp.model.EmpSalarypro;import com.hrocloud.znjs.orgemp.model.EmpWealinfo;//员工主数据更新:查问员工主信息相干连的子集,如果失效日期为以后日期,则更新对应主数据public class EmpMainUpdateAutoTaskJob implements SimpleJob {    private Logger logger = LoggerFactory.getLogger(EmpMainUpdateAutoTaskJob.class);    @Resource    private EmpKeyinfoService empKeyinfoService;    @Resource    private EmpInfoService empInfoService;    @Resource    private EmpAppinfoService empAppinfoService;    @Resource    private EmpCertinfoService empCertinfoService;    @Resource    private EmpBankService empBankService;    @Resource    private EmpContractService empContractService;    @Resource    private EmpSalaryproService empSalaryproService;    @Resource    private EmpRecordService empRecordService;    @Resource    private EmpAddressService empAddressService;    @Resource    private EmpContactService empContactService;    @Resource    private EmpWealinfoService empWealinfoService;    @Resource    private EmpPayinfoService empPayinfoService;    @Resource    private AuthPostService authPostService;    @Resource    private UserInfoService userInfoService;    @Override    public void execute(ShardingContext shardingContext) {        logger.info("!---------- Run");        List<EmpKeyinfo> updObjList = empKeyinfoService.getNoUpdMDList();        for (EmpKeyinfo obj : updObjList) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, obj, null, null, null, null, null, null, null, null,                        null, null, null, null);                empKeyinfoService.updMdupdFlg(obj.id);                if ("02inactive".equals(obj.empkeyEmpstatus)){                    AuthPost authPost = new AuthPost();                    authPost.poroEmpid =  obj.empId;                    authPost.poroBustype =  "6essmss";                    List<AuthPost> byObj = authPostService.getByObj(Integer.valueOf(obj.companyId), PubConstants.C_LANGCN, authPost, "id", "asc", false);                    if (CollectionUtils.isNotEmpty(byObj)){                        List<UserInfo> infos = userInfoService.getByIds(Integer.valueOf(PubConstants.CS_DEFAULTCOMP), PubConstants.C_LANGCN, byObj.get(0).userId,false);                        if(CollectionUtils.isNotEmpty(infos)){                            userInfoService.delByIds( byObj.get(0).userId);                        }else {                            return;                        }                    }                }            } catch (Exception e) {                logger.info("员工要害信息: {}", obj.toString());                logger.error("员工要害信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 任职信息的自动更新        List<String> empIds = new ArrayList<String>();        List<EmpAppinfo> appList = empAppinfoService.getNoUpdMDList();        for (EmpAppinfo obj : appList) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, obj, null, null, null, null, null, null,                        null, null, null, null);                empAppinfoService.updMdupdFlg(obj.id);                empIds.add(obj.empId);            } catch (Exception e) {                logger.info("员工任职信息: {}", obj.toString());                logger.error("员工任职信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 证件信息的自动更新        List<EmpCertinfo> cerList = empCertinfoService.getNoUpdMDList();        for (EmpCertinfo obj : cerList) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, obj, null, null, null, null, null, null, null,                        null, null, null, null);                empCertinfoService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工证件信息: {}", obj.toString());                logger.error("员工证件信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 银行信息的自动更新        List<EmpBank> bankList = empBankService.getNoUpdMDList();        for (EmpBank obj : bankList) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, obj, null, null, null, null,                        null, null, null, null);                empBankService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工银行卡信息: {}", obj.toString());                logger.error("员工银行卡信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工合同信息(新)        List<EmpContract> contractList = empContractService.getNoUpdMDList();        for (EmpContract obj : contractList) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, obj, null, null, null, null, null,                        null, null, null, null);                empContractService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工合同信息: {}", obj.toString());                logger.error("员工合同信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工薪资我的项目        List<EmpSalarypro> empSalarypros = empSalaryproService.getNoUpdMDList();        for (EmpSalarypro obj : empSalarypros) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, null, null, null, null, null,                        null, obj, null, null);                empSalaryproService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工薪资我的项目信息: {}", obj.toString());                logger.error("员工薪资我的项目信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工档案信息        List<EmpRecord> empRecords = empRecordService.getNoUpdMDList();        for (EmpRecord obj : empRecords) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, null, null, null, null, null,                        obj, null, null, null);                empSalaryproService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工图像信息: {}", obj.toString());                logger.error("员工图像信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工地址信息        List<EmpAddress> EmpAddresss = empAddressService.getNoUpdMDList();        for (EmpAddress obj : EmpAddresss) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, null, null, null, null, null,                        null, null, obj, null);                empAddressService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工地址信息: {}", obj.toString());                logger.error("员工地址信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工分割信息        List<EmpContact> empContacts = empContactService.getNoUpdMDList();        for (EmpContact obj : empContacts) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, null, null, obj, null, null,                        null, null, null, null);                empContactService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工分割信息: {}", obj.toString());                logger.error("员工分割信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工福利信息        List<EmpWealinfo> empWealinfos = empWealinfoService.getNoUpdMDList();        for (EmpWealinfo obj : empWealinfos) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, null, null, null, null, obj,                        null, null, null, null);                empWealinfoService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工福利信息: {}", obj.toString());                logger.error("员工福利信息同步主数据谬误: " + e.getMessage(), e);            }        }        // 员工薪酬信息        List<EmpPayinfo> empPayinfos = empPayinfoService.getNoUpdMDList();        for (EmpPayinfo obj : empPayinfos) {            try {                empInfoService.updMain(PubConstants.C_SYSUSERID, null, null, null, null, null, null, null, obj, null,                        null, null, null, null);                empPayinfoService.updMdupdFlg(obj.id);            } catch (Exception e) {                logger.info("员工薪酬信息: {}", obj.toString());                logger.error("员工薪酬信息同步主数据谬误: " + e.getMessage(), e);            }        }                // 2021-1-19 获取生效的兼岗信息,推送主数据更新,次要是OA和钉钉        List<String> syncEmpids = new ArrayList<String>();        List<EmpAppinfo> appPartTimeList = empAppinfoService.getInvalidPartPostList();        if (CollectionUtils.isNotEmpty(appPartTimeList)) {            for (EmpAppinfo obj : appPartTimeList) {                if (!empIds.contains(obj.empId)) {// 排除主岗更新时曾经同步的员工                    syncEmpids.add(obj.empId);                    empIds.add(obj.empId);                }            }        } else {            logger.info("!----------Not emp part-time post change.");        }        if (CollectionUtils.isNotEmpty(syncEmpids)) {            logger.info("!----------syncEmpids: {}", syncEmpids.toString());            empInfoService.pushSpecialEmpMdSynchMsgByIds(syncEmpids, PubConstants.CS_DEFAULTCOMP, "upd",                    PubConstants.C_LANGCN);        }        // 2021-1-19 获取生效的兼岗信息,推送主数据更新,次要是OA和钉钉            }}

4. 更新主数据主动工作的配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"    xmlns:job="http://www.dangdang.com/schema/ddframe/job"    xsi:schemaLocation="http://www.springframework.org/schema/beans                        http://www.springframework.org/schema/beans/spring-beans.xsd                        http://www.dangdang.com/schema/ddframe/reg                        http://www.dangdang.com/schema/ddframe/reg/reg.xsd                        http://www.dangdang.com/schema/ddframe/job                        http://www.dangdang.com/schema/ddframe/job/job.xsd">    <!--配置作业注册核心 -->    <reg:zookeeper id="regCenter" server-lists="${dubbo.registry.address}"        namespace="${elasticJobNameSpace}" base-sleep-time-milliseconds="1000"        max-sleep-time-milliseconds="3000" max-retries="5" />    <bean id="elasticJobLog" class="org.apache.commons.dbcp.BasicDataSource"        destroy-method="close">        <property name="driverClassName" value="${elasticJobLog.jdbc.driver}" />        <property name="url" value="${elasticJobLog.jdbc.url}" />        <property name="username" value="${elasticJobLog.jdbc.username}" />        <property name="password" value="${elasticJobLog.jdbc.password}" />    </bean>    <!-- 配置作业 <job:simple id="baseNoticeJob" class="com.hrocloud.znjs.baseauth.autotask.BaseNoticeJob"         registry-center-ref="regCenter" cron="00 00 01 * * ? *" sharding-total-count="1"         sharding-item-parameters="0=A" overwrite="true" event-trace-rdb-data-source="elasticJobLog"/> -->    <job:simple id="empBaseInfoAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpBaseInfoAutoTaskJob"        registry-center-ref="regCenter" cron="0 0 1 * * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--//每天的凌晨一点去执行计算工龄的动作 -->    <job:simple id="EmpSendMsgAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpSendMsgAutoTaskJob"        registry-center-ref="regCenter" cron="0 0 7 * * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--//每天的早上七点去执行发送短信的动作 -->    <job:simple id="empKeyInfoAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpKeyInfoAutoTaskJob"        registry-center-ref="regCenter" cron="0 0 2 * * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--每天的凌晨2点去执行计算司龄的动作 -->    <job:simple id="empFlowEntrAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpFlowEntrAutoTaskJob"        registry-center-ref="regCenter" cron="0 59 23 * * ? "        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--每天的23:59去执行用户生效的动作 -->    <job:simple id="empFlowTeachAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpFlowTeachAutoTaskJob"        registry-center-ref="regCenter" cron="0 30 1 25 * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--每月的25日零点20分去执行发动带教的动作 0 20 0 25 * ? *-->    <job:simple id="empFlowTeachMailAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpFlowTeachMailAutoTaskJob"        registry-center-ref="regCenter" cron="0 0 15 26/1 * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--每月的25日之后发送督促的 带教培训的邮件 -->    <job:simple id="empMainUpdateAutoTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.EmpMainUpdateAutoTaskJob"        registry-center-ref="regCenter" cron="0 40 0 * * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--每天0点10分更新员工主信息 -->    <job:simple id="EmpFlowRegularhAutoTaskJob"                class="com.hrocloud.znjs.orgemp.autotask.EmpFlowRegularhAutoTaskJob"                registry-center-ref="regCenter" cron="0 5 0 * * ? *"                sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"                event-trace-rdb-data-source="elasticJobLog" />    <!--每天0点5分发动转正 -->    <!--每天1点开始扫要续签的员工 -->    <job:simple id="EmpFlowConrenewAutoTaskJob"                class="com.hrocloud.znjs.orgemp.autotask.EmpFlowConrenewAutoTaskJob"                registry-center-ref="regCenter" cron="0 0 1 * * ? *"                sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"                event-trace-rdb-data-source="elasticJobLog" />    <job:simple id="orgKbdataTaskJob"        class="com.hrocloud.znjs.orgemp.autotask.OrgKbdataTaskJob"        registry-center-ref="regCenter" cron="0 0 1 * * ? *"        sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"        event-trace-rdb-data-source="elasticJobLog" />    <!--每天的凌晨一点去调用ERP组织看板接口 -->    <!--每天1点10分开始统计组织看板数据:人效类、管理费、费效类-->    <job:simple id="orgKbRpt01TaskJob"                class="com.hrocloud.znjs.orgemp.autotask.OrgKbRpt01TaskJob"                registry-center-ref="regCenter" cron="0 10 1 * * ? *"                sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"                event-trace-rdb-data-source="elasticJobLog" />    <!--每天1点15开始统计组织看板数据:平台、学历、员工分类、学校类型、年龄剖析-->    <job:simple id="OrgKbRpt02TaskJob"                class="com.hrocloud.znjs.orgemp.autotask.OrgKbRpt02TaskJob"                registry-center-ref="regCenter" cron="0 15 1 * * ? *"                sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"                event-trace-rdb-data-source="elasticJobLog" />    <!--每天两点整开始更新组织负责人-->    <job:simple id="orgUnitsAutoTaskJob"                class="com.hrocloud.znjs.orgemp.autotask.OrgUnitsAutoTaskJob"                registry-center-ref="regCenter" cron="0 20 0 * * ? "                sharding-total-count="1" sharding-item-parameters="0=A" overwrite="true"                event-trace-rdb-data-source="elasticJobLog" /></beans>