@ -2291,12 +2291,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
}
/ / 获取薪资核算结果
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 ( " ,' " )
. append ( employee . getWorkcode ( ) ) . append ( " ', " )
. append ( employee . getEmployeeId ( ) ) . 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 ( Utils . null2String ( employee . getLtCbzx ( ) ) ) . append ( " ', " )
. 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 ) ;
for ( List < SalaryAcctEmployeePO > part : partition ) {
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 ) {
employee = employeeMap . getOrDefault ( salaryAcctEmployeePO . getEmployeeId ( ) , DataCollectionEmployee . builder ( ) . build ( ) ) ;
singleAcctResultMap = acctResultMapByAcctEmpId . get ( Utils . null2String ( salaryAcctEmployeePO . getId ( ) ) ) ;
@ -2380,7 +2382,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
. append ( employee . getWorkcode ( ) ) . append ( " ', " )
. append ( employee . getEmployeeId ( ) ) . 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 ( Utils . null2String ( employee . getLtCbzx ( ) ) ) . append ( " ', " )
. 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 " ;
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 " ;
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 ( " ,' " )
. append ( employee . getWorkcode ( ) ) . append ( " ', " )
. append ( employee . getEmployeeId ( ) ) . 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 ( Utils . null2String ( employee . getLtCbzx ( ) ) ) . append ( " ', " )
. 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 ) ;
for ( List < String > part : partition ) {
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 ) {
split = keyStr . split ( " _split " ) ;
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 . getEmployeeId ( ) ) . 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 ( Utils . null2String ( employee . getLtCbzx ( ) ) ) . append ( " ', " )
. 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 ( ) ) ) ;
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 ( " , " ) . append ( gsxse ) . append ( " , " ) . append ( empNums . toString ( ) ) . append ( " ) " ) ;
rs . execute ( insertSql . toString ( ) ) ;
@ -3679,4 +3687,691 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
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 " " ;
}
}