From 62d0ed362120232e2e2a6fea5a414edaf19a4718 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Thu, 28 Dec 2023 15:04:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4=E6=A8=A1=E5=9D=97=E4=B8=80?= =?UTF-8?q?=E7=9B=B4=E6=97=A5=E5=8E=86=E6=8E=92=E7=8F=AD=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=8F=AD=E6=AC=A1=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/WorkRulesController.java | 13 + .../web/ReportCollectController.java | 13 - .../web/ReportExportController.java | 14 - .../exception/CustomizeRunTimeException.java | 2 +- .../service/WorkRulesService.java | 21 + .../service/impl/WorkRulesServiceImpl.java | 64 +++ .../util/ExceptionUtil.java | 2 +- .../util/ResponseResult.java | 14 +- .../web/WorkRulesController.java | 42 ++ .../thinktrans/entity/PersonnelSizeTop.java | 26 -- .../thinktrans/entity/ReportChildrenData.java | 24 - .../thinktrans/entity/ReportColumns.java | 25 -- .../entity/param/PersonnelSizeTopParam.java | 24 - .../entity/param/TendencyReportParam.java | 26 -- .../entity/vo/TendencyReportVO.java | 28 -- .../service/CubeRecordDataService.java | 21 - .../service/ReportCollectService.java | 52 --- .../service/ReportExportService.java | 43 -- .../impl/CubeRecordDataServiceImpl.java | 107 ----- .../impl/ReportCollectServiceImpl.java | 418 ------------------ .../service/impl/ReportExportServiceImpl.java | 113 ----- .../thinktrans/util/CommonDateUtil.java | 116 ----- src/com/engine/thinktrans/util/ExcelUtil.java | 109 ----- .../engine/thinktrans/util/OperateUtil.java | 30 -- .../web/ReportCollectController.java | 73 --- .../web/ReportExportController.java | 103 ----- src/test/MainTest.java | 33 -- .../thinktrans/cron/DimissionCronJob.java | 43 -- 28 files changed, 148 insertions(+), 1451 deletions(-) create mode 100644 src/com/api/jclattendance/web/WorkRulesController.java delete mode 100644 src/com/api/thinktrans/web/ReportCollectController.java delete mode 100644 src/com/api/thinktrans/web/ReportExportController.java rename src/com/engine/{thinktrans => jclattendance}/exception/CustomizeRunTimeException.java (91%) create mode 100644 src/com/engine/jclattendance/service/WorkRulesService.java create mode 100644 src/com/engine/jclattendance/service/impl/WorkRulesServiceImpl.java rename src/com/engine/{thinktrans => jclattendance}/util/ExceptionUtil.java (90%) rename src/com/engine/{thinktrans => jclattendance}/util/ResponseResult.java (94%) create mode 100644 src/com/engine/jclattendance/web/WorkRulesController.java delete mode 100644 src/com/engine/thinktrans/entity/PersonnelSizeTop.java delete mode 100644 src/com/engine/thinktrans/entity/ReportChildrenData.java delete mode 100644 src/com/engine/thinktrans/entity/ReportColumns.java delete mode 100644 src/com/engine/thinktrans/entity/param/PersonnelSizeTopParam.java delete mode 100644 src/com/engine/thinktrans/entity/param/TendencyReportParam.java delete mode 100644 src/com/engine/thinktrans/entity/vo/TendencyReportVO.java delete mode 100644 src/com/engine/thinktrans/service/CubeRecordDataService.java delete mode 100644 src/com/engine/thinktrans/service/ReportCollectService.java delete mode 100644 src/com/engine/thinktrans/service/ReportExportService.java delete mode 100644 src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java delete mode 100644 src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java delete mode 100644 src/com/engine/thinktrans/service/impl/ReportExportServiceImpl.java delete mode 100644 src/com/engine/thinktrans/util/CommonDateUtil.java delete mode 100644 src/com/engine/thinktrans/util/ExcelUtil.java delete mode 100644 src/com/engine/thinktrans/util/OperateUtil.java delete mode 100644 src/com/engine/thinktrans/web/ReportCollectController.java delete mode 100644 src/com/engine/thinktrans/web/ReportExportController.java delete mode 100644 src/test/MainTest.java delete mode 100644 src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java diff --git a/src/com/api/jclattendance/web/WorkRulesController.java b/src/com/api/jclattendance/web/WorkRulesController.java new file mode 100644 index 0000000..dce37e2 --- /dev/null +++ b/src/com/api/jclattendance/web/WorkRulesController.java @@ -0,0 +1,13 @@ +package com.api.jclattendance.web; + +import javax.ws.rs.Path; + +/** + * @Author liang.cheng + * @Date 2023/12/26 6:52 PM + * @Description: 班次列表 + * @Version 1.0 + */ +@Path("/bs/jcl/workrules") +public class WorkRulesController extends com.engine.jclattendance.web.WorkRulesController{ +} diff --git a/src/com/api/thinktrans/web/ReportCollectController.java b/src/com/api/thinktrans/web/ReportCollectController.java deleted file mode 100644 index e9307b8..0000000 --- a/src/com/api/thinktrans/web/ReportCollectController.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.api.thinktrans.web; - -import javax.ws.rs.Path; - -/** - * @Author liang.cheng - * @Date 2023/11/16 10:41 AM - * @Description: 报表汇总 - * @Version 1.0 - */ -@Path("/thinktrans/report") -public class ReportCollectController extends com.engine.thinktrans.web.ReportCollectController { -} diff --git a/src/com/api/thinktrans/web/ReportExportController.java b/src/com/api/thinktrans/web/ReportExportController.java deleted file mode 100644 index 340ce0f..0000000 --- a/src/com/api/thinktrans/web/ReportExportController.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.api.thinktrans.web; - -import javax.ws.rs.Path; - -/** - * @Author liang.cheng - * @Date 2023/11/17 1:57 PM - * @Description: TODO - * @Version 1.0 - */ - -@Path("/thinktrans/common") -public class ReportExportController extends com.engine.thinktrans.web.ReportExportController { -} diff --git a/src/com/engine/thinktrans/exception/CustomizeRunTimeException.java b/src/com/engine/jclattendance/exception/CustomizeRunTimeException.java similarity index 91% rename from src/com/engine/thinktrans/exception/CustomizeRunTimeException.java rename to src/com/engine/jclattendance/exception/CustomizeRunTimeException.java index 98ae103..5aced3c 100644 --- a/src/com/engine/thinktrans/exception/CustomizeRunTimeException.java +++ b/src/com/engine/jclattendance/exception/CustomizeRunTimeException.java @@ -1,4 +1,4 @@ -package com.engine.thinktrans.exception; +package com.engine.jclattendance.exception; /** * @Author liang.cheng diff --git a/src/com/engine/jclattendance/service/WorkRulesService.java b/src/com/engine/jclattendance/service/WorkRulesService.java new file mode 100644 index 0000000..f619a45 --- /dev/null +++ b/src/com/engine/jclattendance/service/WorkRulesService.java @@ -0,0 +1,21 @@ +package com.engine.jclattendance.service; + +import java.util.Map; + +/** + * @Author liang.cheng + * @Date 2023/12/26 6:53 PM + * @Description: TODO + * @Version 1.0 + */ +public interface WorkRulesService { + + /** + * @Description: 班次列表 + * @Author: liang.cheng + * @Date: 2023/12/26 7:18 PM + * @param: [resourceIds] + * @return: java.lang.String + */ + Map getWorkRulesList(String resourceIds); +} diff --git a/src/com/engine/jclattendance/service/impl/WorkRulesServiceImpl.java b/src/com/engine/jclattendance/service/impl/WorkRulesServiceImpl.java new file mode 100644 index 0000000..bb6f585 --- /dev/null +++ b/src/com/engine/jclattendance/service/impl/WorkRulesServiceImpl.java @@ -0,0 +1,64 @@ +package com.engine.jclattendance.service.impl; + +import com.cloudstore.eccom.constant.WeaBoolAttr; +import com.cloudstore.eccom.pc.table.WeaTable; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.core.impl.Service; +import com.engine.jclattendance.service.WorkRulesService; +import weaver.conn.RecordSet; +import weaver.conn.constant.DBConstant; +import weaver.general.PageIdConst; +import weaver.systeminfo.SystemEnv; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @Author liang.cheng + * @Date 2023/12/26 6:54 PM + * @Description: TODO + * @Version 1.0 + */ +public class WorkRulesServiceImpl extends Service implements WorkRulesService { + @Override + public Map getWorkRulesList(String resourceIds) { + Map resultMap = new HashMap<>(4); + + WeaTable table = new WeaTable(); + String pageId = "ba1c29c23a8a46d9acff1d2ee4ff5fb3"; + table.setPageID(pageId); + table.setPageUID(String.format("%s_%s",pageId,user.getUID())); + String pageSize = PageIdConst.getPageSize(pageId, user.getUID()); + table.setPagesize(pageSize); + RecordSet rs=new RecordSet(); + String fields = "t.id, t.mc,t.jc,t.ys,CONCAT(kssj, '-', jssj) as bcsj"; + if(DBConstant.DB_TYPE_SQLSERVER.equalsIgnoreCase(rs.getDBType())){ + fields = "t.id, t.mc,t.jc,t.ys,kssj + '-' + jssj as bcsj"; + } + table.setBackfields(fields); + + String fromSql = " from uf_jcl_kq_bcxx t"; + table.setSqlform(fromSql); + + String sqlWhere = " where 1=1 and t.attendance_organization in ("+resourceIds+")"; + table.setSqlwhere(sqlWhere); + + table.setSqlprimarykey("id"); + table.getColumns().add(new WeaTableColumn("id").setDisplay(WeaBoolAttr.FALSE)); + table.getColumns().add(new WeaTableColumn("20%", "班次名称", "mc")); + table.getColumns().add(new WeaTableColumn("20%", "简称", "jc")); + table.getColumns().add(new WeaTableColumn("20%", "颜色", "ys")); + table.getColumns().add(new WeaTableColumn("40%", "班次时间", "bcsj")); + + table.setTableType(WeaTableType.RADIO); + + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + resultMap.putAll(result.getResultMap()); + return resultMap; + } +} diff --git a/src/com/engine/thinktrans/util/ExceptionUtil.java b/src/com/engine/jclattendance/util/ExceptionUtil.java similarity index 90% rename from src/com/engine/thinktrans/util/ExceptionUtil.java rename to src/com/engine/jclattendance/util/ExceptionUtil.java index b52bdc7..71bc58e 100644 --- a/src/com/engine/thinktrans/util/ExceptionUtil.java +++ b/src/com/engine/jclattendance/util/ExceptionUtil.java @@ -1,4 +1,4 @@ -package com.engine.thinktrans.util; +package com.engine.jclattendance.util; /** * @Author liang.cheng diff --git a/src/com/engine/thinktrans/util/ResponseResult.java b/src/com/engine/jclattendance/util/ResponseResult.java similarity index 94% rename from src/com/engine/thinktrans/util/ResponseResult.java rename to src/com/engine/jclattendance/util/ResponseResult.java index 344345d..eacb3ed 100644 --- a/src/com/engine/thinktrans/util/ResponseResult.java +++ b/src/com/engine/jclattendance/util/ResponseResult.java @@ -1,12 +1,10 @@ -package com.engine.thinktrans.util; - +package com.engine.jclattendance.util; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; - import com.engine.core.exception.ECException; -import com.engine.thinktrans.exception.CustomizeRunTimeException; +import com.engine.jclattendance.exception.CustomizeRunTimeException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; @@ -141,7 +139,7 @@ public class ResponseResult { */ private String Ok() { Map apidatas = new HashMap<>(); - apidatas.put("status", true); + apidatas.put("api_status", true); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); } @@ -151,7 +149,7 @@ public class ResponseResult { */ private String Ok(R r) { Map apidatas = new HashMap<>(); - apidatas.put("status", true); + apidatas.put("api_status", true); apidatas.put("data", r); String success = getJsonString(apidatas); if (isLog) { @@ -166,7 +164,7 @@ public class ResponseResult { */ private static String Error(String message) { Map apidatas = new HashMap<>(); - apidatas.put("status", false); + apidatas.put("api_status", false); apidatas.put("errormsg", message); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); } @@ -177,7 +175,7 @@ public class ResponseResult { */ private static String Error(String message, Exception e) { Map apidatas = new HashMap<>(); - apidatas.put("status", false); + apidatas.put("api_status", false); apidatas.put("errormsg", message); apidatas.put("error", e.getMessage()); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); diff --git a/src/com/engine/jclattendance/web/WorkRulesController.java b/src/com/engine/jclattendance/web/WorkRulesController.java new file mode 100644 index 0000000..44fbbb9 --- /dev/null +++ b/src/com/engine/jclattendance/web/WorkRulesController.java @@ -0,0 +1,42 @@ +package com.engine.jclattendance.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.jclattendance.service.WorkRulesService; +import com.engine.jclattendance.service.impl.WorkRulesServiceImpl; +import com.engine.jclattendance.util.ResponseResult; +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.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @Author liang.cheng + * @Date 2023/12/26 6:52 PM + * @Description: TODO + * @Version 1.0 + */ +public class WorkRulesController { + + private WorkRulesService getReportCollectService(User user) { + return ServiceUtil.getService(WorkRulesServiceImpl.class,user); + } + + + @GET + @Path("/list") + @Produces(MediaType.APPLICATION_JSON) + public String getWorkRulesList(@Context HttpServletRequest request, @Context HttpServletResponse response, + @QueryParam("resourceIds") String resourceIds) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getReportCollectService(user) :: getWorkRulesList,resourceIds); + } + +} diff --git a/src/com/engine/thinktrans/entity/PersonnelSizeTop.java b/src/com/engine/thinktrans/entity/PersonnelSizeTop.java deleted file mode 100644 index ef0e734..0000000 --- a/src/com/engine/thinktrans/entity/PersonnelSizeTop.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.engine.thinktrans.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author liang.cheng - * @Date 2023/11/22 2:32 PM - * @Description: TODO - * @Version 1.0 - */ - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class PersonnelSizeTop { - - private String title; - - private T count; - - private String color; -} diff --git a/src/com/engine/thinktrans/entity/ReportChildrenData.java b/src/com/engine/thinktrans/entity/ReportChildrenData.java deleted file mode 100644 index e19def9..0000000 --- a/src/com/engine/thinktrans/entity/ReportChildrenData.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.engine.thinktrans.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @Author liang.cheng - * @Date 2023/11/16 2:24 PM - * @Description: TODO - * @Version 1.0 - */ - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ReportChildrenData { - - private List data; -} diff --git a/src/com/engine/thinktrans/entity/ReportColumns.java b/src/com/engine/thinktrans/entity/ReportColumns.java deleted file mode 100644 index 39ae4bc..0000000 --- a/src/com/engine/thinktrans/entity/ReportColumns.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.engine.thinktrans.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author liang.cheng - * @Date 2023/11/16 1:34 PM - * @Description: TODO - * @Version 1.0 - */ - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ReportColumns { - - private String title; - - private String key; - -} diff --git a/src/com/engine/thinktrans/entity/param/PersonnelSizeTopParam.java b/src/com/engine/thinktrans/entity/param/PersonnelSizeTopParam.java deleted file mode 100644 index 77e2be5..0000000 --- a/src/com/engine/thinktrans/entity/param/PersonnelSizeTopParam.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.engine.thinktrans.entity.param; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author liang.cheng - * @Date 2023/11/24 10:48 AM - * @Description: TODO - * @Version 1.0 - */ - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class PersonnelSizeTopParam { - - private Integer year; - - private Integer company; -} diff --git a/src/com/engine/thinktrans/entity/param/TendencyReportParam.java b/src/com/engine/thinktrans/entity/param/TendencyReportParam.java deleted file mode 100644 index 43653d1..0000000 --- a/src/com/engine/thinktrans/entity/param/TendencyReportParam.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.engine.thinktrans.entity.param; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author liang.cheng - * @Date 2023/11/16 2:43 PM - * @Description: TODO - * @Version 1.0 - */ - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class TendencyReportParam { - - private String deptIds; - - private Integer year; - - private String useKind; -} diff --git a/src/com/engine/thinktrans/entity/vo/TendencyReportVO.java b/src/com/engine/thinktrans/entity/vo/TendencyReportVO.java deleted file mode 100644 index 155c8aa..0000000 --- a/src/com/engine/thinktrans/entity/vo/TendencyReportVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.engine.thinktrans.entity.vo; - -import com.engine.thinktrans.entity.ReportChildrenData; -import com.engine.thinktrans.entity.ReportColumns; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @Author liang.cheng - * @Date 2023/11/16 11:44 AM - * @Description: TODO - * @Version 1.0 - */ - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class TendencyReportVO { - - private List columns; - - private List datas; -} diff --git a/src/com/engine/thinktrans/service/CubeRecordDataService.java b/src/com/engine/thinktrans/service/CubeRecordDataService.java deleted file mode 100644 index e2286e3..0000000 --- a/src/com/engine/thinktrans/service/CubeRecordDataService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.engine.thinktrans.service; - -import java.util.Map; - -/** - * @Author liang.cheng - * @Date 2023/11/20 3:48 PM - * @Description: 建模表数据分析存储 - * @Version 1.0 - */ -public interface CubeRecordDataService { - - /** - * @Description: 离职率统计 uf_lzlbb - * @Author: liang.cheng - * @Date: 2023/11/20 4:11 PM - * @param: [year] - * @return: java.util.Map - */ - Map dimissionRate(Integer year); -} diff --git a/src/com/engine/thinktrans/service/ReportCollectService.java b/src/com/engine/thinktrans/service/ReportCollectService.java deleted file mode 100644 index 83b1dbb..0000000 --- a/src/com/engine/thinktrans/service/ReportCollectService.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.engine.thinktrans.service; - -import com.engine.thinktrans.entity.param.PersonnelSizeTopParam; -import com.engine.thinktrans.entity.param.TendencyReportParam; -import com.engine.thinktrans.entity.vo.TendencyReportVO; - -import java.util.Map; - -/** - * @Author liang.cheng - * @Date 2023/11/16 10:43 AM - * @Description: TODO - * @Version 1.0 - */ -public interface ReportCollectService { - - /** - * @Description: 年度人力趋势报表 - * @Author: liang.cheng - * @Date: 2023/11/16 2:39 PM - * @param: [] - * @return: com.engine.thinktrans.entity.vo.TendencyReportVO - */ - TendencyReportVO getPersonTendency(TendencyReportParam tendencyReportParam); - - /** - * @Description: 实时在职人数 - * @Author: liang.cheng - * @Date: 2023/11/20 10:05 AM - * @param: [param] - * @return: com.engine.thinktrans.entity.vo.TendencyReportVO - */ - TendencyReportVO getOnJobStatistics(); - - /** - * @Description: 公司人员规模分析表 - * @Author: liang.cheng - * @Date: 2023/11/22 10:11 AM - * @param: [year] - * @return: com.engine.thinktrans.entity.vo.TendencyReportVO - */ - TendencyReportVO getPersonnelSize(PersonnelSizeTopParam param); - - /** - * @Description: 公司人员规模分析表顶部 - * @Author: liang.cheng - * @Date: 2023/11/22 2:30 PM - * @param: [integer] - * @return: Map - */ - Map getTop(PersonnelSizeTopParam param); -} diff --git a/src/com/engine/thinktrans/service/ReportExportService.java b/src/com/engine/thinktrans/service/ReportExportService.java deleted file mode 100644 index a3789bd..0000000 --- a/src/com/engine/thinktrans/service/ReportExportService.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.engine.thinktrans.service; - -import com.engine.thinktrans.entity.param.PersonnelSizeTopParam; -import com.engine.thinktrans.entity.param.TendencyReportParam; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - - -/** - * @Author liang.cheng - * @Date 2023/11/17 2:03 PM - * @Description: TODO - * @Version 1.0 - */ -public interface ReportExportService { - - - /** - * @Description: 年度人力趋势报表 - * @Author: liang.cheng - * @Date: 2023/11/17 2:43 PM - * @param: [tendencyReportParam] - * @return: org.apache.poi.xssf.usermodel.XSSFWorkbook - */ - XSSFWorkbook personTendencyExport(TendencyReportParam tendencyReportParam); - - /** - * @Description: 实时在职人数统计 - * @Author: liang.cheng - * @Date: 2023/11/20 3:02 PM - * @param: [] - * @return: org.apache.poi.xssf.usermodel.XSSFWorkbook - */ - XSSFWorkbook onJobStatisticsExport(); - - /** - * @Description: 公司人员规模分析 - * @Author: liang.cheng - * @Date: 2023/11/22 3:02 PM - * @param: [year] - * @return: org.apache.poi.xssf.usermodel.XSSFWorkbook - */ - XSSFWorkbook personnelSizeExport(PersonnelSizeTopParam param); -} diff --git a/src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java b/src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java deleted file mode 100644 index 0f66103..0000000 --- a/src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.engine.thinktrans.service.impl; - -import com.engine.core.impl.Service; -import com.engine.thinktrans.service.CubeRecordDataService; -import com.engine.thinktrans.util.CommonDateUtil; -import com.weaver.general.Util; -import lombok.SneakyThrows; -import org.apache.commons.lang3.StringUtils; -import weaver.conn.RecordSet; -import weaver.hrm.company.DepartmentComInfo; - -import java.time.YearMonth; -import java.util.*; - -/** - * @Author liang.cheng - * @Date 2023/11/20 3:48 PM - * @Description: TODO - * @Version 1.0 - */ -public class CubeRecordDataServiceImpl extends Service implements CubeRecordDataService { - - - @Override - public Map dimissionRate(Integer year) { - RecordSet rs = new RecordSet(); - Map result = new HashMap<>(2); - - List datas = new ArrayList<>(); - List deptList = new ArrayList<>(); - rs.executeQuery("select a.deptid from hrmdepartmentdefined a left join hrmdepartment b on a.deptid =b.id where a.bmcj in (0,1)" + - " and (b.canceled = 0 or b.canceled is null)"); - while (rs.next()) { - deptList.add(Util.getIntValue(rs.getString("deptid"))); - } - - // 合计 - deptList.add(-9999); - - deptList.forEach(id -> { - List yearList = getYearData(year,id); - datas.add(yearList); - }); - - if (datas.size() > 0) { - rs.executeUpdate("delete from uf_lzlbb where nf = ?",year); - rs.executeBatchSql("insert into uf_lzlbb(bmmc,nf,bmmc1,lzrs1,zrl1,lzl1,lzrs2,zrl2,lzl2,lzrs3,zrl3,lzl3,lzrs4,zrl4,lzl4,lzrs5,zrl5,lzl5," + - " lzrs6,zrl6,lzl6,lzrs7,zrl7,lzl7,lzrs8,zrl8,lzl8,lzrs9,zrl9,lzl9,lzrs10,zrl10,lzl10,lzrs11,zrl11,lzl11,lzrs12,zrl12,lzl12) " + - " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", datas); - } - - result.put("count",datas.size()); - return result; - } - - @SneakyThrows - private List getYearData(Integer year, Integer id) { - RecordSet rs = new RecordSet(); - DepartmentComInfo departmentComInfo = new DepartmentComInfo(); - List data = new ArrayList<>(); - data.add(id); - data.add(year); - ArrayList allSubDepartment = new ArrayList<>(); - List yearMonths = CommonDateUtil.getYearMonths(year); - - StringBuilder st = new StringBuilder(); - st.append("select count(1) as sum from hrmresource where companystartdate <= ? "); - - StringBuilder sql = new StringBuilder(); - sql.append("select count(1) as dimension from hrmstatushistory h left join hrmresource s on h.resourceid = s.id where h.type_n = 5 " + - " and h.changedate >= ? and h.changedate <= ? "); - - if (id != -9999) { - data.add(departmentComInfo.getDepartmentName(String.valueOf(id))); - departmentComInfo.getAllChildDeptByDepId(allSubDepartment, String.valueOf(id)); - allSubDepartment.add(String.valueOf(id)); - String allId = StringUtils.join(allSubDepartment, ","); - st.append(" and departmentid in (").append(allId).append(")"); - sql.append(" and s.departmentid in (").append(allId).append(")"); - }else { - data.add("合计"); - } - - - for (YearMonth yearMonth : yearMonths) { - int dimension = 0; - int sum = 0; - String startMonth = CommonDateUtil.getFormatYear(CommonDateUtil.toDateStartOfMonth(YearMonth.now())); - String endMonth = CommonDateUtil.getFormatYear(CommonDateUtil.toDateEndOfMonth(yearMonth)); - rs.executeQuery(st.toString(), endMonth); - if (rs.next()) { - sum = Util.getIntValue(rs.getString("sum")); - } - rs.executeQuery(sql.toString(), startMonth, endMonth); - if (rs.next()) { - dimension = Util.getIntValue(rs.getString("dimension")); - } - float result = sum == 0 ? 0 : ((float)dimension) / sum; - double rate = sum == 0 ? 0 : Math.round(result * 100.0) / 100.0; - data.add(dimension); - data.add(sum); - data.add(rate); - - } - return data; - } -} diff --git a/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java b/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java deleted file mode 100644 index 3e09cf5..0000000 --- a/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java +++ /dev/null @@ -1,418 +0,0 @@ -package com.engine.thinktrans.service.impl; - -import com.engine.core.impl.Service; -import com.engine.thinktrans.entity.PersonnelSizeTop; -import com.engine.thinktrans.entity.ReportChildrenData; -import com.engine.thinktrans.entity.ReportColumns; -import com.engine.thinktrans.entity.param.PersonnelSizeTopParam; -import com.engine.thinktrans.entity.param.TendencyReportParam; -import com.engine.thinktrans.entity.vo.TendencyReportVO; -import com.engine.thinktrans.service.ReportCollectService; -import com.engine.thinktrans.util.CommonDateUtil; -import com.weaver.general.Util; -import lombok.SneakyThrows; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import weaver.conn.RecordSet; -import weaver.hrm.company.DepartmentComInfo; -import weaver.hrm.company.SubCompanyComInfo; - -import java.text.DecimalFormat; -import java.time.LocalDate; -import java.time.Year; -import java.time.YearMonth; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @Author liang.cheng - * @Date 2023/11/16 10:43 AM - * @Description: TODO - * @Version 1.0 - */ -public class ReportCollectServiceImpl extends Service implements ReportCollectService { - - @Override - public TendencyReportVO getPersonTendency(TendencyReportParam tendencyReportParam) { - - List columns = getPTReportColumns(); - List deptList = new ArrayList<>(); - RecordSet rs = new RecordSet(); - rs.executeQuery("select a.deptid from hrmdepartmentdefined a left join hrmdepartment b on a.deptid =b.id where a.bmcj in (0,1)" + - " and (b.canceled = 0 or b.canceled is null)"); - while (rs.next()) { - deptList.add(Util.getIntValue(rs.getString("deptid"))); - } - String deptIds = tendencyReportParam.getDeptIds(); - if (StringUtils.isNotEmpty(deptIds)) { - List list = Arrays.stream(deptIds.split(",")) - .map(Integer::parseInt) - .collect(Collectors.toList()); - deptList = list.stream() - .filter(deptList::contains) - .collect(Collectors.toList()); - } - - List datas = new ArrayList<>(); - List> countLists = new ArrayList<>(); - - deptList.forEach(id -> { - List countList = new ArrayList<>(); - ReportChildrenData childrenData = getReportChildrenData(tendencyReportParam,id,countList); - datas.add(childrenData); - countLists.add(countList); - }); - - //求和 - List result = summary(countLists); - - List stringList = result.stream() - .map(String::valueOf) - .collect(Collectors.toList()); - - List sums = new ArrayList<>(); - sums.add("总数"); - sums.addAll(stringList); - - datas.add(ReportChildrenData.builder().data(sums).build()); - return TendencyReportVO.builder() - .columns(columns) - .datas(datas) - .build(); - } - - @Override - public TendencyReportVO getOnJobStatistics() { - List columns = getOJSReportColumns(); - List deptList = new ArrayList<>(); - RecordSet rs = new RecordSet(); - rs.executeQuery("select a.deptid from hrmdepartmentdefined a left join hrmdepartment b on a.deptid =b.id where a.bmcj in (0,1)" + - " and (b.canceled = 0 or b.canceled is null)"); - while (rs.next()) { - deptList.add(Util.getIntValue(rs.getString("deptid"))); - } - - - List datas = new ArrayList<>(); - List> countLists = new ArrayList<>(); - - deptList.forEach(id -> { - List countList = new ArrayList<>(); - ReportChildrenData childrenData = getOnJobChildrenData(id,countList); - datas.add(childrenData); - countLists.add(countList); - }); - - //求和 - List result = summary(countLists); - - List stringList = result.stream() - .map(String::valueOf) - .collect(Collectors.toList()); - - List sums = new ArrayList<>(); - sums.add("/"); - sums.add("全公司"); - sums.addAll(stringList); - - datas.add(ReportChildrenData.builder().data(sums).build()); - return TendencyReportVO.builder() - .columns(columns) - .datas(datas) - .build(); - } - - @Override - public TendencyReportVO getPersonnelSize(PersonnelSizeTopParam param) { - List columns = getPSReportColumns(); - List addList = new ArrayList<>(); - List addRate = new ArrayList<>(); - List datas = getPersonnelSizeData(param,addList,addRate); - return TendencyReportVO.builder() - .columns(columns) - .datas(datas) - .build(); - } - - @Override - public Map getTop(PersonnelSizeTopParam param) { - Map result = new HashMap<>(4); - List addList = new ArrayList<>(); - List addRate = new ArrayList<>(); - SubCompanyComInfo comInfo = new SubCompanyComInfo(); - ArrayList compList = new ArrayList<>(); - if (param.getCompany() != null) { - comInfo.getSubCompanyLists(String.valueOf(param.getCompany()),compList); - compList.add(param.getCompany()); - } - - if (param.getYear() == null) { - param.setYear(Year.now().getValue()); - } - getPersonnelSizeData(param,addList,addRate); - List pstList = new ArrayList<>(); - - RecordSet rs = new RecordSet(); - String startYear = CommonDateUtil.getYearDayFirst(param.getYear()); - String endYear = CommonDateUtil.getYearDayEnd(param.getYear()); - int sumStart = sumsByFirstDate(startYear,compList); - int sumEnd = sumsByFirstDate(endYear,compList); - int entrySum = sumsByTwoDate(startYear,endYear,compList); - int leaveSum = 0; - - rs.executeQuery("select count(1) as leavesum from hrmstatushistory where type_n = 5 and changedate >= ? and changedate <= ?",startYear,endYear); - if (rs.next()) { - leaveSum = Util.getIntValue(rs.getString("leavesum")); - } - int addPerson = entrySum - leaveSum; - - String rate = calculateRate(addRate,addPerson,sumStart); - - pstList.add(PersonnelSizeTop.builder().title("年初人数").count(sumStart).color("#67c29a").build()); - pstList.add(PersonnelSizeTop.builder().title("累计入职人数").count(entrySum).color("#9c5113").build()); - pstList.add(PersonnelSizeTop.builder().title("累计离职人数").count(leaveSum).color("#e26b0a").build()); - pstList.add(PersonnelSizeTop.builder().title("年末人数").count(sumEnd).color("#35889c").build()); - pstList.add(PersonnelSizeTop.builder().title("净增长率").count(rate).color("#f6d262").build()); - result.put("pstTop",pstList); - result.put("list",addList); - result.put("rate",addRate); - return result; - } - - private List getPersonnelSizeData(PersonnelSizeTopParam param, List addList, List addRate) { - RecordSet rs = new RecordSet(); - List result = new ArrayList<>(); - if (param.getYear() == null) { - param.setYear(Year.now().getValue()); - } - SubCompanyComInfo comInfo = new SubCompanyComInfo(); - ArrayList compList = new ArrayList<>(); - if (param.getCompany() != null) { - comInfo.getSubCompanyLists(String.valueOf(param.getCompany()),compList); - compList.add(param.getCompany()); - } - - List yearMonths = CommonDateUtil.getYearMonths(param.getYear()); - for (int i = 0; i < yearMonths.size(); i++) { - List data = new ArrayList<>(); - String startMonth = CommonDateUtil.getFormatYear(CommonDateUtil.toDateStartOfMonth(yearMonths.get(i))); - String endMonth = CommonDateUtil.getFormatYear(CommonDateUtil.toDateEndOfMonth(yearMonths.get(i))); - int sumStart = sumsByFirstDate(startMonth,compList); - int sumEnd = sumsByFirstDate(endMonth,compList); - int entrySum = sumsByTwoDate(startMonth,endMonth,compList); - int leaveSum = 0; - data.add(String.format("%d 月",i+1)); - rs.executeQuery("select count(1) as leavesum from hrmstatushistory where type_n = 5 and changedate >= ? and changedate <= ?",startMonth,endMonth); - if (rs.next()) { - leaveSum = Util.getIntValue(rs.getString("leavesum")); - } - int addPerson = entrySum - leaveSum; - - String rate = calculateRate(addRate,addPerson,sumStart); - addList.add(String.valueOf(addPerson)); - - data.add(String.valueOf(sumStart)); - data.add(String.valueOf(entrySum)); - data.add(String.valueOf(leaveSum)); - data.add(String.valueOf(addPerson)); - data.add(String.valueOf(sumEnd)); - data.add(rate); - result.add(ReportChildrenData.builder().data(data).build()); - } - - return result; - - - } - - - private List getPSReportColumns() { - List columns = new ArrayList<>(); - columns.add(ReportColumns.builder().title("月份").key("0").build()); - columns.add(ReportColumns.builder().title("期初人数").key("1").build()); - columns.add(ReportColumns.builder().title("入职人数").key("2").build()); - columns.add(ReportColumns.builder().title("离职人数").key("3").build()); - columns.add(ReportColumns.builder().title("净增长人数").key("4").build()); - columns.add(ReportColumns.builder().title("期末人数").key("5").build()); - columns.add(ReportColumns.builder().title("净增长率").key("6").build()); - return columns; - } - - @SneakyThrows - private ReportChildrenData getOnJobChildrenData(Integer id, List countList) { - RecordSet rs = new RecordSet(); - DepartmentComInfo departmentComInfo = new DepartmentComInfo(); - List data = new ArrayList<>(); - data.add(departmentComInfo.getDepartmentCode(String.valueOf(id))); - data.add(departmentComInfo.getDepartmentName(String.valueOf(id))); - ArrayList allSubDepartment = new ArrayList<>(); - departmentComInfo.getAllChildDeptByDepId(allSubDepartment, String.valueOf(id)); - allSubDepartment.add(String.valueOf(id)); - String allId = StringUtils.join(allSubDepartment, ","); - List yearMonths = CommonDateUtil.getYearMonths(LocalDate.now()); - StringBuilder st = new StringBuilder(); - st.append("select count(1) as sum from hrmresource where status < 4 and companystartdate <= ? and departmentid in"); - st.append(" (").append(allId).append(")"); - yearMonths.forEach(yearMonth -> { - String endMonth = CommonDateUtil.getFormatYear(CommonDateUtil.toDateEndOfMonth(yearMonth)); - rs.executeQuery(st.toString(),endMonth); - if (rs.next()) { - Integer sum = Util.getIntValue(rs.getString("sum"),0); - data.add(String.valueOf(sum)); - countList.add(sum); - } - }); - return ReportChildrenData.builder().data(data).build(); - } - - - @SneakyThrows - private ReportChildrenData getReportChildrenData(TendencyReportParam param, Integer id,List countList) { - RecordSet rs = new RecordSet(); - DepartmentComInfo departmentComInfo = new DepartmentComInfo(); - List data = new ArrayList<>(); - data.add(departmentComInfo.getDepartmentName(String.valueOf(id))); - ArrayList allSubDepartment = new ArrayList<>(); - departmentComInfo.getAllChildDeptByDepId(allSubDepartment, String.valueOf(id)); - allSubDepartment.add(String.valueOf(id)); - String allId = StringUtils.join(allSubDepartment, ","); - - if (param.getYear() == null) { - param.setYear(Year.now().getValue()); - } - - String startDate = CommonDateUtil.getYearDayFirst(param.getYear()); - List yearMonths = CommonDateUtil.getYearMonths(param.getYear()); - - StringBuilder st = new StringBuilder(); - st.append("select count(1) as sum from hrmresource where status < 4 and companystartdate >= ? and companystartdate <= ? and departmentid in"); - st.append(" (").append(allId).append(")"); - if (StringUtils.isNotEmpty(param.getUseKind())) { - st.append(" and usekind = ").append(param.getUseKind()); - } - yearMonths.forEach(yearMonth -> { - String endMonth = CommonDateUtil.getFormatYear(CommonDateUtil.toDateEndOfMonth(yearMonth)); - rs.executeQuery(st.toString(),startDate,endMonth); - if (rs.next()) { - Integer sum = Util.getIntValue(rs.getString("sum"),0); - data.add(String.valueOf(sum)); - countList.add(sum); - } - }); - - return ReportChildrenData.builder().data(data).build(); - } - - /** - * 单日期 - */ - private int sumsByFirstDate(String firstDate,ArrayList compList) { - RecordSet rs = new RecordSet(); - StringBuilder sb = new StringBuilder(); - sb.append("select count(1) as sums from hrmresource where status < 4 and companystartdate <= ?"); - if (CollectionUtils.isNotEmpty(compList)) { - sb.append(" and subcompanyid1 in(").append(StringUtils.join(compList,",")).append(")"); - } - rs.executeQuery(sb.toString(),firstDate); - rs.next(); - return Util.getIntValue(rs.getString("sums")); - - } - - /** - * 双日期 - */ - private int sumsByTwoDate(String firstDate,String twoDate,ArrayList compList) { - RecordSet rs = new RecordSet(); - StringBuilder sb = new StringBuilder(); - sb.append("select count(1) as sums from hrmresource where companystartdate >= ? and companystartdate <= ?"); - if (CollectionUtils.isNotEmpty(compList)) { - sb.append(" and subcompanyid1 in(").append(StringUtils.join(compList,",")).append(")"); - } - rs.executeQuery(sb.toString(),firstDate,twoDate); - rs.next(); - return Util.getIntValue(rs.getString("sums")); - - } - - - - /** - * 月份1 - */ - private List getPTReportColumns() { - List columns = new ArrayList<>(); - columns.add(ReportColumns.builder().title("月份").key("0").build()); - columns.add(ReportColumns.builder().title("1月").key("1").build()); - columns.add(ReportColumns.builder().title("2月").key("2").build()); - columns.add(ReportColumns.builder().title("3月").key("3").build()); - columns.add(ReportColumns.builder().title("4月").key("4").build()); - columns.add(ReportColumns.builder().title("5月").key("5").build()); - columns.add(ReportColumns.builder().title("6月").key("6").build()); - columns.add(ReportColumns.builder().title("7月").key("7").build()); - columns.add(ReportColumns.builder().title("8月").key("8").build()); - columns.add(ReportColumns.builder().title("9月").key("9").build()); - columns.add(ReportColumns.builder().title("10月").key("10").build()); - columns.add(ReportColumns.builder().title("11月").key("11").build()); - columns.add(ReportColumns.builder().title("12月").key("12").build()); - return columns; - } - - /** - * 月份2 - */ - private List getOJSReportColumns() { - List columns = new ArrayList<>(); - columns.add(ReportColumns.builder().title("部门编号").key("-1").build()); - columns.add(ReportColumns.builder().title("部门名称").key("0").build()); - columns.add(ReportColumns.builder().title("一月").key("1").build()); - columns.add(ReportColumns.builder().title("二月").key("2").build()); - columns.add(ReportColumns.builder().title("三月").key("3").build()); - columns.add(ReportColumns.builder().title("四月").key("4").build()); - columns.add(ReportColumns.builder().title("五月").key("5").build()); - columns.add(ReportColumns.builder().title("六月").key("6").build()); - columns.add(ReportColumns.builder().title("七月").key("7").build()); - columns.add(ReportColumns.builder().title("八月").key("8").build()); - columns.add(ReportColumns.builder().title("九月").key("9").build()); - columns.add(ReportColumns.builder().title("十月").key("10").build()); - columns.add(ReportColumns.builder().title("十一月").key("11").build()); - columns.add(ReportColumns.builder().title("十二月").key("12").build()); - return columns; - } - - /** - * 求和 - */ - private List summary(List> countLists){ - return countLists.stream() - .reduce((a, b) -> { - List sum = new ArrayList<>(); - for (int i = 0; i < a.size(); i++) { - sum.add(a.get(i) + b.get(i)); - } - return sum; - }) - .orElse(new ArrayList<>()); - } - - /** - * 求比例 - */ - private String calculateRate(List addRate,int add,int sum) { - String rate; - if (sum != 0) { - double rt = (double) add * 100 / sum; - DecimalFormat decimalFormat = new DecimalFormat("0.00"); - decimalFormat.setRoundingMode(java.math.RoundingMode.HALF_UP); - rate = decimalFormat.format(rt) + "%"; - addRate.add(decimalFormat.format(rt)); - }else { - rate = String.valueOf(add * 100) +"%"; - addRate.add(String.valueOf(add * 100)); - } - - return rate; - } - - -} diff --git a/src/com/engine/thinktrans/service/impl/ReportExportServiceImpl.java b/src/com/engine/thinktrans/service/impl/ReportExportServiceImpl.java deleted file mode 100644 index 8fde448..0000000 --- a/src/com/engine/thinktrans/service/impl/ReportExportServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.engine.thinktrans.service.impl; - -import com.engine.common.util.ServiceUtil; -import com.engine.core.impl.Service; -import com.engine.thinktrans.entity.ReportChildrenData; -import com.engine.thinktrans.entity.ReportColumns; -import com.engine.thinktrans.entity.param.PersonnelSizeTopParam; -import com.engine.thinktrans.entity.param.TendencyReportParam; -import com.engine.thinktrans.entity.vo.TendencyReportVO; -import com.engine.thinktrans.service.ReportCollectService; -import com.engine.thinktrans.service.ReportExportService; -import com.engine.thinktrans.util.ExcelUtil; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import weaver.hrm.User; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author liang.cheng - * @Date 2023/11/17 2:04 PM - * @Description: TODO - * @Version 1.0 - */ -public class ReportExportServiceImpl extends Service implements ReportExportService { - - private ReportCollectService getReportCollectService(User user) { - return ServiceUtil.getService(ReportCollectServiceImpl.class,user); - } - - @Override - public XSSFWorkbook personTendencyExport(TendencyReportParam tendencyReportParam) { - - TendencyReportVO personTendency = getReportCollectService(user).getPersonTendency(tendencyReportParam); - - // 1.工作簿名称 - String sheetName = "年度人力趋势("+tendencyReportParam.getYear()+"年)"; - // 2.表头(后面动态获取) - List> excelSheetData = new ArrayList<>(); - - List columns = personTendency.getColumns(); - String[] header = columns.stream() - .map(ReportColumns::getTitle) - .toArray(String[]::new); - - excelSheetData.add(Arrays.asList(header)); - - //数据 - List datas = personTendency.getDatas(); - List> rows = datas.stream() - .map(data -> (List) new ArrayList(data.getData())) - .collect(Collectors.toList()); - - - excelSheetData.addAll(rows); - return ExcelUtil.genWorkbook(excelSheetData, sheetName); - } - - @Override - public XSSFWorkbook onJobStatisticsExport() { - TendencyReportVO personTendency = getReportCollectService(user).getOnJobStatistics(); - - // 1.工作簿名称 - String sheetName = "实时在职人数"; - // 2.表头(后面动态获取) - List> excelSheetData = new ArrayList<>(); - - List columns = personTendency.getColumns(); - String[] header = columns.stream() - .map(ReportColumns::getTitle) - .toArray(String[]::new); - - excelSheetData.add(Arrays.asList(header)); - - //数据 - List datas = personTendency.getDatas(); - List> rows = datas.stream() - .map(data -> (List) new ArrayList(data.getData())) - .collect(Collectors.toList()); - - - excelSheetData.addAll(rows); - return ExcelUtil.genWorkbook(excelSheetData, sheetName); - } - - @Override - public XSSFWorkbook personnelSizeExport(PersonnelSizeTopParam param) { - TendencyReportVO personTendency = getReportCollectService(user).getPersonnelSize(param); - - // 1.工作簿名称 - String sheetName = "公司人员规模分析"; - // 2.表头(后面动态获取) - List> excelSheetData = new ArrayList<>(); - - List columns = personTendency.getColumns(); - String[] header = columns.stream() - .map(ReportColumns::getTitle) - .toArray(String[]::new); - - excelSheetData.add(Arrays.asList(header)); - - //数据 - List datas = personTendency.getDatas(); - List> rows = datas.stream() - .map(data -> (List) new ArrayList(data.getData())) - .collect(Collectors.toList()); - - excelSheetData.addAll(rows); - return ExcelUtil.genWorkbook(excelSheetData, sheetName); - } -} diff --git a/src/com/engine/thinktrans/util/CommonDateUtil.java b/src/com/engine/thinktrans/util/CommonDateUtil.java deleted file mode 100644 index 9477210..0000000 --- a/src/com/engine/thinktrans/util/CommonDateUtil.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.engine.thinktrans.util; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.YearMonth; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.*; - -/** - * @Author liang.cheng - * @Date 2023/9/27 4:44 PM - * @Description: - * @Version 1.0 - */ - -@Slf4j -public class CommonDateUtil { - - public static final String DATE_FORMATTER_PATTERN = "yyyy-MM-dd"; - - /** - * YearMonth转Date - * 注意dayOfMonth范围:1到31之间,最大值根据月份确定特殊情况,如2月闰年29,非闰年28 - * 如果要转换为当月最后一天,可以使用下面方法:toDateEndOfMonth(YearMonth) - * - * @param yearMonth - * @param dayOfMonth - * @return - */ - public static Date toDate(YearMonth yearMonth, int dayOfMonth) { - Objects.requireNonNull(yearMonth, "yearMonth"); - return localDateToDate(yearMonth.atDay(dayOfMonth)); - } - - - /** - * YearMonth转Date,转换为当月第一天 - * - * @param yearMonth - * @return - */ - public static Date toDateStartOfMonth(YearMonth yearMonth) { - return toDate(yearMonth, 1); - } - - /** - * YearMonth转Date,转换为当月最后一天 - * - * @param yearMonth - * @return - */ - public static Date toDateEndOfMonth(YearMonth yearMonth) { - Objects.requireNonNull(yearMonth, "yearMonth"); - return localDateToDate(yearMonth.atEndOfMonth()); - } - - public static Date localDateToDate(LocalDate localDate) { - if (null == localDate) { - return null; - } - ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault()); - return Date.from(zonedDateTime.toInstant()); - } - - public static String getFormatYear(Date localDate) { - if (localDate == null) { - return StringUtils.EMPTY; - } - try { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMATTER_PATTERN); - return simpleDateFormat.format(localDate); - } catch (Exception e) { - log.warn("格式化年份错误", e); - return StringUtils.EMPTY; - } - } - - public static List getYearMonths(LocalDate date) { - List yearMonths = new ArrayList<>(); - for (int month = 1; month <= 12; month++) { - LocalDate firstDayOfMonth = date.withMonth(month); - yearMonths.add(YearMonth.from(firstDayOfMonth)); - } - return yearMonths; - } - - public static List getYearMonths(Integer year) { - List yearMonths = new ArrayList<>(); - for (int month = 1; month <= 12; month++) { - YearMonth yearMonth = YearMonth.of(year, month); - yearMonths.add(yearMonth); - } - return yearMonths; - } - - public static String getYearDayFirst (Integer year) { - Calendar calendar = Calendar.getInstance(); - calendar.set(year, Calendar.JANUARY, 1); - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMATTER_PATTERN); - return sdf.format(calendar.getTime()); - } - - public static String getYearDayEnd(Integer year) { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.DAY_OF_MONTH, 1); - calendar.add(Calendar.DAY_OF_MONTH, -1); - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMATTER_PATTERN); - return sdf.format(calendar.getTime()); - } - -} diff --git a/src/com/engine/thinktrans/util/ExcelUtil.java b/src/com/engine/thinktrans/util/ExcelUtil.java deleted file mode 100644 index 631b8fb..0000000 --- a/src/com/engine/thinktrans/util/ExcelUtil.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.engine.thinktrans.util; - -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.*; - -import java.util.List; - -/** - * @Description: - * @Author: liang.cheng - * @Date: 2023/11/17 2:59 PM - */ -public class ExcelUtil { - - public static XSSFWorkbook genWorkbook(List> rowList, String sheetName) { - XSSFWorkbook workbook = new XSSFWorkbook(); - - // 设置主体样式 - XSSFCellStyle cellStyle = workbook.createCellStyle(); - XSSFFont font = workbook.createFont(); - font.setFontName("宋体"); - font.setFontHeightInPoints((short) 14); - cellStyle.setAlignment(HorizontalAlignment.CENTER); - cellStyle.setFont(font); - cellStyle.setWrapText(true); - cellStyle.setBorderTop(BorderStyle.THIN); - cellStyle.setBorderBottom(BorderStyle.THIN); - cellStyle.setBorderLeft(BorderStyle.THIN); - cellStyle.setBorderRight(BorderStyle.THIN); - - XSSFSheet sheet = workbook.createSheet(sheetName); - - //设置标题 - Row titleRow = sheet.createRow(0); - Cell titleCell = titleRow.createCell(0); - titleCell.setCellValue(sheetName); - // 设置标题样式 - CellStyle titleStyle = workbook.createCellStyle(); - Font titleFont1 = workbook.createFont(); - titleFont1.setFontHeightInPoints((short) 18); - titleFont1.setBold(true); - titleFont1.setFontName("宋体"); - titleStyle.setFont(titleFont1); - titleStyle.setAlignment(HorizontalAlignment.CENTER); - titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); - titleCell.setCellStyle(titleStyle); - - if ("实时在职人数".equals(sheetName)){ - sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 13)); - }else if ("公司人员规模分析".equals(sheetName)) { - sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 6)); - } - else { - sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 12)); - } - - - // 设置表头样式 - XSSFCellStyle titleCellStyle = workbook.createCellStyle(); - XSSFFont titleFont = workbook.createFont(); - titleFont.setFontName("宋体"); - titleFont.setBold(true); - titleFont.setFontHeightInPoints((short) 14); - titleCellStyle.setFont(titleFont); - titleCellStyle.setAlignment(HorizontalAlignment.CENTER); - titleCellStyle.setFillForegroundColor(IndexedColors.WHITE1.getIndex()); - titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - titleCellStyle.setBorderTop(BorderStyle.THIN); - titleCellStyle.setBorderBottom(BorderStyle.THIN); - titleCellStyle.setBorderLeft(BorderStyle.THIN); - titleCellStyle.setBorderRight(BorderStyle.THIN); - - - - // 自适应宽度 - //sheet.autoSizeColumn(0, true); - //默认列宽 - sheet.setDefaultColumnWidth(18); - //默认行高 - sheet.setDefaultRowHeightInPoints(18); - - for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { - List infoList = rowList.get(rowIndex); - XSSFRow row = sheet.createRow(rowIndex+2); - for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { - XSSFCell cell = row.createCell(cellIndex); - if (rowIndex == 0) { - cell.setCellStyle(titleCellStyle); - } else { - cell.setCellStyle(cellStyle); - } - Object o = infoList.get(cellIndex); - if (o instanceof String) { - cell.setCellType(CellType.STRING); - cell.setCellValue(String.valueOf(o)); - } else if (o instanceof Boolean) { - cell.setCellType(CellType.BOOLEAN); - cell.setCellValue(String.valueOf(o)); - } else { - cell.setCellType(CellType.STRING); - cell.setCellValue(o == null ? "" : o.toString()); - } - } - } - return workbook; - } -} - diff --git a/src/com/engine/thinktrans/util/OperateUtil.java b/src/com/engine/thinktrans/util/OperateUtil.java deleted file mode 100644 index c0eb22f..0000000 --- a/src/com/engine/thinktrans/util/OperateUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.engine.thinktrans.util; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -/** - * @Author liang.cheng - * @Date 2023/11/16 5:58 PM - * @Description: TODO - * @Version 1.0 - */ -public class OperateUtil { - - public static List sumLists(List... lists) { - return Arrays.stream(lists) - .flatMap(List::stream) - .skip(1) - .map(OperateUtil::sumDigits) - .collect(Collectors.toList()); - } - - private static String sumDigits(String str) { - int sum = IntStream.range(0, str.length()) - .map(i -> str.charAt(i) - '0') - .sum(); - return String.valueOf(sum); - } -} diff --git a/src/com/engine/thinktrans/web/ReportCollectController.java b/src/com/engine/thinktrans/web/ReportCollectController.java deleted file mode 100644 index db3db40..0000000 --- a/src/com/engine/thinktrans/web/ReportCollectController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.engine.thinktrans.web; - -import com.engine.common.util.ServiceUtil; -import com.engine.thinktrans.entity.param.PersonnelSizeTopParam; -import com.engine.thinktrans.entity.param.TendencyReportParam; -import com.engine.thinktrans.entity.vo.TendencyReportVO; -import com.engine.thinktrans.service.ReportCollectService; -import com.engine.thinktrans.service.impl.ReportCollectServiceImpl; -import com.engine.thinktrans.util.ResponseResult; -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.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import java.util.Map; - -/** - * @Author liang.cheng - * @Date 2023/11/16 10:42 AM - * @Description: TODO - * @Version 1.0 - */ -public class ReportCollectController { - - private ReportCollectService getReportCollectService(User user) { - return ServiceUtil.getService(ReportCollectServiceImpl.class,user); - } - - - @GET - @Path("/personTendency") - @Produces(MediaType.APPLICATION_JSON) - public String getPersonTendency(@Context HttpServletRequest request, @Context HttpServletResponse response, - @QueryParam("deptIds") String deptIds, @QueryParam("year") Integer year, @QueryParam("useKind") String useKind) { - User user = HrmUserVarify.getUser(request, response); - TendencyReportParam tendencyReportParam = TendencyReportParam.builder().deptIds(deptIds).year(year).useKind(useKind).build(); - return new ResponseResult(user).run(getReportCollectService(user) :: getPersonTendency,tendencyReportParam); - } - - @GET - @Path("/onJobStatistics") - @Produces(MediaType.APPLICATION_JSON) - public String getOnJobStatistics(@Context HttpServletRequest request, @Context HttpServletResponse response) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getReportCollectService(user) :: getOnJobStatistics); - } - - @GET - @Path("/personnelSize") - @Produces(MediaType.APPLICATION_JSON) - public String getPersonnelSize(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam("year") Integer year,@QueryParam("company") Integer company) { - User user = HrmUserVarify.getUser(request, response); - PersonnelSizeTopParam build = PersonnelSizeTopParam.builder().year(year).company(company).build(); - return new ResponseResult(user).run(getReportCollectService(user) :: getPersonnelSize,build); - } - - @GET - @Path("/top") - @Produces(MediaType.APPLICATION_JSON) - public String getTop(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam("year") Integer year,@QueryParam("company") Integer company) { - User user = HrmUserVarify.getUser(request, response); - PersonnelSizeTopParam build = PersonnelSizeTopParam.builder().year(year).company(company).build(); - return new ResponseResult>(user).run(getReportCollectService(user) :: getTop,build); - } - - -} diff --git a/src/com/engine/thinktrans/web/ReportExportController.java b/src/com/engine/thinktrans/web/ReportExportController.java deleted file mode 100644 index 155a5b6..0000000 --- a/src/com/engine/thinktrans/web/ReportExportController.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.engine.thinktrans.web; - -import com.engine.common.util.ServiceUtil; -import com.engine.thinktrans.entity.param.PersonnelSizeTopParam; -import com.engine.thinktrans.entity.param.TendencyReportParam; -import com.engine.thinktrans.service.ReportExportService; -import com.engine.thinktrans.service.impl.ReportExportServiceImpl; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -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.QueryParam; -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 liang.cheng - * @Date 2023/11/17 1:57 PM - * @Description: TODO - * @Version 1.0 - */ -public class ReportExportController { - - private ReportExportService getReportExportService(User user) { - return ServiceUtil.getService(ReportExportServiceImpl.class,user); - } - - @GET - @Path("/personTendency/export") - @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response personTendencyExport(@Context HttpServletRequest request, @Context HttpServletResponse response, - @QueryParam("deptIds") String deptIds, @QueryParam("year") Integer year, @QueryParam("useKind") String useKind) { - User user = HrmUserVarify.getUser(request, response); - TendencyReportParam tendencyReportParam = TendencyReportParam.builder().deptIds(deptIds).year(year).useKind(useKind).build(); - XSSFWorkbook workbook = getReportExportService(user).personTendencyExport(tendencyReportParam); - 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(); - } - - @GET - @Path("/onJobStatistics/export") - @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response onJobStatisticsExport(@Context HttpServletRequest request, @Context HttpServletResponse response) { - User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getReportExportService(user).onJobStatisticsExport(); - 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(); - } - - @GET - @Path("/personnelSize/export") - @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response personnelSizeExport(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam("year") Integer year,@QueryParam("company") Integer company) { - User user = HrmUserVarify.getUser(request, response); - PersonnelSizeTopParam build = PersonnelSizeTopParam.builder().year(year).company(company).build(); - XSSFWorkbook workbook = getReportExportService(user).personnelSizeExport(build); - 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(); - } -} diff --git a/src/test/MainTest.java b/src/test/MainTest.java deleted file mode 100644 index 872d153..0000000 --- a/src/test/MainTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package test; - -import com.engine.thinktrans.entity.ReportChildrenData; -import com.engine.thinktrans.util.CommonDateUtil; -import com.engine.thinktrans.util.OperateUtil; - -import java.time.LocalDate; -import java.time.YearMonth; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -/** - * @Author weaver_cl - * @Description: - * @Date 2022/10/9 - * @Version V1.0 - **/ -public class MainTest { - - public static void main(String[] args) { - - List reportChildrenDataList = new ArrayList<>(); - reportChildrenDataList.add(new ReportChildrenData(Arrays.asList("A", "B", "C"))); - reportChildrenDataList.add(new ReportChildrenData(Arrays.asList("D", "E", "F"))); - - - } - - -} diff --git a/src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java b/src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java deleted file mode 100644 index b335e5c..0000000 --- a/src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java +++ /dev/null @@ -1,43 +0,0 @@ -package weaver.interfaces.thinktrans.cron; - -import com.engine.common.util.ServiceUtil; -import com.engine.thinktrans.service.CubeRecordDataService; -import com.engine.thinktrans.service.impl.CubeRecordDataServiceImpl; -import weaver.hrm.User; -import weaver.interfaces.schedule.BaseCronJob; - -import java.time.Year; - -/** - * @Author liang.cheng - * @Date 2023/11/20 5:56 PM - * @Description: 离职率 - * @Version 1.0 - */ -public class DimissionCronJob extends BaseCronJob { - - private CubeRecordDataService getCubeRecordDataService(User user) { - return ServiceUtil.getService(CubeRecordDataServiceImpl.class,user); - } - - private String year; - - public String getYear() { - return year; - } - - public void setYear(String year) { - this.year = year; - } - - @Override - public void execute() { - - User user = new User(); - user.setUid(1); - if (year == null) { - year = String.valueOf(Year.now().getValue()); - } - getCubeRecordDataService(user).dimissionRate(Integer.valueOf(year)); - } -}