package com.engine.organization.util.relation ;
import com.api.doc.detail.util.DocDownloadCheckUtil ;
import com.api.hrm.service.HrmResourceBaseService ;
import com.api.hrm.util.ServiceUtil ;
import com.engine.common.biz.SimpleBizLogger ;
import com.engine.common.constant.BizLogOperateAuditType ;
import com.engine.common.constant.BizLogOperateType ;
import com.engine.common.constant.BizLogSmallType4Hrm ;
import com.engine.common.constant.BizLogType ;
import com.engine.common.entity.BizLogContext ;
import com.engine.common.service.impl.HrmCommonServiceImpl ;
import com.engine.common.util.LogUtil ;
import com.engine.hrm.entity.RuleCodeType ;
import com.engine.hrm.util.CodeRuleManager ;
import com.engine.hrm.util.HrmWeakPasswordUtil ;
import com.engine.hrm.util.face.HrmFaceCheckManager ;
import com.engine.hrm.util.face.ValidateFieldManager ;
import com.engine.hrm.util.face.bean.CheckItemBean ;
import com.engine.organization.mapper.hrmresource.HrmResourceMapper ;
import com.engine.organization.util.db.MapperProxyFactory ;
import com.weaver.general.BaseBean ;
import ln.LN ;
import org.apache.commons.lang3.StringUtils ;
import weaver.common.DateUtil ;
import weaver.conn.RecordSet ;
import weaver.conn.RecordSetTrans ;
import weaver.crm.CrmShareBase ;
import weaver.file.Prop ;
import weaver.general.GCONST ;
import weaver.general.PasswordUtil ;
import weaver.general.Util ;
import weaver.hrm.HrmUserVarify ;
import weaver.hrm.User ;
import weaver.hrm.common.DbFunctionUtil ;
import weaver.hrm.company.DepartmentComInfo ;
import weaver.hrm.companyvirtual.DepartmentVirtualComInfo ;
import weaver.hrm.finance.SalaryManager ;
import weaver.hrm.passwordprotection.manager.HrmResourceManager ;
import weaver.hrm.privacy.PrivacyComInfo ;
import weaver.hrm.privacy.UserPrivacyComInfo ;
import weaver.hrm.resource.ResourceComInfo ;
import weaver.hrm.settings.ChgPasswdReminder ;
import weaver.hrm.settings.RemindSettings ;
import weaver.hrm.tools.HrmDateCheck ;
import weaver.interfaces.hrm.HrmServiceManager ;
import weaver.license.PluginUserCheck ;
import weaver.rsa.security.RSA ;
import weaver.rtx.OrganisationCom ;
import weaver.rtx.OrganisationComRunnable ;
import weaver.system.CusFormSetting ;
import weaver.system.CusFormSettingComInfo ;
import weaver.system.SysRemindWorkflow ;
import weaver.systeminfo.SystemEnv ;
import weaver.systeminfo.setting.HrmUserSettingComInfo ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
/ * *
* @author : dxfeng
* @createTime : 2022 / 10 / 11
* @version : 1.0
* /
public class ResourceSyncUtil {
private static final char separator = Util . getSeparator ( ) ;
private static final String today = DateUtil . getCurrentDate ( ) ;
public static Map < String , Object > addResource ( User user , Map < String , Object > params ) {
Map < String , Object > retmap = new HashMap < > ( ) ;
RecordSet rs = new RecordSet ( ) ;
String sql ;
try {
DepartmentComInfo departmentComInfo = new DepartmentComInfo ( ) ;
boolean canEdit = HrmUserVarify . checkUserRight ( "HrmResourceEdit:Edit" , user ) ;
if ( ! canEdit ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , SystemEnv . getHtmlLabelName ( 22620 , user . getLanguage ( ) ) ) ;
return retmap ;
}
String loginid = Util . null2String ( params . get ( "loginid" ) ) ;
String accounttype = Util . null2s ( Util . fromScreen3 ( Util . null2String ( params . get ( ( "accounttype" ) ) ) , user . getLanguage ( ) ) , "0" ) ;
if ( accounttype . equals ( "1" ) ) loginid = "" ; //次账号没有loginid
boolean canSave = false ;
LN LN = new LN ( ) ;
int ckHrmnum = LN . CkHrmnum ( ) ;
if ( loginid . length ( ) > 0 ) {
if ( ckHrmnum < 0 ) { //只有License检查人数小于规定人数, 才能修改。防止客户直接修改数据库数据
canSave = true ;
}
} else {
canSave = true ;
}
if ( ! canSave ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , SystemEnv . getHtmlLabelName ( 84760 , user . getLanguage ( ) ) ) ;
return retmap ;
}
if ( ! loginid . equals ( "" ) & & "0" . equals ( accounttype ) ) {
sql = "select count(1) from hrmresourceallview where loginid='" + loginid + "' " ;
rs . execute ( sql ) ;
if ( rs . next ( ) ) {
if ( rs . getInt ( 1 ) > 0 ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , SystemEnv . getHtmlLabelName ( 15094 , user . getLanguage ( ) ) ) ;
return retmap ;
}
}
}
String departmentid = Util . null2String ( params . get ( "departmentid" ) ) ;
String subcompanyid = departmentComInfo . getSubcompanyid1 ( departmentid ) ;
if ( ! loginid . equals ( "" ) & & ! subcompanyid . equals ( "0" ) & & new HrmResourceManager ( ) . noMore ( subcompanyid ) ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , SystemEnv . getHtmlLabelName ( 81926 , user . getLanguage ( ) ) ) ;
return retmap ;
}
ResourceComInfo ResourceComInfo = new ResourceComInfo ( ) ;
Map < String , String > result = addResourceBase ( user , params ) ;
String addResourceBaseCode = result . get ( "status" ) ;
if ( "-1" . equals ( addResourceBaseCode ) ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , result . get ( "message" ) ) ;
return retmap ;
}
int id = Util . getIntValue ( result . get ( "id" ) ) ;
String password = Util . null2String ( params . get ( "password" ) ) ;
//是否开启了RSA加密
String openRSA = Util . null2String ( Prop . getPropValue ( "openRSA" , "isrsaopen" ) ) ;
if ( "1" . equals ( openRSA ) ) {
password = new RSA ( ) . decrypt ( password ) ;
}
ChgPasswdReminder reminder = new ChgPasswdReminder ( ) ;
RemindSettings settings = reminder . getRemindSettings ( ) ;
//判断是否开启了【启用初始密码】
String defaultPasswordEnable = Util . null2String ( settings . getDefaultPasswordEnable ( ) ) ;
//【初始密码】
String defaultPassword = Util . null2String ( settings . getDefaultPassword ( ) ) ;
//如果管理员设置的密码为空。并且开启了【启用初始密码】,且初始密码不为空,则默认取初始密码作为密码
if ( password . equals ( "" ) & & defaultPasswordEnable . equals ( "1" ) & & ! defaultPassword . equals ( "" ) ) {
password = defaultPassword ;
}
//判断是否开启了【禁止弱密码保存】
String weakPasswordDisable = Util . null2s ( settings . getWeakPasswordDisable ( ) , "0" ) ;
if ( weakPasswordDisable . equals ( "1" ) ) {
if ( ! password . equals ( "" ) ) { //密码为空的情况
//判断是否为弱密码
HrmWeakPasswordUtil hrmWeakPasswordUtil = new HrmWeakPasswordUtil ( ) ;
if ( hrmWeakPasswordUtil . isWeakPsd ( password ) ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , SystemEnv . getHtmlLabelName ( 515420 , user . getLanguage ( ) ) ) ;
return retmap ;
}
}
}
int seclevel = Util . getIntValue ( Util . null2String ( params . get ( "seclevel" ) ) , 0 ) ;
if ( id > 0 ) { //保存系统信息
SimpleBizLogger logger = new SimpleBizLogger ( ) ;
BizLogContext bizLogContext = new BizLogContext ( ) ;
bizLogContext . setLogType ( BizLogType . HRM ) ; //模块类型
bizLogContext . setBelongType ( BizLogSmallType4Hrm . HRM_RSOURCE_CARD ) ; //所属大类型
bizLogContext . setLogSmallType ( BizLogSmallType4Hrm . HRM_RSOURCE_CARD_SYSTEM ) ; //当前小类型
bizLogContext . setOperateType ( BizLogOperateType . ADD ) ;
bizLogContext . setOperateAuditType ( BizLogOperateAuditType . WARNING ) ;
bizLogContext . setParams ( params ) ; //当前request请求参数
logger . setUser ( user ) ; //当前操作人
String mainSql = "select * from hrmresource where id=" + id ;
logger . setMainSql ( mainSql , "id" ) ; //主表sql
logger . setMainPrimarykey ( "id" ) ; //主日志表唯一key
logger . setMainTargetNameColumn ( "lastname" ) ; //当前targetName对应的列( 对应日志中的对象名)
logger . before ( bizLogContext ) ; //写入操作前日志
String workstartdate = Util . null2String ( params . get ( "workstartdate" ) ) ; //参加工作日期
String companystartdate = Util . null2String ( params . get ( "companystartdate" ) ) ; //入职日期
String dsporder = Util . fromScreen3 ( Util . null2String ( params . get ( "dsporder" ) ) , user . getLanguage ( ) ) ;
if ( dsporder . length ( ) = = 0 ) dsporder = "" + id ;
if ( accounttype . equals ( "0" ) ) {
String encrptPassword = "" ;
String salt = "" ;
if ( org . apache . commons . lang3 . StringUtils . isNotBlank ( password ) ) {
String [ ] encrypts = PasswordUtil . encrypt ( password ) ;
encrptPassword = encrypts [ 0 ] ;
salt = encrypts [ 1 ] ;
}
sql = " update hrmresource set loginid='" + loginid + "', password='" + encrptPassword + "'," +
"seclevel=" + seclevel + ",dsporder=" + dsporder +
",salt='" + salt + "',workstartdate='" + workstartdate + "',companystartdate='" + companystartdate + "' where id = " + id ;
} else {
sql = " update hrmresource set seclevel=" + seclevel + ",dsporder=" + dsporder +
" ,workstartdate='" + workstartdate + "',companystartdate='" + companystartdate + "' where id = " + id ;
}
updateWorkInfo ( String . valueOf ( id ) , user , params ) ;
rs . execute ( sql ) ;
HrmFaceCheckManager . setUserPassowrd ( id + "" , password ) ;
HrmFaceCheckManager . sync ( id + "" , HrmFaceCheckManager . getOptUpdate ( ) , "HrmResourceAddService_saveSimple_update" , HrmFaceCheckManager . getOaResource ( ) ) ;
LogUtil . writeBizLog ( logger . getBizLogContexts ( ) ) ;
}
//同步RTX端的用户信息.
new OrganisationCom ( ) . checkUser ( id ) ;
new Thread ( new OrganisationComRunnable ( "user" , "add" , "" + id ) ) . start ( ) ;
ResourceComInfo . updateResourceInfoCache ( "" + id ) ;
new PluginUserCheck ( ) . clearPluginUserCache ( "messager" ) ;
//OA与第三方接口单条数据同步方法开始
new HrmServiceManager ( ) . SynInstantHrmResource ( "" + id , "1" ) ;
//OA与第三方接口单条数据同步方法结束
//BBS集成相关
String bbsLingUrl = new weaver . general . BaseBean ( ) . getPropValue ( GCONST . getConfigFile ( ) , "ecologybbs.linkUrl" ) ;
if ( ! password . equals ( "0" ) ) {
if ( ! bbsLingUrl . equals ( "" ) ) {
new Thread ( new weaver . bbs . BBSRunnable ( loginid , password ) ) . start ( ) ;
}
}
retmap . put ( "id" , id ) ;
retmap . put ( "status" , "1" ) ;
} catch ( Exception e ) {
new BaseBean ( ) . writeLog ( "保存新建人员simple错误: " + e ) ;
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , "" + weaver . systeminfo . SystemEnv . getHtmlLabelName ( 22620 , weaver . general . ThreadVarLanguage . getLang ( ) ) + "" ) ;
}
return retmap ;
}
private static Map < String , String > addResourceBase ( User user , Map < String , Object > params ) {
Map < String , String > retmap = new HashMap < > ( ) ;
try {
retmap . put ( "id" , "0" ) ;
RecordSet rs = new RecordSet ( ) ;
DepartmentComInfo DepartmentComInfo = new DepartmentComInfo ( ) ;
ResourceComInfo ResourceComInfo = new ResourceComInfo ( ) ;
SalaryManager SalaryManager = new SalaryManager ( ) ;
ChgPasswdReminder reminder = new ChgPasswdReminder ( ) ;
RemindSettings settings = reminder . getRemindSettings ( ) ;
SysRemindWorkflow SysRemindWorkflow = new SysRemindWorkflow ( ) ;
DepartmentVirtualComInfo DepartmentVirtualComInfo = new DepartmentVirtualComInfo ( ) ;
StringBuilder para ;
String cmd = Util . null2String ( params . get ( "cmd" ) ) ;
String id = Util . null2String ( params . get ( "id" ) ) ;
String workcode = Util . fromScreen3 ( Util . null2String ( params . get ( "workcode" ) ) , user . getLanguage ( ) ) ;
String lastname = Util . fromScreen3 ( Util . null2String ( params . get ( "lastname" ) ) , user . getLanguage ( ) ) . trim ( ) ;
String sex = Util . fromScreen3 ( Util . null2String ( params . get ( "sex" ) ) , user . getLanguage ( ) ) ;
String resourceimageid = Util . null2String ( params . get ( "resourceimageid" ) ) ;
if ( resourceimageid . length ( ) > 0 ) {
resourceimageid = "" + DocDownloadCheckUtil . getDownloadfileidstr ( resourceimageid ) ;
}
String departmentid = Util . fromScreen3 ( Util . null2String ( params . get ( "departmentid" ) ) , user . getLanguage ( ) ) ;
String costcenterid = Util . fromScreen3 ( Util . null2String ( params . get ( "costcenterid" ) ) , user . getLanguage ( ) ) ;
String jobtitle = Util . fromScreen3 ( Util . null2String ( params . get ( "jobtitle" ) ) , user . getLanguage ( ) ) ;
String joblevel = Util . fromScreen3 ( Util . null2String ( params . get ( "joblevel" ) ) , user . getLanguage ( ) ) ;
String jobactivitydesc = Util . fromScreen3 ( Util . null2String ( params . get ( "jobactivitydesc" ) ) , user . getLanguage ( ) ) ;
String managerid = Util . fromScreen3 ( Util . null2String ( params . get ( "managerid" ) ) , user . getLanguage ( ) ) ;
String assistantid = Util . fromScreen3 ( Util . null2String ( params . get ( "assistantid" ) ) , user . getLanguage ( ) ) ;
String status = Util . fromScreen3 ( Util . null2String ( params . get ( "status" ) ) , user . getLanguage ( ) ) ;
String locationid = Util . fromScreen3 ( Util . null2String ( params . get ( "locationid" ) ) , user . getLanguage ( ) ) ;
String workroom = Util . fromScreen3 ( Util . null2String ( params . get ( "workroom" ) ) , user . getLanguage ( ) ) ;
String telephone = Util . fromScreen3 ( Util . null2String ( params . get ( "telephone" ) ) , user . getLanguage ( ) ) ;
String mobile = Util . fromScreen3 ( Util . null2String ( params . get ( "mobile" ) ) , user . getLanguage ( ) ) ;
String mobileshowtype = Util . fromScreen3 ( Util . null2String ( params . get ( "mobileshowtype" ) ) , user . getLanguage ( ) ) ;
String mobilecall = Util . fromScreen3 ( Util . null2String ( params . get ( "mobilecall" ) ) , user . getLanguage ( ) ) ;
String fax = Util . fromScreen3 ( Util . null2String ( params . get ( "fax" ) ) , user . getLanguage ( ) ) ;
String jobcall = Util . fromScreen3 ( Util . null2String ( params . get ( "jobcall" ) ) , user . getLanguage ( ) ) ;
String email = Util . fromScreen3 ( Util . null2String ( params . get ( "email" ) ) , user . getLanguage ( ) ) ;
String dsporder = Util . fromScreen3 ( Util . null2String ( params . get ( "dsporder" ) ) , user . getLanguage ( ) ) ;
String accounttype = Util . fromScreen3 ( Util . null2String ( params . get ( "accounttype" ) ) , user . getLanguage ( ) ) ;
String systemlanguage = Util . null2String ( params . get ( "systemlanguage" ) ) ;
if ( systemlanguage . equals ( "" ) | | systemlanguage . equals ( "0" ) ) systemlanguage = "7" ;
String belongto = Util . fromScreen3 ( Util . null2String ( params . get ( "belongto" ) ) , user . getLanguage ( ) ) ;
//应聘人员id
String rcid = Util . null2String ( params . get ( "rcId" ) ) ;
CheckItemBean mobileBean = new CheckItemBean ( "mobile" , mobile , id ) ;
ValidateFieldManager . validate ( mobileBean ) ;
if ( ! mobileBean . isPass ( ) ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , mobileBean . getCheckMsg ( ) ) ;
return retmap ;
}
CheckItemBean telephoneBean = new CheckItemBean ( "telephone" , telephone , id ) ;
ValidateFieldManager . validate ( telephoneBean ) ;
if ( ! telephoneBean . isPass ( ) ) {
retmap . put ( "status" , "-1" ) ;
retmap . put ( "message" , telephoneBean . getCheckMsg ( ) ) ;
return retmap ;
}
if ( dsporder . length ( ) = = 0 ) dsporder = id ;
if ( accounttype . equals ( "0" ) ) {
belongto = "-1" ;
}
String departmentvirtualids = Util . null2String ( params . get ( "departmentvirtualids" ) ) ; //虚拟部门id;
//Td9325,解决多账号次账号没有登陆Id在浏览框组织结构中无法显示的问题。
boolean falg = false ;
String loginid = "" ;
if ( accounttype . equals ( "1" ) ) {
rs . execute ( "select loginid from HrmResource where id =" + belongto ) ;
if ( rs . next ( ) ) {
loginid = rs . getString ( "loginid" ) ;
}
if ( ! loginid . equals ( "" ) ) {
String maxidsql = "select max(id) as id from HrmResource where loginid like '" + loginid + "%'" ;
rs . execute ( maxidsql ) ;
if ( rs . next ( ) ) {
loginid = loginid + ( rs . getInt ( "id" ) + 1 ) ;
falg = true ;
}
}
}
rs . executeProc ( "HrmResourceMaxId_Get" , "" ) ;
rs . next ( ) ;
id = "" + rs . getInt ( 1 ) ;
if ( ! "" . equals ( rcid ) ) {
id = rcid ;
}
SimpleBizLogger logger = new SimpleBizLogger ( ) ;
BizLogContext bizLogContext = new BizLogContext ( ) ;
bizLogContext . setLogType ( BizLogType . HRM ) ; //模块类型
bizLogContext . setBelongType ( BizLogSmallType4Hrm . HRM_RSOURCE_CARD ) ; //所属大类型
bizLogContext . setBelongTypeTargetName ( SystemEnv . getHtmlLabelName ( 1361 , user . getLanguage ( ) ) ) ;
bizLogContext . setLogSmallType ( BizLogSmallType4Hrm . HRM_RSOURCE_CARD_BASE ) ; //当前小类型
bizLogContext . setOperateType ( BizLogOperateType . ADD ) ;
bizLogContext . setParams ( params ) ; //当前request请求参数
logger . setUser ( user ) ; //当前操作人
String cusFieldNames = ServiceUtil . getCusFieldNames ( "HrmCustomFieldByInfoType" , - 1 , "b" ) ;
String mainSql = "select a.*" + ( cusFieldNames . length ( ) > 0 ? "," + cusFieldNames : "" ) + " from hrmresource a left join cus_fielddata b on a.id=b.id and b.scope='HrmCustomFieldByInfoType' and b.scopeid=-1 where a.id=" + id ;
logger . setMainSql ( mainSql , "id" ) ; //主表sql
logger . setMainPrimarykey ( "id" ) ; //主日志表唯一key
logger . setMainTargetNameColumn ( "lastname" ) ; //当前targetName对应的列( 对应日志中的对象名)
logger . before ( bizLogContext ) ; //写入操作前日志
String sql = "select managerstr, seclevel from HrmResource where id = " + Util . getIntValue ( managerid ) ;
rs . execute ( sql ) ;
String managerstr = "" ;
while ( rs . next ( ) ) {
String tmp_managerstr = rs . getString ( "managerstr" ) ;
//处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 begin
if ( ! tmp_managerstr . startsWith ( "," ) ) tmp_managerstr = "," + tmp_managerstr ;
if ( ! tmp_managerstr . endsWith ( "," ) ) tmp_managerstr = tmp_managerstr + "," ;
//处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 end
managerstr + = tmp_managerstr ;
managerstr = "," + managerid + managerstr ;
managerstr = managerstr . endsWith ( "," ) ? managerstr : ( managerstr + "," ) ;
}
String subcmpanyid1 = DepartmentComInfo . getSubcompanyid1 ( departmentid ) ;
RecordSetTrans rst = new RecordSetTrans ( ) ;
rst . setAutoCommit ( false ) ;
try {
if ( resourceimageid . length ( ) = = 0 ) resourceimageid = "null" ;
if ( costcenterid . length ( ) = = 0 ) costcenterid = "null" ;
if ( managerid . length ( ) = = 0 ) managerid = "null" ;
if ( assistantid . length ( ) = = 0 ) assistantid = "null" ;
if ( accounttype . length ( ) = = 0 ) accounttype = "null" ;
if ( belongto . length ( ) = = 0 ) belongto = "null" ;
if ( jobcall . length ( ) = = 0 ) jobcall = "null" ;
if ( mobileshowtype . length ( ) = = 0 ) mobileshowtype = "null" ;
if ( rst . getDBType ( ) . equalsIgnoreCase ( "postgresql" ) ) {
if ( joblevel . length ( ) = = 0 ) joblevel = null ;
if ( dsporder . length ( ) = = 0 ) dsporder = null ;
}
workcode = CodeRuleManager . getCodeRuleManager ( ) . generateRuleCode ( RuleCodeType . USER , subcmpanyid1 , departmentid , jobtitle , workcode ) ;
para = new StringBuilder ( "" + id + separator + workcode + separator + lastname + separator + sex + separator + resourceimageid + separator +
departmentid + separator + costcenterid + separator + jobtitle + separator + joblevel + separator + jobactivitydesc + separator +
managerid + separator + assistantid + separator + status + separator + locationid + separator + workroom + separator + telephone +
separator + mobile + separator + mobilecall + separator + fax + separator + jobcall + separator + subcmpanyid1 + separator + managerstr +
separator + accounttype + separator + belongto + separator + systemlanguage + separator + email + separator + dsporder + separator + mobileshowtype ) ;
rst . executeProc ( "HrmResourceBasicInfo_Insert" , para . toString ( ) ) ;
if ( Util . null2String ( locationid ) . length ( ) > 0 ) {
rst . executeSql ( "update hrmresource set countryid=(select countryid from HrmLocations where id=" + locationid + "),"
+ DbFunctionUtil . getInsertUpdateSetSql ( rst . getDBType ( ) , user . getUID ( ) ) + " where id=" + id ) ;
}
String logidsql , quickSearchStr = new HrmCommonServiceImpl ( ) . generateQuickSearchStr ( lastname ) ;
if ( falg ) {
logidsql = "update HrmResource set loginid = ?, pinyinlastname = ?, ecology_pinyin_search = ? where id = ?" ;
rst . executeUpdate ( logidsql , loginid , quickSearchStr , quickSearchStr , id ) ;
} else {
logidsql = "update HrmResource set pinyinlastname = ?, ecology_pinyin_search = ? where id = ?" ;
rst . executeUpdate ( logidsql , quickSearchStr , quickSearchStr , id ) ;
}
rst . commit ( ) ;
} catch ( Exception e ) {
rst . rollback ( ) ;
e . printStackTrace ( ) ;
}
boolean formdefined = false ;
weaver . system . CusFormSettingComInfo CusFormSettingComInfo = new weaver . system . CusFormSettingComInfo ( ) ;
weaver . system . CusFormSetting CusFormSetting = CusFormSettingComInfo . getCusFormSetting ( "hrm" , "HrmResourceBase" ) ;
if ( CusFormSetting ! = null ) {
if ( CusFormSetting . getStatus ( ) = = 2 ) {
//自定义布局页面
formdefined = true ;
}
}
int userid = user . getUID ( ) ;
String userpara = "" + userid + separator + today ;
para = new StringBuilder ( "" + id ) ;
for ( int i = 0 ; i < 5 ; i + + ) {
int idx = i ;
if ( formdefined ) idx + + ;
String datefield = Util . null2String ( params . get ( "datefield" + idx ) ) ;
String numberfield = "" + Util . getDoubleValue ( Util . null2String ( params . get ( "numberfield" + idx ) ) , 0 ) ;
String textfield = Util . null2String ( params . get ( "textfield" + idx ) ) ;
String tinyintfield = "" + Util . getIntValue ( Util . null2String ( params . get ( "tinyintfield" + idx ) ) , 0 ) ;
para . append ( separator ) . append ( datefield ) . append ( separator ) . append ( numberfield ) . append ( separator ) . append ( textfield ) . append ( separator ) . append ( tinyintfield ) ;
}
rs . executeProc ( "HrmResourceDefine_Update" , para . toString ( ) ) ;
rs . executeProc ( "HrmResource_CreateInfo" , "" + id + separator + userpara + separator + userpara ) ;
//421944 用户自定义隐私设置
UserPrivacyComInfo upc = new UserPrivacyComInfo ( ) ;
PrivacyComInfo pc = new PrivacyComInfo ( ) ;
Map < String , String > mapShowSets = pc . getMapShowSets ( ) ;
String insertSql ;
rs = new RecordSet ( ) ;
try {
String deletePriSql = " delete from userprivacysetting where userid= '" + id + "'" ;
rs . execute ( deletePriSql ) ;
for ( Map . Entry < String , String > me : mapShowSets . entrySet ( ) ) {
String fieldName = me . getKey ( ) ;
String fieldVal = Util . null2String ( mapShowSets . get ( fieldName ) ) ;
if ( fieldVal . equals ( "1" ) ) {
String tmpPK = id + "__" + fieldName ;
String tmpPvalue = Util . null2String ( params . get ( fieldName + "showtype" ) ) ;
insertSql = "insert into userprivacysetting (combinedid,userid,ptype,pvalue) values('" + tmpPK + "','" + id + "','" + fieldName + "','" + tmpPvalue + "')" ;
rs . execute ( insertSql ) ;
}
}
upc . removeUserPrivacyCache ( ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
// 改为只进行该人缓存信息的添加
ResourceComInfo . addResourceInfoCache ( id ) ;
SalaryManager . initResourceSalary ( id ) ;
para = new StringBuilder ( "" + id + separator + managerid + separator + departmentid + separator + subcmpanyid1 + separator + "0" + separator + managerstr ) ;
rs . executeProc ( "HrmResource_Trigger_Insert" , para . toString ( ) ) ;
String sql_1 = ( "insert into HrmInfoStatus (itemid,hrmid) values(1," + id + ")" ) ;
rs . execute ( sql_1 ) ;
String sql_2 = ( "insert into HrmInfoStatus (itemid,hrmid) values(2," + id + ")" ) ;
rs . execute ( sql_2 ) ;
String sql_3 = ( "insert into HrmInfoStatus (itemid,hrmid) values(3," + id + ")" ) ;
rs . execute ( sql_3 ) ;
String sql_10 = ( "insert into HrmInfoStatus (itemid,hrmid) values(10," + id + ")" ) ;
rs . execute ( sql_10 ) ;
String CurrentUser = "" + user . getUID ( ) ;
String CurrentUserName = "" + user . getUsername ( ) ;
String SWFAccepter ;
String SWFTitle ;
String SWFRemark ;
String SWFSubmiter ;
String Subject ;
Subject = SystemEnv . getHtmlLabelName ( 15670 , user . getLanguage ( ) ) ;
Subject + = ":" + lastname ;
//modifier by lvyi 2013-12-31
if ( settings . getEntervalid ( ) . equals ( "1" ) ) { //入职提醒
String thesql = "select hrmids from HrmInfoMaintenance where id<4 or id = 10" ;
rs . execute ( thesql ) ;
StringBuilder members = new StringBuilder ( ) ;
while ( rs . next ( ) ) {
String hrmid_tmp = Util . null2String ( rs . getString ( "hrmids" ) ) ; //TD9392
if ( hrmid_tmp . length ( ) ! = 0 ) {
members . append ( "," ) . append ( rs . getString ( "hrmids" ) ) ;
}
}
if ( ! members . toString ( ) . equals ( "" ) ) {
members = new StringBuilder ( members . substring ( 1 ) ) ;
members = new StringBuilder ( new HrmResourceBaseService ( ) . duplicateRemoval ( members . toString ( ) , user . getUID ( ) + "" ) ) ;
SWFAccepter = members . toString ( ) ;
SWFTitle = SystemEnv . getHtmlLabelName ( 15670 , user . getLanguage ( ) ) ;
SWFTitle + = ":" + lastname ;
SWFTitle + = "-" + CurrentUserName ;
SWFTitle + = "-" + today ;
SWFRemark = "<a class='wea-hrm-new-employee-set' onClick=\"openHrmNewEmployeeSetDialog(" + id + ")\" style=\"cursor:pointer;\" id = '" + id + "'>" + Util . fromScreen2 ( Subject , user . getLanguage ( ) ) + "</a>" ;
SWFSubmiter = CurrentUser ;
SysRemindWorkflow . setPrjSysRemind ( SWFTitle , 0 , Util . getIntValue ( SWFSubmiter ) , SWFAccepter , SWFRemark ) ;
}
}
//CustomFieldTreeManager.editCustomDataE9Add("HrmCustomFieldByInfoType", -1, fu, Util.getIntValue(id, 0));
//应聘人员的个人信息18条
if ( ! "" . equals ( rcid ) ) {
sql = "select * from HrmCareerApply where id = ?" ;
rs . executeQuery ( sql , id ) ;
if ( rs . next ( ) ) {
String birthday = Util . null2String ( rs . getString ( "birthday" ) ) ;
String folk = Util . null2String ( rs . getString ( "folk" ) ) ;
String nativeplace = Util . null2String ( rs . getString ( "nativeplace" ) ) ;
String regresidentplace = Util . null2String ( rs . getString ( "regresidentplace" ) ) ;
String certificatenum = Util . null2String ( rs . getString ( "certificatenum" ) ) ;
String maritalstatus = Util . null2String ( rs . getString ( "maritalstatus" ) ) ;
String policy = Util . null2String ( rs . getString ( "policy" ) ) ;
String bememberdate = Util . null2String ( rs . getString ( "bememberdate" ) ) ;
String bepartydate = Util . null2String ( rs . getString ( "bepartydate" ) ) ;
String islabouunion = Util . null2String ( rs . getString ( "islabouunion" ) ) ;
String educationlevel = Util . null2String ( rs . getString ( "educationlevel" ) ) ;
String degree = Util . null2String ( rs . getString ( "degree" ) ) ;
String healthinfo = Util . null2String ( rs . getString ( "healthinfo" ) ) ;
String height = Util . null2String ( rs . getString ( "height" ) ) ;
if ( height . contains ( "." ) ) height = height . substring ( 0 , height . indexOf ( "." ) ) ;
String weight = Util . null2String ( rs . getString ( "weight" ) ) ;
if ( weight . contains ( "." ) ) weight = weight . substring ( 0 , weight . indexOf ( "." ) ) ;
String residentplace = Util . null2String ( rs . getString ( "residentplace" ) ) ;
String homeaddress = Util . null2String ( rs . getString ( "homeaddress" ) ) ;
String tempresidentnumber = Util . null2String ( rs . getString ( "tempresidentnumber" ) ) ;
para = new StringBuilder ( "" + id + separator + birthday + separator + folk + separator + nativeplace + separator + regresidentplace + separator + maritalstatus + separator + policy + separator + bememberdate + separator + bepartydate + separator + islabouunion + separator + educationlevel + separator + degree + separator + healthinfo + separator + height + separator + weight + separator + residentplace + separator + homeaddress + separator + tempresidentnumber + separator + certificatenum ) ;
RecordSet rs1 = new RecordSet ( ) ;
rs1 . executeProc ( "HrmResourcePersonalInfo_Insert" , para . toString ( ) ) ;
}
}
//更新虚拟组织部门id
if ( departmentvirtualids . length ( ) > 0 ) {
//保存前先删除需要删除的数据, 因为有managerid 所以不能全部删除再保存
sql = "delete from hrmresourcevirtual where resourceid=" + id + " and departmentid not in (" + departmentvirtualids + ")" ;
rs . execute ( sql ) ;
String [ ] departmentvirtualid = departmentvirtualids . split ( "," ) ;
for ( String s : departmentvirtualid ) {
rs . execute ( " select count(*) from HrmResourceVirtual where departmentid ='" + s + "' and resourceid = " + id ) ;
if ( rs . next ( ) ) {
//如果已存在 无需处理
if ( rs . getInt ( 1 ) > 0 ) continue ;
}
//写入
int tmpid = 0 ;
rs . execute ( "select max(id) from HrmResourceVirtual " ) ;
if ( rs . next ( ) ) {
tmpid = rs . getInt ( 1 ) + 1 ;
}
String subcompanyid = DepartmentVirtualComInfo . getSubcompanyid1 ( s ) ;
sql = " insert into HrmResourceVirtual (id,resourceid,subcompanyid,departmentid ) " +
" values (" + tmpid + "," + id + "," + subcompanyid + "," + s + ")" ;
rs . execute ( sql ) ;
}
}
LogUtil . writeBizLog ( logger . getBizLogContexts ( ) ) ;
HrmFaceCheckManager . sync ( id , HrmFaceCheckManager . getOptInsert ( ) , "hrm_e9_HrmResourceBaseService_addResourceBase" , HrmFaceCheckManager . getOaResource ( ) ) ;
//同步RTX端的用户信息.
new OrganisationCom ( ) . checkUser ( Util . getIntValue ( id ) ) ;
new Thread ( new OrganisationComRunnable ( "user" , "add" , "" + id ) ) . start ( ) ;
ResourceComInfo . updateResourceInfoCache ( "" + id ) ;
new PluginUserCheck ( ) . clearPluginUserCache ( "messager" ) ;
//OA与第三方接口单条数据同步方法开始
new HrmServiceManager ( ) . SynInstantHrmResource ( "" + id , "1" ) ;
//OA与第三方接口单条数据同步方法结束
//新增人员实时同步到CoreMail邮件系统
//CoreMailAPI.synUser(id);
if ( cmd . equals ( "SaveAndNew" ) ) {
retmap . put ( "status" , "1" ) ;
} else if ( cmd . equals ( "SaveAndNext" ) ) {
retmap . put ( "status" , "2" ) ;
} else {
retmap . put ( "status" , "3" ) ;
}
retmap . put ( "id" , id ) ;
} catch ( Exception e ) {
new BaseBean ( ) . writeLog ( "新建人员基本信息错误:" + e ) ;
retmap . put ( "status" , "-1" ) ;
}
return retmap ;
}
public static Map < String , Object > editResourceBase ( User user , Map < String , Object > params ) {
Map < String , Object > retMap = new HashMap < > ( ) ;
try {
boolean canEdit = HrmUserVarify . checkUserRight ( "HrmResourceEdit:Edit" , user ) ;
if ( ! canEdit ) {
retMap . put ( "status" , "-1" ) ;
retMap . put ( "message" , "" + weaver . systeminfo . SystemEnv . getHtmlLabelName ( 22620 , weaver . general . ThreadVarLanguage . getLang ( ) ) + "" ) ;
return retMap ;
}
RecordSet rs = new RecordSet ( ) ;
DepartmentComInfo DepartmentComInfo = new DepartmentComInfo ( ) ;
ResourceComInfo ResourceComInfo = new ResourceComInfo ( ) ;
HrmServiceManager HrmServiceManager = new HrmServiceManager ( ) ;
CrmShareBase CrmShareBase = new CrmShareBase ( ) ;
StringBuilder para ;
String id = Util . null2String ( params . get ( "id" ) ) ;
if ( id . length ( ) = = 0 ) {
retMap . put ( "status" , "-1" ) ;
retMap . put ( "message" , "" + weaver . systeminfo . SystemEnv . getHtmlLabelName ( 22620 , weaver . general . ThreadVarLanguage . getLang ( ) ) + "" ) ;
return retMap ;
}
String workcode = Util . fromScreen3 ( Util . null2String ( params . get ( "workcode" ) ) , user . getLanguage ( ) ) ;
String lastname = Util . fromScreen3 ( Util . null2String ( params . get ( "lastname" ) ) , user . getLanguage ( ) ) . trim ( ) ;
String sex = Util . fromScreen3 ( ( Util . null2String ( params . get ( "sex" ) ) ) , user . getLanguage ( ) ) ;
String resourceimageid = Util . null2String ( params . get ( "resourceimageid" ) ) ;
if ( resourceimageid . length ( ) > 0 ) {
resourceimageid = "" + DocDownloadCheckUtil . getDownloadfileidstr ( resourceimageid ) ;
}
String resourceimageBase64 = Util . null2String ( params . get ( "resourceimageBase64" ) ) ;
if ( resourceimageBase64 . length ( ) > 0 ) {
resourceimageid = ServiceUtil . saveResourceImage ( resourceimageBase64 ) ;
}
String oldresourceimageid = Util . null2String ( params . get ( "oldresourceimage" ) ) ;
if ( resourceimageid . equals ( "" ) ) resourceimageid = oldresourceimageid ;
String departmentid = Util . fromScreen3 ( Util . null2String ( params . get ( "departmentid" ) ) , user . getLanguage ( ) ) ;
String costcenterid = Util . fromScreen3 ( Util . null2String ( params . get ( "costcenterid" ) ) , user . getLanguage ( ) ) ;
String jobtitle = Util . fromScreen3 ( Util . null2String ( params . get ( "jobtitle" ) ) , user . getLanguage ( ) ) ;
String joblevel = Util . fromScreen3 ( Util . null2String ( params . get ( "joblevel" ) ) , user . getLanguage ( ) ) ;
String jobactivitydesc = Util . fromScreen3 ( Util . null2String ( params . get ( "jobactivitydesc" ) ) , user . getLanguage ( ) ) ;
String managerid = Util . fromScreen3 ( Util . null2String ( params . get ( "managerid" ) ) , user . getLanguage ( ) ) ;
String assistantid = Util . fromScreen3 ( Util . null2String ( params . get ( "assistantid" ) ) , user . getLanguage ( ) ) ;
String status = Util . fromScreen3 ( Util . null2String ( params . get ( "status" ) ) , user . getLanguage ( ) ) ;
String locationid = Util . fromScreen3 ( Util . null2String ( params . get ( "locationid" ) ) , user . getLanguage ( ) ) ;
String workroom = Util . fromScreen3 ( Util . null2String ( params . get ( "workroom" ) ) , user . getLanguage ( ) ) ;
String telephone = Util . fromScreen3 ( Util . null2String ( params . get ( "telephone" ) ) , user . getLanguage ( ) ) ;
String mobile = Util . fromScreen3 ( Util . null2String ( params . get ( "mobile" ) ) , user . getLanguage ( ) ) ;
String mobileshowtype = Util . fromScreen3 ( Util . null2String ( params . get ( "mobileshowtype" ) ) , user . getLanguage ( ) ) ;
String mobilecall = Util . fromScreen3 ( Util . null2String ( params . get ( "mobilecall" ) ) , user . getLanguage ( ) ) ;
String fax = Util . fromScreen3 ( Util . null2String ( params . get ( "fax" ) ) , user . getLanguage ( ) ) ;
String email = Util . fromScreen3 ( Util . null2String ( params . get ( "email" ) ) , user . getLanguage ( ) ) ;
String dsporder = Util . fromScreen3 ( Util . null2String ( params . get ( "dsporder" ) ) , user . getLanguage ( ) ) ;
String jobcall = Util . fromScreen3 ( Util . null2String ( params . get ( "jobcall" ) ) , user . getLanguage ( ) ) ;
String systemlanguage = Util . fromScreen3 ( Util . null2String ( params . get ( "systemlanguage" ) ) , user . getLanguage ( ) ) ;
if ( systemlanguage . equals ( "" ) | | systemlanguage . equals ( "0" ) ) {
systemlanguage = "7" ;
}
String accounttype = Util . fromScreen3 ( Util . null2String ( params . get ( "accounttype" ) ) , user . getLanguage ( ) ) ;
String belongto = Util . fromScreen3 ( Util . null2String ( params . get ( "belongto" ) ) , user . getLanguage ( ) ) ;
if ( dsporder . length ( ) = = 0 ) dsporder = id ;
if ( accounttype . equals ( "0" ) ) {
belongto = "-1" ;
}
CheckItemBean mobileBean = new CheckItemBean ( "mobile" , mobile , id ) ;
ValidateFieldManager . validate ( mobileBean ) ;
if ( ! mobileBean . isPass ( ) ) {
retMap . put ( "status" , "-1" ) ;
retMap . put ( "message" , mobileBean . getCheckMsg ( ) ) ;
return retMap ;
}
CheckItemBean telephoneBean = new CheckItemBean ( "telephone" , telephone , id ) ;
ValidateFieldManager . validate ( telephoneBean ) ;
if ( ! telephoneBean . isPass ( ) ) {
retMap . put ( "status" , "-1" ) ;
retMap . put ( "message" , telephoneBean . getCheckMsg ( ) ) ;
return retMap ;
}
SimpleBizLogger logger = new SimpleBizLogger ( ) ;
BizLogContext bizLogContext = new BizLogContext ( ) ;
bizLogContext . setLogType ( BizLogType . HRM ) ; //模块类型
bizLogContext . setBelongType ( BizLogSmallType4Hrm . HRM_RSOURCE_CARD ) ; //所属大类型
bizLogContext . setBelongTypeTargetName ( SystemEnv . getHtmlLabelName ( 1361 , user . getLanguage ( ) ) ) ;
bizLogContext . setLogSmallType ( BizLogSmallType4Hrm . HRM_RSOURCE_CARD_BASE ) ; //当前小类型
bizLogContext . setParams ( params ) ; //当前request请求参数
logger . setUser ( user ) ; //当前操作人
String cusFieldNames = ServiceUtil . getCusFieldNames ( "HrmCustomFieldByInfoType" , - 1 , "b" ) ;
String mainSql = "select a.*" + ( cusFieldNames . length ( ) > 0 ? "," + cusFieldNames : "" ) + " from hrmresource a left join cus_fielddata b on a.id=b.id and b.scope='HrmCustomFieldByInfoType' and b.scopeid=-1 where a.id=" + id ;
logger . setMainSql ( mainSql , "id" ) ; //主表sql
logger . setMainPrimarykey ( "id" ) ; //主日志表唯一key
logger . setMainTargetNameColumn ( "lastname" ) ; //当前targetName对应的列( 对应日志中的对象名)
logger . before ( bizLogContext ) ; //吸入操作前日志
//Td9325,解决多账号次账号没有登陆Id在浏览框组织结构中无法显示的问题。
String oldbelongto = "" ;
boolean falg = false ;
String loginid = "" ;
rs . execute ( "select * from HrmResource where id =" + id ) ;
if ( rs . next ( ) ) {
loginid = rs . getString ( "loginid" ) ;
float idsporder = rs . getFloat ( "dsporder" ) ;
if ( idsporder < = 0 ) {
dsporder = rs . getString ( "id" ) ;
} else {
dsporder = "" + idsporder ;
}
String thisAccounttype = rs . getString ( "accounttype" ) ;
if ( thisAccounttype . equals ( "1" ) & & accounttype . equals ( "0" ) ) {
oldbelongto = rs . getString ( "belongto" ) ;
}
}
if ( accounttype . equals ( "1" ) & & loginid . equalsIgnoreCase ( "" ) ) {
rs . execute ( "select loginid from HrmResource where id =" + belongto ) ;
if ( rs . next ( ) ) {
loginid = rs . getString ( 1 ) ;
}
if ( ! loginid . equals ( "" ) ) {
loginid = loginid + ( id + 1 ) ;
falg = true ;
}
}
String sql = "select * from HrmResource where id = " + Util . getIntValue ( id ) ;
rs . execute ( sql ) ;
String oldmanagerid = "" ;
String oldmanagerstr = "" ;
while ( rs . next ( ) ) {
oldmanagerid = rs . getString ( "managerid" ) ;
oldmanagerstr = rs . getString ( "managerstr" ) ;
// 处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 begin
if ( ! oldmanagerstr . startsWith ( "," ) ) oldmanagerstr = "," + oldmanagerstr ;
if ( ! oldmanagerstr . endsWith ( "," ) ) oldmanagerstr = oldmanagerstr + "," ;
// 处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 end
}
//mysql报错问题java.sql.SQLException: Incorrect integer value: '' for column 'COSTCENTERID' at row 1
if ( resourceimageid . length ( ) = = 0 ) resourceimageid = "null" ;
if ( costcenterid . length ( ) = = 0 ) costcenterid = "null" ;
if ( managerid . length ( ) = = 0 ) managerid = "null" ;
if ( assistantid . length ( ) = = 0 ) assistantid = "null" ;
if ( accounttype . length ( ) = = 0 ) accounttype = "null" ;
if ( belongto . length ( ) = = 0 ) belongto = "null" ;
if ( jobcall . length ( ) = = 0 ) jobcall = "null" ;
if ( mobileshowtype . length ( ) = = 0 ) mobileshowtype = "null" ;
if ( StringUtils . isNotEmpty ( workcode ) ) {
CodeRuleManager . getCodeRuleManager ( ) . checkReservedIfDel ( RuleCodeType . USER . getValue ( ) , workcode ) ;
}
para = new StringBuilder ( "" + id + separator + workcode + separator + lastname + separator + sex + separator + resourceimageid
+ separator + departmentid + separator + costcenterid + separator + jobtitle + separator + joblevel
+ separator + jobactivitydesc + separator + managerid + separator + assistantid + separator + status
+ separator + locationid + separator + workroom + separator + telephone + separator + mobile
+ separator + mobilecall + separator + fax + separator + jobcall + separator + systemlanguage
+ separator + accounttype + separator + belongto + separator + email + separator + dsporder + separator + mobileshowtype ) ;
RecordSetTrans rst = new RecordSetTrans ( ) ;
rst . setAutoCommit ( false ) ;
try {
rst . executeProc ( "HrmResourceBasicInfo_Update" , para . toString ( ) ) ;
if ( Util . null2String ( locationid ) . length ( ) > 0 ) {
rst . executeSql ( "update hrmresource set countryid=(select countryid from HrmLocations where id=" + locationid + ") where id=" + id ) ;
}
String logidsql , quickSearchStr = new HrmCommonServiceImpl ( ) . generateQuickSearchStr ( lastname ) ;
if ( falg ) {
logidsql = "update HrmResource set loginid = ?, pinyinlastname = ?, ecology_pinyin_search = ? where id = ?" ;
rst . executeUpdate ( logidsql , loginid , quickSearchStr , quickSearchStr , id ) ;
} else {
logidsql = "update HrmResource set pinyinlastname = ?, ecology_pinyin_search = ? where id = ?" ;
rst . executeUpdate ( logidsql , quickSearchStr , quickSearchStr , id ) ;
}
rst . commit ( ) ;
} catch ( Exception e ) {
rst . rollback ( ) ;
e . printStackTrace ( ) ;
}
if ( ! "7" . equals ( systemlanguage ) & & StringUtils . isNotBlank ( systemlanguage ) ) {
User . setUserLang ( Util . getIntValue ( id ) , Util . getIntValue ( systemlanguage , 7 ) ) ;
}
//421944 用户自定义隐私设置
UserPrivacyComInfo upc = new UserPrivacyComInfo ( ) ;
PrivacyComInfo pc = new PrivacyComInfo ( ) ;
Map < String , String > mapShowSets = pc . getMapShowSets ( ) ;
String insertSql ;
rs = new RecordSet ( ) ;
try {
String deletePriSql = " delete from userprivacysetting where userid= '" + id + "'" ;
rs . execute ( deletePriSql ) ;
for ( Map . Entry < String , String > me : mapShowSets . entrySet ( ) ) {
String fieldName = me . getKey ( ) ;
String fieldVal = Util . null2String ( mapShowSets . get ( fieldName ) ) ;
if ( fieldVal . equals ( "1" ) ) {
String tmpPK = id + "__" + fieldName ;
String tmpPvalue = Util . null2String ( params . get ( fieldName + "showtype" ) ) ;
insertSql = "insert into userprivacysetting (combinedid,userid,ptype,pvalue) values('" + tmpPK + "','" + id + "','" + fieldName + "','" + tmpPvalue + "')" ;
rs . execute ( insertSql ) ;
}
}
upc . removeUserPrivacyCache ( ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
int userid = user . getUID ( ) ;
String userpara = "" + userid + separator + today ;
rs . executeProc ( "HrmResource_ModInfo" , "" + id + separator + userpara ) ;
String managerstr = "" ;
if ( ! id . equals ( managerid ) ) {
sql = "select managerstr from HrmResource where id = " + Util . getIntValue ( managerid ) ;
rs . execute ( sql ) ;
while ( rs . next ( ) ) {
managerstr = rs . getString ( "managerstr" ) ;
// 处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 begin
if ( ! managerstr . startsWith ( "," ) ) managerstr = "," + managerstr ;
if ( ! managerstr . endsWith ( "," ) ) managerstr = managerstr + "," ;
// 处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 end
managerstr = "," + managerid + managerstr ;
managerstr = managerstr . endsWith ( "," ) ? managerstr : ( managerstr + "," ) ;
}
} else {
managerstr = "," + managerid + "," ;
}
rst = new RecordSetTrans ( ) ;
rst . setAutoCommit ( false ) ;
try {
para = new StringBuilder ( "" + id + separator + managerstr ) ;
rst . executeProc ( "HrmResource_UpdateManagerStr" , para . toString ( ) ) ;
rst . commit ( ) ;
} catch ( Exception e ) {
rst . rollback ( ) ;
e . printStackTrace ( ) ;
}
managerid = Util . null2String ( managerid ) . trim ( ) ;
oldmanagerid = Util . null2String ( oldmanagerid ) . trim ( ) ;
if ( ! managerid . equals ( oldmanagerid ) & & ! ( ( "" . equals ( managerid ) | | "0" . equals ( managerid ) ) & & ( "" . equals ( oldmanagerid ) | | "0" . equals ( oldmanagerid ) ) ) ) {
String temOldmanagerstr = "," + id + oldmanagerstr ;
temOldmanagerstr = temOldmanagerstr . endsWith ( "," ) ? temOldmanagerstr : ( temOldmanagerstr + "," ) ;
sql = "select id,departmentid,subcompanyid1,managerid,seclevel,managerstr from HrmResource where managerstr like '%" + temOldmanagerstr + "'" ;
rs . execute ( sql ) ;
while ( rs . next ( ) ) {
String nowmanagerstr = Util . null2String ( rs . getString ( "managerstr" ) ) ;
// 处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 begin
if ( ! nowmanagerstr . startsWith ( "," ) ) nowmanagerstr = "," + nowmanagerstr ;
if ( ! nowmanagerstr . endsWith ( "," ) ) nowmanagerstr = nowmanagerstr + "," ;
// 处理managerstr 不以逗号开始或者结束的情况 形如 managerstr: 8 end
String resourceid = rs . getString ( "id" ) ;
//指定上级为自身的情况,不更新自身上级
if ( id . equals ( resourceid ) )
continue ;
String nowmanagerstr2 = "" ;
int index = nowmanagerstr . lastIndexOf ( oldmanagerstr ) ;
if ( index ! = - 1 ) {
if ( ! "" . equals ( managerstr ) ) {
nowmanagerstr2 = nowmanagerstr . substring ( 0 , index ) + ( "" . equals ( oldmanagerstr ) ? managerstr . substring ( 1 ) : managerstr ) ;
} else {
nowmanagerstr2 = nowmanagerstr . substring ( 0 , index ) + ( "" . equals ( oldmanagerstr ) ? "" : "," ) ;
}
}
rst = new RecordSetTrans ( ) ;
rst . setAutoCommit ( false ) ;
try {
para = new StringBuilder ( resourceid + separator + nowmanagerstr2 ) ;
rst . executeProc ( "HrmResource_UpdateManagerStr" , para . toString ( ) ) ;
rst . commit ( ) ;
ResourceComInfo . updateResourceInfoCache ( resourceid ) ; //更新缓存
} catch ( Exception e ) {
rst . rollback ( ) ;
e . printStackTrace ( ) ;
}
}
}
String subcmpanyid1 = DepartmentComInfo . getSubcompanyid1 ( departmentid ) ;
para = new StringBuilder ( "" + id + separator + subcmpanyid1 ) ;
rst = new RecordSetTrans ( ) ;
rst . setAutoCommit ( false ) ;
try {
rst . executeProc ( "HrmResource_UpdateSubCom" , para . toString ( ) ) ;
rst . commit ( ) ;
} catch ( Exception e ) {
rst . rollback ( ) ;
e . printStackTrace ( ) ;
}
if ( ! managerid . equals ( oldmanagerid ) & & ! ( ( "" . equals ( managerid ) | | "0" . equals ( managerid ) ) & & ( "" . equals ( oldmanagerid ) | | "0" . equals ( oldmanagerid ) ) ) ) { //修改人力资源经理,对客户和日程共享重新计算
CrmShareBase . setShareForNewManager ( id ) ;
}
boolean formdefined = false ;
CusFormSettingComInfo CusFormSettingComInfo = new weaver . system . CusFormSettingComInfo ( ) ;
CusFormSetting CusFormSetting = CusFormSettingComInfo . getCusFormSetting ( "hrm" , "HrmResourceBase" ) ;
if ( CusFormSetting ! = null ) {
if ( CusFormSetting . getStatus ( ) = = 2 ) {
//自定义布局页面
formdefined = true ;
}
}
para = new StringBuilder ( "" + id ) ;
for ( int i = 0 ; i < 5 ; i + + ) {
int idx = i ;
if ( formdefined ) idx + + ;
String datefield = Util . null2String ( params . get ( "datefield" + idx ) ) ;
String numberfield = "" + Util . getDoubleValue ( Util . null2String ( params . get ( "numberfield" + idx ) ) , 0 ) ;
String textfield = Util . null2String ( params . get ( "textfield" + idx ) ) ;
String tinyintfield = "" + Util . getIntValue ( Util . null2String ( params . get ( "tinyintfield" + idx ) ) , 0 ) ;
para . append ( separator ) . append ( datefield ) . append ( separator ) . append ( numberfield ) . append ( separator ) . append ( textfield ) . append ( separator ) . append ( tinyintfield ) ;
}
rs . executeProc ( "HrmResourceDefine_Update" , para . toString ( ) ) ;
new Thread ( new OrganisationComRunnable ( "user" , "editbasicinfo" , id + "-" + status ) ) . start ( ) ;
// 改为自进行修正
ResourceComInfo . updateResourceInfoCache ( id ) ;
try {
//OA与第三方接口单条数据同步方法开始
HrmServiceManager . SynInstantHrmResource ( id , "2" ) ;
//OA与第三方接口单条数据同步方法结束
} catch ( Exception e ) {
new BaseBean ( ) . writeLog ( "OA与第三方接口单条数据同步失败" + e ) ;
}
//处理次账号修改为主账号时,检查次账号所属 主账号的 其他设置是否需要修改 add by kzw QC159888
try {
if ( ! oldbelongto . equals ( "" ) ) {
HrmUserSettingComInfo userSetting = new HrmUserSettingComInfo ( ) ;
String belongtoshow = userSetting . getBelongtoshowByUserId ( oldbelongto ) ;
if ( belongtoshow . equals ( "1" ) ) {
rs . execute ( "select id from hrmresource where belongto = " + oldbelongto ) ;
if ( ! rs . next ( ) ) {
String setId = userSetting . getId ( oldbelongto ) ;
rs . execute ( "update HrmUserSetting set belongtoshow=0 where id=" + setId ) ;
userSetting . removeHrmUserSettingComInfoCache ( ) ;
}
}
}
} catch ( Exception e ) {
new BaseBean ( ) . writeLog ( e . getMessage ( ) ) ;
}
rs . execute ( "update HrmResource set " + DbFunctionUtil . getUpdateSetSql ( rs . getDBType ( ) , user . getUID ( ) ) + " where id=" + id ) ;
rs . execute ( "update HrmResourceManager set " + DbFunctionUtil . getUpdateSetSql ( rs . getDBType ( ) , user . getUID ( ) ) + " where id=" + id ) ;
//写入操作后日志
LogUtil . writeBizLog ( logger . getBizLogContexts ( ) ) ;
HrmFaceCheckManager . sync ( id , HrmFaceCheckManager . getOptUpdate ( ) , "hrm_e9_HrmResourceBaseService_editResourceBase" , HrmFaceCheckManager . getOaResource ( ) ) ;
retMap . put ( "status" , "1" ) ;
retMap . put ( "id" , id ) ;
} catch ( Exception e ) {
new BaseBean ( ) . writeLog ( e ) ;
retMap . put ( "status" , "-1" ) ;
retMap . put ( "message" , "" + weaver . systeminfo . SystemEnv . getHtmlLabelName ( 22620 , weaver . general . ThreadVarLanguage . getLang ( ) ) + "" ) ;
}
return retMap ;
}
private static void updateWorkInfo ( String id , User user , Map < String , Object > params ) {
try {
RecordSet rs = new RecordSet ( ) ;
String sql ;
String companystartdate = Util . fromScreen3 ( Util . null2String ( params . get ( "companystartdate" ) ) , user . getLanguage ( ) ) ;
String workstartdate = Util . fromScreen3 ( Util . null2String ( params . get ( "workstartdate" ) ) , user . getLanguage ( ) ) ;
List < String > lsParams = new ArrayList < > ( ) ;
lsParams . add ( companystartdate . length ( ) = = 0 ? null : companystartdate ) ;
lsParams . add ( workstartdate . length ( ) = = 0 ? null : workstartdate ) ;
lsParams . add ( id ) ;
sql = " update hrmresource set companystartdate=?,workstartdate=? where id=?" ;
rs . executeUpdate ( sql , lsParams ) ;
HrmDateCheck hrmDateCheck = new HrmDateCheck ( ) ;
hrmDateCheck . calWorkInfo ( id ) ;
} catch ( Exception e ) {
new BaseBean ( ) . writeLog ( e ) ;
}
}
public static Map < String , Object > convertEcResourceParams ( Map < String , Object > params ) {
// TODO 先查询原有EC人员信息, 再封装传参
Map < String , Object > convertParams = new HashMap < > ( ) ;
String jclResourceId = Util . null2String ( params . get ( "id" ) ) ;
String ecResourceId = "" ;
if ( StringUtils . isNotBlank ( jclResourceId ) ) {
ecResourceId = MapperProxyFactory . getProxy ( HrmResourceMapper . class ) . getEcResourceId ( jclResourceId ) ;
}
// 更新人员时,初始化人员参数
if ( StringUtils . isNotBlank ( ecResourceId ) ) {
RecordSet rs = new RecordSet ( ) ;
rs . execute ( "select * from hrmresource where id = '" + ecResourceId + "'" ) ;
if ( rs . next ( ) ) {
convertParams . put ( "id" , rs . getString ( "id" ) ) ;
convertParams . put ( "loginid" , rs . getString ( "loginid" ) ) ;
convertParams . put ( "accounttype" , rs . getString ( "accounttype" ) ) ;
convertParams . put ( "password" , rs . getString ( "password" ) ) ;
convertParams . put ( "seclevel" , rs . getString ( "seclevel" ) ) ;
convertParams . put ( "workstartdate" , rs . getString ( "workstartdate" ) ) ;
convertParams . put ( "companystartdate" , rs . getString ( "companystartdate" ) ) ;
convertParams . put ( "dsporder" , rs . getString ( "dsporder" ) ) ;
convertParams . put ( "workcode" , rs . getString ( "workcode" ) ) ;
convertParams . put ( "lastname" , rs . getString ( "lastname" ) ) ;
convertParams . put ( "sex" , rs . getString ( "sex" ) ) ;
convertParams . put ( "resourceimageid" , rs . getString ( "resourceimageid" ) ) ;
convertParams . put ( "joblevel" , rs . getString ( "joblevel" ) ) ;
convertParams . put ( "jobactivitydesc" , rs . getString ( "jobactivitydesc" ) ) ;
convertParams . put ( "managerid" , rs . getString ( "managerid" ) ) ;
convertParams . put ( "assistantid" , rs . getString ( "assistantid" ) ) ;
convertParams . put ( "status" , rs . getString ( "status" ) ) ;
convertParams . put ( "locationid" , rs . getString ( "locationid" ) ) ;
convertParams . put ( "workroom" , rs . getString ( "workroom" ) ) ;
convertParams . put ( "telephone" , rs . getString ( "telephone" ) ) ;
convertParams . put ( "mobile" , rs . getString ( "mobile" ) ) ;
convertParams . put ( "mobilecall" , rs . getString ( "mobilecall" ) ) ;
convertParams . put ( "fax" , rs . getString ( "fax" ) ) ;
convertParams . put ( "jobcall" , rs . getString ( "jobcall" ) ) ;
convertParams . put ( "email" , rs . getString ( "email" ) ) ;
convertParams . put ( "systemlanguage" , rs . getString ( "systemlanguage" ) ) ;
convertParams . put ( "belongto" , rs . getString ( "belongto" ) ) ;
convertParams . put ( "mobileshowtype" , rs . getString ( "mobileshowtype" ) ) ;
convertParams . put ( "costcenterid" , rs . getString ( "costcenterid" ) ) ;
convertParams . put ( "cmd" , rs . getString ( "cmd" ) ) ;
convertParams . put ( "rcId" , rs . getString ( "rcId" ) ) ;
convertParams . put ( "departmentvirtualids" , rs . getString ( "departmentvirtualids" ) ) ;
// 更新EC人员用到参数
convertParams . put ( "editcontact" , rs . getString ( "editcontact" ) ) ;
convertParams . put ( "resourceimageBase64" , rs . getString ( "resourceimageBase64" ) ) ;
convertParams . put ( "oldresourceimage" , rs . getString ( "oldresourceimage" ) ) ;
}
}
// 部门ID
convertParams . put ( "departmentid" , params . get ( "ec_department" ) ) ;
// EC岗位
String jclJobId = Util . null2String ( params . get ( "job_title" ) ) ;
String ecJobId = "1" ;
if ( StringUtils . isNotBlank ( jclJobId ) ) {
ecJobId = EcHrmRelationUtil . getEcJobId ( Long . parseLong ( jclJobId ) ) ;
}
convertParams . put ( "jobtitle" , ecJobId ) ;
convertParams . put ( "workcode" , params . get ( "work_code" ) ) ;
convertParams . put ( "lastname" , params . get ( "last_name" ) ) ;
convertParams . put ( "sex" , params . get ( "sex" ) ) ;
convertParams . put ( "status" , params . get ( "status" ) ) ;
convertParams . put ( "accounttype" , params . get ( "account_type" ) ) ;
convertParams . put ( "belongto" , params . get ( "belong_to" ) ) ;
convertParams . put ( "locationid" , params . get ( "location_id" ) ) ;
convertParams . put ( "dsporder" , params . get ( "show_order" ) ) ;
convertParams . put ( "companystartdate" , params . get ( "company_start_date" ) ) ;
convertParams . put ( "workstartdate" , params . get ( "work_start_date" ) ) ;
convertParams . put ( "resourceimageid" , params . get ( "resource_image_id" ) ) ;
convertParams . put ( "jobactivitydesc" , params . get ( "job_activity_desc" ) ) ;
convertParams . put ( "mobile" , params . get ( "mobile" ) ) ;
convertParams . put ( "telephone" , params . get ( "telephone" ) ) ;
convertParams . put ( "email" , params . get ( "email" ) ) ;
return convertParams ;
}
}