diff --git a/src/com/engine/jclproduct/entity/bo/EmploymentRecordBo.java b/src/com/engine/jclproduct/entity/bo/EmploymentRecordBo.java index a2c7bbb..69ccdd8 100644 --- a/src/com/engine/jclproduct/entity/bo/EmploymentRecordBo.java +++ b/src/com/engine/jclproduct/entity/bo/EmploymentRecordBo.java @@ -1,8 +1,7 @@ package com.engine.jclproduct.entity.bo; import cn.hutool.core.collection.CollectionUtil; -import com.engine.jclproduct.entity.po.EmploymentRecordPo; -import com.engine.jclproduct.entity.po.HrmresourcePo; +import com.engine.jclproduct.entity.po.*; import com.engine.jclproduct.utils.EmploymentUtil; import weaver.common.DateUtil; @@ -51,12 +50,58 @@ public class EmploymentRecordBo { ).collect(Collectors.toList()); } + public static List buildOrganizationRecordPo(List subCompanyPos, List departmentPos) { + List organizationRecordPos = new ArrayList<>(); + + if (CollectionUtil.isNotEmpty(subCompanyPos)){ + subCompanyPos.forEach(e -> organizationRecordPos.add(setOrganizationRecordPo(e,null,0))); + } + + if (CollectionUtil.isNotEmpty(departmentPos)) { + departmentPos.forEach(e -> organizationRecordPos.add(setOrganizationRecordPo(null,e,1))); + } + + return organizationRecordPos; + } + + + public static OrganizationRecordPo setOrganizationRecordPo(SubCompanyPo sub,DepartmentPo dept,Integer type) { + String currentDate = DateUtil.getCurrentDate(); + if (type == 0) { + return OrganizationRecordPo.builder() + .orgStatus(sub.getCanceled() == 1 ? 1 : 0) + .startDate(currentDate) + .stopDate("9999-12-31") + .oId(sub.getSubcompanyId()) + .oType(0) + .oName(sub.getSubcompanyName()) + .oParentId(sub.getSupsubcomId()) + .changeType(sub.getCanceled() == 1 ? 2 : 0) + .showorder(sub.getShoworder()) + .organizationCode(sub.getSubcompanyCode()) + .build(); + }else { + return OrganizationRecordPo.builder() + .orgStatus(dept.getCanceled() == 1 ? 1 : 0) + .startDate(currentDate) + .stopDate("9999-12-31") + .oId(dept.getSubcompanyId()) + .oType(1) + .oName(dept.getDepartmentmark()) + .oParentId(dept.getSupdepId()) + .oChargeId(dept.getBmfzr()) + .changeType(dept.getCanceled() == 1 ? 2 : 0) + .showorder(dept.getShoworder()) + .organizationCode(dept.getDepartmentCode()) + .build(); + } + + } public static EmploymentRecordPo setEmploymentRecordPo(HrmresourcePo h){ Map map = EmploymentUtil.dateSplitExample(h.getCompanyStartDate()); //处理其他参数 - return EmploymentRecordPo.builder() .userId(h.getUserId()) .workcode(h.getWorkcode()) diff --git a/src/com/engine/jclproduct/entity/po/OrganizationRecordPo.java b/src/com/engine/jclproduct/entity/po/OrganizationRecordPo.java new file mode 100644 index 0000000..a01f1e0 --- /dev/null +++ b/src/com/engine/jclproduct/entity/po/OrganizationRecordPo.java @@ -0,0 +1,47 @@ +package com.engine.jclproduct.entity.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author liang.cheng + * @Date 2024/11/8 3:04 PM + * @Description: TODO + * @Version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrganizationRecordPo { + + private Integer orgStatus; + + private String startDate; + + private String stopDate; + + private Integer oId; + + private Integer oType; + + private String oName; + + private Integer oParentId; + + private String oChargeId; + + private Integer changeType; + + private String newName; + + private Integer newParentId; + + private String newOChargeId; + + private float showorder; + + private String organizationCode; +} diff --git a/src/com/engine/jclproduct/entity/vo/TimeSubCompanyVo.java b/src/com/engine/jclproduct/entity/vo/TimeSubCompanyVo.java new file mode 100644 index 0000000..85b6784 --- /dev/null +++ b/src/com/engine/jclproduct/entity/vo/TimeSubCompanyVo.java @@ -0,0 +1,76 @@ +package com.engine.jclproduct.entity.vo; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.jclproduct.annotation.WeaverTable; +import com.engine.jclproduct.annotation.WeaverTableColumn; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author liang.cheng + * @Date 2024/10/25 2:22 PM + * @Description: + * @Version 1.0 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@WeaverTable(pageId = "ab83519e-1df8-48a0-9c4b-4ba60aa69c5e", + fields = "t.id," + + "t.orgStatus," + + "t.organizationCode," + + "t.oName," + + "t.oParentId," + + "t.showorder", + fromSql = "FROM uf_orgChange t where oType = 0", + orderby = "showorder", + sortway = "asc", + primarykey = "id", + tableType = WeaTableType.NONE +) +public class TimeSubCompanyVo { + + /** + * 主键 + */ + @WeaverTableColumn(column = "id",text = "序号", display = false) + private Integer id; + + /** + * 状态 + */ + @WeaverTableColumn( text = "状态", width = "10%", column = "orgStatus",transmethod = "") + private String orgStatus; + + /** + * 分部编码 + */ + @WeaverTableColumn( text = "分部编码", width = "10%", column = "organizationCode") + private String organizationCode; + + /** + * 分部名称 + */ + @WeaverTableColumn( text = "分部名称", width = "10%", column = "oName") + private String oName; + + /** + * 上级分部 + */ + @WeaverTableColumn( text = "上级分部", width = "10%", column = "oParentId",transmethod = "com.engine.jclproduct.transmethod.EmReportTransMethod.subCompanyName") + private String oParentId; + + /** + * 显示顺序 + */ + @WeaverTableColumn( text = "显示顺序", width = "10%", column = "showorder") + private String showorder; + + + + +} diff --git a/src/com/engine/jclproduct/service/EmployeeRecordReportService.java b/src/com/engine/jclproduct/service/EmployeeRecordReportService.java index 0ddb401..e54769e 100644 --- a/src/com/engine/jclproduct/service/EmployeeRecordReportService.java +++ b/src/com/engine/jclproduct/service/EmployeeRecordReportService.java @@ -75,4 +75,13 @@ public interface EmployeeRecordReportService { * @return: org.apache.poi.xssf.usermodel.XSSFWorkbook */ XSSFWorkbook reportExport(Map params); + + /** + * @Description: 组织(总) + * @Author: liang.cheng + * @Date: 2024/11/8 4:16 PM + * @param: [params] + * @return: java.util.Map + */ + Map orgReport(Map params); } diff --git a/src/com/engine/jclproduct/service/impl/EmployeeRecordReportServiceImpl.java b/src/com/engine/jclproduct/service/impl/EmployeeRecordReportServiceImpl.java index 5e24190..3764b94 100644 --- a/src/com/engine/jclproduct/service/impl/EmployeeRecordReportServiceImpl.java +++ b/src/com/engine/jclproduct/service/impl/EmployeeRecordReportServiceImpl.java @@ -5,10 +5,7 @@ import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.core.impl.Service; import com.engine.jclproduct.component.WeaverWeaTable; import com.engine.jclproduct.entity.param.TransferParam; -import com.engine.jclproduct.entity.vo.CaluResourceVo; -import com.engine.jclproduct.entity.vo.LeaveResourceVo; -import com.engine.jclproduct.entity.vo.TimeResourceVo; -import com.engine.jclproduct.entity.vo.TransferResourceVo; +import com.engine.jclproduct.entity.vo.*; import com.engine.jclproduct.service.EmployeeRecordReportService; import com.engine.jclproduct.utils.EmploymentUtil; import com.engine.jclproduct.utils.ExcelUtil; @@ -62,7 +59,6 @@ public class EmployeeRecordReportServiceImpl extends Service implements Employee WeaverWeaTable table = new WeaverWeaTable<>(user, TimeResourceVo.class); String sqlWhere = buildtimeResoureceSql(params); - //sqlWhere += " order by userid asc"; table.setSqlwhere(sqlWhere); WeaResultMsg result = new WeaResultMsg(false); result.putAll(table.makeDataResult()); @@ -218,6 +214,36 @@ public class EmployeeRecordReportServiceImpl extends Service implements Employee return ExcelUtil.genWorkbookV2(excelSheetData, sheetName); } + @Override + public Map orgReport(Map params) { + Map result = new HashMap<>(8); + String selectedKey = Util.null2String(params.get("selectedKey")); + switch (selectedKey) { + case "0": + result = timeOrganization(params); + break; + case "1": + result = leaveResourece(params); + break; + default: + break; + } + + return result; + } + + private Map timeOrganization(Map params) { + Map resultMap = new HashMap<>(8); + WeaverWeaTable table = new WeaverWeaTable<>(user, TimeSubCompanyVo.class); +// String sqlWhere = buildtimeResoureceSql(params); +// table.setSqlwhere(sqlWhere); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + resultMap.putAll(result.getResultMap()); + return resultMap; + } + private String buildtransferResoureceSql(Map params) { String pointValue = Util.null2String(params.get("pointValue")); String startDate = Util.null2String(params.get("startDate")); diff --git a/src/com/engine/jclproduct/service/impl/EmploymentRecordServiceImpl.java b/src/com/engine/jclproduct/service/impl/EmploymentRecordServiceImpl.java index 26dc102..1459d2a 100644 --- a/src/com/engine/jclproduct/service/impl/EmploymentRecordServiceImpl.java +++ b/src/com/engine/jclproduct/service/impl/EmploymentRecordServiceImpl.java @@ -2,8 +2,7 @@ package com.engine.jclproduct.service.impl; import com.engine.core.impl.Service; import com.engine.jclproduct.entity.bo.EmploymentRecordBo; -import com.engine.jclproduct.entity.po.EmploymentRecordPo; -import com.engine.jclproduct.entity.po.HrmresourcePo; +import com.engine.jclproduct.entity.po.*; import com.engine.jclproduct.service.EmploymentRecordService; import com.engine.jclproduct.utils.EmploymentUtil; import com.weaver.file.ConfigOperator; @@ -71,7 +70,7 @@ public class EmploymentRecordServiceImpl extends Service implements EmploymentRe @Override public Map initOrganization() { - Map map = new HashMap<>(); + Map map = new HashMap<>(8); //1.任职记录表初始化数据 只执行一次 RecordSet rs = new RecordSet(); rs.executeQuery("select count(1) as num from uf_orgChange"); @@ -83,13 +82,24 @@ public class EmploymentRecordServiceImpl extends Service implements EmploymentRe } //1.人力资源分部中间表 - + List subCompany = EmploymentUtil.getSubCompany(); + subCompany.forEach(e -> rs.executeUpdate("insert into uf_hrmsubcompany(subcompanyId,subcompanyName,companyId,supsubcomId,showorder,canceled,subcompanyCode) values(?,?,?,?,?,?,?)",e.getSubcompanyId(), + e.getSubcompanyName(),e.getCompanyId(),e.getSupsubcomId(),e.getShoworder(),e.getCanceled(),e.getSubcompanyCode())); + map.put("msg1","人力资源分部中间表初始化完成,共"+subCompany.size()+"条数据"); //2.人力资源部门中间表 + List department = EmploymentUtil.getDepartment(); + department.forEach(e -> rs.executeUpdate("insert into uf_hrmdepartment(departmentId,departmentmark,subcompanyId,supdepId,showorder,canceled,departmentCode,bmfzr) values(?,?,?,?,?,?,?,?)",e.getDepartmentId(), + e.getDepartmentmark(),e.getSubcompanyId(),e.getSupdepId(),e.getShoworder(),e.getCanceled(),e.getDepartmentCode(),e.getBmfzr())); + map.put("msg2","人力资源部门中间表初始化完成,共"+department.size()+"条数据"); //3.组织变更记录表 + List organizationRecordPos = EmploymentRecordBo.buildOrganizationRecordPo(subCompany, department); + organizationRecordPos.forEach(e -> rs.executeUpdate("insert into uf_orgChange(orgStatus,startDate,stopDate,oId,oType,oName,oParentId,oChargeId,changeType,showorder,organizationCode) values(?,?,?,?,?,?,?,?,?,?,?)",e.getOrgStatus(), + e.getStartDate(),e.getStopDate(),e.getOId(),e.getOType(),e.getOName(),e.getOParentId(),e.getOChargeId(),e.getChangeType(),e.getShoworder(),e.getOrganizationCode())); + map.put("msg3","组织变更记录表初始化完成,共"+organizationRecordPos.size()+"条数据"); return map; } diff --git a/src/com/engine/jclproduct/utils/EmploymentUtil.java b/src/com/engine/jclproduct/utils/EmploymentUtil.java index 88ed01f..570dd46 100644 --- a/src/com/engine/jclproduct/utils/EmploymentUtil.java +++ b/src/com/engine/jclproduct/utils/EmploymentUtil.java @@ -106,7 +106,7 @@ public class EmploymentUtil { public static List getSubCompany() { List subCompanyPoList = new ArrayList<>(); RecordSet rs = new RecordSet(); - rs.executeQuery("select id,subcompanyname,companyid,supsubcomid,showorder,canceled,subcompanycode from hrmsubcompany"); + rs.executeQuery("select id,subcompanyname,companyid,supsubcomid,showorder,canceled,subcompanycode from hrmsubcompany order by showorder asc"); while (rs.next()) { subCompanyPoList.add(SubCompanyPo.builder() .subcompanyId(Util.getIntValue(rs.getString("id"))) @@ -130,7 +130,7 @@ public class EmploymentUtil { List departmentPoList = new ArrayList<>(); RecordSet rs = new RecordSet(); rs.executeQuery("select a.id,departmentmark,subcompanyid1,supdepid,showorder,canceled,departmentcode,b.bmfzr from hrmdepartment a\n" + - " left join hrmdepartmentdefined b on a.id = b.deptid"); + " left join hrmdepartmentdefined b on a.id = b.deptid order by showorder asc"); while (rs.next()) { departmentPoList.add(DepartmentPo.builder() .departmentId(Util.getIntValue(rs.getString("id"))) diff --git a/src/com/engine/jclproduct/web/EmployeeRecordReportAction.java b/src/com/engine/jclproduct/web/EmployeeRecordReportAction.java index b45d4f0..3d786d3 100644 --- a/src/com/engine/jclproduct/web/EmployeeRecordReportAction.java +++ b/src/com/engine/jclproduct/web/EmployeeRecordReportAction.java @@ -53,6 +53,8 @@ public class EmployeeRecordReportAction { return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect); } + + @GET @Path("/employee/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) @@ -73,4 +75,20 @@ public class EmployeeRecordReportAction { response.setContentType("application/octet-stream"); return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } + + @GET + @Path("/record/organization") + @Produces(MediaType.TEXT_PLAIN) + public String orgReport(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map data = new HashMap<>(8); + try { + User user = HrmUserVarify.getUser(request, response); + data.put("datas",getService(user).orgReport(ParamUtil.request2Map(request))); + data.put("api_status", true); + } catch (Exception e) { + data.put("api_status", false); + data.put("msg", "catch exception : " + e.getMessage()); + } + return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect); + } }