update code

dev_xds
haha 2024-03-28 00:10:50 +08:00
parent 9c7a500916
commit 936d499927
6 changed files with 349 additions and 20 deletions

View File

@ -1,7 +1,7 @@
<template>
<div class="attendance-config-dialog">
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="项目名称" prop="projectId">
<el-select v-if="mode != 'edit'" v-model="form.projectId" placeholder="请选择项目" clearable
@change="doQueryFormSub">
@ -62,6 +62,11 @@
<el-form-item label="租户ID" prop="appTenantId">
<el-input v-model="form.appTenantId" placeholder="请输租户ID" clearable />
</el-form-item>
</template>
<template v-if="form.vendorsCode=='jgw'">
<el-form-item label="项目经理手机" prop="phone">
<el-input v-model="form.phone" placeholder="项目经理手机" clearable />
</el-form-item>
</template>
<el-form-item label="是否启用" prop="enabled">
<el-radio-group v-model="form.enabled">
@ -96,6 +101,7 @@ export default {
vendorsCode:'gld',
appProjectId: '',
appTenantId:'',
phone:'',
enabled: 0
},
//
@ -135,6 +141,7 @@ export default {
this.form.secret="";
this.form.appProjectId="";
this.form.appTenantId="";
this.form.phone="";
}
});
@ -145,6 +152,7 @@ export default {
this.form.secret="";
this.form.appProjectId="";
this.form.appTenantId="";
this.form.phone="";
}
},
/** 提交按钮 */
@ -156,6 +164,7 @@ export default {
secret: this.form.secret,
projectId: this.form.appProjectId,
tenantId:this.form.appTenantId,
phone:this.form.phone
};
let obj = {
projectId: this.form.projectId,
@ -230,6 +239,7 @@ export default {
vendorsCode:'gld',
appProjectId: '',
appTenantId:'',
phone:'',
enabled: 0
};
this.resetForm("form");
@ -244,6 +254,16 @@ export default {
appProjectId: [{ required: true, trigger: "blur", message: "请输入" }],
enabled: [{ required: true, trigger: "blur", message: "请选择" }]
}
}else if(this.form.vendorsCode=='jgw'){
this.rules = {
projectId: [{ required: true, trigger: "blur", message: "请选择" }],
subDeptId: [{ required: true, trigger: "blur", message: "请选择" }],
appId: [{ required: true, trigger: "blur", message: "请输入" }],
secret: [{ required: true, trigger: "blur", message: "请输入" }],
appProjectId: [{ required: true, trigger: "blur", message: "请输入" }],
enabled: [{ required: true, trigger: "blur", message: "请选择" }],
phone: [{ required: true, trigger: "blur", message: "输入" }]
}
}else{
this.rules = {
projectId: [{ required: true, trigger: "blur", message: "请选择" }],
@ -292,6 +312,7 @@ export default {
obj.secret = p.secret || '',
obj.appProjectId = p.projectId || '';
obj.appTenantId=p.tenantId||'';
obj.phone=p.phone||'';
this.form = obj;
this.open = true;
this.title = "修改劳务实名制配置";

View File

@ -123,16 +123,22 @@ public class SurProjectAttendanceGroup extends BaseEntity
return g;
}
public static SurProjectAttendanceGroup createJgw(JSONObject j) {
public static SurProjectAttendanceGroup createJgw(JSONObject j,boolean isDirectlyUnder) {
SurProjectAttendanceGroup g=new SurProjectAttendanceGroup();
g.serverid=j.getString("id");
if(isDirectlyUnder) {
g.companyId = j.getString("leaderTeamId");
g.leaderPhone="directly";
}else{
g.companyId=j.getString("subcontractorId");
}
g.companyName=j.getString("corpName");
g.teamName=j.getString("teamName");
g.bizLicense=j.getString("corpCode");
g.companyCode=j.getString("teamJobtype");
g.companyTypeId="";
g.companyTypeId="0";
g.enterDate=0l;
g.exitDate=0l;
g.isDel=0l;

View File

@ -196,7 +196,6 @@ public class SurProjectAttendanceUser extends BaseEntity
u.companyId=""+j.getLongValue("unitId",0);
u.companyName=j.getString("unitName");
u.teamName=j.getString("teamName");
u.other=j.toJSONString();
return u;
}
@ -232,7 +231,6 @@ public class SurProjectAttendanceUser extends BaseEntity
u.companyId=j.getString("subcontractorId");
u.companyName="";
u.teamName="";
u.other=j.toJSONString();
u.isDel=0l;
JSONArray ja=j.getJSONArray("corpName");
if(ja!=null && ja.size()>0){
@ -348,7 +346,6 @@ public class SurProjectAttendanceUser extends BaseEntity
u.teamId=json.getInteger("teamId");
u.teamName=json.getString("teamName");
u.enterType=json.getString("enterType");
u.other=json.toJSONString();
u.isDel=0l;
return u;
}

View File

@ -6,6 +6,7 @@ import java.util.stream.Collectors;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
@ -188,6 +189,7 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
if(StrUtil.isEmpty(photo)){
photo=user.getRecentPhoto();
}
sdata.setWorkerPhoto(photo);
sdata.setWorkerGender(user.getGender());;
sdata.setGroupName(user.getGroupName());
@ -196,6 +198,9 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
sdata.setNativePlace(user.getNativePlace());
sdata.setPhone(user.getPhone());
sdata.setSpecWorkType(user.getSpecWorkType());
if("jgw".equals(sdata.getVendorsCode())) {
sdata.setCompanyId(user.getCompanyId());
}
//查询分组信息
SurProjectAttendanceGroup groupWhere=new SurProjectAttendanceGroup();
groupWhere.setCfgid(sdata.getCfgid());
@ -215,6 +220,8 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
if("jgw".equals(sdata.getVendorsCode())){
//sdata.setWorkTypeName(group.getCompanyCode());
sdata.setCompanyName(user.getCompanyName());
sdata.setWorkTypeName(user.getWorkTypeName());
//sdata.setCompanyName(group.getCompanyName());
sdata.setGroupName(group.getTeamName());
}
//查询项目部门信息
@ -236,7 +243,35 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
}else{
sdata.setId(list.get(0).getId());
SurProjectAttendanceData upData=list.get(0);
upData.setAttendanceOutTime(sdata.getAttendanceTime());
String dt1=upData.getAttendanceTime(); //
String dt2=upData.getAttendanceOutTime();
String dt3=sdata.getAttendanceTime();
if (StrUtil.isEmpty(dt3)) {
return;
}
long time3=DateUtil.parse(dt3).getTime();
if(StrUtil.isEmpty(dt2)){
upData.setAttendanceOutTime(dt3);
//比较 dt1,dt2 进行交换
long time2=DateUtil.parse(dt3).getTime();
long time1=DateUtil.parse(dt1).getTime();
if(time1>time2){
upData.setAttendanceTime(dt3);
upData.setAttendanceOutTime(dt1);
}
}else{
long time2=DateUtil.parse(dt2).getTime();
long time1=DateUtil.parse(dt1).getTime();
//比较 dt3<dt1 in->dt3
if(time3<time1){
upData.setAttendanceTime(dt3);
}
//比较 dt3>dt2 out->dt3
if(time3>time2){
upData.setAttendanceOutTime(dt3);
}
}
//upData.setAttendanceOutTime(sdata.getAttendanceTime());
updateSurProjectAttendanceData(upData);
}
}

View File

@ -30,10 +30,7 @@ import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Component("attendanceJgwTask")
@ -111,18 +108,128 @@ public class AttendanceJgwTask {
String appid="6a6f24fe35b04ee0bcf31cfb46ed1051";
String secret="c3h5enh4MjAyNHN1Yw==";
String prjId="db955e11ef774e63968a47c3dc2acc15";//"b67f1baa6dca4558a16bf90a4681b82e";//
String phone="18171295380";
String token= getToken(appid,secret);
if(token==null || token.length()==0){
return;
}
System.out.println(token);
System.out.println(DateUtil.format(DateTime.now(),"yyyy-MM-dd"));
findAddWorkerByProject(appid,token,prjId,0);
String subcontractorId=new AttendanceJgwTask().getSubcontractor(appid,token,phone);
String leaderTeamId="a643aaf5fdeb4c8fb0d8c7307881ce97";
System.out.println(subcontractorId);
findWorkerByLeader(appid,token,leaderTeamId);
//findDirectlyUnderTeam(appid,token,prjId,subcontractorId,0);
//queryProject(appid,token,phone,0);;
//findAddWorkerByProject(appid,token,prjId,0);
//findAttendanceByProject(appid,token,prjId);
//findTeamByProjectId(appid,token,prjId);
//findProContractorByProjectId(appid,token,prjId);
//getJobTypeData(appid,token,"0");
}
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 "";
}
public static HashMap<String,String> getJobTypeData(String appId,String token,String type){
String path="/webapi/dictInfo/getJobTypeData";
String time = System.currentTimeMillis() + "";
@ -218,6 +325,30 @@ public class AttendanceJgwTask {
}
}
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");
JSONObject jo=arr.getJSONObject(0);
}
public static void findProContractorByProjectId(String appId,String token,String projectId){
String path="/webapi/project/findProContractorByProjectId";
String time = System.currentTimeMillis() + "";
@ -244,7 +375,7 @@ public class AttendanceJgwTask {
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceGroup group=new SurProjectAttendanceGroup();
System.out.println("-->"+json.getString("teamName"));
}
}
}
@ -274,7 +405,7 @@ public class AttendanceJgwTask {
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json,false);
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
@ -322,7 +453,7 @@ public class AttendanceJgwTask {
cnt++;
}
SurProjectAttendanceUser user=SurProjectAttendanceUser.createFromJgw(json);
if(user.getWorkerId().equals("5bdc967decea43a3a894c0a15fde8d46")){
if(user.getName().equals("李文国")){
String k=user.getName();
JSONArray arr2= json.getJSONArray("corpName");
Object o=arr2.get(0);
@ -361,6 +492,80 @@ public class AttendanceJgwTask {
}
}
/**
*
*/
public void syncWorkerByLeader(){
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
List<SurProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(SurProjectAttendanceCfg it :list){
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);
SurProjectAttendanceGroup groupWhere=new SurProjectAttendanceGroup();
groupWhere.setCfgid(it.getId());
groupWhere.setLeaderPhone("directly");
List<SurProjectAttendanceGroup> groupList=attendanceGroupService.selectSurProjectAttendanceGroupList(groupWhere);
for(SurProjectAttendanceGroup g:groupList) {
jo.put("leaderTeamId",g.getCompanyId());
dosyncWorkerByLeader(jo, 0l, it);
}
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
private void dosyncWorkerByLeader(JSONObject jo, long startId, SurProjectAttendanceCfg it){
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);
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");
SurProjectAttendanceUser userWhere=new SurProjectAttendanceUser();
userWhere.setWorkerId(workerId);
userWhere.setCfgid(it.getId());
List<SurProjectAttendanceUser> userList=attendanceUserService.selectSurProjectAttendanceUserList(userWhere);
if(userList.size()>0){
SurProjectAttendanceUser upUser=userList.get(0);
upUser.setCompanyId(json.getString("leaderTeamId"));
upUser.setWorkTypeName(json.getString("jobType"));
attendanceUserService.updateSurProjectAttendanceUser(upUser);
}
}
}
}
private void doSyncWorker(JSONObject jo, long startId, SurProjectAttendanceCfg it) {
String appId=jo.getString("appId");
String token=jo.getString("token");
@ -391,7 +596,6 @@ public class AttendanceJgwTask {
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceUser user=SurProjectAttendanceUser.createFromJgw(json);
user.setVendorsCode(it.getVendorsCode());
user.setCfgid(it.getId());
user.setAppId(appId);
attendanceUserService.add(user);
@ -421,6 +625,7 @@ public class AttendanceJgwTask {
String token= getToken(appId,secret);
jo.put("token",token);
doSyncGroup(jo,0l,it);
doSyncDirectlyUnderGroup(jo,0l,it);
doSyncProContractor(jo,0l,it);
}catch (Exception ex){
ex.printStackTrace();
@ -465,7 +670,7 @@ public class AttendanceJgwTask {
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
rowId=json.getLong("id");
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json,true);
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
@ -474,6 +679,8 @@ public class AttendanceJgwTask {
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
}else{
group.setCompanyTypeId("0");
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
attendanceGroupService.updateJgw(group);
@ -485,6 +692,61 @@ public class AttendanceJgwTask {
}
}
/**
*
* @param jo
* @param startId
* @param it
*/
private void doSyncDirectlyUnderGroup(JSONObject jo, long startId, SurProjectAttendanceCfg it) {
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);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json,true);
group.setCfgid(it.getId());
group.setAppId(appId);
rowId=json.getLong("id");
SurProjectAttendanceGroup where=new SurProjectAttendanceGroup();
where.setCompanyId(group.getCompanyId());
where.setCfgid(group.getCfgid());
List<SurProjectAttendanceGroup> list=attendanceGroupService.selectSurProjectAttendanceGroupList(where);
if(list.size()==0){
attendanceGroupService.add(group);
}
}
if(rowId>0){
doSyncGroup(jo,rowId+1,it);
}
}
}
/**
*
* @param jo
@ -520,12 +782,18 @@ public class AttendanceJgwTask {
long rowId=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json,false);
group.setCfgid(it.getId());
group.setAppId(appId);
rowId=json.getLong("id");
SurProjectAttendanceGroup where=new SurProjectAttendanceGroup();
where.setCompanyId(group.getCompanyId());
where.setCfgid(group.getCfgid());
List<SurProjectAttendanceGroup> list=attendanceGroupService.selectSurProjectAttendanceGroupList(where);
if(list.size()==0){
attendanceGroupService.add(group);
}
}
if(rowId>0){
doSyncGroup(jo,rowId+1,it);
}

View File

@ -1,5 +1,6 @@
package com.yanzhu.jh.project.task;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
@ -214,6 +215,7 @@ public class AttendanceTask {
}
}
public static void main(String[] args){
System.out.println("-------1--------->AttendanceUserTask.syncWorker");
Map<String, Object> params = new HashMap<>();
params.put("projectId", "824959117494784");