联特报表
This commit is contained in:
parent
0c1c3bab6e
commit
a9916d9ff0
|
|
@ -126,6 +126,7 @@ public class DataCollectionEmployee {
|
||||||
private Integer accountType;
|
private Integer accountType;
|
||||||
|
|
||||||
private String ltCbzx;
|
private String ltCbzx;
|
||||||
|
private String ltRylb;
|
||||||
|
|
||||||
//是否是系统管理员
|
//是否是系统管理员
|
||||||
private Boolean isAdmin;
|
private Boolean isAdmin;
|
||||||
|
|
|
||||||
|
|
@ -436,6 +436,8 @@ public class HrmSnapshotPO {
|
||||||
private String ltGwpc;
|
private String ltGwpc;
|
||||||
private String ltXcbzsc;
|
private String ltXcbzsc;
|
||||||
|
|
||||||
|
private String ltRylb;
|
||||||
|
|
||||||
|
|
||||||
//主键id集合
|
//主键id集合
|
||||||
private Collection<Long> ids;
|
private Collection<Long> ids;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.engine.salary.entity.salaryacct.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Harryxzy
|
||||||
|
* @ClassName LtRymxgzDTO
|
||||||
|
* @date 2025/09/04 18:03
|
||||||
|
* @description 联特 人员明细工资
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class LtRymxgzDTO {
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
// 项目号
|
||||||
|
private String xmh;
|
||||||
|
|
||||||
|
// 姓名
|
||||||
|
private Long xm;
|
||||||
|
|
||||||
|
// 工资
|
||||||
|
private BigDecimal gz;
|
||||||
|
|
||||||
|
// 绩效
|
||||||
|
private BigDecimal jx;
|
||||||
|
|
||||||
|
// 季度绩效
|
||||||
|
private BigDecimal jdjx;
|
||||||
|
|
||||||
|
// 年终奖
|
||||||
|
private BigDecimal nzj;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
package com.engine.salary.entity.salaryacct.po;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Harryxzy
|
||||||
|
* @ClassName LtYfgsPO
|
||||||
|
* @date 2025/09/04 10:04
|
||||||
|
* @description 研发工时
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class LtYfgsPO {
|
||||||
|
|
||||||
|
// 姓名
|
||||||
|
private Long xm;
|
||||||
|
|
||||||
|
// 项目号
|
||||||
|
private String xmh;
|
||||||
|
|
||||||
|
// 成本中心
|
||||||
|
private String cbzx;
|
||||||
|
|
||||||
|
// 项目所属事业部
|
||||||
|
private String xmszsyb;
|
||||||
|
|
||||||
|
// 所属分部
|
||||||
|
private Long szfb;
|
||||||
|
|
||||||
|
// 所属部门
|
||||||
|
private Long szbm;
|
||||||
|
}
|
||||||
|
|
@ -18,7 +18,7 @@ public interface HrmSnapshotMapper {
|
||||||
|
|
||||||
List<HrmSnapshotPO> snapshot(@Param("employeeId")Long employeeId, @Param("snapshotTime")Date snapshotTime);
|
List<HrmSnapshotPO> snapshot(@Param("employeeId")Long employeeId, @Param("snapshotTime")Date snapshotTime);
|
||||||
|
|
||||||
List<Date> getSnapshotTime(@Param("startTime")Date startTime, @Param("emdTime")Date emdTime);
|
List<Date> getSnapshotTime(@Param("startTime")Date startTime, @Param("endTime")Date emdTime);
|
||||||
Integer countByStatusAndSnapshotTime(@Param("statusList")List<Integer> statusList, @Param("snapshotTime")Date snapshotTime);
|
Integer countByStatusAndSnapshotTime(@Param("statusList")List<Integer> statusList, @Param("snapshotTime")Date snapshotTime);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,10 @@
|
||||||
<result column="workstartdate" property="workstartdate"/>
|
<result column="workstartdate" property="workstartdate"/>
|
||||||
<result column="workyear" property="workyear"/>
|
<result column="workyear" property="workyear"/>
|
||||||
<result column="lt_cbzx" property="ltCbzx"/>
|
<result column="lt_cbzx" property="ltCbzx"/>
|
||||||
|
<result column="lt_cbzxcode" property="ltCbzxcode"/>
|
||||||
|
<result column="lt_gwpc" property="ltGwpc"/>
|
||||||
|
<result column="lt_xcbzsc" property="ltXcbzsc"/>
|
||||||
|
<result column="lt_rylb" property="ltRylb"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<!-- 表字段 -->
|
<!-- 表字段 -->
|
||||||
|
|
@ -146,6 +150,11 @@
|
||||||
, t.workstartdate
|
, t.workstartdate
|
||||||
, t.workyear
|
, t.workyear
|
||||||
, t.lt_cbzx
|
, t.lt_cbzx
|
||||||
|
, t.lt_cbzxcode
|
||||||
|
, t.lt_gwpc
|
||||||
|
, t.lt_xcbzsc
|
||||||
|
, t.lt_rylb
|
||||||
|
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<!-- 查询全部 -->
|
<!-- 查询全部 -->
|
||||||
|
|
@ -614,6 +623,9 @@
|
||||||
<if test="ltXcbzsc != null">
|
<if test="ltXcbzsc != null">
|
||||||
lt_xcbzsc,
|
lt_xcbzsc,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="ltRylb != null">
|
||||||
|
lt_rylb,
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||||
<if test="accountid1 != null">
|
<if test="accountid1 != null">
|
||||||
|
|
@ -832,6 +844,9 @@
|
||||||
<if test="ltXcbzsc != null">
|
<if test="ltXcbzsc != null">
|
||||||
#{ltXcbzsc},
|
#{ltXcbzsc},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="ltRylb != null">
|
||||||
|
#{ltRylb},
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
|
@ -1237,7 +1252,7 @@
|
||||||
count(1)
|
count(1)
|
||||||
FROM hrsa_hrm_snapshot t
|
FROM hrsa_hrm_snapshot t
|
||||||
WHERE snapshot_time = #{snapshotTime}
|
WHERE snapshot_time = #{snapshotTime}
|
||||||
<if test="ids != null and ids.size()>0">
|
<if test="statusList != null and statusList.size()>0">
|
||||||
AND status IN
|
AND status IN
|
||||||
<foreach collection="statusList" open="(" item="status" separator="," close=")">
|
<foreach collection="statusList" open="(" item="status" separator="," close=")">
|
||||||
#{status}
|
#{status}
|
||||||
|
|
|
||||||
|
|
@ -323,4 +323,46 @@ public interface SalaryAcctResultService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String ltGenKb(String salaryMonth);
|
String ltGenKb(String salaryMonth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 研发项目工资分摊表-当月计提
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String ltGenYfxmgzftbdyjt(String salaryMonth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 研发项目工资分摊表-当月实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String ltGenYfxmgzftbdysf(String salaryMonth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 研发项目工资分摊表
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String ltGenYfxmgzftb(String salaryMonth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门项目工资分摊表-计提
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String ltGenBmyfxmgzftbjt(String salaryMonth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门项目工资分摊表-实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String ltGenBmyfxmgzftbsf(String salaryMonth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门项目工资分摊表
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String ltGenBmxmgzftb(String salaryMonth);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2291,12 +2291,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
}
|
}
|
||||||
// 获取薪资核算结果
|
// 获取薪资核算结果
|
||||||
Map<String, Object> singleAcctResultMap = acctResultMapByAcctEmpId.get(Utils.null2String(salaryAcctEmp.getId()));
|
Map<String, Object> singleAcctResultMap = acctResultMapByAcctEmpId.get(Utils.null2String(salaryAcctEmp.getId()));
|
||||||
firstSb.append("insert into uf_mxgzbjt(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values (");
|
firstSb.append("insert into uf_mxgzbjt(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,szgw,rylx,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values (");
|
||||||
firstSb.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'")
|
firstSb.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'")
|
||||||
.append(employee.getWorkcode()).append("',")
|
.append(employee.getWorkcode()).append("',")
|
||||||
.append(employee.getEmployeeId()).append(",")
|
.append(employee.getEmployeeId()).append(",")
|
||||||
.append(employee.getSubcompanyid()).append(",")
|
.append(employee.getSubcompanyid()).append(",")
|
||||||
.append(employee.getDepartmentId()).append(",'")
|
.append(employee.getDepartmentId()).append(",")
|
||||||
|
.append(employee.getJobtitleId()).append(",")
|
||||||
|
.append(employee.getLtRylb()).append(",'")
|
||||||
.append(salaryMonth).append("','")
|
.append(salaryMonth).append("','")
|
||||||
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
||||||
.append(jx).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
.append(jx).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
||||||
|
|
@ -2336,7 +2338,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
List<List<SalaryAcctEmployeePO>> partition = Lists.partition(salaryAcctEmployeeList, 500);
|
List<List<SalaryAcctEmployeePO>> partition = Lists.partition(salaryAcctEmployeeList, 500);
|
||||||
for (List<SalaryAcctEmployeePO> part : partition) {
|
for (List<SalaryAcctEmployeePO> part : partition) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("insert into uf_mxgzbjt(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values ");
|
sb.append("insert into uf_mxgzbjt(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,szgw,rylx,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values ");
|
||||||
for (SalaryAcctEmployeePO salaryAcctEmployeePO : part) {
|
for (SalaryAcctEmployeePO salaryAcctEmployeePO : part) {
|
||||||
employee = employeeMap.getOrDefault(salaryAcctEmployeePO.getEmployeeId(), DataCollectionEmployee.builder().build());
|
employee = employeeMap.getOrDefault(salaryAcctEmployeePO.getEmployeeId(), DataCollectionEmployee.builder().build());
|
||||||
singleAcctResultMap = acctResultMapByAcctEmpId.get(Utils.null2String(salaryAcctEmployeePO.getId()));
|
singleAcctResultMap = acctResultMapByAcctEmpId.get(Utils.null2String(salaryAcctEmployeePO.getId()));
|
||||||
|
|
@ -2380,7 +2382,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
.append(employee.getWorkcode()).append("',")
|
.append(employee.getWorkcode()).append("',")
|
||||||
.append(employee.getEmployeeId()).append(",")
|
.append(employee.getEmployeeId()).append(",")
|
||||||
.append(employee.getSubcompanyid()).append(",")
|
.append(employee.getSubcompanyid()).append(",")
|
||||||
.append(employee.getDepartmentId()).append(",'")
|
.append(employee.getDepartmentId()).append(",")
|
||||||
|
.append(employee.getJobtitleId()).append(",")
|
||||||
|
.append(employee.getLtRylb()).append(",'")
|
||||||
.append(salaryMonth).append("','")
|
.append(salaryMonth).append("','")
|
||||||
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
||||||
.append(jx).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
.append(jx).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
||||||
|
|
@ -2563,12 +2567,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
String bndjx = NumberUtils.isCreatable(Utils.null2String(singleBndAcctResultMap.get(bndItemId.toString()))) ? Utils.null2String(singleBndAcctResultMap.get(bndItemId.toString())) : "0";
|
String bndjx = NumberUtils.isCreatable(Utils.null2String(singleBndAcctResultMap.get(bndItemId.toString()))) ? Utils.null2String(singleBndAcctResultMap.get(bndItemId.toString())) : "0";
|
||||||
Map<String, Object> singleNzjAcctResultMap = nzjAcctResultMapByKey.getOrDefault(key, new HashMap<>());
|
Map<String, Object> singleNzjAcctResultMap = nzjAcctResultMapByKey.getOrDefault(key, new HashMap<>());
|
||||||
String nzj = NumberUtils.isCreatable(Utils.null2String(singleNzjAcctResultMap.get(nzjItemId.toString()))) ? Utils.null2String(singleNzjAcctResultMap.get(nzjItemId.toString())) : "0";
|
String nzj = NumberUtils.isCreatable(Utils.null2String(singleNzjAcctResultMap.get(nzjItemId.toString()))) ? Utils.null2String(singleNzjAcctResultMap.get(nzjItemId.toString())) : "0";
|
||||||
firstSb.append("insert into uf_rymxgzsf(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values (");
|
firstSb.append("insert into uf_rymxgzsf(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,szgw,rylx,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values (");
|
||||||
firstSb.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'")
|
firstSb.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'")
|
||||||
.append(employee.getWorkcode()).append("',")
|
.append(employee.getWorkcode()).append("',")
|
||||||
.append(employee.getEmployeeId()).append(",")
|
.append(employee.getEmployeeId()).append(",")
|
||||||
.append(employee.getSubcompanyid()).append(",")
|
.append(employee.getSubcompanyid()).append(",")
|
||||||
.append(employee.getDepartmentId()).append(",'")
|
.append(employee.getDepartmentId()).append(",")
|
||||||
|
.append(employee.getJobtitleId()).append(",")
|
||||||
|
.append(employee.getLtRylb()).append(",'")
|
||||||
.append(salaryMonth).append("','")
|
.append(salaryMonth).append("','")
|
||||||
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
||||||
.append(0).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
.append(0).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
||||||
|
|
@ -2608,7 +2614,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
List<List<String>> partition = Lists.partition(keyList, 500);
|
List<List<String>> partition = Lists.partition(keyList, 500);
|
||||||
for (List<String> part : partition) {
|
for (List<String> part : partition) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("insert into uf_rymxgzsf(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values ");
|
sb.append("insert into uf_rymxgzsf(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,gh,xm,szfb,szbm,szgw,rylx,qj,cbzx,ydjx,jdjx,bndjx,nzj,"+fieldStr+") values ");
|
||||||
for (String keyStr : part) {
|
for (String keyStr : part) {
|
||||||
split = keyStr.split("_split");
|
split = keyStr.split("_split");
|
||||||
empId = split != null && split.length > 1 ? SalaryEntityUtil.string2LongDefault0(split[1]) : 0L;
|
empId = split != null && split.length > 1 ? SalaryEntityUtil.string2LongDefault0(split[1]) : 0L;
|
||||||
|
|
@ -2627,7 +2633,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
.append(employee.getWorkcode()).append("',")
|
.append(employee.getWorkcode()).append("',")
|
||||||
.append(employee.getEmployeeId()).append(",")
|
.append(employee.getEmployeeId()).append(",")
|
||||||
.append(employee.getSubcompanyid()).append(",")
|
.append(employee.getSubcompanyid()).append(",")
|
||||||
.append(employee.getDepartmentId()).append(",'")
|
.append(employee.getDepartmentId()).append(",")
|
||||||
|
.append(employee.getJobtitleId()).append(",")
|
||||||
|
.append(employee.getLtRylb()).append(",'")
|
||||||
.append(salaryMonth).append("','")
|
.append(salaryMonth).append("','")
|
||||||
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
.append(Utils.null2String(employee.getLtCbzx())).append("',")
|
||||||
.append(0).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
.append(0).append(",").append(jdjx).append(",").append(bndjx).append(",").append(nzj);
|
||||||
|
|
@ -3660,7 +3668,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
String currTime = String.format("'%s'", sdf.format(new Date()));
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
|
||||||
StringBuilder insertSql = new StringBuilder("insert into uf_kb (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,nf,rjcz,xse,zndrts) values (")
|
StringBuilder insertSql = new StringBuilder("insert into uf_kb (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,nf,rjcz,xse,zndrts) values (")
|
||||||
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'")
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",")
|
||||||
.append(year).append(",").append(gsxse.divide(empNums, 2, RoundingMode.HALF_UP).toPlainString())
|
.append(year).append(",").append(gsxse.divide(empNums, 2, RoundingMode.HALF_UP).toPlainString())
|
||||||
.append(",").append(gsxse).append(",").append(empNums.toString()).append(")");
|
.append(",").append(gsxse).append(",").append(empNums.toString()).append(")");
|
||||||
rs.execute(insertSql.toString());
|
rs.execute(insertSql.toString());
|
||||||
|
|
@ -3679,4 +3687,691 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 研发项目工资分摊表-当月计提
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String ltGenYfxmgzftbdyjt(String salaryMonth) {
|
||||||
|
if (!SalaryDateUtil.checkYearMonth(salaryMonth)) {
|
||||||
|
throw new SalaryRunTimeException("年月错误");
|
||||||
|
}
|
||||||
|
Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth);
|
||||||
|
BaseBean baseBean = new BaseBean();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
// 获取研发工时表对应数据
|
||||||
|
List<LtYfgsPO> yfgsList = getLtYfgsList(salaryMonthDate);
|
||||||
|
Map<Long, String> xmhMap = SalaryEntityUtil.convert2Map(yfgsList, LtYfgsPO::getXm, LtYfgsPO::getXmh);
|
||||||
|
// 获取需要统计赋值哪些字段(人员明细工资计提表 和 研发项目工资分摊表-当月计提 这些字段的数据库字段名需保持一致)
|
||||||
|
List<String> fieldList = Arrays.stream(baseBean.getPropValue("ltSalaryReport", "yfxmgzftbdyjt_sum_fields").split(",")).filter(key -> StringUtils.isNotBlank(key)).collect(Collectors.toList());
|
||||||
|
List<String> selectFieldList = new ArrayList<>();
|
||||||
|
selectFieldList.addAll(fieldList);
|
||||||
|
selectFieldList.add("yldw");
|
||||||
|
selectFieldList.add("yldwbj");
|
||||||
|
selectFieldList.add("gsdw");
|
||||||
|
selectFieldList.add("gsdwbj");
|
||||||
|
selectFieldList.add("sydw");
|
||||||
|
selectFieldList.add("sydwbj");
|
||||||
|
selectFieldList.add("yldw1");
|
||||||
|
selectFieldList.add("yldwbj1");
|
||||||
|
selectFieldList.add("gjjdw");
|
||||||
|
selectFieldList.add("gjjdwbj");
|
||||||
|
// 获取对应期间人员明细工资计提表
|
||||||
|
rs.execute("select xm,"+ StringUtils.join(selectFieldList,",")+" from uf_mxgzbjt where qj ='" + SalaryDateUtil.getFormatYearMonth(salaryMonthDate) +"'");
|
||||||
|
HashMap<String, List<Map<String, String>>> listGroupByXmh = new HashMap<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
Long xm = SalaryEntityUtil.string2LongDefault0(rs.getString("xm"));
|
||||||
|
String xmh = SalaryEntityUtil.null2String(xmhMap.get(xm));
|
||||||
|
List<Map<String, String>> xmhList = listGroupByXmh.computeIfAbsent(xmh, k -> new ArrayList<>());
|
||||||
|
Map<String, String> singleEmpValueMap = new HashMap<>();
|
||||||
|
for (String field : fieldList) {
|
||||||
|
singleEmpValueMap.put(field, Utils.null2String(rs.getString(field)));
|
||||||
|
}
|
||||||
|
// 5个写死的逻辑
|
||||||
|
BigDecimal yldw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj")));
|
||||||
|
singleEmpValueMap.put("ylbxdw", yldw.toPlainString());
|
||||||
|
BigDecimal gsdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdwbj")));
|
||||||
|
singleEmpValueMap.put("gsbxdw", gsdw.toPlainString());
|
||||||
|
BigDecimal sydw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydwbj")));
|
||||||
|
singleEmpValueMap.put("sybxdw", sydw.toPlainString());
|
||||||
|
BigDecimal yldw1 = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw1")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj1")));
|
||||||
|
singleEmpValueMap.put("ylbxdw1", yldw1.toPlainString());
|
||||||
|
BigDecimal gjjdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdwbj")));
|
||||||
|
singleEmpValueMap.put("zfgjjdw", gjjdw.toPlainString());
|
||||||
|
xmhList.add(singleEmpValueMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
String currDate = String.format("'%s'", TimeUtil.getCurrentDateString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
// 获取建模模块id
|
||||||
|
String modeId = baseBean.getPropValue("ltSalaryReport", "yfxmgzftbdyjt_mode_id");
|
||||||
|
// 入库前先删除
|
||||||
|
rs.execute("delete from uf_yfxmgzftbjt where qj ='" + salaryMonth +"'");
|
||||||
|
fieldList.add("ylbxdw");
|
||||||
|
fieldList.add("gsbxdw");
|
||||||
|
fieldList.add("sybxdw");
|
||||||
|
fieldList.add("ylbxdw1");
|
||||||
|
fieldList.add("zfgjjdw");
|
||||||
|
for (Map.Entry<String, List<Map<String, String>>> entry : listGroupByXmh.entrySet()) {
|
||||||
|
List<Map<String, String>> valueList = entry.getValue();
|
||||||
|
Map<String, String> sumValueMap = new HashMap<>();
|
||||||
|
for(String fieldKey : fieldList) {
|
||||||
|
BigDecimal sumVal = valueList.stream().map(valueMap -> valueMap.get(fieldKey))
|
||||||
|
.filter(NumberUtils::isCreatable)
|
||||||
|
.map(BigDecimal::new)
|
||||||
|
.reduce(new BigDecimal("0"), BigDecimal::add);
|
||||||
|
sumValueMap.put(fieldKey, sumVal.toPlainString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 入库
|
||||||
|
StringBuilder insertSqlSb = new StringBuilder("insert into uf_yfxmgzftbjt (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,qj,xmh,"+StringUtils.join(fieldList, ",")+")VALUES(")
|
||||||
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'").append(salaryMonth).append("','").append(entry.getKey()).append("',");
|
||||||
|
for (String fieldKey : fieldList) {
|
||||||
|
insertSqlSb.append(SalaryEntityUtil.string2BigDecimalDefault0(sumValueMap.get(fieldKey)).toPlainString()).append(",");
|
||||||
|
}
|
||||||
|
insertSqlSb.append(")");
|
||||||
|
insertSqlSb.deleteCharAt(insertSqlSb.lastIndexOf(","));
|
||||||
|
rs.execute(insertSqlSb.toString());
|
||||||
|
// 权限重构
|
||||||
|
// 获取最大值 作为权限重构的起始id
|
||||||
|
rs.execute("select max(id) from uf_yfxmgzftbjt");
|
||||||
|
int maxId = 0;
|
||||||
|
if (rs.next()) {
|
||||||
|
maxId = rs.getInt(1);
|
||||||
|
}
|
||||||
|
if (modeId != null && NumberUtils.isCreatable(modeId)) {
|
||||||
|
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||||
|
ModeRightInfo.setNewRight(true);
|
||||||
|
ModeRightInfo.editModeDataShare(1, Integer.valueOf(modeId), maxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取研发工时表对应数据
|
||||||
|
* @param salaryMonthDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<LtYfgsPO> getLtYfgsList(Date salaryMonthDate) {
|
||||||
|
if (salaryMonthDate == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
rs.execute("select xm,xmh,xmszsyb,szfb,szbm,cbzx from uf_yfgs where qj='"+SalaryDateUtil.getFormatYearMonth(salaryMonthDate)+"'");
|
||||||
|
List<LtYfgsPO> resultList = new ArrayList<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
LtYfgsPO po = new LtYfgsPO();
|
||||||
|
po.setXm(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")));
|
||||||
|
po.setXmh(Utils.null2String(rs.getString("xmh")));
|
||||||
|
po.setXmszsyb(Utils.null2String(rs.getString("xmszsyb")));
|
||||||
|
po.setSzfb(SalaryEntityUtil.string2LongDefault0(rs.getString("szfb")));
|
||||||
|
po.setSzbm(SalaryEntityUtil.string2LongDefault0(rs.getString("szbm")));
|
||||||
|
po.setCbzx(Utils.null2String(rs.getString("cbzx")));
|
||||||
|
resultList.add(po);
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 研发项目工资分摊表-当月实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String ltGenYfxmgzftbdysf(String salaryMonth) {
|
||||||
|
if (!SalaryDateUtil.checkYearMonth(salaryMonth)) {
|
||||||
|
throw new SalaryRunTimeException("年月错误");
|
||||||
|
}
|
||||||
|
Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth);
|
||||||
|
BaseBean baseBean = new BaseBean();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
// 获取研发工时表对应数据
|
||||||
|
List<LtYfgsPO> yfgsList = getLtYfgsList(salaryMonthDate);
|
||||||
|
Map<Long, String> xmhMap = SalaryEntityUtil.convert2Map(yfgsList, LtYfgsPO::getXm, LtYfgsPO::getXmh);
|
||||||
|
// 获取需要统计赋值哪些字段(人员明细工资实发表 和 研发项目工资分摊表-当月实发 这些字段的数据库字段名需保持一致)
|
||||||
|
List<String> fieldList = Arrays.stream(baseBean.getPropValue("ltSalaryReport", "yfxmgzftbdysf_sum_fields").split(",")).filter(key -> StringUtils.isNotBlank(key)).collect(Collectors.toList());
|
||||||
|
List<String> selectFieldList = new ArrayList<>();
|
||||||
|
selectFieldList.addAll(fieldList);
|
||||||
|
selectFieldList.add("yldw");
|
||||||
|
selectFieldList.add("yldwbj");
|
||||||
|
selectFieldList.add("gsdw");
|
||||||
|
selectFieldList.add("gsdwbj");
|
||||||
|
selectFieldList.add("sydw");
|
||||||
|
selectFieldList.add("sydwbj");
|
||||||
|
selectFieldList.add("yldw1");
|
||||||
|
selectFieldList.add("yldwbj1");
|
||||||
|
selectFieldList.add("gjjdw");
|
||||||
|
selectFieldList.add("gjjdwbj");
|
||||||
|
// 获取对应期间人员明细工资实发表
|
||||||
|
rs.execute("select xm,"+ StringUtils.join(selectFieldList,",")+" from uf_rymxgzsf where qj ='" + SalaryDateUtil.getFormatYearMonth(salaryMonthDate) +"'");
|
||||||
|
HashMap<String, List<Map<String, String>>> listGroupByXmh = new HashMap<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
Long xm = SalaryEntityUtil.string2LongDefault0(rs.getString("xm"));
|
||||||
|
String xmh = SalaryEntityUtil.null2String(xmhMap.get(xm));
|
||||||
|
List<Map<String, String>> xmhList = listGroupByXmh.computeIfAbsent(xmh, k -> new ArrayList<>());
|
||||||
|
Map<String, String> singleEmpValueMap = new HashMap<>();
|
||||||
|
for (String field : fieldList) {
|
||||||
|
singleEmpValueMap.put(field, Utils.null2String(rs.getString(field)));
|
||||||
|
}
|
||||||
|
// 5个写死的逻辑
|
||||||
|
BigDecimal yldw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj")));
|
||||||
|
singleEmpValueMap.put("ylbxdw", yldw.toPlainString());
|
||||||
|
BigDecimal gsdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdwbj")));
|
||||||
|
singleEmpValueMap.put("gsbxdw", gsdw.toPlainString());
|
||||||
|
BigDecimal sydw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydwbj")));
|
||||||
|
singleEmpValueMap.put("sybxdw", sydw.toPlainString());
|
||||||
|
BigDecimal yldw1 = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw1")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj1")));
|
||||||
|
singleEmpValueMap.put("ylbxdw1", yldw1.toPlainString());
|
||||||
|
BigDecimal gjjdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdwbj")));
|
||||||
|
singleEmpValueMap.put("zfgjjdw", gjjdw.toPlainString());
|
||||||
|
xmhList.add(singleEmpValueMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
String currDate = String.format("'%s'", TimeUtil.getCurrentDateString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
// 获取建模模块id
|
||||||
|
String modeId = baseBean.getPropValue("ltSalaryReport", "yfxmgzftbdysf_mode_id");
|
||||||
|
// 入库前先删除
|
||||||
|
rs.execute("delete from uf_yfxmgzftbsf where qj ='" + salaryMonth +"'");
|
||||||
|
fieldList.add("ylbxdw");
|
||||||
|
fieldList.add("gsbxdw");
|
||||||
|
fieldList.add("sybxdw");
|
||||||
|
fieldList.add("ylbxdw1");
|
||||||
|
fieldList.add("zfgjjdw");
|
||||||
|
for (Map.Entry<String, List<Map<String, String>>> entry : listGroupByXmh.entrySet()) {
|
||||||
|
List<Map<String, String>> valueList = entry.getValue();
|
||||||
|
Map<String, String> sumValueMap = new HashMap<>();
|
||||||
|
for(String fieldKey : fieldList) {
|
||||||
|
BigDecimal sumVal = valueList.stream().map(valueMap -> valueMap.get(fieldKey))
|
||||||
|
.filter(NumberUtils::isCreatable)
|
||||||
|
.map(BigDecimal::new)
|
||||||
|
.reduce(new BigDecimal("0"), BigDecimal::add);
|
||||||
|
sumValueMap.put(fieldKey, sumVal.toPlainString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 入库
|
||||||
|
StringBuilder insertSqlSb = new StringBuilder("insert into uf_yfxmgzftbsf (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,qj,xmh,"+StringUtils.join(fieldList, ",")+")VALUES(")
|
||||||
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'").append(salaryMonth).append("','").append(entry.getKey()).append("',");
|
||||||
|
for (String fieldKey : fieldList) {
|
||||||
|
insertSqlSb.append(SalaryEntityUtil.string2BigDecimalDefault0(sumValueMap.get(fieldKey)).toPlainString()).append(",");
|
||||||
|
}
|
||||||
|
insertSqlSb.append(")");
|
||||||
|
insertSqlSb.deleteCharAt(insertSqlSb.lastIndexOf(","));
|
||||||
|
rs.execute(insertSqlSb.toString());
|
||||||
|
// 权限重构
|
||||||
|
// 获取最大值 作为权限重构的起始id
|
||||||
|
rs.execute("select max(id) from uf_yfxmgzftbsf");
|
||||||
|
int maxId = 0;
|
||||||
|
if (rs.next()) {
|
||||||
|
maxId = rs.getInt(1);
|
||||||
|
}
|
||||||
|
if (modeId != null && NumberUtils.isCreatable(modeId)) {
|
||||||
|
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||||
|
ModeRightInfo.setNewRight(true);
|
||||||
|
ModeRightInfo.editModeDataShare(1, Integer.valueOf(modeId), maxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 研发项目工资分摊表
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String ltGenYfxmgzftb(String salaryMonth) {
|
||||||
|
if (!SalaryDateUtil.checkYearMonth(salaryMonth)) {
|
||||||
|
throw new SalaryRunTimeException("年月错误");
|
||||||
|
}
|
||||||
|
Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth);
|
||||||
|
BaseBean baseBean = new BaseBean();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
// 获取研发工时表对应数据
|
||||||
|
List<LtYfgsPO> yfgsList = getLtYfgsList(salaryMonthDate);
|
||||||
|
Map<Long, String> xmhMap = SalaryEntityUtil.convert2Map(yfgsList, LtYfgsPO::getXm, LtYfgsPO::getXmh);
|
||||||
|
|
||||||
|
// 获取对应的上月、当月对应的计提、实发 的人员明细工资表数据
|
||||||
|
Date lastMonthDate = SalaryDateUtil.localDateToDate(SalaryDateUtil.dateToLocalDate(salaryMonthDate).minusMonths(1));
|
||||||
|
// 本月计提数据
|
||||||
|
List<LtRymxgzDTO> thisMonthJtInfo = listLtRymxgzInfo(salaryMonthDate, true, xmhMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> thisMonthJtInfoMap = SalaryEntityUtil.group2Map(thisMonthJtInfo, LtRymxgzDTO::getXmh);
|
||||||
|
// 上月计提数据
|
||||||
|
List<LtRymxgzDTO> lastMonthJtInfo = listLtRymxgzInfo(lastMonthDate, true, xmhMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> lastMonthJtInfoMap = SalaryEntityUtil.group2Map(lastMonthJtInfo, LtRymxgzDTO::getXmh);
|
||||||
|
// 本月实发数据
|
||||||
|
List<LtRymxgzDTO> thisMonthSfInfo = listLtRymxgzInfo(salaryMonthDate, false, xmhMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> thisMonthSfInfoMap = SalaryEntityUtil.group2Map(thisMonthSfInfo, LtRymxgzDTO::getXmh);
|
||||||
|
// 上月实发数据
|
||||||
|
List<LtRymxgzDTO> lastMonthSfInfo = listLtRymxgzInfo(lastMonthDate, false, xmhMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> lastMonthSfInfoMap = SalaryEntityUtil.group2Map(lastMonthSfInfo, LtRymxgzDTO::getXmh);
|
||||||
|
|
||||||
|
// 获取所有的项目号
|
||||||
|
Set<String> xmhList = new HashSet<>();
|
||||||
|
xmhList.addAll(thisMonthJtInfoMap.keySet());
|
||||||
|
xmhList.addAll(lastMonthJtInfoMap.keySet());
|
||||||
|
xmhList.addAll(thisMonthSfInfoMap.keySet());
|
||||||
|
xmhList.addAll(lastMonthSfInfoMap.keySet());
|
||||||
|
|
||||||
|
String currDate = String.format("'%s'", TimeUtil.getCurrentDateString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
// 获取建模模块id
|
||||||
|
String modeId = baseBean.getPropValue("ltSalaryReport", "yfxmgzftb_mode_id");
|
||||||
|
// 入库前先删除
|
||||||
|
rs.execute("delete from uf_yfxmgzftb where qj ='" + salaryMonth +"'");
|
||||||
|
YearMonth yearMonth = SalaryDateUtil.String2YearMonth(salaryMonth);
|
||||||
|
int monthValue = yearMonth.getMonthValue();
|
||||||
|
for (String xmh : xmhList) {
|
||||||
|
BigDecimal gz = new BigDecimal("0");
|
||||||
|
List<LtRymxgzDTO> thisMonthJtList = CollectionUtils.isEmpty(thisMonthJtInfoMap.get(xmh)) ? new ArrayList<>() : thisMonthJtInfoMap.get(xmh) ;
|
||||||
|
List<LtRymxgzDTO> lastMonthJtList = CollectionUtils.isEmpty(lastMonthJtInfoMap.get(xmh)) ? new ArrayList<>() : lastMonthJtInfoMap.get(xmh) ;
|
||||||
|
List<LtRymxgzDTO> thisMonthSfList = CollectionUtils.isEmpty(thisMonthSfInfoMap.get(xmh)) ? new ArrayList<>() : thisMonthSfInfoMap.get(xmh) ;
|
||||||
|
List<LtRymxgzDTO> lastMonthSfList = CollectionUtils.isEmpty(lastMonthSfInfoMap.get(xmh)) ? new ArrayList<>() : lastMonthSfInfoMap.get(xmh) ;
|
||||||
|
if (monthValue == 2 || monthValue == 3 || monthValue == 5 || monthValue == 6 || monthValue == 8 || monthValue == 9 || monthValue == 11) {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getJx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
} else if (monthValue == 4 || monthValue == 7 || monthValue == 10) {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getJdjx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthSfList.stream().map(LtRymxgzDTO::getJdjx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getJx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
} else if (monthValue == 12) {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthSfList.stream().map(LtRymxgzDTO::getNzj).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
} else {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getNzj).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthSfList.stream().map(LtRymxgzDTO::getNzj).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getJx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
}
|
||||||
|
// 入库
|
||||||
|
StringBuilder insertSqlSb = new StringBuilder("insert into uf_yfxmgzftb (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,qj,xmh,yfgz)VALUES(")
|
||||||
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'").append(salaryMonth).append("','").append(xmh).append("',").append(gz.toPlainString()).append(")");
|
||||||
|
rs.execute(insertSqlSb.toString());
|
||||||
|
// 权限重构
|
||||||
|
// 获取最大值 作为权限重构的起始id
|
||||||
|
rs.execute("select max(id) from uf_yfxmgzftb");
|
||||||
|
int maxId = 0;
|
||||||
|
if (rs.next()) {
|
||||||
|
maxId = rs.getInt(1);
|
||||||
|
}
|
||||||
|
if (modeId != null && NumberUtils.isCreatable(modeId)) {
|
||||||
|
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||||
|
ModeRightInfo.setNewRight(true);
|
||||||
|
ModeRightInfo.editModeDataShare(1, Integer.valueOf(modeId), maxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特 获取人员明细工资表数据
|
||||||
|
* @param salaryMonthDate 期间
|
||||||
|
* @param isJt 是否是计提
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<LtRymxgzDTO> listLtRymxgzInfo(Date salaryMonthDate, boolean isJt, Map<Long, String> xmhMap) {
|
||||||
|
if (salaryMonthDate == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
String yearMonthStr = SalaryDateUtil.getFormatYearMonth(salaryMonthDate);
|
||||||
|
List<LtRymxgzDTO> resultList = new ArrayList<>();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
if (isJt) {
|
||||||
|
// 计提表取数
|
||||||
|
rs.execute("select xm,yfgz,ydjx,jdjx,nzj from uf_mxgzbjt where qj = '" + yearMonthStr + "'");
|
||||||
|
while (rs.next()) {
|
||||||
|
resultList.add(LtRymxgzDTO.builder()
|
||||||
|
.key(Utils.null2String(xmhMap.get(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")))))
|
||||||
|
.xmh(Utils.null2String(xmhMap.get(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")))))
|
||||||
|
.xm(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")))
|
||||||
|
.gz(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yfgz")))
|
||||||
|
.jx(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("ydjx")))
|
||||||
|
.jdjx(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("jdjx")))
|
||||||
|
.nzj(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("nzj")))
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 实发表取数
|
||||||
|
rs.execute("select xm,yfgz,ydjx,jdjx,nzj from uf_rymxgzsf where qj = '" + yearMonthStr + "'");
|
||||||
|
while (rs.next()) {
|
||||||
|
resultList.add(LtRymxgzDTO.builder()
|
||||||
|
.key(Utils.null2String(xmhMap.get(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")))))
|
||||||
|
.xmh(Utils.null2String(xmhMap.get(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")))))
|
||||||
|
.xm(SalaryEntityUtil.string2LongDefault0(rs.getString("xm")))
|
||||||
|
.gz(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yfgz")))
|
||||||
|
.jx(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("ydjx")))
|
||||||
|
.jdjx(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("jdjx")))
|
||||||
|
.nzj(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("nzj")))
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门项目工资分摊表-计提
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String ltGenBmyfxmgzftbjt(String salaryMonth) {
|
||||||
|
if (!SalaryDateUtil.checkYearMonth(salaryMonth)) {
|
||||||
|
throw new SalaryRunTimeException("年月错误");
|
||||||
|
}
|
||||||
|
Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth);
|
||||||
|
BaseBean baseBean = new BaseBean();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
// 获取研发工时表对应数据
|
||||||
|
List<LtYfgsPO> yfgsList = getLtYfgsList(salaryMonthDate);
|
||||||
|
Map<Long, String> groupMap = SalaryEntityUtil.convert2Map(yfgsList, LtYfgsPO::getXm, po -> po.getCbzx() + "_split" + po.getXmh() + "_split" + po.getXmszsyb());
|
||||||
|
// 获取需要统计赋值哪些字(人员明细工资计提表 和 部门项目工资分摊表-计提 这些字段的数据库字段名需保持一致)
|
||||||
|
List<String> fieldList = Arrays.stream(baseBean.getPropValue("ltSalaryReport", "bmxmgzftbjt_sum_fields").split(",")).filter(key -> StringUtils.isNotBlank(key)).collect(Collectors.toList());
|
||||||
|
List<String> selectFieldList = new ArrayList<>();
|
||||||
|
selectFieldList.addAll(fieldList);
|
||||||
|
selectFieldList.add("yldw");
|
||||||
|
selectFieldList.add("yldwbj");
|
||||||
|
selectFieldList.add("gsdw");
|
||||||
|
selectFieldList.add("gsdwbj");
|
||||||
|
selectFieldList.add("sydw");
|
||||||
|
selectFieldList.add("sydwbj");
|
||||||
|
selectFieldList.add("yldw1");
|
||||||
|
selectFieldList.add("yldwbj1");
|
||||||
|
selectFieldList.add("gjjdw");
|
||||||
|
selectFieldList.add("gjjdwbj");
|
||||||
|
// 获取对应期间人员明细工资计提表
|
||||||
|
rs.execute("select xm,"+ StringUtils.join(selectFieldList,",")+" from uf_mxgzbjt where qj ='" + SalaryDateUtil.getFormatYearMonth(salaryMonthDate) +"'");
|
||||||
|
HashMap<String, List<Map<String, String>>> listGroupByXmh = new HashMap<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
Long xm = SalaryEntityUtil.string2LongDefault0(rs.getString("xm"));
|
||||||
|
String groupKey = SalaryEntityUtil.null2String(groupMap.get(xm));
|
||||||
|
List<Map<String, String>> groupKeyList = listGroupByXmh.computeIfAbsent(groupKey, k -> new ArrayList<>());
|
||||||
|
Map<String, String> singleEmpValueMap = new HashMap<>();
|
||||||
|
for (String field : fieldList) {
|
||||||
|
singleEmpValueMap.put(field, Utils.null2String(rs.getString(field)));
|
||||||
|
}
|
||||||
|
// 5个写死的逻辑
|
||||||
|
BigDecimal yldw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj")));
|
||||||
|
singleEmpValueMap.put("ylbxdw", yldw.toPlainString());
|
||||||
|
BigDecimal gsdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdwbj")));
|
||||||
|
singleEmpValueMap.put("gsbxdw", gsdw.toPlainString());
|
||||||
|
BigDecimal sydw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydwbj")));
|
||||||
|
singleEmpValueMap.put("sybxdw", sydw.toPlainString());
|
||||||
|
BigDecimal yldw1 = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw1")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj1")));
|
||||||
|
singleEmpValueMap.put("ylbxdw1", yldw1.toPlainString());
|
||||||
|
BigDecimal gjjdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdwbj")));
|
||||||
|
singleEmpValueMap.put("zfgjjdw", gjjdw.toPlainString());
|
||||||
|
groupKeyList.add(singleEmpValueMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
String currDate = String.format("'%s'", TimeUtil.getCurrentDateString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
// 获取建模模块id
|
||||||
|
String modeId = baseBean.getPropValue("ltSalaryReport", "bmxmgzftbjt_mode_id");
|
||||||
|
// 入库前先删除
|
||||||
|
rs.execute("delete from uf_bmxmgzftbjt where qj ='" + salaryMonth +"'");
|
||||||
|
fieldList.add("ylbxdw");
|
||||||
|
fieldList.add("gsbxdw");
|
||||||
|
fieldList.add("sybxdw");
|
||||||
|
fieldList.add("ylbxdw1");
|
||||||
|
fieldList.add("zfgjjdw");
|
||||||
|
for (Map.Entry<String, List<Map<String, String>>> entry : listGroupByXmh.entrySet()) {
|
||||||
|
List<Map<String, String>> valueList = entry.getValue();
|
||||||
|
Map<String, String> sumValueMap = new HashMap<>();
|
||||||
|
for(String fieldKey : fieldList) {
|
||||||
|
BigDecimal sumVal = valueList.stream().map(valueMap -> valueMap.get(fieldKey))
|
||||||
|
.filter(NumberUtils::isCreatable)
|
||||||
|
.map(BigDecimal::new)
|
||||||
|
.reduce(new BigDecimal("0"), BigDecimal::add);
|
||||||
|
sumValueMap.put(fieldKey, sumVal.toPlainString());
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] split = entry.getKey().split("_split");
|
||||||
|
String cbzx = split != null && split.length > 0 ? split[0] : "";
|
||||||
|
String xmh = split != null && split.length > 1 ? split[1] : "";
|
||||||
|
String xmszsyb = split != null && split.length > 2 ? split[2] : "";
|
||||||
|
// 入库
|
||||||
|
StringBuilder insertSqlSb = new StringBuilder("insert into uf_bmxmgzftbjt (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,qj,cbzx,xmh,xmszsyb,"+StringUtils.join(fieldList, ",")+")VALUES(")
|
||||||
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'").append(salaryMonth).append("','").append(cbzx).append("','").append(xmh).append("','").append(xmszsyb).append("',");
|
||||||
|
for (String fieldKey : fieldList) {
|
||||||
|
insertSqlSb.append(SalaryEntityUtil.string2BigDecimalDefault0(sumValueMap.get(fieldKey)).toPlainString()).append(",");
|
||||||
|
}
|
||||||
|
insertSqlSb.append(")");
|
||||||
|
insertSqlSb.deleteCharAt(insertSqlSb.lastIndexOf(","));
|
||||||
|
rs.execute(insertSqlSb.toString());
|
||||||
|
// 权限重构
|
||||||
|
// 获取最大值 作为权限重构的起始id
|
||||||
|
rs.execute("select max(id) from uf_bmxmgzftbjt");
|
||||||
|
int maxId = 0;
|
||||||
|
if (rs.next()) {
|
||||||
|
maxId = rs.getInt(1);
|
||||||
|
}
|
||||||
|
if (modeId != null && NumberUtils.isCreatable(modeId)) {
|
||||||
|
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||||
|
ModeRightInfo.setNewRight(true);
|
||||||
|
ModeRightInfo.editModeDataShare(1, Integer.valueOf(modeId), maxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门项目工资分摊表-实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String ltGenBmyfxmgzftbsf(String salaryMonth) {
|
||||||
|
if (!SalaryDateUtil.checkYearMonth(salaryMonth)) {
|
||||||
|
throw new SalaryRunTimeException("年月错误");
|
||||||
|
}
|
||||||
|
Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth);
|
||||||
|
BaseBean baseBean = new BaseBean();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
// 获取研发工时表对应数据
|
||||||
|
List<LtYfgsPO> yfgsList = getLtYfgsList(salaryMonthDate);
|
||||||
|
Map<Long, String> groupMap = SalaryEntityUtil.convert2Map(yfgsList, LtYfgsPO::getXm, po -> po.getCbzx() + "_split" + po.getXmh() + "_split" + po.getXmszsyb());
|
||||||
|
// 获取需要统计赋值哪些字(人员明细工资实发表 和 部门项目工资分摊表-实发 这些字段的数据库字段名需保持一致)
|
||||||
|
List<String> fieldList = Arrays.stream(baseBean.getPropValue("ltSalaryReport", "bmxmgzftbsf_sum_fields").split(",")).filter(key -> StringUtils.isNotBlank(key)).collect(Collectors.toList());
|
||||||
|
List<String> selectFieldList = new ArrayList<>();
|
||||||
|
selectFieldList.addAll(fieldList);
|
||||||
|
selectFieldList.add("yldw");
|
||||||
|
selectFieldList.add("yldwbj");
|
||||||
|
selectFieldList.add("gsdw");
|
||||||
|
selectFieldList.add("gsdwbj");
|
||||||
|
selectFieldList.add("sydw");
|
||||||
|
selectFieldList.add("sydwbj");
|
||||||
|
selectFieldList.add("yldw1");
|
||||||
|
selectFieldList.add("yldwbj1");
|
||||||
|
selectFieldList.add("gjjdw");
|
||||||
|
selectFieldList.add("gjjdwbj");
|
||||||
|
// 获取对应期间人员明细工资实发表
|
||||||
|
rs.execute("select xm,"+ StringUtils.join(selectFieldList,",")+" from uf_rymxgzsf where qj ='" + SalaryDateUtil.getFormatYearMonth(salaryMonthDate) +"'");
|
||||||
|
HashMap<String, List<Map<String, String>>> listGroupByXmh = new HashMap<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
Long xm = SalaryEntityUtil.string2LongDefault0(rs.getString("xm"));
|
||||||
|
String groupKey = SalaryEntityUtil.null2String(groupMap.get(xm));
|
||||||
|
List<Map<String, String>> groupKeyList = listGroupByXmh.computeIfAbsent(groupKey, k -> new ArrayList<>());
|
||||||
|
Map<String, String> singleEmpValueMap = new HashMap<>();
|
||||||
|
for (String field : fieldList) {
|
||||||
|
singleEmpValueMap.put(field, Utils.null2String(rs.getString(field)));
|
||||||
|
}
|
||||||
|
// 5个写死的逻辑
|
||||||
|
BigDecimal yldw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj")));
|
||||||
|
singleEmpValueMap.put("ylbxdw", yldw.toPlainString());
|
||||||
|
BigDecimal gsdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gsdwbj")));
|
||||||
|
singleEmpValueMap.put("gsbxdw", gsdw.toPlainString());
|
||||||
|
BigDecimal sydw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("sydwbj")));
|
||||||
|
singleEmpValueMap.put("sybxdw", sydw.toPlainString());
|
||||||
|
BigDecimal yldw1 = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldw1")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("yldwbj1")));
|
||||||
|
singleEmpValueMap.put("ylbxdw1", yldw1.toPlainString());
|
||||||
|
BigDecimal gjjdw = SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdw")).add(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("gjjdwbj")));
|
||||||
|
singleEmpValueMap.put("zfgjjdw", gjjdw.toPlainString());
|
||||||
|
groupKeyList.add(singleEmpValueMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
String currDate = String.format("'%s'", TimeUtil.getCurrentDateString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
// 获取建模模块id
|
||||||
|
String modeId = baseBean.getPropValue("ltSalaryReport", "bmxmgzftbsf_mode_id");
|
||||||
|
// 入库前先删除
|
||||||
|
rs.execute("delete from uf_bmxmgzftbsf where qj ='" + salaryMonth +"'");
|
||||||
|
fieldList.add("ylbxdw");
|
||||||
|
fieldList.add("gsbxdw");
|
||||||
|
fieldList.add("sybxdw");
|
||||||
|
fieldList.add("ylbxdw1");
|
||||||
|
fieldList.add("zfgjjdw");
|
||||||
|
for (Map.Entry<String, List<Map<String, String>>> entry : listGroupByXmh.entrySet()) {
|
||||||
|
List<Map<String, String>> valueList = entry.getValue();
|
||||||
|
Map<String, String> sumValueMap = new HashMap<>();
|
||||||
|
for(String fieldKey : fieldList) {
|
||||||
|
BigDecimal sumVal = valueList.stream().map(valueMap -> valueMap.get(fieldKey))
|
||||||
|
.filter(NumberUtils::isCreatable)
|
||||||
|
.map(BigDecimal::new)
|
||||||
|
.reduce(new BigDecimal("0"), BigDecimal::add);
|
||||||
|
sumValueMap.put(fieldKey, sumVal.toPlainString());
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] split = entry.getKey().split("_split");
|
||||||
|
String cbzx = split != null && split.length > 0 ? split[0] : "";
|
||||||
|
String xmh = split != null && split.length > 1 ? split[1] : "";
|
||||||
|
String xmszsyb = split != null && split.length > 2 ? split[2] : "";
|
||||||
|
// 入库
|
||||||
|
StringBuilder insertSqlSb = new StringBuilder("insert into uf_bmxmgzftbsf (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,qj,cbzx,xmh,xmszsyb,"+StringUtils.join(fieldList, ",")+")VALUES(")
|
||||||
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'").append(salaryMonth).append("','").append(cbzx).append("','").append(xmh).append("','").append(xmszsyb).append("',");
|
||||||
|
for (String fieldKey : fieldList) {
|
||||||
|
insertSqlSb.append(SalaryEntityUtil.string2BigDecimalDefault0(sumValueMap.get(fieldKey)).toPlainString()).append(",");
|
||||||
|
}
|
||||||
|
insertSqlSb.append(")");
|
||||||
|
insertSqlSb.deleteCharAt(insertSqlSb.lastIndexOf(","));
|
||||||
|
rs.execute(insertSqlSb.toString());
|
||||||
|
// 权限重构
|
||||||
|
// 获取最大值 作为权限重构的起始id
|
||||||
|
rs.execute("select max(id) from uf_bmxmgzftbsf");
|
||||||
|
int maxId = 0;
|
||||||
|
if (rs.next()) {
|
||||||
|
maxId = rs.getInt(1);
|
||||||
|
}
|
||||||
|
if (modeId != null && NumberUtils.isCreatable(modeId)) {
|
||||||
|
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||||
|
ModeRightInfo.setNewRight(true);
|
||||||
|
ModeRightInfo.editModeDataShare(1, Integer.valueOf(modeId), maxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String ltGenBmxmgzftb(String salaryMonth) {
|
||||||
|
if (!SalaryDateUtil.checkYearMonth(salaryMonth)) {
|
||||||
|
throw new SalaryRunTimeException("年月错误");
|
||||||
|
}
|
||||||
|
Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(salaryMonth);
|
||||||
|
BaseBean baseBean = new BaseBean();
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
// 获取研发工时表对应数据
|
||||||
|
List<LtYfgsPO> yfgsList = getLtYfgsList(salaryMonthDate);
|
||||||
|
Map<Long, String> groupMap = SalaryEntityUtil.convert2Map(yfgsList, LtYfgsPO::getXm, po -> po.getCbzx() + "_split" + po.getXmh() + "_split" + po.getXmszsyb());
|
||||||
|
|
||||||
|
// 获取对应的上月、当月对应的计提、实发 的人员明细工资表数据
|
||||||
|
Date lastMonthDate = SalaryDateUtil.localDateToDate(SalaryDateUtil.dateToLocalDate(salaryMonthDate).minusMonths(1));
|
||||||
|
// 本月计提数据
|
||||||
|
List<LtRymxgzDTO> thisMonthJtInfo = listLtRymxgzInfo(salaryMonthDate, true, groupMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> thisMonthJtInfoMap = SalaryEntityUtil.group2Map(thisMonthJtInfo, LtRymxgzDTO::getKey);
|
||||||
|
// 上月计提数据
|
||||||
|
List<LtRymxgzDTO> lastMonthJtInfo = listLtRymxgzInfo(lastMonthDate, true, groupMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> lastMonthJtInfoMap = SalaryEntityUtil.group2Map(lastMonthJtInfo, LtRymxgzDTO::getKey);
|
||||||
|
// 本月实发数据
|
||||||
|
List<LtRymxgzDTO> thisMonthSfInfo = listLtRymxgzInfo(salaryMonthDate, false, groupMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> thisMonthSfInfoMap = SalaryEntityUtil.group2Map(thisMonthSfInfo, LtRymxgzDTO::getKey);
|
||||||
|
// 上月实发数据
|
||||||
|
List<LtRymxgzDTO> lastMonthSfInfo = listLtRymxgzInfo(lastMonthDate, false, groupMap);
|
||||||
|
Map<String, List<LtRymxgzDTO>> lastMonthSfInfoMap = SalaryEntityUtil.group2Map(lastMonthSfInfo, LtRymxgzDTO::getKey);
|
||||||
|
|
||||||
|
// 获取所有的项目号
|
||||||
|
Set<String> keyList = new HashSet<>();
|
||||||
|
keyList.addAll(thisMonthJtInfoMap.keySet());
|
||||||
|
keyList.addAll(lastMonthJtInfoMap.keySet());
|
||||||
|
keyList.addAll(thisMonthSfInfoMap.keySet());
|
||||||
|
keyList.addAll(lastMonthSfInfoMap.keySet());
|
||||||
|
|
||||||
|
String currDate = String.format("'%s'", TimeUtil.getCurrentDateString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String currTime = String.format("'%s'", sdf.format(new Date()));
|
||||||
|
// 获取建模模块id
|
||||||
|
String modeId = baseBean.getPropValue("ltSalaryReport", "bmxmgzftb_mode_id");
|
||||||
|
// 入库前先删除
|
||||||
|
rs.execute("delete from uf_bmxmfzftb where qj ='" + salaryMonth +"'");
|
||||||
|
YearMonth yearMonth = SalaryDateUtil.String2YearMonth(salaryMonth);
|
||||||
|
int monthValue = yearMonth.getMonthValue();
|
||||||
|
for (String key : keyList) {
|
||||||
|
BigDecimal gz = new BigDecimal("0");
|
||||||
|
List<LtRymxgzDTO> thisMonthJtList = CollectionUtils.isEmpty(thisMonthJtInfoMap.get(key)) ? new ArrayList<>() : thisMonthJtInfoMap.get(key) ;
|
||||||
|
List<LtRymxgzDTO> lastMonthJtList = CollectionUtils.isEmpty(lastMonthJtInfoMap.get(key)) ? new ArrayList<>() : lastMonthJtInfoMap.get(key) ;
|
||||||
|
List<LtRymxgzDTO> thisMonthSfList = CollectionUtils.isEmpty(thisMonthSfInfoMap.get(key)) ? new ArrayList<>() : thisMonthSfInfoMap.get(key) ;
|
||||||
|
List<LtRymxgzDTO> lastMonthSfList = CollectionUtils.isEmpty(lastMonthSfInfoMap.get(key)) ? new ArrayList<>() : lastMonthSfInfoMap.get(key) ;
|
||||||
|
if (monthValue == 2 || monthValue == 3 || monthValue == 5 || monthValue == 6 || monthValue == 8 || monthValue == 9 || monthValue == 11) {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getJx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
} else if (monthValue == 4 || monthValue == 7 || monthValue == 10) {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getJdjx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthSfList.stream().map(LtRymxgzDTO::getJdjx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getJx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
} else if (monthValue == 12) {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthSfList.stream().map(LtRymxgzDTO::getNzj).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
} else {
|
||||||
|
gz = gz.add(lastMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(lastMonthSfList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthJtList.stream().map(LtRymxgzDTO::getNzj).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.add(thisMonthSfList.stream().map(LtRymxgzDTO::getNzj).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getGz).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
gz = gz.subtract(thisMonthJtList.stream().map(LtRymxgzDTO::getJx).filter(v -> v != null).reduce(new BigDecimal("0"), BigDecimal::add));
|
||||||
|
}
|
||||||
|
String[] split = key.split("_split");
|
||||||
|
String cbzx = split != null && split.length > 0 ? split[0] : "";
|
||||||
|
String xmh = split != null && split.length > 1 ? split[1] : "";
|
||||||
|
String xmszsyb = split != null && split.length > 2 ? split[2] : "";
|
||||||
|
// 入库
|
||||||
|
StringBuilder insertSqlSb = new StringBuilder("insert into uf_bmxmfzftb (formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,qj,cbzx,xmh,xmszsyb,yfgz)VALUES(")
|
||||||
|
.append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",'").append(salaryMonth).append("','").append(cbzx).append("','").append(xmh).append("','").append(xmszsyb).append("',").append(gz.toPlainString()).append(")");
|
||||||
|
rs.execute(insertSqlSb.toString());
|
||||||
|
// 权限重构
|
||||||
|
// 获取最大值 作为权限重构的起始id
|
||||||
|
rs.execute("select max(id) from uf_bmxmfzftb");
|
||||||
|
int maxId = 0;
|
||||||
|
if (rs.next()) {
|
||||||
|
maxId = rs.getInt(1);
|
||||||
|
}
|
||||||
|
if (modeId != null && NumberUtils.isCreatable(modeId)) {
|
||||||
|
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||||
|
ModeRightInfo.setNewRight(true);
|
||||||
|
ModeRightInfo.editModeDataShare(1, Integer.valueOf(modeId), maxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -698,6 +698,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee
|
||||||
.accountTypeName(AccountTypeEnum.getDefaultLabelByValue(hrmSnapshotPO.getAccounttype()))
|
.accountTypeName(AccountTypeEnum.getDefaultLabelByValue(hrmSnapshotPO.getAccounttype()))
|
||||||
.accountType(hrmSnapshotPO.getAccounttype())
|
.accountType(hrmSnapshotPO.getAccounttype())
|
||||||
.ltCbzx(hrmSnapshotPO.getLtCbzx())
|
.ltCbzx(hrmSnapshotPO.getLtCbzx())
|
||||||
|
.ltRylb(hrmSnapshotPO.getLtRylb())
|
||||||
.build())
|
.build())
|
||||||
.orElse(currentEmployeeMap.get(employeeId));
|
.orElse(currentEmployeeMap.get(employeeId));
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
|
||||||
|
|
@ -40,13 +40,16 @@ public class HrmSnapshotJob extends BaseCronJob {
|
||||||
BaseBean baseBean = new BaseBean();
|
BaseBean baseBean = new BaseBean();
|
||||||
String cbzxField = baseBean.getPropValue("ltSalaryReport", "cbzx_field_name");
|
String cbzxField = baseBean.getPropValue("ltSalaryReport", "cbzx_field_name");
|
||||||
String cbzxCodeField = baseBean.getPropValue("ltSalaryReport", "cbzx_code_field_name");
|
String cbzxCodeField = baseBean.getPropValue("ltSalaryReport", "cbzx_code_field_name");
|
||||||
|
String rylbField = baseBean.getPropValue("ltSalaryReport", "rylb_field_name");
|
||||||
RecordSet rs = new RecordSet();
|
RecordSet rs = new RecordSet();
|
||||||
rs.execute("select id,"+cbzxField +","+cbzxCodeField+" from cus_fielddata where scopeid=3 ");
|
rs.execute("select id,"+cbzxField +","+cbzxCodeField+","+rylbField+" from cus_fielddata where scopeid=3 ");
|
||||||
HashMap<Long, String> ltCbzxMap = new HashMap<>();
|
HashMap<Long, String> ltCbzxMap = new HashMap<>();
|
||||||
HashMap<Long, String> ltCbzxCodeMap = new HashMap<>();
|
HashMap<Long, String> ltCbzxCodeMap = new HashMap<>();
|
||||||
|
HashMap<Long, String> ltRylbMap = new HashMap<>();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
ltCbzxMap.put(Long.valueOf(rs.getInt("id")), rs.getString(cbzxField));
|
ltCbzxMap.put(Long.valueOf(rs.getInt("id")), rs.getString(cbzxField));
|
||||||
ltCbzxCodeMap.put(Long.valueOf(rs.getInt("id")), rs.getString(cbzxCodeField));
|
ltCbzxCodeMap.put(Long.valueOf(rs.getInt("id")), rs.getString(cbzxCodeField));
|
||||||
|
ltRylbMap.put(Long.valueOf(rs.getInt("id")), rs.getString(rylbField));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -66,6 +69,7 @@ public class HrmSnapshotJob extends BaseCronJob {
|
||||||
po.setLtCbzxcode(Utils.null2String(ltCbzxCodeMap.get(po.getEmployeeId())));
|
po.setLtCbzxcode(Utils.null2String(ltCbzxCodeMap.get(po.getEmployeeId())));
|
||||||
po.setLtGwpc(Utils.null2String(ltGwpcMap.get(po.getEmployeeId())));
|
po.setLtGwpc(Utils.null2String(ltGwpcMap.get(po.getEmployeeId())));
|
||||||
po.setLtXcbzsc(Utils.null2String(ltXcbzscMap.get(po.getEmployeeId())));
|
po.setLtXcbzsc(Utils.null2String(ltXcbzscMap.get(po.getEmployeeId())));
|
||||||
|
po.setLtRylb(Utils.null2String(ltRylbMap.get(po.getEmployeeId())));
|
||||||
});
|
});
|
||||||
|
|
||||||
Date snapshotTime = StrUtil.isNotBlank(appointSnapshotTime) && SalaryDateUtil.checkDay(appointSnapshotTime) ? SalaryDateUtil.dateStrToLocalDate(appointSnapshotTime) : SalaryDateUtil.localDateToDate(LocalDate.now());
|
Date snapshotTime = StrUtil.isNotBlank(appointSnapshotTime) && SalaryDateUtil.checkDay(appointSnapshotTime) ? SalaryDateUtil.dateStrToLocalDate(appointSnapshotTime) : SalaryDateUtil.localDateToDate(LocalDate.now());
|
||||||
|
|
|
||||||
|
|
@ -1147,7 +1147,93 @@ public class SalaryAcctController {
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public String ltGenKb(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
public String ltGenKb(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
User user = HrmUserVarify.getUser(request, response);
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
return new ResponseResult<String, Map<String, Object>>(user).run(getSalaryAcctResultWrapper(user)::ltGenKb, salaryMonth);
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenKb, salaryMonth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特 表5 - 研发项目工资分摊表-当月计提
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/ltSalaryReport/genYfxmgzftbdyjt")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public String ltGenYfxmgzftbdyjt(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenYfxmgzftbdyjt, salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特 表5 - 研发项目工资分摊表-当月实发
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/ltSalaryReport/genYfxmgzftbdysf")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public String ltGenYfxmgzftbdysf(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenYfxmgzftbdysf, salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特 表5 - 研发项目工资分摊表
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/ltSalaryReport/genYfxmgzftb")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public String ltGenYfxmgzftb(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenYfxmgzftb, salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门研发项目工资分摊表-计提
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/ltSalaryReport/genBmyfxmgzftbjt")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public String ltGenBmyfxmgzftbjt(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenBmyfxmgzftbjt, salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特表5 - 部门研发项目工资分摊表-实发
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/ltSalaryReport/genBmyfxmgzftbsf")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public String ltGenBmyfxmgzftbsf(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenBmyfxmgzftbsf, salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联特 表5 - 部门项目工资分摊表
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/ltSalaryReport/genBmxmgzftb")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public String ltGenBmxmgzftb(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "salaryMonth") String salaryMonth) {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
return new ResponseResult<String, String>(user).run(getSalaryAcctResultWrapper(user)::ltGenBmxmgzftb, salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************联特 报表end*********************************/
|
/**********************************联特 报表end*********************************/
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -450,4 +450,58 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult
|
||||||
public String ltGenKb(String salaryMonth) {
|
public String ltGenKb(String salaryMonth) {
|
||||||
return getSalaryAcctResultService(user).ltGenKb(salaryMonth);
|
return getSalaryAcctResultService(user).ltGenKb(salaryMonth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表5 - 研发项目工资分摊表-当月计提
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String ltGenYfxmgzftbdyjt(String salaryMonth) {
|
||||||
|
return getSalaryAcctResultService(user).ltGenYfxmgzftbdyjt(salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表5 - 研发项目工资分摊表-当月实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String ltGenYfxmgzftbdysf(String salaryMonth) {
|
||||||
|
return getSalaryAcctResultService(user).ltGenYfxmgzftbdysf(salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表5 - 研发项目工资分摊表
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String ltGenYfxmgzftb(String salaryMonth) {
|
||||||
|
return getSalaryAcctResultService(user).ltGenYfxmgzftb(salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表5 - 部门研发项目工资分摊表-计提
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String ltGenBmyfxmgzftbjt(String salaryMonth) {
|
||||||
|
return getSalaryAcctResultService(user).ltGenBmyfxmgzftbjt(salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表5 - 部门研发项目工资分摊表-实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String ltGenBmyfxmgzftbsf(String salaryMonth) {
|
||||||
|
return getSalaryAcctResultService(user).ltGenBmyfxmgzftbsf(salaryMonth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表5 - 部门项目工资分摊表-实发
|
||||||
|
* @param salaryMonth
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String ltGenBmxmgzftb(String salaryMonth) {
|
||||||
|
return getSalaryAcctResultService(user).ltGenBmxmgzftb(salaryMonth);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue