|
@@ -21,12 +21,14 @@ import nc.vo.arap.pay.PayBillVO;
|
|
|
import nc.vo.arap.pub.BillActionConstant;
|
|
|
import nc.vo.bd.defdoc.DefdocVO;
|
|
|
import nc.vo.bd.inoutbusiclass.InoutBusiClassVO;
|
|
|
+import nc.vo.hrwa.dev.DevWaDataVO;
|
|
|
import nc.vo.hrwa.dev.DevWaQueryDTO;
|
|
|
import nc.vo.org.DeptVO;
|
|
|
import nc.vo.pmpub.project.ProjectHeadVO;
|
|
|
import nc.vo.pub.AggregatedValueObject;
|
|
|
import nc.vo.pub.BusinessException;
|
|
|
import nc.vo.pub.VOStatus;
|
|
|
+import nc.vo.pub.lang.UFBoolean;
|
|
|
import nc.vo.pub.lang.UFDate;
|
|
|
import nc.vo.pub.lang.UFDateTime;
|
|
|
import nc.vo.pub.lang.UFDouble;
|
|
@@ -35,7 +37,6 @@ import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
|
|
import nc.vo.pubapp.pattern.pub.PubAppTool;
|
|
|
import nc.vo.wa.category.WaClassVO;
|
|
|
import nc.vo.wa.item.WaItemVO;
|
|
|
-import nc.vo.wa.paydata.DataVO;
|
|
|
import nccloud.commons.collections.CollectionUtils;
|
|
|
import nccloud.pubitf.arap.arappub.IArapBillPubUtilService;
|
|
|
|
|
@@ -60,7 +61,7 @@ public class PushPayBillMethod {
|
|
|
boolean ispayed = result.getPayoffflag().booleanValue();
|
|
|
if(!ispayed) {
|
|
|
String watype = result.getWatype();
|
|
|
- mesage = mesage+"薪资期间【"+cyear+cperiod+"】【"+watype+"】未发放!";
|
|
|
+ mesage = mesage+"薪资期间【"+curcyear+curperiod+"】【"+watype+"】未发放!";
|
|
|
}
|
|
|
}
|
|
|
return mesage;
|
|
@@ -80,7 +81,7 @@ public class PushPayBillMethod {
|
|
|
HashMap<String, List<DevWaQueryDTO>> waclassmap = (HashMap<String, List<DevWaQueryDTO>>) getSendDataStatus(pk_org,curcyear,curperiod);
|
|
|
|
|
|
//2.查询工资数据及研发费数据
|
|
|
- HashMap<String,List<DataVO>> wadataMap = getWaDatas(waclassmap.values().stream().flatMap(list->list.stream()).toArray(DevWaQueryDTO[]::new));
|
|
|
+ HashMap<String,List<DevWaDataVO>> wadataMap = getWaDatas(waclassmap.values().stream().flatMap(list->list.stream()).toArray(DevWaQueryDTO[]::new));
|
|
|
|
|
|
//3.根据对照表获取表体计算逻辑
|
|
|
//薪酬项目-业务类型对照
|
|
@@ -134,8 +135,9 @@ public class PushPayBillMethod {
|
|
|
|
|
|
//处理研发费
|
|
|
for (String rdkey : rdmap.keySet()) {
|
|
|
- //研发费key及普通费key之前就差个#项目
|
|
|
- String comkey =rdkey.substring(0,rdkey.lastIndexOf("#"));
|
|
|
+ //研发费key及普通费key 按收支项目+部门进行扣减
|
|
|
+ String[] comkeys =rdkey.split("#");
|
|
|
+ String comkey =comkeys[0]+"#"+comkeys[1];
|
|
|
//根据计算逻辑 ,普通费用要减去研发费的值
|
|
|
if(salarymap.containsKey(comkey)) {
|
|
|
if(salarymap.get(comkey).abs().doubleValue()>0) {
|
|
@@ -493,7 +495,7 @@ public class PushPayBillMethod {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void CalRDMap(List<DataVO> rdlist, HashMap<String, UFDouble> rdmap, HashMap<String, String> projectmap, List<DefdocVO> fK005, List<DefdocVO> fK007) {
|
|
|
+ private void CalRDMap(List<DevWaDataVO> rdlist, HashMap<String, UFDouble> rdmap, HashMap<String, String> projectmap, List<DefdocVO> fK005, List<DefdocVO> fK007) {
|
|
|
// TODO Auto-generated method stub
|
|
|
if(CollectionUtils.isEmpty(rdlist))
|
|
|
return;
|
|
@@ -530,12 +532,12 @@ public class PushPayBillMethod {
|
|
|
List<String> undefindkeyList = new ArrayList<String>();
|
|
|
//遍历工资数据
|
|
|
List<String> projectlist = new ArrayList<String>();
|
|
|
- for (DataVO datavo : rdlist) {
|
|
|
- String pk_dept = datavo.getPk_financedept();
|
|
|
- String cyearperiod =datavo.getCyearperiod();
|
|
|
+ for (DevWaDataVO DevWaDataVO : rdlist) {
|
|
|
+ String pk_dept = DevWaDataVO.getPk_financedept();
|
|
|
+ String cyearperiod =DevWaDataVO.getCyearperiod();
|
|
|
//遍历项目获取数据
|
|
|
for(String prokeyname:projectkeymap.keySet()) {
|
|
|
- Object project = datavo.getAttributeValue(projectkeymap.get(prokeyname));
|
|
|
+ Object project = DevWaDataVO.getAttributeValue(projectkeymap.get(prokeyname));
|
|
|
if(null!=project&&!PubAppTool.isNull(project.toString())) {
|
|
|
//记录project名称
|
|
|
if(!projectlist.contains(project.toString()))
|
|
@@ -549,7 +551,7 @@ public class PushPayBillMethod {
|
|
|
UFDouble caldirnum = UFDouble.ONE_DBL;
|
|
|
if(!PubAppTool.isNull(caldir)&&caldir.equals("-"))
|
|
|
caldirnum = caldirnum.multiply(-1);
|
|
|
- String key = pk_inout+"#"+pk_dept+"#"+pk_paytype+"#"+pkpro;
|
|
|
+ String key = pk_inout+"#"+pk_dept+"#"+pk_paytype+"#null#"+pkpro;
|
|
|
if(PubAppTool.isNull(defvo.getDef2()))
|
|
|
ExceptionUtils.wrappBusinessException("研发费对照表配置不全,请检查!!");
|
|
|
String[] itemkeys = defvo.getDef2().split("\\+");
|
|
@@ -558,7 +560,7 @@ public class PushPayBillMethod {
|
|
|
for (String item : itemkeys) {
|
|
|
if(keyitemmap.containsKey(item)) {
|
|
|
if(keyitemmap.get(item).startsWith(prokeyname)) {
|
|
|
- Object itemvalue = datavo.getAttributeValue(item);
|
|
|
+ Object itemvalue = DevWaDataVO.getAttributeValue(item);
|
|
|
if(null!=itemvalue) {
|
|
|
calmny= calmny.add(new UFDouble(itemvalue.toString())).multiply(caldirnum);
|
|
|
}
|
|
@@ -608,33 +610,39 @@ public class PushPayBillMethod {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void CalSalaryMap(List<DataVO> salaryList, HashMap<String, UFDouble> salarymap, List<DefdocVO> fK004, List<DefdocVO> fK006) throws BusinessException {
|
|
|
+ private void CalSalaryMap(List<DevWaDataVO> salaryList, HashMap<String, UFDouble> salarymap, List<DefdocVO> fK004, List<DefdocVO> fK006) throws BusinessException {
|
|
|
// TODO Auto-generated method stub
|
|
|
if(CollectionUtils.isEmpty(salaryList))
|
|
|
return;
|
|
|
//遍历工资数据
|
|
|
- for (DataVO datavo : salaryList) {
|
|
|
- String pk_dept = datavo.getPk_financedept();
|
|
|
- String cyearperiod =datavo.getCyearperiod();
|
|
|
+ for (DevWaDataVO DevWaDataVO : salaryList) {
|
|
|
+ String pk_dept = DevWaDataVO.getPk_financedept();
|
|
|
+ String cyearperiod =DevWaDataVO.getCyearperiod();
|
|
|
+ String pk_gwlb = PubAppTool.isNull(DevWaDataVO.getPk_gwlb())?"gwlb": DevWaDataVO.getPk_gwlb();
|
|
|
if(CollectionUtils.isNotEmpty(fK004)) {
|
|
|
|
|
|
//处理工资数据
|
|
|
for (DefdocVO defvo : fK004) {
|
|
|
String pk_inout = defvo.getDef1();
|
|
|
String pk_paytype = defvo.getDef3();
|
|
|
+ String gwlb = PubAppTool.isNull(defvo.getDef5())?"gwlb": defvo.getDef5() ;
|
|
|
+ UFBoolean ischeckgwlb = PubAppTool.isNull(defvo.getDef6())?UFBoolean.FALSE:new UFBoolean(defvo.getDef6());
|
|
|
+ //校验岗位类型且一致,不做计算
|
|
|
+ if(ischeckgwlb.booleanValue()&& !pk_gwlb.equals(gwlb))
|
|
|
+ continue;
|
|
|
//计算方向
|
|
|
String caldir = defvo.getDef4();
|
|
|
UFDouble caldirnum = UFDouble.ONE_DBL;
|
|
|
if(!PubAppTool.isNull(caldir)&&caldir.equals("-"))
|
|
|
caldirnum = caldirnum.multiply(-1);
|
|
|
|
|
|
- String key = pk_inout+"#"+pk_dept+"#"+pk_paytype;
|
|
|
+ String key = pk_inout+"#"+pk_dept+"#"+pk_paytype+"#"+pk_gwlb;
|
|
|
if(PubAppTool.isNull(defvo.getDef2()))
|
|
|
ExceptionUtils.wrappBusinessException("工资对照表配置不全,请检查!!");
|
|
|
String[] itemkeys = defvo.getDef2().split("\\+");
|
|
|
UFDouble calmny = UFDouble.ZERO_DBL;
|
|
|
for (String item : itemkeys) {
|
|
|
- Object itemvalue = datavo.getAttributeValue(item);
|
|
|
+ Object itemvalue = DevWaDataVO.getAttributeValue(item);
|
|
|
if(null!=itemvalue) {
|
|
|
calmny=calmny.add(new UFDouble(itemvalue.toString())).multiply(caldirnum);
|
|
|
}
|
|
@@ -657,13 +665,18 @@ public class PushPayBillMethod {
|
|
|
for (DefdocVO defvo : fK006) {
|
|
|
String pk_inout = defvo.getDef1();
|
|
|
String pk_paytype = defvo.getDef3();
|
|
|
- String key = pk_inout+"#"+pk_dept+"#"+pk_paytype;
|
|
|
+ String gwlb = PubAppTool.isNull(defvo.getDef5())?"gwlb": defvo.getDef5() ;
|
|
|
+ UFBoolean ischeckgwlb = PubAppTool.isNull(defvo.getDef6())?UFBoolean.FALSE:new UFBoolean(defvo.getDef6());
|
|
|
+ //校验岗位类型且一致,不做计算
|
|
|
+ if(ischeckgwlb.booleanValue()&& !pk_gwlb.equals(gwlb))
|
|
|
+ continue;
|
|
|
+ String key = pk_inout+"#"+pk_dept+"#"+pk_paytype+"#"+pk_gwlb;
|
|
|
if(PubAppTool.isNull(defvo.getDef2()))
|
|
|
ExceptionUtils.wrappBusinessException("年金对照表配置不全,请检查!!");
|
|
|
String[] itemkeys = defvo.getDef2().split("\\+");
|
|
|
UFDouble calmny = UFDouble.ZERO_DBL;
|
|
|
for (String item : itemkeys) {
|
|
|
- Object itemvalue = datavo.getAttributeValue(item);
|
|
|
+ Object itemvalue = DevWaDataVO.getAttributeValue(item);
|
|
|
if(null!=itemvalue) {
|
|
|
calmny=calmny.add(new UFDouble(itemvalue.toString()));
|
|
|
}
|
|
@@ -761,17 +774,20 @@ public class PushPayBillMethod {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private HashMap<String, List<DataVO>> getWaDatas(DevWaQueryDTO[] vos) {
|
|
|
+ private HashMap<String, List<DevWaDataVO>> getWaDatas(DevWaQueryDTO[] vos) {
|
|
|
// TODO Auto-generated method stub
|
|
|
- List<DataVO> wadatas = new ArrayList<DataVO>();
|
|
|
+ List<DevWaDataVO> wadatas = new ArrayList<DevWaDataVO>();
|
|
|
for (DevWaQueryDTO devWaQueryDTO : vos) {
|
|
|
- String sql = " select * from wa_data where nvl(dr,0)=0 "
|
|
|
- + " and pk_org = '"+devWaQueryDTO.getPk_org()+"'"
|
|
|
- + " and stopflag = 'N' "
|
|
|
- +" and pk_wa_class ='"+devWaQueryDTO.getPk_wa_class()+"'"
|
|
|
- +" and cyearperiod = '"+devWaQueryDTO.getCyear()+devWaQueryDTO.getCperiod()+"'";
|
|
|
+ String sql = " select wa.*,op.glbdef1 pk_gwlb from wa_data wa "
|
|
|
+ + " left join hi_psnjob job on wa.pk_psnjob = job.pk_psnjob and nvl(job.dr,0) = 0 "
|
|
|
+ + " left join om_post op on job.pk_post = op.pk_post and nvl(op.dr,0)=0 "
|
|
|
+ + " where nvl(wa.dr,0)=0 "
|
|
|
+ + " and wa.pk_org = '"+devWaQueryDTO.getPk_org()+"'"
|
|
|
+ + " and wa.stopflag = 'N' "
|
|
|
+ +" and wa.pk_wa_class ='"+devWaQueryDTO.getPk_wa_class()+"'"
|
|
|
+ +" and wa.cyearperiod = '"+devWaQueryDTO.getCyear()+devWaQueryDTO.getCperiod()+"'";
|
|
|
try {
|
|
|
- List<DataVO> results = (List<DataVO>)getBaseDAO().executeQuery( sql, new BeanListProcessor(DataVO.class));
|
|
|
+ List<DevWaDataVO> results = (List<DevWaDataVO>)getBaseDAO().executeQuery( sql, new BeanListProcessor(DevWaDataVO.class));
|
|
|
if(null!=results)
|
|
|
wadatas.addAll(results);
|
|
|
} catch (DAOException e) {
|
|
@@ -779,7 +795,7 @@ public class PushPayBillMethod {
|
|
|
ExceptionUtils.wrappBusinessException("获取薪资发放数据失败:"+e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- return (HashMap<String, List<DataVO>>) wadatas.stream().collect(Collectors.groupingBy(DataVO::getPk_wa_class, Collectors.toList()));
|
|
|
+ return (HashMap<String, List<DevWaDataVO>>) wadatas.stream().collect(Collectors.groupingBy(DevWaDataVO::getPk_wa_class, Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
/**
|