备案接口优化添加是否下委托书字段推送经销商平台

This commit is contained in:
2024-08-12 13:48:52 +08:00
parent da2b2be1e6
commit 52dc436556
16 changed files with 569 additions and 320 deletions

View File

@@ -3,4 +3,6 @@
<beans default-autowire="byName">
<bean id="fvNewZhengceNode" class="com.seeyon.apps.src_qyba.node.FVNewZhengceNode" />
<bean id="fvOldZhengceNode" class="com.seeyon.apps.src_qyba.node.FVOldZhengceNode" />
<bean id="fvNewStateReturnNode" class="com.seeyon.apps.src_qyba.node.FVNewStateReturnNode" />
<bean id="fvOldStateReturnNode" class="com.seeyon.apps.src_qyba.node.FVOldStateReturnNode" />
</beans>

View File

@@ -2,4 +2,5 @@
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="fvService" class="com.seeyon.apps.src_qyba.service.FVService" />
<bean id="fvTongyongService" class="com.seeyon.apps.src_qyba.service.FVTongyongService" />
</beans>

View File

@@ -65,11 +65,17 @@ public class NewTongYongService {
map.put("request", parm.toString());
map.put("response", s);
} else {
// Map data = (Map) returnMsg.get("errMsg");
map.put("code", "300");
map.put("msg", "新建流程失败!");
map.put("request", parm.toString());
map.put("response", s);
if("-1".equals(code.toString())){
map.put("code", "300");
map.put("msg", returnMsg.get("msg"));
map.put("request", parm.toString());
map.put("response", s);
}else{
map.put("code", "300");
map.put("msg", "异常编号:"+code.toString()+",异常数据"+returnMsg.get("errMsg"));
map.put("request", parm.toString());
map.put("response", s);
}
}
return map;

View File

@@ -55,22 +55,22 @@ public class TongYongService {
Map<String, Object> map = new HashMap<>();
if ("SUCCESS".equals(code.toString())) {
//调用提交接口
// Map data = (Map) returnMsg.get("data");
// Object requestid = data.get("requestid");
// String msg = FanWeiUtil.PostRestfulbyForm(requestid.toString(), userid);
// JSONObject tiJiaoReturnMsg = JSON.parseObject(msg);
// Object code2 = tiJiaoReturnMsg.get("code");
// System.out.println("提交code:" + code2);
map.put("code", "200");
map.put("msg", "推送成功");
map.put("request", parm.toString());
map.put("response", s);
} else {
// Map data = (Map) returnMsg.get("errMsg");
map.put("code", "300");
map.put("msg", "新建流程失败!");
map.put("request", parm.toString());
map.put("response", s);
if("-1".equals(code.toString())){
map.put("code", "300");
map.put("msg", returnMsg.get("msg"));
map.put("request", parm.toString());
map.put("response", s);
}else{
map.put("code", "300");
map.put("msg", "异常编号:"+code.toString()+",异常数据"+returnMsg.get("errMsg"));
map.put("request", parm.toString());
map.put("response", s);
}
}
return map;

View File

@@ -13,6 +13,7 @@ import java.util.TimeZone;
import com.seeyon.apps.src_dingding.service.DingdingService;
import com.seeyon.apps.src_dingding.vo.CheckOnWorkAttendanceVo;
import nc.vo.jcom.lang.StringUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,7 +33,8 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
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 getDingdingOaMember = "SELECT * FROM (SELECT a.*, ROWNUM rnum FROM (SELECT * FROM SRC_DINGDING_OA_MEMBER ORDER BY id ) a WHERE ROWNUM <= ? ) WHERE rnum > ? ";
private String getDingdingOaMemberNum = "select count(t.oamemberid) as num from (SELECT oamemberid,count(oamemberid) as oanum FROM SRC_DINGDING_OA_MEMBER group by oamemberid) t";
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}'";
@@ -327,13 +329,14 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
}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){
if(StringUtil.isEmpty(checkOnWorkAttendanceVo.getShangban1())){
sql.append(",''");
}else{
sql.append(",'"+checkOnWorkAttendanceVo.getShangban1()+"'");
@@ -345,7 +348,7 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
}else{
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getXiabanDate1())+"','YYYY-MM-DD HH24:MI:SS')");
}
if(checkOnWorkAttendanceVo.getXiaban1().length()==0){
if(StringUtil.isEmpty(checkOnWorkAttendanceVo.getXiaban1())){
sql.append(",''");
}else{
sql.append(",'"+checkOnWorkAttendanceVo.getXiaban1()+"'");
@@ -357,7 +360,7 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
}else{
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getShangbanDate2())+"','YYYY-MM-DD HH24:MI:SS')");
}
if(checkOnWorkAttendanceVo.getShangban2().length()==0){
if(StringUtil.isEmpty(checkOnWorkAttendanceVo.getShangban2())){
sql.append(",''");
}else{
sql.append(",'"+checkOnWorkAttendanceVo.getShangban2()+"'");
@@ -369,7 +372,7 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
}else{
sql.append(",TO_DATE('"+simpleDateFormat.format(checkOnWorkAttendanceVo.getXiabanDate2())+"','YYYY-MM-DD HH24:MI:SS')");
}
if(checkOnWorkAttendanceVo.getXiaban2().length()==0){
if(StringUtil.isEmpty(checkOnWorkAttendanceVo.getXiaban2())){
sql.append(",''");
}else{
sql.append(",'"+checkOnWorkAttendanceVo.getXiaban2()+"'");
@@ -676,6 +679,32 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
return ret;
}
@Override
public String getDingdingOaMemberNum() {
String ret = "";
JDBCAgent agent = new JDBCAgent();
try {
StringBuilder sql = new StringBuilder(getDingdingOaMemberNum);
List<Object> p = new ArrayList<Object>();
agent.execute(sql.toString(), p);
List<Map> list = agent.resultSetToList();
for (Map map : list) {
ret = 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 ret;
}
@Override
public int updateWorkAttendance(CheckOnWorkAttendanceVo checkOnWorkAttendanceVo) {
int i = 0;
@@ -695,12 +724,14 @@ public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{
}
@Override
public List<Map<String, Object>> getDingdingOaMember() throws BusinessException, SQLException {
public List<Map<String, Object>> getDingdingOaMember(String startnum , String endnum) 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>();
p.add(endnum);
p.add(startnum);
agent.execute(sql.toString(), p);
List<Map> list = agent.resultSetToList();
for (Map map : list) {

View File

@@ -51,12 +51,12 @@ public interface IDingdingDao {
public List<Map<String,Object>> getDingdingOaDept()throws BusinessException, SQLException;
/**
* 查询部门对照表中所有的部门信息
* 查询分页查询所有人员信息
* @return
* @throws BusinessException
* @throws SQLException
*/
public List<Map<String,Object>> getDingdingOaMember()throws BusinessException, SQLException;
public List<Map<String,Object>> getDingdingOaMember(String startnum , String endnum)throws BusinessException, SQLException;
/**
* 根据部门ID查询OA系统中的部门信息
@@ -180,4 +180,11 @@ public interface IDingdingDao {
*/
public String getGroupName(String memberId);
/**
* 查询规定时间之内的补卡单据
* @return
*/
public String getDingdingOaMemberNum();
}

View File

@@ -266,9 +266,10 @@ public class DingdingService {
}
public String dingdingclockin() throws BusinessException, SQLException, RuntimeException, ApiException, ServiceException, InterruptedException {
String membernum = dingdingDao.getDingdingOaMemberNum();
log.info(membernum);
// 查询当前系统人员对照表中的人员信息
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember();
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember("0",membernum);
// 一次封装12人的考勤数据
int groupSize = 10; // 每组的大小
List<List<Map<String,Object>>> memberLists = new ArrayList<List<Map<String,Object>>>();
@@ -438,7 +439,6 @@ public class DingdingService {
}
subfrom.put("打卡状态", timeResultStr);
subfroms.add(subfrom);
}
if(lack ==datasSequence.size()){
@@ -462,8 +462,10 @@ public class DingdingService {
}
public String dingdingclockin(String datestr) throws BusinessException, SQLException, RuntimeException, ApiException, ServiceException, InterruptedException {
String membernum = dingdingDao.getDingdingOaMemberNum();
log.info(membernum);
// 查询当前系统人员对照表中的人员信息
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember();
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember("0",membernum);
// 一次封装12人的考勤数据
int groupSize = 10; // 每组的大小
@@ -659,135 +661,145 @@ public class DingdingService {
public void setWorkAttendance(){
log.info("开始设置考勤信息");
try {
// 获取所有打卡人
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember();
// 循环遍历所有打卡人信息,设置前一天的打卡情况
for (Map<String,Object> map:members) {
// 查询所有人员的数据量
String num = dingdingDao.getDingdingOaMemberNum();
int membernum = Integer.parseInt(num);
// 设置初始索引
int start = 0 ;
for(int i = 0; start <= membernum ; i++){
int end = start+1000;
// 获取所有打卡人
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember(start+"",end+"");
log.info(members);
// 循环遍历所有打卡人信息,设置前一天的打卡情况
for (Map<String,Object> map:members) {
// 根据打卡人信息获取一月内的打卡情况
log.info("设置当前考勤时间前一个月");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
String dateStr = sdf.format(calendar.getTime());
calendar.add(Calendar.MONTH, -1);
String lastMonth = sdf.format(calendar.getTime());
String memberId = map.get("oamemberid").toString();
log.info(lastMonth+"--"+memberId);
int clockInNum = dingdingDao.getClockInNumBymember(lastMonth,memberId);
log.info("设置当前考勤时间前一个月");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
String dateStr = sdf.format(calendar.getTime());
calendar.add(Calendar.MONTH, -1);
String lastMonth = sdf.format(calendar.getTime());
String memberId = map.get("oamemberid").toString();
log.info(lastMonth+"--"+memberId);
int clockInNum = dingdingDao.getClockInNumBymember(lastMonth,memberId);
// 创建考勤对象
CheckOnWorkAttendanceVo checkOnWorkAttendanceVo = new CheckOnWorkAttendanceVo();
log.info(memberId+","+clockInNum+"此人前一个月如果存在打卡情况则进行考勤对象创建");
if(clockInNum>0) {
CheckOnWorkAttendanceVo checkOnWorkAttendanceVo = new CheckOnWorkAttendanceVo();
log.info(memberId+","+clockInNum+"此人前一个月如果存在打卡情况则进行考勤对象创建");
if(clockInNum>0) {
// 存在打卡情况创建基础参数显示考勤情况显示未上班1下班1上班2下班2
// Calendar calendar1 = Calendar.getInstance();
//// 设置日期-1
// calendar1.add(Calendar.DATE, -1);
// String yesterday = sdf.format(calendar1.getTime());
// 查询参数的打卡记录
List<Map<String, Object>> clockInList = dingdingDao.getClockInBymember(dateStr, memberId);
log.info("指定时间的考勤数据条数:"+clockInList.size());
if (clockInList.size() > 0) {
List<Map<String, Object>> clockInList = dingdingDao.getClockInBymember(dateStr, memberId);
log.info("指定时间的考勤数据条数:"+clockInList.size());
if (clockInList.size() > 0) {
// 设置ID
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
checkOnWorkAttendanceVo.setGroupName(clockInList.get(0).get("groupName").toString());
log.info("创建考勤对象基础参数" + checkOnWorkAttendanceVo.getId());
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
checkOnWorkAttendanceVo.setGroupName(clockInList.get(0).get("groupName").toString());
log.info("创建考勤对象基础参数" + checkOnWorkAttendanceVo.getId());
// 判断考勤时间点上打卡状态
for (Map<String, Object> clockIn : clockInList) {
log.info(clockIn);
for (Map<String, Object> clockIn : clockInList) {
log.info(clockIn);
// 设置考勤相关数据
if ("上班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString());
}
} else if ("下班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString());
}
} else if ("上班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString());
}
} else if ("下班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString());
if ("上班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString());
}
} else if ("下班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString());
}
} else if ("上班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString());
}
} else if ("下班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString());
}
}
}
}
checkOnWorkAttendanceVo = setState(checkOnWorkAttendanceVo);
log.info("考勤对象" + checkOnWorkAttendanceVo.toString());
} else {
checkOnWorkAttendanceVo = setState(checkOnWorkAttendanceVo);
log.info("考勤对象" + checkOnWorkAttendanceVo.toString());
} else {
// 不存在打卡情况,创建未打卡数据
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
String groupName = dingdingDao.getGroupName(memberId);
checkOnWorkAttendanceVo.setGroupName(groupName);
checkOnWorkAttendanceVo.setShangban1("未打卡");
checkOnWorkAttendanceVo.setXiaban1("未打卡");
checkOnWorkAttendanceVo.setShangban2("未打卡");
checkOnWorkAttendanceVo.setXiaban2("未打卡");
checkOnWorkAttendanceVo.setState("休息");
log.info("休息时间考勤对象" + checkOnWorkAttendanceVo.toString());
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
String groupName = dingdingDao.getGroupName(memberId);
checkOnWorkAttendanceVo.setGroupName(groupName);
checkOnWorkAttendanceVo.setShangban1("未打卡");
checkOnWorkAttendanceVo.setXiaban1("未打卡");
checkOnWorkAttendanceVo.setShangban2("未打卡");
checkOnWorkAttendanceVo.setXiaban2("未打卡");
checkOnWorkAttendanceVo.setState("休息");
log.info("休息时间考勤对象" + checkOnWorkAttendanceVo.toString());
}
// 保存打卡数据到数据库表中
int addin = dingdingDao.addCheckOnWorkAttendance(checkOnWorkAttendanceVo);
log.info("当前考勤人员为:"+checkOnWorkAttendanceVo.getMemberId()+"添加信息条数为"+addin);
}
// 保存打卡数据到数据库表中
int addin = dingdingDao.addCheckOnWorkAttendance(checkOnWorkAttendanceVo);
log.info("当前考勤人员为:"+checkOnWorkAttendanceVo.getMemberId()+"添加信息条数为"+addin);
}
// 根据单据修改当前人员一月内的考勤情况
// calendar表示时间前一个月的时间点。查询 单据结束时间在查询开始时间之后并且单据开始时间在查询结束时间之前的单据
// 查询当前人员一年内的请假单 map 人员,请假类型,开始时间 ,结束时间
log.info("请假参数时间段"+memberId+"~~~~~~~~~~~~"+sdf.format(calendar.getTime())+"~~~~~~"+dateStr);
List<Map<String,Object>> leaves = dingdingDao.getLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(leaves,memberId);
log.info("请假参数时间段"+memberId+"~~~~~~~~~~~~"+sdf.format(calendar.getTime())+"~~~~~~"+dateStr);
List<Map<String,Object>> leaves = dingdingDao.getLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(leaves,memberId);
// 查询当前人员一年内的出差单 map 人员,请假类型,开始时间 ,结束时间
List<Map<String,Object>> evections = dingdingDao.getEvections(memberId,sdf.format(calendar.getTime()),dateStr);
evectionUpdateWorkAttendance(evections,memberId);
List<Map<String,Object>> evections = dingdingDao.getEvections(memberId,sdf.format(calendar.getTime()),dateStr);
evectionUpdateWorkAttendance(evections,memberId);
// 查询当前人员一年内的加班单
List<Map<String,Object>> overtimes = dingdingDao.getOvertime(memberId,sdf.format(calendar.getTime()),dateStr);
overtimesUpdateWorkAttendance(overtimes,memberId);
List<Map<String,Object>> overtimes = dingdingDao.getOvertime(memberId,sdf.format(calendar.getTime()),dateStr);
overtimesUpdateWorkAttendance(overtimes,memberId);
// 查询当前人员一年内的补卡单
List<Map<String,Object>> makeCard = dingdingDao.getMakeCard(memberId,sdf.format(calendar.getTime()),dateStr);
makeCardUpdateWorkAttendance(makeCard,memberId);
List<Map<String,Object>> makeCard = dingdingDao.getMakeCard(memberId,sdf.format(calendar.getTime()),dateStr);
makeCardUpdateWorkAttendance(makeCard,memberId);
// 查询当前人员一年内的调休单 map 人员,请假类型,开始时间 ,结束时间
List<Map<String,Object>> adjustLeaves = dingdingDao.getAdjustLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(adjustLeaves,memberId);
List<Map<String,Object>> adjustLeaves = dingdingDao.getAdjustLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(adjustLeaves,memberId);
}
start = end;
}
log.info("创建完成!!!创建条数"+members.size());
log.info("创建完成!!!创建条数"+membernum);
} catch (BusinessException e) {
e.printStackTrace();
} catch (SQLException e) {
@@ -807,134 +819,145 @@ public class DingdingService {
public String setWorkAttendance(String dateStr) {
log.info("开始设置考勤信息");
try {
// 获取所有打卡人
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember();
// 循环遍历所有打卡人信息,设置前一天的打卡情况
for (Map<String,Object> map:members) {
// 查询所有人员的数据量
String num = dingdingDao.getDingdingOaMemberNum();
int membernum = Integer.parseInt(num);
// 设置初始索引
int start = 0 ;
for(int i = 0; start <= membernum ; i++) {
int end = start + 1000;
// 获取所有打卡人
List<Map<String,Object>> members = dingdingDao.getDingdingOaMember(start+"",end+"");
log.info(members);
// 循环遍历所有打卡人信息,设置前一天的打卡情况
for (Map<String,Object> map:members) {
// 根据打卡人信息获取一月内的打卡情况
log.info("设置当前考勤时间前一个月");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(dateStr));
calendar.add(Calendar.MONTH, -1);
String lastMonth = sdf.format(calendar.getTime());
String memberId = map.get("oamemberid").toString();
log.info(lastMonth+"--"+memberId);
int clockInNum = dingdingDao.getClockInNumBymember(lastMonth,memberId);
log.info("设置当前考勤时间前一个月");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(dateStr));
calendar.add(Calendar.MONTH, -1);
String lastMonth = sdf.format(calendar.getTime());
String memberId = map.get("oamemberid").toString();
log.info(lastMonth+"--"+memberId);
int clockInNum = dingdingDao.getClockInNumBymember(lastMonth,memberId);
// 创建考勤对象
CheckOnWorkAttendanceVo checkOnWorkAttendanceVo = new CheckOnWorkAttendanceVo();
log.info(memberId+","+clockInNum+"此人前一个月如果存在打卡情况则进行考勤对象创建");
if(clockInNum>0) {
CheckOnWorkAttendanceVo checkOnWorkAttendanceVo = new CheckOnWorkAttendanceVo();
log.info(memberId+","+clockInNum+"此人前一个月如果存在打卡情况则进行考勤对象创建");
if(clockInNum>0) {
// 存在打卡情况创建基础参数显示考勤情况显示未上班1下班1上班2下班2
// Calendar calendar1 = Calendar.getInstance();
//// 设置日期-1
// calendar1.add(Calendar.DATE, -1);
// String yesterday = sdf.format(calendar1.getTime());
// 查询参数的打卡记录
List<Map<String, Object>> clockInList = dingdingDao.getClockInBymember(dateStr, memberId);
log.info("指定时间的考勤数据条数:"+clockInList.size());
if (clockInList.size() > 0) {
List<Map<String, Object>> clockInList = dingdingDao.getClockInBymember(dateStr, memberId);
log.info("指定时间的考勤数据条数:"+clockInList.size());
if (clockInList.size() > 0) {
// 设置ID
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
checkOnWorkAttendanceVo.setGroupName(clockInList.get(0).get("groupName").toString());
log.info("创建考勤对象基础参数" + checkOnWorkAttendanceVo.getId());
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
checkOnWorkAttendanceVo.setGroupName(clockInList.get(0).get("groupName").toString());
log.info("创建考勤对象基础参数" + checkOnWorkAttendanceVo.getId());
// 判断考勤时间点上打卡状态
for (Map<String, Object> clockIn : clockInList) {
log.info(clockIn);
for (Map<String, Object> clockIn : clockInList) {
log.info(clockIn);
// 设置考勤相关数据
if ("上班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString());
}
} else if ("下班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString());
}
} else if ("上班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString());
}
} else if ("下班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString());
if ("上班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban1(clockIn.get("state").toString());
}
} else if ("下班1".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate1(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban1(clockIn.get("state").toString());
}
} else if ("上班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setShangbanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("迟到".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date1.getTime()-date2.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setShangban2(clockIn.get("state").toString());
}
} else if ("下班2".equals(clockIn.get("type").toString())) {
checkOnWorkAttendanceVo.setXiabanDate2(simpleDateFormat.parse(clockIn.get("referenceDate").toString()));
if("早退".equals(clockIn.get("state").toString())){
Date date1 = simpleDateFormat.parse(clockIn.get("clockInDate").toString());
Date date2 = simpleDateFormat.parse(clockIn.get("referenceDate").toString());
long time = date2.getTime()-date1.getTime();
long minute = time/1000/60;
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString()+minute+"分钟");
}else{
checkOnWorkAttendanceVo.setXiaban2(clockIn.get("state").toString());
}
}
}
}
checkOnWorkAttendanceVo = setState(checkOnWorkAttendanceVo);
log.info("考勤对象" + checkOnWorkAttendanceVo.toString());
} else {
checkOnWorkAttendanceVo = setState(checkOnWorkAttendanceVo);
log.info("考勤对象" + checkOnWorkAttendanceVo.toString());
} else {
// 不存在打卡情况,创建未打卡数据
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
String groupName = dingdingDao.getGroupName(memberId);
checkOnWorkAttendanceVo.setGroupName(groupName);
checkOnWorkAttendanceVo.setShangban1("未打卡");
checkOnWorkAttendanceVo.setXiaban1("未打卡");
checkOnWorkAttendanceVo.setShangban2("未打卡");
checkOnWorkAttendanceVo.setXiaban2("未打卡");
checkOnWorkAttendanceVo.setState("休息");
log.info("休息时间考勤对象" + checkOnWorkAttendanceVo.toString());
checkOnWorkAttendanceVo.setId(UUIDUtil.getUUIDLong());
checkOnWorkAttendanceVo.setMemberId(Long.parseLong(memberId));
checkOnWorkAttendanceVo.setCheckOnWorkAttendanceDate(sdf.parse(dateStr));
String groupName = dingdingDao.getGroupName(memberId);
checkOnWorkAttendanceVo.setGroupName(groupName);
checkOnWorkAttendanceVo.setShangban1("未打卡");
checkOnWorkAttendanceVo.setXiaban1("未打卡");
checkOnWorkAttendanceVo.setShangban2("未打卡");
checkOnWorkAttendanceVo.setXiaban2("未打卡");
checkOnWorkAttendanceVo.setState("休息");
log.info("休息时间考勤对象" + checkOnWorkAttendanceVo.toString());
}
// 保存打卡数据到数据库表中
int addin = dingdingDao.addCheckOnWorkAttendance(checkOnWorkAttendanceVo);
log.info("当前考勤人员为:"+checkOnWorkAttendanceVo.getMemberId()+"添加信息条数为"+addin);
}
// 保存打卡数据到数据库表中
int addin = dingdingDao.addCheckOnWorkAttendance(checkOnWorkAttendanceVo);
log.info("当前考勤人员为:"+checkOnWorkAttendanceVo.getMemberId()+"添加信息条数为"+addin);
}
// 根据单据修改当前人员一月内的考勤情况
// calendar表示时间前一个月的时间点。查询 单据结束时间在查询开始时间之后并且单据开始时间在查询结束时间之前的单据
// 查询当前人员一年内的请假单 map 人员,请假类型,开始时间 ,结束时间
log.info("请假参数时间段"+memberId+"~~~~~~~~~~~~"+sdf.format(calendar.getTime())+"~~~~~~"+dateStr);
List<Map<String,Object>> leaves = dingdingDao.getLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(leaves,memberId);
log.info("请假参数时间段"+memberId+"~~~~~~~~~~~~"+sdf.format(calendar.getTime())+"~~~~~~"+dateStr);
List<Map<String,Object>> leaves = dingdingDao.getLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(leaves,memberId);
// 查询当前人员一年内的出差单 map 人员,请假类型,开始时间 ,结束时间
List<Map<String,Object>> evections = dingdingDao.getEvections(memberId,sdf.format(calendar.getTime()),dateStr);
evectionUpdateWorkAttendance(evections,memberId);
List<Map<String,Object>> evections = dingdingDao.getEvections(memberId,sdf.format(calendar.getTime()),dateStr);
evectionUpdateWorkAttendance(evections,memberId);
// 查询当前人员一年内的加班单
List<Map<String,Object>> overtimes = dingdingDao.getOvertime(memberId,sdf.format(calendar.getTime()),dateStr);
overtimesUpdateWorkAttendance(overtimes,memberId);
List<Map<String,Object>> overtimes = dingdingDao.getOvertime(memberId,sdf.format(calendar.getTime()),dateStr);
overtimesUpdateWorkAttendance(overtimes,memberId);
// 查询当前人员一年内的补卡单
List<Map<String,Object>> makeCard = dingdingDao.getMakeCard(memberId,sdf.format(calendar.getTime()),dateStr);
makeCardUpdateWorkAttendance(makeCard,memberId);
List<Map<String,Object>> makeCard = dingdingDao.getMakeCard(memberId,sdf.format(calendar.getTime()),dateStr);
makeCardUpdateWorkAttendance(makeCard,memberId);
// 查询当前人员一年内的调休单 map 人员,请假类型,开始时间 ,结束时间
List<Map<String,Object>> adjustLeaves = dingdingDao.getAdjustLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(adjustLeaves,memberId);
List<Map<String,Object>> adjustLeaves = dingdingDao.getAdjustLeave(memberId,sdf.format(calendar.getTime()),dateStr);
leaveUpdateWorkAttendance(adjustLeaves,memberId);
}
start = end;
}
log.info("创建完成!!!创建条数"+members.size());
log.info("创建完成!!!创建条数"+membernum);
} catch (BusinessException e) {
e.printStackTrace();
return e.toString();
@@ -1034,7 +1057,7 @@ public class DingdingService {
}
// 上班2
if(cowav.getShangbanDate2() == null ){
cowav.setShangban2(cowav.getShangban1());
// cowav.setShangban2(cowav.getShangban1());
// cowav.setShangban2("未打卡");
}else{
log.info(cowav.getShangbanDate2().getTime()>=simpleDateFormat.parse(list.get("startDateStr").toString()).getTime());
@@ -1048,8 +1071,8 @@ public class DingdingService {
}
// 下班2
if(cowav.getXiabanDate2() == null ){
cowav.setXiaban2(cowav.getXiaban1());
// cowav.setXiaban2("未打卡");
// cowav.setXiaban2(cowav.getXiaban1());
//// cowav.setXiaban2("未打卡");
}else{
log.info(cowav.getXiabanDate2().getTime()>=simpleDateFormat.parse(list.get("startDateStr").toString()).getTime());
log.info(cowav.getXiabanDate2().getTime()<=simpleDateFormat.parse(list.get("endDateStr").toString()).getTime());
@@ -1057,8 +1080,8 @@ public class DingdingService {
if(cowav.getXiabanDate2().getTime()>=simpleDateFormat.parse(list.get("startDateStr").toString()).getTime() &&
cowav.getXiabanDate2().getTime()<=simpleDateFormat.parse(list.get("endDateStr").toString()).getTime() &&
cowav.getXiabanDate2() !=null && cowav.getXiaban2().equals("未打卡") ){
cowav.setXiaban2(list.get("type").toString());
}
}cowav.setXiaban2(list.get("type").toString());
}
}
// 状态

View File

@@ -82,7 +82,6 @@ public abstract class FVCommonNode extends ACommonSuperNode {
String s = "";
Map parm = new HashMap();
if("CRM".equals(xttbvalue) || StringUtil.isEmpty(xttbvalue)){
url = configVo.getParamVal(FVConstants.fvOldUrl.name());
// 设置附件路径
JSONArray filePath = fvService.getFilePath(formDataVo,configVo);
// 参数封装
@@ -91,8 +90,7 @@ public abstract class FVCommonNode extends ACommonSuperNode {
String userid = formDataVo.getFieldData("经办人").getStringValue();
s = FanWeiUtil.PostRestful(parm, userid,configVo);
} if ("NCRM".equals(xttbvalue) || StringUtil.isEmpty(xttbvalue)){
url = configVo.getParamVal(FVConstants.fvNewUrl.name());
// 设置附件路径
// 设置附件路径
JSONArray filePath = fvService.getFilePath(formDataVo,configVo);
//封装参数
parm = FVService.createNewWF(filePath,formDataVo,configVo);

View File

@@ -1,4 +1,4 @@
package com.seeyon.apps.src_qyba.vo;
package com.seeyon.apps.src_qyba;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -11,6 +11,7 @@ import com.seeyon.apps.ext.workflow.vo.FormDataVo;
import com.seeyon.apps.ext.workflow.vo.SuperNodeContext;
import com.seeyon.apps.src_qyba.constants.FVConstants;
import com.seeyon.apps.src_qyba.service.FVService;
import com.seeyon.apps.src_qyba.service.FVTongyongService;
import com.seeyon.apps.src_qyba.util.FanWeiUtil;
import com.seeyon.cap4.form.bean.FormDataMasterBean;
import com.seeyon.ctp.common.AppContext;
@@ -61,7 +62,7 @@ public abstract class FVTongyongbeianNode extends ACommonSuperNode {
@Override
public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception {
SuperNodeContext context = new SuperNodeContext();
log.info("进入区域备案处理超级节点中");
log.info("进入备案审批结果回传处理超级节点中");
try {
FieldDataVo fhjg = formDataVo.getFieldData("返回结果");
String value = fhjg.getStringValue();
@@ -80,25 +81,13 @@ public abstract class FVTongyongbeianNode extends ACommonSuperNode {
FieldDataVo xttb = formDataVo.getFieldData("系统同步");
String xttbvalue = xttb.getStringValue();
String s = "";
Map parm = new HashMap();
if("CRM".equals(xttbvalue) || StringUtil.isEmpty(xttbvalue)){
url = configVo.getParamVal(FVConstants.fvOldUrl.name());
// 设置附件路径
JSONArray filePath = fvService.getFilePath(formDataVo,configVo);
// 参数封装
parm = FVService.createWF(filePath,formDataVo,configVo);
//调用新建接口
String userid = formDataVo.getFieldData("经办人").getStringValue();
s = FanWeiUtil.PostRestful(parm, userid,configVo);
} if ("NCRM".equals(xttbvalue) || StringUtil.isEmpty(xttbvalue)){
url = configVo.getParamVal(FVConstants.fvNewUrl.name());
// 设置附件路径
JSONArray filePath = fvService.getFilePath(formDataVo,configVo);
//封装参数
parm = FVService.createNewWF(filePath,formDataVo,configVo);
//调用新建接口
String userid = formDataVo.getFieldData("经办人").getStringValue();
s = FanWeiUtil.NewPostRestful(parm, userid,configVo);
// Map parm = new HashMap();
//封装参数
Map parm = FVTongyongService.createWF(formDataVo,configVo);
if("CRM".equals(xttbvalue)){
s = FanWeiUtil.PostSubmitRestful(parm,configVo);
} if ("NCRM".equals(xttbvalue)){
s = FanWeiUtil.NewPostSubmitRestful(parm,configVo);
}
JSONObject returnMsg = JSONObject.parseObject(s);
Object code = returnMsg.get("code");
@@ -113,7 +102,7 @@ public abstract class FVTongyongbeianNode extends ACommonSuperNode {
} else {
// Map data = (Map) returnMsg.get("errMsg");
map.put("code", "300");
map.put("msg", "新建流程失败!"+returnMsg.getString("msg"));
map.put("msg", "新建流程失败!"+returnMsg.getString("errMsg"));
map.put("request", parm.toString());
map.put("response", s);
}

View File

@@ -2,16 +2,17 @@ package com.seeyon.apps.src_qyba.constants;
public enum FVConstants {
plugin("src_qyba","插件ID"),
fvOldUrl("http://10.1.90.21:9083", "旧经销商平台地址"),
fvNewUrl("http://10.1.90.21:9083", "新经销商平台地址"),
// fvOldUrl("http://10.1.90.21:9083", "旧经销商平台地址"),
// fvNewUrl("http://10.1.90.21:9083", "新经销商平台地址"),
workflowId("8521", "workflowId"),
newWorkflowId("2026", "newWorkflowId"),
dowurl("https://oa.dhx.com.cn/seeyon/rest/attachment/file", "dowurl"),
addRess("https://crm.dhx9.com", "addRess"),
newAddRess("http://10.0.6.15:88", "newAddRess"),
newAddRess("https://crm.zwinfor.cn/", "newAddRess"),
spk("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAymEn8vp0E8pg6op/WXJ4A67jHAYeUBtut8vJgk09t4Bw3kheWnHUjVHDBEZ8iC/iX9YyBzL76WZR+lpDqdFh2iKYk+yctHKc4dt9r0vw6HYMUWDrYmctdKJtdOGpWxz4apBr7Rc/2A3FDxwsiXzPqpG/GY+/1IHp7E3jEX0nxzuJn/YUm/SoSgfMB4NCHF9n3rrIsp4jJ5SOSwLr68nlwT3djF2f8vQcqRxmT0J7X2xKehlpeiubszQj5TeFcA+onkOBKkoKc+83G8Gg8J1IWZLsd50cjawrmg8lxl+UBEsPZHEh0AhWDHKLRG+9jyZJ94hoWaQRSgwEIdGyShNMnwIDAQAB", "SPK"),
newspk("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvcOew5NM41jK7CFBnirP4Zz0QIexYEweS+4LTuQOVY+BqHu2EMxlPYRsjtvzZj7Pm9SsiNiEIeGXZ3mkAMbNNqu7G7kGb10pJzpBBTE80cRCY0bHoD3PhD8cBiKjpsRXJ+1mPdwD4fGEr0IcG6bKhBM3xsCmc4JiEvsv/+nPm9G7NQgoPGEKHkZk0IgyaBF5m6F2NKah92klxuz+vWCQoVsCpCjHN1sijQioWc6lRLgP7d6IZFEbOrLL7HdlOc8yKOAOZhURd78CqiVYBc1vP0pyC1/UW0Lq0f2MFpg/7Z18VwAf1vFUb+oiIdjFYMr5dgS+i784FaMUDzKUvndDWwIDAQAB", "NEWSPK"),
tongyongApi("/api/workflow/paService/doCreateRequest", "tongyongApi"),
tongyonSubmitgApi("/api/workflow/paService/submitRequest", "tongyonSubmitgApi"),
appId("oa", "appId"),
secret("b44da0ec-6ba5-4d6e-b3d7-e0571b3bcdd6", "secret"),
newSecret("6553bad7-51f0-4d56-af44-3d64a8ce9814", "newSecret"),

View File

@@ -0,0 +1,30 @@
package com.seeyon.apps.src_qyba.node;
import com.seeyon.apps.src_qyba.FVTongyongbeianNode;
/**
* 功能描述:<br>
* <pre>
*
* </pre>
*
* @Author: HuangZhengguo
* @Date: 2024/2/27
*/
public class FVNewStateReturnNode extends FVTongyongbeianNode {
@Override
public String getMethod() {
return "";
}
@Override
public String getNodeId() {
return "fvNewStateReturnNode";
}
@Override
public String getNodeName() {
return "新平台备案状态回传推送BIP";
}
}

View File

@@ -0,0 +1,30 @@
package com.seeyon.apps.src_qyba.node;
import com.seeyon.apps.src_qyba.FVTongyongbeianNode;
/**
* 功能描述:<br>
* <pre>
*
* </pre>
*
* @Author: HuangZhengguo
* @Date: 2024/2/27
*/
public class FVOldStateReturnNode extends FVTongyongbeianNode {
@Override
public String getMethod() {
return "";
}
@Override
public String getNodeId() {
return "fvOldStateReturnNode";
}
@Override
public String getNodeName() {
return "老平台备案状态回传推送BIP";
}
}

View File

@@ -25,6 +25,6 @@ public class FVOldZhengceNode extends FVCommonNode {
@Override
public String getNodeName() {
return "老平台政策推送BIP";
return "P老平台政策推送BI";
}
}

View File

@@ -70,11 +70,6 @@ public class FVService {
public static Map createWF( JSONArray faths, FormDataVo formDataVo, ConfigVo configVo) throws NoSuchFieldException, IOException {
//主表信息
List mainlist = new ArrayList();
//客户名称
// JSONObject mainmap1 = new JSONObject();
// mainmap1.put("fieldName","khmc");//OA字段名-出差类型(下拉框)
// mainmap1.put("fieldValue",formDataVo.getFieldData("客户id").getStringValue());//字段值(下拉框选项值)
// mainlist.add(mainmap1);
//标题
Map mainmap2 = new HashMap();

View File

@@ -0,0 +1,119 @@
package com.seeyon.apps.src_qyba.service;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.seeyon.apps.common.plugin.vo.ConfigVo;
import com.seeyon.apps.daohuaxiangSys.jkts.util.InterfaceListUtil;
import com.seeyon.apps.daohuaxiangSys.jkts.util.PropKit;
import com.seeyon.apps.ext.workflow.vo.FormDataVo;
import com.seeyon.apps.src_qyba.constants.FVConstants;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.SystemEnvironment;
import com.seeyon.ctp.common.filemanager.manager.AttachmentManager;
import com.seeyon.ctp.common.po.filemanager.Attachment;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.*;
public class FVTongyongService {
private final static Log log = LogFactory.getLog(FVTongyongService.class);
private AttachmentManager attachmentManager;
public void setAttachmentManager(AttachmentManager attachmentManager) {
this.attachmentManager = attachmentManager;
}
public AttachmentManager getAttachmentManagery() {
if (attachmentManager == null) {
attachmentManager = (AttachmentManager) AppContext.getBean("attachmentManager");
}
return attachmentManager;
}
/**
* 创建流程
*/
public static Map createWF(FormDataVo formDataVo, ConfigVo configVo) throws NoSuchFieldException, IOException {
//主表信息
List mainlist = new ArrayList();
//备案类型
Map mainmap = new HashMap();
mainmap.put("fieldName","bayj");
String type = formDataVo.getFieldData("备案").getStringValue();
if("同意备案".equals(type)){
mainmap.put("fieldValue","0");
}else if ("不同意备案".equals(type)){
mainmap.put("fieldValue","1");
}else if ("满足条件备案".equals(type)){
mainmap.put("fieldValue","2");
}
String sfxwts = formDataVo.getFieldData("是否下委托书").getStringValue();
if("".equals(sfxwts)){
mainmap.put("fieldValue","0");
}else if ("".equals(sfxwts)){
mainmap.put("fieldValue","1");
}
mainlist.add(mainmap);
//接口主参数
Map m = new LinkedHashMap();
//工作流ID
m.put("workflowId", formDataVo.getFieldData("工作流ID").getStringValue());
//流程请求ID
m.put("requestId", formDataVo.getFieldData("流程请求ID").getStringValue());
//流程标题
m.put("requestName",formDataVo.getColSummary().getSubject());
//主表
m.put("mainData", JSONUtil.toJsonStr(mainlist));
log.info(m);
return m;
}
/**
* 创建流程
*/
public static Map createNewWF(FormDataVo formDataVo, ConfigVo configVo) throws NoSuchFieldException, IOException {
//主表信息
List mainlist = new ArrayList();
//流程表单名
Map tableDBName = new HashMap();
tableDBName.put("tableDBName",formDataVo.getFieldData("流程表单名").getStringValue());
mainlist.add(tableDBName);
//备案类型
Map mainmap = new HashMap();
mainmap.put("fieldName","bayj");
String type = formDataVo.getFieldData("备案").getStringValue();
if("同意备案".equals(type)){
mainmap.put("fieldValue","0");
}else if ("不同意备案".equals(type)){
mainmap.put("fieldValue","1");
}else if ("满足条件备案".equals(type)){
mainmap.put("fieldValue","2");
}
mainlist.add(mainmap);
//接口主参数
Map m = new LinkedHashMap();
// JSONObject p = new JSONObject();
//工作流ID
m.put("workflowid", formDataVo.getFieldData("工作流ID").getStringValue());
//流程请求ID
m.put("requestId", formDataVo.getFieldData("流程请求ID").getStringValue());
//流程标题
m.put("requestName",formDataVo.getColSummary().getSubject());
//主表
m.put("mainData",JSONUtil.toJsonStr(mainlist));
log.info(m);
return m;
}
}

View File

@@ -70,10 +70,10 @@ public class FanWeiUtil {
//调用ECOLOGY系统接口进行注册
String data = HttpRequest.post(address + "/api/ec/dev/auth/regist")
.header("appid",APPID)
.header("cpk",publicKey)
.timeout(2000)
.execute().body();
.header("appid",APPID)
.header("cpk",publicKey)
.timeout(2000)
.execute().body();
// 打印ECOLOGY响应信息
log.info("Regist()"+data);
@@ -124,7 +124,7 @@ public class FanWeiUtil {
}
/**
* 第三步:
* 第三步:新增
*
* 调用ecology系统的rest接口请求头部带上token和用户标识认证信息
*
@@ -168,29 +168,40 @@ public class FanWeiUtil {
return data;
}
// public static String getAPPID() {
// return APPID;
// }
//
// public static void setAPPID(String APPID) {
// FanWeiUtil.APPID = APPID;
// }
//
// public static String getPrivateKey() {
// return privateKey;
// }
//
// public static void setPrivateKey(String privateKey) {
// FanWeiUtil.privateKey = privateKey;
// }
//
// public static String getPublicKey() {
// return publicKey;
// }
//
// public static void setPublicKey(String publicKey) {
// FanWeiUtil.publicKey = publicKey;
// }
/**
* 第三步:提交
*
* 调用ecology系统的rest接口请求头部带上token和用户标识认证信息
*
* @param params 请求参数map创建流程之类的post接口是以模拟form表单提交的方式其他get接口以json字符串方式提交
*
* 注意ECOLOGY系统所有POST接口调用请求头请设置 "Content-Type","application/x-www-form-urlencoded; charset=utf-8"
*/
public static String PostSubmitRestful(Map params,ConfigVo configVo) throws IOException {
//ECOLOGY返回的token
String token = (String) Getoken(configVo.getParamVal(FVConstants.addRess.name()),configVo).get("token");
//封装请求头参数
RSA rsa = new RSA(null, configVo.getParamVal(FVConstants.spk.name()));
//对用户信息进行加密传输,暂仅支持传输OA用户ID
String encryptUserid = rsa.encryptBase64("1",CharsetUtil.CHARSET_UTF_8,KeyType.PublicKey);
//调用ECOLOGY系统接口
log.info(configVo.getParamVal(FVConstants.addRess.name()));
log.info(configVo.getParamVal(FVConstants.tongyonSubmitgApi.name()));
log.info(configVo.getParamVal(FVConstants.appId.name()));
log.info(encryptUserid);
String data = HttpRequest.post(configVo.getParamVal(FVConstants.addRess.name()) + configVo.getParamVal(FVConstants.tongyonSubmitgApi.name()))
.header("appid",configVo.getParamVal(FVConstants.appId.name()))
.header("token",token)
.header("userid",encryptUserid)
// .header("skipsession", "1")
.form(params)
.execute().body();
log.info("PostRestfulby()"+data);
return data;
}
/**
@@ -200,8 +211,6 @@ public class FanWeiUtil {
*/
public static Map<String,Object> NewGetoken(String address,ConfigVo configVo) throws IOException {
// 从系统缓存或者数据库中获取ECOLOGY系统公钥和Secret信息
// String secret = PropKit.getProp(PropKit.NEWSECRET);
// String spk = PropKit.getProp(PropKit.NEWSPK);
String secret = configVo.getParamVal(FVConstants.newSecret.name());
String spk = configVo.getParamVal(FVConstants.newspk.name());
@@ -212,11 +221,6 @@ public class FanWeiUtil {
String encryptSecret = rsa.encryptBase64(secret, CharsetUtil.CHARSET_UTF_8, KeyType.PublicKey);
//调用ECOLOGY系统接口进行注册
// String data = HttpRequest.post(address+ "/api/ec/dev/auth/applytoken")
// .header("appid",PropKit.getProp(PropKit.APPID))
// .header("secret",encryptSecret)
// .header("time","3600")
// .execute().body();
String data = HttpRequest.post(address+ "/api/ec/dev/auth/applytoken")
.header("appid",configVo.getParamVal(FVConstants.appId.name()))
.header("secret",encryptSecret)
@@ -234,7 +238,7 @@ public class FanWeiUtil {
}
/**
* 第三步:
* 第三步:新增
*
* 调用ecology系统的rest接口请求头部带上token和用户标识认证信息
*
@@ -250,40 +254,53 @@ public class FanWeiUtil {
//封装请求头参数
// RSA rsa = new RSA(null, PropKit.getProp(PropKit.NEWSPK));
RSA rsa = new RSA(null, configVo.getParamVal(FVConstants.newspk.name()));
//对用户信息进行加密传输,暂仅支持传输OA用户ID
String encryptUserid = rsa.encryptBase64(userid,CharsetUtil.CHARSET_UTF_8,KeyType.PublicKey);
//调用ECOLOGY系统接口
// String data = HttpRequest.post(PropKit.getProp(PropKit.NEWADDRESS) + PropKit.getProp(PropKit.TONGYONGAPI))
// .header("appid",PropKit.getProp(PropKit.APPID))
// .header("token",token)
// .header("userid",encryptUserid)
// // .header("skipsession", "1")
// .form(params)
// .execute().body();
String data = HttpRequest.post(configVo.getParamVal(FVConstants.newAddRess.name()) + configVo.getParamVal(FVConstants.tongyongApi.name()))
.header("appid",configVo.getParamVal(FVConstants.appId.name()))
.header("token",token)
.header("userid",encryptUserid)
// .header("skipsession", "1")
.form(params)
.execute().body();
// Map headermap = new HashMap();
// headermap.put("appid",APPID);
// headermap.put("token",token);
// headermap.put("userid",encryptUserid);
// String data = HttpClientUtil.doPostFORM(address + api,headermap,params);
log.info("PostRestfulby()"+data);
return data;
}
/**
* 第三步:提交
*
* 调用ecology系统的rest接口请求头部带上token和用户标识认证信息
*
* @param params 请求参数map创建流程之类的post接口是以模拟form表单提交的方式其他get接口以json字符串方式提交
*
* 注意ECOLOGY系统所有POST接口调用请求头请设置 "Content-Type","application/x-www-form-urlencoded; charset=utf-8"
*/
public static String NewPostSubmitRestful(Map params,ConfigVo configVo) throws IOException {
//ECOLOGY返回的token
String token = (String) NewGetoken(configVo.getParamVal(FVConstants.newAddRess.name()),configVo).get("token");
log.info(token);
//封装请求头参数
RSA rsa = new RSA(null, configVo.getParamVal(FVConstants.newspk.name()));
//对用户信息进行加密传输,暂仅支持传输OA用户ID
String encryptUserid = rsa.encryptBase64("1",CharsetUtil.CHARSET_UTF_8,KeyType.PublicKey);
//调用ECOLOGY系统接口
log.info(configVo.getParamVal(FVConstants.newAddRess.name()));
log.info(configVo.getParamVal(FVConstants.tongyonSubmitgApi.name()));
log.info(configVo.getParamVal(FVConstants.appId.name()));
log.info(encryptUserid);
String data = HttpRequest.post(configVo.getParamVal(FVConstants.newAddRess.name()) + configVo.getParamVal(FVConstants.tongyonSubmitgApi.name()))
.header("appid",configVo.getParamVal(FVConstants.appId.name()))
.header("token",token)
.header("userid",encryptUserid)
.form(params)
.execute().body();
log.info("PostRestfulby()"+data);
return data;
}
}