From 9d304b0303778ed9637923c0e25cfe15841262d6 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 26 Jul 2022 09:40:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=83=A8=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/mapper/comp/CompMapper.java | 2 + .../organization/mapper/comp/CompMapper.xml | 9 + .../mapper/department/DepartmentMapper.java | 2 + .../mapper/department/DepartmentMapper.xml | 9 + .../mapper/extend/ExtendInfoMapper.java | 2 + .../mapper/extend/ExtendInfoMapper.xml | 7 + .../organization/mapper/job/JobMapper.java | 2 + .../organization/mapper/job/JobMapper.xml | 9 + .../service/ImportCommonService.java | 25 + .../service/impl/HrmResourceServiceImpl.java | 36 +- .../service/impl/ImportCommonServiceImpl.java | 432 +++++++++++++++++- .../web/ImportCommonController.java | 34 +- .../wrapper/ImportCommonWrapper.java | 21 + 13 files changed, 580 insertions(+), 10 deletions(-) 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 getCompanyImportForm(String ids) throws IOException { + // 根据选择字段、生成对应的导入模板 + List extendInfosByIds = getExtendInfoMapper().getExtendInfosByIds(DeleteParam.builder().ids(ids).build().getIds()); + List fieldList = extendInfosByIds.stream().map(ExtendInfoPO::getFieldNameDesc).collect(Collectors.toList()); + List> excelSheetData = new ArrayList<>(); + excelSheetData.add(fieldList); + String sheetName = "company"; + String outPutPath = GCONST.getRootPath() + "hrm" + File.separator + "import" + File.separator + "templet" + File.separator + user.getUID(); + XSSFWorkbook sheets = ExcelUtil.genWorkbookV2(excelSheetData, sheetName); + String excelPath = outPutPath + File.separator + sheetName + ".xls"; + File excelPathFile = new File(excelPath); + if (!excelPathFile.exists()) { + String substring = excelPath.substring(0, excelPath.lastIndexOf(File.separator)); + File file = new File(substring); + file.mkdirs(); + excelPathFile.createNewFile(); + } + FileOutputStream out = new FileOutputStream(excelPathFile); + sheets.write(out); + excelPath = "/hrm/import/templet/" + user.getUID() + "/company.xls"; + + // 返回导入数据 + List lsGroup = new ArrayList<>(); + Map groupItem = new HashMap<>(); + List itemList = new ArrayList<>(); + + groupItem.put("title", SystemEnv.getHtmlLabelName(1361, user.getLanguage())); + groupItem.put("defaultshow", true); + + SearchConditionItem searchConditionItem; + ConditionFactory conditionFactory = new ConditionFactory(user); + //导入类型 + List statusOptions = new ArrayList<>(); + statusOptions.add(new SearchConditionOption("add", SystemEnv.getHtmlLabelName(611, user.getLanguage()), true)); + statusOptions.add(new SearchConditionOption("update", SystemEnv.getHtmlLabelName(17744, user.getLanguage()))); + searchConditionItem = conditionFactory.createCondition(ConditionType.SELECT, 24863, "importType", statusOptions); + searchConditionItem.setValue("add"); + itemList.add(searchConditionItem); + + //模板文件 + searchConditionItem = conditionFactory.createCondition(ConditionType.INPUT, 28576, "templet"); + searchConditionItem.setValue(excelPath); + itemList.add(searchConditionItem); + + //Excel文件 + searchConditionItem = conditionFactory.createCondition(ConditionType.RESOURCEIMG, 16630, "excelfile"); + itemList.add(searchConditionItem); + + groupItem.put("items", itemList); + lsGroup.add(groupItem); + + + itemList = new ArrayList<>(); + groupItem = new HashMap<>(); + groupItem.put("title", SystemEnv.getHtmlLabelName(33803, weaver.general.Util.getIntValue(user.getLanguage()))); + groupItem.put("defaultshow", true); + List lsPromptLabel = new ArrayList<>(); //提示信息 + lsPromptLabel.add(34275); + lsPromptLabel.add(125452); + lsPromptLabel.add(125466); + lsPromptLabel.add(522355); + lsPromptLabel.add(522356); + lsPromptLabel.add(522357); + lsPromptLabel.add(530411); + + for (int i = 0; i < lsPromptLabel.size(); i++) { + Map item = new HashMap<>(); + item.put("index", (i + 1)); + String value = Util.toScreen(SystemEnv.getHtmlLabelName(lsPromptLabel.get(i), user.getLanguage()), user.getLanguage()); + if (i == 0) { + value += SystemEnv.getHtmlLabelName(28576, user.getLanguage()); + item.put("link", excelPath); + } + item.put("value", value); + itemList.add(item); + } + groupItem.put("items", itemList); + lsGroup.add(groupItem); + return lsGroup; + } + + + /** + * 导入分部 + * + * @param operateType + * @param excelFile + */ + private void companyImport(String operateType, String excelFile, Long extendType) { + try { + ImageFileManager manager = new ImageFileManager(); + manager.getImageFileInfoById(Util.getIntValue(excelFile)); + HSSFWorkbook workbook = new HSSFWorkbook(new POIFSFileSystem(manager.getInputStream())); + // 当前sheet + HSSFSheet sheetAt = workbook.getSheetAt(0); + int lastRow = sheetAt.getLastRowNum(); + List extendInfoPOS = new ArrayList<>(); + List errMsg = new ArrayList<>(); + + for (int i = 0; i <= lastRow; i++) { + HSSFRow row = sheetAt.getRow(i); + // 组装待处理数据 + Map map = new HashMap<>(); + nextRow: + for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) { + HSSFCell cell = row.getCell((short) cellIndex); + if (cell == null) { + continue; + } + String cellValue = getCellValue(cell).trim(); + if (i == 0) { + // 首行 初始化字段信息 + ExtendInfoPO extendInfoPO = getExtendInfoMapper().getInfoByGroupAndLabelName(extendType, cellValue); + extendInfoPOS.add(extendInfoPO); + } else { + ExtendInfoPO infoPO = extendInfoPOS.get(cellIndex); + if ("comp_name".equals(infoPO.getFieldName())) { + String[] split = cellValue.split(">"); + Long parentCompanyId = null; + if (split.length > 1) { + if (split.length > 8) { + // TODO 记录日志 + errMsg.add("分部层级不能大于10"); + break nextRow; + } + for (int index = split.length - 2; index >= 0; index--) { + parentCompanyId = MapperProxyFactory.getProxy(CompMapper.class).getIdByNameAndPid(split[index], parentCompanyId == null ? 0 : parentCompanyId); + if (null == parentCompanyId) { + // TODO 记录日志 + errMsg.add(split[index] + ":未找到对应数据"); + break nextRow; + } + } + } + map.put("parent_company", parentCompanyId); + map.put("comp_name", split[split.length - 1]); + } + // 数据校验 + if (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) { + // TODO 记录日志 + errMsg.add(infoPO.getFieldNameDesc() + "为必填项"); + break nextRow; + } + + Object reallyValue = getReallyValue(infoPO, cellValue); + if (StringUtils.isNotBlank(cellValue) && StringUtils.isBlank((String) reallyValue)) { + // TODO 记录日志 + errMsg.add(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据"); + break nextRow; + } + map.put(infoPO.getFieldName(), reallyValue); + // TODO 自动编号 + if ("add".equals(operateType)) { + MapperProxyFactory.getProxy(ExtMapper.class).insertExt(ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(map).build()); + } else if ("update".equals(operateType)) { + String compNo = (String) map.get("comp_no"); + // 查询对应ID + if (StringUtils.isNotBlank(compNo)) { + List compPOS = MapperProxyFactory.getProxy(CompMapper.class).listByNo(compNo); + } + } + + } + } + + // 校验、数据交互 + + } + + + } catch (IOException e) { + throw new RuntimeException(e); + } catch (JSONException e) { + throw new RuntimeException(e); + } + } + + private String getCellValue(HSSFCell cell) { + String cellValue = ""; + if (cell == null) + return ""; + switch (cell.getCellType()) { + case BOOLEAN: // 得到Boolean对象的方法 + cellValue = String.valueOf(cell.getBooleanCellValue()); + break; + case NUMERIC: + if (HSSFDateUtil.isCellDateFormatted(cell)) {// 先看是否是日期格式 + SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd"); + cellValue = String.valueOf(sft.format(cell.getDateCellValue())); // 读取日期格式 + } else { + cellValue = String.valueOf(new Double(cell.getNumericCellValue())); // 读取数字 + if (cellValue.endsWith(".0")) + cellValue = cellValue.substring(0, cellValue.indexOf(".")); + } + break; + case FORMULA: // 读取公式 + cellValue = cell.getCellFormula(); + break; + case STRING: // 读取String + cellValue = cell.getStringCellValue(); + break; + } + cellValue = Util.toHtmlForHrm(cellValue); + return cellValue; + } + + private Object getReallyValue(ExtendInfoPO extendInfo, String cellValue) throws JSONException { + Object object = null; + JSONArray jsonArray = JSONObject.parseArray(extendInfo.getCustomValue()); + switch (extendInfo.getControlType()) { + case 1: + String valueType = (String) jsonArray.get(1); + // INPUT + if ("int".equals(valueType)) { + object = Integer.parseInt(cellValue); + } else if ("float".equals(valueType)) { + object = Float.parseFloat(cellValue); + } else { + object = cellValue; + } + break; + case 3: + // BROWSER + org.json.JSONObject jsonObject = new org.json.JSONObject(); + jsonObject.put("fieldhtmltype", extendInfo.getControlType()); + jsonObject.put("type", extendInfo.getBrowserType()); + jsonObject.put("fieldvalue", cellValue); + jsonObject.put("dmlurl", SelectOptionParam.getCustomBrowserId(extendInfo.getCustomValue())); + + break; + case 5: + // SELECT + JSONObject o = (JSONObject) jsonArray.get(2); + JSONArray datas = o.getJSONArray("datas"); + List options = datas.toJavaList(FieldSelectOptionBean.class); + Map optionMap = options.stream().collect(Collectors.toMap(FieldSelectOptionBean::getOption, FieldSelectOptionBean::getId, (k1, k2) -> k1)); + object = optionMap.get(cellValue); + break; + case 4:// CHECKBOX + case 6: + // FILEUPLOAD + break; + case 7:// TEXT + case 2:// TEXTAREA + default: + object = cellValue; + break; + } + return object; + } + + /** + * 校验重复编号 + * + * @param no + * @param tableName + * @param id + * @return + */ + private boolean checkRepeatNo(String no, String tableName, Long id) { + if (StringUtils.isBlank(no)) { + return true; + } + if (StringUtils.isNotBlank(tableName)) { + switch (tableName) { + case "JCL_ORG_COMP": + return 0 == MapperProxyFactory.getProxy(CompMapper.class).checkRepeatNo(no, id); + case "JCL_ORG_DEPT": + case "JCL_ORG_JOB": + default: + return false; + } + } + return false; + } + + } diff --git a/src/com/engine/organization/web/ImportCommonController.java b/src/com/engine/organization/web/ImportCommonController.java index 4a9a6195..7e780da5 100644 --- a/src/com/engine/organization/web/ImportCommonController.java +++ b/src/com/engine/organization/web/ImportCommonController.java @@ -9,6 +9,7 @@ import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; @@ -36,7 +37,38 @@ public class ImportCommonController { Map map = ParamUtil.request2Map(request); return ReturnResult.successed(getImportCommonWrapper(user).saveImportResource(map, request)); } catch (Exception e) { - return ReturnResult.exceptionHandle(e); + return ReturnResult.exceptionHandle(e); + } + } + + @GET + @Path("/getImportFields") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getImportFields(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + String importType = (String) map.get("importType"); + return ReturnResult.successed(getImportCommonWrapper(user).getImportFields(importType)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } + + @GET + @Path("/getImportForm") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getImportForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + String importType = (String) map.get("importType"); + String ids = (String) map.get("ids"); + return ReturnResult.successed(getImportCommonWrapper(user).getImportForm(importType, ids)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); } } } diff --git a/src/com/engine/organization/wrapper/ImportCommonWrapper.java b/src/com/engine/organization/wrapper/ImportCommonWrapper.java index 2a5d99c5..2f2975ed 100644 --- a/src/com/engine/organization/wrapper/ImportCommonWrapper.java +++ b/src/com/engine/organization/wrapper/ImportCommonWrapper.java @@ -23,4 +23,25 @@ public class ImportCommonWrapper extends Service { public Map saveImportResource(Map params, HttpServletRequest request) { return getImportCommonService(user).saveImportResource(params, request); } + + + /** + * 选择导入字段 + * + * @return + */ + public Map getImportFields(String importType) { + return getImportCommonService(user).getImportFields(importType); + } + + /** + * 获取导入表单 + * + * @param importType + * @param ids + * @return + */ + public Map getImportForm(String importType, String ids) { + return getImportCommonService(user).getImportForm(importType, ids); + } }