package com.sp2p.service;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sp2p.dao.AwardMonthDao;
import com.shove.Convert;
import com.shove.base.BaseService;
import com.shove.data.DataException;
import com.shove.data.DataSet;
import com.shove.data.dao.MySQL;
/**
* 经济人提成 按经济人月流量计算提成
*
*
*/
public class AgentcommissionService extends BaseService {
public static Log log = LogFactory.getLog(AgentcommissionService.class);
private AwardMonthDao awardMonthDao;
public void setAwardMonthDao(AwardMonthDao awardMonthDao) {
this.awardMonthDao = awardMonthDao;
}
/**
* 每月调用一次去统t_award表中的数据
* @throws SQLException
* @throws ParseException
*
*/
public void AddAgentcommission() throws Exception, ParseException{
Connection conn = MySQL.getConnection();
try {
String month = getlastDateDate();
//经济人统计
DataSet dateset = MySQL.executeQuery(conn, " select sum(level2money) as moneys,level2userId from t_award where DATE_FORMAT(addDate,'%Y-%m-%d') >= '"
+ getfirstDate()
+ "' AND DATE_FORMAT(addDate,'%Y-%m-%d') <= '"
+ getlastDateDate()
+ "' GROUP BY level2userId " );
dateset.tables.get(0).rows.genRowsMap();
List<Map<String,Object>> awardMaplist = dateset.tables.get(0).rows.rowsMap;
if(awardMaplist!=null){
for(Map<String,Object> awardmap :awardMaplist ){
double moneys = Convert.strToDouble(awardmap.get("moneys")+"", 0);
long level2userId = Convert.strToLong(awardmap.get("level2userId")+"", -12);
if(moneys!=0||level2userId!=-12){
awardMonthDao.addUserAwardMonth(conn, level2userId, moneys, 2, 1,month);//其中2表示 是经纪人,1 表示未月结
}
}
}
//团队长统计
DataSet dateset1 = MySQL.executeQuery(conn, " select sum(level1money) as moneys,level1userId from t_award where DATE_FORMAT(addDate,'%Y-%m-%d') >= '"
+ getfirstDate()
+ "' AND DATE_FORMAT(addDate,'%Y-%m-%d') <= '"
+ getlastDateDate()
+ "' GROUP BY level1userId" );
dateset1.tables.get(0).rows.genRowsMap();
List<Map<String,Object>> awardMaplist1 = dateset1.tables.get(0).rows.rowsMap;
if(awardMaplist!=null){
for(Map<String,Object> awardmap1 :awardMaplist1 ){
double moneys = Convert.strToDouble(awardmap1.get("moneys")+"", 0);
long level2userId = Convert.strToLong(awardmap1.get("level1userId")+"", -12);
if(moneys!=0||level2userId!=-12){
awardMonthDao.addUserAwardMonth(conn, level2userId, moneys, 1, 1,month);//其中2表示 是经纪人,1 表示未月结
}
}
}
conn.commit();
} catch (Exception e) {
e.printStackTrace();
} finally{
conn.close();
}
//查询表中的数据
}
/**
* 获取上一个月的最后一天
*
* @return
*/
public String getlastDateDate() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
Date lastDateDate = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(lastDateDate);
}
/**
* 获取上一个月的第一天
*
* @return
*/
public String getfirstDate() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date firstDate = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(firstDate);
}
public Date getfirstDate2() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
/**
* 获取本月第一天
*
* @return 当前月第一天的日期
*/
public String getcurentMonthFirstDay() {
Calendar cal = Calendar.getInstance();
Calendar f = (Calendar) cal.clone();
f.clear();
f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
f.set(Calendar.MONTH, cal.get(Calendar.MONTH));
String firstday = new SimpleDateFormat("yyyy-MM-dd").format(f
.getTime());
return firstday;
}
/**
* 获取本月最后一天
*
* @return 当前月最后一天的日期
*/
public String getcurentMonthLastDay() {
Calendar cal = Calendar.getInstance();
Calendar l = (Calendar) cal.clone();
l.clear();
l.set(Calendar.YEAR, cal.get(Calendar.YEAR));
l.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
l.set(Calendar.MILLISECOND, -1);
String lastday = new SimpleDateFormat("yyyy-MM-dd").format(l
.getTime());
return lastday;
}
}