境外津贴核算web完成
This commit is contained in:
parent
e00115028c
commit
9e452c17a7
|
|
@ -1,9 +1,10 @@
|
|||
package com.engine.bjcj220907.dao;
|
||||
|
||||
import com.engine.bjcj220907.entity.JwCZInfoDetail;
|
||||
import com.engine.bjcj220907.entity.XcdjJwjtParam;
|
||||
import com.engine.bjcj220907.entity.*;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.formmode.setup.ModeRightInfo;
|
||||
import weaver.general.BaseBean;
|
||||
import weaver.general.TimeUtil;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
|
@ -26,8 +27,9 @@ public class OverseasAllowanceDAO {
|
|||
*/
|
||||
public List<JwCZInfoDetail> getCZInfo(Date startAttendanceCal,Date endAttendanceCal) {
|
||||
RecordSet rs = new RecordSet();
|
||||
String sql="select xm,jwgzksrq,jwgzjsrq,lx,jsglts,g.jwglbtbz,jwgzdw1, a.btbz dqbtbz " +
|
||||
String sql="select xm,certificatenum,jwgzksrq,jwgzjsrq,lx,jsglts,g.jwglbtbz,jwgzdw1, a.btbz dqbtbz " +
|
||||
"from UF_NJJMB_DT1 d LEFT JOIN UF_NJJMB m on d.MAINID=m.id " +
|
||||
"LEFT JOIN HRMRESOURCE h on m.xm=h.id " +
|
||||
"LEFT JOIN UF_DQBTBZ a on d.jwgzdw1=a.id "+
|
||||
"LEFT JOIN uf_jwgl g on g.jwgl=case when floor(jsglts/365)>5 then 5 else floor(jsglts/365) end " +
|
||||
"WHERE lx in(0,1) " +
|
||||
|
|
@ -62,7 +64,7 @@ public class OverseasAllowanceDAO {
|
|||
if(jwgzjsrqStr!=null && jwgzjsrqStr.length()!=0){
|
||||
jwgzjsrq = sdf.parse(jwgzjsrqStr);
|
||||
}
|
||||
JwCZInfoDetail build = JwCZInfoDetail.builder().xm(rs.getString("xm")).lx(lx).jwczksrq(jwgzksrq).jwczjsrq(jwgzjsrq).jsglts(jsglts).glbtybz(btbz).jkdqbtbz(dqbtbz).jkdq(Integer.valueOf(jwgzdw1)).build();
|
||||
JwCZInfoDetail build = JwCZInfoDetail.builder().xm(rs.getString("xm")).sfzh(rs.getString("certificatenum")).lx(lx).jwczksrq(jwgzksrq).jwczjsrq(jwgzjsrq).jsglts(jsglts).glbtybz(btbz).jkdqbtbz(dqbtbz).jkdq(Integer.valueOf(jwgzdw1)).build();
|
||||
results.add(build);
|
||||
}catch (Exception e){
|
||||
baseBean.writeLog(e);
|
||||
|
|
@ -196,4 +198,55 @@ public class OverseasAllowanceDAO {
|
|||
}
|
||||
return gwhg;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 插入境外津贴核算结果
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/10/24 9:45
|
||||
*/
|
||||
public void insertOverseasAllowance(List<JWJT> results) {
|
||||
Integer fieldValue = Integer.valueOf( baseBean.getPropValue("bjcjydjx", "jwjt_module_id"));
|
||||
baseBean.writeLog("获取境外津贴建模中模块id:"+fieldValue);
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||||
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
|
||||
Calendar sendMonthCal = Calendar.getInstance();
|
||||
sendMonthCal.setTime(results.get(0).getKqMonth());
|
||||
sendMonthCal.add(Calendar.MONTH,1);
|
||||
String currTime = sdf.format(new Date());
|
||||
String currDate = TimeUtil.getCurrentDateString();
|
||||
RecordSet rs = new RecordSet();
|
||||
results.stream().forEach(result -> {
|
||||
double gnQq = result.getGnQq();
|
||||
double jwQq = result.getJwQq();
|
||||
String sql = "insert into uf_jwcz(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,xm,gnycqts,gnscqts,sfzh,xcdj,jwjtbz,jwglbtbzybz,jwglbtbztbz,sxbthjybz,czyf," +
|
||||
"jwyczts,jwsjczts,qjtscgs,gwhgts,gwhggzrts,jwjtje,jkdqbtje,jwgl,jwglbtje,sxbtje,jwjtjehj,ffyf)" +
|
||||
"values('"+fieldValue+"','1','0','"+currDate+"','"+currTime+"',"+result.getUser()+","+result.getGngzts()+","+result.getGnscq()+",'"+result.getSfzh()+"','"+result.getXcdj()+"'," +
|
||||
result.getJwjtbz()+","+result.getJwglbtybz()+","+result.getJwglbtrbz()+","+result.getSxbzhjbz()+",'"+sdf2.format(result.getKqMonth())+"'," +result.getJwycq()+","+result.getJwscq()+"," +
|
||||
(gnQq+jwQq)+","+result.getGwhg()+","+result.getGwhgWorkdays()+","+result.getJwjt()+","+result.getJkdqbthj()+","+result.getJwgl()+","+result.getJwycq()*result.getJwglbtrbz() +"," +
|
||||
result.getSxbzhj()+","+(result.getJwjt()+result.getJwycq()*result.getJwglbtrbz()+result.getJkdqbthj())+",'"+sdf2.format(sendMonthCal.getTime())+"')";
|
||||
rs.execute(sql);
|
||||
String sql2 = "select max(id) as id from uf_jwcz";
|
||||
rs.execute(sql2);
|
||||
int mainId = 0;
|
||||
while (rs.next()) {
|
||||
mainId = rs.getInt("id");
|
||||
}
|
||||
List<JKDQBT> jkdqbts = result.getJkdqbts();
|
||||
JKDQBT first = jkdqbts.get(0);
|
||||
StringBuilder sql3 = new StringBuilder( "insert into UF_JWCZ_DT1(MAINID,LX,JKDQBTBZ,TS,JKDQBTJE,DQ)" +
|
||||
" select "+mainId+" , "+first.getLx()+" , "+first.getJkdqbtbz()+" , "+first.getDays()+" , "+first.getJkdqbt()+",'"+first.getJkdq()+"' from dual");
|
||||
for(int i=1;i<jkdqbts.size();i++){
|
||||
JKDQBT jkdqbt = jkdqbts.get(i);
|
||||
sql3.append(" union select "+mainId+" , "+jkdqbt.getLx()+" , "+jkdqbt.getJkdqbtbz()+" , "+jkdqbt.getDays()+" , "+jkdqbt.getJkdqbt()+" , '"+jkdqbt.getJkdq() + "' from dual");
|
||||
}
|
||||
rs.execute(sql3.toString());
|
||||
while (rs.next()) {
|
||||
ModeRightInfo ModeRightInfo = new ModeRightInfo();
|
||||
ModeRightInfo.setNewRight(true);
|
||||
ModeRightInfo.editModeDataShare(1, fieldValue,mainId);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,11 @@ public class JWJT {
|
|||
*/
|
||||
private String user;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String sfzh;
|
||||
|
||||
/**
|
||||
* 考勤月份
|
||||
*/
|
||||
|
|
@ -35,15 +40,20 @@ public class JWJT {
|
|||
private double jwycq;
|
||||
|
||||
/**
|
||||
* 境外实际常驻天数 境外应常驻天数-请假天数(不含年假、奖励假)-公务回国天数
|
||||
* 境外实际常驻天数 境外应常驻天数-境外请假天数(不含年假、奖励假)-公务回国天数
|
||||
*/
|
||||
private double jwscq;
|
||||
|
||||
/**
|
||||
* 国内工作天数(工作日)
|
||||
* 国内应工作天数(工作日)
|
||||
*/
|
||||
private double gngzts;
|
||||
|
||||
/**
|
||||
* 国内实出勤
|
||||
*/
|
||||
private double gnscq;
|
||||
|
||||
/**
|
||||
* 国内缺勤天数(请假)
|
||||
*/
|
||||
|
|
@ -100,6 +110,11 @@ public class JWJT {
|
|||
*/
|
||||
private List<JKDQBT> jkdqbts;
|
||||
|
||||
/**
|
||||
* 艰苦地区补贴合计
|
||||
*/
|
||||
private double jkdqbthj;
|
||||
|
||||
/**
|
||||
* 四项补助合计(月标准)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -22,6 +22,11 @@ public class JwCZInfo {
|
|||
*/
|
||||
private String xm;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String sfzh;
|
||||
|
||||
/**
|
||||
* 境外常驻详细信息
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -24,6 +24,12 @@ public class JwCZInfoDetail {
|
|||
*/
|
||||
private String xm;
|
||||
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String sfzh;
|
||||
|
||||
/**
|
||||
* 类型( 0:开始常驻,1:结束常驻 6:公务回国)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -81,9 +81,7 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
|
|||
attDateList.stream().forEach(a -> {
|
||||
Map attCalMap =(Map) i.get(sdf.format(a));
|
||||
String attCal = (String)attCalMap.get("text");
|
||||
if( (!attCal.equals("√")) && (!attCal.contains("休息")) && (!attCal.equals("")) && ( (attCal.contains("旷工")) || (attCal.contains("事假")) || (attCal.contains("病假")) || (attCal.contains("丧假")) || (attCal.contains("产假")) || (attCal.contains("婚假"))
|
||||
|| (attCal.contains("探亲假")) || (attCal.contains("陪产假")) || (attCal.contains("待岗")) || (attCal.contains("隔离假")) || (attCal.contains("哺乳假")) || (attCal.contains("产检假")) || (attCal.contains("计划生育假"))
|
||||
|| (attCal.contains("第三国出差/境外国内出差")) || (attCal.contains("公务回国")) || (attCal.contains("境外出差")) || (attCal.contains("境内出差")) || (attCal.contains("育儿假-境内")) || (attCal.contains("路程假")) || (attCal.contains("育儿假-境外")) ) ){
|
||||
if( (attCal.contains("旷工")) || ( (!attCal.equals("√")) && (!attCal.contains("休息")) && (!attCal.equals("")) && (!attCal.contains("境内年假")) && (!attCal.contains("境外年假")) && (!attCal.contains("工伤")) && (!attCal.contains("奖励假")) ) ){
|
||||
// 存在缺勤
|
||||
qqDate.add(a);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,15 +79,35 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
// 处理第三国出差(2)、境外国内出差(3)艰苦地区补贴
|
||||
Map<Integer, List<JwCZInfoDetail>> dsgccJkdq = getOverseasAllowanceDAO().getDsgcc();
|
||||
baseBean.writeLog("获取第三国出差(2)、境外国内出差(3)艰苦地区补贴,共:"+dsgccJkdq.size());
|
||||
baseBean.writeLog("第三国出差(2)、境外国内出差(3)艰苦地区补贴:"+dsgccJkdq);
|
||||
// 封装第三国出差数、境外国内出差据到result中
|
||||
getDsgcc(results,dsgccJkdq,startAttendanceCal.getTime(),endAttendanceCal.getTime());
|
||||
// 处理四项补贴(月标准)
|
||||
// 计算艰苦地区补贴合计
|
||||
coutJkdqbthj(results);
|
||||
// 四项补贴合计(天标准)*(公务回国工作日天数+境外国内出差工作日天数+国内工作日天数)
|
||||
countSxbthj(results);
|
||||
baseBean.writeLog("计算四项补贴合计");
|
||||
baseBean.writeLog("计算四项补贴合计:"+results.size());
|
||||
// 将结果插入建模表中
|
||||
getOverseasAllowanceDAO().insertOverseasAllowance(results);
|
||||
baseBean.writeLog("将结果插入建模表中");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 计算艰苦地区补贴合计
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/10/24 14:11
|
||||
*/
|
||||
private void coutJkdqbthj(List<JWJT> results) {
|
||||
results.stream().forEach(result->{
|
||||
double[] total={0.0};
|
||||
List<JKDQBT> jkdqbts = result.getJkdqbts();
|
||||
jkdqbts.stream().forEach(j -> {
|
||||
total[0]=total[0]+j.getJkdqbt();
|
||||
});
|
||||
result.setJkdqbthj(total[0]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -120,7 +140,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
// 存入常驻天数用于计算艰苦地区补贴
|
||||
// int days1 = BjcjCommonUtils.getDays(detail.getJwczksrq(), endAttendanceCal.getTime());
|
||||
detail.setDays(days);
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build();
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).build();
|
||||
jkdqbts.add(jk);
|
||||
} else {
|
||||
// 开始常驻日期在 考勤开始日期前(应出勤日期为自然日)
|
||||
|
|
@ -128,8 +148,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
// 存入常驻天数用于计算艰苦地区补贴
|
||||
// int days1 = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime());
|
||||
detail.setDays(days);
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build();
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(days).gngzts(0.0).kqMonth(endAttendanceCal.getTime()).build();
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).build();
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).sfzh(czInfo.getSfzh()).jwycq(days).gngzts(0.0).kqMonth(endAttendanceCal.getTime()).jwgl(czInfo.getJsglts()).jwglbtybz(czInfo.getGlbtybz()).jwglbtrbz(czInfo.getGlbtrbz()).build();
|
||||
ArrayList<JKDQBT> jkdqbtList = new ArrayList<>();
|
||||
jkdqbtList.add(jk);
|
||||
build.setJkdqbts(jkdqbtList);
|
||||
|
|
@ -161,7 +181,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
}
|
||||
int days = BjcjCommonUtils.getDays(countStartCal.getTime(), countEndCal.getTime());
|
||||
detail.setDays(days);
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build();
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).build();
|
||||
jkdqbts.add(jk);
|
||||
}
|
||||
if (i == czDetails.size() - 1) {
|
||||
|
|
@ -190,7 +210,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
aCal.add(Calendar.DATE, -1);
|
||||
}
|
||||
}
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).build();
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).sfzh(czInfo.getSfzh()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).jwgl(czInfo.getJsglts()).jwglbtybz(czInfo.getGlbtybz()).jwglbtrbz(czInfo.getGlbtrbz()).build();
|
||||
build.setJkdqbts(jkdqbts);
|
||||
results.add(build);
|
||||
return true;
|
||||
|
|
@ -256,7 +276,6 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
gnQqDays++;
|
||||
flag=true;
|
||||
}
|
||||
// todo 看一下这个时分秒
|
||||
if(BjcjCommonUtils.isBetween(d,detail.getJwczksrq(),detail.getJwczjsrq())){
|
||||
// 在境外常驻期内的缺勤
|
||||
jwQqDays++;
|
||||
|
|
@ -274,6 +293,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
item.setGwhg((Double) kqDatas.get(item.getUser()+"-gwhg"));
|
||||
}
|
||||
item.setJwscq(item.getJwycq()-item.getJwQq()-item.getGwhg());
|
||||
item.setGnscq(item.getGngzts() - item.getGnQq());
|
||||
item.setJwjt(item.getJwscq()*item.getJwjtbz());
|
||||
if(validGwhgAndCountWorkdays.containsKey(Integer.valueOf(item.getUser()))){
|
||||
// 该员工有公务回国数据
|
||||
|
|
@ -302,7 +322,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
List<JwCZInfo> formatJwCZInfos = new ArrayList<>();
|
||||
for (Map.Entry<String, List<JwCZInfoDetail>> entry : groupByName.entrySet()) {
|
||||
List<JwCZInfoDetail> values = entry.getValue();
|
||||
JwCZInfo build = new JwCZInfo().builder().xm(values.get(0).getXm()).jsglts(values.get(0).getJsglts())
|
||||
JwCZInfo build = new JwCZInfo().builder().xm(values.get(0).getXm()).sfzh(values.get(0).getSfzh()).jsglts(values.get(0).getJsglts())
|
||||
.glbtybz(values.get(0).getGlbtybz()).glbtrbz(values.get(0).getGlbtybz()/days)
|
||||
.infos(entry.getValue()).build();
|
||||
formatJwCZInfos.add(build);
|
||||
|
|
@ -340,7 +360,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
countEndCal.setTime(endAttendance);
|
||||
}
|
||||
int days = BjcjCommonUtils.getDays(countStartCal.getTime(), countEndCal.getTime());
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build();
|
||||
JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days * detail.getJkdqbtbz())).build();
|
||||
jwjt.getJkdqbts().add(jk);
|
||||
}
|
||||
}
|
||||
|
|
@ -357,7 +377,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
private void countSxbthj(List<JWJT> results) {
|
||||
results.stream().forEach(result->{
|
||||
// 获取员工的公务回国工作日天数和国内工作日天数 * 四项补助日标准
|
||||
result.setSxbzhj((result.getGngzts()+result.getGwhgWorkdays()) * result.getSxbzhjrbz());
|
||||
result.setSxbzhj((result.getGnscq()+result.getGwhgWorkdays()) * result.getSxbzhjrbz());
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue