From b1365da225d396fe23342edcb3ddc39cc9dfa217 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 26 Jul 2022 16:33:41 +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 --- .../po/JclImportHistoryDetailPO.java | 24 ++ .../jclimport/po/JclImportHistoryPO.java | 26 ++ .../vo/JclImportHistoryDetailVO.java | 24 ++ .../organization/mapper/comp/CompMapper.java | 2 + .../organization/mapper/comp/CompMapper.xml | 7 + .../JclImportHistoryDetailMapper.java | 13 + .../JclImportHistoryDetailMapper.xml | 62 ++++ .../jclimport/JclImportHistoryMapper.java | 13 + .../jclimport/JclImportHistoryMapper.xml | 77 +++++ .../service/ImportCommonService.java | 2 +- .../service/impl/ImportCommonServiceImpl.java | 327 +++++++++++------- .../web/ImportCommonController.java | 17 +- .../wrapper/ImportCommonWrapper.java | 16 +- 13 files changed, 487 insertions(+), 123 deletions(-) create mode 100644 src/com/engine/organization/entity/jclimport/po/JclImportHistoryDetailPO.java create mode 100644 src/com/engine/organization/entity/jclimport/po/JclImportHistoryPO.java create mode 100644 src/com/engine/organization/entity/jclimport/vo/JclImportHistoryDetailVO.java create mode 100644 src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java create mode 100644 src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml create mode 100644 src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.java create mode 100644 src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.xml diff --git a/src/com/engine/organization/entity/jclimport/po/JclImportHistoryDetailPO.java b/src/com/engine/organization/entity/jclimport/po/JclImportHistoryDetailPO.java new file mode 100644 index 00000000..c1449675 --- /dev/null +++ b/src/com/engine/organization/entity/jclimport/po/JclImportHistoryDetailPO.java @@ -0,0 +1,24 @@ +package com.engine.organization.entity.jclimport.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2022/07/26 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JclImportHistoryDetailPO { + private Long id; + private Long pid; + private String rowNums; + private String status; + private String operateDetail; + private String relatedName; +} diff --git a/src/com/engine/organization/entity/jclimport/po/JclImportHistoryPO.java b/src/com/engine/organization/entity/jclimport/po/JclImportHistoryPO.java new file mode 100644 index 00000000..fb21ea11 --- /dev/null +++ b/src/com/engine/organization/entity/jclimport/po/JclImportHistoryPO.java @@ -0,0 +1,26 @@ +package com.engine.organization.entity.jclimport.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2022/07/26 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JclImportHistoryPO { + private Long id; + private Long operator; + private String operateTime; + private String clientAddress; + private String importType; + private String sourceFrom; + private String operateType; + private String status; +} diff --git a/src/com/engine/organization/entity/jclimport/vo/JclImportHistoryDetailVO.java b/src/com/engine/organization/entity/jclimport/vo/JclImportHistoryDetailVO.java new file mode 100644 index 00000000..1b115441 --- /dev/null +++ b/src/com/engine/organization/entity/jclimport/vo/JclImportHistoryDetailVO.java @@ -0,0 +1,24 @@ +package com.engine.organization.entity.jclimport.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2022/07/26 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JclImportHistoryDetailVO { + private Long id; + private Long pid; + private String rowNums; + private String status; + private String operateDetail; + private String relatedName; +} diff --git a/src/com/engine/organization/mapper/comp/CompMapper.java b/src/com/engine/organization/mapper/comp/CompMapper.java index 5febc537..6bec7217 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.java +++ b/src/com/engine/organization/mapper/comp/CompMapper.java @@ -170,4 +170,6 @@ public interface CompMapper { int checkRepeatNo(@Param("companyNo") String companyNo, @Param("id") Long id); + CompPO getCompanyByNo(@Param("companyNo") String companyNo); + } diff --git a/src/com/engine/organization/mapper/comp/CompMapper.xml b/src/com/engine/organization/mapper/comp/CompMapper.xml index 5c818f63..3d453442 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.xml +++ b/src/com/engine/organization/mapper/comp/CompMapper.xml @@ -309,6 +309,13 @@ and t.id != #{id} + update jcl_org_comp diff --git a/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java new file mode 100644 index 00000000..32ad1309 --- /dev/null +++ b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.java @@ -0,0 +1,13 @@ +package com.engine.organization.mapper.jclimport; + +import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; + +/** + * @author:dxfeng + * @createTime: 2022/07/26 + * @version: 1.0 + */ +public interface JclImportHistoryDetailMapper { + + void insertHistoryDetail(JclImportHistoryDetailPO historyDetailPO); +} diff --git a/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml new file mode 100644 index 00000000..3751306e --- /dev/null +++ b/src/com/engine/organization/mapper/jclimport/JclImportHistoryDetailMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + t + . + id + , t.pid + , t.row_nums + , t.status + , t.operate_detail + , t.related_name + + + INSERT INTO jcl_import_history_detail + + + pid, + + + row_nums, + + + status, + + + operate_detail, + + + related_name, + + + + + #{pid}, + + + #{rowNums}, + + + #{status}, + + + #{operateDetail}, + + + #{relatedName}, + + + + \ No newline at end of file diff --git a/src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.java b/src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.java new file mode 100644 index 00000000..b408d291 --- /dev/null +++ b/src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.java @@ -0,0 +1,13 @@ +package com.engine.organization.mapper.jclimport; + +import com.engine.organization.entity.jclimport.po.JclImportHistoryPO; + +/** + * @author:dxfeng + * @createTime: 2022/07/26 + * @version: 1.0 + */ +public interface JclImportHistoryMapper { + + int insertHistory(JclImportHistoryPO historyPO); +} diff --git a/src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.xml b/src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.xml new file mode 100644 index 00000000..81092634 --- /dev/null +++ b/src/com/engine/organization/mapper/jclimport/JclImportHistoryMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + t.id + , t.operator + , t.operate_time + , t.client_address + , t.import_type + , t.source_from + , t.operate_type + , t.status + + + INSERT INTO jcl_import_history + + + operator, + + + operate_time, + + + client_address, + + + import_type, + + + source_from, + + + operate_type, + + + status, + + + + + #{operator}, + + + #{operateTime}, + + + #{clientAddress}, + + + #{importType}, + + + #{sourceFrom}, + + + #{operateType}, + + + #{status}, + + + + + \ No newline at end of file diff --git a/src/com/engine/organization/service/ImportCommonService.java b/src/com/engine/organization/service/ImportCommonService.java index affdafd5..f4ce809b 100644 --- a/src/com/engine/organization/service/ImportCommonService.java +++ b/src/com/engine/organization/service/ImportCommonService.java @@ -44,7 +44,7 @@ public interface ImportCommonService { * * @return */ - Map getImportForm(String importType, String ids); + Map getImportForm(String importType, String columns); /** diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index 2bd57771..028f95ea 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -8,15 +8,19 @@ 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.extend.param.ExtendInfoParams; import com.engine.organization.entity.extend.po.ExtendInfoPO; +import com.engine.organization.entity.fieldset.param.FieldTypeTreeParam; import com.engine.organization.entity.hrmresource.param.HrmResourceImportParam; +import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; +import com.engine.organization.entity.jclimport.po.JclImportHistoryPO; import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtendInfoMapper; +import com.engine.organization.mapper.jclimport.JclImportHistoryDetailMapper; +import com.engine.organization.mapper.jclimport.JclImportHistoryMapper; import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.service.ImportCommonService; import com.engine.organization.util.OrganizationAssert; @@ -26,16 +30,19 @@ 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.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.json.JSONException; +import weaver.common.DateUtil; 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.hrm.definedfield.HrmFieldManager; import weaver.systeminfo.SystemEnv; import javax.servlet.http.HttpServletRequest; @@ -43,10 +50,7 @@ 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.*; import java.util.stream.Collectors; /** @@ -157,7 +161,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ extendType = "2"; tableName = "JCL_ORG_DEPT"; break; - case "jobtitles": + case "jobtitle": extendType = "3"; tableName = "JCL_ORG_JOB"; break; @@ -178,30 +182,25 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ } List infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, ""); List filterList = infoPOList.stream().filter(item -> !exculdeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList()); - List fieldDatas = filterList.stream().map(item -> { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("id", item.getId()); - jsonObject.put("name", item.getFieldNameDesc()); - return jsonObject; - }).collect(Collectors.toList()); - List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault())).map(ExtendInfoPO::getId).collect(Collectors.toList()); + List fieldDatas = filterList.stream().map(item -> FieldTypeTreeParam.builder().id(item.getId()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); + List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault()) && 1 == item.getIsrequired()).map(ExtendInfoPO::getId).collect(Collectors.toList()); returnMaps.put("data", fieldDatas); returnMaps.put("selectedKeys", selectedKeys); return returnMaps; } @Override - public Map getImportForm(String importType, String ids) { + public Map getImportForm(String importType, String columns) { Map returnMap = new HashMap<>(); try { if (StringUtils.isNotBlank(importType)) { switch (importType) { case "company": - returnMap.put("condition", getCompanyImportForm(ids)); + returnMap.put("condition", getCompanyImportForm(columns)); break; case "department": break; - case "jobtitles": + case "jobtitle": break; case "resource": // TODO @@ -225,15 +224,15 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ public Map saveImport(Map params) { String importType = (String) params.get("importType"); String operateType = (String) params.get("operateType"); - String excelfile = (String) params.get("excelfile"); + String excelFile = (String) params.get("excelfile"); if (StringUtils.isNotBlank(importType)) { switch (importType) { case "company": - companyImport(operateType, excelfile, 1L); + companyImport(operateType, excelFile, 1L); break; case "department": break; - case "jobtitles": + case "jobtitle": break; case "resource": // TODO @@ -249,16 +248,16 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ /** * 分部导入表单 * - * @param ids + * @param columns * @return * @throws IOException */ - private List getCompanyImportForm(String ids) throws IOException { + private List getCompanyImportForm(String columns) throws IOException { // 根据选择字段、生成对应的导入模板 - List extendInfosByIds = getExtendInfoMapper().getExtendInfosByIds(DeleteParam.builder().ids(ids).build().getIds()); - List fieldList = extendInfosByIds.stream().map(ExtendInfoPO::getFieldNameDesc).collect(Collectors.toList()); + String[] split = columns.split(","); + List columnList = Arrays.asList(split); List> excelSheetData = new ArrayList<>(); - excelSheetData.add(fieldList); + excelSheetData.add(columnList); String sheetName = "company"; String outPutPath = GCONST.getRootPath() + "hrm" + File.separator + "import" + File.separator + "templet" + File.separator + user.getUID(); XSSFWorkbook sheets = ExcelUtil.genWorkbookV2(excelSheetData, sheetName); @@ -307,7 +306,7 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ itemList = new ArrayList<>(); groupItem = new HashMap<>(); - groupItem.put("title", SystemEnv.getHtmlLabelName(33803, weaver.general.Util.getIntValue(user.getLanguage()))); + groupItem.put("title", SystemEnv.getHtmlLabelName(33803, Util.getIntValue(user.getLanguage()))); groupItem.put("defaultshow", true); List lsPromptLabel = new ArrayList<>(); //提示信息 lsPromptLabel.add(34275); @@ -342,104 +341,160 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ * @param excelFile */ private void companyImport(String operateType, String excelFile, Long extendType) { + Long importHistoryId = saveImportLog("company", operateType); + JclImportHistoryDetailPO historyDetailPO; + + ImageFileManager manager = new ImageFileManager(); + manager.getImageFileInfoById(Util.getIntValue(excelFile)); + XSSFWorkbook workbook; 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; + workbook = new XSSFWorkbook(manager.getInputStream()); + } catch (IOException e) { + throw new RuntimeException(e); + } + // 当前sheet + XSSFSheet sheetAt = workbook.getSheetAt(0); + int lastRow = sheetAt.getLastRowNum(); + List extendInfoPOS = new ArrayList<>(); + + + // 遍历每一行数据 + nextRow: + for (int i = 0; i <= lastRow; i++) { + historyDetailPO = new JclImportHistoryDetailPO(); + historyDetailPO.setPid(importHistoryId); + XSSFRow row = sheetAt.getRow(i); + // 组装待处理数据 + Map map = new HashMap<>(); + Long parentCompanyId = null; + String companyName = ""; + + historyDetailPO.setRowNums(String.valueOf(i + 1)); + for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) { + XSSFCell 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 (infoPO.getIsrequired() == 1 && StringUtils.isBlank(cellValue)) { + // TODO 记录日志 + historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "为必填项"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; } - 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); - String compNo = (String) map.get("comp_no"); - if ("add".equals(operateType)) { - // 自动编号 - compNo = CompServiceImpl.repeatDetermine(compNo); - map.put("comp_no", compNo); - MapperProxyFactory.getProxy(ExtMapper.class).insertExt(ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(map).build()); - } else if ("update".equals(operateType)) { - // 查询对应ID - if (StringUtils.isNotBlank(compNo)) { - if (checkRepeatNo(compNo, extendType, null)) { - - } else { - errMsg.add(compNo + "编号已存在"); + Object reallyValue; + try { + reallyValue = getReallyValue(infoPO, cellValue); + } catch (Exception e) { + historyDetailPO.setOperateDetail(cellValue + "转换失败"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + if (StringUtils.isNotBlank(cellValue) && StringUtils.isBlank(Util.null2String(reallyValue))) { + // TODO 记录日志 + historyDetailPO.setOperateDetail(infoPO.getFieldNameDesc() + "数据转换失败,未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + map.put(infoPO.getFieldName(), reallyValue); + if ("comp_name".equals(infoPO.getFieldName())) { + historyDetailPO.setRelatedName(cellValue); + String[] split = cellValue.split(">"); + if (split.length > 1) { + if (split.length > 8) { + // TODO 记录日志 + historyDetailPO.setOperateDetail("分部层级不能大于10"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue 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 记录日志 + historyDetailPO.setOperateDetail(split[index] + "分部未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; } - - } else { - errMsg.add("编号为空,更新失败"); } } - + map.put("parent_company", parentCompanyId); + companyName = split[split.length - 1]; + map.put("comp_name", companyName); } } - - // 校验、数据交互 - } - - - } catch (IOException e) { - throw new RuntimeException(e); - } catch (JSONException e) { - throw new RuntimeException(e); + // 校验、数据交互 + if (i == 0) { + continue; + } + String compNo = (String) map.get("comp_no"); + Long companyId = MapperProxyFactory.getProxy(CompMapper.class).getIdByNameAndPid(companyName, parentCompanyId == null ? 0 : parentCompanyId); + if ("add".equals(operateType)) { + if (companyId != null) { + historyDetailPO.setOperateDetail("数据已存在"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + continue nextRow; + } + // 自动编号 + compNo = CompServiceImpl.repeatDetermine(compNo); + map.put("comp_no", compNo); + map.put("creator", user.getUID()); + map.put("delete_type", 0); + map.put("create_time", new Date()); + MapperProxyFactory.getProxy(ExtMapper.class).insertExt(ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(map).build()); + historyDetailPO.setOperateDetail("添加成功"); + historyDetailPO.setStatus("1"); + saveImportDetailLog(historyDetailPO); + } else if ("update".equals(operateType)) { + // 查询对应ID + if (StringUtils.isNotBlank(compNo)) { + if (companyId == null) { + historyDetailPO.setOperateDetail(companyName + ":未找到对应数据"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + if (checkRepeatNo(compNo, extendType, companyId)) { + map.put("update_time", new Date()); + MapperProxyFactory.getProxy(ExtMapper.class).updateExt(ExtendInfoParams.builder().id(companyId).tableName("JCL_ORG_COMP").params(map).build()); + historyDetailPO.setOperateDetail("更新成功"); + historyDetailPO.setStatus("1"); + saveImportDetailLog(historyDetailPO); + } else { + historyDetailPO.setOperateDetail(compNo + "编号已存在"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + } else { + historyDetailPO.setOperateDetail("编号为空,更新失败"); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } + } } + } - private String getCellValue(HSSFCell cell) { + /** + * 读取表格文本内容 + * + * @param cell + * @return + */ + private String getCellValue(XSSFCell cell) { String cellValue = ""; if (cell == null) return ""; @@ -468,7 +523,18 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ return cellValue; } - private Object getReallyValue(ExtendInfoPO extendInfo, String cellValue) throws JSONException { + /** + * 转换存入数据库的值 + * + * @param extendInfo + * @param cellValue + * @return + * @throws Exception + */ + private Object getReallyValue(ExtendInfoPO extendInfo, String cellValue) throws Exception { + if (StringUtils.isBlank(cellValue)) { + return null; + } Object object = null; JSONArray jsonArray = JSONObject.parseArray(extendInfo.getCustomValue()); switch (extendInfo.getControlType()) { @@ -489,8 +555,13 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ jsonObject.put("fieldhtmltype", extendInfo.getControlType()); jsonObject.put("type", extendInfo.getBrowserType()); jsonObject.put("fieldvalue", cellValue); - jsonObject.put("dmlurl", SelectOptionParam.getCustomBrowserId(extendInfo.getCustomValue())); - + if ("162".equals(extendInfo.getBrowserType()) || "162".equals(extendInfo.getBrowserType())) { + jsonObject.put("dmlurl", SelectOptionParam.getCustomBrowserId(extendInfo.getCustomValue())); + } else { + jsonObject.put("dmlurl", extendInfo.getBrowserType()); + } + jsonObject.put("fieldid", 0); + object = HrmFieldManager.getReallyFieldvalue(jsonObject); break; case 5: // SELECT @@ -540,5 +611,27 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ return false; } + /** + * 生成记录日志 + * + * @return + */ + private Long saveImportLog(String importType, String operateType) { + JclImportHistoryPO historyPO = JclImportHistoryPO.builder().operator((long) user.getUID()).operateTime(DateUtil.getFullDate()).clientAddress(user.getLoginip()).importType(importType).sourceFrom("excel").operateType(operateType).status("importing").build(); + MapperProxyFactory.getProxy(JclImportHistoryMapper.class).insertHistory(historyPO); + return historyPO.getId(); + } + + /** + * 日志导入详细信息日志 + * + * @param historyDetailPO + */ + private void saveImportDetailLog(JclImportHistoryDetailPO historyDetailPO) { + String detailMsg = "导入第" + historyDetailPO.getRowNums() + "行数据,[" + historyDetailPO.getRelatedName() + "]" + historyDetailPO.getOperateDetail(); + historyDetailPO.setOperateDetail(detailMsg); + MapperProxyFactory.getProxy(JclImportHistoryDetailMapper.class).insertHistoryDetail(historyDetailPO); + } + } diff --git a/src/com/engine/organization/web/ImportCommonController.java b/src/com/engine/organization/web/ImportCommonController.java index 7e780da5..32f9764c 100644 --- a/src/com/engine/organization/web/ImportCommonController.java +++ b/src/com/engine/organization/web/ImportCommonController.java @@ -65,8 +65,21 @@ public class ImportCommonController { 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)); + String columns = (String) map.get("columns"); + return ReturnResult.successed(getImportCommonWrapper(user).getImportForm(importType, columns)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } + + @POST + @Path("/saveImport") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult saveImport(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getImportCommonWrapper(user).saveImport(map)); } 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 2f2975ed..b0975d4a 100644 --- a/src/com/engine/organization/wrapper/ImportCommonWrapper.java +++ b/src/com/engine/organization/wrapper/ImportCommonWrapper.java @@ -38,10 +38,20 @@ public class ImportCommonWrapper extends Service { * 获取导入表单 * * @param importType - * @param ids + * @param columns * @return */ - public Map getImportForm(String importType, String ids) { - return getImportCommonService(user).getImportForm(importType, ids); + public Map getImportForm(String importType, String columns) { + return getImportCommonService(user).getImportForm(importType, columns); + } + + /** + * 导入数据 + * + * @param params + * @return + */ + public Map saveImport(Map params) { + return getImportCommonService(user).saveImport(params); } }