项目初始化创建
This commit is contained in:
137
src/com/seeyon/apps/src_dingding/ctrl/StartTaskController.java
Normal file
137
src/com/seeyon/apps/src_dingding/ctrl/StartTaskController.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package com.seeyon.apps.src_dingding.ctrl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.seeyon.apps.src_dingding.service.DingdingService;
|
||||
import com.seeyon.apps.src_dingding.task.DingdingTask;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
import com.seeyon.ctp.common.controller.BaseController;
|
||||
import com.seeyon.ctp.common.exceptions.BusinessException;
|
||||
import com.seeyon.ctp.common.quartz.QuartzHolder;
|
||||
import com.seeyon.ctp.util.annotation.NeedlessCheckLogin;
|
||||
import com.taobao.api.ApiException;
|
||||
|
||||
/**
|
||||
* Description
|
||||
* <pre>定时任务控制器</pre>
|
||||
* Copyright(c) Beijing Seeyon Software Co.,LTD
|
||||
*/
|
||||
public class StartTaskController extends BaseController {
|
||||
|
||||
|
||||
private DingdingService dingdingService;
|
||||
|
||||
public DingdingService getDingdingService() {
|
||||
if (dingdingService == null) {
|
||||
dingdingService = (DingdingService) AppContext.getBean("dingdingService");
|
||||
}
|
||||
return dingdingService; }
|
||||
|
||||
public void setDingdingService(DingdingService dingdingService) {
|
||||
this.dingdingService = dingdingService;
|
||||
}
|
||||
|
||||
|
||||
@NeedlessCheckLogin
|
||||
public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws IOException, RuntimeException, ApiException, BusinessException, SQLException, InterruptedException {
|
||||
// 用于执行定时任务的开启和关闭
|
||||
String opera = request.getParameter("task");
|
||||
if("start".equals(opera)) {
|
||||
String time;
|
||||
try {
|
||||
// time = ConfigKit.getTaskTime();
|
||||
// time = automaticService.getTaskTime();
|
||||
time = request.getParameter("time");
|
||||
} catch (Exception e) {
|
||||
super.rendJavaScript(response, "alert('获取配置出错');");
|
||||
return null;
|
||||
}
|
||||
if(null == time) {
|
||||
super.rendJavaScript(response, "alert('请正確配置请求地址中的time参数,如果定时执行,启用D-开头,如D-03,15表示每天三点十五执行,如果间隔时间执行,请用I-开头,例如I-03,00表示每三个小时执行一次!');");
|
||||
return null;
|
||||
} else if(time.startsWith("D-")) {
|
||||
// D-开头,每天执行任务
|
||||
String[] arr = time.split("-");
|
||||
try {
|
||||
Integer[] itime = getTime(arr);
|
||||
DingdingTask.registerSyncTask(false, itime[0], itime[1]);
|
||||
super.rendJavaScript(response, "alert('任务注册成功,每天" + itime[0] + "点," + itime[1] + "分执行');");
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
super.rendJavaScript(response, "alert('" + e.getMessage() + "');");
|
||||
return null;
|
||||
}
|
||||
} else if(time.startsWith("I-")) {
|
||||
// i-开头,是间隔时间执行
|
||||
String[] arr = time.split("-");
|
||||
try {
|
||||
Integer[] itime = getTime(arr);
|
||||
DingdingTask.registerSyncTask(true, itime[0], itime[1]);
|
||||
super.rendJavaScript(response, "alert('任务注册成功,间隔" + itime[0] + "小时," + itime[1] + "分钟执行');");
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
super.rendJavaScript(response, "alert('" + e.getMessage() + "');");
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
super.rendJavaScript(response, "alert('请正確配置链接地址中的time参数,如果定时执行,启用D-开头,如D-03,15表示每天三点十五执行,如果间隔时间执行,请用I-开头,例如I-03,00表示每三个小时执行一次!');");
|
||||
return null;
|
||||
}
|
||||
} else if("stop".equals(opera)){
|
||||
QuartzHolder.deleteQuartzJob(DingdingTask.jobName);
|
||||
super.rendJavaScript(response, "alert('定时任务已经终止!');");
|
||||
return null;
|
||||
} else if("run".equals(opera)) {
|
||||
try{
|
||||
String datestr = request.getParameter("date");
|
||||
String ty = request.getParameter("ty");
|
||||
String msg = "";
|
||||
if("dk".equals(ty)){
|
||||
msg = getDingdingService().dingdingclockin(datestr);
|
||||
|
||||
}else if ("kq".equals(ty)){
|
||||
msg = getDingdingService().setWorkAttendance(datestr);
|
||||
// getDingdingService().setWorkAttendance1();
|
||||
}else{
|
||||
msg = "参数输入错误请校验填写ty参数,date参数,进行数据进行数据调试";
|
||||
}
|
||||
super.rendJavaScript(response, msg);
|
||||
}catch (Exception e) {
|
||||
super.rendJavaScript(response, "alert('定时任务执行失败!"+e.getMessage()+"');");
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
super.rendJavaScript(response, "alert('参数有误,请联系开发人员!');");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private Integer[] getTime(String[] arr) throws Exception {
|
||||
String time = arr[1];
|
||||
arr = time.split(",");
|
||||
if(arr.length != 2) {
|
||||
throw new Exception("小时和分钟请用逗号隔开");
|
||||
}
|
||||
int our = Integer.valueOf(arr[0]);
|
||||
int minute = Integer.valueOf(arr[1]);
|
||||
if(our < 0 || our >= 24) {
|
||||
throw new Exception("小时数必须在0~24之间");
|
||||
}
|
||||
if(minute < 0 || minute >= 60) {
|
||||
throw new Exception("分钟数必须在0~60之间");
|
||||
}
|
||||
return new Integer[] {our, minute};
|
||||
}
|
||||
|
||||
// public void setPushZcService(PushZcService pushZcService) {
|
||||
// this.pushZcService = pushZcService;
|
||||
// }
|
||||
|
||||
}
|
||||
729
src/com/seeyon/apps/src_dingding/dao/DingdingDaoImpl.java
Normal file
729
src/com/seeyon/apps/src_dingding/dao/DingdingDaoImpl.java
Normal file
@@ -0,0 +1,729 @@
|
||||
package com.seeyon.apps.src_dingding.dao;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import com.seeyon.apps.src_dingding.service.DingdingService;
|
||||
import com.seeyon.apps.src_dingding.vo.CheckOnWorkAttendanceVo;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import com.seeyon.apps.src_dingding.util.BaseUtil;
|
||||
import com.seeyon.ctp.common.exceptions.BusinessException;
|
||||
import com.seeyon.ctp.util.JDBCAgent;
|
||||
import com.seeyon.ctp.util.UUIDLong;
|
||||
|
||||
public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
|
||||
|
||||
private final static Log log = LogFactory.getLog(DingdingDaoImpl.class);
|
||||
|
||||
private String adddept = "insert into SRC_DINGDING_OA_DEPT values (?,?,?,?,?)";
|
||||
private String updateWorkAttendance = "update SRC_CHECK_ON_WORK_ATTENDANCE set SHANGBAN1 = ? ,XIABAN1 = ? ,SHANGBAN2 = ? , XIABAN2 = ? ,STATE = ? where id = ?";
|
||||
private String addmember = "insert into SRC_DINGDING_OA_MEMBER values (?,?,?,?,?)";
|
||||
private String addCheckOnWorkAttendance = "insert into SRC_CHECK_ON_WORK_ATTENDANCE VALUES";
|
||||
private String getdeptBysuperDeptId = "select * from SRC_DINGDING_OA_DEPT where DINGDINGDEPTID = '${dingdingdeptid}'";
|
||||
private String getdeptByPathName = "select NAME,ID from ORG_UNIT where PATH like ? and NAME = ? AND IS_INTERNAL = 1 AND IS_ENABLE = 1 AND IS_DELETED = 0";
|
||||
private String getDingdingOaDept = "select * from SRC_DINGDING_OA_DEPT ";
|
||||
private String getDingdingOaMember = "select * from SRC_DINGDING_OA_MEMBER ";
|
||||
private String getDepartmentById = "select ID,NAME,PATH from ORG_UNIT WHERE ID = ? AND IS_INTERNAL = 1 AND IS_ENABLE = 1 AND IS_DELETED = 0";
|
||||
private String getdeptsizeBydingdingid = "select count(id) as DINGDINGSIZE from src_dingding_oa_dept where dingdingdeptid = '${dingdingdeptid}'";
|
||||
private String getmembersizeBydingdingid = "select count(id) as DINGDINGSIZE from src_dingding_oa_member where dingdingmemberid = '${dingdingmemberid}'";
|
||||
private String getClockInNumBymember = "select COUNT(field0001) as num from formmain_10430 where field0001 = ? and field0006>=to_date(?,'YYYY-MM-DD') group by field0001";
|
||||
private String getClockInBymember = "select * from formson_10431 tb1 left join formmain_10430 tb2 on tb1.formmain_id = tb2.id where tb2.field0001 = ? and tb2.field0006=to_date(?,'YYYY-MM-DD')";
|
||||
private String getLeave = "select * from formmain_10368 where field0003 = ? and field0010 >= to_date(?,'YYYY-MM-DD') and field0009 <= TO_DATE(?,'YYYY-MM-DD')";
|
||||
private String getEvections = "select * from formmain_10367 where field0003 = ? and field0011 >= to_date(?,'YYYY-MM-DD') and field0010 <= to_date(?,'YYYY-MM-DD')";
|
||||
private String getWorkAttendanceByDate = "select * from SRC_CHECK_ON_WORK_ATTENDANCE where MEMBERID = ? and CHECKONWORKATTENDANCEDATE >= to_date(?,'YYYY-MM-DD HH24:MI:SS') and CHECKONWORKATTENDANCEDATE <= to_date(?,'YYYY-MM-DD HH24:MI:SS')";
|
||||
// private String getWorkAttendanceByDate = "select * from SRC_CHECK_ON_WORK_ATTENDANCE where MEMBERID = ? and CHECKONWORKATTENDANCEDATE >= ? and CHECKONWORKATTENDANCEDATE <= ?";
|
||||
private String getAdjustLeave = "select * from formmain_10363 where field0007 = ? and field0013 >= to_date(?,'YYYY-MM-DD') and field0001 <= to_date(?,'YYYY-MM-DD')";
|
||||
private String getOvertime = "select * from formson_10366 where field0033 = ? and field0030 >= to_date(?,'YYYY-MM-DD') and field0029 <= to_date(?,'YYYY-MM-DD')";
|
||||
private String getMakeCard = "select * from formmain_10369 where field0007 = ? and field0001 >= to_date(?,'YYYY-MM-DD') and field0001 <= to_date(?,'YYYY-MM-DD')";
|
||||
private String getGroupName = "select field0002 from formmain_10430 where field0001 = ? and field0002 is not null and rownum = 1";
|
||||
|
||||
|
||||
public int adddept(Map<String, String> map) {
|
||||
int i = 0;
|
||||
try {
|
||||
long id = UUIDLong.longUUID();
|
||||
String sql = adddept;
|
||||
Object[] params = null;
|
||||
params = new Object[] { id,map.get("oadeptid"),map.get("oadeptname"),map.get("dingdingdeptid"),map.get("dingdingdeptname") };
|
||||
i = super.executeUpdate(sql.toString(), params);
|
||||
} finally {
|
||||
super.close();
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public Map<String,Object> getdeptBysuperDeptId(String deptid) {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
String sql = getdeptBysuperDeptId;
|
||||
sql = sql.replace("${dingdingdeptid}", deptid);
|
||||
System.out.println(sql);
|
||||
Object[] params = new Object[] {};
|
||||
ResultSet rs = super.executeQuery(sql, params);
|
||||
try {
|
||||
while (rs.next()) {
|
||||
map.put("oadeptid", rs.getString("oadeptid"));
|
||||
map.put("oadeptname", rs.getString("oadeptname"));
|
||||
map.put("dingdingdeptid", rs.getString("dingdingdeptid"));
|
||||
map.put("dingdingdeptname", rs.getString("dingdingdeptname"));
|
||||
System.out.println(map);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
super.close();
|
||||
}
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public Map<String,Object> getdeptByPathName(String path,String name) throws BusinessException, SQLException {
|
||||
Map<String,Object> ret = new HashMap<String, Object>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getdeptByPathName);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(path);
|
||||
p.add(name);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
System.out.println("getdeptByPathName:"+list.size());
|
||||
if(list.size()==0) {
|
||||
return null;
|
||||
}
|
||||
for (Map map : list) {
|
||||
ret.put("name", map.get("name"));
|
||||
ret.put("id", map.get("id"));
|
||||
System.out.println(ret);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getDingdingOaDept() throws BusinessException, SQLException {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getDingdingOaDept);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("dingdingdeptid", map.get("dingdingdeptid"));
|
||||
m.put("dingdingdeptname", map.get("dingdingdeptname"));
|
||||
m.put("oadeptid", map.get("oadeptid"));
|
||||
m.put("oadeptname", map.get("oadeptname"));
|
||||
System.out.println(m);
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getDepartmentById(Long deptid) throws BusinessException, SQLException {
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
Map<String,Object> ret = new HashMap<String,Object>();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getDepartmentById);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(deptid);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
ret.put("id", map.get("id"));
|
||||
ret.put("name", map.get("name"));
|
||||
ret.put("path", map.get("path"));
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addmember(Map<String, String> map) {
|
||||
int i = 0;
|
||||
try {
|
||||
long id = UUIDLong.longUUID();
|
||||
String sql = addmember;
|
||||
Object[] params = null;
|
||||
params = new Object[] { id,map.get("oamemberid"),map.get("oamembername"),map.get("dingdingmemberid"),map.get("dingdingmembername") };
|
||||
i = super.executeUpdate(sql.toString(), params);
|
||||
} finally {
|
||||
super.close();
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getdeptsizeBydingdingid(String dingdingdeptid) {
|
||||
boolean boo = false;
|
||||
String sql = getdeptsizeBydingdingid;
|
||||
sql = sql.replace("${dingdingdeptid}", dingdingdeptid);
|
||||
System.out.println(sql);
|
||||
Object[] params = new Object[] {};
|
||||
ResultSet rs = super.executeQuery(sql, params);
|
||||
try {
|
||||
while (rs.next()) {
|
||||
String dingdingsize = rs.getString("DINGDINGSIZE");
|
||||
int size = Integer.parseInt(dingdingsize);
|
||||
if(size>0) {
|
||||
boo = true;
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
super.close();
|
||||
}
|
||||
return boo;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getmembersizeBydingdingid(String dingdingmemberid) {
|
||||
boolean boo = false;
|
||||
int ii = 0;
|
||||
String sql = getmembersizeBydingdingid;
|
||||
sql = sql.replace("${dingdingmemberid}", dingdingmemberid);
|
||||
Object[] params = new Object[] {};
|
||||
ResultSet rs = super.executeQuery(sql, params);
|
||||
try {
|
||||
while (rs.next()) {
|
||||
String dingdingsize = rs.getString("DINGDINGSIZE");
|
||||
int size = Integer.parseInt(dingdingsize);
|
||||
ii = size;
|
||||
if(size>0) {
|
||||
boo = true;
|
||||
}
|
||||
}
|
||||
log.info(sql+boo+ii);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
super.close();
|
||||
}
|
||||
return boo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getClockInNumBymember(String date, String memberId) {
|
||||
int in = 0;
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getClockInNumBymember);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(date);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
in = Integer.parseInt(map.get("num").toString());
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return in;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String ,Object>> getClockInBymember(String date, String memberId) {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getClockInBymember);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(date);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("clockInDate", map.get("field0008").toString());
|
||||
m.put("referenceDate", map.get("field0009").toString());
|
||||
m.put("groupName", map.get("field0002").toString());
|
||||
m.put("state", map.get("field0010"));
|
||||
m.put("type", map.get("field0014"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addCheckOnWorkAttendance(CheckOnWorkAttendanceVo checkOnWorkAttendanceVo) {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
System.out.println("开始保存考勤数据");
|
||||
int i = 0 ;
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(addCheckOnWorkAttendance);
|
||||
Object[] params = null;
|
||||
sql.append(" ('"+checkOnWorkAttendanceVo.getId()+"','"+checkOnWorkAttendanceVo.getMemberId()+"'");
|
||||
if(checkOnWorkAttendanceVo.getCheckOnWorkAttendanceDate() == null){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getCheckOnWorkAttendanceDate())+"','YYYY-MM-DD HH24:MI:SS')");
|
||||
}
|
||||
// 上班1
|
||||
if(checkOnWorkAttendanceVo.getShangbanDate1() == null){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getShangbanDate1())+"','YYYY-MM-DD HH24:MI:SS')");
|
||||
}
|
||||
if(checkOnWorkAttendanceVo.getShangban1().length()==0){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",'"+checkOnWorkAttendanceVo.getShangban1()+"'");
|
||||
}
|
||||
|
||||
// 下班1
|
||||
if(checkOnWorkAttendanceVo.getXiabanDate1() == null){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getXiabanDate1())+"','YYYY-MM-DD HH24:MI:SS')");
|
||||
}
|
||||
if(checkOnWorkAttendanceVo.getXiaban1().length()==0){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",'"+checkOnWorkAttendanceVo.getXiaban1()+"'");
|
||||
}
|
||||
|
||||
// 上班2
|
||||
if(checkOnWorkAttendanceVo.getShangbanDate2() == null){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getShangbanDate2())+"','YYYY-MM-DD HH24:MI:SS')");
|
||||
}
|
||||
if(checkOnWorkAttendanceVo.getShangban2().length()==0){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",'"+checkOnWorkAttendanceVo.getShangban2()+"'");
|
||||
}
|
||||
|
||||
// 下班2
|
||||
if(checkOnWorkAttendanceVo.getXiabanDate2() == null){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getXiabanDate2())+"','YYYY-MM-DD HH24:MI:SS')");
|
||||
}
|
||||
if(checkOnWorkAttendanceVo.getXiaban2().length()==0){
|
||||
sql.append(",''");
|
||||
}else{
|
||||
sql.append(",'"+checkOnWorkAttendanceVo.getXiaban2()+"'");
|
||||
}
|
||||
|
||||
sql.append(",'"+checkOnWorkAttendanceVo.getState()+"'");
|
||||
sql.append(",'"+checkOnWorkAttendanceVo.getGroupName()+"')");
|
||||
System.out.println("打印参数"+sql.toString());
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
i=agent.execute(sql.toString(), p);
|
||||
} catch (BusinessException e) {
|
||||
e.printStackTrace();
|
||||
System.out.println(e);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
System.out.println(e);
|
||||
} finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("创建数据条数"+i);
|
||||
return i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getLeave( String memberId,String startDate, String endDate) {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getLeave);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(startDate);
|
||||
p.add(endDate);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("member", map.get("field0003"));
|
||||
m.put("type", map.get("field0031"));
|
||||
m.put("startDateStr", map.get("field0009"));
|
||||
m.put("endDateStr", map.get("field0010"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<CheckOnWorkAttendanceVo> getWorkAttendanceByDate(String memberId, String startDate, String endDate) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
log.info("查询的参数"+memberId+startDate+endDate);
|
||||
List<CheckOnWorkAttendanceVo> ret = new ArrayList<CheckOnWorkAttendanceVo>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getWorkAttendanceByDate);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(startDate);
|
||||
p.add(endDate);
|
||||
agent.execute(sql.toString(), p);
|
||||
log.info("执行SQL");
|
||||
List<Map> list = agent.resultSetToList();
|
||||
log.info(list.size());
|
||||
for (Map map : list) {
|
||||
log.info(map);
|
||||
log.info(map.get("shangbandate1")!= null);
|
||||
CheckOnWorkAttendanceVo m = new CheckOnWorkAttendanceVo();
|
||||
m.setId(Long.parseLong( map.get("id").toString()));
|
||||
m.setMemberId(Long.parseLong(map.get("memberid").toString()));
|
||||
log.info(sdf.parse(map.get("checkonworkattendancedate").toString()));
|
||||
m.setCheckOnWorkAttendanceDate(sdf.parse(map.get("checkonworkattendancedate").toString()));
|
||||
log.info("shangban1"+map.get("shangbandate1"));
|
||||
if(map.get("shangbandate1") != null){
|
||||
m.setShangbanDate1(sdf.parse(map.get("shangbandate1").toString()));
|
||||
m.setShangban1(map.get("shangban1").toString());
|
||||
}else{
|
||||
m.setShangbanDate1(null);
|
||||
m.setShangban1("未打卡");
|
||||
}
|
||||
log.info("xiaban1"+map.get("xiabandate1"));
|
||||
if(map.get("xiabandate1") != null){
|
||||
m.setXiabanDate1(sdf.parse(map.get("xiabandate1").toString()));
|
||||
m.setXiaban1(map.get("xiaban1").toString());
|
||||
}else{
|
||||
m.setXiabanDate1(null);
|
||||
m.setXiaban1("未打卡");
|
||||
}
|
||||
log.info("shangban2"+map.get("shangbandate2"));
|
||||
if(map.get("shangbandate2") != null){
|
||||
m.setShangbanDate2(sdf.parse(map.get("shangbandate2").toString()));
|
||||
m.setShangban2(map.get("shangban2").toString());
|
||||
}else{
|
||||
m.setShangbanDate2(null);
|
||||
m.setShangban2("未打卡");
|
||||
}
|
||||
log.info("xiaban2"+map.get("xiabandate2"));
|
||||
if(map.get("xiabandate2") != null){
|
||||
m.setXiabanDate2(sdf.parse(map.get("xiabandate2").toString()));
|
||||
m.setXiaban2(map.get("xiaban2").toString());
|
||||
}else{
|
||||
m.setXiabanDate2(null);
|
||||
m.setXiaban2("未打卡");
|
||||
}
|
||||
log.info(map.get("state"));
|
||||
m.setState(map.get("state").toString());
|
||||
log.info(m.toString());
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
log.info(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getEvections(String memberId, String startDate, String endDate) {
|
||||
List<Map<String, Object>> ret = new ArrayList<Map<String, Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getEvections);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(startDate);
|
||||
p.add(endDate);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
System.out.println(list.size());
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
Map<String, Object> m = new HashMap<String, Object>();
|
||||
m.put("member", map.get("field0003"));
|
||||
m.put("type", "出差");
|
||||
m.put("startDateStr", map.get("field0010"));
|
||||
m.put("endDateStr", map.get("field0011"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getAdjustLeave(String memberId, String startDate, String endDate) {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getAdjustLeave);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(startDate);
|
||||
p.add(endDate);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("member", map.get("field0007"));
|
||||
m.put("type", "调休");
|
||||
m.put("startDateStr", map.get("field0001"));
|
||||
m.put("endDateStr", map.get("field0013"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getOvertime(String memberId, String startDate, String endDate) {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getOvertime);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(startDate);
|
||||
p.add(endDate);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
log.info("加班查询数据: "+map);
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("member", map.get("field0033"));
|
||||
m.put("type", "加班"+map.get("field0031")+"小时" );
|
||||
m.put("startDateStr", map.get("field0029"));
|
||||
m.put("endDateStr", map.get("field0030"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getMakeCard(String memberId, String startDate, String endDate) {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getMakeCard);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
p.add(startDate);
|
||||
p.add(endDate);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("member", map.get("field0007"));
|
||||
m.put("type", "补卡" );
|
||||
m.put("makeCardDateStr", map.get("field0001"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGroupName(String memberId) {
|
||||
String ret = "";
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getGroupName);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
p.add(memberId);
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
ret = map.get("field0002").toString();
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateWorkAttendance(CheckOnWorkAttendanceVo checkOnWorkAttendanceVo) {
|
||||
int i = 0;
|
||||
try {
|
||||
String sql = updateWorkAttendance;
|
||||
Object[] params = null;
|
||||
params = new Object[] { checkOnWorkAttendanceVo.getShangban1(),
|
||||
checkOnWorkAttendanceVo.getXiaban1(),
|
||||
checkOnWorkAttendanceVo.getShangban2(),
|
||||
checkOnWorkAttendanceVo.getXiaban2(),
|
||||
checkOnWorkAttendanceVo.getState(),checkOnWorkAttendanceVo.getId() };
|
||||
i = super.executeUpdate(sql.toString(), params);
|
||||
} finally {
|
||||
super.close();
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getDingdingOaMember() throws BusinessException, SQLException {
|
||||
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(getDingdingOaMember);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
for (Map map : list) {
|
||||
System.out.println(map);
|
||||
Map<String,Object> m = new HashMap<String, Object>();
|
||||
m.put("dingdingmemberid", map.get("dingdingmemberid"));
|
||||
m.put("dingdingmembername", map.get("dingdingmembername"));
|
||||
m.put("oamemberid", map.get("oamemberid"));
|
||||
m.put("oamembername", map.get("oamembername"));
|
||||
ret.add(m);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
183
src/com/seeyon/apps/src_dingding/dao/IDingdingDao.java
Normal file
183
src/com/seeyon/apps/src_dingding/dao/IDingdingDao.java
Normal file
@@ -0,0 +1,183 @@
|
||||
package com.seeyon.apps.src_dingding.dao;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.seeyon.apps.src_dingding.vo.CheckOnWorkAttendanceVo;
|
||||
import com.seeyon.ctp.common.exceptions.BusinessException;
|
||||
import com.seeyon.ctp.organization.bo.V3xOrgMember;
|
||||
|
||||
public interface IDingdingDao {
|
||||
|
||||
/**
|
||||
* 添加部门对照表信息
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public int adddept(Map<String, String> map);
|
||||
|
||||
|
||||
/**
|
||||
* 添加人员对照表信息
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public int addmember(Map<String, String> map);
|
||||
|
||||
/**
|
||||
* 根据部门ID查询部门对照表中的部门信息
|
||||
* @param deptid
|
||||
* @return
|
||||
*/
|
||||
public Map<String,Object> getdeptBysuperDeptId(String deptid);
|
||||
|
||||
/**
|
||||
* 通过部门路径和部门名称查询OA系统中部门信息
|
||||
* @param path
|
||||
* @param name
|
||||
* @return
|
||||
* @throws BusinessException
|
||||
* @throws SQLException
|
||||
*/
|
||||
public Map<String,Object> getdeptByPathName(String path,String name)throws BusinessException, SQLException;
|
||||
|
||||
/**
|
||||
* 查询部门对照表中所有的部门信息
|
||||
* @return
|
||||
* @throws BusinessException
|
||||
* @throws SQLException
|
||||
*/
|
||||
public List<Map<String,Object>> getDingdingOaDept()throws BusinessException, SQLException;
|
||||
|
||||
/**
|
||||
* 查询部门对照表中所有的部门信息
|
||||
* @return
|
||||
* @throws BusinessException
|
||||
* @throws SQLException
|
||||
*/
|
||||
public List<Map<String,Object>> getDingdingOaMember()throws BusinessException, SQLException;
|
||||
|
||||
/**
|
||||
* 根据部门ID查询OA系统中的部门信息
|
||||
* @param deptid
|
||||
* @return
|
||||
* @throws BusinessException
|
||||
* @throws SQLException
|
||||
*/
|
||||
public Map<String,Object> getDepartmentById(Long deptid)throws BusinessException, SQLException;
|
||||
|
||||
/**
|
||||
* 查询当前部门信息是否在部门对照表中存在
|
||||
* @param dingdingdeptid
|
||||
* @return
|
||||
*/
|
||||
public boolean getdeptsizeBydingdingid(String dingdingdeptid);
|
||||
|
||||
/**
|
||||
* 查询当前人员信息是否在人员对照表中存在
|
||||
* @param dingdingmemberid
|
||||
* @return
|
||||
*/
|
||||
public boolean getmembersizeBydingdingid(String dingdingmemberid);
|
||||
|
||||
/**
|
||||
* 获取指定人员近一月的打卡情况
|
||||
* @param date('yyyy-MM-dd')
|
||||
* @param memberId
|
||||
* @return
|
||||
*/
|
||||
public int getClockInNumBymember(String date,String memberId);
|
||||
|
||||
/**
|
||||
* 获取指定人员前一日打卡情况
|
||||
* @param date('yyyy-MM-dd')
|
||||
* @param memberId
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String ,Object>> getClockInBymember(String date,String memberId);
|
||||
|
||||
/**
|
||||
* 将封装的打卡信息保存到考勤表中
|
||||
* @param checkOnWorkAttendanceVo 考勤数据对象
|
||||
* @return
|
||||
*/
|
||||
public int addCheckOnWorkAttendance(CheckOnWorkAttendanceVo checkOnWorkAttendanceVo);
|
||||
|
||||
|
||||
/**
|
||||
* 修改考勤表中的数据
|
||||
* @param checkOnWorkAttendanceVo 考勤数据对象
|
||||
* @return
|
||||
*/
|
||||
public int updateWorkAttendance(CheckOnWorkAttendanceVo checkOnWorkAttendanceVo);
|
||||
|
||||
|
||||
/**
|
||||
* 查询规定时间之内的请假单据
|
||||
* @param memberId 人员ID
|
||||
* @param startDate 查询开始时间
|
||||
* @param endDate 查询结束时间
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> getLeave(String memberId, String startDate,String endDate);
|
||||
|
||||
|
||||
/**
|
||||
* 查询指定时间内的考勤情况
|
||||
* @param memberId 人员ID
|
||||
* @param startDate 查询开始时间
|
||||
* @param endDate 查询结束时间
|
||||
* @return
|
||||
*/
|
||||
|
||||
public List<CheckOnWorkAttendanceVo> getWorkAttendanceByDate(String memberId, String startDate,String endDate);
|
||||
|
||||
|
||||
/**
|
||||
* 查询规定时间之内的出差单据
|
||||
* @param memberId 人员ID
|
||||
* @param startDate 查询开始时间
|
||||
* @param endDate 查询结束时间
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> getEvections(String memberId, String startDate,String endDate);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询规定时间之内的调休单据
|
||||
* @param memberId 人员ID
|
||||
* @param startDate 查询开始时间
|
||||
* @param endDate 查询结束时间
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> getAdjustLeave(String memberId, String startDate,String endDate);
|
||||
|
||||
|
||||
/**
|
||||
* 查询规定时间之内的加班单据
|
||||
* @param memberId 人员ID
|
||||
* @param startDate 查询开始时间
|
||||
* @param endDate 查询结束时间
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> getOvertime(String memberId, String startDate,String endDate);
|
||||
|
||||
/**
|
||||
* 查询规定时间之内的补卡单据
|
||||
* @param memberId 人员ID
|
||||
* @param startDate 查询开始时间
|
||||
* @param endDate 查询结束时间
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> getMakeCard(String memberId, String startDate,String endDate);
|
||||
|
||||
/**
|
||||
* 查询规定时间之内的补卡单据
|
||||
* @param memberId 人员ID
|
||||
* @return
|
||||
*/
|
||||
public String getGroupName(String memberId);
|
||||
|
||||
}
|
||||
26
src/com/seeyon/apps/src_dingding/kit/A8FolderKit.java
Normal file
26
src/com/seeyon/apps/src_dingding/kit/A8FolderKit.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.seeyon.apps.src_dingding.kit;
|
||||
|
||||
import com.seeyon.ctp.common.SystemEnvironment;
|
||||
|
||||
/**
|
||||
* Description
|
||||
* <pre>获取A8产品下面的文件夹路径</pre>
|
||||
* Copyright(c) Beijing Seeyon Software Co.,LTD
|
||||
*/
|
||||
public class A8FolderKit {
|
||||
|
||||
private static String SH_PROP = "";
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* <pre>获取到A8的安装应用目录 seeyon</pre>
|
||||
* @return
|
||||
*/
|
||||
public static String getPropFile() {
|
||||
if("".equals(SH_PROP)) {
|
||||
SH_PROP = SystemEnvironment.getApplicationFolder() + "/WEB-INF/cfgHome/plugin/src_dingding/dingding.properties";
|
||||
}
|
||||
return SH_PROP;
|
||||
}
|
||||
|
||||
}
|
||||
70
src/com/seeyon/apps/src_dingding/kit/PropKit.java
Normal file
70
src/com/seeyon/apps/src_dingding/kit/PropKit.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package com.seeyon.apps.src_dingding.kit;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* 读取参数
|
||||
*/
|
||||
|
||||
public class PropKit {
|
||||
|
||||
private static long lastModify;
|
||||
|
||||
private static ConcurrentHashMap<String, String> props;
|
||||
|
||||
public static final String PROFILE = "profile";
|
||||
|
||||
public static final String JDBCDRIVER = "jdbc_driver";
|
||||
public static final String JDBCURL = "jdbc_url";
|
||||
public static final String JDBCUSER = "jdbc_user";
|
||||
public static final String JDBCPASSWORD = "jdbc_password";
|
||||
|
||||
public static final String PROD_JDBCDRIVER = "prod.jdbc_driver";
|
||||
public static final String PROD_JDBCURL = "prod.jdbc_url";
|
||||
public static final String PROD_JDBCUSER = "prod.jdbc_user";
|
||||
public static final String PROD_JDBCPASSWORD = "prod.jdbc_password";
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @throws IOException
|
||||
* @throws FileNotFoundException
|
||||
*/
|
||||
public static String getProp(String key) throws FileNotFoundException, IOException {
|
||||
File f = new File(A8FolderKit.getPropFile());
|
||||
if(null == props) {
|
||||
props = new ConcurrentHashMap<String, String>();
|
||||
}
|
||||
if(f.lastModified() != lastModify) {
|
||||
/**
|
||||
* huangzhengguo
|
||||
* 2022-10-18
|
||||
*/
|
||||
Properties prop = new Properties();
|
||||
prop.load(new FileInputStream(f));
|
||||
// Properties prop = PropertiesUtil.getFromFile((CtpLocalFile) f);
|
||||
|
||||
/**
|
||||
* end
|
||||
*/
|
||||
String profile = prop.getProperty(PROFILE);
|
||||
if("prod".equals(profile)) {
|
||||
props.put(JDBCDRIVER, prop.getProperty(PROD_JDBCDRIVER));
|
||||
props.put(JDBCURL, prop.getProperty(PROD_JDBCURL));
|
||||
props.put(JDBCUSER, prop.getProperty(PROD_JDBCUSER));
|
||||
props.put(JDBCPASSWORD, prop.getProperty(PROD_JDBCPASSWORD));
|
||||
} else {
|
||||
props.put(JDBCDRIVER, prop.getProperty(PROD_JDBCDRIVER));
|
||||
props.put(JDBCURL, prop.getProperty(PROD_JDBCURL));
|
||||
props.put(JDBCUSER, prop.getProperty(PROD_JDBCUSER));
|
||||
props.put(JDBCPASSWORD, prop.getProperty(PROD_JDBCPASSWORD));
|
||||
}
|
||||
}
|
||||
return props.get(key);
|
||||
}
|
||||
|
||||
}
|
||||
1407
src/com/seeyon/apps/src_dingding/service/DingdingService.java
Normal file
1407
src/com/seeyon/apps/src_dingding/service/DingdingService.java
Normal file
File diff suppressed because it is too large
Load Diff
121
src/com/seeyon/apps/src_dingding/task/DingdingTask.java
Normal file
121
src/com/seeyon/apps/src_dingding/task/DingdingTask.java
Normal file
@@ -0,0 +1,121 @@
|
||||
package com.seeyon.apps.src_dingding.task;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.seeyon.apps.src_dingding.service.DingdingService;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
//import com.seeyon.apps.src_automatic.task.PushAuCardTask;
|
||||
//import com.seeyon.apps.src_bill_detail.manager.PushZcService;
|
||||
import com.seeyon.ctp.common.quartz.QuartzHolder;
|
||||
import com.seeyon.ctp.common.quartz.QuartzJob;
|
||||
import com.seeyon.ctp.util.SDFCoder;
|
||||
import com.seeyon.ctp.util.UUIDLong;
|
||||
import com.seeyon.ctp.util.json.JSONUtil;
|
||||
|
||||
/**
|
||||
* 自动计算任务
|
||||
*/
|
||||
public class DingdingTask implements QuartzJob {
|
||||
|
||||
/** 日志管理器 */
|
||||
private final static Log log = LogFactory.getLog(DingdingTask.class);
|
||||
|
||||
/** 定义的任务插件ID */
|
||||
// private static String jobBeanId="pushCardTask";
|
||||
|
||||
/** 定义的任务名称 */
|
||||
// public static String jobName="QuartzPushCardTask";
|
||||
|
||||
/** 定义的任务插件ID */
|
||||
private static String jobBeanId="dingdingTask";
|
||||
|
||||
/** 定义的任务名称 */
|
||||
public static String jobName="QuartzDingdingTask";
|
||||
|
||||
// private PushZcService pushZcService;
|
||||
|
||||
private volatile boolean running;
|
||||
|
||||
private DingdingService dingdingService;
|
||||
|
||||
public DingdingService getDingdingService() {
|
||||
if (dingdingService == null) {
|
||||
dingdingService = (DingdingService) AppContext.getBean("dingdingService");
|
||||
}
|
||||
return dingdingService; }
|
||||
|
||||
public void setDingdingService(DingdingService dingdingService) {
|
||||
this.dingdingService = dingdingService;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void execute(Map<String, String> parameters) {
|
||||
if(running) {
|
||||
log.info("上次推送还在执行中,跳过本次数据推送");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
getDingdingService().dingdingdept();
|
||||
getDingdingService().dingdingmember();
|
||||
getDingdingService().dingdingclockin();
|
||||
getDingdingService().setWorkAttendance();
|
||||
} catch(Exception e) {
|
||||
log.error("发生异常:", e);
|
||||
} finally {
|
||||
this.running = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* interval 如果是true,则是间隔执行
|
||||
*/
|
||||
public static void registerSyncTask(boolean interval, int our, int minute) {
|
||||
// jobBeanId = "pushCardTask";
|
||||
// jobName = "QuartzPushCardTask";
|
||||
jobBeanId = "dingdingTask";
|
||||
jobName = "QuartzDingdingTask";
|
||||
log.info("注册预算定时计算任务" + jobName + "...");
|
||||
try {
|
||||
// 先删除任务
|
||||
QuartzHolder.deleteQuartzJob(jobName);
|
||||
// 设定时间 每天同步的
|
||||
// if ("aa".length() > 5) {
|
||||
if(interval) {
|
||||
int delta = (our * 60 + minute) * 60 * 1000;
|
||||
Map<String, String> parameters = new HashMap<String, String>();
|
||||
QuartzHolder.newQuartzJob(jobName, new Date(), delta, jobBeanId, parameters);
|
||||
} else {
|
||||
Map<String, String> parameters = new HashMap<String, String>();
|
||||
// 设置时间
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date()); // 年月日 也可以具体到时分秒如calendar.set(2015, 10, 12,11,32,52);
|
||||
// 每日运行,只要改动 时间即可
|
||||
calendar.set(Calendar.HOUR_OF_DAY, our);
|
||||
calendar.set(Calendar.MINUTE, minute);
|
||||
calendar.set(Calendar.SECOND, 00);
|
||||
Date date = calendar.getTime();// date就是你需要的时间
|
||||
QuartzHolder.newQuartzJobPerDay(null, jobName, date, jobBeanId, parameters);
|
||||
log.info("定时计算任务" + jobName + ",成功");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("注册定时计算任务失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
// public void setPushZcService(PushZcService pushZcService) {
|
||||
// this.pushZcService = pushZcService;
|
||||
// }
|
||||
}
|
||||
110
src/com/seeyon/apps/src_dingding/util/BaseUtil.java
Normal file
110
src/com/seeyon/apps/src_dingding/util/BaseUtil.java
Normal file
@@ -0,0 +1,110 @@
|
||||
package com.seeyon.apps.src_dingding.util;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
|
||||
|
||||
/**
|
||||
* sql执行工具类
|
||||
* 2021-06-08
|
||||
* @author huangzhengguo
|
||||
*
|
||||
*/
|
||||
public class BaseUtil {
|
||||
|
||||
|
||||
PreparedStatement ps = null;
|
||||
ResultSet res = null;
|
||||
Connection conn =null;
|
||||
/**
|
||||
* sql查询工具
|
||||
* @param sql sql语句
|
||||
* @param params sql参数
|
||||
* @return 结果集
|
||||
*/
|
||||
public ResultSet executeQuery(String sql, Object[] params)
|
||||
{
|
||||
conn = JdbcUtil.getConnection();
|
||||
try {
|
||||
ps = conn.prepareStatement(sql);
|
||||
for(int i = 0; i < params.length; i++){
|
||||
ps.setObject(i+1, params[i]);
|
||||
}
|
||||
res = ps.executeQuery();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/**
|
||||
* sql更新工具
|
||||
* @param sql
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
public int executeUpdate(String sql, Object[] params)
|
||||
{
|
||||
int res = 0;
|
||||
conn = JdbcUtil.getConnection();
|
||||
try {
|
||||
ps = conn.prepareStatement(sql);
|
||||
for(int i = 0; i < params.length; i++)
|
||||
{
|
||||
ps.setObject(i+1, params[i]);
|
||||
}
|
||||
res = ps.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
public void close() {
|
||||
release(res,null,conn,ps);
|
||||
}
|
||||
//定义一个释放资源的方法;
|
||||
/*
|
||||
* 定义一个方法: 释放资源: 直接将rs stmt conn 全部释放:
|
||||
*/
|
||||
public static void release(ResultSet rs ,Statement stmt , Connection conn,PreparedStatement ps){
|
||||
if(rs!=null){
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
rs=null;
|
||||
}
|
||||
if(stmt!=null){
|
||||
try {
|
||||
stmt.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
stmt=null;
|
||||
}
|
||||
if(conn!=null){
|
||||
try {
|
||||
conn.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
conn=null;
|
||||
}
|
||||
if(ps!=null){
|
||||
try {
|
||||
ps.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ps=null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
127
src/com/seeyon/apps/src_dingding/util/DingtalkUtil.java
Normal file
127
src/com/seeyon/apps/src_dingding/util/DingtalkUtil.java
Normal file
@@ -0,0 +1,127 @@
|
||||
package com.seeyon.apps.src_dingding.util;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.DingTalkClient;
|
||||
import com.dingtalk.api.request.OapiGettokenRequest;
|
||||
import com.dingtalk.api.response.OapiGettokenResponse;
|
||||
import com.taobao.api.ApiException;
|
||||
|
||||
public class DingtalkUtil {
|
||||
|
||||
public String getToken() throws RuntimeException, ApiException, FileNotFoundException, IOException {
|
||||
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
||||
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
||||
OapiGettokenRequest request = new OapiGettokenRequest();
|
||||
request.setAppkey("dingtiefuskr6oycl5ah");
|
||||
request.setAppsecret("5V_zIyAXU3Fx0yl20uxGotc3zIdrAXnKERat_ciEez0u3jqaVjosQhlflu5-83St");
|
||||
request.setHttpMethod("GET");
|
||||
OapiGettokenResponse response = client.execute(request);
|
||||
JSONObject jsonObject = JSON.parseObject(response.getBody());
|
||||
String token = jsonObject.getString("access_token");
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 调用post接口
|
||||
*
|
||||
* @param str 调用接口传递的参数json
|
||||
* @param urlStr 需要调用的url对应的参数文件中的编码
|
||||
* @return
|
||||
* @throws ApiException
|
||||
* @throws RuntimeException
|
||||
*/
|
||||
public JSONObject doPost(String str, String urlStr) throws RuntimeException, ApiException {
|
||||
HttpURLConnection connection = null;
|
||||
InputStream is = null;
|
||||
OutputStream os = null;
|
||||
BufferedReader br = null;
|
||||
String result = null;
|
||||
try {
|
||||
String token = getToken();
|
||||
URL url = new URL(urlStr+"?access_token="+token);
|
||||
// 通过远程url连接对象打开连接
|
||||
connection = (HttpURLConnection) url.openConnection();
|
||||
// 设置连接请求方式
|
||||
connection.setRequestMethod("POST");
|
||||
// 设置连接主机服务器超时时间:15000毫秒
|
||||
connection.setConnectTimeout(15000);
|
||||
// 设置读取主机服务器返回数据超时时间:60000毫秒
|
||||
connection.setReadTimeout(60000);
|
||||
|
||||
// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
|
||||
connection.setDoOutput(true);
|
||||
// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
|
||||
connection.setDoInput(true);
|
||||
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
|
||||
// connection.setRequestProperty("access_token", token);
|
||||
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||||
// 通过连接对象获取一个输出流
|
||||
os = connection.getOutputStream();
|
||||
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
|
||||
if (!("".equals(str) || str == null)) {
|
||||
os.write(str.getBytes("UTF-8"));
|
||||
}
|
||||
// 连接对象获取一个输入流,向远程读取
|
||||
System.out.println(connection.getResponseCode());
|
||||
if (connection.getResponseCode() == 200) {
|
||||
is = connection.getInputStream();
|
||||
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
|
||||
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||||
|
||||
StringBuffer sbf = new StringBuffer();
|
||||
String temp = null;
|
||||
// 循环遍历一行一行读取数据
|
||||
while ((temp = br.readLine()) != null) {
|
||||
sbf.append(temp);
|
||||
sbf.append("\r\n");
|
||||
}
|
||||
result = sbf.toString();
|
||||
}
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
// 关闭资源
|
||||
if (null != br) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (null != os) {
|
||||
try {
|
||||
os.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (null != is) {
|
||||
try {
|
||||
is.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
// 断开与远程地址url的连接
|
||||
connection.disconnect();
|
||||
}
|
||||
JSONObject json = JSONObject.parseObject(result);
|
||||
return json;
|
||||
|
||||
}
|
||||
}
|
||||
111
src/com/seeyon/apps/src_dingding/util/FormExportUtil.java
Normal file
111
src/com/seeyon/apps/src_dingding/util/FormExportUtil.java
Normal file
@@ -0,0 +1,111 @@
|
||||
package com.seeyon.apps.src_dingding.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.seeyon.v3x.services.form.bean.RecordExport;
|
||||
import com.seeyon.v3x.services.form.bean.SubordinateFormExport;
|
||||
import com.seeyon.v3x.services.form.bean.ValueExport;
|
||||
|
||||
//创建无流程表单数据处理工具类
|
||||
public class FormExportUtil {
|
||||
|
||||
/**
|
||||
* 设置主表信息
|
||||
* @param map 设置主表字段。Map<主表显示名称,主表数据>
|
||||
* @return
|
||||
*/
|
||||
public List<ValueExport> setFormValue(Map<String, String> map){
|
||||
// 创建返回值对象
|
||||
List<ValueExport> valueExports = new ArrayList<ValueExport>();
|
||||
ValueExport valueExport ;
|
||||
// 获取参数信息(显示名称)
|
||||
Set<String> keys = map.keySet();
|
||||
if(keys.size()>0) {
|
||||
// 对控件赋值
|
||||
for (String key : keys) {
|
||||
valueExport = new ValueExport();
|
||||
valueExport.setDisplayName(key);
|
||||
valueExport.setValue(map.get(key));
|
||||
valueExports.add(valueExport);
|
||||
}
|
||||
}
|
||||
return valueExports;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置从表信息
|
||||
* @param lists 设置主表字段。List<Map<显示名称,数据值>>
|
||||
*/
|
||||
public List<SubordinateFormExport> setSubordinateFormValue(List<Map<String, String>> lists){
|
||||
List<SubordinateFormExport> subordinateFormExports = new ArrayList<SubordinateFormExport>();
|
||||
SubordinateFormExport subordinateFormExport = new SubordinateFormExport();
|
||||
List<RecordExport> recordExports = new ArrayList<RecordExport>();
|
||||
List<ValueExport> valueExports;
|
||||
RecordExport recordExport;
|
||||
for(int i = 0 ; i < lists.size() ; i++) {
|
||||
recordExport = new RecordExport();
|
||||
valueExports = setFormValue(lists.get(i));
|
||||
recordExport.setRecord(valueExports);
|
||||
recordExports.add(recordExport);
|
||||
}
|
||||
subordinateFormExport.setValues(recordExports);
|
||||
subordinateFormExports.add(subordinateFormExport);
|
||||
|
||||
return subordinateFormExports;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 格式转换将{"id":1,"str1":"123","str2":"asd","str3":"qwe"},{"id":2,"str1":"123","str2":"asd","str3":"qwe"},{"id":3,"str1":"123","str2":"asd","str3":"qwe"},{"id":1,"str1":"123","str2":"asd","str3":"qwe"},{"id":2,"str1":"123","str2":"asd","str3":"qwe"},{"id":3,"str1":"123","str2":"asd","str3":"qwe"}]
|
||||
有什么办法转换成
|
||||
[{"id":1,"data":[{"id":1,"str1":"123","str2":"asd","str3":"qwe"},{"id":1,"str1":"123","str2":"asd","str3":"qwe"}]}{"id":2,"data":[{"id":2,"str1":"123","str2":"asd","str3":"qwe"},{"id":2,"str1":"123","str2":"asd","str3":"qwe"}]}{"id":3,"data":[{"id":3,"str1":"123","str2":"asd","str3":"qwe"},{"id":3,"str1":"123","str2":"asd","str3":"qwe"}]}]
|
||||
* @param inputList
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String, Object>> transformData(JSONArray inputList) {
|
||||
Map<String, List<Map<String, Object>>> groupedData = new HashMap<>();
|
||||
for(int i = 0 ; i < inputList.size();i++) {
|
||||
String userId = inputList.getJSONObject(i).getString("userId");
|
||||
|
||||
groupedData.computeIfAbsent(userId, k -> new ArrayList<>()).add(inputList.getJSONObject(i));
|
||||
}
|
||||
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("userId", entry.getKey());
|
||||
resultMap.put("data", entry.getValue());
|
||||
result.add(resultMap);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public JSONArray dingdingTimeSequence (JSONArray datas){
|
||||
|
||||
for (int i = 0; i < datas.size() - 1; i++) {
|
||||
for (int j = 0; j < datas.size() - i - 1; j++) {
|
||||
String value1 = datas.getJSONObject(j).getString("baseCheckTime");
|
||||
String value2 = datas.getJSONObject(j + 1).getString("baseCheckTime");
|
||||
long long1 = Long.parseLong(value1);
|
||||
long long2 = Long.parseLong(value2);
|
||||
if (long1 > long2) {
|
||||
JSONObject temp = datas.getJSONObject(j);
|
||||
datas.set(j, datas.getJSONObject(j + 1));
|
||||
datas.set(j + 1, temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
return datas;
|
||||
}
|
||||
|
||||
}
|
||||
93
src/com/seeyon/apps/src_dingding/util/JdbcUtil.java
Normal file
93
src/com/seeyon/apps/src_dingding/util/JdbcUtil.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package com.seeyon.apps.src_dingding.util;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.Properties;
|
||||
|
||||
import com.seeyon.apps.src_dingding.kit.PropKit;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* jdbc工具类
|
||||
* 2021-06-08
|
||||
* @author huangzhengguo
|
||||
*
|
||||
*/
|
||||
public class JdbcUtil {
|
||||
private static String url;
|
||||
private static String user;
|
||||
private static String password;
|
||||
|
||||
static {
|
||||
// 使用properties加载属性文件
|
||||
// Properties prop = new Properties();
|
||||
try {
|
||||
// InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
|
||||
// prop.load(is);
|
||||
// 注册驱动(获取属性文件中的数据)
|
||||
// String driverClassName = prop.getProperty("jdbc_driver");
|
||||
System.out.println(PropKit.getProp(PropKit.JDBCDRIVER));
|
||||
String driverClassName = PropKit.getProp(PropKit.JDBCDRIVER);
|
||||
Class.forName(driverClassName);
|
||||
// 获取属性文件中的url,username,password
|
||||
// url = prop.getProperty("jdbc_url");
|
||||
System.out.println(PropKit.getProp(PropKit.JDBCURL));
|
||||
url = PropKit.getProp(PropKit.JDBCURL);
|
||||
// user = prop.getProperty("jdbc_user");
|
||||
System.out.println(PropKit.getProp(PropKit.JDBCUSER));
|
||||
user = PropKit.getProp(PropKit.JDBCUSER);
|
||||
// password = prop.getProperty("jdbc_password");
|
||||
System.out.println(PropKit.getProp(PropKit.JDBCPASSWORD));
|
||||
password = PropKit.getProp(PropKit.JDBCPASSWORD);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 获取数据库连接
|
||||
public static Connection getConnection() {
|
||||
Connection conn = null;
|
||||
try {
|
||||
conn = DriverManager.getConnection(url, user, password);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
// 释放资源
|
||||
public static void close(Connection conn, Statement stat, ResultSet rs) {
|
||||
close(conn, stat);
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 释放资源
|
||||
public static void close(Connection conn, Statement stat) {
|
||||
if (conn != null) {
|
||||
try {
|
||||
conn.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (stat != null) {
|
||||
try {
|
||||
stat.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
66
src/com/seeyon/apps/src_dingding/util/TimeUtil.java
Normal file
66
src/com/seeyon/apps/src_dingding/util/TimeUtil.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package com.seeyon.apps.src_dingding.util;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager;
|
||||
import com.seeyon.ctp.common.exceptions.BusinessException;
|
||||
import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem;
|
||||
import com.seeyon.ctp.util.JDBCAgent;
|
||||
|
||||
public class TimeUtil {
|
||||
|
||||
private EnumManager enumManagerNew;
|
||||
public EnumManager getEnumManager() {
|
||||
if (this.enumManagerNew == null) {
|
||||
this.enumManagerNew = ((EnumManager)AppContext.getBean("enumManagerNew"));
|
||||
}
|
||||
return enumManagerNew;
|
||||
}
|
||||
|
||||
public void setEnumManagerNew(EnumManager enumManagerNew) {
|
||||
this.enumManagerNew = enumManagerNew;
|
||||
}
|
||||
|
||||
// 获取定时任务的同步频率
|
||||
public String getTime() {
|
||||
JDBCAgent agent = new JDBCAgent();
|
||||
String time = "";
|
||||
// String sqlString = "select field0001,field0002,field0003 from formmain_0067";
|
||||
String sqlString = "select field0044,field0042,field0043 from formmain_1224";
|
||||
try {
|
||||
StringBuilder sql = new StringBuilder(sqlString);
|
||||
List<Object> p = new ArrayList<Object>();
|
||||
agent.execute(sql.toString(), p);
|
||||
List<Map> list = agent.resultSetToList();
|
||||
Map map = list.get(0);
|
||||
Long enumid = Long.parseLong(map.get("field0044").toString());
|
||||
String shi = map.get("field0042").toString();
|
||||
String fen = map.get("field0043").toString();
|
||||
String str = getEnumManager().getEnumItem(enumid).getValue();
|
||||
if("0".equals(str)) {
|
||||
time = "I-"+shi+","+fen;
|
||||
}else {
|
||||
time = "D-"+shi+","+fen;
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (agent != null) {
|
||||
agent.close();
|
||||
}
|
||||
}
|
||||
return time;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
142
src/com/seeyon/apps/src_dingding/vo/CheckOnWorkAttendanceVo.java
Normal file
142
src/com/seeyon/apps/src_dingding/vo/CheckOnWorkAttendanceVo.java
Normal file
@@ -0,0 +1,142 @@
|
||||
package com.seeyon.apps.src_dingding.vo;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class CheckOnWorkAttendanceVo {
|
||||
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Date getCheckOnWorkAttendanceDate() {
|
||||
return checkOnWorkAttendanceDate;
|
||||
}
|
||||
|
||||
public void setCheckOnWorkAttendanceDate(Date checkOnWorkAttendanceDate) {
|
||||
this.checkOnWorkAttendanceDate = checkOnWorkAttendanceDate;
|
||||
}
|
||||
|
||||
public Date getShangbanDate1() {
|
||||
return shangbanDate1;
|
||||
}
|
||||
|
||||
public void setShangbanDate1(Date shangbanDate1) {
|
||||
this.shangbanDate1 = shangbanDate1;
|
||||
}
|
||||
|
||||
public String getShangban1() {
|
||||
return shangban1;
|
||||
}
|
||||
|
||||
public void setShangban1(String shangban1) {
|
||||
this.shangban1 = shangban1;
|
||||
}
|
||||
|
||||
public Date getXiabanDate1() {
|
||||
return xiabanDate1;
|
||||
}
|
||||
|
||||
public void setXiabanDate1(Date xiabanDate1) {
|
||||
this.xiabanDate1 = xiabanDate1;
|
||||
}
|
||||
|
||||
public String getXiaban1() {
|
||||
return xiaban1;
|
||||
}
|
||||
|
||||
public void setXiaban1(String xiaban1) {
|
||||
this.xiaban1 = xiaban1;
|
||||
}
|
||||
|
||||
public Date getShangbanDate2() {
|
||||
return shangbanDate2;
|
||||
}
|
||||
|
||||
public void setShangbanDate2(Date shangbanDate2) {
|
||||
this.shangbanDate2 = shangbanDate2;
|
||||
}
|
||||
|
||||
public String getShangban2() {
|
||||
return shangban2;
|
||||
}
|
||||
|
||||
public void setShangban2(String shangban2) {
|
||||
this.shangban2 = shangban2;
|
||||
}
|
||||
|
||||
public Date getXiabanDate2() {
|
||||
return xiabanDate2;
|
||||
}
|
||||
|
||||
public void setXiabanDate2(Date xiabanDate2) {
|
||||
this.xiabanDate2 = xiabanDate2;
|
||||
}
|
||||
|
||||
public String getXiaban2() {
|
||||
return xiaban2;
|
||||
}
|
||||
|
||||
public void setXiaban2(String xiaban2) {
|
||||
this.xiaban2 = xiaban2;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
public String getGroupName() {
|
||||
return groupName;
|
||||
}
|
||||
|
||||
public void setGroupName(String groupName) {
|
||||
this.groupName = groupName;
|
||||
}
|
||||
|
||||
public long getMemberId() {
|
||||
return memberId;
|
||||
}
|
||||
|
||||
public void setMemberId(long memberId) {
|
||||
this.memberId = memberId;
|
||||
}
|
||||
// 数据ID
|
||||
private long id;
|
||||
// 考勤人员Id
|
||||
private long memberId;
|
||||
// 考勤日期 CHECKONWORKATTENDANCEDATE
|
||||
private Date checkOnWorkAttendanceDate;
|
||||
// 上班1基准时间
|
||||
private Date shangbanDate1;
|
||||
// 上班1打卡状态
|
||||
private String shangban1;
|
||||
// 下班1基准时间
|
||||
private Date xiabanDate1;
|
||||
// 下班1打卡状态
|
||||
private String xiaban1;
|
||||
// 上班2基准时间
|
||||
private Date shangbanDate2;
|
||||
// 上班2打卡状态
|
||||
private String shangban2;
|
||||
// 下班2基准时间
|
||||
private Date xiabanDate2;
|
||||
// 下班2打卡状态
|
||||
private String xiaban2;
|
||||
// 整体打卡状态
|
||||
private String state;
|
||||
// 考勤组
|
||||
private String groupName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return id+","+memberId + ",上班1:"+shangban1+",上班1基准"+shangbanDate1 + ",下班1:"+xiaban1+",下班1基准"+xiabanDate1+
|
||||
",上班2:"+shangban2+",上班2基准"+shangbanDate2+",下班2:"+xiaban2+",下班2基准"+xiabanDate2+",状态:"+state+",考勤组名称:"+groupName;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user