From 8a3885db760b30a282720a011bc16e2a76838fbe Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 7 Aug 2023 17:38:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=8A=A8=E6=80=81=E5=88=97?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/department/bo/DepartmentBO.java | 7 +- .../service/ExportCommonService.java | 14 +- .../service/impl/ExportCommonServiceImpl.java | 135 +++++++++++++++++- .../service/impl/HrmResourceServiceImpl.java | 4 +- .../web/ExportCommonController.java | 11 +- .../wrapper/ExportCommonWrapper.java | 6 + 6 files changed, 156 insertions(+), 21 deletions(-) diff --git a/src/com/engine/organization/entity/department/bo/DepartmentBO.java b/src/com/engine/organization/entity/department/bo/DepartmentBO.java index 8d3a107c..d2ecf751 100644 --- a/src/com/engine/organization/entity/department/bo/DepartmentBO.java +++ b/src/com/engine/organization/entity/department/bo/DepartmentBO.java @@ -33,11 +33,10 @@ public class DepartmentBO { public static List buildDeptDTOShowNames(Collection list) { SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); DepartmentComInfo departmentComInfo = new DepartmentComInfo(); - return list.stream().map(e -> { - e.setSubCompanyName(0 == e.getSubCompanyId1() ? "" : subCompanyComInfo.getSubCompanyname(Util.null2String(e.getSubCompanyId1()))); - e.setSupDepName(0 == e.getSupDepId() ? "" : departmentComInfo.getDepartmentname(Util.null2String(e.getSupDepId()))); + return list.stream().peek(e -> { + e.setSubCompanyName((null == e.getSubCompanyId1() || 0 == e.getSubCompanyId1()) ? "" : subCompanyComInfo.getSubCompanyname(Util.null2String(e.getSubCompanyId1()))); + e.setSupDepName((null == e.getSupDepId() || 0 == e.getSupDepId()) ? "" : departmentComInfo.getDepartmentname(Util.null2String(e.getSupDepId()))); e.setBmfzr(getEmployeeNameById(e.getId())); - return e; } ).collect(Collectors.toList()); } diff --git a/src/com/engine/organization/service/ExportCommonService.java b/src/com/engine/organization/service/ExportCommonService.java index f1aac2a2..19270ebe 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,15 @@ public interface ExportCommonService { * @return */ XSSFWorkbook resourceExport(List ids); + + + /** + * 花名册台账动态列Excel导出 + * + * @param request request + * @param response response + * @param ids 选择批量导出的人员ID + * @return + */ + XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response, String ids); } diff --git a/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java index 9e32e22e..d1134adf 100644 --- a/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java @@ -1,7 +1,18 @@ 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.po.SearchTemplatePO; 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 +21,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; /** @@ -74,5 +87,119 @@ public class ExportCommonServiceImpl extends Service implements ExportCommonServ return ExcelUtil.genWorkbookV2(excelSheetData, sheetName); } + @Override + public XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response, String ids) { + 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 + ")"; + } + + if(StringUtils.isNotBlank(ids)){ + sqlWhere += " and t.id in(" + ids + ")"; + } + + table.setSqlwhere(sqlWhere); + List weaTableColumnList = new ArrayList<>(); + List fields = new ArrayList<>(); + HrmResourceServiceImpl hrmResourceService = new HrmResourceServiceImpl(); + List allConditions = hrmResourceService.getAllConditions(); + + List columnList; + + // 查询当前台账定制列 + SearchTemplatePO usedCustomTemplate = MapperProxyFactory.getProxy(HrmResourceMapper.class).getUsedCustomTemplateByUser(user.getUID()); + if (null == usedCustomTemplate) { + // 默认列定制 + String selectKeys = "-1_hrm_lastname,-1_hrm_departmentid,-1_hrm_jobtitle,-1_hrm_mobile,-1_hrm_telephone,-1_hrm_managerid"; + columnList = Arrays.asList(selectKeys.split(",")); + } else { + columnList = hrmResourceService.getSelectKeys(usedCustomTemplate); + } + + + + 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(Util.formatMultiLangForExpCustomLabel(value, String.valueOf(user.getLanguage()))); + } + 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 592d1984..f5cfe62e 100644 --- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java @@ -1175,7 +1175,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) { @@ -1242,7 +1242,7 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic * @param searchTemplatePO * @return */ - private List getSelectKeys(SearchTemplatePO searchTemplatePO) { + public List getSelectKeys(SearchTemplatePO searchTemplatePO) { List selectKeys = new ArrayList<>(); String basicFields = searchTemplatePO.getBasicFields(); String personalFields = searchTemplatePO.getPersonalFields(); diff --git a/src/com/engine/organization/web/ExportCommonController.java b/src/com/engine/organization/web/ExportCommonController.java index f189547f..51ad74a6 100644 --- a/src/com/engine/organization/web/ExportCommonController.java +++ b/src/com/engine/organization/web/ExportCommonController.java @@ -21,10 +21,6 @@ import javax.ws.rs.core.StreamingOutput; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; /** * @Author weaver_cl @@ -43,13 +39,8 @@ public class ExportCommonController { @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response resourceExport(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("ids") String ids) { - //HrmResourceSearchParam param = buildResourceParam(request); - List idList = new ArrayList<>(); - if (StringUtils.isNotBlank(ids)){ - 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, ids); 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..ba7d65dc 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; /** @@ -24,4 +26,8 @@ public class ExportCommonWrapper extends Service { public XSSFWorkbook resourceExport(List ids) { return getExportCommonService(user).resourceExport(ids); } + + public XSSFWorkbook resourceExport(HttpServletRequest request, HttpServletResponse response, String ids) { + return getExportCommonService(user).resourceExport(request, response, ids); + } }