dev_xd
姜玉琦 2025-05-20 19:49:37 +08:00
commit 06ceddbd15
22 changed files with 709 additions and 22 deletions

View File

@ -4,10 +4,24 @@
<el-col :span="8" style="margin-left:20px;width:calc(33.33% - 20px);">
<div class="head-title-tab">
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)" v-if="1==2"></div>
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="doNav(2)"></div>
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)"></div>
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="doNav(2)" v-if="1==2"></div>
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)" v-if="1==2"></div>
<div :class="(nav >= 100 && nav < 200) || nav == 1 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div>项目概况</div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 101 ? 'active' : ''" class="sub-btn" @click="doNav(101)"></button>
<button type="button" :class="nav == 102 ? 'active' : ''" class="sub-btn" @click="doNav(102)"></button>
</div>
</div>
</div>
</div>
<div :class="(nav >= 300 && nav < 400) || nav == 3 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div @click="doNav(3)"></div>
<div>安全管</div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style>
@ -32,7 +46,7 @@
</div>
</div>
<div :class="(nav >= 400 && nav < 500) || nav == 4 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div @click="doNav(4)"></div>
<div>质量管</div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style>
@ -50,7 +64,7 @@
</div>
</div>
<div :class="(nav >= 500 && nav < 600) || nav == 5 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div @click="doNav(5)"></div>
<div>进度管</div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style>
@ -179,11 +193,11 @@ export default {
case 1:
this.$router.push('/index')
break
case 2:
case 101:
this.$router.push('/detail')
break
case 3:
this.$router.push('/prjSafety')
//this.$router.push('/prjSafety')
break
case 309:
this.$router.push('/videoMonitor')
@ -204,15 +218,15 @@ export default {
this.$router.push('/aiWarning')
break
case 4:
this.$router.push('/prjQuality')
//this.$router.push('/prjQuality')
break
case 5:
this.$router.push('/prjProgress')
//this.$router.push('/prjProgress')
break
case 6:
this.$router.push('/greenCarbon')
break
case 7:
case 102:
this.$router.push('/labor')
break
case 501:

View File

@ -14,14 +14,14 @@ const routes = [
{
path: "/detail",
name: "detail",
meta: { nav: 2 },
meta: { nav: 101 },
component: () =>
import(/* webpackChunkName: "detail" */ "../views/projectDetail.vue"),
},
{
path: "/labor",
name: "labor",
meta: { nav: 7 },
meta: { nav: 102 },
component: () =>
import(/* webpackChunkName: "labor" */ "../views/projectLabor.vue"),
},

View File

@ -542,7 +542,7 @@ export default {
},
mounted() {
window.detailApp = this
this.$store.dispatch('ChangeNav', 2)
this.$store.dispatch('ChangeNav', 101)
this.$bus.$on(
'projectChange',
debounce((prj) => {

View File

@ -532,7 +532,7 @@ export default {
},
},
mounted() {
this.$store.dispatch('ChangeNav', 7)
this.$store.dispatch('ChangeNav', 102)
this.$bus.$on(
'projectChange',
debounce((prj) => {

View File

@ -1,9 +1,11 @@
package com.yanzhu.manage.mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.yanzhu.manage.domain.AttendanceUbiData;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -78,4 +80,19 @@ public interface AttendanceUbiDataMapper
*/
List<Map<String,Object>> statsAttendanceView(AttendanceUbiData where);
/**
*
* @param prjId ID
* @param dateStart (7)
* @param dateEnd ()
* @return
*/
List<AttendanceUbiData> groupAttendanceLastWeek(@Param("prjId") Long prjId,@Param("dateStart") Date dateStart,@Param("dateEnd") Date dateEnd);
/**
*
* @param prjId
* @return
*/
List<AttendanceUbiData> getRealAttendance(@Param("prjId") Long prjId);
}

View File

@ -170,4 +170,25 @@ public interface ProProjectInfoSubdeptsUsersMapper
* @return
*/
public List<Map<String,Object>> fileGroupLeaderUsers(@Param("subDeptId")Long subDeptId, @Param("craftPost")String craftPost);
/**
*
* @param projectId
* @return
*/
List<ProProjectInfoSubdeptsUsers> groupWorkderNative(@Param("projectId") Long projectId);
/**
*
* @param projectId
* @return
*/
List<ProProjectInfoSubdeptsUsers> getWorkerCountGroupByType(@Param("projectId") Long projectId);
/**
*
* @param prjId
* @return
*/
List<ProProjectInfoSubdeptsUsers> getAttendanceAlert(@Param("projectId")Long prjId);
}

View File

@ -3,6 +3,7 @@ package com.yanzhu.manage.mapper;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -136,4 +137,21 @@ public interface SurProjectAttendanceDataMapper
List<SurProjectAttendanceData> selectSurProjectAttendanceDataListByMonth(SurProjectAttendanceData attWhere);
List<SurProjectAttendanceData> selectSurProjectAttendanceDataListByDate(SurProjectAttendanceData attWhere);
/**
*
* @param prjId ID
* @param dateStart (7)
* @param dateEnd ()
* @return
*/
List<SurProjectAttendanceData> groupAttendanceLastWeek(@Param("prjId") Long prjId,@Param("dateStart") Date dateStart,@Param("dateEnd") Date dateEnd,@Param("year") int year);
/**
*
* @param prjId
* @param year
* @return
*/
List<SurProjectAttendanceData> getRealAttendance(@Param("prjId") Long prjId,@Param("year") int year);
}

View File

@ -2,8 +2,10 @@ package com.yanzhu.manage.mapper;
import com.yanzhu.manage.domain.AttendanceCfg;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import com.yanzhu.manage.domain.SurProjectAttendanceUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -167,4 +169,25 @@ public interface SurProjectAttendanceUserMapper
*/
List<SurProjectAttendanceUser> queryWorkerByState(SurProjectAttendanceUser where);
/**
*
* @param projectId
* @return
*/
List<SurProjectAttendanceUser> groupWorkderNative(@Param("projectId") Long projectId);
/**
*
* @param prjId
* @return
*/
List<SurProjectAttendanceUser> getWorkerCountGroupByType(@Param("projectId")Long prjId);
/**
*
* @param prjId
* @param year
* @return
*/
List<SurProjectAttendanceUser> getAttendanceAlert(@Param("projectId")Long prjId, @Param("year")int year);
}

View File

@ -249,4 +249,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)days
</select>
<select id="groupAttendanceLastWeek" resultMap="AttendanceUbiDataResult">
SELECT dt comName, count(1) comId
from (SELECT DISTINCT userid, date (ifnull(inTime, outTime)) dt from attendance_ubi_data
where is_del!=1
and projectid=#{prjId}
AND (date (inTime) &gt;= date (#{dateStart})
or date (outTime) &gt;= date (#{dateStart}))
AND (date (inTime) &lt;= date (#{dateEnd})
or date (outTime) &lt;= date (#{dateEnd}))
) tmp
GROUP BY dt
</select>
<select id="getRealAttendance" resultMap="AttendanceUbiDataResult">
<include refid="selectAttendanceUbiDataVo"/>
where
is_del!=1
and projectid=#{prjId}
and date(inTime)=date(now()) or date(outTime)=date(now())
order by ifnull(inTime,outTime) DESC
LIMIT 4
</select>
</mapper>

View File

@ -420,4 +420,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</select>
<select id="groupWorkderNative" resultMap="ProProjectInfoSubdeptsUsersResult">
select psu.card_code cardCode,nav.address comName
from pro_project_info_subdepts_users psu
left join sys_native nav on left(psu.card_code,6)=nav.id
where psu.project_id = #{projectId}
and psu.user_post != '66'
and psu.approve_status >= 100
and psu.is_del != 2
</select>
<select id="getWorkerCountGroupByType" resultMap="ProProjectInfoSubdeptsUsersResult">
select dic2.dict_label as craft_post_name,
count(1) comId
from pro_project_info_subdepts_users psu
join sys_dict_data dic2 on psu.`craft_post` = dic2.`dict_value` and dic2.`dict_type` = 'pro_craft_post'
where psu.is_del!=2
and psu.project_id=#{projectId}
GROUP BY dic2.dict_label
order by count(1) desc
</select>
<select id="getAttendanceAlert" resultMap="ProProjectInfoSubdeptsUsersResult">
select us.*,TIMESTAMPDIFF(Day, att.dt,now()) com_id from (
SELECT
psu.id, psu.par_id,psu.project_id, pi.project_name, psu.sub_dept_id, psu.sub_dept_type,
pdept.sub_dept_name, psu.sub_dept_group_name, psu.user_name
from pro_project_info_subdepts_users psu
left join pro_project_info pi on pi.id = psu.project_id
join pro_project_info_subdepts pdept on psu.sub_dept_id=pdept.id
where psu.is_del!=2 and psu.use_status=0 and psu.project_id=#{projectId}
) us
join (
select userId,max(ifnull(inTime,outTime)) dt from attendance_ubi_data
where projectid=#{projectId} and is_del!=1
group by userId
order by max(ifnull(inTime,outTime)) ) att on us.id=att.userId
</select>
</mapper>

View File

@ -641,11 +641,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select '3' as type, DATE_FORMAT(days.attendanceTime, '%m-%d') as attendanceTime,days.total from(
select date(d.attendance_time) as attendanceTime, DATE_FORMAT(d.attendance_time, '%m-%d'),count(1) as total from sur_project_attendance_data_${year} d
where d.cfgid in (select cfg.id from attendance_cfg cfg where cfg.project_id=#{projectId} and cfg.is_del=0)
and d.is_del=0
and d.is_del=0 and state=0
and date(d.attendance_time) between #{attendanceTime} and #{attendanceOutTime}
group by date(d.attendance_time)
order by date(d.attendance_time)
)days
</select>
<select id="groupAttendanceLastWeek" resultMap="SurProjectAttendanceDataResult">
SELECT dt deptName,count(1) deptId
from (
select DISTINCT workerId, date(ifnull(attendance_time,attendance_out_time)) dt
from sur_project_attendance_data_${year} where
is_del !=1 and state=0
and projectid=#{prjId}
AND (date(attendance_time) &gt;= date(#{dateStart}) or date(attendance_out_time) &gt;= date(#{dateStart}))
AND (date(attendance_time) &lt;= date(#{dateEnd}) or date(attendance_out_time) &lt;= date(#{dateEnd}))
) tmp
group by dt
</select>
<select id="getRealAttendance" resultMap="SurProjectAttendanceDataResult">
select * from sur_project_attendance_data_${year}
where date(attendance_time)=date(now()) or date(attendance_out_time)=date(now())
and is_del!=1
and projectid=#{prjId} and state=0
order by ifnull(attendance_time,attendance_out_time) DESC
LIMIT 4
</select>
</mapper>

View File

@ -809,4 +809,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="groupWorkderNative" resultMap="SurProjectAttendanceUserResult">
select birthDate,nativePlace
from sur_project_attendance_user
where cfgid in (select id from attendance_cfg where project_id= #{projectId}) and is_del!=1 and state=0
</select>
<select id="getWorkerCountGroupByType" resultMap="SurProjectAttendanceUserResult">
select workTypeName,count(1) id from sur_project_attendance_user
where cfgid in (select id from attendance_cfg where project_id= #{projectId}) and is_del!=1 and state=0
group by workTypeName
order by count(1) DESC
</select>
<select id="getAttendanceAlert" resultMap="SurProjectAttendanceUserResult">
select u.*,TIMESTAMPDIFF(Day, att.dt,now()) id
from (
select su.workerId,su.name,pi.project_name companyName, pdept.sub_dept_name teamName
from sur_project_attendance_user su
left join attendance_cfg cfg on su.cfgId=cfg.ID
left join pro_project_info pi on pi.id = cfg.project_id
join pro_project_info_subdepts pdept on cfg.dept_id=pdept.id
where
su.is_del!=1 and su.state=0
and cfg.project_id=#{projectId} ) u
join
(
select workerId,max(ifnull(attendance_time,attendance_out_time)) dt
from sur_project_attendance_data_${year}
where projectid=#{projectId} and is_del!=1
GROUP BY workerId
order by max(ifnull(attendance_time,attendance_out_time))
) att on u.workerId=att.workerId
</select>
</mapper>

View File

@ -0,0 +1,122 @@
package com.yanzhu.manage.controller.bigscreen;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.common.core.web.controller.BaseController;
import com.yanzhu.common.core.web.domain.AjaxResult;
import com.yanzhu.manage.domain.AttendanceUbiData;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import com.yanzhu.manage.domain.SurProjectAttendanceUser;
import com.yanzhu.manage.service.IAttendanceUbiDataService;
import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService;
import com.yanzhu.manage.service.ISurProjectAttendanceDataService;
import com.yanzhu.manage.service.ISurProjectAttendanceUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
* -
*/
@RestController
@RequestMapping("/bgscreen/tower")
public class LaborController extends BaseController {
@Autowired
ISurProjectAttendanceUserService surProjectAttendanceUserService;
@Autowired
IAttendanceUbiDataService attendanceUbiDataService;
@Autowired
IProProjectInfoSubdeptsUsersService proProjectInfoSubdeptsUsersService;
@Autowired
ISurProjectAttendanceDataService surProjectAttendanceDataService;
/**
*
* @return
*/
@GetMapping("/groupByWorker/{type}/{prjId}")
public AjaxResult groupByWorker(@PathVariable("type")String type, @PathVariable("prjId") Long prjId){
if("uni".equals(type.toLowerCase())){
JSONObject pList=proProjectInfoSubdeptsUsersService.groupWorkderNative(prjId);
return AjaxResult.success(pList);
}else{
JSONObject sList=surProjectAttendanceUserService.groupWorkderNative(prjId);
return AjaxResult.success(sList);
}
}
/**
*
*/
@GetMapping("/groupAttendanceLastWeek/{type}/{prjId}")
public AjaxResult groupAttendanceLastWeek(@PathVariable("type")String type, @PathVariable("prjId") Long prjId){
Date dateEnd=new DateTime();
Date dateStart=DateUtil.offsetDay(dateEnd,7);
if("uni".equals(type.toLowerCase())){
JSONArray sList=attendanceUbiDataService.groupAttendanceLastWeek(prjId,dateStart,dateEnd);
return AjaxResult.success(sList);
}else{
JSONArray pList=surProjectAttendanceDataService.groupAttendanceLastWeek(prjId,dateStart,dateEnd,DateUtil.year(dateEnd));
return AjaxResult.success(pList);
}
}
/**
*
*/
@GetMapping("/getWorkerCountGroupByType/{type}/{prjId}")
public AjaxResult getWorkerCountGroupByType(@PathVariable("type")String type, @PathVariable("prjId") Long prjId){
if("uni".equals(type.toLowerCase())){
List<ProProjectInfoSubdeptsUsers> sList=proProjectInfoSubdeptsUsersService.getWorkerCountGroupByType(prjId);
return AjaxResult.success(sList);
}else{
List<SurProjectAttendanceUser> pList=surProjectAttendanceUserService.getWorkerCountGroupByType(prjId);
return AjaxResult.success(pList);
}
}
/**
*
*/
@GetMapping("/getRealAttendance/{type}/{prjId}")
public AjaxResult getRealAttendance(@PathVariable("type")String type, @PathVariable("prjId") Long prjId){
if("uni".equals(type.toLowerCase())){
List<AttendanceUbiData> sList=attendanceUbiDataService.getRealAttendance(prjId);
return AjaxResult.success(sList);
}else{
Date dateEnd=new DateTime();
List<SurProjectAttendanceData> pList=surProjectAttendanceDataService.getRealAttendance(prjId,DateUtil.year(dateEnd));
return AjaxResult.success(pList);
}
}
/**
*
*/
@GetMapping("/getAttendanceAlert/{type}/{prjId}")
public AjaxResult getAttendanceAlert(@PathVariable("type")String type, @PathVariable("prjId") Long prjId){
if("uni".equals(type.toLowerCase())){
List<ProProjectInfoSubdeptsUsers> sList=proProjectInfoSubdeptsUsersService.getAttendanceAlert(prjId);
return AjaxResult.success(sList);
}else{
Date dateEnd=new DateTime();
List<SurProjectAttendanceUser> pList=surProjectAttendanceUserService.getAttendanceAlert(prjId,DateUtil.year(dateEnd));
return AjaxResult.success(pList);
}
}
}

View File

@ -4,7 +4,10 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.manage.domain.AttendanceUbiData;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
/**
* Service
@ -97,4 +100,20 @@ public interface IAttendanceUbiDataService
*/
List<AttendanceUbiData> findUsersAttendanceView(Long proId);
/**
*
* @param prjId ID
* @param dateStart (7)
* @param dateEnd ()
* @return
*/
JSONArray groupAttendanceLastWeek(Long prjId, Date dateStart, Date dateEnd);
/**
*
* @param prjId
* @return
*/
List<AttendanceUbiData> getRealAttendance(Long prjId);
}

View File

@ -1,5 +1,6 @@
package com.yanzhu.manage.service;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.domain.SignetFileVo;
@ -7,7 +8,7 @@ import java.util.List;
import java.util.Map;
/**
* Service
* Service
*
* @author JiangYuQi
* @date 2024-08-25
@ -238,4 +239,25 @@ public interface IProProjectInfoSubdeptsUsersService
* @return
*/
List<Map<String,Object>> fileGroupLeaderUsers(Long subDeptId,String craftPost);
/**
*
* @param prjId
* @return
*/
JSONObject groupWorkderNative(Long prjId);
/**
*
* @param prjId
* @return
*/
List<ProProjectInfoSubdeptsUsers> getWorkerCountGroupByType(Long prjId);
/**
*
* @param prjId
* @return
*/
List<ProProjectInfoSubdeptsUsers> getAttendanceAlert(Long prjId);
}

View File

@ -1,8 +1,11 @@
package com.yanzhu.manage.service;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -137,4 +140,21 @@ public interface ISurProjectAttendanceDataService
List<SurProjectAttendanceData> selectSurProjectAttendanceDataListByMonth(SurProjectAttendanceData attWhere);
List<SurProjectAttendanceData> selectSurProjectAttendanceDataListByDate(SurProjectAttendanceData attWhere);
/**
*
* @param prjId ID
* @param dateStart (7)
* @param dateEnd ()
* @return
*/
JSONArray groupAttendanceLastWeek(Long prjId, Date dateStart, Date dateEnd, int year);
/**
*
* @param prjId
* @param year
* @return
*/
List<SurProjectAttendanceData> getRealAttendance(Long prjId, int year);
}

View File

@ -1,5 +1,7 @@
package com.yanzhu.manage.service;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import com.yanzhu.manage.domain.SurProjectAttendanceUser;
@ -159,4 +161,26 @@ public interface ISurProjectAttendanceUserService
* @return
*/
List<SurProjectAttendanceUser> queryWorkerByState(SurProjectAttendanceUser where);
/**
*
* @param prjId
* @return
*/
JSONObject groupWorkderNative(Long prjId);
/**
*
* @param prjId
* @return
*/
List<SurProjectAttendanceUser> getWorkerCountGroupByType(Long prjId);
/**
*
* @param prjId
* @param year
* @return
*/
List<SurProjectAttendanceUser> getAttendanceAlert(Long prjId, int year);
}

View File

@ -1,8 +1,11 @@
package com.yanzhu.manage.service.impl;
import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.common.core.context.SecurityContextHolder;
import com.yanzhu.common.core.enums.ShiFouEnums;
import com.yanzhu.common.core.enums.UserTypeEnums;
@ -11,6 +14,7 @@ import com.yanzhu.common.core.utils.StringUtils;
import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.manage.domain.AttendanceUbiData;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import com.yanzhu.manage.enums.SubDeptsEnums;
import com.yanzhu.manage.enums.UserPostEnums;
import com.yanzhu.manage.mapper.AttendanceUbiDataMapper;
@ -274,4 +278,46 @@ public class AttendanceUbiDataServiceImpl implements IAttendanceUbiDataService
attendanceQuery.setIsDel(ShiFouEnums.FOU.getCode());
return attendanceUbiDataMapper.selectAttendanceUbiDataList(attendanceQuery);
}
/**
*
* @param prjId ID
* @param dateStart (7)
* @param dateEnd ()
* @return
*/
@Override
public JSONArray groupAttendanceLastWeek(Long prjId, Date dateStart, Date dateEnd) {
List<AttendanceUbiData> list=attendanceUbiDataMapper.groupAttendanceLastWeek(prjId,dateStart,dateEnd);
JSONArray jArr = new JSONArray();
for(int i=0;i<7;i++){
String dt=DateUtil.format(DateUtil.offsetDay(dateStart,1*i),"yyyy-MM-dd");
List<AttendanceUbiData> sub=list.stream().filter(item->item.getComName().equals(dt)).collect(Collectors.toList());
JSONObject jo=new JSONObject();
jo.put("dt",dt);
if(sub.size()>0){
Long cnt=sub.get(0).getComId();
if(cnt!=null){
jo.put("cnt",cnt);
}
}
if(!jo.containsKey("cnt")){
jo.put("cnt",0);
}
jArr.add(jo);
}
return jArr;
}
/**
*
* @param prjId
* @return
*/
@Override
public List<AttendanceUbiData> getRealAttendance(Long prjId) {
return attendanceUbiDataMapper.getRealAttendance(prjId);
}
}

View File

@ -1,7 +1,10 @@
package com.yanzhu.manage.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.common.core.constant.SecurityConstants;
import com.yanzhu.common.core.enums.*;
import com.yanzhu.common.core.exception.ServiceException;
@ -35,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
/**
* Service
@ -1694,4 +1698,84 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
return proProjectInfoSubdeptsUsersMapper.fileGroupLeaderUsers(subDeptId,craftPost);
}
/**
*
* @param prjId
* @return
*/
@Override
public JSONObject groupWorkderNative(Long prjId) {
List<ProProjectInfoSubdeptsUsers> list=proProjectInfoSubdeptsUsersMapper.groupWorkderNative(prjId);
list.stream().forEach(d->{
String nav=d.getComName();
if(nav.contains("省")){
nav=nav.substring(0,nav.indexOf("省"));
}
if(nav.contains("市")){
nav=nav.substring(0,nav.indexOf("市"));
}
if(nav.contains("区")){
nav=nav.substring(0,nav.indexOf("区"));
}
d.setComName(nav);
String code=d.getCardCode();
if(StringUtils.isNotEmpty(code) && code.length()>=10){
String strY=code.substring(6-10);
if(NumberUtil.isNumber(strY)){
int y=DateUtils.calculatedAgeByBirthDay(strY+"-1-1");
// 1.18-30 2.30-40 3.40-55 4.55
if(y>=18 && y<30){
d.setId(1L);
}else if(y>=30 && y<40){
d.setId(2L);
}else if(y>=40 && y<55){
d.setId(3L);
}else{
d.setId(4L);
}
}
}
});
Map<String,List<ProProjectInfoSubdeptsUsers>> subMap= list.stream().collect(Collectors.groupingBy(ProProjectInfoSubdeptsUsers::getComName));
JSONObject joOut=new JSONObject();
JSONArray arrNav=new JSONArray();
subMap.forEach((k,v)->{
JSONObject jo=new JSONObject();
jo.put("nativePlace",k);
jo.put("count",v.size());
arrNav.add(jo);
});
joOut.put("native",arrNav);
Map<Long,List<ProProjectInfoSubdeptsUsers>> subMap2= list.stream().collect(Collectors.groupingBy(ProProjectInfoSubdeptsUsers::getId));
JSONArray arrAge=new JSONArray();
subMap2.forEach((k,v)->{
JSONObject jo=new JSONObject();
jo.put("age",k);
jo.put("count",v.size());
arrNav.add(jo);
});
joOut.put("age",arrAge);
return joOut;
}
/**
*
* @param prjId
* @return
*/
@Override
public List<ProProjectInfoSubdeptsUsers> getWorkerCountGroupByType(Long prjId) {
return proProjectInfoSubdeptsUsersMapper.getWorkerCountGroupByType(prjId);
}
/**
*
* @param prjId
* @return
*/
@Override
public List<ProProjectInfoSubdeptsUsers> getAttendanceAlert(Long prjId) {
return proProjectInfoSubdeptsUsersMapper.getAttendanceAlert(prjId);
}
}

View File

@ -1,7 +1,11 @@
package com.yanzhu.manage.service.impl;
import cn.hutool.core.date.CalendarUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.core.utils.StringUtils;
import com.yanzhu.manage.domain.AttendanceCfg;
@ -16,10 +20,7 @@ import com.yanzhu.manage.service.ISurProjectAttendanceDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
* Service
@ -289,4 +290,56 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
return surProjectAttendanceDataMapper.selectSurProjectAttendanceDataListByDate(attWhere);
}
/**
*
* @param prjId ID
* @param dateStart (7)
* @param dateEnd ()
* @return
*/
@Override
public JSONArray groupAttendanceLastWeek(Long prjId, Date dateStart, Date dateEnd,int year) {
List<SurProjectAttendanceData> list=surProjectAttendanceDataMapper.groupAttendanceLastWeek(prjId,dateStart,dateEnd,year);
JSONArray jArr = new JSONArray();
for(int i=0;i<7;i++){
String dt=DateUtil.format(DateUtil.offsetDay(dateStart,1*i),"yyyy-MM-dd");
List<SurProjectAttendanceData> sub=list.stream().filter(item->item.getDeptName().equals(dt)).collect(Collectors.toList());
JSONObject jo=new JSONObject();
jo.put("dt",dt);
if(sub.size()>0){
Long cnt=sub.get(0).getDeptId();
if(cnt!=null){
jo.put("cnt",cnt);
}
}
if(!jo.containsKey("cnt")){
jo.put("cnt",0);
}
jArr.add(jo);
}
return jArr;
}
/**
*
* @param prjId
* @param year
* @return
*/
@Override
public List<SurProjectAttendanceData> getRealAttendance(Long prjId, int year) {
return surProjectAttendanceDataMapper.getRealAttendance(prjId,year);
}
public static void main(String[] args) {
Date dateEnd=new DateTime();
Date dateStart=DateUtil.offsetDay(dateEnd,-7);
System.out.println(dateEnd);
System.out.println(dateStart);
for(int i=0;i<7;i++){
String dt=DateUtil.format(DateUtil.offsetDay(dateStart,1*i),"yyyy-MM-dd");
System.out.println(dt);
}
}
}

View File

@ -1,8 +1,12 @@
package com.yanzhu.manage.service.impl;
import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.core.utils.StringUtils;
import com.yanzhu.manage.domain.AttendanceCfg;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.domain.SurProjectAttendanceData;
import com.yanzhu.manage.domain.SurProjectAttendanceUser;
import com.yanzhu.manage.mapper.SurProjectAttendanceUserMapper;
@ -14,6 +18,8 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Service
*
@ -298,6 +304,82 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc
return surProjectAttendanceUserMapper.queryWorkerByState(where);
}
/**
*
* @param prjId
* @return
*/
@Override
public JSONObject groupWorkderNative(Long prjId) {
List<SurProjectAttendanceUser> list=surProjectAttendanceUserMapper.groupWorkderNative(prjId);
list.stream().forEach(d->{
String nav=d.getNativePlace();
if(nav.contains("省")){
nav=nav.substring(0,nav.indexOf("省"));
}
if(nav.contains("市")){
nav=nav.substring(0,nav.indexOf("市"));
}
if(nav.contains("区")){
nav=nav.substring(0,nav.indexOf("区"));
}
Long birthDay=d.getBirthDate();
long y=birthDay!=null? new DateTime(birthDay).between(new Date()).betweenYear(true):0;
// 1.18-30 2.30-40 3.40-55 4.55
if(y>=18 && y<30){
d.setId(1L);
}else if(y>=30 && y<40){
d.setId(2L);
}else if(y>=40 && y<55){
d.setId(3L);
}else{
d.setId(4L);
}
d.setNativePlace(nav);
});
Map<String,List<SurProjectAttendanceUser>> subMap= list.stream().collect(Collectors.groupingBy(SurProjectAttendanceUser::getNativePlace));
JSONObject joOut=new JSONObject();
JSONArray arrNav=new JSONArray();
subMap.forEach((k,v)->{
JSONObject jo=new JSONObject();
jo.put("nativePlace",k);
jo.put("count",v.size());
arrNav.add(jo);
});
joOut.put("native",arrNav);
Map<Long,List<SurProjectAttendanceUser>> subMap2= list.stream().collect(Collectors.groupingBy(SurProjectAttendanceUser::getId));
JSONArray arrAge=new JSONArray();
subMap2.forEach((k,v)->{
JSONObject jo=new JSONObject();
jo.put("age",k);
jo.put("count",v.size());
arrNav.add(jo);
});
joOut.put("age",arrAge);
return joOut;
}
/**
*
* @param prjId
* @return
*/
@Override
public List<SurProjectAttendanceUser> getWorkerCountGroupByType(Long prjId) {
return surProjectAttendanceUserMapper.getWorkerCountGroupByType(prjId);
}
/**
*
* @param prjId
* @param year
* @return
*/
@Override
public List<SurProjectAttendanceUser> getAttendanceAlert(Long prjId, int year) {
return surProjectAttendanceUserMapper.getAttendanceAlert(prjId,year);
}
private Date findDate(List<SurProjectAttendanceUser> datas, SurProjectAttendanceUser u, String type) {
for (SurProjectAttendanceUser user:datas) {
if(user.getWorkerId().equals(u.getWorkerId()) && user.getName().equals(type)){

View File

@ -457,7 +457,7 @@ function makeSelectData(users, type) {
arr.push({
label: k,
options: objs[k].map((it) => {
let pos = type ? `[${it.userPost == 2 ? '项目经理' : it.userPost == 3 ? '班组长' : ''}]` : ''
let pos = type ? `[${it.userPost == 2 ? '项目经理' : it.userPost == 3 ? '班组长' : it.userPost == 8 ? '安全员' : ''}]` : ''
return {
value: it.userId,
label: it.userName + pos,
@ -492,7 +492,9 @@ function getUserTree() {
let users = d.rows || []
data.users = users
data.modUserList = makeSelectData(
users.filter((it) => it.subDeptType == 4 || it.subDeptType == 5).filter((it) => it.userPost == 2 || it.userPost == 3),
users
.filter((it) => it.subDeptType == 4 || it.subDeptType == 5)
.filter((it) => it.userPost == 2 || it.userPost == 3 || it.userPost == 8),
true
)
data.ccUserList = makeSelectData(users.filter((it) => it.userPost != 4 && it.userPost != 5))