项目初始化创建

This commit is contained in:
2024-04-12 11:38:46 +08:00
commit 9eda320ed5
144 changed files with 9527 additions and 0 deletions

View 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;
// }
}

View 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;
}
}

View 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);
}

View 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;
}
}

View 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);
}
}

File diff suppressed because it is too large Load Diff

View 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;
// }
}

View 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;
}
}
}

View 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;
}
}

View 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;
}
}

View 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();
}
}
}
}

View 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;
}
}

View 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;
}
}