update code

dev_xds
haha 2024-04-10 22:55:33 +08:00
parent a9f5df0eb5
commit f4ae458d92
19 changed files with 77 additions and 102 deletions

View File

@ -49,7 +49,7 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://cd-cynosdbmysql-grp-9rqrhxsm.sql.tencentcdb.com:27981/yanzhu_jh_test?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8
url: jdbc:mysql://cd-cynosdbmysql-grp-9rqrhxsm.sql.tencentcdb.com:27981/yanzhu_jh_test_2024?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: Sxyanzhu@cf
# 从库数据源

View File

@ -41,11 +41,7 @@ public class BgWorkFileController extends BaseController {
*/
@GetMapping("/getWorkFileList")
public TableDataInfo getWorkFileList(String fileBelong,long deptId){
String key="bgscreen_workfile_getWorkFileList_"+fileBelong+"-"+deptId;
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
WorkFile workFile = new WorkFile();
workFile.setFileBelong(fileBelong);
workFile.setDeptId(deptId);
@ -56,7 +52,6 @@ public class BgWorkFileController extends BaseController {
}
clearPage();
List<WorkFile> list = workFileService.selectWorkFileListLimit20(workFile);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -41,11 +41,6 @@ public class BgWorkTrainController extends BaseController {
*/
@GetMapping("/getWorkTrainList")
public TableDataInfo getWorkTrainList(String trainType,String deptId,String projectId,String proType){
String key="bgscreen_workTrain_getWorkTrainList_"+trainType+"-"+deptId+"-"+projectId+"-"+proType;
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
WorkTrain workTrain = new WorkTrain();
workTrain.setTrainType(trainType);
if(deptId!=null && !"0".equals(deptId)){
@ -62,7 +57,6 @@ public class BgWorkTrainController extends BaseController {
workTrain.setProType(projectId);
}
List<WorkTrain> list = workTrainService.selectBgscreenWorkTrainListv2(workTrain);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}
@ -114,18 +108,11 @@ public class BgWorkTrainController extends BaseController {
where.setPrjIds(getProjectIds());
}
}
String key="bgscreen_workTrain_queryWorkTrainList_"+pageNum+"-"+pageSize+"-"+where.getDeptId()+"-"+where.getProjectId()+"-"+where.getTrainType()+"-"+where.getDataType()+"-"+where.getProType()+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
if(StringUtils.isEmpty(where.getProType()) || "0".equals(where.getProType())){
where.setProType(null);
}
startPage();
List<WorkTrain> list=workTrainService.queryWorkTrainList(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -124,15 +124,8 @@ public class FloweController extends BaseController {
where.setPrjIds(getProjectIds());
}
}
String key="bgscreen_flow_listByUnit_"+pageNum+"-"+pageSize+"-"+where.getDeptId()+"_"+where.getProjectId()+"_"+where.getProType()+"_"+where.getTaskId()+"_"+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
startPage();
List<FlowTaskEntity> list=flowBusinessKeyService.listByUnit(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}
@ -146,14 +139,9 @@ public class FloweController extends BaseController {
where.setPrjIds(getProjectIds());
}
}
String key="bgscreen_flow_listByCategory_"+pageNum+"-"+pageSize+"-"+where.getDeptId()+"_"+where.getProjectId()+"_"+where.getProType()+"_"+where.getCategory()+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
startPage();
List<FlowTaskEntity> list=flowBusinessKeyService.listByCategory(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}
@ -167,14 +155,8 @@ public class FloweController extends BaseController {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
String key="bgscreen_flow_listByState_"+pageNum+"-"+pageSize+"-"+where.getDeptId()+"_"+where.getProjectId()+"_"+where.getProType()+"_"+where.getTaskId()+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
startPage();
List<FlowTaskEntity> list=flowBusinessKeyService.listByState(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -39,13 +39,7 @@ public class JournalismConller extends BaseController {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
String key="bgscreen_journalism_getJournalismList_"+pageNum+"-"+pageSize;
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
List<WorkJournalism> list = workJournalismService.selectBgscreenWorkJournalismList();
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -182,15 +182,8 @@ public class ProjectAttendanceController extends BaseController {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
String key="bgscreen_attendance_workerOnDuty-"+pageNum+"-"+pageSize+"-"+where.getId()+"-"+where.getDeptId()+"_"+where.getProjectId()+"_"+where.getProType()+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
startPage();
List<SurProjectAttendanceUser> list=attendanceUserService.queryWorkerOnDuty(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}
@ -230,16 +223,10 @@ public class ProjectAttendanceController extends BaseController {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
String key="bgscreen_attendance_todayAttendance-"+pageNum+"-"+pageSize+"-"+where.getId()+"-"+where.getDeptId()+"_"+where.getProjectId()+"_"+where.getProType()+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
startPage();
where.setAttendanceTime(DateUtil.formatDate(DateTime.now()));
List<SurProjectAttendanceData> list = attendanceDataService.todayAttendance(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -80,7 +80,7 @@ public class ProjectBuildNodeController extends BaseController {
*/
@PostMapping("/selectCurrent")
public AjaxResult selectCurrent(@RequestBody SurProjectBuildNodeData where){
String key="bgscreen_projectBuildNode_selectCurrent_"+where.getProjectId();
String key="bgscreen_projectBuildNode_selectCurrent_"+where.getProjectId()+"-"+where.getProType()+ Md5Utils.hash(where.getPrjIds());
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);
@ -97,12 +97,12 @@ public class ProjectBuildNodeController extends BaseController {
*/
@GetMapping("/listByProject")
public AjaxResult listByProject(long projectId){
String key="bgscreen_projectBuildNode_listByProject_"+projectId;
SurProjectBuildNodeData surProjectBuildNodeData=new SurProjectBuildNodeData();
String key="bgscreen_projectBuildNode_listByProject_"+projectId+"-"+surProjectBuildNodeData.getProType()+ Md5Utils.hash(surProjectBuildNodeData.getPrjIds());
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);
}
SurProjectBuildNodeData surProjectBuildNodeData=new SurProjectBuildNodeData();
surProjectBuildNodeData.setProjectId(projectId);
List list=surProjectBuildNodeDataService.selectSurProjectBuildNodeDataList(surProjectBuildNodeData);
if(list.size()>0){

View File

@ -179,18 +179,11 @@ public class ProjectCheckingController extends BaseController {
where.setPrjIds(getProjectIds());
}
}
String key="bgscreen_projectChecking_groupCheckingByProjectId_"+pageNum+"-"+pageSize+"_"+where.getDeptId()
+"_"+where.getProjectDeptId()+"_"+where.getProjectId()+"_"+where.getProType()+Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
if(projectId!=null && projectId.equals(0)){
where.setProjectId(Convert.toLong(projectId));
}
startPage();
List<SurProjectChecking> list = surProjectCheckingService.selectBgscreenProjectCheckingListByPage(where);
//redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}
}

View File

@ -59,12 +59,6 @@ public class ProjectController extends BaseController {
surProject.setDeptId(deptId);
}
List<SurProject> list=isurProjectService.selectSurProjectList(surProject);
//for (SurProject p :list){
//DateTime dt1= DateUtil.parse(p.getScheduledStartTime());
//DateTime dt2=DateUtil.parse(p.getPlannedCompletionTime());
//long days= DateUtil.between(dt1,dt2, DateUnit.DAY);
//p.setProjectTimeLimit(days);
//}
return success(list);
}
@ -95,7 +89,7 @@ public class ProjectController extends BaseController {
}else{
where.setDeptId(deptId);
}
String key="bgscreen_prj_getProgressProjects_"+deptId+"_"+ Md5Utils.hash(where.getPrjIds());
String key="bgscreen_prj_getProgressProjects_"+deptId+"_"+ Md5Utils.hash(where.getPrjIds())+where.getProType();
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return success(obj);

View File

@ -3,6 +3,7 @@ package com.yanzhu.jh.bigscreen.web.controller;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.yanzhu.jh.project.domain.SurProjectCostOutput;
import com.yanzhu.jh.project.service.ISurProjectCostOutputService;
import com.yanzhu.jh.project.service.ISurProjectService;
@ -27,7 +28,7 @@ public class ProjectCostOutputController {
@PostMapping("/selectYearAndMonth")
public AjaxResult selectYearAndMonth(@RequestBody SurProjectCostOutput where){
String key="bgscreen_costOut_selectYearAndMonth_"+where.getYear()+"-"+where.getMonth()+"-"+where.getProjectId();
String key="bgscreen_costOut_selectYearAndMonth_"+where.getYear()+"-"+where.getMonth()+"-"+where.getProjectId()+"-"+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);
@ -43,7 +44,7 @@ public class ProjectCostOutputController {
@PostMapping("/sumByDeptId")
public AjaxResult sumByDeptId(@RequestBody SurProjectCostOutput where){
String key="bgscreen_costOut_sumByDeptId_"+where.getYear()+"-"+where.getMonth()+"-"+where.getId()+"-"+where.getProjectId()+"_"+where.getProType();
String key="bgscreen_costOut_sumByDeptId_"+where.getYear()+"-"+where.getMonth()+"-"+where.getId()+"-"+where.getProjectId()+"_"+"-"+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);

View File

@ -49,16 +49,10 @@ public class ProjectInsuranceController extends BaseController {
surProjectInsurance.setPrjIds(getProjectIds());
}
}
String key="bgscreen_insurance_getProjectInsuranceList_"+deptId+"-"+projectId+"_"+surProjectInsurance.getProType()+"_"+surProjectInsurance.getNowDept()+"_"+Md5Utils.hash(surProjectInsurance.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
if(projectId!=null && !"0".equals(projectId)){
surProjectInsurance.setProjectId(Convert.toLong(projectId));
}
List<Map<String,Object>> list = surProjectInsuranceService.selectBgscreenInsuranceList(surProjectInsurance);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -80,14 +80,8 @@ public class ProjectMaterialSealController extends BaseController {
where.setPrjIds(getProjectIds());
}
}
String key="bgscreen_materialSeal_selectTop12Month_"+pageNum+"_"+pageSize+"_"+where.getDeptId()+"-"+where.getProjectId()+"_"+where.getProType()+"_"+ Md5Utils.hash(where.getPrjIds());
List<Object> objs=redisCache.getCacheObject(key);
if(objs!=null){
return getDataTable(objs);
}
startPage();
List<SurProjectMaterialSeal> list=materialSealService.selectTop12Month(where);
redisCache.setCacheObject(key, list, Constants.BIGSCREEN_QUERY_CACHE, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -4,6 +4,7 @@ import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.yanzhu.jh.video.domain.SurProjectPhotography;
import com.yanzhu.jh.video.service.ISurProjectPhotographyService;
import org.springframework.beans.factory.annotation.Autowired;
@ -27,7 +28,7 @@ public class ProjectPhotographyController extends BaseController {
public AjaxResult listPhotography(long projectId){
SurProjectPhotography where =new SurProjectPhotography();
where.setProjectId(projectId);
String key="bgscreen_photography_listPhotography_"+where.getProjectId();
String key="bgscreen_photography_listPhotography_"+where.getProjectId()+"-"+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());;
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);
@ -42,7 +43,7 @@ public class ProjectPhotographyController extends BaseController {
SurProjectPhotography where =new SurProjectPhotography();
where.setProjectId(projectId);
where.setIsDel(0l);
String key="bgscreen_selectLastPhotography_listPhotography_"+where.getProjectId();
String key="bgscreen_selectLastPhotography_listPhotography_"+where.getProjectId()+"-"+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());;
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);

View File

@ -3,6 +3,7 @@ package com.yanzhu.jh.bigscreen.web.controller;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.yanzhu.jh.project.domain.SurProjectPlan;
import com.yanzhu.jh.project.service.ISurProjectPlanService;
import org.springframework.beans.factory.annotation.Autowired;
@ -24,13 +25,13 @@ public class ProjectPlanController {
private RedisCache redisCache;
@GetMapping("/listAll/{type}")
public AjaxResult listAll(@PathVariable("type") Long type){
String key="bgscreen_projectPlan_listAll_"+type;
SurProjectPlan where=new SurProjectPlan();
String key="bgscreen_projectPlan_listAll_"+type+"-"+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());;
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);
}
SurProjectPlan where=new SurProjectPlan();
where.setPlanType(type);
where.setIsDel(0l);
List<SurProjectPlan> list = surProjectPlanService.selectSurProjectPlanList(where);

View File

@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.yanzhu.jh.project.domain.SurProjectSchedule;
import com.yanzhu.jh.project.domain.vo.SurProjectScheduleWhere;
import com.yanzhu.jh.project.service.ISurProjectScheduleService;
@ -54,7 +55,7 @@ public class ProjectScheduleController extends BaseController {
@GetMapping("/selectByProjectType")
public AjaxResult selectByProjectType(Long type,Long deptId){
SurProjectScheduleWhere where =new SurProjectScheduleWhere();
String key="bgscreen_schedule_selectByProjectType_"+type+"_"+deptId+"_"+where.getProType();
String key="bgscreen_schedule_selectByProjectType_"+type+"_"+deptId+"_"+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);

View File

@ -32,7 +32,7 @@ public class ProjectStandardController extends BaseController {
where.setProjectId(projectId);
where.setIsDel(0l);
String key="bgscreen_standard_getList_"+projectId+where.getProType();
String key="bgscreen_standard_getList_"+projectId+where.getProType()+"-"+ Md5Utils.hash(where.getPrjIds());
Object obj=redisCache.getCacheObject(key);
if(obj!=null){
return AjaxResult.success(obj);

View File

@ -138,8 +138,8 @@ public class AttendanceJgwTask {
String appid="6a6f24fe35b04ee0bcf31cfb46ed1051";
String secret="c3h5enh4MjAyNHN1Yw==";
//String prjId="db955e11ef774e63968a47c3dc2acc15";//"b67f1baa6dca4558a16bf90a4681b82e";//
String prjId="e66a49d5550c49ffb030c49b84ccf8ea";//泾河新城荟锦坊二期
String phone="18392322772";
String prjId="50aa6b502c2e451ea8fcd411db6f693f";//泾河新城荟锦坊二期
String phone="15102901492";
String token= getToken(appid,secret);
if(token==null || token.length()==0){
return;
@ -152,9 +152,9 @@ public class AttendanceJgwTask {
//findWorkerByLeader(appid,token,leaderTeamId);
//findDirectlyUnderTeam(appid,token,prjId,subcontractorId,0);
//queryProject(appid,token,phone,0);;
//findAddWorkerByProject(appid,token,prjId,0);
findAddWorkerByProject(appid,token,prjId,0);
//findUpdateWorkerByProject(appid,token,prjId,0);
findAttendanceByProject(appid,token,prjId);
//findAttendanceByProject(appid,token,prjId);
//findTeamByProjectId(appid,token,prjId);
//findProContractorByProjectId(appid,token,prjId);
//getJobTypeData(appid,token,"0");
@ -582,7 +582,7 @@ public class AttendanceJgwTask {
cnt++;
}
SurProjectAttendanceUser user=SurProjectAttendanceUser.createFromJgw(json);
if(user.getName().equals("王利")){
if(user.getName().equals("赵峰")){
String k=user.getName();
JSONArray arr2= json.getJSONArray("corpName");
Object o=arr2.get(0);

View File

@ -1,9 +1,14 @@
package com.yanzhu.jh.project.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.redis.RedisCache;
import com.yanzhu.jh.base.domain.SysNative;
import com.yanzhu.jh.base.service.ISysNativeService;
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
import com.yanzhu.jh.project.domain.SurProjectAttendanceData;
import com.yanzhu.jh.project.domain.SurProjectAttendanceGroup;
@ -23,6 +28,7 @@ import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Component("attendanceTask")
@ -39,6 +45,39 @@ public class AttendanceTask {
@Autowired
ISurProjectAttendanceGroupService attendanceGroupService;
@Autowired
private RedisCache redisCache;
@Autowired
private ISysNativeService sysNativeService;
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;
}
public void syncWorker(){
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
where.setEnabled(1l);
@ -138,6 +177,18 @@ public class AttendanceTask {
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceUser user=SurProjectAttendanceUser.create(json);
String idNumber=json.getString("identification");//身份证
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){
}
}
user.setVendorsCode(it.getVendorsCode());
user.setCfgid(it.getId());
user.setAppId(appid);

View File

@ -106,8 +106,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSurProjectAttendanceUserList" parameterType="SurProjectAttendanceUser" resultMap="SurProjectAttendanceUserResult">
SELECT * FROM (
SELECT a.*,b.project_id,b.sub_dept_id,g.companyTypeId
FROM sur_project_attendance_user a,sur_project_attendance_cfg b,sur_project_attendance_group g
WHERE a.cfgid=b.id and a.companyId=g.companyId and g.id in(select min(id) from sur_project_attendance_group group by companyid)
FROM sur_project_attendance_user a,sur_project_attendance_cfg b,view_sur_project_attendance_group g
WHERE a.cfgid=b.id and a.companyId=g.companyId and g.id in(select min(id) from view_sur_project_attendance_group group by companyid)
)
sur_project_attendance_user
<where>