You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weaver-develop/src/weaver/hrm/excelimport/HrmCompany.java

516 lines
19 KiB
Java

package weaver.hrm.excelimport;
import com.engine.common.service.impl.HrmCommonServiceImpl;
import com.engine.hrm.entity.RuleCodeType;
import com.engine.hrm.util.CodeRuleManager;
import com.engine.hrm.util.HrmTriggerUtil;
import com.engine.hrm.util.face.HrmFaceCheckManager;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.common.AjaxManager;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.matrix.MatrixUtil;
import weaver.rtx.OrganisationCom;
import weaver.systeminfo.SysMaintenanceLog;
import weaver.systeminfo.SystemEnv;
import weaver.hrm.common.DbFunctionUtil;
/**
*
* @author lvyi
*
*/
public class HrmCompany extends BaseBean {
private RecordSet recordSet=new RecordSet();
private OrganisationCom rtxService=new OrganisationCom();; //添加到rtx
private int id;
private String subcompanyname="";
private String departmentname="";
private String subcompanycode = "";
private Float subcompanyshoworder;
private String departmentcode = "";
private Float departmentshoworder;
private int userlanguage = 7;
private int pid;
private String operateType;
private String message = "";
public void setPid(int pid) {
this.pid = pid;
}
public void setUserLanguage(String userlanguage){
this.userlanguage = Util.getIntValue((String)userlanguage);
}
/**
*
* @return
*/
public String valExcelData(){
String errorInfo = "";
if(Util.null2String(this.subcompanyname).length()==0){
errorInfo = SystemEnv.getHtmlLabelName(125704,userlanguage);
return errorInfo;
}
if (StringUtils.isNotEmpty(operateType) && operateType.equals("add")) {
if (!verifySubCompanyCode(subcompanycode)) return subcompanycode + "编号重复";
if (!verifyDeptCode(departmentcode)) return departmentcode + "编号重复";
}
return errorInfo;
}
/**
*
*/
public String save(){
boolean flag = false;
try{
if(StringUtils.isNotEmpty(operateType)) {
if (operateType.equals("add")) {
int subcompanyid = 0;
int departmentid = 0;
if(Util.null2String(this.subcompanyname).length()>0){
//取分部
subcompanyid = getSubCompanyId(this.subcompanyname);
}
departmentid = getDeptId(this.departmentname,subcompanyid);
if(Util.null2String(this.departmentname).length()>0){
if(departmentid!=0)flag=true;
}else{
if(subcompanyid!=0)flag=true;
}
} else if (operateType.equals("update")) {
int subcompanyid = updateSubCompany();
if (subcompanyid == -1) return String.valueOf(flag);
int deptid = updateDept(subcompanyid);
if (deptid == -1) return String.valueOf(flag);
flag = true;
}
}
}catch(Exception e){
writeLog(e);
}
return String.valueOf(flag);
}
private boolean verifySubCompanyCode(String code) {
if (StringUtils.isEmpty(code)) return true;
RecordSet recordSet = new RecordSet();
String sql = "select id from HrmSubCompany where subcompanycode = ?";
recordSet.executeQuery(sql, code);
if (recordSet.getCounts() > 0) return false;
return true;
}
private boolean verifySubCompanyCode(String code, String name, int supsubcomid) {
if (StringUtils.isEmpty(code)) return true;
RecordSet recordSet = new RecordSet();
String sql = "select id from HrmSubCompany where ltrim(rtrim(convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+"))) = ? and supsubcomid = ?";
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "select id from HrmSubCompany where ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+"))) = ? and supsubcomid = ?";
}
recordSet.executeQuery(sql, name, supsubcomid);
if (recordSet.next()) {
String id = recordSet.getString("id");
sql = "select id from HrmSubCompany where subcompanycode = ? and id != ?";
recordSet.executeQuery(sql, code, id);
if (recordSet.getCounts() > 0) return false;
return true;
}
return verifySubCompanyCode(code);
}
private boolean verifyDeptCode(String code) {
if (StringUtils.isEmpty(code)) return true;
RecordSet recordSet = new RecordSet();
String sql = "select id from HrmDepartment where departmentcode = ?";
recordSet.executeQuery(sql, code);
if (recordSet.getCounts() > 0) return false;
return true;
}
private boolean verifyDeptCode(String code, String name, int subcompanyid, int supdepid) {
if (StringUtils.isEmpty(code)) return true;
RecordSet recordSet = new RecordSet();
String sql = "select id from HrmDepartment where ltrim(rtrim(convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+"))) = ? and subcompanyid1 = ? and supdepid = ?";
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "select id from HrmDepartment where ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+"))) = ? and subcompanyid1 = ? and supdepid = ?";
}
recordSet.executeQuery(sql, name, subcompanyid, supdepid);
if (recordSet.next()) {
String id = recordSet.getString("id");
sql = "select id from HrmDepartment where departmentcode = ? and id != ?";
recordSet.executeQuery(sql, code, id);
if (recordSet.getCounts() > 0) return false;
return true;
}
return verifyDeptCode(code);
}
private int updateDept(int subcompanyid) {
String deptNames[] = departmentname.split(">");
int currentId = 0;
int parentId = 0;
String departmentcode = "";
Float departmentshoworder = null;
for (int i = 0; i < deptNames.length; i++) {
if (StringUtils.isEmpty(deptNames[i])) continue;
String sql = "select * from HrmDepartment where subcompanyid1="+ subcompanyid + " and ltrim(rtrim(convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+")))='"+ deptNames[i].trim() + "' and supdepid=" + parentId +" and (canceled !=1 or canceled is null)";
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "select * from HrmDepartment where subcompanyid1="+ subcompanyid + " and ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+")))='"+ deptNames[i].trim() + "' and supdepid=" + parentId +" and (canceled !=1 or canceled is null)";
}
currentId = getResultSetId(sql);
if (currentId == 0) {
// 部门不存在
// 不存在
this.setMessage("" + deptNames[i] + "部门不存在");
return -1;
}
if (i == deptNames.length - 1) {
// 最后一层级 赋值编码和顺序
departmentcode = this.departmentcode;
departmentshoworder = this.departmentshoworder;
}
if (StringUtils.isNotEmpty(departmentcode) || departmentshoworder != null) {
recordSet.executeQuery(sql);
recordSet.next();
if (departmentshoworder == null) departmentshoworder = Float.valueOf(Util.null2s(recordSet.getString("showorder"), "0"));
if (StringUtils.isEmpty(departmentcode)) departmentcode = Util.null2String(recordSet.getString("departmentcode"), "");
if (verifyDeptCode(departmentcode, deptNames[i], subcompanyid, parentId)) {
sql = "update hrmdepartment set departmentcode = ? , showorder = ? where ltrim(rtrim(convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+"))) = ? and subcompanyid1 = ? and supdepid = ? and (canceled !=1 or canceled is null)";
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "update hrmdepartment set departmentcode = ? , showorder = ? where ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+"))) = ? and subcompanyid1 = ? and supdepid = ? and (canceled !=1 or canceled is null)";
}
recordSet.executeUpdate(sql, departmentcode, departmentshoworder, deptNames[i], subcompanyid, parentId);
} else {
setMessage("" + departmentcode + "编号重复");
return -1;
}
}
parentId = currentId;
}
return currentId;
}
private int updateSubCompany(){
String subcompanynames[] = subcompanyname.split(">");
int parentId = 0;
int currentId = 0;
String subcompanycode = "";
Float subcompanyshoworder = null;
for (int i = 0; i < subcompanynames.length; i++) {
if (StringUtils.isEmpty(subcompanynames[i])) continue;
String sql = "select * from HrmSubCompany where ltrim(rtrim(convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+")))='"
+ subcompanynames[i].trim() + "' and supsubcomid=" + parentId;
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "select * from HrmSubCompany where ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+")))='"
+ subcompanynames[i].trim() + "' and supsubcomid=" + parentId;
}
currentId = getResultSetId(sql);
if (currentId == 0) {
// 不存在
this.setMessage("" + subcompanynames[i] + "分部不存在");
return -1;
}
if (i == subcompanynames.length - 1) {
// 最后一层级 赋值编码和顺序
subcompanycode = this.subcompanycode;
subcompanyshoworder = this.subcompanyshoworder;
}
// 如果编码和顺序不存在则不更新
if (StringUtils.isNotEmpty(subcompanycode) || subcompanyshoworder != null) {
recordSet.executeQuery(sql);
recordSet.next();
if (subcompanyshoworder == null) subcompanyshoworder = Float.valueOf(Util.null2s(recordSet.getString("showorder"), "0"));
if (StringUtils.isEmpty(subcompanycode)) subcompanycode = Util.null2String(recordSet.getString("subcompanycode"), "");
if (verifySubCompanyCode(subcompanycode, subcompanynames[i], parentId)) {
sql = "update HrmSubCompany set subcompanycode= ? , showorder = ? where ltrim(rtrim(convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+"))) = ? and supsubcomid = ?";
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "update HrmSubCompany set subcompanycode= ? , showorder = ? where ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+"))) = ? and supsubcomid = ?";
}
recordSet.executeUpdate(sql, subcompanycode, subcompanyshoworder, subcompanynames[i], parentId);
} else {
setMessage("" + subcompanycode + "编号重复");
return -1;
}
}
parentId = currentId;
}
return currentId;
}
/**
* Id
* @param subCompanyName eg广>
* @return
*/
public int getSubCompanyId(String subcompanyname) {
String subcompanynames[] = subcompanyname.split(">");
int currentId = 0;
int parentId = 0;
String sql = "";
String sqlInsert = "";
String subcompanycode = "";
Float subcompanyshoworder = null;
for (int i = 0; i < subcompanynames.length; i++) {
if(subcompanynames[i] ==null && subcompanynames[i].equals("")){
continue;
}
sql = "select id from HrmSubCompany where ltrim(rtrim(convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+")))='"
+ subcompanynames[i].trim() + "' and supsubcomid=" + parentId;
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "select id from HrmSubCompany where ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(subcompanyname)),"+userlanguage+")))='"
+ subcompanynames[i].trim() + "' and supsubcomid=" + parentId;
}
currentId = getResultSetId(sql);
//added by wcd 2015-02-06 [限制分部数]
if (currentId == 0) {
if (i == subcompanynames.length - 1) {
// 最后一层级 赋值编码和顺序
subcompanycode = this.subcompanycode;
subcompanyshoworder = this.subcompanyshoworder;
if (subcompanyshoworder == null) subcompanyshoworder = 0.00F;
}
if(AjaxManager.getData("", "getLnScCount;mf").equals("true")){
// 如果编码为空 自动生成编码
try {
subcompanycode = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType.SUBCOMPANY, subcompanycode);
} catch (Exception e) {
setMessage("," + e.getMessage());
writeLog(e);
return -1;
}
sqlInsert = "insert into HrmSubCompany(subcompanyname,subcompanydesc,companyid,supsubcomid,subcompanycode,showorder,"+DbFunctionUtil.getInsertColumnSql()+") values('"
+ subcompanynames[i] +"','"+subcompanynames[i]+"',1" + "," + parentId + ",'" + subcompanycode+ "'," + subcompanyshoworder + ","+DbFunctionUtil.getInsertColumnValueSql(new RecordSet().getDBType(), 1)+")"; // 创建
boolean isSuccess = execSql(sqlInsert);
HrmTriggerUtil.generateSubcompanyPinyin(subcompanynames[i], null);
currentId = getResultSetId(sql);
HrmTriggerUtil.Tri_I_SubComKPICheckFlow(String.valueOf(currentId));
sql = "insert into leftmenuconfig (userid,infoid,visible,viewindex,resourceid,resourcetype,locked,lockedbyid,usecustomname,customname,customname_e) select distinct userid,infoid,visible,viewindex," + currentId + ",2,locked,lockedbyid,usecustomname,customname,customname_e from leftmenuconfig where resourcetype=1 and resourceid=1";
execSql(sql);
sql = "insert into mainmenuconfig (userid,infoid,visible,viewindex,resourceid,resourcetype,locked,lockedbyid,usecustomname,customname,customname_e) select distinct userid,infoid,visible,viewindex," + currentId + ",2,locked,lockedbyid,usecustomname,customname,customname_e from mainmenuconfig where resourcetype=1 and resourceid=1";
execSql(sql);
if(isSuccess){
//同步分部数据到矩阵
MatrixUtil.updateSubcompayData("" + currentId);
HrmFaceCheckManager.sync(currentId+"",HrmFaceCheckManager.getOptInsert(),"hrm_import_subcompany",HrmFaceCheckManager.getOaSubcompany());
}
insertSysLog(subcompanynames[i],"12");
} else {
currentId = -1;
}
}
parentId = currentId;
if(currentId != -1)
rtxService.addSubCompany(parentId); //同步RTX
}
return currentId;
}
/**
* id
* @param deptNames
* @param subCompanyId id
* @return
*/
public int getDeptId(String deptNames, int subCompanyId){
String deptName[] = deptNames.split(">");
int currentId = 0;
int parentId = 0;
String sql = "";
String sqlInsert = "";
String departmentcode = "";
Float departmentshoworder = null;
for (int i = 0; i < deptName.length; i++) {
if(deptName[i] == null || deptName[i].equals("")){
continue;
}
sql = "select id from HrmDepartment where subcompanyid1="+ subCompanyId + " and ltrim(rtrim(convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+")))='"+ deptName[i].trim() + "' and supdepid=" + parentId +" and (canceled !=1 or canceled is null)";
if("sqlserver".equalsIgnoreCase(recordSet.getDBType())){
sql = "select id from HrmDepartment where subcompanyid1="+ subCompanyId + " and ltrim(rtrim(dbo.convToMultiLang(ltrim(rtrim(departmentname)),"+userlanguage+")))='"+ deptName[i].trim() + "' and supdepid=" + parentId +" and (canceled !=1 or canceled is null)";
}
currentId = getResultSetId(sql);
if (currentId == 0) {
if (i == deptName.length -1) {
departmentcode = this.departmentcode;
departmentshoworder = this.departmentshoworder;
if (departmentshoworder == null) departmentshoworder = 0.00F;
}
// 如果编码为空 自动生成编码
departmentcode = "";
try {
departmentcode = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType.DEPARTMENT, String.valueOf(subCompanyId), departmentcode,String.valueOf(parentId));
} catch (Exception e) {
setMessage("" + e.getMessage());
writeLog(e);
return -1;
}
sqlInsert = "insert into HrmDepartment (departmentname,Departmentmark,subcompanyid1,supdepid,departmentcode,showorder,"+DbFunctionUtil.getInsertColumnSql()+") values('"
+ deptName[i]+"','"+deptName[i]+"',"+ subCompanyId+ ","+ parentId + ",'"+ departmentcode + "',"+ departmentshoworder + ","+DbFunctionUtil.getInsertColumnValueSql(new RecordSet().getDBType(), 1)+")"; // 创建
boolean isSuccess = execSql(sqlInsert);
HrmTriggerUtil.generateDepartmentPinyin(deptName[i], null);
currentId = getResultSetId(sql);
HrmTriggerUtil.Tri_I_DeptKPICheckFlow(String.valueOf(currentId));
if(isSuccess){
//同步部门数据到矩阵
MatrixUtil.updateDepartmentData("" + currentId);
HrmFaceCheckManager.sync(currentId+"",HrmFaceCheckManager.getOptInsert(),"hrm_import_deptment",HrmFaceCheckManager.getOaDepartment());
}
insertSysLog(deptName[i],"12");
rtxService.addDepartment(currentId); //同步RTX
}
parentId = currentId;
}
return currentId;
}
/**
* Id
* @param sql
* @return
*/
public int getResultSetId(String sql) {
int currentId = 0;
recordSet.execute(sql);
try {
while (recordSet.next()) {
currentId = recordSet.getInt("id");
}
} catch (Exception e) {
e.printStackTrace();
}
return currentId;
}
/**
*
* @param sql
* @return
*/
public boolean execSql(String sql) {
if(recordSet.execute(sql)){
return true;
}
else{
return false;
}
}
public void removeCache(){
try{
MatrixUtil.sysSubcompayData();
MatrixUtil.sysDepartmentData();
SubCompanyComInfo SubCompanyComInfo = new SubCompanyComInfo();
SubCompanyComInfo.removeCompanyCache();
DepartmentComInfo DepartmentComInfo = new DepartmentComInfo();
DepartmentComInfo.removeCompanyCache();
//初始化应用分权
new weaver.hrm.appdetach.AppDetachComInfo().initSubDepAppData();
}catch (Exception e) {
writeLog(e);
}
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSubcompanyname() {
return subcompanyname;
}
public void setSubcompanyname(String subcompanyname) {
this.subcompanyname = subcompanyname;
}
public String getDepartmentname() {
return departmentname;
}
public void setDepartmentname(String departmentname) {
this.departmentname = departmentname;
}
public String getSubcompanycode() {
return subcompanycode;
}
public void setSubcompanycode(String subcompanycode) {
this.subcompanycode = subcompanycode;
}
public Float getSubcompanyshoworder() {
return subcompanyshoworder;
}
public void setSubcompanyshoworder(Float subcompanyshoworder) {
this.subcompanyshoworder = subcompanyshoworder;
}
public String getDepartmentcode() {
return departmentcode;
}
public void setDepartmentcode(String departmentcode) {
this.departmentcode = departmentcode;
}
public Float getDepartmentshoworder() {
return departmentshoworder;
}
public void setDepartmentshoworder(Float departmentshoworder) {
this.departmentshoworder = departmentshoworder;
}
public String getOperateType() {
return operateType;
}
public void setOperateType(String operateType) {
this.operateType = operateType;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private void insertSysLog(String name, String operateItem) {
SysMaintenanceLog syslog = new SysMaintenanceLog();
syslog.resetParameter();
syslog.setRelatedId(pid);
syslog.setOperateType("-1");
syslog.setOperateItem(operateItem);
syslog.setOperateUserid(0);
syslog.setRelatedName(name);
try {
syslog.setSysLogInfo();
} catch (Exception e) {
writeLog(e);
}
}
}