|
@@ -9,6 +9,7 @@ import java.text.SimpleDateFormat;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.Month;
|
|
import java.time.Month;
|
|
import java.time.YearMonth;
|
|
import java.time.YearMonth;
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
import java.time.format.TextStyle;
|
|
import java.time.format.TextStyle;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
@@ -17,17 +18,14 @@ import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import com.kingdee.bos.metadata.query.util.CompareType;
|
|
import com.kingdee.bos.metadata.query.util.CompareType;
|
|
-
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
-
|
|
|
|
import com.kingdee.shr.customer.gtiit.util.DateTimeUtils;
|
|
import com.kingdee.shr.customer.gtiit.util.DateTimeUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
import org.json.JSONObject;
|
|
-
|
|
|
|
import com.cloudera.impala.jdbc4.internal.apache.log4j.Logger;
|
|
import com.cloudera.impala.jdbc4.internal.apache.log4j.Logger;
|
|
import com.kingdee.bos.BOSException;
|
|
import com.kingdee.bos.BOSException;
|
|
import com.kingdee.bos.Context;
|
|
import com.kingdee.bos.Context;
|
|
@@ -54,12 +52,15 @@ import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
|
|
import com.kingdee.shr.customer.gtiit.entity.PayAddInfo;
|
|
import com.kingdee.shr.customer.gtiit.entity.PayAddInfo;
|
|
import com.kingdee.util.LocaleUtils;
|
|
import com.kingdee.util.LocaleUtils;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @author ISSUSER 可以查看所有的工资单
|
|
* @author ISSUSER 可以查看所有的工资单
|
|
*/
|
|
*/
|
|
public class AllSalaryListHandler extends ListHandler {
|
|
public class AllSalaryListHandler extends ListHandler {
|
|
Context ctx = SHRContext.getInstance().getContext();
|
|
Context ctx = SHRContext.getInstance().getContext();
|
|
- private static Logger logger = Logger.getLogger("com.kingdee.shr.customer.gtiit.rpt.AllSalaryListHandler");
|
|
|
|
|
|
+ private static Logger logger = Logger.getLogger(AllSalaryListHandler.class);
|
|
// map存储薪酬编码 key工资单薪酬项目存储实体类
|
|
// map存储薪酬编码 key工资单薪酬项目存储实体类
|
|
private static Map<String, PayAddInfo> payMap = new HashMap<>();
|
|
private static Map<String, PayAddInfo> payMap = new HashMap<>();
|
|
// mapkey是薪酬项目编码 value是薪酬项目序号
|
|
// mapkey是薪酬项目编码 value是薪酬项目序号
|
|
@@ -67,7 +68,7 @@ public class AllSalaryListHandler extends ListHandler {
|
|
// 存储薪酬核算表的最后修改时间和 动态添加薪酬项目字段的数量
|
|
// 存储薪酬核算表的最后修改时间和 动态添加薪酬项目字段的数量
|
|
private static Map<String, List<String>> countFiledMap = new HashMap<>();
|
|
private static Map<String, List<String>> countFiledMap = new HashMap<>();
|
|
SimpleDateFormat tosdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
SimpleDateFormat tosdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
-
|
|
|
|
|
|
+ private String currentYear = "";
|
|
@Override
|
|
@Override
|
|
protected EntityViewInfo getDefaultEntityViewInfo(HttpServletRequest request, HttpServletResponse response)
|
|
protected EntityViewInfo getDefaultEntityViewInfo(HttpServletRequest request, HttpServletResponse response)
|
|
throws SHRWebException {
|
|
throws SHRWebException {
|
|
@@ -79,6 +80,8 @@ public class AllSalaryListHandler extends ListHandler {
|
|
String personid = pid.toString();
|
|
String personid = pid.toString();
|
|
// 获取当前日期
|
|
// 获取当前日期
|
|
Date nowdate = new Date();
|
|
Date nowdate = new Date();
|
|
|
|
+ //获取年份
|
|
|
|
+ setYearParam();
|
|
try {
|
|
try {
|
|
// 先查询薪酬表和套打单据里面的数据看是否一样 一样就不需要删除,不一样就要删除重新添加
|
|
// 先查询薪酬表和套打单据里面的数据看是否一样 一样就不需要删除,不一样就要删除重新添加
|
|
// 查询薪酬项目
|
|
// 查询薪酬项目
|
|
@@ -99,7 +102,7 @@ public class AllSalaryListHandler extends ListHandler {
|
|
if (!isEqual) {
|
|
if (!isEqual) {
|
|
System.out.println("进来了判断两个list里面的元素是否一样");
|
|
System.out.println("进来了判断两个list里面的元素是否一样");
|
|
// 先删除套打表里有的数据
|
|
// 先删除套打表里有的数据
|
|
- DbUtil.execute(this.ctx, this.deleteSql(personid));
|
|
|
|
|
|
+ deleteSql(null);
|
|
// 获取动态添加薪酬项目单据新增数据
|
|
// 获取动态添加薪酬项目单据新增数据
|
|
getPaydata();
|
|
getPaydata();
|
|
getSaveData(rs, currentUserInfo, nowdate);
|
|
getSaveData(rs, currentUserInfo, nowdate);
|
|
@@ -109,7 +112,7 @@ public class AllSalaryListHandler extends ListHandler {
|
|
else if (!filedList.contains(countFiled)) {
|
|
else if (!filedList.contains(countFiled)) {
|
|
System.out.println("判断薪酬项目的数量的值是否在list里面");
|
|
System.out.println("判断薪酬项目的数量的值是否在list里面");
|
|
// 先删除套打表里有的数据
|
|
// 先删除套打表里有的数据
|
|
- DbUtil.execute(this.ctx, this.deleteSql(personid));
|
|
|
|
|
|
+ deleteSql(null);
|
|
// 获取动态添加薪酬项目单据新增数据
|
|
// 获取动态添加薪酬项目单据新增数据
|
|
getPaydata();
|
|
getPaydata();
|
|
getSaveData(rs, currentUserInfo, nowdate);
|
|
getSaveData(rs, currentUserInfo, nowdate);
|
|
@@ -117,14 +120,14 @@ public class AllSalaryListHandler extends ListHandler {
|
|
}else if(checkDayisUp()){
|
|
}else if(checkDayisUp()){
|
|
System.out.println("改变了参数,重新触发工资包更新");
|
|
System.out.println("改变了参数,重新触发工资包更新");
|
|
// 先删除套打表里有的数据
|
|
// 先删除套打表里有的数据
|
|
- DbUtil.execute(this.ctx, this.deleteSql(personid));
|
|
|
|
|
|
+ deleteSql(null);
|
|
// 获取动态添加薪酬项目单据新增数据
|
|
// 获取动态添加薪酬项目单据新增数据
|
|
getPaydata();
|
|
getPaydata();
|
|
getSaveData(rs, currentUserInfo, nowdate);
|
|
getSaveData(rs, currentUserInfo, nowdate);
|
|
updateFiled(countFiled);
|
|
updateFiled(countFiled);
|
|
|
|
+ upDayDataDate();
|
|
}
|
|
}
|
|
} catch (BOSException e) {
|
|
} catch (BOSException e) {
|
|
- // TODO 自动生成的 catch 块
|
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
EntityViewInfo defaultViewInfo = new EntityViewInfo();
|
|
EntityViewInfo defaultViewInfo = new EntityViewInfo();
|
|
@@ -222,8 +225,8 @@ public class AllSalaryListHandler extends ListHandler {
|
|
*/
|
|
*/
|
|
public List<String> getUpdateTime(IRowSet rs,Date nowdate) {
|
|
public List<String> getUpdateTime(IRowSet rs,Date nowdate) {
|
|
List<String> updateTimeList = new ArrayList<>();
|
|
List<String> updateTimeList = new ArrayList<>();
|
|
- try {
|
|
|
|
- while (rs.next()) {
|
|
|
|
|
|
+ try {
|
|
|
|
+ if (rs.next()) {
|
|
String formatDate = tosdf.format(nowdate);
|
|
String formatDate = tosdf.format(nowdate);
|
|
String flastupdatetime = rs.getString("flastupdatetime");
|
|
String flastupdatetime = rs.getString("flastupdatetime");
|
|
// 如果为空默认当天
|
|
// 如果为空默认当天
|
|
@@ -248,7 +251,7 @@ public class AllSalaryListHandler extends ListHandler {
|
|
public void getPrinting() {
|
|
public void getPrinting() {
|
|
List<String> lastTimeList = new ArrayList<>();
|
|
List<String> lastTimeList = new ArrayList<>();
|
|
List<String> filedList = new ArrayList<>();
|
|
List<String> filedList = new ArrayList<>();
|
|
- String sql = "SELECT * FROM CT_SAL_WagesChromatography";
|
|
|
|
|
|
+ String sql = "SELECT top 1 * FROM CT_SAL_WagesChromatography order by flastupdatetime desc";
|
|
IRowSet rs = null;
|
|
IRowSet rs = null;
|
|
try {
|
|
try {
|
|
rs = DbUtil.executeQuery(this.ctx, sql);
|
|
rs = DbUtil.executeQuery(this.ctx, sql);
|
|
@@ -561,12 +564,17 @@ public class AllSalaryListHandler extends ListHandler {
|
|
" FROM t_bd_person a right join T_HR_SCMPCALTABLE b on a.fid=b.fpersonid left join T_HR_SCalScheme c on b.FCalSchemeID=c.fid left join T_HR_TaxUnit d on c.FTaxUnitID =d.fid\r\n"
|
|
" FROM t_bd_person a right join T_HR_SCMPCALTABLE b on a.fid=b.fpersonid left join T_HR_SCalScheme c on b.FCalSchemeID=c.fid left join T_HR_TaxUnit d on c.FTaxUnitID =d.fid\r\n"
|
|
+ "left join T_BD_Nationality e on a.FNationalityID=e.fid left join T_ORG_BaseUnit g on b.FAdminOrgUnitID=g.fid\r\n");
|
|
+ "left join T_BD_Nationality e on a.FNationalityID=e.fid left join T_ORG_BaseUnit g on b.FAdminOrgUnitID=g.fid\r\n");
|
|
sql.append(" where 1=1 ");
|
|
sql.append(" where 1=1 ");
|
|
- sql.append(" and b.FCalState in('12','20')");
|
|
|
|
|
|
+ sql.append(" and b.FCalState in('12','20') ");
|
|
//// sql.append(" and b.fpersonid=" + "'" + peronid + "'");
|
|
//// sql.append(" and b.fpersonid=" + "'" + peronid + "'");
|
|
|
|
|
|
// coyle 20250430改
|
|
// coyle 20250430改
|
|
- String dateFormat = DateTimeUtils.dateFormat(new Date(), "YYYY");
|
|
|
|
- sql.append(" and b.fperiodyear = '" + dateFormat + "'");
|
|
|
|
|
|
+ String previousYear = LocalDate.now().minusYears(1).format(DateTimeFormatter.ofPattern("yyyy"));
|
|
|
|
+ //取今年与去年12月的数据就可以了
|
|
|
|
+ sql.append(" and ((b.fperiodyear = '" + previousYear + "' and b.fperiodmonth = '12') or ");
|
|
|
|
+ sql.append("(b.fperiodyear = '" + currentYear + "')) ");
|
|
|
|
+
|
|
|
|
+ //order by
|
|
|
|
+ sql.append(" order by flastupdatetime desc ");
|
|
System.out.print("所有薪酬查询语句是" + sql.toString());
|
|
System.out.print("所有薪酬查询语句是" + sql.toString());
|
|
logger.error("所有薪酬查询语句是" + sql.toString());
|
|
logger.error("所有薪酬查询语句是" + sql.toString());
|
|
return sql.toString();
|
|
return sql.toString();
|
|
@@ -574,16 +582,18 @@ public class AllSalaryListHandler extends ListHandler {
|
|
}
|
|
}
|
|
|
|
|
|
// 删除套打里面的有的数据sql
|
|
// 删除套打里面的有的数据sql
|
|
- public String deleteSql(String personid) {
|
|
|
|
- StringBuffer sql = new StringBuffer();
|
|
|
|
- String dateFormat = DateTimeUtils.dateFormat(new Date(), "YYYY");
|
|
|
|
- sql.append(" and b.fperiodyear = '" + dateFormat + "'");
|
|
|
|
- sql.append("DELETE FROM CT_SAL_WagesChromatography where cfstatisticalyear = '" + dateFormat + "'");
|
|
|
|
- System.out.print("薪酬套打的删除语句是" + sql.toString());
|
|
|
|
- return sql.toString();
|
|
|
|
-
|
|
|
|
|
|
+ public void deleteSql(String personid) throws BOSException {
|
|
|
|
+ // 获取当前年份
|
|
|
|
+ String previousYear = LocalDate.now().minusYears(1).format(DateTimeFormatter.ofPattern("yyyy"));
|
|
|
|
+ // 准备SQL语句
|
|
|
|
+ String sql = "DELETE FROM CT_SAL_WagesChromatography WHERE cfstatisticalyear = ? OR (cfstatisticalmonth = '12' AND cfstatisticalyear = ?)";
|
|
|
|
+ // 打印SQL语句
|
|
|
|
+ logger.error("薪酬套打的删除语句是 " + sql);
|
|
|
|
+ // 执行SQL语句
|
|
|
|
+ DbUtil.execute(this.ctx, sql, new Object[]{currentYear, previousYear});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
// 通过编码查询薪酬字段序号的方法
|
|
// 通过编码查询薪酬字段序号的方法
|
|
public Map<String, String> getFieldsn() {
|
|
public Map<String, String> getFieldsn() {
|
|
Map<String, String> filedMap = new HashMap<>();
|
|
Map<String, String> filedMap = new HashMap<>();
|
|
@@ -1952,13 +1962,42 @@ public class AllSalaryListHandler extends ListHandler {
|
|
public void upDayDataDate() {
|
|
public void upDayDataDate() {
|
|
//该最后修改时间为昨天的; 这个时间上面用做了判断条件,为了使其不再更新工资包的数;
|
|
//该最后修改时间为昨天的; 这个时间上面用做了判断条件,为了使其不再更新工资包的数;
|
|
Date update = com.kingdee.util.DateTimeUtils.addDay(new Date(), -1) ;
|
|
Date update = com.kingdee.util.DateTimeUtils.addDay(new Date(), -1) ;
|
|
- String updateSql = "UPDATE T_HR_SHRRsvItem0 SET flastupdatetime = "+update+" where fnumber = '1006' ";
|
|
|
|
|
|
+ String formatDate = tosdf.format(update);
|
|
|
|
+ String updateSql = "UPDATE T_HR_SHRRsvItem0 SET flastupdatetime = ? where fnumber = '1006' ";
|
|
System.out.print("修改薪酬基础数据/薪酬预留基础数据0下面编码为1006的的数据的修改语句"+updateSql);
|
|
System.out.print("修改薪酬基础数据/薪酬预留基础数据0下面编码为1006的的数据的修改语句"+updateSql);
|
|
try {
|
|
try {
|
|
- DbUtil.execute(ctx, updateSql);
|
|
|
|
|
|
+ DbUtil.execute(ctx, updateSql,new Object[] {formatDate});
|
|
} catch (BOSException e) {
|
|
} catch (BOSException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /***
|
|
|
|
+ * 只应对导入历史数据的特殊场景
|
|
|
|
+ * 查询homepage 薪酬基础数据/薪酬预留基础数据0下面的数据
|
|
|
|
+ * 编码为1008的; 工资条生成哪一年的数据;如需要重新生成2021年,则填入2021年; 如果是0;则表示为今年的数据; 默认为"0";需导入历史数据时,更新此参数; 请勿填入其他特殊参数;
|
|
|
|
+ * coyle20250516
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public void setYearParam() {
|
|
|
|
+ // 获取当前年份
|
|
|
|
+ currentYear = DateTimeUtils.dateFormat(new Date(), "YYYY");
|
|
|
|
+ String sql = "select fname_l2 from T_HR_SHRRsvItem0 where fnumber = '1008' " ;
|
|
|
|
+ try {
|
|
|
|
+ IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
|
|
|
|
+ while (rs.next()) {
|
|
|
|
+ String yearStr = rs.getString("fname_l2");
|
|
|
|
+ //如果为0或者不为数字,则不处理
|
|
|
|
+ if(StringUtils.isNotBlank(yearStr) && !StringUtils.equals("0",yearStr) && StringUtils.isNumeric(yearStr)) {
|
|
|
|
+ currentYear = yearStr;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ logger.error("当前年份为:"+currentYear);
|
|
|
|
+ } catch (SQLException | BOSException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|