欧姆龙薪酬二开

1、产假台账推送
2、环比报表
This commit is contained in:
Harryxzy 2024-12-19 14:51:22 +08:00
parent fa847c94d0
commit 531429c499
6 changed files with 27 additions and 14 deletions

View File

@ -0,0 +1,10 @@
# 推送产假建模数据配置
# 产假建模模块id
cj_form_mode_id=100
# 欧姆龙 月度薪资环比统计报表统计项目配置
ydxzhbtj_item=职级工资/基本月薪,职能工资/月奖金,临时项,季度点数法,加班费,特种补贴/技能补贴,其他收入,其中中夜班费,其中离职人员奖金,缺勤扣除,其他扣除,社保(个人缴费),公积金(个人缴费),工会费,个税,税后合计,社保(公司缴费),公积金(公司缴费),发薪人数,加班时间(万小时),人均加班时间
# 核算记录归档时需要推送的薪资项与建模字段关系匹配
# 需要同步的薪资项目有哪些
syncInfo=[{modeName:"cjkczje",type:"bigDecimal",salaryItemId:1698895309822},{modeName:"ljkcje",type:"bigDecimal",salaryItemId:1698895309821},{modeName:"syje",type:"bigDecimal",salaryItemId:123},{modeName:"mycjkcfy",type:"bigDecimal",salaryItemId:123},{modeName:"cjdkcfy",type:"bigDecimal",salaryItemId:123},{modeName:"kczt",type:"int",salaryItemId:1732861794198}]

View File

@ -0,0 +1,189 @@
欧姆龙薪酬二开配置说明
文档版本控制
文档简要信息:
文档主题(Title)
欧姆龙薪酬二开配置说明
作者(Author)
徐卓彦
审批者 (To Be Approved By)
说明 (Comments)
文件名称(File Name)
文档版本历史:
序号
日期
版本
变更说明
修改人
审批人
注释
1.
2.
3.
4.
5.
6.
7.
8.
以下所说的配置文件,其地址为:\ecology\WEB-INF\prop\omlSalaryReport.properties
产假数据推送
1、需要在产假建模中增加一个字段核算记录idhsjlid文本。可以不显示出来推送时需要用到因此不能删除并且目前台账中已有的字段也不能进行删除。
目前配置为推送6个薪资项目值至建模后期如果推送的薪资项目发生变更或薪资项目名称发生变化或需要添加推送的项目可修改配置文件。修改syncInfo信息该值为对象数组对象共3个属性
modeName:赋值至建模中对应字段的数据库字段名;
type:建模字段为浮点数设置为bigDecimal;整数设置为int;文本设置varchar;
salaryItemId:对应薪酬中薪资项目id,通过sql查询薪资项目id:select id from hrsa_salary_item where delete_type=0 and name='薪资项目名称'
目前所有薪资项目id均为123需要先修改薪资项目对应id。
修改台账模块id修改配置文件中cj_form_mode_id值为产假建模的模块id。
二、报表
报表需在门户中配置菜单,菜单需设置权限,报表内容没有进行分权,报表地址:/spa/hrmSalary/static/index.html#/main/hrmSalary/customPage_statisticalReport_omron
报表中展示的薪资项目支持修增加、删除、修改顺序在配置文件中修改ydxzhbtj_item的值即可该值为薪资项目名称多个项目间用英文逗号间隔。

View File

@ -23,5 +23,7 @@ public class OMLSalary2ModeInfo {
private String type;
// 薪资项目名称
private String salaryItemName;
// private String salaryItemName;
private Long salaryItemId;
}

View File

@ -216,7 +216,7 @@
SELECT
<include refid="baseColumns" />
FROM uf_cjfykctz t
WHERE #{salaryMonth} <![CDATA[ <= ]]> cjkcyf
WHERE #{salaryMonth} <![CDATA[ >= ]]> cjkcyf
AND xm IN
<foreach collection="empIdList" open="(" item="empId" separator="," close=")">
#{empId}

View File

@ -620,7 +620,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
// 获取薪资核算人员
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
List<SalaryItemPO> salaryItemPOList = getSalaryItemService(user).listAll();
Map<String, Long> allSalaryItemMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName, SalaryItemPO::getId);
// Map<String, Long> allSalaryItemMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName, SalaryItemPO::getId);
String currDate = TimeUtil.getCurrentDateString();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
@ -636,8 +636,8 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
baseBean.writeLog("字符转换有误" + e.getMessage());
}
List<OMLSalary2ModeInfo> omlSyncInfo = JsonUtil.parseList(syncSetting, OMLSalary2ModeInfo.class);
List<String> salaryItemNames = omlSyncInfo.stream().map(OMLSalary2ModeInfo::getSalaryItemName).collect(Collectors.toList());
salaryItemPOList = salaryItemPOList.stream().filter(item -> salaryItemNames.contains(item.getName())).collect(Collectors.toList());
List<Long> salaryItemIds = omlSyncInfo.stream().map(OMLSalary2ModeInfo::getSalaryItemId).collect(Collectors.toList());
salaryItemPOList = salaryItemPOList.stream().filter(item -> salaryItemIds.contains(item.getId())).collect(Collectors.toList());
if (isLog) {
baseBean.writeLog("欧姆龙薪酬转建模 薪资项目" + salaryItemPOList.toString());
}
@ -649,7 +649,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
// 获取薪资核算数据
List<SalaryAcctEmployeePO> needPushSalaryAcctEmpList = salaryAcctEmployeePOS.stream().filter(acctEmp -> pushPOGroupByXm.keySet().contains(acctEmp.getEmployeeId())).collect(Collectors.toList());
List<Long> salaryAcctEmpIds = needPushSalaryAcctEmpList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList());
List<Long> salaryItemIds = salaryItemPOList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
// List<Long> salaryItemIds = salaryItemPOList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
List<SalaryAcctResultPO> resultPOList = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, salaryItemIds);
Map<Long, List<SalaryAcctResultPO>> resultGroupByEmp = SalaryEntityUtil.group2Map(resultPOList, SalaryAcctResultPO::getEmployeeId);
String salaryAcctRecordStr = salaryAcctRecordPO.getId().toString();
@ -675,7 +675,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
// 如果该员工只有一条数据且产假扣除所属月份没有值则执行更新
StringBuilder updateSql = new StringBuilder("update uf_cjfykctz set cjkcssyf = '" + formatYearMonth + "',hsjlid="+salaryAcctRecordPO.getId());
for (OMLSalary2ModeInfo syncInfo : omlSyncInfo) {
Long salaryItemId = allSalaryItemMap.getOrDefault(syncInfo.getSalaryItemName(), 0L);
Long salaryItemId = syncInfo.getSalaryItemId();
String value = Util.null2String(acctResultMap.get(salaryItemId));
// 获取建模中字段类型
if (syncInfo.getType().equals("int")) {
@ -686,7 +686,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
updateSql.append("," + syncInfo.getModeName() + "=" + (StringUtils.isEmpty(value) ? "''" : "'" + value + "'"));
}
}
updateSql.append("where id ="+mainId);
updateSql.append(" where id ="+mainId);
if (isLog) {
baseBean.writeLog("欧姆龙薪酬转建模 该员工只有一条数据" + updateSql.toString());
}
@ -704,7 +704,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
// 动态推送列
for(int i = 0; i < omlSyncInfo.size(); i++) {
OMLSalary2ModeInfo syncInfo = omlSyncInfo.get(i);
Long salaryItemId = allSalaryItemMap.getOrDefault(syncInfo.getSalaryItemName(), 0L);
Long salaryItemId = syncInfo.getSalaryItemId();
String value = Util.null2String(acctResultMap.get(salaryItemId));
if (syncInfo.getType().equals("int")) {
insertSql.append("," + (StringUtils.isEmpty(value) ? 0 : value));
@ -740,7 +740,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
// 动态推送列
for(int i = 0; i < omlSyncInfo.size(); i++) {
OMLSalary2ModeInfo syncInfo = omlSyncInfo.get(i);
Long salaryItemId = allSalaryItemMap.getOrDefault(syncInfo.getSalaryItemName(), 0L);
Long salaryItemId = syncInfo.getSalaryItemId();
String value = Util.null2String(acctResultMap.get(salaryItemId));
if (syncInfo.getType().equals("int")) {
insertSql.append("," + (StringUtils.isEmpty(value) ? 0 : value));

View File

@ -1267,10 +1267,11 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
throw new SalaryRunTimeException("请输入年份");
}
Map<String, Object> resultMap = new HashMap<>();
// 获取能够管理的义务人
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID()));
List<Long> canManageTaxAgentIds = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
List<SalarySobPO> salarySobPOS = getSalarySobService(user).listByTaxAgentIds(canManageTaxAgentIds);
// // 获取能够管理的义务人
// Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID()));
// List<Long> canManageTaxAgentIds = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
// List<SalarySobPO> salarySobPOS = getSalarySobService(user).listByTaxAgentIds(canManageTaxAgentIds);
List<SalarySobPO> salarySobPOS = getSalarySobService(user).listAll();
List<Long> salarySobIds = salarySobPOS.stream().map(SalarySobPO::getId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(salarySobIds)) {
return resultMap;