大屏劳务实名制接口开发

This commit is contained in:
haozq 2025-04-18 11:35:41 +08:00
parent 8bcd8c3b79
commit 3d33054006
11 changed files with 506 additions and 11 deletions

View File

@ -1,5 +1,6 @@
package com.bonus.common.core.utils;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import org.apache.commons.lang3.ObjectUtils;
import java.lang.management.ManagementFactory;
@ -586,18 +587,24 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
*
* @param n 天数
* @param format 日期格式
* @param sort 排序,sort =true 正序,false 倒叙
* @return 从当前日期往前推 n 天的所有日期的字符串列表
*/
public static List<String> getDatesBefore(int n, String format) {
public static List<String> getDatesBefore(int n, String format,boolean sort) {
List<String> dates = new ArrayList<>();
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
for (int i = 0; i < n; i++) {
LocalDate date = today.minusDays(i);
dates.add(date.format(formatter));
if(sort){
for (int i=n-1;i>=0;i--){
LocalDate date = today.minusDays(i);
dates.add(date.format(formatter));
}
}else{
for (int i = 0; i < n; i++) {
LocalDate date = today.minusDays(i);
dates.add(date.format(formatter));
}
}
return dates;
}

View File

@ -1,5 +1,8 @@
package com.bonus.base.common.utils;
/**
* @author 黑子
*/
public class AttrCodeUtils {
/**

View File

@ -1,6 +1,13 @@
package com.bonus.base.screen.controller;
import com.bonus.base.basic.domain.vo.DevModelVo;
import com.bonus.base.screen.domain.SubContractVo;
import com.bonus.base.screen.service.SubContractService;
import com.bonus.common.core.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -13,8 +20,51 @@ import org.springframework.web.bind.annotation.RestController;
public class SubContractController {
@Autowired
private SubContractService service;
@ApiOperation(value = "查询施工单位的人数")
@PostMapping("getSgUserByUnit")
public AjaxResult getSgUserByUnit(SubContractVo vo) {
return service.getSgUserByUnit(vo);
}
@ApiOperation(value = "查询施工人员年龄分布查询")
@PostMapping("getSgUserByAge")
public AjaxResult getSgUserByAge(SubContractVo vo) {
return service.getSgUserByAge(vo);
}
@ApiOperation(value = "查询施工人员工种分布")
@PostMapping("getSgUserByWorkType")
public AjaxResult getSgUserByWorkType(SubContractVo vo) {
return service.getSgUserByWorkType(vo);
}
@ApiOperation(value = "查询今日施工人员考勤数据")
@PostMapping("getSgUserKqByType")
public AjaxResult getSgUserKqByType(SubContractVo vo) {
return service.getSgUserKqByType(vo);
}
@ApiOperation(value = "查询近七日施工人员曲线图")
@PostMapping("getUserNumByWeek")
public AjaxResult getUserNumByWeek(SubContractVo vo) {
return service.getUserNumByWeek(vo);
}
@ApiOperation(value = "查询关键岗位人员数据")
@PostMapping("getImportPostUser")
public AjaxResult getImportPostUser(SubContractVo vo) {
return service.getImportPostUser(vo);
}
@ApiOperation(value = "查询施工人员打卡记录")
@PostMapping("getUserCheckList")
public AjaxResult getUserCheckList(SubContractVo vo) {
return service.getUserCheckList(vo);
}
}

View File

@ -0,0 +1,37 @@
package com.bonus.base.screen.domain;
import com.itextpdf.text.pdf.PRAcroForm;
import lombok.Data;
import org.omg.CORBA.INTERNAL;
/**
* 劳务实名制
* @author 黑子
*/
@Data
public class SubContractVo {
/**
* 名称
*/
private String name;
/**
* 班组名称
*/
private String teamName;
/**
* 创建时间
*/
private String createTime;
/**
* 照片
*/
private String photo;
/**
* 限制条数
*/
private int limit;
}

View File

@ -1,6 +1,11 @@
package com.bonus.base.screen.mapper;
import com.bonus.base.screen.domain.MapValueVo;
import com.bonus.base.screen.domain.SubContractVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 黑子
@ -8,7 +13,53 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SubContractMapper {
/**
* 施工人员单位
* @param vo
* @return
*/
List<MapValueVo> getSgUserByUnit(SubContractVo vo);
/**
* 查询施工人员年龄数量分布
* @param vo
* @return
*/
List<MapValueVo> getSgUserByAge(SubContractVo vo);
/**
* 查询施工类型
* @param vo
* @return
*/
List<MapValueVo> getSgUserByWorkType(SubContractVo vo);
/**
* 查询施工人员 考勤
* @param list
* @return
*/
Integer getSgUserKqByType(@Param("list") List<String> list);
/**
* 依据日期和类型查询时间
* @param date
* @param typeList
* @return
*/
MapValueVo getUserNumByWeek(@Param("date") String date,@Param("list") List<String> typeList);
/**
* 查询重要岗位
* @param vo
* @return
*/
List<SubContractVo> getImportPostUser(SubContractVo vo);
/**
* 查询人员考勤数据
* @param vo
* @return
*/
List<SubContractVo> getUserCheckList(SubContractVo vo);
}

View File

@ -1,13 +1,60 @@
package com.bonus.base.screen.service;
import com.bonus.base.screen.domain.SubContractVo;
import com.bonus.common.core.web.domain.AjaxResult;
/**
* 大屏劳务实名制 业务接口层
* @author 黑子
*/
public interface SubContractService {
/**
* 查询施工人员按照单位查询
* @param vo
* @return
*/
AjaxResult getSgUserByUnit(SubContractVo vo);
/**
* 查询施工人员年龄分布查询
* @param vo
* @return
*/
AjaxResult getSgUserByAge(SubContractVo vo);
/**
* 查询施工人员类型数据查询
* @param vo
* @return
*/
AjaxResult getSgUserByWorkType(SubContractVo vo);
/**
* 查询今日施工人员考勤数据
* @param vo
* @return
*/
AjaxResult getSgUserKqByType(SubContractVo vo);
/**
* 查询近期日施工人员数据
* @param vo
* @return
*/
AjaxResult getUserNumByWeek(SubContractVo vo);
/**
* 查询重要岗位人员
* @param vo
* @return
*/
AjaxResult getImportPostUser(SubContractVo vo);
/**
* 查询人员打卡记录
* @param vo
* @return
*/
AjaxResult getUserCheckList(SubContractVo vo);
}

View File

@ -102,11 +102,11 @@ public class ScreenDevModelServiceImpl implements ScreenDevModelService {
public AjaxResult getAttrList(ParamVo vo) {
try{
if("1".equals(vo.getType())){
vo.setType(AttrCodeUtils.GZM_WY);
vo.setCode(AttrCodeUtils.GZM_WY);
}else if("2".equals(vo.getType())){
vo.setType(AttrCodeUtils.GZM_CJ);
vo.setCode(AttrCodeUtils.GZM_CJ);
}else if("3".equals(vo.getType())){
vo.setType(AttrCodeUtils.GZM_ZL);
vo.setCode(AttrCodeUtils.GZM_ZL);
}
vo.setLimit(AttrCodeUtils.LIMIT);
List<MapValueVo> list=mapper.getAttrList(vo);

View File

@ -1,9 +1,26 @@
package com.bonus.base.screen.service.impl;
import com.bonus.base.common.utils.AttrCodeUtils;
import com.bonus.base.screen.domain.MapValueVo;
import com.bonus.base.screen.domain.SubContractVo;
import com.bonus.base.screen.mapper.SubContractMapper;
import com.bonus.base.screen.service.SubContractService;
import com.bonus.base.screen.utils.PeopleTypeUtils;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.google.common.collect.Maps;
import jdk.internal.org.objectweb.asm.tree.MultiANewArrayInsnNode;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.hibernate.validator.internal.util.StringHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @author 黑子
* 大屏劳务实名制 业务处理成
@ -11,4 +28,185 @@ import org.springframework.stereotype.Service;
@Slf4j
@Service
public class SubContractServiceImpl implements SubContractService {
@Autowired
private SubContractMapper mapper;
@Override
public AjaxResult getSgUserByUnit(SubContractVo vo) {
try{
List<MapValueVo> list=mapper.getSgUserByUnit(vo);
return AjaxResult.success("查询成功",list);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",new ArrayList<>());
}
@Override
public AjaxResult getSgUserByAge(SubContractVo vo) {
try{
List<MapValueVo> list=mapper.getSgUserByAge(vo);
return AjaxResult.success("查询成功",list);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",new ArrayList<>());
}
@Override
public AjaxResult getSgUserByWorkType(SubContractVo vo) {
try{
List<MapValueVo> list=mapper.getSgUserByWorkType(vo);
return AjaxResult.success("查询成功",list);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",new ArrayList<>());
}
/**
* 查询施工人员考勤数据
* @param vo
* @return
*/
@Override
public AjaxResult getSgUserKqByType(SubContractVo vo) {
Map<String,Integer> map= Maps.newHashMap();
try{
List<String> list= Arrays.asList(PeopleTypeUtils.GL_USER_TYPE.split(","));
Integer num=mapper.getSgUserKqByType(list);
map.put("glUser",transInteger(num));
list= Arrays.asList(PeopleTypeUtils.GR_USER_TYPE.split(","));
num=mapper.getSgUserKqByType(list);
map.put("grUser",transInteger(num));
list= Arrays.asList(PeopleTypeUtils.TZ_USER_TYPE.split(","));
num=mapper.getSgUserKqByType(list);
map.put("tzUser",transInteger(num));
return AjaxResult.success("查询成功",map);
}catch (Exception e){
map.put("glUser",0);
map.put("grUser",0);
map.put("tzUser",0);
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",map);
}
/**
* 查询施工人员数据
* @param vo
* @return
*/
@Override
public AjaxResult getUserNumByWeek(SubContractVo vo) {
Map<String,List<MapValueVo>> map=Maps.newHashMap();
List<MapValueVo> gllist=new ArrayList<>();
List<MapValueVo> tzlist=new ArrayList<>();
List<MapValueVo> grlist=new ArrayList<>();
try{
List<String> dateList= DateUtils.getDatesBefore(7,DateUtils.YYYY_MM_DD,true);
List<String> glType= Arrays.asList(PeopleTypeUtils.GL_USER_TYPE.split(","));
List<String> tzType= Arrays.asList(PeopleTypeUtils.TZ_USER_TYPE.split(","));
List<String> grType= Arrays.asList(PeopleTypeUtils.GR_USER_TYPE.split(","));
for (String date:dateList){
MapValueVo data=mapper.getUserNumByWeek(date,glType);
gllist.add(getMapData(data,date));
data=mapper.getUserNumByWeek(date,tzType);
tzlist.add(getMapData(data,date));
data=mapper.getUserNumByWeek(date,grType);
grlist.add(getMapData(data,date));
}
map.put("glList",gllist);
map.put("tzList",tzlist);
map.put("grList",grlist);
return AjaxResult.success("查询成功",map);
}catch (Exception e){
//异常添加默认值
List<String> dateList= DateUtils.getDatesBefore(7,DateUtils.YYYY_MM_DD,true);
for (String date:dateList){
gllist.add(getMapData(null,date));
tzlist.add(getMapData(null,date));
grlist.add(getMapData(null,date));
}
map.put("glList",gllist);
map.put("tzList",tzlist);
map.put("grList",grlist);
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",map);
}
/**
* 查询重要人员岗位
* @param vo
* @return
*/
@Override
public AjaxResult getImportPostUser(SubContractVo vo) {
try{
List<SubContractVo> list=mapper.getImportPostUser(vo);
return AjaxResult.success("查询成功",list);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",new ArrayList<>());
}
/**
*
* @param vo
* @return
*/
@Override
public AjaxResult getUserCheckList(SubContractVo vo) {
try{
vo.setLimit(AttrCodeUtils.LIMIT);
List<SubContractVo> list=mapper.getUserCheckList(vo);
return AjaxResult.success("查询成功",list);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.success("查询失败",new ArrayList<>());
}
/**
* 数据异常是默认数据
* @param data
* @param date
* @return
*/
public MapValueVo getMapData(MapValueVo data,String date){
if(data==null){
data=new MapValueVo();
data.setName(date);
data.setValue("0");
}else{
if(StringHelper.isNullOrEmptyString(data.getValue())){
data.setValue("0");
}
}
return data;
}
/**
* 防止出现null
* @param num
* @return
*/
public int transInteger(Integer num){
if(num==null){
return 0;
}
return num;
}
}

View File

@ -0,0 +1,27 @@
package com.bonus.base.screen.utils;
/**
* 施工人员类型分类
*/
public class PeopleTypeUtils {
/**
* 关联人员数据类型
*/
public final static String GL_USER_TYPE="122";
/**
* 特种作业人员类型
*/
public final static String TZ_USER_TYPE="122";
/**
* 工人族谱也类型
*/
public final static String GR_USER_TYPE="122";
}

View File

@ -31,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getAttrList" resultType="com.bonus.base.screen.domain.MapValueVo">
select his.attr_val,DATE_FORMAT(his.create_time,'%H:%i')
from tb_collect_device_his his
LEFT JOIN tb_collect_device_attr cda on cda.attr_id=his.attr_id
LEFT JOIN tb_collect_device_attr cda on cda.attr_id=his.attr_id
where cda.dev_id=#{devId} and cda.attr_code=#{code}
<if test="startTime!=null and startTime!='' and endTime!=null and endTime!=''">
and his.create_time between #{startTime} and #{endTime}

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.base.screen.mapper.SubContractMapper">
<select id="getSgUserByUnit" resultType="com.bonus.base.screen.domain.MapValueVo">
select count(1) value,unit.unit_type name
from tt_sys_user tsu
left join tt_sys_unit unit on tsu.unit_id=unit.id
where tsu.del_flag=0
GROUP BY unit_type
</select>
<select id="getSgUserByAge" resultType="com.bonus.base.screen.domain.MapValueVo">
SELECT
CASE
WHEN age BETWEEN 0 AND 18 THEN '18岁以下'
WHEN age BETWEEN 18 AND 29 THEN '18-29岁'
WHEN age BETWEEN 31 AND 40 THEN '31-40岁'
WHEN age BETWEEN 41 AND 50 THEN '41-50岁'
WHEN age BETWEEN 51 AND 60 THEN '51-60岁'
ELSE '60以上'
END AS name ,
COUNT(*) AS count
FROM tt_sys_user
where del_flag=0
GROUP BY name;
</select>
<select id="getSgUserByWorkType" resultType="com.bonus.base.screen.domain.MapValueVo">
select count(1) value,IFNULL(work_type_name,'其他') name
from tt_sys_user tsu
where tsu.del_flag=0
GROUP BY work_type_name
</select>
<select id="getSgUserKqByType" resultType="java.lang.Integer">
select COUNT(1) num
FROM tt_sys_user_check suc
left join tt_sys_user su on su.id=suc.id
where DATE_FORMAT(suc.create_time,'%Y-%m-%d')=CURRENT_DATE()
and suc.work_type in (
<foreach item="item" collection="list" separator="," >
#{item}
</foreach>
)
</select>
<select id="getUserNumByWeek" resultType="com.bonus.base.screen.domain.MapValueVo">
select COUNT(1) value,#{date} name
FROM tt_sys_user_check suc
left join tt_sys_user su on su.id=suc.id
where DATE_FORMAT(suc.create_time,'%Y-%m-%d')=#{date}
and suc.work_type in (
<foreach item="item" collection="list" separator="," >
#{item}
</foreach>
)
</select>
<select id="getImportPostUser" resultType="com.bonus.base.screen.domain.SubContractVo">
select suc.create_time createTime,suc.work_team teamName,suc.photo photo,suc.`name` name
FROM tt_sys_user_check suc
left join tt_sys_user su on su.id=suc.id
where DATE_FORMAT(suc.create_time,'%Y-%m-%d')=CURRENT_DATE()
and su.post_unit is not null
</select>
<select id="getUserCheckList" resultType="com.bonus.base.screen.domain.SubContractVo">
select suc.create_time createTime,suc.work_team teamName,suc.photo photo,suc.`name` name
FROM tt_sys_user_check suc
left join tt_sys_user su on su.id=suc.id
where DATE_FORMAT(suc.create_time,'%Y-%m-%d')=CURRENT_DATE()
ORDER BY suc.create_time desc
limit #{limit}
</select>
</mapper>