CulateServiceImpl.java 12.3 KB
package com.bsth.service.impl;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import com.bsth.entity.ChildTaskPlan;
import com.bsth.entity.ScheduleRealInfo;
import com.bsth.service.CulateService;
import com.bsth.util.Arith;

@Service
public class CulateServiceImpl  implements CulateService{
	
	@Autowired
    JdbcTemplate jdbcTemplate;
	
	@Override
	public double culateKsgl(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		double ksgl =0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			if (!(scheduleRealInfo.getBcType().equals("in") 
					|| scheduleRealInfo.getBcType().equals("out"))) {
				Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
				if(!childTaskPlans.isEmpty()){
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();
	                    if(childTaskPlan.getMileageType().equals("empty")){
	                    	 if (!childTaskPlan.isDestroy()) {
	 	                    	Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
	 	                    	ksgl=Arith.add(ksgl,jhgl);
	 	                    } 
	                    }
	                }
				}
			}
		}
		return ksgl;
	}

	@Override
	public double culateJccgl(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		double jcclc =0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			if (scheduleRealInfo.getBcType().equals("in") 
					|| scheduleRealInfo.getBcType().equals("out")||scheduleRealInfo.getBcType().equals("ldks")) {
				Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
				if(childTaskPlans.isEmpty()){
					if(!scheduleRealInfo.isDestroy())
					jcclc =Arith.add(jcclc, scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
				}else{
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();
	                    if(childTaskPlan.getMileageType().equals("empty")){
	                    	 if (!childTaskPlan.isDestroy()) {
	 	                    	Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
	 	                    	jcclc=Arith.add(jcclc,jhgl);
	 	                    } 
	                    }
	                }
				}
			}
		}
		return jcclc;
	}
	
	@Override
	public int culateKsbc(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		int ksbc =0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			if (!(scheduleRealInfo.getBcType().equals("in") 
					|| scheduleRealInfo.getBcType().equals("out"))) {
				Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
				if(!childTaskPlans.isEmpty()){
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();
	                    if(childTaskPlan.getMileageType().equals("empty")){
	                    	 if (!childTaskPlan.isDestroy()) {
	                    		 ksbc++;
	 	                    } 
	                    }
	                }
				}
			}
		}
		return ksbc;
	}

	@Override
	public int culateJccbc(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		int jccbc =0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			if (scheduleRealInfo.getBcType().equals("in") 
					|| scheduleRealInfo.getBcType().equals("out")||scheduleRealInfo.getBcType().equals("ldks")) {
				Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
				if(childTaskPlans.isEmpty()){
					if(!scheduleRealInfo.isDestroy())
						jccbc++;
				}else{
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();
	                    if(childTaskPlan.getMileageType().equals("empty")){
	                    	 if (!childTaskPlan.isDestroy()) {
	                    		 jccbc++;
	 	                    } 
	                    }
	                }
				}
			}
		}
		return jccbc;
	}
	
	@Override
	public double culateSjgl(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		double sjgl =0.0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			sjgl =Arith.add(sjgl,culateSjgl(scheduleRealInfo));
		}
		return sjgl;
	}
	@Override
	public double culateSjgl(ScheduleRealInfo scheduleRealInfo) {
		// TODO Auto-generated method stub
		double sjgl =0.0;
		if (!isInOut(scheduleRealInfo)) {
			Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
			if(!scheduleRealInfo.isSflj()){
				if(childTaskPlans.isEmpty()){
						if(!scheduleRealInfo.isDestroy()){
							double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
							double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
							if(jhlc-jhlcOrig>0){
								sjgl=Arith.add(sjgl,jhlcOrig);
							}else{
								sjgl=Arith.add(sjgl,jhlc);
							}
							
						}
				}else{
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();
	                    if(childTaskPlan.getMileageType().equals("service")){
	                    	 if (!childTaskPlan.isDestroy()) {
	 	                    	Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
	 	                    	sjgl=Arith.add(sjgl,jhgl);
	 	                    } 
	                    }
	                }
				}
			}
		}
		return sjgl;
	}
	
	@Override
	public int culateSjbc(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		int sjbc=0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			if (!isInOut(scheduleRealInfo)) {
				if(!scheduleRealInfo.isSflj()){
					sjbc++;
				}
			}
		}
		return sjbc;
	}
	
	
	@Override
	public double culateLjgl(ScheduleRealInfo scheduleRealInfo) {
		// TODO Auto-generated method stub
		double ljgl=0.0;
		if (!isInOut(scheduleRealInfo)) {
			if(!scheduleRealInfo.isDestroy()){
				if(scheduleRealInfo.isSflj()){
					Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
					if(childTaskPlans.isEmpty()){
						ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
					}else{
						Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
		                while (it.hasNext()) {
		                    ChildTaskPlan childTaskPlan = it.next();
		                    if(childTaskPlan.getMileageType().equals("service")){
		                    	 if (!childTaskPlan.isDestroy()) {
		 	                    	Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
		 	                    	ljgl=Arith.add(ljgl,jhgl);
		 	                    } 
		                    }
		                }
					}
				}else{
					Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
					if(childTaskPlans.isEmpty()){
						double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
						double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
						double zjlc=Arith.sub(jhlc, jhlcOrig);
						if(zjlc>0){
							ljgl=Arith.add(zjlc, ljgl);
						}
					}
				}
			}
			
		}
		return ljgl;
	}
	
	
	@Override
	public double culateLjgl(List<ScheduleRealInfo> lists) {
		// TODO Auto-generated method stub
		double ljgl=0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			ljgl = Arith.add(ljgl, culateLjgl(scheduleRealInfo));
		}
		return ljgl;
	}
	
	@Override
	public int culateLjbc(List<ScheduleRealInfo> lists) {
		int ljbc=0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo scheduleRealInfo=lists.get(i);
			if (!isInOut(scheduleRealInfo)) {
				if(scheduleRealInfo.isSflj()){					
					ljbc++;
				}
			}
		}
		return ljbc;
	}
	
	@Override
	public double culateZrwgl(List<ScheduleRealInfo> lists) {
		// TODO 统计总子任务数
		double zrwgl=0.0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo t=lists.get(i);
			if(!t.isSflj()){
				Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
				if(!childTaskPlans.isEmpty()){
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();	
	                    zrwgl=Arith.add(zrwgl,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
	                }
				}
			}
		}
		return zrwgl;
	}
	
	@Override
	public int culateZrwbc(List<ScheduleRealInfo> lists) {
		// TODO 统计总子任务数
		int zrwbc=0;
		for (int i = 0; i < lists.size(); i++) {
			ScheduleRealInfo t=lists.get(i);
			if(!t.isSflj()){
				Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
				if(!childTaskPlans.isEmpty()){
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();	
	                    zrwbc++;
	                }
				}
			}
		}
		return zrwbc;
	}

	@Override
	public double culatesddfgl(List<ScheduleRealInfo> list) {
		double  sddfgl = 0;
		for(ScheduleRealInfo schedule : list){
			if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
				if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
					if(!schedule.isDfAuto())
						sddfgl = Arith.add(sddfgl, culateSjgldf(schedule));
				}				
			}
		}
		return sddfgl;
	}
	
	@Override
	public int culatesddfbc(List<ScheduleRealInfo> list) {
		int  sddfbc = 0;
		for(ScheduleRealInfo schedule : list){
			if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
				if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
					if(!schedule.isDfAuto())
						sddfbc++;
				}				
			}
		}
		return sddfbc;
	}


	@Override
	public double culatezddfgl(List<ScheduleRealInfo> list) {
		double  zddfgl = 0;
		for(ScheduleRealInfo schedule : list){
			if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
				if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
					if(schedule.isDfAuto())
						zddfgl = Arith.add(zddfgl, culateSjgldf(schedule));
				}				
			}
		}
		return zddfgl;
	}
	
	@Override
	public int culatezddfbc(List<ScheduleRealInfo> list) {
		int  zddfbc = 0;
		for(ScheduleRealInfo schedule : list){
			if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
				if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
					if(schedule.isDfAuto())
						zddfbc++;
				}				
			}
		}
		return zddfbc;
	}
	
	@Override
	public double culateSjgldf(ScheduleRealInfo scheduleRealInfo) {
		// TODO Auto-generated method stub
		double sjgl =0;
		if (!isInOut(scheduleRealInfo)) {
			Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
			if(!scheduleRealInfo.isSflj()){
				if(childTaskPlans.isEmpty()){
						if(!scheduleRealInfo.isDestroy()){
							double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
							double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
							if(jhlc-jhlcOrig>0){
								sjgl=Arith.add(sjgl,jhlcOrig);
							}else{
								sjgl=Arith.add(sjgl,jhlc);
							}							
						}
				}else{
					Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
	                while (it.hasNext()) {
	                    ChildTaskPlan childTaskPlan = it.next();
	                    if(childTaskPlan.getMileageType().equals("service")){
	                    	 if (!childTaskPlan.isDestroy()) {
	 	                    	Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
	 	                    	sjgl=Arith.add(sjgl,jhgl);
	 	                    } 
	                    }
	                }
				}
			}
		}
		return sjgl;
	}
	
	public static boolean isInOut(ScheduleRealInfo s){
		boolean fage=false;
		if(s.getBcType().equals("in")){
			fage=true;
		}
		if(s.getBcType().equals("out")){
			fage=true;
		}
		if(s.getBcType().equals("ldks")){
			fage=true;
		}
			
		return fage;
	}
}