From cbf7df6cd20bc758cc023ade23d75e8e1154b8b9 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Wed, 20 Sep 2023 20:08:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E7=8F=AD=E7=BB=93=E6=9E=9C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrm_attendance/hrm-attendance.jar | Bin 55231 -> 63428 bytes .../web/SchedulingResultsActionApi.java | 13 ++ .../persongroup/cmd/GetDatatableCmd.java | 89 ++++++++++ .../persongroup/cmd/GetDatatableCountCmd.java | 75 +++++++++ .../cmd/GetDatatableRecurrenceCmd.java | 158 ++++++++++++++++++ .../persongroup/commonutil/CommonUtil.java | 92 +++++++++- .../job/scheduling/SchedulingJob.java | 2 +- .../tactics/DayRegularScheduling.java | 2 +- .../tactics/MonthRegularScheduling.java | 2 +- .../tactics/WeekRegularScheduling.java | 2 +- .../tactics/YearRegularScheduling.java | 2 +- .../service/SchedulingResultsService.java | 7 + .../impl/SchedulingResultsServiceImpl.java | 116 +++++++++++++ .../persongroup/web/PersonGroupAction.java | 30 +--- .../web/SchedulingResultsAction.java | 32 ++++ src/com/engine/common/util/DbTools.java | 15 ++ .../engine/common/util/HttpRequestUtil.java | 146 ---------------- src/com/engine/common/util/PropBean.java | 76 --------- .../web/SchedulingResultsActionApi.class | Bin 0 -> 718 bytes .../persongroup/cmd/GetDatatableCmd.class | Bin 0 -> 4601 bytes .../cmd/GetDatatableCountCmd.class | Bin 0 -> 3495 bytes .../cmd/GetDatatableRecurrenceCmd.class | Bin 0 -> 7144 bytes .../persongroup/commonutil/CommonUtil.class | Bin 9976 -> 12733 bytes .../job/scheduling/SchedulingJob.class | Bin 3652 -> 3659 bytes .../tactics/DayRegularScheduling.class | Bin 7445 -> 7452 bytes .../tactics/MonthRegularScheduling.class | Bin 7500 -> 7507 bytes .../tactics/WeekRegularScheduling.class | Bin 7885 -> 7894 bytes .../tactics/YearRegularScheduling.class | Bin 7878 -> 7788 bytes .../service/SchedulingResultsService.class | Bin 0 -> 362 bytes .../service/impl/PersonGroupServiceImpl.class | Bin 8138 -> 8142 bytes .../impl/SchedulingResultsServiceImpl.class | Bin 0 -> 5392 bytes .../persongroup/web/PersonGroupAction.class | Bin 4355 -> 2949 bytes .../web/SchedulingResultsAction.class | Bin 0 -> 1803 bytes .../com/engine/common/util/DbTools.class | Bin 3950 -> 4228 bytes .../HttpRequestUtil$OkhttpInterceptor.class | Bin 1842 -> 0 bytes .../engine/common/util/HttpRequestUtil.class | Bin 4738 -> 0 bytes .../com/engine/common/util/PropBean.class | Bin 2358 -> 0 bytes target/test-classes/Test.class | Bin 1531 -> 1364 bytes test/Test.java | 24 ++- 39 files changed, 616 insertions(+), 267 deletions(-) create mode 100644 src/com/api/attendance/persongroup/web/SchedulingResultsActionApi.java create mode 100644 src/com/engine/attendance/persongroup/cmd/GetDatatableCmd.java create mode 100644 src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java create mode 100644 src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java create mode 100644 src/com/engine/attendance/persongroup/service/SchedulingResultsService.java create mode 100644 src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java create mode 100644 src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java delete mode 100644 src/com/engine/common/util/HttpRequestUtil.java delete mode 100644 src/com/engine/common/util/PropBean.java create mode 100644 target/classes/com/api/attendance/persongroup/web/SchedulingResultsActionApi.class create mode 100644 target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCmd.class create mode 100644 target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.class create mode 100644 target/classes/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.class create mode 100644 target/classes/com/engine/attendance/persongroup/service/SchedulingResultsService.class create mode 100644 target/classes/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.class create mode 100644 target/classes/com/engine/attendance/persongroup/web/SchedulingResultsAction.class delete mode 100644 target/classes/com/engine/common/util/HttpRequestUtil$OkhttpInterceptor.class delete mode 100644 target/classes/com/engine/common/util/HttpRequestUtil.class delete mode 100644 target/classes/com/engine/common/util/PropBean.class diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index 5b7a64f69747e9424513ed45041917aacc6b0a2c..614db460d63b7864061f1a9a6cb6d0d9c3ef81ab 100644 GIT binary patch delta 41311 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 delta 33495 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 { + @Override + public BizLogContext getLogContext() { + return null; + } + public GetDatatableCmd(Map params){ + this.params=params; + } + + @Override + public Map execute(CommandContext commandContext) { + String tableName = Util.null2String(params.get("tableName")); + String startDate = Util.null2String(params.get("startDate")); + String endDate = Util.null2String(params.get("endDate")); + String pblx = Util.null2String(params.get("pblx")); + String pbdx = Util.null2String(params.get("pbdx")); + int total = Integer.valueOf(Util.null2String(params.get("total"))); + int current = Integer.valueOf(Util.null2String(params.get("current"))); + int pageSize = Integer.valueOf(Util.null2String(params.get("pageSize"))); + RecordSet rs = new RecordSet(); + Map resultMap = Maps.newHashMap(); + String sql = "select id from "+tableName +" where pbtj=0 "; + List param = Lists.newArrayList(); + + String conditions = ""; + if (!"".equals(startDate) && !"".equals(endDate)){ + conditions += " and bcrq >= ? and bcrq<= ?"; + param.add(startDate); + param.add(endDate); + } +// if (!"".equals(pblx)){ +// conditions += " and dxlx = ?"; +// param.add(pblx); +// } + if (!"".equals(pbdx)){ + conditions += " and dxlx = ?"; + param.add(pblx); + if ("0".equals(pblx)){ + //人员 + conditions += " and pbdxry = ?"; + + }else if ("1".equals(pblx)){ + //人员分组 + conditions += " and pbdxryfz = ?"; + + }else if ("2".equals(pblx)){ + //部门 + conditions += " and pbdxbm = ?"; + + }else if ("3".equals(pblx)){ + //分部 + conditions += " and pbdxfb = ?"; + } + param.add(pbdx); + } + int startindex = (current-1)*pageSize; + String dbType = rs.getDBType(); + if ("oracle".equals(dbType)){ + + }else { + sql = sql + conditions +" limit "+startindex+",1"; + String queryDatatablesql = "select a.id as `key`,b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where a.id>=("+sql+") "+conditions+" limit "+pageSize; + log.info("queryDatatablesql : {}",queryDatatablesql); + param.addAll(param); + log.info("param : {}",param); + List> dataTable = DbTools.getSqlToList(queryDatatablesql,param.toArray()); + resultMap.put("data",dataTable); + } + + return resultMap; + } +} diff --git a/src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java b/src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java new file mode 100644 index 0000000..c7a1126 --- /dev/null +++ b/src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java @@ -0,0 +1,75 @@ +package com.engine.attendance.persongroup.cmd; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.common.util.DbTools; +import com.engine.core.interceptor.CommandContext; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import weaver.conn.RecordSet; +import weaver.general.Util; +import java.util.List; +import java.util.Map; + +@Slf4j +public class GetDatatableCountCmd extends AbstractCommonCommand> { + @Override + public BizLogContext getLogContext() { + return null; + } + public GetDatatableCountCmd(Map params){ + this.params=params; + } + + @Override + public Map execute(CommandContext commandContext) { + String tableName = Util.null2String(params.get("tableName")); + String startDate = Util.null2String(params.get("startDate")); + String endDate = Util.null2String(params.get("endDate")); + String pblx = Util.null2String(params.get("pblx")); + String pbdx = Util.null2String(params.get("pbdx")); + + + String sql = "select count(0) total from "+tableName +" where pbtj=0 "; + List params = Lists.newArrayList(); + + String conditions = ""; + if (!"".equals(startDate) && !"".equals(endDate)){ + conditions += " and bcrq >= ? and bcrq<= ?"; + params.add(startDate); + params.add(endDate); + } +// if (!"".equals(pblx)){ +// conditions += " and dxlx = ?"; +// params.add(pblx); +// } + if (!"".equals(pbdx)){ + conditions += " and dxlx = ?"; + params.add(pblx); + if ("0".equals(pblx)){ + //人员 + conditions += " and pbdxry = ?"; + + }else if ("1".equals(pblx)){ + //人员分组 + conditions += " and pbdxryfz = ?"; + + }else if ("2".equals(pblx)){ + //部门 + conditions += " and pbdxbm = ?"; + + }else if ("3".equals(pblx)){ + //分部 + conditions += " and pbdxfb = ?"; + } + params.add(pbdx); + } + + sql = sql + conditions; + log.info("GetDatatableCountCmd sql :{}",sql); + log.info("params : [{}]",params); + Map dataMap = DbTools.getSqlToMap(sql,params.toArray()); + + return dataMap; + } +} diff --git a/src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java b/src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java new file mode 100644 index 0000000..d3143b2 --- /dev/null +++ b/src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java @@ -0,0 +1,158 @@ +package com.engine.attendance.persongroup.cmd; + +import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; + +import com.engine.common.util.DateUtil; +import com.engine.common.util.DbTools; +import com.engine.core.interceptor.CommandContext; +import com.google.common.collect.Lists; + +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.hrm.company.DepartmentComInfo; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 当递归查询时获得表格数据 + */ +@Slf4j +public class GetDatatableRecurrenceCmd extends AbstractCommonCommand> { + + @Override + public BizLogContext getLogContext() { + return null; + } + public GetDatatableRecurrenceCmd(Map params){ + this.params=params; + } + + @Override + public Map execute(CommandContext commandContext) { + String tableName = Util.null2String(params.get("tableName")); + String startDate = Util.null2String(params.get("startDate")); + String endDate = Util.null2String(params.get("endDate")); + String pblx = Util.null2String(params.get("pblx")); + String pbdx = Util.null2String(params.get("pbdx")); + + String sql = "select a.id as `key`,b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where pbtj=0 "; + + String conditions = ""; + List Dateparam = Lists.newArrayList(); + if (!"".equals(startDate) && !"".equals(endDate)){ + conditions += " and bcrq >= ? and bcrq<= ?"; + Dateparam.add(startDate); + Dateparam.add(endDate); + } + Map resultMap = Maps.newHashMap(); + List> dataTableList = Lists.newArrayList(); + + try { + + if (!"".equals(pbdx)){ + if ("0".equals(pblx)){ + //人员递归查人员、人员分组、部门、分部 + String querySqlbyPbdx = sql +conditions + " and pbdxry = ?"; + List param = Lists.newArrayList(); + param.addAll(Dateparam); + param.add(pbdx); + log.info("递归查询人员-人员节点,sql:{},param:{}",querySqlbyPbdx,param); + List> dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); + if (dataList.size() == 0){ + //查人员分组 + String currentTime = DateUtil.getCurrentDate(); + String queryryfz = "select a.mainid,a.empid,a.filters,a.bdate,a.edate from uf_ryqz_dt1 a,(select pbdxryfz from uf_pbjg where dxlx=1 group by pbdxryfz) b where a.mainid =b.pbdxryfz and a.bdate <= '"+currentTime+"'"; + List> personGroupData = DbTools.getSqlToList(queryryfz); + Set personnelGroupIds = CommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx); + querySqlbyPbdx = sql +conditions + " and pbdxryfz in (?)"; + log.info("递归查询人员-人员分组节点,sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds); + if(personnelGroupIds.size() > 0){ + param.clear(); + param.addAll(Dateparam); + param.add(String.join(",",personnelGroupIds)); + dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); + } + if (dataList.size() == 0){ + //查询人员部门 + String queryDepartmentidAndSubcompanyid = "select id,departmentid,subcompanyid1 from hrmresource where id =?"; + Map dataMap = DbTools.getSqlToMap(queryDepartmentidAndSubcompanyid,pbdx); + String pdeptids = ""; + pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(dataMap.get("departmentid")), pdeptids); + pdeptids = Util.null2String(dataMap.get("departmentid")) + pdeptids; + log.info("pdeptids : [{}]",pdeptids); + querySqlbyPbdx = sql + conditions + " and pbdxbm in (?)"; + log.info("递归查询人员-部门节点,sql:{},pdeptids:{}",querySqlbyPbdx,pdeptids); + param.clear(); + param.addAll(Dateparam); + param.add(pdeptids); + dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); + if (dataList.size() == 0){ + //查询人员分部 + querySqlbyPbdx = sql + conditions + " and pbdxfb = ?"; + log.info("递归查询人员-分部节点,sql:{},pdeptids:{}",querySqlbyPbdx,dataMap.get("subcompanyid1")); + param.clear(); + param.addAll(Dateparam); + param.add(dataMap.get("subcompanyid1")); + dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); + + } + } + } + dataTableList = dataList; + }else if ("1".equals(pblx)){ + List param = Lists.newArrayList(); + param.addAll(Dateparam); + //人员分组 + conditions += " and pbdxryfz = ?"; + sql +=conditions; + param.add(pbdx); + dataTableList = DbTools.getSqlToList(sql,param.toArray()); + + }else if ("2".equals(pblx)){ + List param = Lists.newArrayList(); + param.addAll(Dateparam); + //部门 + //部门递归查、部门、分部 + String querySqlbyPbdx = sql +conditions + " and pbdxbm = ?"; + param.add(pbdx); + dataTableList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); + if (dataTableList.size() == 0){ + String querySubCompanySql = "select subcompanyid1 from hrmdepartment where id=?"; + Map departMentMap = DbTools.getSqlToMap(querySubCompanySql,pbdx); + querySqlbyPbdx = sql +conditions + " and pbdxfb = ?"; + log.info("递归查询部门-分部节点,sql:{},pdeptids:{}",querySqlbyPbdx,departMentMap.get("subcompanyid1")); + param.clear(); + param.addAll(Dateparam); + param.add(departMentMap.get("subcompanyid1")); + dataTableList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray()); + } + + + }else if ("3".equals(pblx)){ + List param = Lists.newArrayList(); + param.addAll(Dateparam); + //分部 + conditions += " and pbdxfb = ?"; + sql +=conditions; + param.add(pbdx); + dataTableList = DbTools.getSqlToList(sql,param.toArray()); + } + + } + }catch (Exception e){ + log.error("catch error : {}",e); + } + resultMap.put("dataTableList",dataTableList); + log.info("dataTableList total size : {}",dataTableList.size()); + + return resultMap; + } + + +} diff --git a/src/com/engine/attendance/persongroup/commonutil/CommonUtil.java b/src/com/engine/attendance/persongroup/commonutil/CommonUtil.java index b56366a..3a81185 100644 --- a/src/com/engine/attendance/persongroup/commonutil/CommonUtil.java +++ b/src/com/engine/attendance/persongroup/commonutil/CommonUtil.java @@ -4,14 +4,12 @@ import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSet; import weaver.general.Util; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -67,7 +65,7 @@ public class CommonUtil { //规律排班明细表数据 - String sql = "select ksts,jsts,hxbz,bcmc from uf_glpb_dt1 where mainid=?"; + String sql = "select ksts,jsts,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?"; List> detailDataList = DbTools.getSqlToList(sql,id); //规律排班适用组织数据 sql = "select dx,dxlx,aqjb from uf_syzz where modeid=? and dataid=?"; @@ -204,4 +202,88 @@ public class CommonUtil { } return result; } + + + /*** + * 获得人员是否在人员分组里 + * @param personnelGrouping 人员分组集合 + * @param userId 人员id + * @return 人员分组主键ID集合 + */ + public static Set getPersonnelGroupingByPerson(List> personnelGrouping,String userId){ + Map>> collect = personnelGrouping.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("mainid")))); + Set personnelGroupIds = Sets.newHashSet(); + log.info("getPersonnelGroupingByPerson collect : {}",collect); + for (Map.Entry>> e : collect.entrySet()){ + List> value = e.getValue(); + for (Map data :value ){ + String edate = Util.null2String(data.get("edate")); + if ("".equals(edate) || DateUtil.getBetWeenDays(edate) <=0){ + String empid = Util.null2String(data.get("empid")); + String filters = Util.null2String(data.get("filters")); + log.info(" empid : {},userId : {}",empid,userId); + if (empid.equals(userId)){ + personnelGroupIds.add(e.getKey()); + }else if (!"".equals(filters)){ + filters = filters.replace("and","and"); + filters = filters.replace("or","or"); + String sql = "select id from hrmresource where 1=1 and " +filters; + log.info("getPersonnelGroupingByPerson filter sql : {}",sql); + List> dataList = DbTools.getSqlToList(sql); + for (Map dataMap :dataList){ + String hrmId = Util.null2String(dataMap.get("id")); + if (hrmId.equals(userId)){ + personnelGroupIds.add(e.getKey()); + } + } + } + } + } + } + + + return personnelGroupIds; + } + + /** + * 获得人员分组集合 + * @return + */ + public static Map getPersonGroup(){ + String sql = "select id,name from uf_ryqz"; + return DbTools.getSqlToMapList(sql); + } + + /** + * 获得部门集合 + * @return + */ + public static Map getDepartMent(){ + String sql = "select id,departmentname name from hrmdepartment"; + return DbTools.getSqlToMapList(sql); + } + /** + * 获得分部集合 + * @return + */ + public static Map getSubCompany(){ + String sql = "select id,subcompanyname name from hrmsubcompany"; + return DbTools.getSqlToMapList(sql); + } + /** + * 获得班次信息集合 + * @return + */ + public static Map getClassesInformation(){ + String sql = "select id,mc name from uf_jcl_kq_bcxx"; + return DbTools.getSqlToMapList(sql); + } + /** + * 获得候选班次集合 + * @return + */ + public static Map getCandidateTeam(){ + String sql = "select id,mc name from uf_jcl_kq_hxbz"; + return DbTools.getSqlToMapList(sql); + } } diff --git a/src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java b/src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java index a96b71f..e24a514 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java +++ b/src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java @@ -36,7 +36,7 @@ public class SchedulingJob extends BaseCronJob { @Override public void execute() { String currentDate = DateUtil.getCurrentDate(); - String sql = "select * from uf_glpb where edate > ? and bdate<=?"; + String sql = "select * from uf_jcl_kq_glpb where edate > ? and bdate<=?"; List> dataList = DbTools.getSqlToList(sql,currentDate,currentDate); log.info("dataList : [{}]",dataList); try { diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java b/src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java index 4b6c6cd..cdcd9af 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java +++ b/src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java @@ -59,7 +59,7 @@ public class DayRegularScheduling implements RegularScheduling{ //规律排班明细表数据 - String sql = "select ksts,jsts,hxbz,bcmc from uf_glpb_dt1 where mainid=?"; + String sql = "select ksts,jsts,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?"; List> detailDataList = DbTools.getSqlToList(sql,id); //规律排班适用组织数据 sql = "select dx,dxlx,aqjb from uf_syzz where modeid=? and dataid=?"; diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java b/src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java index 186af43..e123a51 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java +++ b/src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java @@ -58,7 +58,7 @@ public class MonthRegularScheduling implements RegularScheduling{ RecordSet rs = new RecordSet(); //规律排班明细表数据 - String sql = "select ksr,jsr,hxbz,bcmc from uf_glpb_dt1 where mainid=?"; + String sql = "select ksr,jsr,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?"; List> detailDataList = DbTools.getSqlToList(sql,id); //规律排班适用组织数据 sql = "select dx,dxlx,aqjb from uf_syzz where modeid=? and dataid=?"; diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java b/src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java index 68abe89..9412c20 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java +++ b/src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java @@ -60,7 +60,7 @@ public class WeekRegularScheduling implements RegularScheduling{ //规律排班明细表数据 - String sql = "select ksxq,jsxq,hxbz,bcmc from uf_glpb_dt1 where mainid=?"; + String sql = "select ksxq,jsxq,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?"; List> detailDataList = DbTools.getSqlToList(sql,id); //规律排班适用组织数据 sql = "select dx,dxlx,aqjb from uf_syzz where modeid=? and dataid=?"; diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java b/src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java index 037cb63..71aaf13 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java +++ b/src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java @@ -58,7 +58,7 @@ public class YearRegularScheduling implements RegularScheduling{ RecordSet rs = new RecordSet(); //规律排班明细表数据 - String sql = "select ksrq,jsrq,hxbz,bcmc from uf_glpb_dt1 where mainid=?"; + String sql = "select ksrq,jsrq,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?"; List> detailDataList = DbTools.getSqlToList(sql,id); //规律排班适用组织数据 sql = "select dx,dxlx,aqjb from uf_syzz where modeid=? and dataid=?"; diff --git a/src/com/engine/attendance/persongroup/service/SchedulingResultsService.java b/src/com/engine/attendance/persongroup/service/SchedulingResultsService.java new file mode 100644 index 0000000..ea105f0 --- /dev/null +++ b/src/com/engine/attendance/persongroup/service/SchedulingResultsService.java @@ -0,0 +1,7 @@ +package com.engine.attendance.persongroup.service; + +import java.util.Map; + +public interface SchedulingResultsService { + Map queryDataTable(Map params); +} diff --git a/src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java b/src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java new file mode 100644 index 0000000..ea3eca9 --- /dev/null +++ b/src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java @@ -0,0 +1,116 @@ +package com.engine.attendance.persongroup.service.impl; + +import com.engine.attendance.persongroup.cmd.GetDatatableCmd; +import com.engine.attendance.persongroup.cmd.GetDatatableCountCmd; +import com.engine.attendance.persongroup.cmd.GetDatatableRecurrenceCmd; +import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.persongroup.service.SchedulingResultsService; +import com.engine.core.impl.Service; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; + +import java.util.List; +import java.util.Map; + + +@Slf4j +public class SchedulingResultsServiceImpl extends Service implements SchedulingResultsService { + private Map personGroupMap = CommonUtil.getPersonGroup(); + private Map departMentMap = CommonUtil.getDepartMent(); + private Map subCompanyMap = CommonUtil.getSubCompany(); + private Map classesInformationMap = CommonUtil.getClassesInformation(); + private Map candidateTeamMap = CommonUtil.getCandidateTeam(); + + @Override + public Map queryDataTable(Map params) { + String recurrence = Util.null2String(params.get("recurrence")); + Map resultMap = Maps.newHashMap(); + int current = Integer.valueOf(Util.null2String(params.get("current"))); + int pageSize = Integer.valueOf(Util.null2String(params.get("pageSize"))); + int startindex = (current-1)*pageSize; + int endindex = current*pageSize; +// Map personGroupMap = CommonUtil.getPersonGroup(); +// Map departMentMap = CommonUtil.getDepartMent(); +// Map subCompanyMap = CommonUtil.getSubCompany(); +// Map classesInformationMap = CommonUtil.getClassesInformation(); +// Map candidateTeamMap = CommonUtil.getCandidateTeam(); + + if ("1".equals(recurrence)){ + //递归查询方式 + Map result = commandExecutor.execute(new GetDatatableRecurrenceCmd(params)); + List> dataTableList = (List>)result.get("dataTableList"); + int total = dataTableList.size(); + resultMap.put("total",total); + if (endindex > total){ + endindex = total; + } + dataTableList = dataTableList.subList(startindex,endindex); + for (Map map:dataTableList){ + SetBrowSerName(map); + } + log.info("dataTableList : {}",dataTableList); + resultMap.put("data",dataTableList); + + }else { + //非递归查询方式 + Map result = commandExecutor.execute(new GetDatatableCountCmd(params)); + int total = Integer.valueOf(result.get("total").toString()); + params.put("total",total); + resultMap = commandExecutor.execute(new GetDatatableCmd(params)); + List> dataTable = (List>)resultMap.get("data"); + for (Map map :dataTable){ + SetBrowSerName(map); + + } + resultMap.put("total",total); + } + + return resultMap; + } + + /** + * 塞入 人员、人员分组、部门、分部、班次信息、候选班组浏览按钮显示值 + * @param map + */ + public void SetBrowSerName(Map map){ + log.info("personGroupMap :{},departMentMap:{},subCompanyMap:{},classesInformationMap:{},candidateTeamMap:{}" + ,personGroupMap.hashCode(),departMentMap.hashCode(),subCompanyMap.hashCode(),classesInformationMap.hashCode(),candidateTeamMap.hashCode()); + String dxlx = Util.null2String(map.get("dxlx")); + if (dxlx.equals("0")){ + //人员 + String lastname = Util.null2String(map.get("lastname")); + String pbdxry = Util.null2String(map.get("pbdxry")); + pbdxry = pbdxry +"-"+lastname; + map.put("pbdxry",pbdxry); + + }else if (dxlx.equals("1")){ + //人员分组 + String pbdxryfz = Util.null2String(map.get("pbdxryfz")); + pbdxryfz= pbdxryfz+"-"+personGroupMap.get(pbdxryfz); + map.put("pbdxryfz",pbdxryfz); + + }else if (dxlx.equals("2")){ + //部门 + String pbdxbm = Util.null2String(map.get("pbdxbm")); + pbdxbm= pbdxbm+"-"+departMentMap.get(pbdxbm); + map.put("pbdxbm",pbdxbm); + + }else if (dxlx.equals("3")){ + //分部 + String pbdxfb = Util.null2String(map.get("pbdxfb")); + pbdxfb= pbdxfb+"-"+subCompanyMap.get(pbdxfb); + map.put("pbdxfb",pbdxfb); + } + String bcxx = Util.null2String(map.get("bcxx")); + String hxbz = Util.null2String(map.get("hxbz")); + if (!"".equals(bcxx)){ + bcxx = bcxx +"-"+classesInformationMap.get(bcxx); + map.put("bcxx",bcxx); + } + if (!"".equals(hxbz)){ + hxbz = hxbz +"-"+candidateTeamMap.get(hxbz); + map.put("hxbz",hxbz); + } + } +} diff --git a/src/com/engine/attendance/persongroup/web/PersonGroupAction.java b/src/com/engine/attendance/persongroup/web/PersonGroupAction.java index 6817078..d0834f1 100644 --- a/src/com/engine/attendance/persongroup/web/PersonGroupAction.java +++ b/src/com/engine/attendance/persongroup/web/PersonGroupAction.java @@ -2,7 +2,6 @@ package com.engine.attendance.persongroup.web; import com.alibaba.fastjson.JSONObject; import com.cloudstore.dev.api.bean.SplitPageBean; -import com.cloudstore.dev.api.util.Util_TableMap; import com.engine.attendance.persongroup.service.PersonGroupService; import com.engine.attendance.persongroup.service.impl.PersonGroupServiceImpl; import com.engine.common.util.ApiReturnTools; @@ -20,7 +19,9 @@ import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -65,32 +66,5 @@ public class PersonGroupAction { } } - /** - * 获得排班结果 - * @return - */ - @GET - @Path("/getSchedulingData") - @Produces({"text/plain"}) - public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) { - try { - Map paramMap = ParamUtil.request2Map(request); - Map dataMap = new HashMap<>(); - String dataKey = Util.null2String(paramMap.get("dataKey")); - - SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap", "operates", "head", "sql", "checkboxpopedom", "browser", "otherHeads"); - JSONObject sqlObj = bean.getSql(); - String sqlFrom = Util.null2String(sqlObj.getString("sqlform")); - String tableName = sqlFrom.substring(4, sqlFrom.indexOf("t1")).trim(); - - - - return ApiReturnTools.success(dataMap); - }catch (Exception e){ - log.error("execute fail,catch error: [{}]",e); - return ApiReturnTools.error("500","saveApplicableOrganization error"); - } - } - } diff --git a/src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java b/src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java new file mode 100644 index 0000000..9e65110 --- /dev/null +++ b/src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java @@ -0,0 +1,32 @@ +package com.engine.attendance.persongroup.web; + +import com.engine.attendance.persongroup.service.SchedulingResultsService; +import com.engine.attendance.persongroup.service.impl.SchedulingResultsServiceImpl; +import com.engine.common.util.ApiReturnTools; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import java.util.Map; + +public class SchedulingResultsAction { + + private SchedulingResultsService basicsetService = ServiceUtil.getService(SchedulingResultsServiceImpl.class); + /** + * 获得排班结果列表查询 + * @return + */ + @POST + @Path("/getSchedulingData") + @Produces({"text/plain"}) + public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map paramMap = ParamUtil.request2Map(request); + Map dataMap = basicsetService.queryDataTable(paramMap); + return ApiReturnTools.success(dataMap); + } +} diff --git a/src/com/engine/common/util/DbTools.java b/src/com/engine/common/util/DbTools.java index b487581..159a08d 100644 --- a/src/com/engine/common/util/DbTools.java +++ b/src/com/engine/common/util/DbTools.java @@ -71,6 +71,21 @@ public class DbTools { } + public static Map getSqlToMapList(String sql,Object...value){ + RecordSet rs = thread.get(); + Map result = Maps.newHashMap(); + if (value == null || value.length <=0 || "".equals(value)){ + rs.executeQuery(sql); + }else { + rs.executeQuery(sql,value); + } + while (rs.next()){ + result.put(rs.getString("id"),rs.getString("name")); + } + return result; + } + + public static boolean update(String sql,Object...value){ RecordSet rs = thread.get(); diff --git a/src/com/engine/common/util/HttpRequestUtil.java b/src/com/engine/common/util/HttpRequestUtil.java deleted file mode 100644 index 4c2216a..0000000 --- a/src/com/engine/common/util/HttpRequestUtil.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.engine.common.util; - -import okhttp3.*; -import weaver.general.BaseBean; - -import java.io.IOException; -import java.util.Map; - -public class HttpRequestUtil extends BaseBean{ - private static int retryTimes = 2; - private static BaseBean bb = new BaseBean(); - - /*** - * - * @param dataJson - * @return - */ - public static String doPost(String url,String dataJson){ - - bb.writeLog("url:"+url); - bb.writeLog("dataJson:"+dataJson); - - String msgData = "" ; - - try { - OkHttpClient client = new OkHttpClient().newBuilder() - .addInterceptor(new OkhttpInterceptor(retryTimes)) - .retryOnConnectionFailure(false).build(); - MediaType mediaType = MediaType.parse("application/json"); - RequestBody body = RequestBody.create(mediaType, dataJson); - Request request = new Request.Builder() - .url(url) - .method("POST", body) - .addHeader("Content-Type", "application/json") - .build(); - - Response response = client.newCall(request).execute(); - - int code = response.code(); - String bodyMsg = response.body().string(); - bb.writeLog("response.code():"+code); - bb.writeLog("response.body():"+bodyMsg); - if(code == 200){ - msgData = bodyMsg; - return msgData; - } - } catch (IOException e) { - e.printStackTrace(); - bb.writeLog("HttpRequestUtil--e:"+e); - } - //bb.writeLog("msgData:"+msgData); - return msgData; - } - - /*** - * - * @param param - * @return - */ - public static String doGet(String url, Map param) { - - if (param.size() > 0) { - url = url + "?"; - for (Map.Entry e : param.entrySet()) { - url = url + e.getKey() + "=" + e.getValue() + "&"; - } - url = url.substring(0, url.length() - 1); - } - - return doGet(url); - } - - - public static String doGet(String url){ - - bb.writeLog("url:"+url); - - String msgData = "" ; - - try { - OkHttpClient client = new OkHttpClient().newBuilder() - .addInterceptor(new OkhttpInterceptor(retryTimes)) - .retryOnConnectionFailure(false).build(); - Request request = new Request.Builder() - .url(url) - .get() - .build(); - - Response response = client.newCall(request).execute(); - - int code = response.code(); - String bodyMsg = response.body().string(); - bb.writeLog("response.code():"+code); - bb.writeLog("response.body():"+bodyMsg); - if(code == 200){ - msgData = bodyMsg; - return msgData; - } - } catch (IOException e) { - e.printStackTrace(); - bb.writeLog("HttpRequestUtil--e:"+e); - } - bb.writeLog("msgData:"+msgData); - return msgData; - } - - - - public static class OkhttpInterceptor implements Interceptor { - // 最大重试次数 - private int maxRentry; - - - public OkhttpInterceptor(int maxRentry) { - this.maxRentry = maxRentry; - - } - - - @Override - public Response intercept(Chain chain) throws IOException { - /* 递归 2次下发请求,如果仍然失败 则返回 null ,但是 intercept must not return null. - * 返回 null 会报 IllegalStateException 异常 - * */ - return retry(chain, 0);//这个递归真的很舒服 - } - - Response retry(Chain chain, int retryCent) { - Request request = chain.request(); - Response response = null; - BaseBean bb = new BaseBean(); - try { -// System.out.println("第" + (retryCent + 1) + "次执行发http请求."); - response = chain.proceed(request); - } catch (Exception e) { - bb.writeLog("OkhttpInterceptor--e:"+e); - if (maxRentry > retryCent) { - return retry(chain, retryCent + 1); - } - } finally { - return response; - } - } - } - -} diff --git a/src/com/engine/common/util/PropBean.java b/src/com/engine/common/util/PropBean.java deleted file mode 100644 index 2ad6a80..0000000 --- a/src/com/engine/common/util/PropBean.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.engine.common.util; - -import org.apache.commons.lang.StringUtils; -import weaver.conn.RecordSet; -import weaver.general.BaseBean; -import weaver.general.Util; - -public class PropBean { - - public static BaseBean bb = new BaseBean(); - public static String active = Util.null2String(bb.getPropValue("developProp","active")).toUpperCase(); - - /*** - * - * @param pkey - * @return - */ - public static String getUfPropValue(String pkey) - { - BaseBean baseBean = new BaseBean(); - if(StringUtils.isEmpty(pkey)){ - return ""; - } - - if(StringUtils.isEmpty(active)){ - active = Util.null2String(baseBean.getPropValue("developProp","active")).toUpperCase(); - } - - //baseBean.writeLog("propbeanactive:"+active+" pkey:"+pkey+" "+active+"VALUE"); - String pvalue = ""; - try{ - RecordSet rs = new RecordSet(); - String sql = " SELECT DEVVALUE,TESTVALUE,PRODVALUE FROM UF_PROP WHERE PKEY = ?"; - rs.executeQuery(sql,new Object[]{pkey.trim()}); - - if(rs.next()){ - pvalue = Util.null2String(rs.getString(active+"VALUE")); - } -// baseBean.writeLog("pvalue:"+pvalue); - }catch (Exception e){ - e.printStackTrace(); - bb.writeLog("propbean-e:"+e); - } - return pvalue; - } - - - /*** - * - * @param pkey - * @return - */ - public String getUfPropValueStatic(String pkey) - { - BaseBean baseBean = new BaseBean(); - if(StringUtils.isEmpty(pkey)){ - return ""; - } - String active = Util.null2String(baseBean.getPropValue("developProp","active")).toUpperCase(); - String pvalue = ""; - try{ - RecordSet rs = new RecordSet(); - String sql = " SELECT DEVVALUE,TESTVALUE,PRODVALUE FROM UF_PROP WHERE PKEY = ?"; - rs.executeQuery(sql,new Object[]{pkey.trim()}); - if(rs.next()){ - pvalue = Util.null2String(rs.getString(active+"VALUE")); - } - baseBean.writeLog("pvalue:"+pvalue); - }catch (Exception e){ - e.printStackTrace(); - bb.writeLog("propbean-e:"+e); - } - return pvalue; - } - -} diff --git a/target/classes/com/api/attendance/persongroup/web/SchedulingResultsActionApi.class b/target/classes/com/api/attendance/persongroup/web/SchedulingResultsActionApi.class new file mode 100644 index 0000000000000000000000000000000000000000..3483ada05142319ee22e0abc609441f8c9749c81 GIT binary patch literal 718 zcmbtS%T60H6g>`k4g-|*L3tIiK!Psn4Lc|(LSi*S2vGLU#C04wc4T{iepb~*t1kEe zKC0@S38JV~rAjP(-;Z;B@BPmocL4UWm7sw)EvzJXi`5QlSZiUOVa_;_Z`lh|IYd_7T1Dd^`fv*Ph?*QO~88Ax+u!RgsYpCF}M6Ca3A=&h$Cv%xE7|M z(wk4ghDUII1};S#9fpt38mxtl6q|ULqKVc+F=-Wj?bF`>`B4ljf3ELT_uo zY@-Z2yVca(2&?#s5g{Dx{k?c>({VKDXc*Q?bR^YCrlE-@q;cYmc;o#yurHN+o@lc& zCP+z6X8~BiB57?bJtl8g9-z~$eaGBa)XM@4zYCP7`GRaUETc<&p1d#Vy$X2!3p>5K A`v3p{ literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCmd.class b/target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCmd.class new file mode 100644 index 0000000000000000000000000000000000000000..59c54b2e3b80aaa777e0a888f9d045c56969a8dd GIT binary patch literal 4601 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 O-s-{6;&YUyF#m5ZhIak{ literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.class b/target/classes/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.class new file mode 100644 index 0000000000000000000000000000000000000000..7f17904654d02f3e2d6e756c0dfb17f0e240ffe2 GIT binary patch literal 7144 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 Lv46{49sB%0E7%Ui delta 3109 zcmZWr3v^V~72W$yl6Nz?NrpfO5E4c}goK}#pJ*u{@-s*QD}h!7GO6+sfblW+>3rwPxLW-o59ZbM8L-oI86* z|Ijb?&iOsB0cgiA&7f$cbi!DIEiLclaLW-K zX?Yim2`AiKLyNFQ6qA(qs)^;{&f%%kT#m9F%`yLDr~jz&C8MJ*ODyl^SeHeX<5(({ z?iCf$s%WIRGS;soI<8_&Rb~puhghbmJcPrR_i%#C3d>4PbQ!Uj$0{N{9^s^DX?dG| z#g!pOr9LUddoAzdWXmbM-*PI;Ts~kqjniGmEN5`0<%1mQ@*&Gv98PquDk)b~;j*e| zRZDM2MviwhV~Kf~vn}Uvwl^U&FHnP*y#<*$wPx@UfzZnGQO>m-%6Z<7%+Z0zINxg+ zDmA0Iz;YoMdGkZz=8G+t&=azkW9$}*6i+ECt%?#!m7}8LEtl%#2ccngmicio>~gu~ z3O;W61V`5NsFlUGE4hlWk&>!O<;W7cDcrKE!PoQm%aCimPCr96%iui@}eJ&cQ`lCJ5;A{#uac5Dv8#FviCD(J)b3- zd21Th_P(r}9f)v)my~l_^Trz1I}}Kj@3AG(TS}&Qk2hQ#dd_kaw^;mIDZ@K>*Xxqk zo?E?W-p72=>z`jVB%-Q=nnVMiEs~66u~g$^eYMd{&B+Bj!D$u^;Y zsdzwNshEc8(wgj@%s(9SbvqzkV|^sag^OHuw1#MfJQaC92A~m!BP=^t;bAn!LNvj1 zXogo%5Vzf1Ct7JQh6j->D|_(}W@%2sZt2gGXBRs#8*}6_h#EX1DIhDY@hIjZDJEmt zm?y<#Jf>sqG$+i>zhrK~C36d9E^%~`93)OIl-^=#jKGa3Ll;z{ zs{rh-;Co^LdSNyCU=51!ECyjKZpTgx!K)aG6SxCkV;IiiP9|XlEk-gEcQK4&7GM;w z#c1}z7#5)<#)-I_GclI)Fpg_b$^#hBV<_Wsl=BLTyF$ z37*oCI&4B0PirlUncDYFhZxokp7EUs(VKL0KiSslh_yOF)N=~4PLhMBP9v;_xq+hcdsk0b6)8Uf}I`k;Ac#V^Ga9yu?{} znI5*sxE4Fq<#zH7?BaXa%}=q1U*Q#=#j8#Ld!2N==H%dYCyY0ow%F&~h&P>{*zfeg zTTT%UIQ?Wn2(Y^a9$*%}AgF+`?B`x%v zSgBCmD@apBs)vQ|TpjbJ*Ci<*l6=lPFwQgqyH8-JJCl_WwK}=(fc^NT(&2ZyF0zqu z_SPk5+b%it(~hH599v(>RlB#p~oyMvI|u;$o3=Q6)#^ch5nnk)!(YffGpWh)q6H0C6&+f1#VWP X|J1tQAHI|BNqmog#ig@q+2?-*^_7Kh diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.class b/target/classes/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.class index 9df1fc9948250dcbb07f78dfbba98513106c6a80..edeca6d389f36d755d827c7de103f9989907d4d5 100644 GIT binary patch delta 44 zcmX>ib6RG@113h(%@3LU7$q!=Q*%<2OBA#e(u(qP6-v|MvyyY-vkNynu&{6e0Btf4 AHvj+t delta 37 tcmX>tb3|st113h}%@3LU7zK@rQ*%<2OBA#e(u(qP6-v`KyR)!x0RRIR3|jyI diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.class b/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.class index 0136bb320cf0bc2261eaa154c8d3370805e97abb..3a056a5c29d508e3f555529e6f2a253e999c3d79 100644 GIT binary patch delta 45 zcmbPgHOFd0I4i3;BZG>@WLZ{;$tA3cjAoOkv2I~>ob1h}%$Aj$6Q5nUIhSpP7yud+ B4D|p2 delta 37 tcmbPZHPvcEI4g@GBZJE1gPf9+OIQ^d4JJ=x-NI-!*_%yyb1B<$F#ym)3hw{_ diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.class b/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.class index ac52ddec0d2d7a42c8487ffdc57f0f538269cda3..26523b24a3ff8a6e86ad88b5b9f91011eb0f8e65 100644 GIT binary patch delta 44 zcmX?Ob=hh|7AuP-BZJE1hn$j=+gTMEEhevIy})Qcxr$AZEh{-EKD%)9EVfNz07%OY Az5oCK delta 41 xcmca?b;fE#7AuP>BZJE1L~h~9bu4U?+gTMEO(w5oy})QOxr$A3^CGs5VgL;k4ATGr diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.class b/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.class index 97a9936b379928187969418b45e055795fc98262..d494078e2af2f3814e907dafebc46a69364fff5c 100644 GIT binary patch delta 77 zcmX?Wd(C#kN>)+9oW$Iulth)}{M>@ll2jE#Lq-Ob$%_2KlP|D}3u4Gl{?59c(Q)#6 THf6S~)*UoW$Iulth)}{M>@ll2jE#Mg|p)$%d>FlMk@4PQJs+BY>`A@=w<7 Qj8>C3vMF!A&GuUy0H(hg-T(jq diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.class b/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.class index 79590e2f6932df6f9605f9c2f8f744bdbb7eb9e0..d6b83cf0a8fd27933ff8fddce2e42697ce06b257 100644 GIT binary patch delta 3320 zcmbtWd3+Vs75>iL$(x(^CdtcW9TLb&SwliteI^P-2*_d-Bnc282_X=I2_%8A`Pc$( z6?7<-RjSsAMFm4cf<>^cVAX21Ewxr!T5DZuEp4rBS;TYSOCI^P+JF50X6}6V+;hM4 z-7|OYoYVOq=lNg${P^<#hSMT9644rt5P8$|CBAQ<-Hl`Dkm!^+?m<4DvpC=jZu}5G z^7!#%ylCLG8)xv68vKbOdRaBEsOD8=`>6-7;dRygOrk-e(Tz9oro_)BexU^ZQsS({ zY6HJ=V<=kPcniN)=xvGLsOLMXIj79OmH3^KeqOEb_ip^bk9Q6H(E{NE4@>z_srpF8 z{IkSziI3R@f06h^;;#}HB>pDxcZq*Ud@AuzCGazee@XmXP5F<+MTtuim)*F6&n2!( zg39VSgUC%934?TksI99eSX1hjS7$f0ZKYR43~>ew3gfJ?7=v5}8BSH$BrCeMd}+mk z^32M*rS(mXRhdJFIVZ!i{@0xATnQ_aWteMXHs&}Lu73TcN#W!+$wQ_=5hg`altEsT zqRBEThGGqhGbx@DoFlGYG}d|5mEo$Xtev-Hne&M&%av%7O}(5nV~t3nWanWc-rw6x zW|WKic=4!7DU@nZnn~%DVNj+?ed!y7h??>h<=IV*i)*u|me(89&!qk|z@&i`YtkSZ zY*H2tF)5pJOd3kLyhxLV(QuPS&`5(unKYWNBk1)NjWq=2a-}Kxozvbn&zEn(tKKA z;t@_L9>xJ@n>B(KIxkuuQnm9;%oKkKZymxczI&{;a+NW&@E-mF*Xx4SE6G$u-cFOcpU73B;OT%n?dZ!=P3)nGsiVB%0 zas%>DA>Ws3r*jq(*v$$1{Czu3bYiR;N%f`M z>DIVV8Zvm*Z3a+p zCM&S6#p)(*MU)C-n_blLc5)|*G!(aziwT1?{k~$d&EEX}1MYasy0y#wHD&KMzrbcC zYd0dS+j&!Jq4z5wz>sQ?-Cf%!{PGlo8zeU@=iON zjd}-W6syxfS06Ji=l?;G-Q*t)KBrJjReUTppp=?1i#B66ZNnVek1{%mxpW@$=u^z6 zODNZpP@(0ZQY*p&Z5FDuGE{3dSgbXpM%#=f+IG}xyK#s1IO?<`sMpS5nf3-6v~y_G zE}%)fgq1>~S@gjw(I0F4A{XmK9{ge=){B|gC@Qd7)S*SJ!dB6OyTo?fE%xCa(Te-T zQQR+H!Zz_H9uV)q5g%ZO_zXLB4G-y2*rnUpqxZ#LJqP>reC*c?aX_DeNAyK_Oka*C z^d=nCoAIQ+22bfNc$yC|KWIKO=#sV)OHj)nSdKOhOK}HMwIVGYb&S%q8cm`e%aE=$ z(?u+2zYMAp5olo4iyE}6Xk?T`&DupYv0pNs)Y`BDE76MT ztmYXBfM4IzeRMKf!^4CGy$)-6SVM+hiFJ$wa`c(FlaY=By?|9$^C4WMkHmVmxlpDL zzy?MJYV>4mWF)bYGqQGO7)9eFu@~QDWRVb?a6gNVA(vQ>ZM@D{3K#3Jodw2G zq-e$i>=%y*dEeE;)0JH(lwHRkO79Ln(Sixw!3hi|YX|>m_;0~^*}-`UN^wF`oRAbJ zB;{KyB^cJ>u>2FEL5RCbkw`GG)4;b4JQTe6&!mt)Wat5Q1@LYI!HXyDVfWp@Wu)-X zWmpFGUZo_Ye>rIns;+1TzJfCte{Tx+)5MyaQEH;2k)~y1o1N!l#$24SE(Al|70J zFTSI8GxKmE)5SBAy;Tun4zy+lXxjZKKKx%Kg*`~j010?IKNc!)(gGA*O;{xzC~X5D yGpdA{&uy^8iDk9l4Uj%gmHc#rsGO>(f_KvoxUWi<6YTRmPQr640N=x(@ctK?T$OYH delta 3348 zcmbtX33yc175>k=FY|6DFUc^;BzalL${Lms_FHDYI2;Q_A)c1_b{LN18Hszskb-BO_zq4;_$0PSY<1!! zPN|_qVw=Rh65AzqIPqOPC$URnx5OR;txkAwOyYS1ZBDe~w8RS%-wVS8yy)hHKXl?{ z{3y(abNI1=^G>{iSC#W8is+|m_?Z*0;dM3qTshtd!<%?Z4Zo0BC$Zj%xABg|yAtmy zmA{mDUt+U?3r=L?n40%1g+7q@P<{Sd4Ie4ui^}&KiQjS&K76c7{hbrP$0r8<;0EEd zFc$SErSGyz{AY=JiNC0bD-wT|_?yJvC9X>RL*jFZe@gsI(O#4Iw?v1U@`c28i5rsO zBqB|ckff{req>OHlN@9i#7MIpfI*?$HI`tI)1WZBC?q%9RaLxtMM-hS z%9_=+>*`B0h7dCB`A#csU441g;Mv8sWBL^msFd)Zky-ZDkR@^%mYZ0DrFNmCPo`;7 zI7OHgNiKtWnB=A?gQ89HP>e~j6laiSQamLPJoX9U5d^ROvLoHT>=@ukG%1OC+9}2+ zkxVJ}5hKQz>LOR9gVJ31rb+3PVNfrVdQ%^R`kK^_`V+z{iq{tp?viRyrbz>6ph<%$ z&ZNPVWzrDJ=4wqEO2bSVP9sbjNu#)UlSY%*q%kzspm8RRrwIhTc13*!7t7No(rsjC z%9J#dCMmATG=&|^Jej7NG>sBWnoc<;<a@K9Ysm}9>|bHWT-Zc;I=Ak5(JqgyV9=4x^!l{isIr7hX!F$xvc zH5&*Cef!xikq{|stJc*`DQ>7EB=()*x3zd8rjdOi+-ny_o)d*sW-r>SmDqlWUbp zcT$y!r}*c_ba=cw2S2p;1&!h(SW|C|_TYzyt2qtKlw z=UEkO6(ECQC8{{6n0;|9Ap_8NwUk6#Y4uc- zy$7}Xtt3A>tZfa{mV64DdyL~n#1#lDc|n1$%wrc6gjm)BUpvMLSW#B8N;zI+`{kd- z1aFF!(vC!em3$f#!F%d$s>n(0NY=RY3EosIwH;}M1KhFepIE7)9g~$O#hYfOxu*o% zkj_<4u{z6SJhiJE?m<>qs}IxmBa6+`yUdJpDA=T2Zs`m^SHRSak?xs1PfZ)>pEffX zo5Qg=-D26Ddy{Ea8+rsoXS?ULVXk`~=O3?g&Fa@--gH0jURGxK(M0!r%k-lpCY$QM znX8Mq8IdZDWp+}>Sc&bpT|-_oIhZg&)8{KDTQQceD;)2+7j%Zd#`d83B{nNr2N3SQ zqnkkae+xtz3-kqe{)@t(l2NQA5Iv~7z*O#5m%xRc0>irnbiBUZL(LtHRu4AnZCI3d zk{?SQ{4mp6*jMA$`$l6C`zaEc+dT$)khv2Y29!K;XJgzUq6M8wG((7d-b|HLCgf8lp`?4Qi31&DYYfhEb|ksY$Fw9n!Q0x`uj= zOQ$jsj&+RUsb0H*^^6jzLA!X_Au^Z)RXc>0yeSNqEwNO%{(I( z@aem{woXQOvzrjB*Ww;_Ye?5iSYb79q*;0%wlLB$S)YQfyv2rKo<0)W*yg|zy+7_{ zWS~M%!gfXy8@MAo7=>c99)_KaoZQLl*u^LeP2vi6GxC{uQhba(48w6;T)=&}pZEC_ z;$1wzwn&^2=kYb}f(!46lX#F(4}2;PV=p5&39%gyvFIprh^^Sibw=~yb`KtAfgXww z4X`;b29NNvt3_C6cN>G7~Ng?vFnH*nC84;cu&c+z1GKLm6jnOz-- zGH~PuB_QqAq}`}Gvl;jb&H?_|Bi)p#Z2lKdRr!H0P#*BxuA~^>t*ZDR5(e@C*T9Q4 z1ds6#qv3IvQ{5!E$9zh|%j-=Y>aPBo?!2zEgtxroD%Phq5C2U9{P^6wHMsDkTD(le z_mWPc5lo|Q6lQ;SzMrQR1t%0qH;(DuICw2G2YB&*D{xC;oa$%byMw#14Mi=;(bN`3 r-58=-ZnK~DC{^;O6GY{-nksnls6RaFhH{2u&f+Efz>hBBQ~dEu&{?Cb diff --git a/target/classes/com/engine/attendance/persongroup/service/SchedulingResultsService.class b/target/classes/com/engine/attendance/persongroup/service/SchedulingResultsService.class new file mode 100644 index 0000000000000000000000000000000000000000..78089b15bf3d2fa1e66700ae9cd686fe9ab558ba GIT binary patch literal 362 zcma)2K}rKb5UfsOHi;m9K=7y+=i+U}gNP?ZaQr}L(u@!d%;MY9(03Rhzb}zCZ zc&lovs;m3!`{NV9B@QbrE361dZ&~8|Ehm2FwHLza+5MJxta5T*J#br}k2qneoei9F zEOI}RUkz%{!781i3%33>d0cPBr22Xs`cD^OrJEd$+_`<#6K!5(lYLq8BwhBY(-L>i z$i@Bw!i{NOl?3a8C{9VjhJz8+O6;0oW0PCe4F>gB65+W2Mt{%Heoi1v$`=8e5vG_G Oeo)v1^Ma}#Eq(w9|8HOb literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/persongroup/service/impl/PersonGroupServiceImpl.class b/target/classes/com/engine/attendance/persongroup/service/impl/PersonGroupServiceImpl.class index 93e3c6ac526c67f6afa16b5d4d287b965e4dcb13..dfb71d4348e460b775fe73905965a1bca3f784cb 100644 GIT binary patch delta 69 zcmX?Qf6jix0X9aJ$p_h#*bL1X8Qe4`e-M+MoGmIoS%y7{QF8JDc5x;{v&qxhH6R>T QLsLcusIbZA&+OO50oG*`(*OVf delta 60 zcmX?Sf69Kt0X9bE$p_h#SS%SC+$IN#nogEwPhymq+`ul*Xfb&vy9R{KV$R3_5j5NU Io&CBv01~hedjJ3c diff --git a/target/classes/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.class b/target/classes/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..c3acaf1c6191f711f0a35b0ff8822362dfbb1b5f GIT binary patch literal 5392 zcmbVQ349dQ8UMfRW@mOY2&^m^MTA;3un7x@K@$W`5R4|#vWUfdvOC!2S8a>+=29uE&?#_4-YOJx_Qpc4l$+f#{+-1hJQ?a;HNZYB-D$Kb9+pL7sxt20! zB(1zzaQZCUQCemcO9S1xY~HkYsdXfgF^fg3*kcdo3R%-h=WKqmr47D^mImgThh#m%| zLQWZUt(oPqLIo>PDikapMV?;;vN|?obJZzFYA!8x>3K6{#nYqY3Kbp3DQzdM5#s3= z51d=;&0YDjM>p2l>7_(Df2NrsDo5gunb=O#ln9 z7}B`qbQN+t8R&j9EB#rgzf)$P&a`!GwI9e2Bu5Inq&F2XI4UDUa3Jdeg9A+0zRqmC%qN$4whQo~mbd<|dM@C^gs#J4nj+rW45T?604 zQ_Rs744r}R;|B(Qh#v{8JAB0@vdP#+%aLW|$eP_$$>#2CQkq-R@M8l%!B1H(HC>9~ znq13jG4L}yCGGjSfnVU427ZO74LpNiGnEYd2ER4%JN({&gOY(BoXzl73QF=X>{z&a zkA^=Ocou(@QKLly9sm0ox^pGlQRe>%&#{009}==j0kgJEFYMU8r?sY~N<>Xhm53>u zs@kaQs>HG5O!f=6a~pVGI`LWjnekjMFmIB;ZT4NIbS7yP4EzOuB}tnE{zhOW|4tHs zz&VFM@3i}@hQAy52mUEAze;K%S19*rwsbWy+>3=e)_=S73HaU9*xGCyCZq?oM|duiTvi5$<;%a(B{v ziLZ__FC3x-PVjn-x);0~+EZJN5;$_FWe!_~Sjw__)=bPby2&nOGAqj-Ih-(WCJ_vClj#8b}UXX0@|>dDOu+Z z3Y=JdGEZ~$$vhUy(bKlGMY5?Og12eF+EFqyG$T?iqwJjvIbKMk>CQ7p*ppP;+p0$h zHwkGH`){7xF&XD7a_Wpq4|o&D;mCO^ODUp(r?yN-QF*?o4WYlN?)14WJyZL^moG6R z%C}E7Z`JHj_QIhkn#q>qjw^Foddf;vqI)BYo~{(i+?t@43y7Z4hRkBWH9|``(b3m_ zTP^04>8tHxV%HC`WJq&roI3u88m%r(Cs)qkS}m1))oIg^J6X0=r-Vmv(bRGSW|V!ZZA7u3*C;qZF;dG$`%U?!M$96o|9a(B2FSX^y|Y7$J7dd^NP;s?q` z_Uf|`;P(eFLw;U0$a#RcJ_Yx4&8eVf&Do%4%?Y7q%{ifJ?I+A}gU|CRagg$OJ)mXj z0f?pJXxI-QU;h1QN7LQPiYY`5HMdX=5)NnLxOkhR>#&Ja7IA-=o!?Vikam*e=xZNKOA6bWL zjQIV@NaIj@AmW!VEj*`n43WLKY3Y5K`vB%`jUK>J6KHP0!#KJ_Z`Q-dC=m~1en+r5 zIDumY+Cy#O1(DD=j+?+jA1;V!k=yN#ZeM^ zwNSE+rOn0|7T^Bz)A!(n@QG4(iw|w#B@&WiZ^!knQA?#!(Hf%`D5J*E>K!#0rA5Jt zMJ`{P!;|-Q9{k32~5W}dD2O_ZFeyme#i)pVgaAWFjDg|3&-MkuG?`O)-i?~ za3b?;2`qje7ZJr3XvH=BJiZRga05S=Z^a5cf|VRoPvS7Tij(HaobFcRX`G4|(IJjN zr-csCI+Y(2fCegk)BE87HBH%6vm?Lz0pjFpK&JiSsd*ail2Ok9Ki7 zh6pv%!qrF<3Sfg+j%|cAY^R-@Xp?Jaf5p!Jik%q*J?rGIYaMqzn=+nF3G}lDT>bsj zpQYS5w3q43CJnZRoQ6D~fHOJ(rMA~nlg94$1GVCFOBiFsogQ0Mj=$ShHJO{u4)ahEsI$9N+KHTM69cb z=xz<4u0(W1!)Lsb2(3=U8J>t}xU0ez4R@E}4u5z(4-vT;%ceL|uufQ)CoH^PdW}pg z4{@T5igX?us_O~q&hD~1W#g_c`##KMN^WMpY-OQa{J^xC=%Y-^tBJjZjrtB2={R>E zW9xo~&HFi)-AlNP33s_@fhkrZ!6diD*%%btkrE}O#g*75uEln7BQjzfS@9?{`bp%) z^VlI?Vqwd&A7n|4vULnotB=|iV<#a$^+YiuanumSE(M)UXjIWLdn<)~P_+y}-8W)4 zcN?g8w`vwXYPYe6IKL`gbqSI4VpV>!=$a8YDF4})e+gauUH32as>;is;+4+pSlO?y i+>eXYEd~U`XO3gTy*NSoQKJ%z@)=@mkUfe zOxF|RqRS;_TrP8^fjX|b%rfUN?_>EW*BZFajVL#x-14E@KIu-ByABI3_qgw{xU>5y zWX+dn!*R57i>w=Ry!77MDX-)V z+oElK;`U5j!T0 z9-;mtRqpbuUa9%_4@#>~ll7}^Q4TZ~$W}$N5;-Bz##(Y1;H2t=LErzx^%^7J8 zEn;nRmU9C3h13{Uu@`fH%{4Yo1?Kz#VMN-aTEUo>H%=Q9GBOz$8xtO(DXk^H9MpKvlG?8!Q1LgSFlB>Z;E}TxlF@O R;M#vcZA{T8jw^?l_yfSuRt5k7 literal 4355 zcmb7HX?qjb6@JH-G-FvT7Q`UafC(WO3mBl#Br>IS2*xDFb}a){X%2F`@0#&+WhHpXj$feecXzmTZGv`*~)r&OPVcbKbMf{pWw*`8$9U z_-hh}P*hN-;u@}ZBL+K(DrzbmxmVY4qZ=+f4Zenk+?th4a~kGV z+)QE{iW)9;<7M1R;$wJ4#m7~ALc=FDd`iQoHGD?HXEnU4;k6`o;&u7>oQBUQ@dbQQ zN_fKj)NT3OHgu2n1Z+*pIKDCilR6UMA?^@>~7FOtM9t!}tR^@35CI7n0UhHu$A z3EWgmhHnIW3Q>8iMfKTvQ`94`R5!Fy!GU$H44vVzt_TfQus#BjYYKYX<8rgU6q}Rn zrk`rDGyM!9o&@n4f8rZ3}VcxP>`8w)O@QdE?J(%;1Aboj&Dd$8T+2d zzd28LJ^kF-X{t!K(IySQLSlT@up5MItG+7Yz3u$2Q)-yPqfF8l^S)lU4U2j4M7tG} zGDyM~ZksuMZK_Pi6*^N(s-e0*kD(r}*KNy`Nj%|}jhgjx;K?eZC-TyhUHYR$dgw{s ztcX&>W>P)R#EA0aMR9XU;mWit3WL66gNiY2r&02JX=F*v>PFqt<+h%uh5n>b7SHh) ztw?w`Y(_}I-ayQ-t)fvh^clnRud&MY7xEM1Q3PoKnMYiws-Vl4UXBwb8Y59(X{&b1 zq~SsJC-Y9jHN}V}YrVInQ-paTd%yN;^!&+0>5N;JbCme%Y8-ahP;yHS1C;4*9!U{ zo-ZLYD`vT+j2d2rm8Rl1Df||{Q}O#0{(wI!I4CjMPjG$IDXKiG>4PG z@C7S1RuM*to-jYy*qFBF^`bLhCqqeQi&}J@xu7Q|9ls*nQF41S?!paMBG!kL0?QEF`oJ(>f$e}mGf>x

)W-XGc(z3IHp-eN^gqPVrr{iu%T*kJ-^t`q@KmdTQA=(;q1mOkMe#0+8tc>6F9zA$ zU2E9(@uezWPgw+jf{F0d4Sq4TxqoF1M2KBNmXYie`v$^_dGyTLBU9lKESyDBVesv> z0;I@^R*;&0saCBd<|k&@cw2E@5;;$`UZdzmYI_IHpI=i=j0|jW+v&>6R>^|ju`=C8 z43i_7^)77=KfM*~Z#7`4m8_H;!d~7W4)NmAfj&84f)xi8-*G5%eDe8j{(2ud6ux@~ z??D+%cPygwABeq;_#1)92|kl#0e11~@i3rQ8vzFKtlsRbh3Ai1A@c`Qj_pm(|JDh&(K6*Q_h#k531MDnhGx4qJ-;gPEru*`R zSbA5!5Kq4=Ur3}M&llA6?tDQ@@5vXoCer=+d)S*xWD*N_BBy55^u7f=xrqHaEu*O! zE&bF24lH0`0S9wk>j2JsbrbL-=%$$$2Q8G>qS;`d{p38WWl2@3`CWG{0{^pgR^q08mqSocG z-EM~Mb~9|ZSA|WUD#I3@x)e4I%71XHHE=Ci{E_tnr{SZ`wy~F)E&saGgNw+%iEi00 Sl%Q-`C|vjPd6n-D82}+a@HJceH8N?sqf6*!} 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 diff --git a/target/classes/com/engine/common/util/HttpRequestUtil$OkhttpInterceptor.class b/target/classes/com/engine/common/util/HttpRequestUtil$OkhttpInterceptor.class deleted file mode 100644 index 92868d190e4cf271d4d405320fd80680f7dcb086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1842 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 M0_Rq0--+1&0Z{PpWB>pF diff --git a/target/classes/com/engine/common/util/PropBean.class b/target/classes/com/engine/common/util/PropBean.class deleted file mode 100644 index ac8fcf9f2cb95a77f2afaeaed5715a8c39991a97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2358 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 diff --git a/test/Test.java b/test/Test.java index 7c7bc9c..c4c3a22 100644 --- a/test/Test.java +++ b/test/Test.java @@ -1,17 +1,27 @@ import com.engine.common.util.DateUtil; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; -import java.util.UUID; +import java.util.*; + public class Test { public static void main(String[] args) { - LocalDateTime beginDate = DateUtil.getTime("2023-01-05"); - LocalDateTime endDate = DateUtil.getTime("2023-09-20"); - System.out.println(endDate); - System.out.println(DateUtil.getTime(DateUtil.getCurrentDatePlusDay(7))); - System.out.println(endDate.compareTo(DateUtil.getTime(DateUtil.getCurrentDatePlusDay(7)))); +// String str = "where 1=1 and t1.formmodeid = 200 and t1.dgcx = '1'"; +// String[] strs = str.split("and"); +// for (String beanSqlWhere :strs){ +// if (beanSqlWhere.indexOf("t1.dgcx") >=0){ +// String[] conditions = beanSqlWhere.split("="); +// System.out.println(conditions[1].trim()); +// if (conditions[1].trim().equals("'1'")){ +// System.out.println(111); +// } +// } +// } + Set personnelGroupIds = new HashSet<>(); + System.out.println(DateUtil.getBetWeenDays("2023-09-22")); } public static int getDaysBetween(String date1, String date2) {