diff --git a/src/com/engine/organization/mapper/comp/CompMapper.java b/src/com/engine/organization/mapper/comp/CompMapper.java
index 953c63be..5febc537 100644
--- a/src/com/engine/organization/mapper/comp/CompMapper.java
+++ b/src/com/engine/organization/mapper/comp/CompMapper.java
@@ -168,4 +168,6 @@ public interface CompMapper {
*/
Integer countTopCompany(@Param("parentCompany") Long parentCompany);
+ int checkRepeatNo(@Param("companyNo") String companyNo, @Param("id") Long id);
+
}
diff --git a/src/com/engine/organization/mapper/comp/CompMapper.xml b/src/com/engine/organization/mapper/comp/CompMapper.xml
index 9bf6e072..5c818f63 100644
--- a/src/com/engine/organization/mapper/comp/CompMapper.xml
+++ b/src/com/engine/organization/mapper/comp/CompMapper.xml
@@ -300,6 +300,15 @@
WHERE t.delete_type = 0
and uuid = #{uuid}
+
update jcl_org_comp
diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.java b/src/com/engine/organization/mapper/department/DepartmentMapper.java
index e858cfa5..29013859 100644
--- a/src/com/engine/organization/mapper/department/DepartmentMapper.java
+++ b/src/com/engine/organization/mapper/department/DepartmentMapper.java
@@ -132,4 +132,6 @@ public interface DepartmentMapper {
* @return
*/
Long getIdByNameAndPid(@Param("departmentName") String departmentName, @Param("parentCompany") Long parentCompany, @Param("parentDepartment") Long parentDepartment);
+
+ int checkRepeatNo(@Param("departmentNo") String departmentNo, @Param("id") Long id);
}
diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml
index 126ef797..a21f999a 100644
--- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml
+++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml
@@ -157,6 +157,15 @@
where delete_type = 0
and uuid = #{uuid}
+
and ifnull(parent_dept,0) =
#{parentDepartment}
diff --git a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java
index cca8368f..8323ff99 100644
--- a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java
+++ b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.java
@@ -37,5 +37,7 @@ public interface ExtendInfoMapper {
int updateExtendGroupId(@Param("groupId") Long groupId, @Param("ids") Collection ids);
+ ExtendInfoPO getInfoByGroupAndLabelName(@Param("extendType") Long extendType, @Param("labelName") String labelName);
+
}
diff --git a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml
index eddb6dca..60053f92 100644
--- a/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml
+++ b/src/com/engine/organization/mapper/extend/ExtendInfoMapper.xml
@@ -284,6 +284,13 @@
#{id}
+
\ No newline at end of file
diff --git a/src/com/engine/organization/mapper/job/JobMapper.java b/src/com/engine/organization/mapper/job/JobMapper.java
index dbbabd78..25161d6d 100644
--- a/src/com/engine/organization/mapper/job/JobMapper.java
+++ b/src/com/engine/organization/mapper/job/JobMapper.java
@@ -153,4 +153,6 @@ public interface JobMapper {
* @return
*/
Long getIdByNameAndPid(@Param("jobName") String jobName, @Param("parentCompany") Long parentCompany, @Param("parentDepartment") Long parentDepartment, @Param("parentJob") Long parentJob);
+
+ int checkRepeatNo(@Param("jobNo") String jobNo, @Param("id") Long id);
}
diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml
index 1d62d7eb..f6c19367 100644
--- a/src/com/engine/organization/mapper/job/JobMapper.xml
+++ b/src/com/engine/organization/mapper/job/JobMapper.xml
@@ -363,6 +363,15 @@
AND job_name = #{jobName}
AND id != #{id}
+
and ifnull(parent_job,0) =
diff --git a/src/com/engine/organization/service/ImportCommonService.java b/src/com/engine/organization/service/ImportCommonService.java
index feaa1c58..affdafd5 100644
--- a/src/com/engine/organization/service/ImportCommonService.java
+++ b/src/com/engine/organization/service/ImportCommonService.java
@@ -30,4 +30,29 @@ public interface ImportCommonService {
* @return
*/
Map saveImport(Map params, HttpServletRequest request, User user);
+
+
+ /**
+ * 获取导入字段
+ *
+ * @return
+ */
+ Map getImportFields(String importType);
+
+ /**
+ * 获取导入表单
+ *
+ * @return
+ */
+ Map getImportForm(String importType, String ids);
+
+
+ /**
+ * 导入数据
+ *
+ * @param params
+ * @return
+ */
+ Map saveImport(Map params);
+
}
diff --git a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java
index b9852c8a..0fa9cae6 100644
--- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java
+++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java
@@ -42,6 +42,7 @@ import com.engine.organization.util.OrganizationAssert;
import com.engine.organization.util.OrganizationFormItemUtil;
import com.engine.organization.util.db.DBType;
import com.engine.organization.util.db.MapperProxyFactory;
+import com.engine.organization.util.page.PageUtil;
import com.engine.organization.util.tree.SearchTreeUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -507,9 +508,22 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
List jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
- List compsByIds = getDepartmentMapper().getDeptsByIds(DeleteParam.builder().ids(parentDeptS).build().getIds());
- if (CollectionUtils.isNotEmpty(compsByIds)) {
- filterDeparts.addAll(compsByIds);
+ // 兼容SQLServer每次最多in,2100条数据
+ List ids = (List) DeleteParam.builder().ids(parentDeptS).build().getIds();
+ int ceilCount = (int) Math.ceil((double) ids.size() / 1000);
+ List departmentsByIds = new ArrayList<>();
+ for (int i = 0; i < ceilCount - 1; i++) {
+ List longs = PageUtil.subList(i, 1000, ids);
+ System.out.println(longs.size());
+ List departmentsById = getDepartmentMapper().getDeptsByIds(longs);
+ if (CollectionUtils.isNotEmpty(departmentsById)) {
+ departmentsByIds.addAll(departmentsById);
+ }
+ }
+
+
+ if (CollectionUtils.isNotEmpty(departmentsByIds)) {
+ filterDeparts.addAll(departmentsByIds);
}
}
@@ -548,9 +562,19 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
List jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
- List compsByIds = getDepartmentMapper().getDeptsByIds(DeleteParam.builder().ids(parentDeptS).build().getIds());
- if (CollectionUtils.isNotEmpty(compsByIds)) {
- filterDeparts.addAll(compsByIds);
+ // 兼容SQLServer每次最多in,2100条数据
+ List ids = (List) DeleteParam.builder().ids(parentDeptS).build().getIds();
+ int ceilCount = (int) Math.ceil((double) ids.size() / 1000);
+ List departmentsByIds = new ArrayList<>();
+ for (int i = 0; i < ceilCount - 1; i++) {
+ List departmentsById = getDepartmentMapper().getDeptsByIds(PageUtil.subList(i, 1000, ids));
+ if (CollectionUtils.isNotEmpty(departmentsById)) {
+ departmentsByIds.addAll(departmentsById);
+ }
+ }
+
+ if (CollectionUtils.isNotEmpty(departmentsByIds)) {
+ filterDeparts.addAll(departmentsByIds);
}
}
diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java
index 10bf92fe..0226b2c1 100644
--- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java
+++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java
@@ -1,22 +1,52 @@
package com.engine.organization.service.impl;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.api.browser.bean.SearchConditionItem;
+import com.api.browser.bean.SearchConditionOption;
+import com.api.browser.util.ConditionFactory;
+import com.api.browser.util.ConditionType;
import com.engine.core.impl.Service;
+import com.engine.hrm.entity.FieldSelectOptionBean;
+import com.engine.organization.entity.DeleteParam;
+import com.engine.organization.entity.SelectOptionParam;
+import com.engine.organization.entity.company.po.CompPO;
+import com.engine.organization.entity.extend.param.ExtendInfoParams;
+import com.engine.organization.entity.extend.po.ExtendInfoPO;
import com.engine.organization.entity.hrmresource.param.HrmResourceImportParam;
+import com.engine.organization.mapper.comp.CompMapper;
+import com.engine.organization.mapper.extend.ExtMapper;
+import com.engine.organization.mapper.extend.ExtendInfoMapper;
import com.engine.organization.service.ImportCommonService;
+import com.engine.organization.util.OrganizationAssert;
+import com.engine.organization.util.db.MapperProxyFactory;
+import com.engine.organization.util.excel.ExcelUtil;
import com.engine.organization.util.saveimport.HrmResourceImportAdaptUtil;
import com.engine.organization.util.saveimport.HrmResourceImportProcessUtil;
import com.engine.organization.util.saveimport.SaveImportProcessUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.json.JSONException;
import weaver.file.FileUploadToPath;
+import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
+import weaver.general.GCONST;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.systeminfo.SystemEnv;
import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* @author:dxfeng
@@ -25,6 +55,11 @@ import java.util.Map;
*/
public class ImportCommonServiceImpl extends Service implements ImportCommonService {
+
+ private ExtendInfoMapper getExtendInfoMapper() {
+ return MapperProxyFactory.getProxy(ExtendInfoMapper.class);
+ }
+
@Override
public Map saveImportResource(Map params, HttpServletRequest request) {
@@ -33,13 +68,13 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
String keyField = (String) params.get("keyField");
switch (keyField) {
case "workcode":
- params.put("keyField","work_code");
+ params.put("keyField", "work_code");
break;
case "lastname":
- params.put("keyField","last_name");
+ params.put("keyField", "last_name");
break;
case "loginid":
- params.put("keyField","login_id");
+ params.put("keyField", "login_id");
break;
default:
break;
@@ -102,4 +137,395 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ
returnMap.put("pid", request.getSession(true).getAttribute("importExcelPid"));
return returnMap;
}
+
+
+ @Override
+ public Map getImportFields(String importType) {
+ String extendType = "";
+ String tableName = "";
+ String errorMsg = "";
+ List exculdeFields = new ArrayList<>();
+ if (StringUtils.isNotBlank(importType)) {
+ switch (importType) {
+ case "company":
+ extendType = "1";
+ tableName = "JCL_ORG_COMP";
+ exculdeFields.add("parent_company");
+ break;
+ case "department":
+ extendType = "2";
+ tableName = "JCL_ORG_DEPT";
+ break;
+ case "jobtitles":
+ extendType = "3";
+ tableName = "JCL_ORG_JOB";
+ break;
+ case "resource":
+ // TODO
+ break;
+ default:
+ errorMsg = "未找到对应的导入类型,请确认";
+ break;
+ }
+ } else {
+ errorMsg = "请选择导入类型";
+ }
+ OrganizationAssert.isBlank(errorMsg, errorMsg);
+ Map returnMaps = new HashMap<>();
+ if (StringUtils.isAnyEmpty(extendType, tableName)) {
+ return returnMaps;
+ }
+ List infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, "");
+ List fieldDatas = infoPOList.stream().filter(item -> !exculdeFields.contains(item.getFieldName())).map(item -> {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("id", item.getId());
+ jsonObject.put("name", item.getFieldNameDesc());
+ return jsonObject;
+ }).collect(Collectors.toList());
+ List selectedKeys = infoPOList.stream().filter(item -> 0 == item.getIsSystemDefault()).map(ExtendInfoPO::getId).collect(Collectors.toList());
+ returnMaps.put("data", fieldDatas);
+ returnMaps.put("selectedKeys", selectedKeys);
+ return returnMaps;
+ }
+
+ @Override
+ public Map getImportForm(String importType, String ids) {
+ Map returnMap = new HashMap<>();
+ try {
+ if (StringUtils.isNotBlank(importType)) {
+ switch (importType) {
+ case "company":
+ returnMap.put("condition", getCompanyImportForm(ids));
+ break;
+ case "department":
+ break;
+ case "jobtitles":
+ break;
+ case "resource":
+ // TODO
+ break;
+ default:
+ returnMap.put("status", "-1");
+ returnMap.put("message", "请选择合适的导入类型");
+ return returnMap;
+ }
+ }
+ returnMap.put("status", "1");
+ } catch (IOException e) {
+ returnMap.put("status", "-1");
+ returnMap.put("message", "导入模板生成异常");
+ new BaseBean().writeLog(e);
+ }
+ return returnMap;
+ }
+
+ @Override
+ public Map saveImport(Map params) {
+ String importType = (String) params.get("importType");
+ String operateType = (String) params.get("operateType");
+ String excelfile = (String) params.get("excelfile");
+ if (StringUtils.isNotBlank(importType)) {
+ switch (importType) {
+ case "company":
+ companyImport(operateType, excelfile, 1L);
+ break;
+ case "department":
+ break;
+ case "jobtitles":
+ break;
+ case "resource":
+ // TODO
+ break;
+ default:
+ break;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * 分部导入表单
+ *
+ * @param ids
+ * @return
+ * @throws IOException
+ */
+ private List