longht пре 3 година
родитељ
комит
e67e8139ea

+ 45 - 29
hrwa/src/private/nc/bs/wa/paydata/devMethod/PushPayBillMethod.java

@@ -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()));
 	}
 	
 	/**

+ 19 - 0
hrwa/src/public/nc/vo/hrwa/dev/DevWaDataVO.java

@@ -0,0 +1,19 @@
+package nc.vo.hrwa.dev;
+
+import nc.vo.wa.paydata.DataVO;
+
+public class DevWaDataVO extends DataVO{
+	
+	private String pk_gwlb;
+
+	public String getPk_gwlb() {
+		return pk_gwlb;
+	}
+
+	public void setPk_gwlb(String pk_gwlb) {
+		this.pk_gwlb = pk_gwlb;
+	}
+	
+	
+
+}