From 7acfd2663874e360abdedf52f4032026cbc3b6c1 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Mon, 20 Nov 2023 18:34:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=88=9B=E5=85=83=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=20=E7=A6=BB=E8=81=8C=E7=8E=87=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/CubeRecordDataService.java | 21 +++++ .../impl/CubeRecordDataServiceImpl.java | 93 +++++++++++++++++++ .../impl/ReportCollectServiceImpl.java | 6 +- .../thinktrans/cron/DimissionCronJob.java | 43 +++++++++ 4 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 src/com/engine/thinktrans/service/CubeRecordDataService.java create mode 100644 src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java create mode 100644 src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java diff --git a/src/com/engine/thinktrans/service/CubeRecordDataService.java b/src/com/engine/thinktrans/service/CubeRecordDataService.java new file mode 100644 index 0000000..e2286e3 --- /dev/null +++ b/src/com/engine/thinktrans/service/CubeRecordDataService.java @@ -0,0 +1,21 @@ +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/impl/CubeRecordDataServiceImpl.java b/src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java new file mode 100644 index 0000000..aaaecb3 --- /dev/null +++ b/src/com/engine/thinktrans/service/impl/CubeRecordDataServiceImpl.java @@ -0,0 +1,93 @@ +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.forEach(id -> { + List yearList = getYearData(year,id); + datas.add(yearList); + }); + + boolean flag = rs.executeBatchSql("", datas); + + result.put("flag",flag); + 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<>(); + departmentComInfo.getAllChildDeptByDepId(allSubDepartment, String.valueOf(id)); + allSubDepartment.add(String.valueOf(id)); + String allId = StringUtils.join(allSubDepartment, ","); + + List yearMonths = CommonDateUtil.getYearMonths(year); + + StringBuilder st = new StringBuilder(); + st.append("select count(1) as sum from hrmresource where companystartdate <= ? and departmentid in"); + st.append(" (").append(allId).append(")"); + + 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 <= ? and s.departmentid in"); + sql.append(" (").append(allId).append(")"); + + 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 = ((float)dimension) / sum; + double rate = sum == 0 ? 0 : Math.round(result * 100.0) / 100.0; + data.add(rate); + data.add(dimension); + data.add(sum); + } + return data; + } +} diff --git a/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java b/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java index 4e5f5bb..92cadc9 100644 --- a/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java +++ b/src/com/engine/thinktrans/service/impl/ReportCollectServiceImpl.java @@ -35,7 +35,8 @@ public class ReportCollectServiceImpl extends Service implements ReportCollectSe 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)"); + 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"))); } @@ -82,7 +83,8 @@ public class ReportCollectServiceImpl extends Service implements ReportCollectSe 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)"); + 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"))); } diff --git a/src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java b/src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java new file mode 100644 index 0000000..b335e5c --- /dev/null +++ b/src/weaver/interfaces/thinktrans/cron/DimissionCronJob.java @@ -0,0 +1,43 @@ +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)); + } +}