From 4e304e2d1eb136147f8b78d65816c6101c6a4c0b Mon Sep 17 00:00:00 2001 From: chenxu1234 <1401584727@qq.com> Date: Tue, 25 Feb 2025 11:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=8D=A1=E7=89=87=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=8E=A7=E5=88=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrm/service/HrmResourceBaseService.java | 44 +- .../service/HrmResourcePersonalService.java | 859 ++++++++++++++ .../hrm/service/HrmResourceWorkService.java | 1055 +++++++++++++++++ 3 files changed, 1920 insertions(+), 38 deletions(-) create mode 100644 src/com/api/hrm/service/HrmResourcePersonalService.java create mode 100644 src/com/api/hrm/service/HrmResourceWorkService.java diff --git a/src/com/api/hrm/service/HrmResourceBaseService.java b/src/com/api/hrm/service/HrmResourceBaseService.java index 85a6b85..7117255 100644 --- a/src/com/api/hrm/service/HrmResourceBaseService.java +++ b/src/com/api/hrm/service/HrmResourceBaseService.java @@ -613,6 +613,9 @@ public class HrmResourceBaseService extends BaseBean { boolean ishasF = HrmUserVarify.checkUserRight("HrmResourceWelfareEdit:Edit", user,departmentid) || ResourceComInfo.isFinInfoView2(userid, id); ; + //二开逻辑 + boolean isShowNew = false; + isShowNew = checkRyShow(userid,id); AllManagers.getAll(id); if (id.equals("" + user.getUID())) { @@ -664,12 +667,12 @@ public class HrmResourceBaseService extends BaseBean { String software = (String) staticobj.getObject("software"); if (software == null) software = "ALL"; if (software.equals("ALL") || software.equals("HRM")) { - if ((isSelf || operatelevel >= 0) && HrmListValidate.isValidate(11)) { + if ((isSelf || operatelevel >= 0 || isShowNew) && HrmListValidate.isValidate(11)) { //tabInfo.put(SystemEnv.getHtmlLabelName(15687,user.getLanguage()), "/hrm/resource/HrmResourcePersonalView.jsp?isfromtab=true&id="+id); tablist.add(setTabInfo("HrmResourcePersonalView", 15687, GCONST.getContextPath()+"/hrm/resource/HrmResourcePersonalView.jsp?isfromtab=true&id=" + id, "/main/hrm/resource/HrmResourcePersonalView/" + id, user)); idx++; } - if ((isSelf || isManager || operatelevel >= 0) && HrmListValidate.isValidate(12)) { + if ((isSelf || isManager || operatelevel >= 0 || isShowNew) && HrmListValidate.isValidate(12)) { //tabInfo.put(SystemEnv.getHtmlLabelName(15688,user.getLanguage()), "/hrm/resource/HrmResourceWorkView.jsp?isfromtab=true&id="+id); tablist.add(setTabInfo("HrmResourceWorkView", 15688, GCONST.getContextPath()+"/hrm/resource/HrmResourceWorkView.jsp?isfromtab=true&id=" + id, "/main/hrm/resource/HrmResourceWorkView/" + id, user)); idx++; @@ -3706,41 +3709,6 @@ public class HrmResourceBaseService extends BaseBean { return back; } - public List queryHrmRoleUserByRole(String roleid){ - BaseBean bb = new BaseBean(); - List userList = new ArrayList<>(); - try{ - RecordSet rs = new RecordSet(); - String jobtitleSql = " WHERE (a.jobtitle = b.resourceid AND b.resourcetype=5 AND (b.jobtitlelevel=1 OR (b.jobtitlelevel=2 AND ','||b.subdepid ||',' LIKE '%,'||a.subcompanyid1||',%') OR (b.jobtitlelevel=3 AND ','||b.subdepid||',' LIKE '%,' || a.departmentid ||',%')))"; - - String sql =" select distinct t.resourceid from ( \n" + - " select a.id as resourceid from HrmResource a, HrmRoleMembers b \n" + - " where (a.id=b.resourceid and b.resourcetype =1 ) and b.roleid = " + roleid + - " union all \n" + - " select a.id AS resourceid from HrmResourceManager a, HrmRoleMembers b \n" + - " where (a.id=b.resourceid and b.resourcetype in(7,8)) and b.roleid =" + roleid + - " union all \n" + - " select a.id as resourceid from HrmResource a, HrmRoleMembers b \n" + - " where (a.subcompanyid1 = b.resourceid and a.seclevel>=b.seclevelfrom and a.seclevel<=b.seclevelto and b.resourcetype=2) and b.roleid=" +roleid + - " union all \n" + - " select a.id as resourceid FROM HrmResource a, HrmRoleMembers b \n" + - " WHERE (a.departmentid = b.resourceid and a.seclevel>=b.seclevelfrom and a.seclevel<=b.seclevelto and b.resourcetype=3) and b.roleid =" + roleid + - " union all \n" + - " SELECT a.id as resourceid FROM HrmResource a, HrmRoleMembers b \n" + jobtitleSql + " and b.roleid = " + roleid + - " ) t " ; - - bb.writeLog("queryHrmRoleUserByRole:sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - String resourceid = rs.getString("resourceid"); - userList.add(resourceid); - } - }catch (Exception e){ - bb.writeLog("queryHrmRoleUserByRole:e:"+e); - } - return userList; - } - /*** * * @param deptid @@ -3758,7 +3726,7 @@ public class HrmResourceBaseService extends BaseBean { " select a.id,a.departmentname,a.supdepid,b.curlevel+1 from Hrmdepartment a inner join tem_table b on (a.id = b.supdepid)\n" + " )\n" + " select bmfzr from hrmdepartmentdefined where deptid in (select dep_id from tem_table)"; - rs.executeQuery(sql,new Object[]{deptid}); + rs.executeQuery(sql); while(rs.next()){ String bmfzr = Util.null2String(rs.getString("bmfzr")); bmfzrs += StringUtils.isBlank(bmfzrs) ? bmfzr :","+bmfzr ; diff --git a/src/com/api/hrm/service/HrmResourcePersonalService.java b/src/com/api/hrm/service/HrmResourcePersonalService.java new file mode 100644 index 0000000..4736cc4 --- /dev/null +++ b/src/com/api/hrm/service/HrmResourcePersonalService.java @@ -0,0 +1,859 @@ +package com.api.hrm.service; + +import com.alibaba.fastjson.JSONObject; +import com.api.browser.bean.SearchConditionItem; +import com.api.hrm.bean.HrmFieldBean; +import com.api.hrm.util.*; +import com.cloudstore.dev.api.util.TextUtil; +import com.engine.common.biz.SimpleBizLogger; +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.HrmCommonService; +import com.engine.common.service.impl.HrmCommonServiceImpl; +import com.engine.common.util.LogUtil; +import com.engine.common.util.ParamUtil; +import com.engine.hrm.biz.HrmFieldManager; +import com.engine.hrm.util.face.HrmFaceCheckManager; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.common.StringUtil; +import weaver.conn.RecordSet; +import weaver.docs.docs.CustomFieldManager; +import weaver.encrypt.EncryptUtil; +import weaver.file.FileUpload; +import weaver.file.ImageFileManager; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.hrm.common.DbFunctionUtil; +import weaver.hrm.definedfield.HrmFieldGroupComInfo; +import weaver.hrm.moduledetach.ManageDetachComInfo; +import weaver.hrm.resource.AllManagers; +import weaver.hrm.resource.CustomFieldTreeManager; +import weaver.hrm.resource.HrmListValidate; +import weaver.hrm.resource.ResourceComInfo; +import weaver.hrm.settings.HrmSettingsComInfo; +import weaver.systeminfo.SysMaintenanceLog; +import weaver.systeminfo.SystemEnv; +import weaver.systeminfo.systemright.CheckSubCompanyRight; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.util.*; + +/*** + * 人员卡片 + * @author lvyi + * + */ +public class HrmResourcePersonalService extends BaseBean { + private static final char separator = Util.getSeparator() ; + private String today = DateUtil.getCurrentDate(); + + /** + * 查看人员个人信息 + * @param request + * @param response + * @return + */ + public String getResourcePesonalView(HttpServletRequest request, HttpServletResponse response){ + User user = HrmUserVarify.getUser(request, response); + HrmSettingsComInfo hrmSettingsComInfo = new HrmSettingsComInfo(); + HrmResourceBaseService hrmResourceBaseService = new HrmResourceBaseService(); + HrmFieldManager hfm = new HrmFieldManager("HrmCustomFieldByInfoType",1); + String checkIsEdit = hrmSettingsComInfo.getCheckIsEdit(); + new BaseBean().writeLog("checkIsEdit==="+checkIsEdit); + Map retmap = new HashMap(); + Map result = new HashMap(); + try{ + String id = Util.null2String(request.getParameter("id")); + if(id.length()==0){ + id = ""+user.getUID(); + } + boolean isSelf = false; + boolean isShowNew = false; + isShowNew = checkRyShow(user.getUID(),id); + if (id.equals("" + user.getUID())) { + isSelf = true; + } + if (id.equals("")) id = String.valueOf(user.getUID()); + String status = ""; + String subcompanyid = "", departmentId = ""; + RecordSet rs = new RecordSet(); + HttpSession session = request.getSession(true); + rs.executeSql("select subcompanyid1, status, departmentId from hrmresource where id = " + id); + if (rs.next()) { + status = Util.toScreen(rs.getString("status"), user.getLanguage()); + subcompanyid = Util.toScreen(rs.getString("subcompanyid1"), user.getLanguage()); + departmentId = StringUtil.vString(rs.getString("departmentId")); + if (subcompanyid == null || subcompanyid.equals("") || subcompanyid.equalsIgnoreCase("null")) + subcompanyid = "-1"; + + } + + int operatelevel = -1; + //人力资源模块是否开启了管理分权,如不是,则不显示框架,直接转向到列表页面(新的分权管理) + int hrmdetachable = 0; + ManageDetachComInfo ManageDetachComInfo = new ManageDetachComInfo(); + boolean isUseHrmManageDetach = ManageDetachComInfo.isUseHrmManageDetach(); + if (isUseHrmManageDetach) { + hrmdetachable = 1; + } else { + hrmdetachable = 0; + } + if (hrmdetachable == 1) { + CheckSubCompanyRight CheckSubCompanyRight = new CheckSubCompanyRight(); + operatelevel = CheckSubCompanyRight.ChkComRightByUserRightCompanyId(user.getUID(), "HrmResourceEdit:Edit", Util.getIntValue(subcompanyid)); + } else { + if (HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user, departmentId)) { + operatelevel = 2; + } + } + Map buttons = new Hashtable(); + if (((isSelf&&hrmResourceBaseService.isHasModify(1)) || operatelevel > 0 || isShowNew) && !status.equals("10")) { + buttons.put("hasEdit", true); + buttons.put("hasSave", true); + } + + HrmListValidate HrmListValidate = new HrmListValidate(); + AllManagers AllManagers = new AllManagers(); + boolean isManager = false; + AllManagers.getAll(id); + if (id.equals("" + user.getUID())) { + isSelf = true; + } + while (AllManagers.next()) { + String tempmanagerid = AllManagers.getManagerID(); + if (tempmanagerid.equals("" + user.getUID())) { + isManager = true; + } + } + if ((isSelf || operatelevel >= 0 || isShowNew) && HrmListValidate.isValidate(11)) { + result.put("buttons", buttons); + Map tmp = getFormFields(request, response, false); + result.put("conditions", tmp.get("conditions")); + result.put("tables", tmp.get("tables")); + result.put("id", id); + }else{ + result.put("hasRight", false); + } +// +// if(HrmUserVarify.checkUserRight("HrmResourceEdit:Edit",user)||(isSelf&&hrmResourceBaseService.isHasModify(1))) { +// buttons.put("hasEdit", true); +// buttons.put("hasSave", true); +// } + + }catch (Exception e) { + writeLog(e); + } + + retmap.put("result", result); + return JSONObject.toJSONString(retmap); + } + + /** + * 人员个人信息表单字段 + * @param request + * @param response + * @return + */ + public Map getFormFields(HttpServletRequest request, HttpServletResponse response, boolean isAdd){ + User user = HrmUserVarify.getUser(request, response); + Map result = new HashMap(); + List lsGroup = new ArrayList(); + Map groupitem = null; + List itemlist = null; + try{ + String id = Util.null2String(request.getParameter("id")); + int viewAttr = Util.getIntValue(request.getParameter("viewAttr"),1); + if(isAdd)viewAttr=2; + if(id.length()==0){ + id = ""+user.getUID(); + } + boolean isSelf = false; + if (id.equals("" + user.getUID())) { + isSelf = true; + } + String subcompanyid = "", departmentId = ""; + RecordSet recordSet = new RecordSet(); + //不能直接判断是否有人力资源维护权限,也需要根据分权进行判断 + boolean canEdit = false; + recordSet.executeSql("select subcompanyid1, status, departmentId from hrmresource where id = " + id); + if (recordSet.next()) { + subcompanyid = Util.toScreen(recordSet.getString("subcompanyid1"), user.getLanguage()); + departmentId = StringUtil.vString(recordSet.getString("departmentId")); + if (subcompanyid == null || subcompanyid.equals("") || subcompanyid.equalsIgnoreCase("null")) + subcompanyid = "-1"; + } + int operatelevel = -1; + //人力资源模块是否开启了管理分权,如不是,则不显示框架,直接转向到列表页面(新的分权管理) + int hrmdetachable = 0; + ManageDetachComInfo ManageDetachComInfo = new ManageDetachComInfo(); + boolean isUseHrmManageDetach = ManageDetachComInfo.isUseHrmManageDetach(); + if (isUseHrmManageDetach) { + hrmdetachable = 1; + } else { + hrmdetachable = 0; + } + if (hrmdetachable == 1) { + CheckSubCompanyRight CheckSubCompanyRight = new CheckSubCompanyRight(); + operatelevel = CheckSubCompanyRight.ChkComRightByUserRightCompanyId(user.getUID(), "HrmResourceEdit:Edit", Util.getIntValue(subcompanyid)); + } else { + if (HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user, departmentId)) { + operatelevel = 2; + } + } + if(operatelevel>0){ + canEdit = true; + } + int scopeId = 1; + HrmFieldGroupComInfo HrmFieldGroupComInfo = new HrmFieldGroupComInfo(); + HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo(); + HrmFieldManager hfm = new HrmFieldManager("HrmCustomFieldByInfoType",scopeId); + CustomFieldManager cfm = new CustomFieldManager("HrmCustomFieldByInfoType",scopeId); + if(viewAttr!=1)hfm.isReturnDecryptData(true); + hfm.getHrmData(Util.getIntValue(id)); + cfm.getCustomData(Util.getIntValue(id)); + HrmListValidate hrmListValidate = new HrmListValidate(); + + while(HrmFieldGroupComInfo.next()){ + int grouptype = Util.getIntValue(HrmFieldGroupComInfo.getType()); + if(grouptype!=scopeId)continue; + int grouplabel = Util.getIntValue(HrmFieldGroupComInfo.getLabel()); + int groupid = Util.getIntValue(HrmFieldGroupComInfo.getid()); + hfm.getCustomFields(groupid); + + groupitem = new HashMap(); + itemlist = new ArrayList(); + groupitem.put("title", SystemEnv.getHtmlLabelName(grouplabel, user.getLanguage())); + groupitem.put("defaultshow", true); + if(groupid==4){ + groupitem.put("hide", (!isAdd&&!canEdit&&isSelf&&viewAttr==2&&hfm.getContactEditCount()==0)||!hrmListValidate.isValidate(42)); + }else{ + groupitem.put("hide", (!isAdd&&!canEdit&&isSelf&&viewAttr==2&&hfm.getContactEditCount()==0)||!Util.null2String(HrmFieldGroupComInfo.getIsShow()).equals("1")); + } + groupitem.put("items", itemlist); + lsGroup.add(groupitem); + while(hfm.next()){ + int tmpviewattr = viewAttr; + String fieldName=hfm.getFieldname(); + String cusFieldname = ""; + String fieldValue=""; + if(hfm.isBaseField(fieldName)){ + fieldValue = hfm.getHrmData(fieldName); + }else{ + fieldValue = Util.null2String(new EncryptUtil().decrypt("cus_fielddata","field" + hfm.getFieldid(),"HrmCustomFieldByInfoType",""+scopeId,cfm.getData("field" + hfm.getFieldid()),viewAttr==2,true)); + cusFieldname = "customfield"+hfm.getFieldid(); + if(isAdd) cusFieldname = "customfield_1_"+hfm.getFieldid(); + } + + if(!hfm.isUse()||(!isAdd&&viewAttr==2&&!canEdit&&isSelf&&!hfm.isModify())){ + HrmFieldBean hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldname(cusFieldname.length() > 0 ? cusFieldname : fieldName); + hrmFieldBean.setFieldhtmltype("1"); + hrmFieldBean.setType("1"); + if(!isAdd){ + hrmFieldBean.setFieldvalue(fieldValue); + } + hrmFieldBean.setIsFormField(true); + SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user); + Map otherParams = new HashMap(); + otherParams.put("hide", true); + searchConditionItem.setOtherParams(otherParams); + itemlist.add(searchConditionItem); + continue; + } + org.json.JSONObject hrmFieldConf = hfm.getHrmFieldConf(fieldName); + HrmFieldBean hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldid((String)hrmFieldConf.get("id")); + hrmFieldBean.setFieldname(cusFieldname.length()>0?cusFieldname:fieldName); + hrmFieldBean.setFieldlabel(hfm.getLable()); + hrmFieldBean.setFieldhtmltype((String)hrmFieldConf.get("fieldhtmltype")); + hrmFieldBean.setType((String)hrmFieldConf.get("type")); + hrmFieldBean.setDmlurl((String)hrmFieldConf.get("dmlurl")); + hrmFieldBean.setIssystem(""+(Integer)hrmFieldConf.get("issystem")); + if(!isAdd){ + hrmFieldBean.setFieldvalue(fieldValue); + } + hrmFieldBean.setIsFormField(true); + if(viewAttr==2 && ((String)hrmFieldConf.get("ismand")).equals("1")){ + tmpviewattr=3; + if(hrmFieldBean.getFieldhtmltype().equals("3")){ + hrmFieldBean.setRules("required|string"); +// if (hrmFieldBean.getType().equals("2")||hrmFieldBean.getType().equals("161")||hrmFieldBean.getType().equals("162")) { +// hrmFieldBean.setRules("required|string"); +// }else{ +// hrmFieldBean.setRules("required|integer"); +// } + }else if(hrmFieldBean.getFieldhtmltype().equals("4")|| + hrmFieldBean.getFieldhtmltype().equals("5")){ + hrmFieldBean.setRules("required|integer"); + } else if (hrmFieldBean.getFieldhtmltype().equals("1") && hrmFieldBean.getType().equals("2")) { + hrmFieldBean.setRules("required|integer"); + }else{ + hrmFieldBean.setRules("required|string"); + } + } + + SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user); + if(searchConditionItem==null)continue; + if(searchConditionItem.getBrowserConditionParam()!=null){ + searchConditionItem.getBrowserConditionParam().setViewAttr(tmpviewattr); + } + searchConditionItem.setViewAttr(tmpviewattr); + itemlist.add(searchConditionItem); + } + if(itemlist.size()==0)lsGroup.remove(groupitem); + } + result.put("conditions", lsGroup); + + //明细信息 + List lsTable = new ArrayList(); + List titles = null; + Map table = null; + Map maptab = null; + HrmFieldBean hrmFieldBean = null; + List> columns = null; + List> datas = null; + Map data = null; + result.put("tables",lsTable); + + //标头信息--家庭信息 + HrmFieldDetailComInfo HrmFieldDetailComInfo = new HrmFieldDetailComInfo(); + LinkedHashMap> detialTable = HrmFieldDetailComInfo.getDetialTable(""+scopeId, viewAttr, "80%"); + Iterator>> entries = detialTable.entrySet().iterator(); + while(entries.hasNext()){ + Map.Entry> entry = entries.next(); + String tablename = entry.getKey(); + titles = entry.getValue(); + table = new HashMap(); + columns = HrmFieldUtil.getHrmDetailTable(titles, null, user); + table.put("columns", columns); + + datas = new ArrayList>(); + RecordSet rs = new RecordSet(); + String sql = "select * from "+tablename+" where resourceid = "+id; + rs.executeSql(sql); + while(rs.next()){ + data = new HashMap(); + for(HrmFieldBean fieldInfo :titles){ + if (!isAdd){ + data.put(fieldInfo.getFieldname(), TextUtil.toBase64ForMultilang(Util.null2String(rs.getString(fieldInfo.getFieldname())))); + } + } + datas.add(data); + } + table.put("datas", datas); + table.put("rownum","rownum"); + maptab = new Hashtable(); + String tablabel = HrmResourceDetailTab.HrmResourceDetailTabInfo.get(tablename.toUpperCase()); + maptab.put("tabname", SystemEnv.getHtmlLabelNames(tablabel,user.getLanguage())); + maptab.put("hide", (!hrmListValidate.isValidate(45)||(!isAdd&&!canEdit&&isSelf&&viewAttr==2))); + maptab.put("tabinfo", table); + lsTable.add(maptab); + } + + //自定义信息 + RecordSet RecordSet = new RecordSet(); + CustomFieldTreeManager CustomFieldTreeManager = new CustomFieldTreeManager(); + LinkedHashMap ht = new LinkedHashMap(); + RecordSet.executeSql("select id, formlabel,viewtype from cus_treeform where parentid="+scopeId+" order by scopeorder"); + while(RecordSet.next()){ + if(RecordSet.getInt("viewtype")!=1)continue; + titles = new ArrayList(); + int subId = RecordSet.getInt("id"); + CustomFieldManager cfm2 = new CustomFieldManager("HrmCustomFieldByInfoType",subId); + cfm2.getCustomFields(); + CustomFieldTreeManager.getMutiCustomData("HrmCustomFieldByInfoType", subId, Util.getIntValue(id,0)); + int colcount1 = 0 ; + int rowcount = 0; + int col = 0; + while(cfm2.next()){ + rowcount++; + if(!cfm2.isUse()||(!isAdd&&viewAttr==2&&!canEdit&&isSelf&&!cfm2.isModify()))continue; + col++; + } + if(rowcount==0)continue; + cfm2.beforeFirst(); + ht.put("cus_list_" + subId, RecordSet.getString("formlabel")); + cfm2.beforeFirst(); + while (cfm2.next()) { + if(!cfm2.isUse()||(!isAdd&&viewAttr==2&&!canEdit&&isSelf&&!cfm2.isModify()))continue; + int tmpviewattr = viewAttr; + //创建表头 + String fieldname = "customfield" + cfm2.getId() + "_" + subId; + if (isAdd) fieldname = "customfield_1_" + cfm2.getId() + "_" + subId; + hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldid("" + cfm2.getId()); + hrmFieldBean.setFieldname(fieldname); + hrmFieldBean.setFieldlabel(cfm2.getLable()); + hrmFieldBean.setFieldhtmltype(cfm2.getHtmlType()); + hrmFieldBean.setType("" + cfm2.getType()); + hrmFieldBean.setDmlurl(cfm2.getDmrUrl()); + if (viewAttr == 2 && cfm2.isMand()) { + tmpviewattr = 3; + hrmFieldBean.setRules("required|string"); + } + hrmFieldBean.setViewAttr(tmpviewattr); + hrmFieldBean.setWidth("80%"); + titles.add(hrmFieldBean); + } + table = new HashMap(); + if(col>0){ + columns = HrmFieldUtil.getHrmDetailTable(titles, null, user); + table.put("columns", columns); + } + datas = new ArrayList>(); + cfm2.beforeFirst(); + while (CustomFieldTreeManager.nextMutiData()) { + data = new HashMap(); + while (cfm2.next()) { +// if(!cfm2.isUse()||(!isAdd&&viewAttr==2&&!canEdit&&isSelf&&!cfm2.isModify()))continue; + int fieldid = cfm2.getId(); //字段id + int type = cfm2.getType(); + String dmlurl = cfm2.getDmrUrl(); + int fieldhtmltype = Util.getIntValue(cfm2.getHtmlType()); + + String fieldname = "customfield" + cfm2.getId() + "_" + subId; + if (isAdd) fieldname = "customfield_1_" + cfm2.getId() + "_" + subId; + String fieldvalue = ""; + if (!isAdd){ + fieldvalue = Util.null2String(CustomFieldTreeManager.getMutiData("field" + fieldid)); + } + data.put(fieldname, fieldvalue); + if (cfm2.getHtmlType().equals("1") && cfm2.getType() == 1) { + data.put(fieldname, TextUtil.toBase64ForMultilang(Util.null2String(fieldvalue))); + } else if (cfm2.getHtmlType().equals("3")) { + String fieldshowname = hfm.getFieldvalue(user, dmlurl, fieldid, fieldhtmltype, type, fieldvalue, 0); + data.put(fieldname, fieldvalue); + data.put(fieldname + "span", fieldshowname); + } else if (cfm2.getHtmlType().equals("4")) { + data.put(fieldname, fieldvalue.equals("1")); + } else if(cfm2.getHtmlType().equals("6")){ + List filedatas = new ArrayList(); + if(Util.null2String(fieldvalue).length()>0) { + Map filedata = null; + String[] tmpIds = Util.splitString(Util.null2String(fieldvalue), ","); + for (int i = 0; i < tmpIds.length; i++) { + String fileid = tmpIds[i]; + ImageFileManager manager = new ImageFileManager(); + manager.getImageFileInfoById(Util.getIntValue(fileid)); + String filename = manager.getImageFileName(); + String extname = filename.contains(".") ? filename.substring(filename.lastIndexOf(".") + 1) : ""; + filedata = new HashMap(); + filedata.put("acclink", "/weaver/weaver.file.FileDownload?fileid=" + fileid); + filedata.put("fileExtendName", extname); + filedata.put("fileid", fileid); + filedata.put("filelink", "/spa/document/index2file.jsp?imagefileId=" + fileid + "#/main/document/fileView"); + filedata.put("filename", filename); + filedata.put("filesize", manager.getImgsize()); + filedata.put("imgSrc", ""); + filedata.put("isImg", ""); + filedata.put("loadlink", "/weaver/weaver.file.FileDownload?fileid=" + fileid + "&download=1"); + filedata.put("showDelete", viewAttr==2); + filedata.put("showLoad", "true"); + filedatas.add(filedata); + } + } + data.put(fieldname, filedatas); + } + //只允许有权限的人删除明细行,没有权限的人只能修改不能删除 + if (canEdit) { + data.put("viewAttr", 2); + } else { + data.put("viewAttr", 1); + } + } + cfm2.beforeFirst(); + datas.add(data); + } + table.put("datas", datas); + table.put("rownum", "nodesnum_" + subId); + maptab = new Hashtable(); + RecordSet rs = new RecordSet(); + rs.executeSql("select id, formlabel from cus_treeform where parentid=" + scopeId + " and id=" + subId + " order by scopeorder"); + if (rs.next()) { + maptab.put("tabname", rs.getString("id")); + maptab.put("tabname", rs.getString("formlabel")); + } + maptab.put("hide", col == 0); + maptab.put("tabinfo", table); + lsTable.add(maptab); + } + }catch (Exception e) { + writeLog(e); + } + return result; + } + + /*** + * 新建人员个人信息 + * @param request + * @param response + * @return + */ + public Map addResourcePersonal(String id, HttpServletRequest request, HttpServletResponse response){ + Map retmap = new HashMap(); + try{ + User user = HrmUserVarify.getUser(request, response); + RecordSet rs = new RecordSet(); + ResourceComInfo ResourceComInfo = new ResourceComInfo(); + CustomFieldTreeManager CustomFieldTreeManager = new CustomFieldTreeManager(); + + String para = ""; + FileUpload fu = new FileUpload(request); + //String id = Util.null2String(fu.getParameter("id")); + String birthday = Util.fromScreen3(fu.getParameter("birthday"),user.getLanguage()); + String folk = Util.fromScreen3(fu.getParameter("folk"),user.getLanguage()) ; /*民族*/ + String nativeplace = Util.fromScreen3(fu.getParameter("nativeplace"),user.getLanguage()) ; /*籍贯*/ + String regresidentplace = Util.fromScreen3(fu.getParameter("regresidentplace"),user.getLanguage()) ; /*户口所在地*/ + String maritalstatus = Util.fromScreen3(fu.getParameter("maritalstatus"),user.getLanguage()); + String policy = Util.fromScreen3(fu.getParameter("policy"),user.getLanguage()) ; /*政治面貌*/ + String bememberdate = Util.fromScreen3(fu.getParameter("bememberdate"),user.getLanguage()) ; /*入团日期*/ + String bepartydate = Util.fromScreen3(fu.getParameter("bepartydate"),user.getLanguage()) ; /*入党日期*/ + String islabourunion = Util.fromScreen3(fu.getParameter("islabouunion"),user.getLanguage()) ; + String educationlevel = Util.fromScreen3(fu.getParameter("educationlevel"),user.getLanguage()) ;/*学历*/ + String degree = Util.fromScreen3(fu.getParameter("degree"),user.getLanguage()) ; /*学位*/ + String healthinfo = Util.fromScreen3(fu.getParameter("healthinfo"),user.getLanguage()) ;/*健康状况*/ + String height = Util.null2o(fu.getParameter("height")) ;/*身高*/ + String weight = Util.null2o(fu.getParameter("weight")) ; + String residentplace = Util.fromScreen3(fu.getParameter("residentplace"),user.getLanguage()) ; /*现居住地*/ + String homeaddress = Util.fromScreen3(fu.getParameter("homeaddress"),user.getLanguage()) ; + String tempresidentnumber = Util.fromScreen3(fu.getParameter("tempresidentnumber"),user.getLanguage()) ; + String certificatenum = Util.fromScreen3(fu.getParameter("certificatenum"),user.getLanguage()) ;/*证件号码*/ + certificatenum=certificatenum.trim(); + String tempcertificatenum=certificatenum; + + SimpleBizLogger logger = new SimpleBizLogger(); + Map params = ParamUtil.request2Map(request); + BizLogContext bizLogContext = new BizLogContext(); + bizLogContext.setLogType(BizLogType.HRM);//模块类型 + bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD);//所属大类型 + bizLogContext.setBelongTypeTargetName(SystemEnv.getHtmlLabelName(15687, user.getLanguage())); + bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD_PERSONAL);//当前小类型 + 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);//写入操作前日志 + + int msg=0; + if(!certificatenum.equals("")){ + rs.executeSql("select accounttype,certificatenum from HrmResource where id="+id); + String accountType = "", tempCertificatenum = ""; + if(rs.next()){ + accountType = Util.null2String(rs.getString("accounttype")); + tempCertificatenum = Util.null2String(rs.getString("certificatenum")); + } + if(!accountType.equals("1")) { + rs.executeSql("select id from HrmResource where id<>"+id+" and certificatenum='"+certificatenum+"' and accounttype != '1'"); + if(rs.next()){ + msg=1; + tempcertificatenum = tempCertificatenum; + } + } + } + para = ""+id+ separator+birthday+separator+folk+separator+nativeplace+separator+regresidentplace+separator+ + maritalstatus+ separator+policy+separator+bememberdate+separator+bepartydate+separator+islabourunion+ + separator+educationlevel+separator+degree+separator+healthinfo+separator+height+separator+weight+ + separator+residentplace+separator+homeaddress+separator+tempresidentnumber+separator+tempcertificatenum; + int userid = user.getUID(); + String userpara = ""+userid+separator+today; + rs.executeProc("HrmResourcePersonalInfo_Insert",para); + rs.executeProc("HrmResource_ModInfo",""+id+separator+userpara); + + int rownum = Util.getIntValue(fu.getParameter("rownum"),user.getLanguage()) ; + String prefix = "" ; + if(Boolean.TRUE.equals(HrmResourceAddService.saveStatusThreadLocal.get())){ + prefix="person_" ; + } + + for(int i = 0;i editResourcePersonal(HttpServletRequest request, HttpServletResponse response){ + Map retmap = new HashMap(); + HrmSettingsComInfo hrmSettingsComInfo = new HrmSettingsComInfo(); + + try{ + User user = HrmUserVarify.getUser(request, response); + RecordSet rs = new RecordSet(); + ResourceComInfo ResourceComInfo = new ResourceComInfo(); + CustomFieldTreeManager CustomFieldTreeManager = new CustomFieldTreeManager(); + SysMaintenanceLog SysMaintenanceLog = new SysMaintenanceLog(); + + String para = ""; + FileUpload fu = new FileUpload(request); + String id = Util.null2String(fu.getParameter("id")); + if (!HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user)) { + if (!id.equals(user.getUID() + "")) { + retmap.put("status", "-1"); + retmap.put("message", ""+ SystemEnv.getHtmlLabelName(22620,weaver.general.ThreadVarLanguage.getLang())+""); + return retmap; + } + } + String birthday = Util.fromScreen3(fu.getParameter("birthday"),user.getLanguage()); + String folk = Util.fromScreen3(fu.getParameter("folk"),user.getLanguage()) ; /*民族*/ + String nativeplace = Util.fromScreen3(fu.getParameter("nativeplace"),user.getLanguage()) ; /*籍贯*/ + String regresidentplace = Util.fromScreen3(fu.getParameter("regresidentplace"),user.getLanguage()) ; /*户口所在地*/ + String maritalstatus = Util.fromScreen3(fu.getParameter("maritalstatus"),user.getLanguage()); + String policy = Util.fromScreen3(fu.getParameter("policy"),user.getLanguage()) ; /*政治面貌*/ + String bememberdate = Util.fromScreen3(fu.getParameter("bememberdate"),user.getLanguage()) ; /*入团日期*/ + String bepartydate = Util.fromScreen3(fu.getParameter("bepartydate"),user.getLanguage()) ; /*入党日期*/ + String islabourunion = Util.fromScreen3(fu.getParameter("islabouunion"),user.getLanguage()) ; + String educationlevel = Util.fromScreen3(fu.getParameter("educationlevel"),user.getLanguage()) ;/*学历*/ + String degree = Util.fromScreen3(fu.getParameter("degree"),user.getLanguage()) ; /*学位*/ + String healthinfo = Util.fromScreen3(fu.getParameter("healthinfo"),user.getLanguage()) ;/*健康状况*/ + String height = Util.null2o(fu.getParameter("height")) ;/*身高*/ + String weight = Util.null2o(fu.getParameter("weight")) ; + String residentplace = Util.fromScreen3(fu.getParameter("residentplace"),user.getLanguage()) ; /*现居住地*/ + String homeaddress = Util.fromScreen3(fu.getParameter("homeaddress"),user.getLanguage()) ; + String tempresidentnumber = Util.fromScreen3(fu.getParameter("tempresidentnumber"),user.getLanguage()) ; + String certificatenum = Util.fromScreen3(fu.getParameter("certificatenum"),user.getLanguage()) ;/*证件号码*/ + certificatenum=certificatenum.trim(); + String tempcertificatenum=certificatenum; + + SimpleBizLogger logger = new SimpleBizLogger(); + Map params = ParamUtil.request2Map(request); + BizLogContext bizLogContext = new BizLogContext(); + bizLogContext.setLogType(BizLogType.HRM);//模块类型 + bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD);//所属大类型 + bizLogContext.setBelongTypeTargetName(SystemEnv.getHtmlLabelName(15687, user.getLanguage())); + bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD_PERSONAL);//当前小类型 + 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);//写入操作前日志 + + int msg=0; + if(!certificatenum.equals("")&&isNeedCheck(user,id,"certificatenum")){ + rs.executeSql("select accounttype,certificatenum from HrmResource where id="+id); + String accountType = "", tempCertificatenum = ""; + if(rs.next()){ + accountType = Util.null2String(rs.getString("accounttype")); + tempCertificatenum = Util.null2String(rs.getString("certificatenum")); + } + if(!accountType.equals("1")) { + rs.executeSql("select id from HrmResource where id<>"+id+" and certificatenum='"+certificatenum+"' and (accounttype != '1' or accounttype is null)"); + if(rs.next()){ + msg=1; + tempcertificatenum = tempCertificatenum; + retmap.put("status", "-1"); + retmap.put("message", ""+ SystemEnv.getHtmlLabelName(83521,weaver.general.ThreadVarLanguage.getLang())+""); + return retmap; + } + } + } + para = ""+id+ separator+birthday+separator+folk+separator+nativeplace+separator+regresidentplace+separator+ + maritalstatus+ separator+policy+separator+bememberdate+separator+bepartydate+separator+islabourunion+ + separator+educationlevel+separator+degree+separator+healthinfo+separator+height+separator+weight+ + separator+residentplace+separator+homeaddress+separator+tempresidentnumber+separator+tempcertificatenum; + + rs.executeProc("HrmResourcePersonalInfo_Insert",para); + int userid = user.getUID(); + String userpara = ""+userid+separator+today; + rs.executeProc("HrmResource_ModInfo",""+id+separator+userpara); + + int rownum = Util.getIntValue(fu.getParameter("rownum"),user.getLanguage()) ; + rs.executeProc("HrmFamilyInfo_Delete",""+id); + for(int i = 0;i leaderList = queryHrmRoleUserByRole(leader_roleid); +// String hr_roleid = "29"; +// List hrList = queryHrmRoleUserByRole(hr_roleid); + + //判断是否是指定角色29、30 + boolean hasAccess = false; + HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + List roleIds = new ArrayList<>(Arrays.asList(hrmCommonService.getRoleIds(currentUserId).split(","))); + List accessRoleIds = new ArrayList<>(); + accessRoleIds.add("29"); + accessRoleIds.add("30"); + roleIds.retainAll(accessRoleIds); + hasAccess = CollectionUtils.isNotEmpty(roleIds); + + new BaseBean().writeLog("currentUserId"+currentUserId+"roleIds"+roleIds+"hasAccess"+hasAccess); + if(hasAccess){ + back = true; + }else if((","+allDeptLeaders+",").contains(","+currentUserId+",")){ + back = true; + }else if(String.valueOf(currentUserId).equals(userManagerId)){ + back = true; + }else if(String.valueOf(currentUserId).equals(userid)){ + //自己看自己可以看 + back = true; + }else if(currentUserId == 1){ + //系统管理员可以看所有 + back = true; + }else{ + back = false; + } + } catch (Exception e) { + e.printStackTrace(); + } + + + return back; + } + + /*** + * + * @param deptid + * @return + */ + public String getDepartmentLeader(String deptid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("getDepartmentLeader:deptid:"+deptid); + String bmfzrs = ""; + try { + String sql =" with tem_table(dep_id,departmentname,supdepid,curlevel) as (\n" + + " select id, departmentname,supdepid, 1 as level from HrmDepartment where id=" + deptid+ + " union all\n" + + " select a.id,a.departmentname,a.supdepid,b.curlevel+1 from Hrmdepartment a inner join tem_table b on (a.id = b.supdepid)\n" + + " )\n" + + " select bmfzr from hrmdepartmentdefined where deptid in (select dep_id from tem_table)"; + rs.executeQuery(sql); + while(rs.next()){ + String bmfzr = Util.null2String(rs.getString("bmfzr")); + bmfzrs += StringUtils.isBlank(bmfzrs) ? bmfzr :","+bmfzr ; + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + return bmfzrs; + } +} diff --git a/src/com/api/hrm/service/HrmResourceWorkService.java b/src/com/api/hrm/service/HrmResourceWorkService.java new file mode 100644 index 0000000..6646274 --- /dev/null +++ b/src/com/api/hrm/service/HrmResourceWorkService.java @@ -0,0 +1,1055 @@ +package com.api.hrm.service; + +import java.text.DecimalFormat; +import java.util.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.alibaba.fastjson.JSONObject; +import com.api.hrm.bean.HrmFieldBean; +import com.api.hrm.util.*; +import com.api.browser.bean.SearchConditionItem; +import com.cloudstore.dev.api.util.TextUtil; +import com.engine.common.biz.SimpleBizLogger; +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.HrmCommonService; +import com.engine.common.service.impl.HrmCommonServiceImpl; +import com.engine.common.util.LogUtil; +import com.engine.common.util.ParamUtil; +import com.engine.hrm.util.face.HrmFaceCheckManager; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.common.StringUtil; +import weaver.conn.RecordSet; +import weaver.docs.docs.CustomFieldManager; +import weaver.encrypt.EncryptUtil; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.hrm.common.DbFunctionUtil; +import weaver.hrm.contract.ContractTypeComInfo; +import weaver.hrm.definedfield.HrmFieldGroupComInfo; +import weaver.hrm.definedfield.HrmFieldManager; +import weaver.hrm.job.JobTitlesComInfo; +import weaver.hrm.moduledetach.ManageDetachComInfo; +import weaver.hrm.resource.AllManagers; +import weaver.hrm.resource.CustomFieldTreeManager; +import weaver.hrm.resource.HrmListValidate; +import weaver.hrm.resource.ResourceComInfo; +import weaver.systeminfo.SysMaintenanceLog; +import weaver.systeminfo.SystemEnv; +import weaver.hrm.tools.HrmDateCheck; +import weaver.systeminfo.systemright.CheckSubCompanyRight; +import com.api.browser.util.ConditionType; +import weaver.file.ImageFileManager; + +/*** + * 人员卡片 + * @author lvyi + * + */ +public class HrmResourceWorkService extends BaseBean { + private static final char separator = Util.getSeparator(); + private String today = DateUtil.getCurrentDate(); + private DecimalFormat df = new DecimalFormat("0.00"); + + /** + * 查看人员工作信息 + * + * @param request + * @param response + * @return + */ + public String getResourceWorkView(HttpServletRequest request, HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + HrmResourceBaseService hrmResourceBaseService = new HrmResourceBaseService(); + Map result = new HashMap(); + try { + String id = Util.null2String(request.getParameter("id")); + if (id.length() == 0) { + id = "" + user.getUID(); + } + boolean isSelf = false; + boolean isShowNew = false; + isShowNew = checkRyShow(user.getUID(),id); + if (id.equals("" + user.getUID())) { + isSelf = true; + } + //工作信息 + Map buttons = new Hashtable(); + if (id.equals("")) id = String.valueOf(user.getUID()); + String status = ""; + String subcompanyid = "", departmentId = ""; + RecordSet rs = new RecordSet(); + HttpSession session = request.getSession(true); + rs.executeSql("select subcompanyid1, status, departmentId from hrmresource where id = " + id); + if (rs.next()) { + status = Util.toScreen(rs.getString("status"), user.getLanguage()); + subcompanyid = Util.toScreen(rs.getString("subcompanyid1"), user.getLanguage()); + departmentId = StringUtil.vString(rs.getString("departmentId")); + if (subcompanyid == null || subcompanyid.equals("") || subcompanyid.equalsIgnoreCase("null")) + subcompanyid = "-1"; + + } + + int operatelevel = -1; + //人力资源模块是否开启了管理分权,如不是,则不显示框架,直接转向到列表页面(新的分权管理) + int hrmdetachable = 0; + ManageDetachComInfo ManageDetachComInfo = new ManageDetachComInfo(); + if (session.getAttribute("hrmdetachable") != null) { + hrmdetachable = Util.getIntValue(String.valueOf(session.getAttribute("hrmdetachable")), 0); + } else { + boolean isUseHrmManageDetach = ManageDetachComInfo.isUseHrmManageDetach(); + if (isUseHrmManageDetach) { + hrmdetachable = 1; + session.setAttribute("detachable", "1"); + session.setAttribute("hrmdetachable", String.valueOf(hrmdetachable)); + } else { + hrmdetachable = 0; + session.setAttribute("detachable", "0"); + session.setAttribute("hrmdetachable", String.valueOf(hrmdetachable)); + } + } + if (hrmdetachable == 1) { + CheckSubCompanyRight CheckSubCompanyRight = new CheckSubCompanyRight(); + operatelevel = CheckSubCompanyRight.ChkComRightByUserRightCompanyId(user.getUID(), "HrmResourceEdit:Edit", Integer.parseInt(subcompanyid)); + } else { + if (HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user, departmentId)) { + operatelevel = 2; + } + } + if (((isSelf&&hrmResourceBaseService.isHasModify(3)) || operatelevel > 0 || isShowNew) && !status.equals("10")) { + buttons.put("hasEdit", true); + buttons.put("hasSave", true); + } + + HrmListValidate HrmListValidate = new HrmListValidate(); + AllManagers AllManagers = new AllManagers(); + boolean isManager = false; + AllManagers.getAll(id); + if (id.equals("" + user.getUID())) { + isSelf = true; + } + while (AllManagers.next()) { + String tempmanagerid = AllManagers.getManagerID(); + if (tempmanagerid.equals("" + user.getUID())) { + isManager = true; + } + } + if ((isSelf || isManager || operatelevel >= 0 || isShowNew) && HrmListValidate.isValidate(12)) { + result.put("buttons", buttons); + Map tmp = getFormFields(request, response, false); + result.put("conditions", tmp.get("conditions")); + result.put("tables", tmp.get("tables")); + result.put("id", id); + } +// if (HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user)) { +// buttons.put("hasEdit", true); +// buttons.put("hasSave", true); +// } + + } catch (Exception e) { + writeLog(e); + } + + + Map retmap = new HashMap(); + retmap.put("result", result); + return JSONObject.toJSONString(retmap); + } + + /** + * 人员个人信息表单字段 + * + * @param request + * @param response + * @return + */ + public Map getFormFields(HttpServletRequest request, HttpServletResponse response, boolean isAdd) { + User user = HrmUserVarify.getUser(request, response); + Map result = new HashMap(); + List lsGroup = new ArrayList(); + Map groupitem = null; + List itemlist = null; + try { + String id = Util.null2String(request.getParameter("id")); + int viewAttr = Util.getIntValue(request.getParameter("viewAttr"), 1); + if (isAdd) viewAttr = 2; + + if (id.length() == 0 && !isAdd ) { + id = "" + user.getUID(); + } + + HrmListValidate HrmListValidate = new HrmListValidate(); + int scopeId = 3; + HrmFieldGroupComInfo HrmFieldGroupComInfo = new HrmFieldGroupComInfo(); + HrmFieldSearchConditionComInfo hrmFieldSearchConditionComInfo = new HrmFieldSearchConditionComInfo(); + HrmFieldManager hfm = new HrmFieldManager("HrmCustomFieldByInfoType", scopeId); + CustomFieldManager cfm = new CustomFieldManager("HrmCustomFieldByInfoType", scopeId); + hfm.getHrmData(Util.getIntValue(id)); + cfm.getCustomData(Util.getIntValue(id)); + String workstartdate = Util.null2String(hfm.getHrmData("workstartdate"));//参加工作日期 + String companystartdate = Util.null2String(hfm.getHrmData("companystartdate"));//入职日期 + + while (HrmFieldGroupComInfo.next()) { + int grouptype = Util.getIntValue(HrmFieldGroupComInfo.getType()); + if (grouptype != scopeId) continue; + int grouplabel = Util.getIntValue(HrmFieldGroupComInfo.getLabel()); + int groupid = Util.getIntValue(HrmFieldGroupComInfo.getid()); + hfm.getCustomFields(groupid); + + groupitem = new HashMap(); + itemlist = new ArrayList(); + groupitem.put("title", SystemEnv.getHtmlLabelName(grouplabel, user.getLanguage())); + groupitem.put("defaultshow", true); + if (groupid == 5) { + HrmListValidate hrmListValidate = new HrmListValidate(); + groupitem.put("hide", !hrmListValidate.isValidate(47)); + } else { + groupitem.put("hide", !Util.null2String(HrmFieldGroupComInfo.getIsShow()).equals("1")); + } + groupitem.put("items", itemlist); + lsGroup.add(groupitem); + while (hfm.next()) { + int tmpviewattr = viewAttr; + String fieldName = hfm.getFieldname(); + String cusFieldname = ""; + String fieldValue = ""; + if (hfm.isBaseField(fieldName)) { + fieldValue = hfm.getHrmData(fieldName); + if (isAdd){ + fieldValue = ""; + } + } else { + fieldValue = Util.null2String(new EncryptUtil().decrypt("cus_fielddata","field" + hfm.getFieldid(),"HrmCustomFieldByInfoType",""+scopeId,cfm.getData("field" + hfm.getFieldid()),viewAttr==2,true)); + if (isAdd){ + fieldValue = ""; + } + cusFieldname = "customfield" + hfm.getFieldid(); + if (isAdd) cusFieldname = "customfield_3_" + hfm.getFieldid(); + } + +// if (fieldName.equals("workyear")) {//工龄司龄改为程序计算 +// if (workstartdate.length() > 0) { +// fieldValue = df.format(DateUtil.dayDiff(workstartdate, today) / 365.0); +// } else { +// fieldValue = ""; +// } +// } +// if (fieldName.equals("companyworkyear")) {//工龄司龄改为程序计算 +// if (companystartdate.length() > 0) { +// fieldValue = df.format(DateUtil.dayDiff(companystartdate, today) / 365.0); +// } else { +// fieldValue = ""; +// } +// } + if (!hfm.isUse() || (viewAttr != 1 && (fieldName.equals("workyear") || fieldName.equals("companyworkyear")))) { + HrmFieldBean hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldname(cusFieldname.length() > 0 ? cusFieldname : fieldName); + hrmFieldBean.setFieldhtmltype("1"); + hrmFieldBean.setType("1"); + hrmFieldBean.setFieldvalue(fieldValue); + hrmFieldBean.setIsFormField(true); + SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user); + Map otherParams = new HashMap(); + otherParams.put("hide", true); + searchConditionItem.setOtherParams(otherParams); + itemlist.add(searchConditionItem); + continue; + } + org.json.JSONObject hrmFieldConf = hfm.getHrmFieldConf(fieldName); + HrmFieldBean hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldid((String) hrmFieldConf.get("id")); + hrmFieldBean.setFieldname(cusFieldname.length() > 0 ? cusFieldname : fieldName); + hrmFieldBean.setFieldlabel(hfm.getLable()); + hrmFieldBean.setFieldhtmltype((String) hrmFieldConf.get("fieldhtmltype")); + hrmFieldBean.setType((String) hrmFieldConf.get("type")); + hrmFieldBean.setDmlurl((String) hrmFieldConf.get("dmlurl")); + hrmFieldBean.setIssystem("" + (Integer) hrmFieldConf.get("issystem")); + hrmFieldBean.setFieldvalue(fieldValue); + hrmFieldBean.setIsFormField(true); + if (viewAttr == 2 && ((String) hrmFieldConf.get("ismand")).equals("1")) { + tmpviewattr = 3; + if (hrmFieldBean.getFieldhtmltype().equals("3")) { + hrmFieldBean.setRules("required|string"); +// if (hrmFieldBean.getType().equals("2")||hrmFieldBean.getType().equals("161")||hrmFieldBean.getType().equals("162")) { +// hrmFieldBean.setRules("required|string"); +// } else { +// hrmFieldBean.setRules("required|integer"); +// } + } else if (hrmFieldBean.getFieldhtmltype().equals("4") || + hrmFieldBean.getFieldhtmltype().equals("5")) { + hrmFieldBean.setRules("required|integer"); + } else if (hrmFieldBean.getFieldhtmltype().equals("1") && hrmFieldBean.getType().equals("2")) { + hrmFieldBean.setRules("required|integer"); + } else { + hrmFieldBean.setRules("required|string"); + } + } + SearchConditionItem searchConditionItem = hrmFieldSearchConditionComInfo.getSearchConditionItem(hrmFieldBean, user); + if (searchConditionItem == null) continue; + if (searchConditionItem.getBrowserConditionParam() != null) { + searchConditionItem.getBrowserConditionParam().setViewAttr(tmpviewattr); + } + searchConditionItem.setViewAttr(tmpviewattr); + itemlist.add(searchConditionItem); + } + if (itemlist.size() == 0) lsGroup.remove(groupitem); + } + result.put("conditions", lsGroup); + + //明细信息 + List lsTable = new ArrayList(); + List titles = null; + Map table = null; + Map maptab = null; + HrmFieldBean hrmFieldBean = null; + List> columns = null; + List> datas = null; + Map data = null; + result.put("tables", lsTable); + + HrmFieldDetailComInfo HrmFieldDetailComInfo = new HrmFieldDetailComInfo(); + HrmFieldManager hrmFieldManager = new HrmFieldManager(); + LinkedHashMap> detialTable = HrmFieldDetailComInfo.getDetialTable("" + scopeId, viewAttr, "20%"); + Iterator>> entries = detialTable.entrySet().iterator(); + int idx = 49; + while (entries.hasNext()) { + Map.Entry> entry = entries.next(); + String tablename = entry.getKey(); + idx++; + if (viewAttr == 2 && tablename.equals("HrmContract".toUpperCase())) continue; + if (viewAttr == 2 && tablename.equals("HrmStatusHistory".toUpperCase())) continue; + + if (isAdd && (tablename.equals("HrmContract".toUpperCase()) || tablename.equals("HrmStatusHistory".toUpperCase()))) { + continue; + } + titles = entry.getValue(); + table = new HashMap(); + columns = HrmFieldUtil.getHrmDetailTable(titles, null, user); + table.put("columns", columns); + if (tablename.equals("HrmContract".toUpperCase()) || tablename.equals("HrmStatusHistory".toUpperCase())) { + table.put("editDisable", true); + datas = new ArrayList>(); + RecordSet rs = new RecordSet(); + String sql = ""; + if (tablename.equals("HrmContract".toUpperCase())) { + sql += " select * from " + tablename + " where ContractMan = " + id + " order by id "; + } else { + sql += " select * from " + tablename + " where resourceid = " + id + " order by changedate "; + } + rs.executeSql(sql); + while (rs.next()) { + data = new HashMap(); + for (HrmFieldBean fieldInfo : titles) { + //必要的字段转换 + String fieldname = getFieldName(tablename.toLowerCase(), fieldInfo.getFieldname()); + String fieldvalue = ""; + if (fieldname.equals("olddepid")) { + int type = Util.getIntValue(rs.getString("type_n")); + String olddepid = "oldjobtitleid"; + if (type == 4) { + olddepid = "newjobtitleid"; + } + fieldvalue = new JobTitlesComInfo().getJobTitlesname(rs.getString(olddepid)); + } else { + fieldvalue = rs.getString(fieldname); + } + + if (fieldname.equals("contracttypeid")) { + fieldvalue = new ContractTypeComInfo().getContractTypename(fieldvalue); + } else if (fieldname.equals("operator")) { + fieldvalue = new ResourceComInfo().getLastname("" + Util.getIntValue(rs.getString("operator"), 0)); + } else if (fieldname.equals("type_n")) { + fieldvalue = getHrmHistoryStatus(rs.getInt("type_n"), user); + } + data.put(fieldInfo.getFieldname(), fieldvalue); + } + datas.add(data); + } + } else { + datas = new ArrayList>(); + RecordSet rs = new RecordSet(); + String sql = "select * from " + tablename + " where resourceid = " + id + " order by id"; + rs.executeSql(sql); + while (rs.next()) { + data = new HashMap(); + for (HrmFieldBean fieldInfo : titles) { + //必要的字段转换 + String fieldname = getFieldName(tablename.toLowerCase(), fieldInfo.getFieldname()); + String fieldvalue = ""; + if(!isAdd){ + fieldvalue = rs.getString(fieldname); + } + + if (fieldInfo.getFieldhtmltype().equals("1") && fieldInfo.getType().equals("1")) { + data.put(fieldInfo.getFieldname(), TextUtil.toBase64ForMultilang(fieldvalue)); + } else if (FieldFactory.getFieldhtmltype(fieldInfo.getFieldhtmltype(), fieldInfo.getType()) == FieldType.BROWSER) { + String fieldid = Util.null2String(fieldInfo.getFieldid());//字段id + String fieldhtmltype = Util.null2String(fieldInfo.getFieldhtmltype());//字段类型 + String type = Util.null2String(fieldInfo.getType());//字段二级类型(浏览框--单人力) + String dmlurl = Util.null2String(fieldInfo.getDmlurl()); + String fieldshowname = hrmFieldManager.getFieldvalue(user, dmlurl, Util.getIntValue(fieldid), Util.getIntValue(fieldhtmltype), Util.getIntValue(type), fieldvalue, 0); + data.put(fieldInfo.getFieldname(), fieldvalue); + data.put(fieldInfo.getFieldname() + "span", fieldshowname); + } else { + data.put(fieldInfo.getFieldname(), fieldvalue); + } + } + datas.add(data); + } + } + + table.put("datas", datas); + table.put("rownum", tablename.toLowerCase() + "num"); + maptab = new Hashtable(); + String tablabel = HrmResourceDetailTab.HrmResourceDetailTabInfo.get(tablename.toUpperCase()); + maptab.put("tabname", SystemEnv.getHtmlLabelNames(tablabel, user.getLanguage())); + maptab.put("hide", !HrmListValidate.isValidate(idx)); + maptab.put("tabinfo", table); + lsTable.add(maptab); + } + + //自定义信息 + RecordSet RecordSet = new RecordSet(); + CustomFieldTreeManager CustomFieldTreeManager = new CustomFieldTreeManager(); + LinkedHashMap ht = new LinkedHashMap(); + RecordSet.executeSql("select id, formlabel,viewtype from cus_treeform where parentid=" + scopeId + " order by scopeorder"); + while (RecordSet.next()) { + titles = new ArrayList(); + int subId = RecordSet.getInt("id"); + CustomFieldManager cfm2 = new CustomFieldManager("HrmCustomFieldByInfoType", subId); + cfm2.getCustomFields(); + CustomFieldTreeManager.getMutiCustomData("HrmCustomFieldByInfoType", subId, Util.getIntValue(id, 0)); + int colcount1 = cfm2.getSize(); + int rowcount = 0; + while (cfm2.next()) { + if (!cfm2.isUse()) continue; + rowcount++; + } + if (rowcount == 0) continue; + cfm2.beforeFirst(); + if (colcount1 != 0) { + ht.put("cus_list_" + subId, RecordSet.getString("formlabel")); + int col = 0; + while (cfm2.next()) { + if (!cfm2.isUse()) continue; + col++; + } + cfm2.beforeFirst(); + while (cfm2.next()) { + if (!cfm2.isUse()) continue; + int tmpviewattr = viewAttr; + //创建表头 + String fieldname = "customfield" + cfm2.getId() + "_" + subId; + if (isAdd) fieldname = "customfield_3_" + cfm2.getId() + "_" + subId; + hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldid("" + cfm2.getId()); + hrmFieldBean.setFieldname(fieldname); + hrmFieldBean.setFieldlabel(cfm2.getLable()); + hrmFieldBean.setFieldhtmltype(cfm2.getHtmlType()); + hrmFieldBean.setType("" + cfm2.getType()); + hrmFieldBean.setDmlurl(cfm2.getDmrUrl()); + if (viewAttr == 2 && cfm2.isMand()) { + tmpviewattr = 3; + hrmFieldBean.setRules("required|string"); + } + hrmFieldBean.setViewAttr(tmpviewattr); + + hrmFieldBean.setWidth("80%"); + titles.add(hrmFieldBean); + } + table = new HashMap(); + columns = HrmFieldUtil.getHrmDetailTable(titles, null, user); + table.put("columns", columns); + + datas = new ArrayList>(); + cfm2.beforeFirst(); + while (CustomFieldTreeManager.nextMutiData()) { + data = new HashMap(); + while (cfm2.next()) { + if (!cfm2.isUse()) continue; + int fieldid = cfm2.getId(); //字段id + int type = cfm2.getType(); + String dmlurl = cfm2.getDmrUrl(); + int fieldhtmltype = Util.getIntValue(cfm2.getHtmlType()); + + String fieldname = "customfield" + cfm2.getId() + "_" + subId; + if (isAdd) fieldname = "customfield_3_" + cfm2.getId() + "_" + subId; + String fieldvalue = ""; + if(!isAdd){ + fieldvalue = Util.null2String(CustomFieldTreeManager.getMutiData("field" + fieldid)); + } + data.put(fieldname, fieldvalue); + if (cfm2.getHtmlType().equals("1") && cfm2.getType() == 1) { + data.put(fieldname, TextUtil.toBase64ForMultilang(Util.null2String(fieldvalue))); + } else if (cfm2.getHtmlType().equals("3")) { + String fieldshowname = hfm.getFieldvalue(user, dmlurl, fieldid, fieldhtmltype, type, fieldvalue, 0); + data.put(fieldname, fieldvalue); + data.put(fieldname + "span", fieldshowname); + } else if (cfm2.getHtmlType().equals("4")) { + data.put(fieldname, fieldvalue.equals("1")); + } else if(cfm2.getHtmlType().equals("6")){ + List filedatas = new ArrayList(); + if(Util.null2String(fieldvalue).length()>0) { + Map filedata = null; + String[] tmpIds = Util.splitString(Util.null2String(fieldvalue), ","); + for (int i = 0; i < tmpIds.length; i++) { + String fileid = tmpIds[i]; + ImageFileManager manager = new ImageFileManager(); + manager.getImageFileInfoById(Util.getIntValue(fileid)); + String filename = manager.getImageFileName(); + String extname = filename.contains(".") ? filename.substring(filename.lastIndexOf(".") + 1) : ""; + filedata = new HashMap(); + filedata.put("acclink", "/weaver/weaver.file.FileDownload?fileid=" + fileid); + filedata.put("fileExtendName", extname); + filedata.put("fileid", fileid); + filedata.put("filelink", "/spa/document/index2file.jsp?imagefileId=" + fileid + "#/main/document/fileView"); + filedata.put("filename", filename); + filedata.put("filesize", manager.getImgsize()); + filedata.put("imgSrc", ""); + filedata.put("isImg", ""); + filedata.put("loadlink", "/weaver/weaver.file.FileDownload?fileid=" + fileid + "&download=1"); + filedata.put("showDelete", viewAttr==2); + filedata.put("showLoad", "true"); + filedatas.add(filedata); + } + } + data.put(fieldname, filedatas); + } + } + cfm2.beforeFirst(); + datas.add(data); + } + table.put("datas", datas); + table.put("rownum", "nodesnum_" + subId); + maptab = new Hashtable(); + RecordSet rs = new RecordSet(); + String formlabel = ""; + rs.executeSql("select id, formlabel from cus_treeform where parentid=" + scopeId + " and id=" + subId + " order by scopeorder"); + if (rs.next()) { + formlabel = rs.getString("formlabel"); + } + maptab.put("hide", RecordSet.getInt("viewtype") != 1); + maptab.put("tabname", formlabel); + maptab.put("tabinfo", table); + lsTable.add(maptab); + } + } + } catch (Exception e) { + writeLog(e); + } + return result; + } + + /*** + * 新建人员工作信息 + * @param request + * @param response + * @return + */ + public Map addResourceWork(String id, HttpServletRequest request, HttpServletResponse response) { + Map retmap = new HashMap(); + try { + User user = HrmUserVarify.getUser(request, response); + RecordSet rs = new RecordSet(); + ResourceComInfo ResourceComInfo = new ResourceComInfo(); + CustomFieldTreeManager CustomFieldTreeManager = new CustomFieldTreeManager(); + + SimpleBizLogger logger = new SimpleBizLogger(); + Map params = ParamUtil.request2Map(request); + BizLogContext bizLogContext = new BizLogContext(); + bizLogContext.setLogType(BizLogType.HRM);//模块类型 + bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD);//所属大类型 + bizLogContext.setBelongTypeTargetName(SystemEnv.getHtmlLabelName(15688, user.getLanguage())); + bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD_WORK);//当前小类型 + bizLogContext.setOperateType(BizLogOperateType.ADD); + bizLogContext.setParams(params);//当前request请求参数 + logger.setUser(user);//当前操作人 + String cusFieldNames = ServiceUtil.getCusFieldNames("HrmCustomFieldByInfoType", 3, "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=3 where a.id=" + id; + logger.setMainSql(mainSql, "id");//主表sql + logger.setMainPrimarykey("id");//主日志表唯一key + logger.setMainTargetNameColumn("lastname");//当前targetName对应的列(对应日志中的对象名) + logger.before(bizLogContext);//写入操作前日志 + + String para = ""; + FileUpload fu = new FileUpload(request); + //String id = Util.null2String(fu.getParameter("id")); + String usekind = Util.fromScreen3(fu.getParameter("usekind"), user.getLanguage()); + String startdate = Util.fromScreen3(fu.getParameter("startdate"), user.getLanguage()); + String probationenddate = Util.fromScreen3(fu.getParameter("probationenddate"), user.getLanguage()); + String enddate = Util.fromScreen3(fu.getParameter("enddate"), user.getLanguage()); + + para = "" + id + separator + usekind + separator + startdate + separator + probationenddate + separator + enddate; + rs.executeProc("HrmResourceWorkInfo_Insert", para); + //更新参加工作日期、入职日期、工龄、司龄 + updateWorkInfo(request, id, user); + int userid = user.getUID(); + String userpara = "" + userid + separator + today; + rs.executeProc("HrmResource_ModInfo", "" + id + separator + userpara); + + para = "" + id + separator + "0"; + int edurownum = Util.getIntValue(fu.getParameter("hrmeducationinfonum"), 0); + for (int i = 0; i < edurownum; i++) { + String school = Util.fromScreen3(fu.getParameter("school_" + i), user.getLanguage()); + String speciality = Util.fromScreen3(fu.getParameter("speciality_" + i), user.getLanguage()); + String edustartdate = Util.fromScreen3(fu.getParameter("edustartdate_" + i), user.getLanguage()); + String eduenddate = Util.fromScreen3(fu.getParameter("eduenddate_" + i), user.getLanguage()); + String educationlevel = Util.fromScreen3(fu.getParameter("educationlevel_" + i), user.getLanguage()); + String studydesc = Util.fromScreen3(fu.getParameter("studydesc_" + i), user.getLanguage()); + + String info = school + speciality + edustartdate + eduenddate + educationlevel + studydesc; + if (!info.trim().equals("")) { + para = "" + id + separator + edustartdate + separator + eduenddate + separator + school + separator + speciality + + separator + educationlevel + separator + studydesc; + rs.executeProc("HrmEducationInfo_Insert", para); + } + } + + int lanrownum = Util.getIntValue(fu.getParameter("hrmlanguageabilitynum"), 0); + for (int i = 0; i < lanrownum; i++) { + String language = Util.fromScreen3(fu.getParameter("language_" + i), user.getLanguage()); + String level = Util.fromScreen3(fu.getParameter("level_n_" + i), user.getLanguage()); + String memo = Util.fromScreen3(fu.getParameter("memo_" + i), user.getLanguage()); + String info = language + memo; + if (!info.trim().equals("")) { + para = "" + id + separator + language + separator + level + separator + memo; + rs.executeProc("HrmLanguageAbility_Insert", para); + } + } + + int workrownum = Util.getIntValue(fu.getParameter("hrmworkresumenum"), 0); + for (int i = 0; i < workrownum; i++) { + String company = Util.fromScreen3(fu.getParameter("company_" + i), user.getLanguage()); + String workstartdate = Util.fromScreen3(fu.getParameter("workstartdate_" + i), user.getLanguage()); + String workenddate = Util.fromScreen3(fu.getParameter("workenddate_" + i), user.getLanguage()); + String jobtitle = Util.fromScreen3(fu.getParameter("jobtitle_" + i), user.getLanguage()); + String workdesc = Util.fromScreen3(fu.getParameter("workdesc_" + i), user.getLanguage()); + String leavereason = Util.fromScreen3(fu.getParameter("leavereason_" + i), user.getLanguage()); + + String info = company + workstartdate + workenddate + jobtitle + workdesc + leavereason; + if (!info.trim().equals("")) { + para = "" + id + separator + workstartdate + separator + workenddate + separator + company + separator + jobtitle + + separator + workdesc + separator + leavereason; + rs.executeProc("HrmWorkResume_Insert", para); + } + } + + int trainrownum = Util.getIntValue(fu.getParameter("hrmtrainbeforeworknum"), 0); + for (int i = 0; i < trainrownum; i++) { + String trainname = Util.fromScreen3(fu.getParameter("trainname_" + i), user.getLanguage()); + String trainstartdate = Util.fromScreen3(fu.getParameter("trainstartdate_" + i), user.getLanguage()); + String trainenddate = Util.fromScreen3(fu.getParameter("trainenddate_" + i), user.getLanguage()); + String trainresource = Util.fromScreen3(fu.getParameter("trainresource_" + i), user.getLanguage()); + String trainmemo = Util.fromScreen3(fu.getParameter("trainmemo_" + i), user.getLanguage()); + + String info = trainname + trainstartdate + trainenddate + trainresource + trainmemo; + if (!info.trim().equals("")) { + para = "" + id + separator + trainname + separator + trainresource + separator + trainstartdate + separator + trainenddate + + separator + trainmemo; + + rs.executeProc("HrmTrainBeforeWork_Insert", para); + } + } + + int rewardrownum = Util.getIntValue(fu.getParameter("hrmrewardbeforeworknum"), 0); + for (int i = 0; i < rewardrownum; i++) { + String rewardname = Util.fromScreen3(fu.getParameter("rewardname_" + i), user.getLanguage()); + String rewarddate = Util.fromScreen3(fu.getParameter("rewarddate_" + i), user.getLanguage()); + String rewardmemo = Util.fromScreen3(fu.getParameter("rewardmemo_" + i), user.getLanguage()); + String info = rewardname + rewarddate + rewardmemo; + if (!info.trim().equals("")) { + para = "" + id + separator + rewardname + separator + rewarddate + separator + rewardmemo; + + rs.executeProc("HrmRewardBeforeWork_Insert", para); + } + } + + int cerrownum = Util.getIntValue(fu.getParameter("hrmcertificationnum"), 0); + for (int i = 0; i < cerrownum; i++) { + String cername = Util.fromScreen3(fu.getParameter("cername_" + i), user.getLanguage()); + String cerstartdate = Util.fromScreen3(fu.getParameter("cerstartdate_" + i), user.getLanguage()); + String cerenddate = Util.fromScreen3(fu.getParameter("cerenddate_" + i), user.getLanguage()); + String cerresource = Util.fromScreen3(fu.getParameter("cerresource_" + i), user.getLanguage()); + + String info = cername + cerstartdate + cerenddate + cerresource; + if (!info.trim().equals("")) { + para = "" + id + separator + cerstartdate + separator + cerenddate + separator + cername + separator + cerresource; + + rs.executeProc("HrmCertification_Insert", para); + } + } + + // 工作信息不需要清理缓存 ResourceComInfo.removeResourceCache(); + //处理自定义字段 add by wjy + CustomFieldTreeManager.editCustomDataE9Add("HrmCustomFieldByInfoType", 3, fu, Util.getIntValue(id, 0)); + CustomFieldTreeManager.editMutiCustomDataeE9Add("HrmCustomFieldByInfoType", 3, fu, Util.getIntValue(id, 0)); + + 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()); + + retmap.put("status", "1"); + } catch (Exception e) { + writeLog("新建人员工作信息错误:" + e); + } + return retmap; + } + + + /** + * 编辑人员工作信息 + * + * @param request + * @param response + * @return + */ + public Map editResourceWork(HttpServletRequest request, HttpServletResponse response) { + Map retmap = new HashMap(); + try { + User user = HrmUserVarify.getUser(request, response); + if (!HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user)) { + retmap.put("status", "-1"); + retmap.put("message", ""+ SystemEnv.getHtmlLabelName(22620,weaver.general.ThreadVarLanguage.getLang())+""); + return retmap; + } + RecordSet rs = new RecordSet(); + ResourceComInfo ResourceComInfo = new ResourceComInfo(); + CustomFieldTreeManager CustomFieldTreeManager = new CustomFieldTreeManager(); + + String para = ""; + FileUpload fu = new FileUpload(request); + String id = Util.null2String(fu.getParameter("id")); + String usekind = Util.fromScreen3(fu.getParameter("usekind"), user.getLanguage()); + String startdate = Util.fromScreen3(fu.getParameter("startdate"), user.getLanguage()); + String probationenddate = Util.fromScreen3(fu.getParameter("probationenddate"), user.getLanguage()); + String enddate = Util.fromScreen3(fu.getParameter("enddate"), user.getLanguage()); + + SimpleBizLogger logger = new SimpleBizLogger(); + Map params = ParamUtil.request2Map(request); + BizLogContext bizLogContext = new BizLogContext(); + bizLogContext.setLogType(BizLogType.HRM);//模块类型 + bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD);//所属大类型 + bizLogContext.setBelongTypeTargetName(SystemEnv.getHtmlLabelName(15688, user.getLanguage())); + bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD_WORK);//当前小类型 + bizLogContext.setParams(params);//当前request请求参数 + logger.setUser(user);//当前操作人 + String cusFieldNames = ServiceUtil.getCusFieldNames("HrmCustomFieldByInfoType", 3, "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=3 where a.id=" + id; + logger.setMainSql(mainSql, "id");//主表sql + logger.setMainPrimarykey("id");//主日志表唯一key + logger.setMainTargetNameColumn("lastname");//当前targetName对应的列(对应日志中的对象名) + logger.before(bizLogContext);//写入操作前日志 + + para = "" + id + separator + usekind + separator + startdate + separator + probationenddate + separator + enddate; + rs.executeProc("HrmResourceWorkInfo_Insert", para); + //更新参加工作日期、入职日期、工龄、司龄 + updateWorkInfo(request, id, user); + + int userid = user.getUID(); + String userpara = "" + userid + separator + today; + rs.executeProc("HrmResource_ModInfo", "" + id + separator + userpara); + + String contractid = ""; + String sqltype = "select * from hrmcontract where exists (select * from HrmContractType where hrmcontract.contracttypeid=HrmContractType.id and HrmContractType.ishirecontract=1) and contractman=" + id + " order by contractenddate desc,contractstartdate desc"; + rs.executeSql(sqltype); + if (rs.next()) { + contractid = rs.getString("id"); + //根据qc212896 人事卡片合同日期修改的时候 同步更新合同类型为入职合同中 最新的一个合同的日期 + sqltype = "update HrmContract set contractstartdate = '" + startdate + "',contractenddate = '" + enddate + "',proenddate = '" + probationenddate + "' where id = " + contractid; + rs.execute(sqltype); + } + + String sql = "delete from HrmLanguageAbility where resourceid = " + id; + rs.executeSql(sql); + int lanrownum = Util.getIntValue(fu.getParameter("hrmlanguageabilitynum"), 0); + for (int i = 0; i < lanrownum; i++) { + String language = Util.fromScreen3(fu.getParameter("language_" + i), user.getLanguage()); + String level = Util.fromScreen3(fu.getParameter("level_n_" + i), user.getLanguage()); + String memo = Util.fromScreen3(fu.getParameter("memo_" + i), user.getLanguage()); + String info = language + memo; + if (!info.trim().equals("")) { + para = "" + id + separator + language + separator + level + separator + memo; + rs.executeProc("HrmLanguageAbility_Insert", para); + } + } + + sql = "delete from HrmEducationInfo where resourceid = " + id; + rs.executeSql(sql); + int edurownum = Util.getIntValue(fu.getParameter("hrmeducationinfonum"), 0); + for (int i = 0; i < edurownum; i++) { + String school = Util.fromScreen3(fu.getParameter("school_" + i), user.getLanguage()); + String speciality = Util.fromScreen3(fu.getParameter("speciality_" + i), user.getLanguage()); + String edustartdate = Util.fromScreen3(fu.getParameter("edustartdate_" + i), user.getLanguage()); + String eduenddate = Util.fromScreen3(fu.getParameter("eduenddate_" + i), user.getLanguage()); + String educationlevel = Util.fromScreen3(fu.getParameter("educationlevel_" + i), user.getLanguage()); + String studydesc = Util.fromScreen3(fu.getParameter("studydesc_" + i), user.getLanguage()); + String info = school + speciality + edustartdate + eduenddate + studydesc; + if (!info.trim().equals("")) { + para = "" + id + separator + edustartdate + separator + eduenddate + separator + school + separator + speciality + + separator + educationlevel + separator + studydesc; + rs.executeProc("HrmEducationInfo_Insert", para); + } + } + + int workrownum = Util.getIntValue(fu.getParameter("hrmworkresumenum")); + sql = "delete from HrmWorkResume where resourceid = " + id; + rs.executeSql(sql); + for (int i = 0; i < workrownum; i++) { + String company = Util.fromScreen3(fu.getParameter("company_" + i), user.getLanguage()); + String workstartdate = Util.fromScreen3(fu.getParameter("workstartdate_" + i), user.getLanguage()); + String workenddate = Util.fromScreen3(fu.getParameter("workenddate_" + i), user.getLanguage()); + String jobtitle = Util.fromScreen3(fu.getParameter("jobtitle_" + i), user.getLanguage()); + String workdesc = Util.fromScreen3(fu.getParameter("workdesc_" + i), user.getLanguage()); + String leavereason = Util.fromScreen3(fu.getParameter("leavereason_" + i), user.getLanguage()); + String info = company + workstartdate + workenddate + jobtitle + workdesc + leavereason; + if (!info.trim().equals("")) { + para = "" + id + separator + workstartdate + separator + workenddate + separator + company + separator + jobtitle + + separator + workdesc + separator + leavereason; + rs.executeProc("HrmWorkResume_Insert", para); + } + } + + int trainrownum = Util.getIntValue(fu.getParameter("hrmtrainbeforeworknum"), 0); + sql = "delete from HrmTrainBeforeWork where resourceid = " + id; + rs.executeSql(sql); + for (int i = 0; i < trainrownum; i++) { + String trainname = Util.fromScreen3(fu.getParameter("trainname_" + i), user.getLanguage()); + String trainstartdate = Util.fromScreen3(fu.getParameter("trainstartdate_" + i), user.getLanguage()); + String trainenddate = Util.fromScreen3(fu.getParameter("trainenddate_" + i), user.getLanguage()); + String trainresource = Util.fromScreen3(fu.getParameter("trainresource_" + i), user.getLanguage()); + String trainmemo = Util.fromScreen3(fu.getParameter("trainmemo_" + i), user.getLanguage()); + String info = trainname + trainstartdate + trainenddate + trainresource + trainmemo; + if (!info.trim().equals("")) { + para = "" + id + separator + trainname + separator + trainresource + separator + trainstartdate + separator + trainenddate + + separator + trainmemo; + rs.executeProc("HrmTrainBeforeWork_Insert", para); + } + } + + int cerrownum = Util.getIntValue(fu.getParameter("hrmcertificationnum"), 0); + sql = "delete from HrmCertification where resourceid = " + id; + rs.executeSql(sql); + for (int i = 0; i < cerrownum; i++) { + String cername = Util.fromScreen3(fu.getParameter("cername_" + i), user.getLanguage()); + String cerstartdate = Util.fromScreen3(fu.getParameter("cerstartdate_" + i), user.getLanguage()); + String cerenddate = Util.fromScreen3(fu.getParameter("cerenddate_" + i), user.getLanguage()); + String cerresource = Util.fromScreen3(fu.getParameter("cerresource_" + i), user.getLanguage()); + + String info = cername + cerstartdate + cerenddate + cerresource; + if (!info.trim().equals("")) { + para = "" + id + separator + cerstartdate + separator + cerenddate + separator + cername + separator + cerresource; + rs.executeProc("HrmCertification_Insert", para); + } + } + + int rewardrownum = Util.getIntValue(fu.getParameter("hrmrewardbeforeworknum"), 0); + sql = "delete from HrmRewardBeforeWork where resourceid = " + id; + rs.executeSql(sql); + for (int i = 0; i < rewardrownum; i++) { + String rewardname = Util.fromScreen3(fu.getParameter("rewardname_" + i), user.getLanguage()); + String rewarddate = Util.fromScreen3(fu.getParameter("rewarddate_" + i), user.getLanguage()); + String rewardmemo = Util.fromScreen3(fu.getParameter("rewardmemo_" + i), user.getLanguage()); + String info = rewardname + rewarddate + rewardmemo; + if (!info.trim().equals("")) { + para = "" + id + separator + rewardname + separator + rewarddate + separator + rewardmemo; + rs.executeProc("HrmRewardBeforeWork_Insert", para); + } + } + + /*工作信息中有参加工作日期以及入职日期,所以需要刷新人员缓存*/ + ResourceComInfo.updateResourceInfoCache(id); + //处理自定义字段 add by wjy + CustomFieldTreeManager.editCustomData("HrmCustomFieldByInfoType", 3, fu, Util.getIntValue(id, 0)); + + CustomFieldTreeManager.setIsE9(true); + CustomFieldTreeManager.editMutiCustomData("HrmCustomFieldByInfoType", 3, fu, Util.getIntValue(id, 0)); + + 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_HrmResourceWorkService_editResourceWork", HrmFaceCheckManager.getOaResource()); + + + retmap.put("status", "1"); + } catch (Exception e) { + writeLog("编辑人员工作信息错误:" + e); + retmap.put("status", "-1"); + } + return retmap; + } + + public String getFieldName(String tablename, String fieldname) { + if (tablename.equals("hrmeducationinfo")) { + if (fieldname.equals("edustartdate")) { + fieldname = "startdate"; + } else if (fieldname.equals("eduenddate")) { + fieldname = "enddate"; + } + } else if (tablename.equals("hrmworkresume")) { + if (fieldname.equals("workstartdate")) { + fieldname = "startdate"; + } else if (fieldname.equals("workenddate")) { + fieldname = "enddate"; + } + } else if (tablename.equals("hrmcertification")) { + if (fieldname.equals("cername")) { + fieldname = "certname"; + } else if (fieldname.equals("cerstartdate")) { + fieldname = "datefrom"; + } else if (fieldname.equals("cerenddate")) { + fieldname = "dateto"; + } else if (fieldname.equals("cerresource")) { + fieldname = "awardfrom"; + } + } + return fieldname; + } + + public String getHrmHistoryStatus(int type, User user) { + String result = ""; + if (type == 1) { + result = SystemEnv.getHtmlLabelName(6094, user.getLanguage()); + } else if (type == 2) { + result = SystemEnv.getHtmlLabelName(6088, user.getLanguage()); + } else if (type == 3) { + result = SystemEnv.getHtmlLabelName(6089, user.getLanguage()); + } else if (type == 4) { + result = SystemEnv.getHtmlLabelName(6090, user.getLanguage()); + } else if (type == 5) { + result = SystemEnv.getHtmlLabelName(6091, user.getLanguage()); + } else if (type == 6) { + result = SystemEnv.getHtmlLabelName(6092, user.getLanguage()); + } else if (type == 7) { + result = SystemEnv.getHtmlLabelName(6093, user.getLanguage()); + } else if (type == 8) { + result = SystemEnv.getHtmlLabelName(15710, user.getLanguage()); + } else if (type == 9) { + result = SystemEnv.getHtmlLabelName(32009, user.getLanguage()); + } + return result; + } + + public void updateWorkInfo(HttpServletRequest request, String id, User user) { + try { + RecordSet rs = new RecordSet(); + String sql = ""; + String companystartdate = Util.fromScreen3(request.getParameter("companystartdate"), user.getLanguage()); + String workstartdate = Util.fromScreen3(request.getParameter("workstartdate"), user.getLanguage()); + + List 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) { + writeLog(e); + } + } + + + /** + * 判断人员是否能查看对应卡片信息 + * @param currentUserId + * @param userid + * @return + */ + public boolean checkRyShow(Integer currentUserId,String userid){ + boolean back = true; + try { + BaseBean bb = new BaseBean(); + ResourceComInfo resourceComInfo = new ResourceComInfo(); + + String userManagerId = ""; + String userDeptId = ""; + if(StringUtils.isNotBlank(userid)){ + userManagerId = resourceComInfo.getManagerID(userid); + userDeptId = resourceComInfo.getDepartmentID(userid); + } + String allDeptLeaders = getDepartmentLeader(userDeptId); + bb.writeLog("userManagerId:"+userManagerId); + bb.writeLog("userDeptId:"+userDeptId); + bb.writeLog("allDeptLeaders:"+allDeptLeaders); + +// String leader_roleid = "30"; +// List leaderList = queryHrmRoleUserByRole(leader_roleid); +// String hr_roleid = "29"; +// List hrList = queryHrmRoleUserByRole(hr_roleid); + + //判断是否是指定角色29、30 + boolean hasAccess = false; + HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + List roleIds = new ArrayList<>(Arrays.asList(hrmCommonService.getRoleIds(currentUserId).split(","))); + List accessRoleIds = new ArrayList<>(); + accessRoleIds.add("29"); + accessRoleIds.add("30"); + roleIds.retainAll(accessRoleIds); + hasAccess = CollectionUtils.isNotEmpty(roleIds); + + new BaseBean().writeLog("currentUserId"+currentUserId+"roleIds"+roleIds+"hasAccess"+hasAccess); + if(hasAccess){ + back = true; + }else if((","+allDeptLeaders+",").contains(","+currentUserId+",")){ + back = true; + }else if(String.valueOf(currentUserId).equals(userManagerId)){ + back = true; + }else if(String.valueOf(currentUserId).equals(userid)){ + //自己看自己可以看 + back = true; + }else if(currentUserId == 1){ + //系统管理员可以看所有 + back = true; + }else{ + back = false; + } + } catch (Exception e) { + e.printStackTrace(); + } + + + return back; + } + + /*** + * + * @param deptid + * @return + */ + public String getDepartmentLeader(String deptid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("getDepartmentLeader:deptid:"+deptid); + String bmfzrs = ""; + try { + String sql =" with tem_table(dep_id,departmentname,supdepid,curlevel) as (\n" + + " select id, departmentname,supdepid, 1 as level from HrmDepartment where id=" + deptid+ + " union all\n" + + " select a.id,a.departmentname,a.supdepid,b.curlevel+1 from Hrmdepartment a inner join tem_table b on (a.id = b.supdepid)\n" + + " )\n" + + " select bmfzr from hrmdepartmentdefined where deptid in (select dep_id from tem_table)"; + rs.executeQuery(sql); + while(rs.next()){ + String bmfzr = Util.null2String(rs.getString("bmfzr")); + bmfzrs += StringUtils.isBlank(bmfzrs) ? bmfzr :","+bmfzr ; + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + return bmfzrs; + } +}