From 6bac35b3eefad487416e22aced85f8bce61dcb81 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 27 Sep 2022 21:19:37 +0800 Subject: [PATCH] fix bug --- .../GetKQ4OverseasAllowanceCountService.java | 21 ++++ ...tKQ4OverseasAllowanceCountServiceImpl.java | 102 ++++++++++++++++++ .../OverseasAllowanceCountServiceImpl.java | 35 ++++-- .../web/OverseasAllowanceCountController.java | 10 +- 4 files changed, 160 insertions(+), 8 deletions(-) create mode 100644 src/com/engine/bjcj220907/service/GetKQ4OverseasAllowanceCountService.java create mode 100644 src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java diff --git a/src/com/engine/bjcj220907/service/GetKQ4OverseasAllowanceCountService.java b/src/com/engine/bjcj220907/service/GetKQ4OverseasAllowanceCountService.java new file mode 100644 index 0000000..53d5209 --- /dev/null +++ b/src/com/engine/bjcj220907/service/GetKQ4OverseasAllowanceCountService.java @@ -0,0 +1,21 @@ +package com.engine.bjcj220907.service; + +import com.engine.bjcj220907.entity.Attend4MonthBonus; + +import java.util.Map; + +/** + * @author Harryxzy + * @date 2022/09/27 15:55 + * @description 拉取考勤中数据供境外津贴使用 + */ +public interface GetKQ4OverseasAllowanceCountService { + + /*** + * @description 获取境外常驻用户考勤中请假天数以及公务回国天数 + * @return Map + * @author Harryxzy + * @date 2022/9/27 15:58 + */ + Map getKQDatas(Attend4MonthBonus attend4MonthBonus); +} diff --git a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java new file mode 100644 index 0000000..34fe33b --- /dev/null +++ b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java @@ -0,0 +1,102 @@ +package com.engine.bjcj220907.service.impl; + +import com.alibaba.druid.support.json.JSONUtils; +import com.alibaba.fastjson.JSONObject; +import com.engine.bjcj220907.entity.Attend4MonthBonus; +import com.engine.bjcj220907.service.GetKQ4OverseasAllowanceCountService; +import com.engine.core.impl.Service; +import com.engine.kq.cmd.report.GetKQReportCmd; +import com.weaver.general.BaseBean; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Harryxzy + * @date 2022/09/27 15:56 + * @description 拉取考勤中数据供境外津贴使用 + */ +public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements GetKQ4OverseasAllowanceCountService { + + BaseBean baseBean = new BaseBean(); + /*** + * @description 获取境外常驻用户考勤中请假天数以及公务回国天数 + * @return Map + * @author Harryxzy + * @date 2022/9/27 15:58 + */ + @Override + public Map getKQDatas(Attend4MonthBonus attend4MonthBonus) { + baseBean.writeLog("开始获取考勤数据,参数{}", attend4MonthBonus); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM"); + List columnsList = new ArrayList<>(); + List> dataList = new ArrayList<>(); + try { + Map paramsMap = new HashMap(); + paramsMap.put("typeselect", "6"); + paramsMap.put("pageIndex", 1); + paramsMap.put("pageSize", 10000); + paramsMap.put("fromDate", sdf.format(attend4MonthBonus.getBeginDate())); + paramsMap.put("toDate", sdf.format(attend4MonthBonus.getEndDate())); + paramsMap.put("viewScope", "0"); + paramsMap.put("isNoAccount", "1"); + paramsMap.put("attendanceSerial", "0"); + paramsMap.put("status", "9"); + Map temp = new HashMap(); + temp.put("data", JSONObject.toJSONString(paramsMap)); + temp.put("reportType", "month"); + Map execute = commandExecutor.execute(new GetKQReportCmd(temp,user)); + // 获取列数据 + columnsList = (List) execute.get("columns"); + List c = new ArrayList(); + columnsList.stream().forEach(column->{ + if(column.get("title").equals("旷工")){ + c.add(column.get("dataIndex")); + } + if(column.get("title").equals("出差及请假")){ + List children =(List) column.get("children"); + children.stream().forEach(i->{ + if((!i.get("title").equals("境内年假")) && (!i.get("title").equals("境外年假")) && (!i.get("title").equals("奖励假")) && (!i.get("title").equals("工伤")) && (!i.get("title").equals("隔离假")) ){ + c.add(i.get("dataIndex")); + } + }); + } + }); + baseBean.writeLog("计算缺勤列:"+c); + dataList = (List>) execute.get("datas"); + // 获取每个人的缺勤天数 + Map qqDays = new HashMap<>(); +// dataList.stream().forEach(i->{ +// if(attend4MonthBonus.getUser()!=null){ +// if(i.get("resourceId").equals(attend4MonthBonus.getUser())){ +// double[] qq={0.0}; +// c.stream().forEach(j->{ +// // 累加各种请假天数 +// qq[0]+=Double.parseDouble(i.get(j)); +// }); +// String s = i.get("resourceId") +"-"+ sdf2.format(attend4MonthBonus.getEndDate()); +// qqDays.put(s,qq[0]); +// } +// }else{ +// double[] qq={0.0}; +// c.stream().forEach(j->{ +// // 累加各种请假天数 +// qq[0]+=Double.parseDouble(i.get(j)); +// }); +// String s = i.get("resourceId") +"-"+ sdf2.format(attend4MonthBonus.getEndDate()); +// qqDays.put(s,qq[0]); +// } +// +// }); + baseBean.writeLog("获取的考勤缺勤天数,{}", JSONUtils.toJSONString(qqDays)); + return qqDays; + } catch (Exception e) { + baseBean.writeLog("获取考勤数据失败{}", e); + } + return null; + } +} diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 603e8d0..698e5ef 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -2,12 +2,12 @@ package com.engine.bjcj220907.service.impl; import com.engine.bjcj220907.dao.MonthBonusDAO; import com.engine.bjcj220907.dao.OverseasAllowanceDAO; -import com.engine.bjcj220907.entity.JWJT; -import com.engine.bjcj220907.entity.JwCZInfo; -import com.engine.bjcj220907.entity.JwCZInfoDetail; -import com.engine.bjcj220907.entity.XcdjJwjtParam; +import com.engine.bjcj220907.entity.*; +import com.engine.bjcj220907.service.GetKQ4OverseasAllowanceCountService; import com.engine.bjcj220907.service.OverseasAllowanceCountService; import com.engine.bjcj220907.utils.BjcjCommonUtils; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; import weaver.general.BaseBean; import java.util.*; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * @date 2022/09/26 14:03 * @description 境外津贴 */ -public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCountService { +public class OverseasAllowanceCountServiceImpl extends Service implements OverseasAllowanceCountService { BaseBean baseBean = new BaseBean(); @@ -29,6 +29,11 @@ public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCount public OverseasAllowanceDAO getOverseasAllowanceDAO(){ return new OverseasAllowanceDAO(); } + + private GetKQ4OverseasAllowanceCountService GetKQ4OverseasAllowanceCountService() { + return ServiceUtil.getService(GetKQ4OverseasAllowanceCountServiceImpl.class,user); + } + /** * @description 计算境外津贴 * @return void @@ -57,7 +62,12 @@ public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCount List users = results.stream().map(i -> i.getUser()).collect(Collectors.toList()); Map usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,startAttendanceCal); baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准:"+usersXSDJ.size()); - + // 封装薪酬等级、境外津贴标准 + getXcdjAndJwjtbz(results,usersXSDJ); + // 获取公务回国天数 及 公务回国工作日天数 + Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build(); + GetKQ4OverseasAllowanceCountService().getKQDatas(build); + baseBean.writeLog("调用考勤接口获取公务回国天数 及 公务回国工作日天数"+usersXSDJ.size()); } /** @@ -144,4 +154,17 @@ public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCount return results; } + /*** + * @description 将获取到的薪酬等级与境外津贴标准与人员对应 + * @return void + * @author Harryxzy + * @date 2022/9/27 15:37 + */ + public void getXcdjAndJwjtbz(List results ,Map usersXSDJ){ + results.stream().forEach(item-> { + XcdjJwjtParam param = usersXSDJ.get(Integer.valueOf(item.getUser())); + item.setXcdj(param.getXcdj()); + item.setJwjtbz(param.getJwjtbz()); + }); + } } diff --git a/src/com/engine/bjcj220907/web/OverseasAllowanceCountController.java b/src/com/engine/bjcj220907/web/OverseasAllowanceCountController.java index 2327c7b..6ed6f54 100644 --- a/src/com/engine/bjcj220907/web/OverseasAllowanceCountController.java +++ b/src/com/engine/bjcj220907/web/OverseasAllowanceCountController.java @@ -1,7 +1,9 @@ package com.engine.bjcj220907.web; +import com.engine.bjcj220907.service.OverseasAllowanceCountService; import com.engine.bjcj220907.service.impl.OverseasAllowanceCountServiceImpl; import com.engine.bjcj220907.utils.BjcjCommonUtils; +import com.engine.common.util.ServiceUtil; import weaver.general.BaseBean; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -24,6 +26,10 @@ public class OverseasAllowanceCountController { BaseBean baseBean = new BaseBean(); + private OverseasAllowanceCountService getOverseasAllowanceCountService(User user) { + return ServiceUtil.getService(OverseasAllowanceCountServiceImpl.class,user); + } + /** * 境外津贴计算 */ @@ -33,9 +39,9 @@ public class OverseasAllowanceCountController { public void countOverseasAllowance(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); Calendar cal = BjcjCommonUtils.getNowCalendar(); - cal.add(Calendar.MONTH,-6); + cal.add(Calendar.MONTH,-1); baseBean.writeLog("开始计算:"+cal.getTime()+"的境外津贴"); - new OverseasAllowanceCountServiceImpl().countOverseasAllowance(cal); + getOverseasAllowanceCountService(user).countOverseasAllowance(cal); } }