jhprjv2/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AttendanceJgwTask.java

1182 lines
48 KiB
Java
Raw Normal View History

2024-08-08 00:33:14 +08:00
package com.ruoyi.quartz.task;
2024-03-15 23:25:37 +08:00
2024-03-20 23:38:25 +08:00
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateTime;
2024-03-15 23:25:37 +08:00
import cn.hutool.core.date.DateUtil;
2024-04-21 15:05:04 +08:00
import cn.hutool.core.io.FileUtil;
2024-03-20 23:38:25 +08:00
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
2024-03-15 23:25:37 +08:00
import com.alibaba.fastjson2.JSON;
2024-03-20 23:38:25 +08:00
import com.alibaba.fastjson2.JSONArray;
2024-03-15 23:25:37 +08:00
import com.alibaba.fastjson2.JSONObject;
2024-03-20 23:38:25 +08:00
import com.ruoyi.common.config.RuoYiConfig;
2024-03-25 23:43:54 +08:00
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.redis.RedisCache;
2024-03-20 23:38:25 +08:00
import com.ruoyi.common.utils.file.FileUtils;
2024-03-15 23:25:37 +08:00
import com.ruoyi.common.utils.sign.Md5Utils;
2024-08-08 00:33:14 +08:00
import com.ruoyi.quartz.domain.*;
import com.ruoyi.quartz.service.*;
2024-03-15 23:25:37 +08:00
import okhttp3.*;
2024-03-20 23:38:25 +08:00
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
2024-03-15 23:25:37 +08:00
2024-04-21 15:05:04 +08:00
import java.io.File;
2024-03-28 00:10:50 +08:00
import java.util.*;
2024-03-25 23:43:54 +08:00
import java.util.concurrent.TimeUnit;
2024-03-20 23:38:25 +08:00
@Component("attendanceJgwTask")
2024-03-15 23:25:37 +08:00
public class AttendanceJgwTask {
2024-08-08 00:33:14 +08:00
2024-03-20 23:38:25 +08:00
@Autowired
2024-08-08 00:33:14 +08:00
private RedisCache redisCache;
2024-03-20 23:38:25 +08:00
@Autowired
2024-08-08 00:33:14 +08:00
private ISysNativeService sysNativeService;
2024-03-20 23:38:25 +08:00
@Autowired
2024-08-08 00:33:14 +08:00
IQuartzProjectAttendanceUserService attendanceUserService;
2024-03-20 23:38:25 +08:00
@Autowired
2024-08-08 00:33:14 +08:00
IQuartzProjectAttendanceCfgService attendanceCfgService;
2024-03-25 23:43:54 +08:00
@Autowired
2024-08-08 00:33:14 +08:00
IQuartzProjectAttendanceDataService attendanceDataService;
2024-03-20 23:38:25 +08:00
2024-03-31 23:02:00 +08:00
@Autowired
2024-08-08 00:33:14 +08:00
IQuartzProjectAttendanceGroupService attendanceGroupService;
2024-03-31 23:02:00 +08:00
private String getNative(long id){
String ckey="attendance_jgw_native_"+id;
Object obj=redisCache.getCacheObject(ckey);
String tmp="";
if(obj!=null){
tmp=obj.toString();
if(StrUtil.isNotEmpty(tmp)){
return tmp;
}
}
List<SysNative> list=sysNativeService.selectSysNativeListById(id);
if(list.size()==0){
id=id/100*100;
list=sysNativeService.selectSysNativeListById(id);
if(list.size()==0){
id=id/10000*10000;
list=sysNativeService.selectSysNativeListById(id);
}
}
if(list.size()==0){
tmp="";
}else{
tmp= list.get(0).getAddress();
}
redisCache.setCacheObject(ckey, tmp, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.DAYS);
return tmp;
}
2024-03-25 23:43:54 +08:00
private String getWorkTypeName(String appid,String token,String type,String key){
String ckey="attendance_jgw_work_type_"+type;
Object obj=redisCache.getCacheObject(ckey);
HashMap<String,String> map=null;
if(obj==null){
map=getJobTypeData(appid,token,type);
if(map!=null){
2024-03-31 23:02:00 +08:00
redisCache.setCacheObject(ckey, map, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.DAYS);
2024-03-25 23:43:54 +08:00
}else{
return "未知";
}
}else{
map=(HashMap<String,String>)obj;
}
if(map.containsKey(key)){
return map.get(key);
}
return "未知";
}
2024-03-15 23:25:37 +08:00
static String host="http://api.gongyoumishu.com:80/gomeetapi/";
2024-03-25 23:43:54 +08:00
2024-03-16 00:02:59 +08:00
//sign/photo/20240101/E24E76-C9A5CB-0000FF/1741751233297383424_8848.JPG
2024-03-15 23:25:37 +08:00
public static String getToken(String appid,String secret){
String grantType="client_credential";
String path="/webapi/credential";
Map<String, Object> params = new HashMap<>();
params.put("appId",appid);
params.put("secret",secret);
params.put("grantType",grantType);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject jo= JSON.parseObject(data);
JSONObject joData= jo.getJSONObject("data");
if(joData!=null){
return joData.getString("token");
}
return null;
}
private static RequestBody toFormBody(Map<String, Object> params ){
FormBody.Builder builder=new FormBody.Builder();
for(String key :params.keySet()){
builder.add(key,params.get(key).toString());
}
return builder.build();
}
2024-04-21 15:05:04 +08:00
public void clearAlllPhoto(){
String filePath= RuoYiConfig.getUploadPath();
String path=filePath+"/jgw";
long endTime=DateUtil.current();
2024-04-21 15:27:01 +08:00
for(int i=365;i>=0;i--) {
2024-04-21 15:05:04 +08:00
Date dt = DateUtil.date(endTime - 3600l * 1000 * 24 * i);
String clearPath=path +"/" + DateUtil.format(dt, "YYYY/MM/dd");
String url="/jgw/"+DateUtil.format(dt, "YYYY/MM/dd");
clearDatePhone(clearPath,url);
}
}
public void clear3DayPhoto(){
String filePath= RuoYiConfig.getUploadPath();
String path=filePath+"/jgw";
long endTime=DateUtil.current();
2024-04-21 15:27:01 +08:00
for(int i=3;i>=0;i--) {
2024-04-21 15:05:04 +08:00
Date dt = DateUtil.date(endTime - 3600l * 1000 * 24 * i);
String clearPath=path +"/" + DateUtil.format(dt, "YYYY/MM/dd");
String url="/jgw/"+DateUtil.format(dt, "YYYY/MM/dd");
clearDatePhone(clearPath,url);
}
}
2024-04-22 22:09:58 +08:00
public void clearToDayPhoto(){
String filePath= RuoYiConfig.getUploadPath();
String path=filePath+"/jgw";
long endTime=DateUtil.current();
Date dt = new Date();
String clearPath=path +"/" + DateUtil.format(dt, "YYYY/MM/dd");
String url="/jgw/"+DateUtil.format(dt, "YYYY/MM/dd");
clearDatePhone(clearPath,url);
}
2024-04-21 15:05:04 +08:00
private void clearDatePhone(String path,String url){
File file=new File(path);
if(file.isDirectory()){
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceData where=new QuartzProjectAttendanceData();
2024-04-21 15:05:04 +08:00
where.setScanPhoto(url);
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceData> list=attendanceDataService.selectSurProjectAttendanceDataList(where);
2024-04-21 15:05:04 +08:00
List<String> names=new ArrayList<>();
2024-08-08 00:33:14 +08:00
for(QuartzProjectAttendanceData it:list){
2024-04-21 15:05:04 +08:00
names.add(it.getScanPhoto());
}
for(String f : file.list()){
try{
String name= FileUtils.getName(f);
if(!findInNames(names,name)){
FileUtil.del(path+"/"+f);
}
}catch (Exception ex){
}
}
}
}
private boolean findInNames(List<String> names, String name) {
for(String it :names){
if(it.indexOf(name)>=0){
return true;
}
}
return false;
}
2024-03-20 23:38:25 +08:00
2024-03-15 23:25:37 +08:00
public static void main(String[] args){
2024-03-20 23:38:25 +08:00
String d="sxyzxx2024suc";
System.out.println(Base64.encode(d));
2024-03-22 22:44:32 +08:00
System.out.println(DateTime.now().year());
2024-03-20 23:38:25 +08:00
2024-03-15 23:25:37 +08:00
String appid="6a6f24fe35b04ee0bcf31cfb46ed1051";
String secret="c3h5enh4MjAyNHN1Yw==";
2024-03-29 00:19:44 +08:00
//String prjId="db955e11ef774e63968a47c3dc2acc15";//"b67f1baa6dca4558a16bf90a4681b82e";//
2024-06-06 22:13:42 +08:00
//String prjId="cace2f676371427e8f6da20d2924f64e";//泾河新城荟锦坊二期
String prjId="209aa0c01d8248b6a56a0921d1b88c83";//泾河新城锦樾坊项目
2024-04-20 22:29:34 +08:00
String phone="15619028761";
2024-03-15 23:25:37 +08:00
String token= getToken(appid,secret);
if(token==null || token.length()==0){
return;
}
System.out.println(token);
2024-03-20 23:38:25 +08:00
System.out.println(DateUtil.format(DateTime.now(),"yyyy-MM-dd"));
2024-03-28 00:10:50 +08:00
String subcontractorId=new AttendanceJgwTask().getSubcontractor(appid,token,phone);
2024-04-20 22:29:34 +08:00
String leaderTeamId="b3774a8cd04c418dabf36bffbf276661";
2024-03-28 00:10:50 +08:00
System.out.println(subcontractorId);
2024-04-21 15:05:04 +08:00
2024-04-15 20:38:21 +08:00
//findWorkerByLeader(appid,token,leaderTeamId);
2024-04-25 21:57:25 +08:00
findDirectlyUnderTeam(appid,token,prjId,subcontractorId,0);
2024-03-28 00:10:50 +08:00
//queryProject(appid,token,phone,0);;
2024-04-11 00:26:45 +08:00
//findAddWorkerByProject(appid,token,prjId,0);
2024-03-29 00:19:44 +08:00
//findUpdateWorkerByProject(appid,token,prjId,0);
2024-04-20 22:29:34 +08:00
//findAttendanceByProject(appid,token,prjId,"0");
2024-03-28 13:23:31 +08:00
//findTeamByProjectId(appid,token,prjId);
2024-04-21 15:05:04 +08:00
//findProContractorByProjectId(appid,token,prjId);
2024-03-25 23:43:54 +08:00
//getJobTypeData(appid,token,"0");
2024-03-29 00:19:44 +08:00
//findDirectlyUnderTeam(appid,token,prjId);
2024-03-25 23:43:54 +08:00
}
2024-03-28 00:10:50 +08:00
public static void findDirectlyUnderTeam(String appId,String token,String projectId,String subcontractorId,int rowId){
String path="/webapi/project/findDirectlyUnderTeam";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
System.out.println(url);
String tokenSign = Md5Utils.hash(url);
System.out.println(tokenSign);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("subcontractorId",subcontractorId);
params.put("rowId",rowId);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject j= JSON.parseObject(data);
JSONObject jd=j.getJSONObject("data");
JSONArray arr=jd.getJSONArray("teamList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject jo=arr.getJSONObject(i);
System.out.println("-->"+jo.getString("teamName"));
}
}
}
public static void queryProject(String appId,String token,String phone,int rowId){
String path="/webapi/project/queryProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
System.out.println(url);
String tokenSign = Md5Utils.hash(url);
System.out.println(tokenSign);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("account",phone);
params.put("rowId",rowId);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject j= JSON.parseObject(data);
JSONObject jd=j.getJSONObject("data");
JSONArray arr=jd.getJSONArray("projectList");
if(arr.size()>0){
JSONObject jo=arr.getJSONObject(0);
}
}
public String getSubcontractor(String appId,String token,String phone){
String ckey = "attendance_jgw_Subcontractor_" + phone;
if(redisCache!=null) {
Object obj = redisCache.getCacheObject(ckey);
if(obj!=null){
String str=(String)obj;
if(StrUtil.isNotEmpty(str)){
return str;
}
}
}
String path="/webapi/project/querySubcontractorByPhone";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
System.out.println(url);
String tokenSign = Md5Utils.hash(url);
System.out.println(tokenSign);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("phone",phone);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject j= JSON.parseObject(data);
JSONObject jd=j.getJSONObject("data");
JSONArray arr=jd.getJSONArray("subcontractorList");
if(arr.size()>0){
JSONObject jo=arr.getJSONObject(0);
String tmp=jo.getString("subcontractorId");
if(StrUtil.isNotEmpty(tmp) && redisCache!=null){
redisCache.setCacheObject(ckey, tmp, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.DAYS);
return tmp;
}else{
return tmp;
}
}
return "";
}
2024-03-25 23:43:54 +08:00
public static HashMap<String,String> getJobTypeData(String appId,String token,String type){
String path="/webapi/dictInfo/getJobTypeData";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
System.out.println(url);
String tokenSign = Md5Utils.hash(url);
System.out.println(tokenSign);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("type",type);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject j= JSON.parseObject(data);
JSONObject jd=j.getJSONObject("data");
JSONArray arr=jd.getJSONArray("jobTypes");
HashMap<String,String> map=new HashMap<>();
for(int i=0;i<arr.size();i++){
JSONObject jo=arr.getJSONObject(i);
String code=jo.getString("dictCode");
String value=jo.getString("dictValue");
map.put(code,value);
}
return map;
2024-03-16 00:02:59 +08:00
}
2024-08-08 00:33:14 +08:00
2024-04-15 20:38:21 +08:00
public static void findAttendanceByProject(String appId,String token,String projectId,String startId){
2024-03-16 00:02:59 +08:00
String path="/webapi/project/findAttendanceByProject";
String time = System.currentTimeMillis() + "";
2024-04-15 20:38:21 +08:00
//String startId="0";
2024-03-16 00:02:59 +08:00
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
System.out.println(url);
String tokenSign = Md5Utils.hash(url);
System.out.println(tokenSign);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
2024-03-20 23:38:25 +08:00
params.put("startTime",DateUtil.format(DateTime.now(),"yyyy-MM-dd"));
params.put("endTime",DateUtil.format(DateUtil.offsetDay(DateTime.now(),0),"yyyy-MM-dd"));
2024-03-16 00:02:59 +08:00
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
2024-03-20 23:38:25 +08:00
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
String endId= joData.getString("endId");
JSONArray arr=joData.getJSONArray("workerAttList");
if(arr!=null && arr.size()>0){
for(int i=0;i<arr.size();i++) {
JSONObject json = arr.getJSONObject(i);
String photo=json.getString("signimg");
2024-04-08 23:34:32 +08:00
System.out.println(json.getString("machineType"));
2024-03-20 23:38:25 +08:00
String photoUrl=getPhoto(appId,token,photo);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceData sdata = QuartzProjectAttendanceData.createFromJgw(json);
2024-04-15 21:10:17 +08:00
if(sdata.getWorkerId().equals("63e0e09858624979b97291977afe352b")){
2024-04-15 20:38:21 +08:00
System.out.println("--->"+sdata.getRemark());
}
//sdata.setScanPhoto(photoUrl);
2024-03-20 23:38:25 +08:00
}
2024-04-15 20:38:21 +08:00
findAttendanceByProject(appId,token,projectId,endId);
2024-03-20 23:38:25 +08:00
}
2024-03-15 23:25:37 +08:00
}
2024-03-20 23:38:25 +08:00
private static String getPhoto(String appId,String token, String photo) {
String path="/webapi/dictInfo/getPhoyoAllPaths";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("filePath",photo);
2024-04-21 15:05:04 +08:00
2024-03-20 23:38:25 +08:00
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
String purl=joData.getString("result");
byte[] buffer= HttpUtil.downloadBytes(purl);
String filePath= RuoYiConfig.getUploadPath();
try {
2024-04-21 15:05:04 +08:00
String name=FileUtil.getName(photo);
return FileUtils.writeBytes(buffer, filePath+"/jgw",name);
2024-03-20 23:38:25 +08:00
}catch (Exception ex){
return "";
}
}
2024-04-21 15:05:04 +08:00
2024-03-28 00:10:50 +08:00
public static void findWorkerByLeader(String appId,String token,String leaderTeamId){
String path="/webapi/project/findWorkerByLeader";
String time = System.currentTimeMillis() + "";
String startId="0";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("leaderTeamId",leaderTeamId);
url=host+path;
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject jd=j.getJSONObject("data");
JSONArray arr=jd.getJSONArray("recordList");
2024-04-20 22:29:34 +08:00
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
if(json.getString("workerid").equals("56141214ea304fcc95a8098d3bafed0d")){
System.out.println("---1--");
}
}
2024-03-28 00:10:50 +08:00
}
2024-03-20 23:38:25 +08:00
public static void findProContractorByProjectId(String appId,String token,String projectId){
String path="/webapi/project/findProContractorByProjectId";
2024-03-16 00:02:59 +08:00
String time = System.currentTimeMillis() + "";
2024-03-15 23:25:37 +08:00
String startId="0";
2024-03-16 00:02:59 +08:00
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
2024-03-20 23:38:25 +08:00
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("proContractorList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-03-28 00:10:50 +08:00
System.out.println("-->"+json.getString("teamName"));
2024-03-20 23:38:25 +08:00
}
}
}
public static void findTeamByProjectId(String appId,String token,String projectId){
2024-03-23 18:32:18 +08:00
String path="webapi/project/findTeamByProjectId";
2024-03-20 23:38:25 +08:00
String time = System.currentTimeMillis() + "";
2024-04-20 22:29:34 +08:00
String startId="0";
2024-03-20 23:38:25 +08:00
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
2024-03-23 18:32:18 +08:00
JSONObject json=arr.getJSONObject(i);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.createJgw(json,false);
2024-03-20 23:38:25 +08:00
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
group.setCompanyTypeId("1");
}else if("007".equals(type)){//监理人员
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
}
}
}
}
2024-03-28 13:23:31 +08:00
public static void querySubcontractorByPhone(String appId,String token,String projectId){
String path="webapi/project/querySubcontractorByPhone";
String time = System.currentTimeMillis() + "";
String startId="100";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
String phone = "18171295380";
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("phone",phone);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&phone="+phone+"&timestamp="+time;
Request request = new Request.Builder()
.url(url)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.createJgw(json,true);
2024-03-28 13:23:31 +08:00
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
group.setCompanyTypeId("1");
}else if("007".equals(type)){//监理人员
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
}
}
}
}
public static void findDirectlyUnderTeam(String appId,String token,String projectId){
String path="webapi/project/findDirectlyUnderTeam";
String time = System.currentTimeMillis() + "";
String startId="0";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("subcontractorld","ddcffe48c6a7413a91bbf6eafbf037a9");
params.put("rowId",0);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&subcontractorld="+params.get("subcontractorld").toString()+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.createJgw(json,true);
2024-03-28 13:23:31 +08:00
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
group.setCompanyTypeId("1");
}else if("007".equals(type)){//监理人员
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
}
}
}
}
2024-03-20 23:38:25 +08:00
public static void findAddWorkerByProject(String appId,String token,String projectId,int startId){
String path="/webapi/project/findAddWorkerByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject jo= JSON.parseObject(data);
JSONObject joData= jo.getJSONObject("data");
int endId= joData.getInteger("endId");
JSONArray arr=joData.getJSONArray("workerList");
if(arr.size()>0) {
int cnt=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-03-31 23:02:00 +08:00
String idNumber=json.getString("idNumber");
if(StrUtil.isEmpty(idNumber)){
String a="xx";
}else{
}
2024-03-20 23:38:25 +08:00
String workerStatus= json.getString("workerStatus");
if("02".equals(workerStatus)){
cnt++;
}
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceUser user= QuartzProjectAttendanceUser.createFromJgw(json);
2024-04-20 22:29:34 +08:00
if(user.getName().equals("唐红吉")){
2024-03-26 01:05:54 +08:00
String k=user.getName();
JSONArray arr2= json.getJSONArray("corpName");
Object o=arr2.get(0);
}
2024-03-20 23:38:25 +08:00
}
System.out.println("cnt:"+cnt+","+arr.size());
2024-04-20 22:29:34 +08:00
findAddWorkerByProject(appId, token, projectId, endId);
2024-03-20 23:38:25 +08:00
}
}
2024-03-28 22:02:25 +08:00
public static void findUpdateWorkerByProject(String appId,String token,String projectId,int startId){
String path="/webapi/project/findUpdateWorkerByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
2024-03-20 23:38:25 +08:00
2024-03-28 22:02:25 +08:00
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("updateTime","2024-01-01 00:00:00");
//params.put("startId",startId);
params.put("startId","32150708");
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject jo= JSON.parseObject(data);
JSONObject joData= jo.getJSONObject("data");
//int endId= joData.getInteger("endId");
JSONArray arr=joData.getJSONArray("workerList");
if(arr.size()>0) {
int cnt=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
String workerStatus= json.getString("workerStatus");
if("02".equals(workerStatus)){
cnt++;
}
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceUser user= QuartzProjectAttendanceUser.createFromJgw(json);
2024-03-28 22:02:25 +08:00
if(user.getName().equals("李文国")){
String k=user.getName();
JSONArray arr2= json.getJSONArray("corpName");
Object o=arr2.get(0);
}
}
System.out.println("cnt:"+cnt+","+arr.size());
//findAddWorkerByProject(appId, token, projectId, endId);
}
}
2024-03-20 23:38:25 +08:00
/**
*
*/
public void syncWorker(){
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg();
2024-03-20 23:38:25 +08:00
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(QuartzProjectAttendanceCfg it :list){
2024-03-20 23:38:25 +08:00
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
doSyncWorker(jo,0l,it);
}catch (Exception ex){
ex.printStackTrace();
}
}
}
2024-03-28 22:02:25 +08:00
syncWorkerByLeader();
2024-03-20 23:38:25 +08:00
}
2024-03-28 00:10:50 +08:00
/**
*
*/
public void syncWorkerByLeader(){
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg();
2024-03-28 00:10:50 +08:00
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(QuartzProjectAttendanceCfg it :list){
2024-03-28 00:10:50 +08:00
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup groupWhere=new QuartzProjectAttendanceGroup();
2024-03-28 00:10:50 +08:00
groupWhere.setCfgid(it.getId());
groupWhere.setLeaderPhone("directly");
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceGroup> groupList=attendanceGroupService.selectSurProjectAttendanceGroupList(groupWhere);
for(QuartzProjectAttendanceGroup g:groupList) {
2024-04-25 21:57:25 +08:00
if(StrUtil.isNotEmpty(g.getLeaderName()) && StrUtil.isNotEmpty(g.getCompanyId())) {
jo.put("subcontractorId", g.getLeaderName());
jo.put("leaderTeamId", g.getCompanyId());
jo.put("companyName", g.getCompanyName());
dosyncWorkerByLeader(jo, 0l, it);
}
2024-03-28 00:10:50 +08:00
}
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
2024-08-08 00:33:14 +08:00
private void dosyncWorkerByLeader(JSONObject jo, long startId, QuartzProjectAttendanceCfg it){
2024-03-28 00:10:50 +08:00
String appId=jo.getString("appId");
String token=jo.getString("token");
String path="/webapi/project/findWorkerByLeader";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String leaderTeamId=jo.getString("leaderTeamId");
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("leaderTeamId",leaderTeamId);
2024-04-25 21:57:25 +08:00
params.put("subcontractorId",jo.getString("subcontractorId"));
2024-03-28 00:10:50 +08:00
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject jd=j.getJSONObject("data");
JSONArray arr=jd.getJSONArray("recordList");
if(arr!=null && arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
String workerId=json.getString("workerId");
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceUser userWhere=new QuartzProjectAttendanceUser();
2024-03-28 00:10:50 +08:00
userWhere.setWorkerId(workerId);
userWhere.setCfgid(it.getId());
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceUser> userList=attendanceUserService.selectSurProjectAttendanceUserList(userWhere);
2024-03-28 00:10:50 +08:00
if(userList.size()>0){
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceUser upUser=userList.get(0);
2024-03-28 00:10:50 +08:00
upUser.setCompanyId(json.getString("leaderTeamId"));
upUser.setWorkTypeName(json.getString("jobType"));
2024-03-31 23:40:18 +08:00
upUser.setCompanyName(jo.getString("companyName"));
2024-03-28 00:10:50 +08:00
attendanceUserService.updateSurProjectAttendanceUser(upUser);
}
}
}
}
2024-08-08 00:33:14 +08:00
private void doSyncWorker(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
2024-03-20 23:38:25 +08:00
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String path="/webapi/project/findAddWorkerByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
long endId= joData.getLong("endId");
JSONArray arr=joData.getJSONArray("workerList");
if(arr.size()>0) {
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceUser user= QuartzProjectAttendanceUser.createFromJgw(json);
2024-03-20 23:38:25 +08:00
user.setVendorsCode(it.getVendorsCode());
user.setCfgid(it.getId());
user.setAppId(appId);
2024-03-31 23:02:00 +08:00
String idNumber=json.getString("idNumber");//身份证
if(StrUtil.isNotEmpty(idNumber) && idNumber.length()>6){
try {
long idStr = Long.parseLong(idNumber.substring(0, 6));
String natstr=getNative(idStr);
if(StrUtil.isNotEmpty(natstr)){
user.setNativePlace(natstr);
}
}catch (Exception ex){
}
}
2024-03-20 23:38:25 +08:00
attendanceUserService.add(user);
}
doSyncWorker(jo,endId,it);
}
}
/**
*
*/
public void syncGroup(){
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg();
2024-03-20 23:38:25 +08:00
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(QuartzProjectAttendanceCfg it :list){
2024-03-20 23:38:25 +08:00
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
2024-04-25 21:57:25 +08:00
//doSyncGroup(jo,0l,it);
2024-03-28 00:10:50 +08:00
doSyncDirectlyUnderGroup(jo,0l,it);
2024-03-20 23:38:25 +08:00
doSyncProContractor(jo,0l,it);
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
/**
*
* @param jo
2024-03-31 23:31:38 +08:00
* @param startId
2024-03-20 23:38:25 +08:00
* @param it
*/
2024-08-08 00:33:14 +08:00
private void doSyncProContractor(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
2024-03-20 23:38:25 +08:00
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String path="/webapi/project/findProContractorByProjectId";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("proContractorList");
if(arr.size()>0){
long rowId=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
rowId=json.getLong("id");
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.createJgw(json,true);
2024-03-20 23:38:25 +08:00
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
group.setCompanyTypeId("1");
}else if("007".equals(type)){//监理人员
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
2024-03-28 00:10:50 +08:00
}else{
group.setCompanyTypeId("0");
2024-03-20 23:38:25 +08:00
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
attendanceGroupService.updateJgw(group);
}
}
if(rowId>0){
doSyncProContractor(jo,rowId+1,it);
}
}
}
2024-03-28 00:10:50 +08:00
/**
*
* @param jo
* @param startId
* @param it
*/
2024-08-08 00:33:14 +08:00
private void doSyncDirectlyUnderGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
2024-03-28 00:10:50 +08:00
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String phone=jo.getString("phone");
String subcontractorId=getSubcontractor(appId,token,phone);
String path="/webapi/project/findDirectlyUnderTeam";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("subcontractorId",subcontractorId);
params.put("rowId",startId);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
long rowId=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.createJgw(json,true);
2024-03-28 00:10:50 +08:00
group.setCfgid(it.getId());
group.setAppId(appId);
rowId=json.getLong("id");
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup where=new QuartzProjectAttendanceGroup();
2024-03-28 00:10:50 +08:00
where.setCompanyId(group.getCompanyId());
where.setCfgid(group.getCfgid());
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceGroup> list=attendanceGroupService.selectSurProjectAttendanceGroupList(where);
2024-03-28 00:10:50 +08:00
if(list.size()==0){
attendanceGroupService.add(group);
2024-04-25 21:57:25 +08:00
}else{
group.setId(list.get(0).getId());
attendanceGroupService.updateSurProjectAttendanceGroup(group);
2024-03-28 00:10:50 +08:00
}
}
if(rowId>0){
2024-04-25 21:57:25 +08:00
doSyncDirectlyUnderGroup(jo,rowId+1,it);
2024-03-28 00:10:50 +08:00
}
}
}
2024-03-20 23:38:25 +08:00
/**
*
* @param jo
* @param startId
* @param it
*/
2024-08-08 00:33:14 +08:00
private void doSyncGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
2024-03-20 23:38:25 +08:00
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String path="/webapi/project/findTeamByProjectId";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
long rowId=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.createJgw(json,false);
2024-03-20 23:38:25 +08:00
group.setCfgid(it.getId());
group.setAppId(appId);
rowId=json.getLong("id");
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceGroup where=new QuartzProjectAttendanceGroup();
2024-03-28 00:10:50 +08:00
where.setCompanyId(group.getCompanyId());
where.setCfgid(group.getCfgid());
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceGroup> list=attendanceGroupService.selectSurProjectAttendanceGroupList(where);
2024-03-28 00:10:50 +08:00
if(list.size()==0){
attendanceGroupService.add(group);
}
2024-03-20 23:38:25 +08:00
}
if(rowId>0){
doSyncGroup(jo,rowId+1,it);
}
}
}
/**
*
*/
public void syncAttendanceData(){
String dtStart=DateUtil.format(DateTime.now(),"yyyy-MM-dd");
String dtEnd=dtStart;
syncAttendanceData(dtStart,dtEnd);
2024-04-22 22:09:58 +08:00
clearToDayPhoto();
2024-03-20 23:38:25 +08:00
}
/**
* 7
*/
public void syncLastWeekAttendanceData(){
String dtEnd=DateUtil.format(DateTime.now(),"yyyy-MM-dd");
String dtStart=DateUtil.format(DateUtil.offsetDay(DateTime.now(),-7),"yyyy-MM-dd");
syncAttendanceData(dtStart,dtEnd);
}
/**
* 30
*/
public void syncLast30DayAttendanceData(){
String dtEnd=DateUtil.format(DateTime.now(),"yyyy-MM-dd");
String dtStart=DateUtil.format(DateUtil.offsetDay(DateTime.now(),-30),"yyyy-MM-dd");
syncAttendanceData(dtStart,dtEnd);
syncAttendanceData(dtStart,dtEnd);
}
private void syncAttendanceData(String dtStart,String dtEnd){
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg();
2024-03-20 23:38:25 +08:00
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
2024-08-08 00:33:14 +08:00
List<QuartzProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(QuartzProjectAttendanceCfg it :list){
2024-03-20 23:38:25 +08:00
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
jo.put("startTime",dtStart);
jo.put("endTime",dtEnd);
doSyncAttendanceData(jo,"0",it);
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
2024-08-08 00:33:14 +08:00
private void doSyncAttendanceData(JSONObject jo, String startId, QuartzProjectAttendanceCfg it) {
2024-03-20 23:38:25 +08:00
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String startTime=jo.getString("startTime");
String endTime=jo.getString("endTime");
String path="/webapi/project/findAttendanceByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
2024-03-15 23:25:37 +08:00
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
2024-03-16 00:02:59 +08:00
params.put("timestamp",time);
2024-03-15 23:25:37 +08:00
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
2024-03-23 00:57:06 +08:00
params.put("startTime",startTime);
params.put("endTime",endTime);
2024-03-15 23:25:37 +08:00
Request request = new Request.Builder()
2024-03-16 00:02:59 +08:00
.url(host+path)
2024-03-15 23:25:37 +08:00
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
2024-03-20 23:38:25 +08:00
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
String endId= joData.getString("endId");
JSONArray arr=joData.getJSONArray("workerAttList");
2024-04-22 22:09:58 +08:00
//List<SurProjectAttendanceData> addList=new ArrayList<>();
2024-03-20 23:38:25 +08:00
if(arr!=null && arr.size()>0){
for(int i=0;i<arr.size();i++) {
JSONObject json = arr.getJSONObject(i);
String photo=json.getString("signimg");
String photoUrl=getPhoto(appId,token,photo);
2024-08-08 00:33:14 +08:00
QuartzProjectAttendanceData sdata = QuartzProjectAttendanceData.createFromJgw(json);
2024-03-20 23:38:25 +08:00
sdata.setScanPhoto(photoUrl);
sdata.setCfgid(it.getId());
sdata.setAppId(appId);
2024-04-15 21:10:17 +08:00
if(sdata.getWorkerId().equals("63e0e09858624979b97291977afe352b")){
System.out.println("--->"+sdata.getRemark());
}
2024-03-20 23:38:25 +08:00
sdata.setVendorsCode(it.getVendorsCode());
attendanceDataService.add(sdata);
2024-04-22 22:09:58 +08:00
//addList.add(sdata);
2024-03-20 23:38:25 +08:00
}
2024-04-22 22:09:58 +08:00
//attendanceDataService.addList(addList);
2024-03-20 23:38:25 +08:00
doSyncAttendanceData(jo,endId,it);
}
2024-03-15 23:25:37 +08:00
}
2024-03-20 23:38:25 +08:00
2024-03-15 23:25:37 +08:00
}