You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

496 lines
20 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<%@ page import="weaver.general.*" %>
<%@ page import="weaver.conn.RecordSet"%>
<%@ page import="weaver.hrm.User" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="org.apache.commons.lang.StringUtils" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.text.ParseException" %>
<%@ page import="weaver.gp.cominfo.AccessItemComInfo" %>
<%@ page import="weaver.systeminfo.SystemEnv" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
BaseBean bb = new BaseBean();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String type = Util.null2String(request.getParameter("type"));
String startdate = "";
String enddate = "";
int currentYear = 0 ;
int currentMonth = 0;
int lastYear = 0;
int lastMonth = 0 ;
int last2Year = 0;
int last2Month = 0 ;
if("1".equals(type)){
String year = Util.null2String(request.getParameter("year"));
String month = Util.null2String(request.getParameter("month"));
try {
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(year+"-"+month+"-01"));
currentYear = cal.get(Calendar.YEAR);//获取年
currentMonth = cal.get(Calendar.MONTH)+1;//获取月月份从0开始如果按照中国的习惯需要加一
} catch (ParseException e) {
e.printStackTrace();
}
try {
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(year+"-"+month+"-01"));
cal.add(Calendar.MONTH, -1);
lastYear = cal.get(Calendar.YEAR);//获取年
lastMonth = cal.get(Calendar.MONTH)+1;//获取月月份从0开始如果按照中国的习惯需要加一
} catch (ParseException e) {
e.printStackTrace();
}
try {
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(year+"-"+month+"-01"));
cal.add(Calendar.MONTH, -2);
last2Year = cal.get(Calendar.YEAR);//获取年
last2Month = cal.get(Calendar.MONTH)+1;//获取月月份从0开始如果按照中国的习惯需要加一
} catch (ParseException e) {
e.printStackTrace();
}
if(currentMonth == 1){
startdate = (currentYear-1)+"-01-01";
enddate = (currentYear-1)+"-12-31";
}else{
startdate = currentYear+"-01-01";
enddate = currentYear+"-12-31";
}
}else{
Calendar cal1 = Calendar.getInstance();
currentYear = cal1.get(Calendar.YEAR);//获取年
currentMonth = cal1.get(Calendar.MONTH)+1;//获取月月份从0开始如果按照中国的习惯需要加一
Calendar cal2 = Calendar.getInstance();
cal2.setTime(new Date());
cal2.add(Calendar.MONTH, -1);
lastYear = cal2.get(Calendar.YEAR);//获取年
lastMonth = cal2.get(Calendar.MONTH)+1;//获取月月份从0开始如果按照中国的习惯需要加一
Calendar cal3 = Calendar.getInstance();
cal3.setTime(new Date());
cal3.add(Calendar.MONTH, -2);
last2Year = cal3.get(Calendar.YEAR);//获取年
last2Month = cal3.get(Calendar.MONTH)+1;//获取月月份从0开始如果按照中国的习惯需要加一
if(currentMonth == 1){
startdate = (currentYear-1)+"-01-01";
enddate = (currentYear-1)+"-12-31";
}else{
startdate = currentYear+"-01-01";
enddate = currentYear+"-12-31";
}
}
User user = HrmUserVarify.getUser(request , response);
int userid = user.getUID();
bb.writeLog("startdate:"+startdate);
bb.writeLog("enddate:"+enddate);
List<String> monthList = getMonthBetweenDate(startdate,enddate);
bb.writeLog("monthList:"+monthList.size());
List<Map<String,String>> data = getPersonAccessScore(monthList,startdate,enddate,userid);
List<Map<String,String>> item = getAccessItem(lastYear,lastMonth,user);
List<Map<String,String>> lastscop = getPersonAccessLastScore(userid,lastYear,lastMonth,last2Year,last2Month);
JSONObject jsonObject = new JSONObject();
jsonObject.put("scoreData",data);
jsonObject.put("scoreYear",currentYear);
jsonObject.put("itemData",item);
jsonObject.put("lastScoreData",lastscop);
jsonObject.put("startdate",startdate);
jsonObject.put("enddate",enddate);
bb.writeLog("jsonObject:"+jsonObject.toJSONString());
%>
<%=jsonObject.toJSONString() %>
<%!
/***
*
* @param year
* @param month
* @param
* @return
*/
public List<Map<String,String>> getAccessItem(int year,int month,User user)
{
AccessItemComInfo accessItemComInfo = null;
int userid = user.getUID();
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
List<Map<String,String>> dataList = new ArrayList<Map<String,String>>();
try {
accessItemComInfo = new AccessItemComInfo();
String scopid = "" ;
String sql = " select id from GP_AccessScore where isvalid = 1 and userid=? and year=? and type2=? ";
rs.executeQuery(sql,new Object[]{userid,year,month});
if(rs.next()){
scopid = Util.null2String(rs.getString("id"));
}
bb.writeLog("scopid:"+scopid);
if(StringUtils.isEmpty(scopid)){
sql = " select id from GP_AccessScore where isvalid = 1 and userid=? and year=? and type2=? ";
rs.executeQuery(sql,new Object[]{userid,year,(month-1)});
if(rs.next()){
scopid = Util.null2String(rs.getString("id"));
}
}
bb.writeLog("scopid:"+scopid);
Map<String,String> dataMap = null;
if(StringUtils.isNotEmpty(scopid))
{
//当前绩效具体数据
String backfields = " select top(2) t.accessitemid,t.description,t.rate ";
String fromsql = " from GP_AccessScoreDetail t";
String sqlwhere = " where t.scoreid=" + scopid;
String orderby = " order by t.rate desc";
bb.writeLog("sql:"+backfields + fromsql + sqlwhere + orderby);
rs.executeQuery(backfields + fromsql + sqlwhere + orderby);
while (rs.next()) {
dataMap = new HashMap<String, String>();
String accessitemid = Util.null2String(rs.getString("accessitemid"));
String formuladetail = accessItemComInfo.getFormuladetails(accessitemid);//指标公式
int formula = Util.getIntValue(accessItemComInfo.getFormula(accessitemid), 0);//指标计算公式类型
int itemtype = Util.getIntValue(accessItemComInfo.getType(accessitemid), 0);//指标所属类型
dataMap.put("accessitem", accessItemComInfo.getName(Util.null2String(rs.getString("accessitemid"))) + (itemtype==2? getFormulaName(Util.null2String(formula), formuladetail, accessItemComInfo.getDesc(Util.null2String(rs.getString("accessitemid"))),user):""));//指标名称
dataMap.put("description", Util.HTMLtoTxt(rs.getString("description")));//描述
dataMap.put("rate", Util.null2String(rs.getString("rate")));//权重
dataList.add(dataMap);
}
}
if(dataList.size() == 0)
{
dataMap = new HashMap<String, String>();
dataMap.put("accessitem", "未开始");//指标名称
dataMap.put("description", "");//描述
dataMap.put("rate", "");//权重
dataList.add(dataMap);
dataMap = new HashMap<String, String>();
dataMap.put("accessitem", "未开始");//指标名称
dataMap.put("description", "");//描述
dataMap.put("rate", "");//权重
dataList.add(dataMap);
}
}catch (Exception e){
bb.writeLog("getAccessItem-e:"+e);
}
return dataList;
}
/***
*
* @param formula
* @param formuladetail
* @param detaildesc
* @param user
* @return
*/
private String getFormulaName(String formula, String formuladetail, String detaildesc,User user) {
String formulaName = "";
if ("1".equals(formula)) {
formulaName = "[" + SystemEnv.getHtmlLabelName(508618, user.getLanguage()) + "/" + SystemEnv.getHtmlLabelName(18087, user.getLanguage()) + "*5]";
} else if ("2".equals(formula)) {
formulaName = "[" + SystemEnv.getHtmlLabelName(24933, user.getLanguage()) + "]";
} else if ("3".equals(formula)) {
formulaName = "[" + SystemEnv.getHtmlLabelName(509216, user.getLanguage()) + "]";
} else if ("4".equals(formula)) {
formulaName = "[" + SystemEnv.getHtmlLabelName(509217, user.getLanguage()) + "]";
} else if ("5".equals(formula)) {
formulaName = "[" + SystemEnv.getHtmlLabelName(18087, user.getLanguage()) + "/" + SystemEnv.getHtmlLabelName(508618, user.getLanguage()) + "*3.5]";
} else if ("11".equals(formula)) {
formulaName = "[" + SystemEnv.getHtmlLabelName(508618, user.getLanguage()) + "/" + SystemEnv.getHtmlLabelName(18087, user.getLanguage()) + " * " + SystemEnv.getHtmlLabelName(509212, user.getLanguage()) + "]";
} else if ("12".equals(formula)) {
formuladetail = formuladetail.replace("gval", SystemEnv.getHtmlLabelName(18087, user.getLanguage())).replace("cval", SystemEnv.getHtmlLabelName(508618, user.getLanguage()));
formulaName = "[" + formuladetail + "]";
} else if ("13".equals(formula)) {
if (!"".equals(detaildesc)) {
formulaName = "[" + detaildesc + "]";
} else {
String[] farray = formuladetail.split("\\.");
if (farray != null && farray.length != 0) {
formuladetail = farray[farray.length - 1];
}
formulaName = SystemEnv.getHtmlLabelName(501509, user.getLanguage()) + "[" + formuladetail + "]";
}
}
return formulaName;
}
/***
*
* @param monthList
* @param starDate
* @param endDate
* @param
* @return
*/
public List<Map<String,String>> getPersonAccessScore(List<String> monthList,String starDate,String endDate,int userid)
{
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
List<Map<String,String>> scorelist = new ArrayList<Map<String,String>>();
try {
if(StringUtil.isEmpty(starDate)){
starDate = TimeUtil.getFirstDayOfTheYear();
}
if(StringUtil.isEmpty(endDate)){
endDate = TimeUtil.getCurrentDateString();
}
int yearto = 0 ;
int monthto = 0 ;
if(StringUtils.isNotEmpty(endDate)){
yearto = Util.getIntValue(endDate.substring(0,4));
monthto = Util.getIntValue(endDate.substring(5,7));
}
int yearfrom = 0 ;
int monthfrom = 0 ;
if(StringUtils.isNotEmpty(starDate)){
yearfrom = Util.getIntValue(starDate.substring(0,4));
monthfrom = Util.getIntValue(starDate.substring(5,7));
}
Map<String,String> scoremap = new HashMap<String,String>();
if(yearfrom>0 && monthfrom>0 && yearto>0 && monthto>0)
{
String sql = " select t1.id,t1.year,t1.type2,t1.result,t1.status,t1.startdate,t1.enddate from GP_AccessScore t1 where t1.isvalid=1 and t1.type1=1 and t1.userid="+userid;
if(yearfrom == yearto){
sql += " and t1.year="+yearfrom+" and t1.type2>="+monthfrom+" and t1.type2<="+ monthto;
}else{
sql += " and ((t1.year="+yearfrom+" and t1.type2>="+monthfrom+") or (t1.year="+yearto+" and t1.type2<="+ monthto+"))";
}
sql += " order by t1.year,t1.type2";
bb.writeLog(sql);
rs.executeQuery(sql);
while(rs.next()){
int year = Util.getIntValue(rs.getString("year"));
int month = Util.getIntValue(rs.getString("type2"));
String result = Util.null2String(rs.getString("result"));
bb.writeLog("year:"+year+" month:"+month+" result:"+result);
String yearMonth = year+"-"+((month<10)?"0"+month:month) ;
scoremap.put(yearMonth,result);
}
}
Map<String,String> dataMap = null;
for(int i=0;i<monthList.size();i++)
{
String result = "0" ;
dataMap = new HashMap<String,String>();
String yearmonth = monthList.get(i);
String newMonth = "" ;
if(StringUtils.isNotEmpty(yearmonth))
{
result = Util.null2String(scoremap.get(yearmonth),"0") ;
bb.writeLog("result:"+result);
String month = yearmonth.substring(5,7);
newMonth = transformMonth(month);
dataMap.put("month",newMonth);
dataMap.put("score",Util.null2String(result,"0"));
scorelist.add(dataMap);
}
}
}catch (Exception e){
e.printStackTrace();
bb.writeLog("getPersonAccessScore:"+e);
}
return scorelist;
}
/***
*
* @param month
* @return
*/
public String transformMonth(String month){
String newMonth = "" ;
if(StringUtils.isNotEmpty(month)){
if("01".equals(month)){
newMonth = "一月";
}else if("02".equals(month)){
newMonth = "二月";
}else if("03".equals(month)){
newMonth = "三月";
}else if("04".equals(month)){
newMonth = "四月";
}else if("05".equals(month)){
newMonth = "五月";
}else if("06".equals(month)){
newMonth = "六月";
}else if("07".equals(month)){
newMonth = "七月";
}else if("08".equals(month)){
newMonth = "八月";
}else if("09".equals(month)){
newMonth = "九月";
}else if("10".equals(month)){
newMonth = "十月";
}else if("11".equals(month)){
newMonth = "十一月";
}else if("12".equals(month)){
newMonth = "十二月";
}
}
return newMonth;
}
/**
* 获取两个日期之间的所有月份 (年月)
*
* @param startTime
* @param endTime
* @returnYYYY-MM
*/
public List<String> getMonthBetweenDate(String startTime, String endTime){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
// 声明保存日期集合
List<String> list = new ArrayList<String>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime()<=endDate.getTime()){
// 把日期添加到集合
list.add(sdf.format(startDate));
// 设置日期
calendar.setTime(startDate);
//把日期增加一天
calendar.add(Calendar.MONTH, 1);
// 获取增加后的日期
startDate=calendar.getTime();
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/***
*
* @param userid
* @return
*/
public List<Map<String,String>> getPersonAccessLastScore(int userid,int lastYear,int lastMonth,int last2Year,int last2Month)
{
List<Map<String,String>> lastScopList = new ArrayList<Map<String,String>>();
Map<String,String> lastScopMap = null;
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
try {
String sql = " select t1.id,t1.year,t1.type2,t1.result,t1.status,t1.startdate,t1.enddate from GP_AccessScore t1 where t1.isvalid=1 and status = 1 and t1.type1=1 and t1.userid=? and year=? and type2=? ";
bb.writeLog(sql);
rs.executeQuery(sql,new Object[]{userid,lastYear,lastMonth});
if(rs.next()){
int year = Util.getIntValue(rs.getString("year"));
int month = Util.getIntValue(rs.getString("type2"));
String score = Util.null2String(rs.getString("result"));
String scopid = Util.null2String(rs.getString("id"));
bb.writeLog("year:"+year+" month:"+month+" score:"+score);
String result = "1";
String yearMonth = year+"年"+((month<10)?"0"+month:month)+"月" ;
lastScopMap = new HashMap<String,String>();
lastScopMap.put("msg","");
lastScopMap.put("yearmonth",yearMonth);
lastScopMap.put("score",score);
lastScopMap.put("result",result);
lastScopMap.put("scopid",scopid);
lastScopList.add(lastScopMap);
}else{
String yearMonth = lastYear+"年"+((lastMonth<10)?"0"+lastMonth:lastMonth)+"月" ;
String score = "";
String scopid = "";
String result = "0";
String msg = "未开始";
lastScopMap = new HashMap<String,String>();
lastScopMap.put("msg",msg);
lastScopMap.put("yearmonth",yearMonth);
lastScopMap.put("score",score);
lastScopMap.put("result",result);
lastScopMap.put("scopid",scopid);
lastScopList.add(lastScopMap);
}
sql = " select t1.id,t1.year,t1.type2,t1.result,t1.status,t1.startdate,t1.enddate from GP_AccessScore t1 where t1.isvalid=1 and t1.type1=1 and t1.userid=? and year=? and type2=? ";
bb.writeLog(sql);
rs.executeQuery(sql,new Object[]{userid,last2Year,last2Month});
if(rs.next()){
int year = Util.getIntValue(rs.getString("year"));
int month = Util.getIntValue(rs.getString("type2"));
String score = Util.null2String(rs.getString("result"));
String scopid = Util.null2String(rs.getString("id"));
String result = "1";
bb.writeLog("year:"+year+" month:"+month+" scopid:"+scopid);
String yearMonth = year+"年"+((month<10)?"0"+month:month)+"月" ;
lastScopMap = new HashMap<String,String>();
lastScopMap.put("msg","");
lastScopMap.put("yearmonth",yearMonth);
lastScopMap.put("score",score);
lastScopMap.put("result",result);
lastScopMap.put("scopid",scopid);
lastScopList.add(lastScopMap);
}else{
String yearMonth = last2Year+"年"+((last2Month<10)?"0"+last2Month:last2Month)+"月" ;
String score = "";
String scopid = "";
String result = "0";
String msg = "未开始";
lastScopMap = new HashMap<String,String>();
lastScopMap.put("msg",msg);
lastScopMap.put("yearmonth",yearMonth);
lastScopMap.put("score",score);
lastScopMap.put("result",result);
lastScopMap.put("scopid",scopid);
lastScopList.add(lastScopMap);
}
}catch (Exception e){
e.printStackTrace();
bb.writeLog("getPersonAccessLastScore-e:"+e);
}
return lastScopList;
}
%>