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.
262 lines
9.7 KiB
Plaintext
262 lines
9.7 KiB
Plaintext
<%@ page import="weaver.conn.RecordSet" %>
|
|
<%@ page import="weaver.general.Util" %>
|
|
<%@ page import="org.apache.commons.lang3.StringUtils" %>
|
|
<%@ page import="com.alibaba.fastjson.JSONObject" %>
|
|
<%@ page import="weaver.hrm.User" %>
|
|
<%@ page import="weaver.hrm.HrmUserVarify" %>
|
|
<%@ page import="com.alibaba.fastjson.JSONArray" %>
|
|
<%@ page import="java.util.Map" %>
|
|
<%@ page import="java.util.List" %>
|
|
<%@ page import="java.util.ArrayList" %>
|
|
<%@ page import="java.time.LocalDate" %>
|
|
<%@ page import="java.time.temporal.TemporalAdjusters" %>
|
|
<%@ page import="java.time.DayOfWeek" %>
|
|
<%@ page import="java.util.HashMap" %>
|
|
<%@ page import="weaver.general.BaseBean" %>
|
|
<%@ page import="com.engine.kq.biz.KQGroupMemberComInfo" %>
|
|
<%@ page import="com.engine.kq.biz.KQGroupComInfo" %>
|
|
<%@ page import="com.engine.kq.biz.KQGroupBiz" %>
|
|
<%@ page import="weaver.common.DateUtil" %>
|
|
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
|
<%
|
|
|
|
User user = HrmUserVarify.getUser(request, response);
|
|
if(user==null) {
|
|
response.sendRedirect("/login/Login.jsp");
|
|
return;
|
|
}
|
|
RecordSet rs = new RecordSet();
|
|
String serialids = request.getParameter("serialids");
|
|
|
|
String userid = request.getParameter("userid");
|
|
String pbyf = request.getParameter("pbyf");
|
|
String serdata = request.getParameter("serdata");
|
|
List<String> restList = getSchedulingRestData();
|
|
|
|
String worktime = "0";
|
|
String totalworktime = "0";
|
|
if(StringUtils.isNotBlank(serialids)){
|
|
String sql = "";
|
|
String[] serialidArray = serialids.split(",");
|
|
for(int i=0;i<serialidArray.length;i++){
|
|
String serialid = serialidArray[i];
|
|
if(StringUtils.isNotBlank(serialid)){
|
|
if(!restList.contains(serialid)){
|
|
String sql2 = " select try_convert(int,worktime) as worktime from kq_ShiftManagement where id ="+serialid+"" ;
|
|
sql += StringUtils.isBlank(sql) ? sql2 : " union all \n"+sql2 ;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(StringUtils.isNotBlank(sql)){
|
|
sql = " select round(sum(worktime)/60.0,2) as worktime,sum(worktime) as totalworktime from ("+sql+") w ";
|
|
rs.executeQuery(sql);
|
|
if(rs.next()){
|
|
worktime = Util.null2String(rs.getString("worktime"));
|
|
totalworktime = Util.null2String(rs.getString("totalworktime"));
|
|
}
|
|
}
|
|
}
|
|
|
|
int restcount = 0;
|
|
int weekrestcount = 0;
|
|
|
|
Map<String,String> weekMap = queryWeekTypeByMonth(userid,pbyf);
|
|
if(StringUtils.isNotBlank(serdata)){
|
|
JSONArray jsonArray = JSONArray.parseArray(serdata);
|
|
for(int i=0;i<jsonArray.size();i++){
|
|
JSONObject dataJSON = jsonArray.getJSONObject(i);
|
|
String date = dataJSON.getString("date");
|
|
String serialid = dataJSON.getString("serialid");
|
|
if(StringUtils.isNotBlank(serialid)){
|
|
if(restList.contains(serialid)){
|
|
restcount++;
|
|
}
|
|
}
|
|
|
|
if(weekMap.containsKey(date)){
|
|
String value = weekMap.get(date);
|
|
//6 = 周六 7 = 周日 11 = 公众假日、调配休息日
|
|
if("6".equals(value) || "7".equals(value) || "11".equals(value)){
|
|
if(restList.contains(serialid)){
|
|
weekrestcount++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
jsonObject.put("data",worktime);
|
|
jsonObject.put("total",totalworktime);
|
|
jsonObject.put("restcount",restcount+"");
|
|
jsonObject.put("weekrestcount",weekrestcount+"");
|
|
%>
|
|
|
|
<%=jsonObject.toJSONString() %>
|
|
|
|
|
|
<%!
|
|
public Map<String,String> queryWeekTypeByMonth(String userid,String pbyf){
|
|
|
|
Map<String,String> weekMap = new HashMap<String,String>();
|
|
if(StringUtils.isNotBlank(pbyf) && pbyf.length() == 7) {
|
|
LocalDate date = LocalDate.parse(pbyf + "-01"); // 获取当前日期
|
|
LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取本月最后一天
|
|
LocalDate startDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取本月最后一天
|
|
String monthStartDate = startDayOfMonth.toString();
|
|
String monthEndDate = lastDayOfMonth.toString();
|
|
Map<String,String> holidayMap = getHolidayByGroupId(userid,monthStartDate,monthEndDate);
|
|
|
|
int thisMonth = date.getMonthValue(); // 获取当前是哪月
|
|
int daysInMonth = date.lengthOfMonth(); // 获取本月有多少天
|
|
|
|
for (int i = 1; i <= daysInMonth; i++) {
|
|
LocalDate currentDate = LocalDate.of(date.getYear(), thisMonth, i);
|
|
System.out.println("currentDate:" + currentDate.toString());
|
|
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
|
|
System.out.println(i + "号是周 " + dayOfWeek.getValue());
|
|
int weekValue = dayOfWeek.getValue();
|
|
|
|
String changeType = "" ;
|
|
if(holidayMap.containsKey(currentDate.toString())){
|
|
changeType = holidayMap.get(currentDate.toString());
|
|
}
|
|
|
|
if("1".equals(changeType) || "3".equals(changeType)){
|
|
weekValue = 11;
|
|
}
|
|
|
|
if(StringUtils.isNotBlank(changeType)){
|
|
weekMap.put(currentDate.toString(), weekValue+"");
|
|
}else{
|
|
weekMap.put(currentDate.toString(), weekValue+"");
|
|
}
|
|
}
|
|
}
|
|
return weekMap;
|
|
}
|
|
|
|
public Map<String,String> getHolidayByGroupId(String userid,String monthStartDate,String monthEndDate){
|
|
|
|
Map<String,String> holidayMap = new HashMap<String,String>();
|
|
BaseBean bb = new BaseBean();
|
|
RecordSet rs = new RecordSet();
|
|
|
|
try {
|
|
if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(monthStartDate) && StringUtils.isNotBlank(monthEndDate)){
|
|
String activeGroupId = getUserActiveGroupId(userid);
|
|
bb.writeLog("activeGroupId:"+activeGroupId);
|
|
if(StringUtils.isNotBlank(activeGroupId)){
|
|
String sql =" select holidayDate,changeType from KQ_HolidaySet\n" +
|
|
" where groupid = " + activeGroupId+
|
|
" and holidayDate >='"+monthStartDate+"'\n" +
|
|
" and holidayDate <='"+monthEndDate+"' " ;
|
|
rs.execute(sql);
|
|
while (rs.next()){
|
|
String holidayDate = Util.null2String(rs.getString("holidayDate"));
|
|
String changeType = Util.null2String(rs.getString("changeType"));
|
|
holidayMap.put(holidayDate,changeType);
|
|
}
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
|
|
}
|
|
return holidayMap;
|
|
}
|
|
|
|
/***
|
|
*
|
|
* @param userid
|
|
* @return
|
|
*/
|
|
public String getUserActiveGroupId(String userid){
|
|
BaseBean bb = new BaseBean();
|
|
|
|
KQGroupMemberComInfo kqGroupMemberComInfo = null;
|
|
KQGroupComInfo kqGroupComInfo = null ;
|
|
String activeGroupId = "";
|
|
try{
|
|
kqGroupMemberComInfo = new KQGroupMemberComInfo();
|
|
kqGroupComInfo = new KQGroupComInfo();
|
|
|
|
Map<String, List<String>> groupMemberMap = getUserGroup();
|
|
|
|
String activeGroup = "";
|
|
if(groupMemberMap.containsKey(userid)){
|
|
List<String> groupIds = groupMemberMap.get(userid);
|
|
bb.writeLog("groupIds:"+groupIds.size());
|
|
|
|
for(String i : groupIds){
|
|
String isDelete = kqGroupComInfo.getIsdelete(i);
|
|
if(!"1".equals(isDelete)) {
|
|
String currentGroupId = Util.null2String(kqGroupMemberComInfo.getKQGroupId(userid, DateUtil.getCurrentDate()));
|
|
if (i.equals(currentGroupId)) {
|
|
activeGroupId = i;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
bb.writeLog(e);
|
|
}
|
|
return activeGroupId;
|
|
}
|
|
|
|
|
|
/***
|
|
*
|
|
* @return
|
|
*/
|
|
public Map<String, List<String>> getUserGroup(){
|
|
BaseBean bb = new BaseBean();
|
|
Map<String, List<String>> groupMemberMap = new HashMap<>();
|
|
RecordSet rs = new RecordSet();
|
|
String viewScope = "3";
|
|
try {
|
|
KQGroupBiz kqGroupBiz = new KQGroupBiz();
|
|
Map<String, Object> groupParams = new HashMap<String, Object>();
|
|
if("3".equals(viewScope)){
|
|
groupParams.put("isNoAccount", "1");
|
|
}
|
|
rs.executeQuery(kqGroupBiz.getGroupMemberSql(groupParams));
|
|
while (rs.next()) {
|
|
String id = rs.getString("resourceid");
|
|
String gid = rs.getString("groupid");
|
|
if (!groupMemberMap.containsKey(id))
|
|
groupMemberMap.put(id, new ArrayList<>());
|
|
groupMemberMap.get(id).add(gid);
|
|
}
|
|
} catch (Exception e) {
|
|
}
|
|
return groupMemberMap;
|
|
}
|
|
|
|
public List<String> getSchedulingRestData(){
|
|
|
|
List<String> list = new ArrayList<String>();
|
|
RecordSet rs = new RecordSet();
|
|
try{
|
|
String sql =" select id " +
|
|
" from kq_ShiftManagement \n" +
|
|
" where is_rest = 1 \n" +
|
|
" and (isdelete is null or isdelete = 0) ";
|
|
|
|
rs.executeQuery(sql);
|
|
while (rs.next()){
|
|
String id = Util.null2String(rs.getString("id"));
|
|
list.add(id);
|
|
}
|
|
}catch (Exception e){
|
|
|
|
}
|
|
return list;
|
|
}
|
|
|
|
%>
|
|
|
|
|
|
|