diff --git a/WEB-INF/lib/poi-ooxml-4.0.1.jar b/WEB-INF/lib/poi-ooxml-4.0.1.jar new file mode 100755 index 00000000..282a1a52 Binary files /dev/null and b/WEB-INF/lib/poi-ooxml-4.0.1.jar differ diff --git a/src/com/api/organization/web/ExportCommonController.java b/src/com/api/organization/web/ExportCommonController.java new file mode 100644 index 00000000..1c167ce4 --- /dev/null +++ b/src/com/api/organization/web/ExportCommonController.java @@ -0,0 +1,13 @@ +package com.api.organization.web; + +import javax.ws.rs.Path; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/6/28 + * @Version V1.0 + **/ +@Path("/bs/hrmorganization/common") +public class ExportCommonController extends com.engine.organization.web.ExportCommonController { +} diff --git a/src/com/engine/organization/entity/hrmresource/param/HrmResourceSearchParam.java b/src/com/engine/organization/entity/hrmresource/param/HrmResourceSearchParam.java index 5ac816b4..ecb2bc75 100644 --- a/src/com/engine/organization/entity/hrmresource/param/HrmResourceSearchParam.java +++ b/src/com/engine/organization/entity/hrmresource/param/HrmResourceSearchParam.java @@ -1,5 +1,6 @@ package com.engine.organization.entity.hrmresource.param; +import com.engine.organization.common.BaseQueryParam; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -14,7 +15,7 @@ import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @NoArgsConstructor -public class HrmResourceSearchParam { +public class HrmResourceSearchParam extends BaseQueryParam { /** * 姓名 */ diff --git a/src/com/engine/organization/mapper/resource/ResourceMapper.java b/src/com/engine/organization/mapper/resource/ResourceMapper.java new file mode 100644 index 00000000..7c09c1cd --- /dev/null +++ b/src/com/engine/organization/mapper/resource/ResourceMapper.java @@ -0,0 +1,18 @@ +package com.engine.organization.mapper.resource; + +import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; +import com.engine.organization.entity.hrmresource.po.HrmResourcePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/6/28 + * @Version V1.0 + **/ +public interface ResourceMapper { + + List listAll(@Param("param")HrmResourceSearchParam param); +} diff --git a/src/com/engine/organization/mapper/resource/ResourceMapper.xml b/src/com/engine/organization/mapper/resource/ResourceMapper.xml new file mode 100644 index 00000000..0e452b87 --- /dev/null +++ b/src/com/engine/organization/mapper/resource/ResourceMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + id,last_name,department_id,company_id,mobile,telephone,manager_id + + + + + + + AND last_name like CONCAT('%',#{param.lastName},'%') + + + + + AND last_name like '%'||#{param.lastName}||'%' + + + + + AND last_name like '%'+#{param.lastName}+'%' + + + + + + \ No newline at end of file diff --git a/src/com/engine/organization/mapper/SISLog/SISLogMapper.java b/src/com/engine/organization/mapper/sislog/SISLogMapper.java similarity index 82% rename from src/com/engine/organization/mapper/SISLog/SISLogMapper.java rename to src/com/engine/organization/mapper/sislog/SISLogMapper.java index 55a51ca8..7f85970e 100644 --- a/src/com/engine/organization/mapper/SISLog/SISLogMapper.java +++ b/src/com/engine/organization/mapper/sislog/SISLogMapper.java @@ -1,4 +1,4 @@ -package com.engine.organization.mapper.SISLog; +package com.engine.organization.mapper.sislog; import com.engine.organization.entity.LoggerContext; diff --git a/src/com/engine/organization/mapper/SISLog/SISLogMapper.xml b/src/com/engine/organization/mapper/sislog/SISLogMapper.xml similarity index 96% rename from src/com/engine/organization/mapper/SISLog/SISLogMapper.xml rename to src/com/engine/organization/mapper/sislog/SISLogMapper.xml index f9063cde..9f2b3bd6 100644 --- a/src/com/engine/organization/mapper/SISLog/SISLogMapper.xml +++ b/src/com/engine/organization/mapper/sislog/SISLogMapper.xml @@ -1,6 +1,6 @@ - + diff --git a/src/com/engine/organization/service/ExportCommonService.java b/src/com/engine/organization/service/ExportCommonService.java new file mode 100644 index 00000000..e1cf9b7f --- /dev/null +++ b/src/com/engine/organization/service/ExportCommonService.java @@ -0,0 +1,20 @@ +package com.engine.organization.service; + +import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/6/28 + * @Version V1.0 + **/ +public interface ExportCommonService { + + /** + * 人员导出 + * @param param + * @return + */ + XSSFWorkbook resourceExport(HrmResourceSearchParam param); +} diff --git a/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java new file mode 100644 index 00000000..3ffa5401 --- /dev/null +++ b/src/com/engine/organization/service/impl/ExportCommonServiceImpl.java @@ -0,0 +1,64 @@ +package com.engine.organization.service.impl; + +import com.engine.core.impl.Service; +import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; +import com.engine.organization.entity.hrmresource.po.HrmResourcePO; +import com.engine.organization.mapper.resource.ResourceMapper; +import com.engine.organization.service.ExportCommonService; +import com.engine.organization.util.HrmI18nUtil; +import com.engine.organization.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelUtil; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.util.*; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/6/28 + * @Version V1.0 + **/ +public class ExportCommonServiceImpl extends Service implements ExportCommonService { + + @Override + public XSSFWorkbook resourceExport(HrmResourceSearchParam param) { + + param.setPageSize(null); + param.setCurrent(null); + List hrmResourcePOS = MapperProxyFactory.getProxy(ResourceMapper.class).listAll(param); + if (hrmResourcePOS == null) { + hrmResourcePOS = new ArrayList<>(); + } + // 1.工作簿名称 + String sheetName = HrmI18nUtil.getI18nLabel(85368, "人员档案数据"); + // 2.表头(后面动态获取) + List> excelSheetData = new ArrayList<>(); + + String[] header = { + HrmI18nUtil.getI18nLabel( 93270, "姓名"), + HrmI18nUtil.getI18nLabel( 93272, "部门"), + HrmI18nUtil.getI18nLabel( 93273, "公积金人数"), + HrmI18nUtil.getI18nLabel( 93274, "分部"), + HrmI18nUtil.getI18nLabel( 93275, "移动电话"), + HrmI18nUtil.getI18nLabel( 93278, "办公室电话"), + HrmI18nUtil.getI18nLabel( 93279, "直接上级")}; + excelSheetData.add(Arrays.asList(new Object[]{header})); + + //工作簿数据 + List> rows = new LinkedList<>(); + for (HrmResourcePO po : hrmResourcePOS) { + List row = new LinkedList<>(); + row.add(po.getLastName()); + row.add(po.getDepartmentId()); + row.add(po.getCompanyId()); + row.add(po.getMobile()); + row.add(po.getTelephone()); + row.add(po.getManagerId()); + rows.add(row); + } + excelSheetData.addAll(rows); + 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 8dc22340..49a020f8 100644 --- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java @@ -235,9 +235,12 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic ArrayList rightMenuList = new ArrayList<>(); topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("new").menuIcon("icon-coms-New-Flow").menuName("新建人员").type("BTN_Addnew").build()); topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("import").menuIcon("icon-coms-leading-in").menuName("导入人员").type("BTN_Import").build()); + topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("export").menuIcon("icon-coms02-coms2-export").menuName("导出").type("BTN_Export").build()); btnDatas.put("topMenu", topMenuList); rightMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("new").menuIcon("icon-coms-New-Flow").menuName("新建人员").type("BTN_Addnew").build()); rightMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("import").menuIcon("icon-coms-leading-in").menuName("导入人员").type("BTN_Import").build()); + rightMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("export").menuIcon("icon-coms02-coms2-export").menuName("导出").type("BTN_Export").build()); + rightMenuList.add(MenuBtn.builder().isBatch("0").isTop("0").menuFun("custom").menuIcon("icon-coms-task-list").menuName("显示列定制").type("BTN_COLUMN").build()); btnDatas.put("rightMenu", rightMenuList); return btnDatas; } diff --git a/src/com/engine/organization/util/LogAspect.java b/src/com/engine/organization/util/LogAspect.java index 41be247c..0975c6af 100644 --- a/src/com/engine/organization/util/LogAspect.java +++ b/src/com/engine/organization/util/LogAspect.java @@ -3,7 +3,7 @@ package com.engine.organization.util; import com.engine.organization.annotation.Log; import com.engine.organization.entity.LoggerContext; import com.engine.organization.enums.DeleteTypeEnum; -import com.engine.organization.mapper.SISLog.SISLogMapper; +import com.engine.organization.mapper.sislog.SISLogMapper; import com.engine.organization.util.db.MapperProxyFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/com/engine/organization/web/ExportCommonController.java b/src/com/engine/organization/web/ExportCommonController.java new file mode 100644 index 00000000..a34f49a7 --- /dev/null +++ b/src/com/engine/organization/web/ExportCommonController.java @@ -0,0 +1,99 @@ +package com.engine.organization.web; + +import com.alipay.oceanbase.jdbc.StringUtils; +import com.engine.common.util.ServiceUtil; +import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; +import com.engine.organization.wrapper.ExportCommonWrapper; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.ietf.jgss.GSSContext; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/6/28 + * @Version V1.0 + **/ +public class ExportCommonController { + + private ExportCommonWrapper getExportCommonWrapper(User user) { + return ServiceUtil.getService(ExportCommonWrapper.class,user); + } + + @GET + @Path("/resource/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response resourceExport(@Context HttpServletRequest request, @Context HttpServletResponse response) { + HrmResourceSearchParam param = buildResourceParam(request); + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getExportCommonWrapper(user).resourceExport(param); + String time = LocalDate.now().toString(); + String fileName = "人员导出" + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } + + + + private HrmResourceSearchParam buildResourceParam(HttpServletRequest request) { + HrmResourceSearchParam param = new HrmResourceSearchParam(); + String lastName = request.getParameter("lastName"); + if (StringUtils.isNotBlank(lastName)){ + param.setLastName(lastName); + } + String managerId = request.getParameter("managerId"); + if (StringUtils.isNotBlank(managerId)){ + param.setManagerId(Long.valueOf(managerId)); + } + String companyId = request.getParameter("companyId"); + if (StringUtils.isNotBlank(companyId)){ + param.setCompanyId(Long.valueOf(companyId)); + } + String departmentId = request.getParameter("departmentId"); + if (StringUtils.isNotBlank(departmentId)){ + param.setDepartmentId(Long.valueOf(departmentId)); + } + String mobile = request.getParameter("mobile"); + if (StringUtils.isNotBlank(mobile)){ + param.setMobile(mobile); + } + String telephone = request.getParameter("telephone"); + if (StringUtils.isNotBlank(telephone)){ + param.setTelephone(telephone); + } + String mobileCall = request.getParameter("mobileCall"); + if (StringUtils.isNotBlank(mobileCall)){ + param.setMobileCall(mobileCall); + } + String jobTitle = request.getParameter("jobTitle"); + if (StringUtils.isNotBlank(jobTitle)){ + param.setJobTitle(Long.valueOf(jobTitle)); + } + return param; + } + + +} diff --git a/src/com/engine/organization/wrapper/ExportCommonWrapper.java b/src/com/engine/organization/wrapper/ExportCommonWrapper.java new file mode 100644 index 00000000..df873942 --- /dev/null +++ b/src/com/engine/organization/wrapper/ExportCommonWrapper.java @@ -0,0 +1,26 @@ +package com.engine.organization.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; +import com.engine.organization.service.ExportCommonService; +import com.engine.organization.service.impl.ExportCommonServiceImpl; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.User; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/6/28 + * @Version V1.0 + **/ +public class ExportCommonWrapper extends Service { + + public ExportCommonService getExportCommonService(User user) { + return ServiceUtil.getService(ExportCommonServiceImpl.class,user); + } + + public XSSFWorkbook resourceExport(HrmResourceSearchParam param) { + return getExportCommonService(user).resourceExport(param); + } +}