diff --git a/src/com/engine/organization/entity/hrmresource/vo/HrmResourceVO.java b/src/com/engine/organization/entity/hrmresource/vo/HrmResourceVO.java index aa6869e7..a70dd116 100644 --- a/src/com/engine/organization/entity/hrmresource/vo/HrmResourceVO.java +++ b/src/com/engine/organization/entity/hrmresource/vo/HrmResourceVO.java @@ -16,7 +16,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor -@OrganizationTable(pageId = "c0583f20-f10c-11ec-9947-00e04c680716", +@OrganizationTable(pageId = "959ae985-00e2-11ee-992b-00e04c680716", fields = "t.id," + "t.lastname," + "t.departmentid," + diff --git a/src/com/engine/organization/service/ExportCommonService.java b/src/com/engine/organization/service/ExportCommonService.java index f1aac2a2..43fca88b 100644 --- a/src/com/engine/organization/service/ExportCommonService.java +++ b/src/com/engine/organization/service/ExportCommonService.java @@ -1,8 +1,9 @@ package com.engine.organization.service; -import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -19,4 +20,6 @@ public interface ExportCommonService { * @return */ XSSFWorkbook resourceExport(List ids); + + XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response); } diff --git a/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java index a6d835a8..eed2cebe 100644 --- a/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java @@ -1,7 +1,17 @@ package com.engine.organization.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.api.browser.bean.SearchConditionGroup; +import com.api.browser.bean.SearchConditionItem; +import com.cloudstore.dev.api.service.Service_DevTable; +import com.cloudstore.eccom.constant.WeaBoolAttr; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.core.impl.Service; +import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.hrmresource.vo.HrmResourceVO; +import com.engine.organization.mapper.resource.HrmResourceMapper; import com.engine.organization.mapper.resource.ResourceMapper; import com.engine.organization.service.ExportCommonService; import com.engine.organization.util.HrmI18nUtil; @@ -10,11 +20,13 @@ import com.engine.organization.util.detach.DetachUtil; import com.engine.organization.util.excel.ExcelUtil; import org.apache.commons.lang.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.general.Util; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; import java.util.stream.Collectors; /** @@ -73,5 +85,107 @@ public class ExportCommonServiceImpl extends Service implements ExportCommonServ return ExcelUtil.genWorkbookV2(excelSheetData, sheetName); } + @Override + public XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response) { + List headerList = new ArrayList<>(); + List headerNameList = new ArrayList<>(); + OrganizationWeaTable table = new OrganizationWeaTable<>(user, HrmResourceVO.class); + String sqlWhere = " where 1 = 1 and t.status < 4 and (t.accounttype is null or t.accounttype != 1)"; + // 分权查询 + DetachUtil detachUtil = new DetachUtil(user); + String parentCompanyIds = detachUtil.getJclRoleLevels(); + if (detachUtil.isDETACH()) { + sqlWhere += " and t.subcompanyid1 in(" + parentCompanyIds + ")"; + } + table.setSqlwhere(sqlWhere); + List weaTableColumnList = new ArrayList<>(); + String columns = ""; + List fields = new ArrayList<>(); + HrmResourceServiceImpl hrmResourceService = new HrmResourceServiceImpl(); + List allConditions = hrmResourceService.getAllConditions(); + + + //初次使用,无模板初始值 + columns = "-1_hrm_departmentid,-1_hrm_jobtitle,3_cus_field20,-1_hrm_jobactivity,-1_hrm_lastname,-1_hrm_sex,1_hrm_certificatenum,1_hrm_birthday,-1_hrm_jobcall,-1_cus_field7,1_cus_field18,-1_hrm_mobile,1_hrm_folk,1_hrm_nativeplace,1_hrm_regresidentplace,1_hrm_maritalstatus,1_hrm_policy,1_hrm_educationlevel,1_hrm_degree,1_cus_field8,1_cus_field9,1_cus_field10,1_cus_field11,1_cus_field12,3_hrm_companystartdate,3_hrm_probationenddate,3_hrm_startdate,3_hrm_enddate,1_cus_field14,1_cus_field15,3_cus_field21,-1_hrm_status,-1_cus_field6,3_cus_field19,-1_hrm_workcode"; + + + List columnList = Arrays.asList(columns.split(",")); + BigDecimal decimal = new BigDecimal(100 / columnList.size()); + for (SearchConditionGroup allCondition : allConditions) { + List items = allCondition.getItems(); + for (SearchConditionItem item : items) { + String columnName = item.getDomkey()[0]; + fields.add(hrmResourceService.buildTableSql(columnName) + " as " + hrmResourceService.buildTableSql(columnName).replace(".", "_")); + + String scopeId = columnName.split("_")[0]; + String fieldName = columnName.substring(columnName.lastIndexOf("_") + 1); + WeaTableColumn weaTableColumn = new WeaTableColumn(); + weaTableColumn.setText(MapperProxyFactory.getProxy(HrmResourceMapper.class).queryLabelName(fieldName, scopeId)); + weaTableColumn.setColumn(hrmResourceService.buildTableSql(columnName).replace(".", "_")); + weaTableColumn.setDisplay(columnList.contains(columnName) ? WeaBoolAttr.TRUE : WeaBoolAttr.FALSE); + weaTableColumn.setTransmethod("com.engine.organization.transmethod.HrmResourceTransMethod.getFieldTrueValue"); + weaTableColumn.setOtherpara(columnName); + weaTableColumn.setWidth(decimal.setScale(2, RoundingMode.HALF_UP).doubleValue() + "%"); + if (weaTableColumn.getDisplay().getBoolVal()) { + weaTableColumnList.add(weaTableColumn); + headerList.add(weaTableColumn.getColumn()); + headerNameList.add(weaTableColumn.getText()); + } + } + } + // 增加id字段,跳转人员卡片 + WeaTableColumn weaTableColumn = new WeaTableColumn(); + weaTableColumn.setColumn("id"); + weaTableColumn.setDisplay(WeaBoolAttr.FALSE); + weaTableColumnList.add(weaTableColumn); + fields.add("t.id"); + + // 增加分部字段 + WeaTableColumn weaTableColumn1 = new WeaTableColumn(); + weaTableColumn1.setText("公司(分部)"); + weaTableColumn1.setColumn("subcompanyid1"); + weaTableColumn1.setDisplay(WeaBoolAttr.TRUE); + weaTableColumn1.setTransmethod("com.engine.organization.transmethod.HrmResourceTransMethod.getCompanyName"); + fields.add("t.subcompanyid1"); + headerList.add(0, weaTableColumn1.getColumn()); + headerNameList.add(0, weaTableColumn1.getText()); + weaTableColumnList.add(0, weaTableColumn1); + + + table.setBackfields(StringUtils.join(fields, ",")); + table.setColumns(weaTableColumnList); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + Map resultMap = result.getResultMap(); + String dataKey = Util.null2String(resultMap.get("datas")); + + String getcounts = new Service_DevTable().getcounts(request, response, dataKey); + JSONObject jsonObject = JSON.parseObject(getcounts); + String count = jsonObject.getString("count"); + + String datas = new Service_DevTable().datas(request, response, dataKey, count, "[]", "", "", "1", ""); + jsonObject = JSON.parseObject(datas); + List> datas1 = (List>) jsonObject.get("datas"); + + List> rows = new LinkedList<>(); + for (Map map : datas1) { + List row = new LinkedList<>(); + for (String s : headerList) { + JSONObject o = (JSONObject) map; + String value = o.getString(s + "span"); + row.add(value); + } + rows.add(row); + } + List> excelSheetData = new ArrayList<>(); + + excelSheetData.add(headerNameList); + + excelSheetData.addAll(rows); + String sheetName = HrmI18nUtil.getI18nLabel(85368, "人员档案数据"); + return ExcelUtil.genWorkbookV2(excelSheetData, sheetName); + } + } diff --git a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java index 273c9fd6..1d54b066 100644 --- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java @@ -1125,7 +1125,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic * @param key * @return */ - private String buildTableSql(String key) { + public String buildTableSql(String key) { StringBuilder sb = new StringBuilder(); String[] s = key.split("_"); if (s.length < 3) { diff --git a/src/com/engine/organization/web/ExportCommonController.java b/src/com/engine/organization/web/ExportCommonController.java index f189547f..fdc36803 100644 --- a/src/com/engine/organization/web/ExportCommonController.java +++ b/src/com/engine/organization/web/ExportCommonController.java @@ -49,7 +49,7 @@ public class ExportCommonController { idList = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()); } User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getExportCommonWrapper(user).resourceExport(idList); + XSSFWorkbook workbook = getExportCommonWrapper(user).resourceExport(request, response); String time = LocalDate.now().toString(); String fileName = "人员导出" + time; try { diff --git a/src/com/engine/organization/wrapper/ExportCommonWrapper.java b/src/com/engine/organization/wrapper/ExportCommonWrapper.java index 0b40c757..b0c5fc53 100644 --- a/src/com/engine/organization/wrapper/ExportCommonWrapper.java +++ b/src/com/engine/organization/wrapper/ExportCommonWrapper.java @@ -7,6 +7,8 @@ import com.engine.organization.service.impl.ExportCommonServiceImpl; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -18,10 +20,14 @@ import java.util.List; public class ExportCommonWrapper extends Service { public ExportCommonService getExportCommonService(User user) { - return ServiceUtil.getService(ExportCommonServiceImpl.class,user); + return ServiceUtil.getService(ExportCommonServiceImpl.class, user); } public XSSFWorkbook resourceExport(List ids) { return getExportCommonService(user).resourceExport(ids); } + + public XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response) { + return getExportCommonService(user).resourceExport(request,response); + } }