From 8eefec2e5784ff83defec77c192a357eb00c2227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 11:15:49 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=B7=B3=E8=BF=87=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/attend/cmd/GetSearchListCmd.java | 371 ++++++++++++++++++ .../impl/RemoteAttend4SalaryServiceImpl.java | 15 +- .../impl/AttendQuoteDataServiceImpl.java | 7 +- 3 files changed, 383 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java diff --git a/src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java b/src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java new file mode 100644 index 000000000..c96fc1944 --- /dev/null +++ b/src/com/engine/salary/remote/attend/cmd/GetSearchListCmd.java @@ -0,0 +1,371 @@ +package com.engine.salary.remote.attend.cmd; + +import com.api.hrm.bean.HrmFieldBean; +import com.api.hrm.util.HrmFieldUtil; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.kq.biz.KQBalanceOfLeaveBiz; +import com.engine.kq.biz.KQLeaveRulesBiz; +import com.engine.kq.biz.KQLeaveRulesComInfo; +import com.engine.kq.biz.KQReportBiz; +import com.engine.kq.util.KQTransMethod; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; +import weaver.hrm.company.SubCompanyComInfo; +import weaver.hrm.job.JobTitlesComInfo; +import weaver.systeminfo.SystemEnv; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 员工假期余额报表--获取查询列表 + */ +public class GetSearchListCmd extends AbstractCommonCommand> { + + public GetSearchListCmd(Map params, User user) { + this.user = user; + this.params = params; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + Map resultMap = new HashMap(); + /** + * 分页控件返回的值 + * currentPage:当前页数 + * pageSize:每页多少条数据 + */ + int currentPage = Util.getIntValue((String) params.get("currentPage"), 1); + int pageSize = Util.getIntValue((String) params.get("pageSize"), 10); + /** + * 时间范围选择的年份 + * dateScope:5-本年、8-上一年 + * selectedYear:指定年份 + */ + String dateScope = Util.null2String(params.get("dateScope")); + String selectedYear = Util.null2String(params.get("selectedYear")); + if (dateScope.equals("5") || dateScope.equals("8")) { + selectedYear = TimeUtil.getDateByOption(dateScope, "0").substring(0, 4); + } + /** + * 数据范围 + * dataScope:0-总部、1-分部、2-分部、3-人员、4-我的下属 + * subcomId:指定分部ID + * deptId:指定部门ID + * resourceId:指定人员ID + * allLevel:是否包含下级下属:0-不包含、1-包含 + */ + String dataScope = Util.null2String(params.get("dataScope")); + String subcomId = Util.null2String(params.get("subcomId")); + String deptId = Util.null2String(params.get("deptId")); + String resourceId = Util.null2String(params.get("resourceId")); + String allLevel = Util.null2String(params.get("allLevel")); + /** + * isNoAccount:是否显示无账号人员:true-显示、false-不显示 + */ + String isNoAccount = Util.null2String(params.get("isNoAccount")); + + try { + /** + * 获取考勤报表权限共享设置 + */ + KQReportBiz kqReportBiz = new KQReportBiz(); +// String rightStr = kqReportBiz.getReportRight("4", "" + user.getUID(), "a"); + String rightStr =""; + + /** + * 拼凑查询结果列表的表头 + */ + List> columnsList = new ArrayList>(); + List hrmFieldBeanList = new ArrayList(); + HrmFieldBean hrmFieldBean = null; + String[] tempArr = new String[]{"lastName,413", "subcom,141", "dept,124", "jobtitle,6086","workcode,714", "companyStartDate,1516"}; + for (int i = 0; i < tempArr.length; i++) { + String[] fieldInfo = tempArr[i].split(","); + hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldname(fieldInfo[0]); + hrmFieldBean.setFieldlabel(fieldInfo[1]); + hrmFieldBean.setFieldhtmltype("1"); + hrmFieldBean.setType("1"); + hrmFieldBean.setViewAttr(1); + hrmFieldBean.setIsFormField(true); + hrmFieldBeanList.add(hrmFieldBean); + } + + /**********************************************************************************************************/ + + /**获取假期类型的相关设置*/ + + /*请假类型的ID*/ + String leaveRulesId = ""; + + /*假期类型的名称,用作查询结果列表的表头显示*/ + String leaveName = ""; + + /*最小请假单位:1-按天请假、2-按半天请假、3-按小时请假、4-按整天请假*/ + int minimumUnit = 1; + + /*请假单位的显示名称是天还是小时*/ + String unitName = ""; + + /*是否开启假期余额,没有开启假期余额时需要提示“不限制余额*/ + int balanceEnable = 0; + + /**********************************************************************************************************/ + + /*是否是混合模式(福利年假+法定年假)*/ + boolean isMixMode = false; + + //是否是调休 + boolean isTiaoXiu = false; + + /**********************************************************************************************************/ + + /*获取当前日期*/ + String currentDate = DateUtil.getCurrentDate(); + + Map balanceMap = new HashMap(); + KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo(); + rulesComInfo.setTofirstRow(); + while (rulesComInfo.next()) { + if (rulesComInfo.getIsEnable().equals("0")) { + continue;//此假期类型没有启用 + } + + /*获取假期类型的设置 start*/ + leaveRulesId = rulesComInfo.getId(); + leaveName = Util.formatMultiLang(rulesComInfo.getLeaveName(), "" + user.getLanguage()); + minimumUnit = Util.getIntValue(rulesComInfo.getMinimumUnit(), 1); + if (minimumUnit == 1 || minimumUnit == 2 || minimumUnit == 4) { + unitName = SystemEnv.getHtmlLabelName(389325, user.getLanguage());//(天) + } else { + unitName = SystemEnv.getHtmlLabelName(389326, user.getLanguage());//(小时) + } + String showName = leaveName + unitName; + balanceEnable = Util.getIntValue(rulesComInfo.getBalanceEnable(), 0); + + isMixMode = KQLeaveRulesBiz.isMixMode(leaveRulesId); + isTiaoXiu = KQLeaveRulesBiz.isTiaoXiu(leaveRulesId); + /*获取假期类型的设置 end*/ + + hrmFieldBean = new HrmFieldBean(); + hrmFieldBean.setFieldname(rulesComInfo.getId()); + hrmFieldBean.setFieldlabelname(showName); + hrmFieldBean.setFieldhtmltype("1"); + hrmFieldBean.setType("1"); + hrmFieldBean.setViewAttr(1); + hrmFieldBean.setIsFormField(true); + hrmFieldBeanList.add(hrmFieldBean); + + /*判断该假期规则是否开启了假期余额,若没有开启,则无需查找该假期的余额,直接遍历下一个假期*/ + if (balanceEnable == 0) { + continue; + } + //如果是调休,获取假期余额的方式有些不同 + if(isTiaoXiu){ + params.put("leaveRulesId",leaveRulesId); + params.put("showAll","false"); + Map _balanceMap = KQBalanceOfLeaveBiz.getRestAmountMapByDis5(params,user); + balanceMap.putAll(_balanceMap); + continue; + } + + /*查询指定年份指定假期的余额数据,并放入集合中,用于后续拼凑查询结果数据*/ + KQTransMethod transMethod = new KQTransMethod(); + RecordSet recordSet = new RecordSet(); + String sql = "select a.id hrmResourceId,a.companyStartDate,a.workStartDate,b.* from HrmResource a left join kq_balanceOfLeave b on a.id=b.resourceId " + + "and belongYear='" + selectedYear + "' and b.leaveRulesId=" + leaveRulesId + " where 1=1 "; + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql = "select a.id hrmResourceId,a.companyStartDate,a.workStartDate,b.*,ROW_NUMBER() OVER(order by dspOrder,a.id) as rn from HrmResource a left join kq_balanceOfLeave b on a.id=b.resourceId " + + "and belongYear='" + selectedYear + "' and b.leaveRulesId=" + leaveRulesId + " where 1=1 "; + } else if (recordSet.getDBType().equalsIgnoreCase("mysql")) { + sql = "select a.id hrmResourceId,a.companyStartDate,a.workStartDate,b.* from HrmResource a left join kq_balanceOfLeave b on a.id=b.resourceId " + + "and belongYear='" + selectedYear + "' and b.leaveRulesId=" + leaveRulesId + " where 1=1 "; + } + if (dataScope.equals("0")) { + //总部 + } else if (dataScope.equals("1")) { + sql += " and a.subcompanyId1 in (" + subcomId + ") "; + } else if (dataScope.equals("2")) { + sql += " and a.departmentId in (" + deptId + ") "; + } else if (dataScope.equals("3")) { + sql += " and a.id in (" + resourceId + ")"; + } else if (dataScope.equals("4")) { + if (allLevel.equals("1")) { + sql += " and (a.id=" + user.getUID() + " or a.managerStr like '%," + user.getUID() + ",%' )"; + } else { + sql += " and (a.id=" + user.getUID() + " or a.managerid = " + user.getUID() + ")"; + } + } + if (isNoAccount.equals("false")) { + if (recordSet.getDBType().equalsIgnoreCase("sqlserver") + || recordSet.getDBType().equalsIgnoreCase("mysql")) { + sql += " and (loginId is not null and loginId<>'')"; + } else { + sql += " and (loginId is not null)"; + } + } + //考勤报表共享设置 + if (!rightStr.equals("") && !dataScope.equals("4")) { + sql += rightStr; + } + if (!recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql += " order by dspOrder,hrmResourceId "; + } + + String pageSql = "select * from (select tmp.*,rownum rn from (" + sql + ") tmp where rownum<=" + (pageSize * currentPage) + ") where rn>=" + (pageSize * (currentPage - 1) + 1); + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + pageSql = "select t.* from (" + sql + ") t where 1=1 and rn>=" + (pageSize * (currentPage - 1) + 1) + " and rn<=" + (pageSize * currentPage); + } else if (recordSet.getDBType().equalsIgnoreCase("mysql")) { + pageSql = sql + " limit " + (currentPage - 1) * pageSize + "," + pageSize; + } + recordSet.executeQuery(pageSql); + while (recordSet.next()) { + String hrmResourceId = recordSet.getString("hrmResourceId"); + //所属年份 + String belongYear = recordSet.getString("belongYear"); + //失效日期 + String effectiveDate = recordSet.getString("effectiveDate"); + //失效日期 + String expirationDate = recordSet.getString("expirationDate"); + /*判断假期余额的有效期*/ + boolean status = KQBalanceOfLeaveBiz.getBalanceStatus(leaveRulesId, hrmResourceId, belongYear, currentDate,effectiveDate,expirationDate); + if (!status) { + continue; + } + BigDecimal baseAmount = new BigDecimal(Util.getDoubleValue(recordSet.getString("baseAmount"), 0.00));//假期基数 + BigDecimal usedAmount = new BigDecimal(Util.getDoubleValue(recordSet.getString("usedAmount"), 0.00));//已用假期 + BigDecimal extraAmount = new BigDecimal(Util.getDoubleValue(recordSet.getString("extraAmount"), 0.00));//额外假期 + BigDecimal baseAmount2 = new BigDecimal(Util.getDoubleValue(recordSet.getString("baseAmount2"), 0.00));//用于混合模式时:福利年假基数 + BigDecimal usedAmount2 = new BigDecimal(Util.getDoubleValue(recordSet.getString("usedAmount2"), 0.00));//用于混合模式时:已用福利年假 + BigDecimal extraAmount2 = new BigDecimal(Util.getDoubleValue(recordSet.getString("extraAmount2"), 0.00));//用于混合模式时:额外福利年假 + + BigDecimal restAmount = new BigDecimal(0); + if (isMixMode) { + /*释放规则*/ + baseAmount = KQBalanceOfLeaveBiz.getCanUseAmount(hrmResourceId, leaveRulesId, belongYear, baseAmount, "legal", currentDate); + baseAmount2 = KQBalanceOfLeaveBiz.getCanUseAmount(hrmResourceId, leaveRulesId, belongYear, baseAmount2, "welfare", currentDate); + + restAmount = baseAmount.add(extraAmount).subtract(usedAmount).add(baseAmount2).add(extraAmount2).subtract(usedAmount2); + } else { + /*释放规则*/ + baseAmount = KQBalanceOfLeaveBiz.getCanUseAmount(hrmResourceId, leaveRulesId, belongYear, baseAmount, "", currentDate); + + restAmount = baseAmount.add(extraAmount).subtract(usedAmount); + } + balanceMap.put(hrmResourceId + "_" + leaveRulesId, restAmount); + } + } + + /** + * 用于拼凑查询结果列表的表数据 + */ + SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); + DepartmentComInfo departmentComInfo = new DepartmentComInfo(); + JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo(); + List> dataList = new ArrayList>(); + Map dataMap = new HashMap(); + RecordSet recordSet = new RecordSet(); + String sql = "select * from HrmResource a where 1=1 "; + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql = "select *,ROW_NUMBER() OVER(order by dspOrder,id) as rn from HrmResource a where 1=1 "; + } + if (dataScope.equals("0")) { + //总部 + } else if (dataScope.equals("1")) { + sql += " and a.subcompanyId1 in (" + subcomId + ") "; + } else if (dataScope.equals("2")) { + sql += " and a.departmentId in (" + deptId + ") "; + } else if (dataScope.equals("3")) { + sql += " and a.id in (" + resourceId + ")"; + } else if (dataScope.equals("4")) { + if (allLevel.equals("1")) { + sql += " and (a.id=" + user.getUID() + " or a.managerStr like '%," + user.getUID() + ",%' )"; + } else { + sql += " and (a.id=" + user.getUID() + " or a.managerid = " + user.getUID() + ")"; + } + } + if (isNoAccount.equals("false")) { + if (recordSet.getDBType().equalsIgnoreCase("sqlserver") + || recordSet.getDBType().equalsIgnoreCase("mysql")) { + sql += " and (a.loginId is not null and a.loginId<>'')"; + } else { + sql += " and (a.loginId is not null)"; + } + } + //考勤报表共享设置 + if (!rightStr.equals("") && !dataScope.equals("4")) { + sql += rightStr; + } + if (!recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + sql += " order by dspOrder,id "; + } + String pageSql = "select * from (select tmp.*,rownum rn from (" + sql + ") tmp where rownum<=" + (pageSize * currentPage) + ") where rn>=" + (pageSize * (currentPage - 1) + 1); + if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) { + pageSql = "select t.* from (" + sql + ") t where 1=1 and rn>=" + (pageSize * (currentPage - 1) + 1) + " and rn<=" + (pageSize * currentPage); + } else if (recordSet.getDBType().equalsIgnoreCase("mysql")) { + pageSql = sql + " limit " + (currentPage - 1) * pageSize + "," + pageSize; + } + recordSet.executeQuery(pageSql); + while (recordSet.next()) { + dataMap = new HashMap(); + + String id = recordSet.getString("id"); + String lastName = Util.formatMultiLang(recordSet.getString("lastName"), "" + user.getLanguage()); + String departmentId = recordSet.getString("departmentId"); + String subcompanyId = recordSet.getString("subcompanyId1"); + String jobtitleId = recordSet.getString("jobtitle"); + String workcode = recordSet.getString("workcode"); + String companyStartdate = recordSet.getString("companyStartdate"); + + dataMap.put("id", id); + dataMap.put("lastName", lastName); + dataMap.put("subcom", Util.formatMultiLang(subCompanyComInfo.getSubcompanyname(subcompanyId), "" + user.getLanguage())); + dataMap.put("dept", Util.formatMultiLang(departmentComInfo.getDepartmentname(departmentId), "" + user.getLanguage())); + dataMap.put("jobtitle", Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitleId), "" + user.getLanguage())); + dataMap.put("workcode", workcode); + dataMap.put("companyStartDate", companyStartdate); + dataMap.put("subcomId", subcompanyId); + dataMap.put("deptId", departmentId); + dataMap.put("jobtitleId", jobtitleId); + + rulesComInfo.setTofirstRow(); + while (rulesComInfo.next()) { + if (rulesComInfo.getIsEnable().equals("0")) { + continue; + } + /*该假期没有开启余额限制,显示不限制余额*/ + if (rulesComInfo.getBalanceEnable().equals("0")) { + dataMap.put(rulesComInfo.getId(), SystemEnv.getHtmlLabelName(389731, user.getLanguage()));//不限制余额 + continue; + } + BigDecimal restAmount = balanceMap.get(id + "_" + rulesComInfo.getId()); + dataMap.put(rulesComInfo.getId(), restAmount != null ? restAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() : "0"); + } + dataList.add(dataMap); + } + + columnsList = HrmFieldUtil.getHrmDetailTable(hrmFieldBeanList, null, user); + resultMap.put("columns", columnsList); + resultMap.put("datas", dataList); + } catch (Exception e) { + e.printStackTrace(); + } + return resultMap; + } +} diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 321afe9fc..d26faae52 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -3,8 +3,8 @@ package com.engine.salary.remote.attend.service.impl; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.engine.core.impl.Service; -import com.engine.kq.cmd.balanceofleaverp.GetSearchListCmd; import com.engine.kq.cmd.report.GetKQReportCmd; +import com.engine.salary.remote.attend.cmd.GetSearchListCmd; import com.engine.salary.remote.attend.entity.Attend4Salary; import com.engine.salary.remote.attend.service.RemoteAttend4SalaryService; import com.engine.salary.util.SalaryDateUtil; @@ -106,8 +106,9 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getDatas(Attend4Salary attend4Salary) { ValidUtil.doValidator(attend4Salary); - log.info("开始获取的考勤数据,参数{}", attend4Salary); + log.info("salaryAttend开始获取的考勤数据,参数{}", attend4Salary); List> list = new ArrayList<>(); + try { Map paramsMap = new HashMap(); paramsMap.put("pageIndex", 1); @@ -126,10 +127,13 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt temp.put("reportType", "month"); list = (List>) commandExecutor.execute(new GetKQReportCmd(temp, user)).get("datas"); if (isLog) { - log.info("获取的考勤数据,{}", JSONUtils.toJSONString(list)); + log.info("salaryAttend获取的考勤数据,{}", JSONUtils.toJSONString(list)); } + } catch (Exception e) { + log.error("salaryAttend获取考勤数据失败", e); + } - + try { //假期余额信息 List> balanceOfLeaveDatas = getBalanceOfLeaveDatas(attend4Salary); Map> balanceMap = SalaryEntityUtil.convert2Map(balanceOfLeaveDatas, m -> m.get("id")); @@ -159,7 +163,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt .collect(Collectors.toList()); list.addAll(balanceOfLeaveList); } catch (Exception e) { - log.error("获取考勤数据失败", e); + log.error("salaryAttend获取假期数据失败", e); } return list; } @@ -191,7 +195,6 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getBalanceOfLeaveDatas(Attend4Salary attend4Salary) { Map paramsMap = new HashMap(); - paramsMap.put("dateScope", "6"); paramsMap.put("selectedYear", SalaryDateUtil.date2Year(attend4Salary.getBeginDate())); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.joining(","))); diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index a3e279fec..e71480f4a 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -450,11 +450,11 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // AttendQuoteDataBO.buildAttendDataFromRemote("day", attendResult.getData(), attendQuoteFields, attendQuoteSyncData); } } catch (Exception e) { - log.error("获取考勤数据错误失败:{}", String.format("参数:%s,错误信息:%s", JSONObject.toJSONString(attend4Salary), e.getMessage()), e); + log.error("salaryAttend获取考勤数据错误失败:{}", String.format("参数:%s,错误信息:%s", JSONObject.toJSONString(attend4Salary), e.getMessage()), e); return attendQuoteSyncData; } if (isLog) { - log.info("同步的考勤数据:{}", JSONUtils.toJSONString(attendQuoteSyncData)); + log.info("salaryAttend同步的考勤数据:{}", JSONUtils.toJSONString(attendQuoteSyncData)); } return attendQuoteSyncData; } @@ -484,7 +484,6 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa dataValueBiz.deleteByAttendQuoteIds(quoteIds); // 新增考勤值数据 if (CollectionUtils.isNotEmpty(values)) { - log.info("考勤数据:{}", values); //去除空值 values = values.stream().filter(po -> StringUtils.isNotBlank(po.getDataValue())).collect(Collectors.toList()); dataValueBiz.insertData(values); @@ -539,7 +538,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa return ExcelUtil.genWorkbookV2(rows, sheetName); } catch (Exception e) { - log.error("下载模板失败", e); + log.error("salaryAttend下载模板失败", e); } return null; } From 7befa9f408210f8a418685625026d038f83e3a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 17:23:09 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attend/service/impl/RemoteAttend4SalaryServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index d26faae52..837d506e7 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -195,6 +195,8 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getBalanceOfLeaveDatas(Attend4Salary attend4Salary) { Map paramsMap = new HashMap(); + paramsMap.put("currentPage", "1"); + paramsMap.put("pageSize", "100000"); paramsMap.put("selectedYear", SalaryDateUtil.date2Year(attend4Salary.getBeginDate())); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.joining(","))); From 7f68931cc5bba0a78f1334e9ee945c61fc004379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 13 Nov 2023 17:23:33 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E5=81=87=E6=9C=9F=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attend/service/impl/RemoteAttend4SalaryServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 837d506e7..6aeab513e 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -196,7 +196,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt public List> getBalanceOfLeaveDatas(Attend4Salary attend4Salary) { Map paramsMap = new HashMap(); paramsMap.put("currentPage", "1"); - paramsMap.put("pageSize", "100000"); + paramsMap.put("pageSize", "500"); paramsMap.put("selectedYear", SalaryDateUtil.date2Year(attend4Salary.getBeginDate())); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.joining(","))); From c0e311bf579e88d872e6c43add9d124f637e3479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 16 Nov 2023 11:42:02 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=B8=8D=E4=BD=BF=E7=94=A8=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=AE=97=E7=A8=8E=E6=94=AF=E6=8C=81=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E6=A0=B8=E7=AE=97=E4=B9=8B=E5=89=8D=E6=9C=88=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctRecordServiceImpl.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 459873c3e..8038d08f7 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -643,15 +643,19 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe List salaryAcctRecordPOS = listByTaxCycle(yearRange, salarySobIds); List selfSalaryAcctRecordPOS = filterByAuthority(salaryAcctRecordPOS); - // 如果已经存在之后月份的薪资核算记录了,就不允许重新核算本月了 - SalaryAcctRecordPO afterSalaryAcctRecordPO = selfSalaryAcctRecordPOS.stream() - .filter(po -> po.getSalaryMonth().compareTo(salaryAcctRecordPO.getSalaryMonth()) > 0) - .findAny() - .orElse(null); - if (Objects.nonNull(afterSalaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(105826, "已经存在{0}的薪资核算记录了,不能重新核算{1}的薪资了") - .replace("{0}", SalaryDateUtil.localDate2YearMonth(afterSalaryAcctRecordPO.getSalaryMonth()).toString()) - .replace("{1}", SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth()).toString())); + // 获取个税申报功能状态 + TaxDeclarationFunctionEnum taxDeclarationFunctionEnum = getSalarySysConfService(user).getTaxDeclaration(); + if (!taxDeclarationFunctionEnum.getValue().equals(TaxDeclarationFunctionEnum.CLOSURE.getValue())) { + // 如果已经存在之后月份的薪资核算记录了,就不允许重新核算本月了 + SalaryAcctRecordPO afterSalaryAcctRecordPO = selfSalaryAcctRecordPOS.stream() + .filter(po -> po.getSalaryMonth().compareTo(salaryAcctRecordPO.getSalaryMonth()) > 0) + .findAny() + .orElse(null); + if (Objects.nonNull(afterSalaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(105826, "已经存在{0}的薪资核算记录了,不能重新核算{1}的薪资了") + .replace("{0}", SalaryDateUtil.localDate2YearMonth(afterSalaryAcctRecordPO.getSalaryMonth()).toString()) + .replace("{1}", SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth()).toString())); + } } if (!isReCalc) {