1.首页接口和二级页面接口

This commit is contained in:
方亮 2025-08-21 18:24:41 +08:00
parent 3ba463fd50
commit 5b1c7f6fb9
12 changed files with 802 additions and 17 deletions

View File

@ -22,11 +22,11 @@ public class ArcFaceHelper {
private static final String APP_ID = "52XE2dQBtdmMsfDMvyKmPCD1nGBSGQWQGUyJh5z9JhND";
/**
* x64
* win
*/
private static final String WIN64_SDK_KEY = "GggpcEphVxXLXcpEZz6tdC19o3QhbuktDm3YTUhUGr7J";
/**
* linux_64
* linux
*/
private static final String LINUX64_SDK_KEY = "GggpcEphVxXLXcpEZz6tdC19evqXbbhMyYt71DGLwnCp";
@ -80,7 +80,7 @@ public class ArcFaceHelper {
//初始化引擎
faceEngine.init(engineConfiguration);
//人脸检测
List<FaceInfo> lstFaceInfo = new ArrayList<FaceInfo>();
List<FaceInfo> lstFaceInfo = new ArrayList<>();
faceEngine.detectFaces(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(),
ImageFormat.CP_PAF_BGR24, lstFaceInfo);
System.out.println("检测到人脸数:" + lstFaceInfo.size());

View File

@ -123,7 +123,7 @@ public class BmWorkerWageCardController extends BaseController {
* @return
*/
@PostMapping("/light/{id}")
@SysLog(title = "工资卡管理", businessType = OperaType.DELETE, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "更新人员红绿灯")
@SysLog(title = "更新人员红绿灯", businessType = OperaType.DELETE, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "更新人员红绿灯")
public void light(@PathVariable("id") Integer id) {
try {
service.updateLightByWorkerId(id);

View File

@ -34,7 +34,7 @@ public class HomePageController extends BaseController {
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@PostMapping("/getDataOverview")
@SysLog(title = "数据概览", businessType = OperaType.QUERY, logType = 0, module = "首页->数据概览", details = "数据概览")
public AjaxResult getDataOverview(@Validated @RequestBody HomePagePo o) {
public AjaxResult getDataOverview(HomePagePo o) {
try {
return service.getDataOverview(o);
} catch (Exception e) {
@ -49,9 +49,9 @@ public class HomePageController extends BaseController {
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@PostMapping("/getWorkerAtt")
@GetMapping("/getWorkerAtt")
@SysLog(title = "人员考勤", businessType = OperaType.QUERY, logType = 0, module = "首页->人员考勤", details = "人员考勤")
public AjaxResult getWorkerAtt(@Validated @RequestBody HomePagePo o) {
public AjaxResult getWorkerAtt(HomePagePo o) {
try {
return service.getWorkerAtt(o);
} catch (Exception e) {
@ -66,9 +66,9 @@ public class HomePageController extends BaseController {
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@PostMapping("/getProjectMsg")
@GetMapping("/getProjectMsg")
@SysLog(title = "工程信息", businessType = OperaType.QUERY, logType = 0, module = "首页->工程信息", details = "工程信息")
public AjaxResult getProjectMsg(@Validated @RequestBody HomePagePo o) {
public AjaxResult getProjectMsg(HomePagePo o) {
try {
return service.getProjectMsg(o);
} catch (Exception e) {
@ -83,9 +83,9 @@ public class HomePageController extends BaseController {
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@PostMapping("/getEinWorkerDistribution")
@GetMapping("/getEinWorkerDistribution")
@SysLog(title = "在场人员", businessType = OperaType.QUERY, logType = 0, module = "首页->在场人员", details = "在场人员")
public AjaxResult getEinWorkerDistribution(@Validated @RequestBody HomePagePo o) {
public AjaxResult getEinWorkerDistribution(HomePagePo o) {
try {
return service.getEinWorkerDistribution(o);
} catch (Exception e) {

View File

@ -0,0 +1,167 @@
package com.bonus.bmw.controller;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.service.HomePageSubService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.annotation.InnerAuth;
import com.bonus.common.security.annotation.RequiresPermissions;
import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* 首页 - 子页面
* @author fly
*/
@RestController
@RequestMapping("/homePageSub")
public class HomePageSubController extends BaseController {
/**
* 服务对象
*/
@Autowired
private HomePageSubService service;
/**
* 首页-子页面-总工程详情
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getMainProMsg")
@SysLog(title = "总工程详情", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "总工程详情")
public TableDataInfo getMainProMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getMainProMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 首页-子页面-工程详情
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getProMsg")
@SysLog(title = "工程详情", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "工程详情")
public TableDataInfo getProMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getProMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 首页-子页面-分包详情
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getSubMsg")
@SysLog(title = "分包详情", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "分包详情")
public TableDataInfo getSubMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getSubMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 首页-子页面-班组详情
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getTeamMsg")
@SysLog(title = "班组详情", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "班组详情")
public TableDataInfo getTeamMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getTeamMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 首页-子页面-人员详情
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getWorkerMsg")
@SysLog(title = "人员详情", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "人员详情")
public TableDataInfo getWorkerMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getWorkerMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 首页-子页面-出场未结算详情
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getWorkerNotFileMsg")
@SysLog(title = "出场未结算详情", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "出场未结算详情")
public TableDataInfo getWorkerNotFileMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getWorkerNotFileMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 首页-子页面-单人详情页面
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("home:page:query"))
@GetMapping("/getWorkerNotFileMsg")
@SysLog(title = "单人详情页面", businessType = OperaType.QUERY, logType = 0, module = "首页->二级页面", details = "单人详情页面")
public AjaxResult getWorkerMsgById(HomePagePo o) {
try {
return service.getWorkerMsgById(o);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
}

View File

@ -19,4 +19,40 @@ public class HomePagePo {
private String currentDay;
private Integer mainProId;
private String mainProName;
private String proName;
private String proType;
private String volLevel;
private String proStatus;
private Integer subCompanyId;
private String subComName;
private String subName;
private String teamName;
private String workerName;
private Integer lightStatus;
private Integer startAge;
private Integer endAge;
private String sex;
private Integer isAtt;
private Integer lightStatusSeven;
private Integer postId;
}

View File

@ -0,0 +1,53 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
@Data
public class HomePageSubProVo {
/**
* 主项目id
*/
private Integer mainProId;
/**
* 主项目名称
*/
private String mainProName;
/**
* 项目总数
*/
private Integer proNum;
private String proId;
private String proName;
private String subCompanyName;
private String proType;
private String volLevel;
private String proStatus;
private String einNum;
private String attNum;
private String yellowNum;
private String greenNum;
private String subNum;
private String teamNum;
private String teamId;
private String teamName;
private String subId;
private String subName;
private String subCompanyId;
private String workerId;
private String workerName;
private String sex;
private String age;
private String phone;
private String postName;
private String lightStatus;
private String isAtt;
private String exitTime;
private String idNumber;
private String daysSinceExit;
}

View File

@ -0,0 +1,62 @@
package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.*;
import com.bonus.common.core.web.domain.AjaxResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface HomePageSubMapper {
/**
* 获取总工程详情
* @param o
* @return
*/
List<HomePageSubProVo> getMainProMsg(HomePagePo o);
/**
* 获取工程详情
* @param o
* @return
*/
List<HomePageSubProVo> getProMsg(HomePagePo o);
/**
* 获取分包详情
* @param o
* @return
*/
List<HomePageSubProVo> getSubMsg(HomePagePo o);
/**
* 获取班组详情
* @param o
* @return
*/
List<HomePageSubProVo> getTeamMsg(HomePagePo o);
/**
* 获取人员详情
* @param o
* @return
*/
List<HomePageSubProVo> getWorkerMsg(HomePagePo o);
/**
* 获取出场未结算详情
* @param o
* @return
*/
List<HomePageSubProVo> getWorkerNotFileMsg(HomePagePo o);
/**
* 获取单人详情页面
* @param o
* @return
*/
PmWorker getWorkerMsgById(HomePagePo o);
}

View File

@ -0,0 +1,59 @@
package com.bonus.bmw.service;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.common.core.web.domain.AjaxResult;
import java.util.List;
public interface HomePageSubService {
/**
* 总工程详情
* @param o
* @return
*/
List<HomePageSubProVo> getMainProMsg(HomePagePo o);
/**
* 工程详情
* @param o
* @return
*/
List<HomePageSubProVo> getProMsg(HomePagePo o);
/**
* 分包详情
* @param o
* @return
*/
List<HomePageSubProVo> getSubMsg(HomePagePo o);
/**
* 班组详情
* @param o
* @return
*/
List<HomePageSubProVo> getTeamMsg(HomePagePo o);
/**
* 人员详情
* @param o
* @return
*/
List<HomePageSubProVo> getWorkerMsg(HomePagePo o);
/**
* 出场未结算详情
* @param o
* @return
*/
List<HomePageSubProVo> getWorkerNotFileMsg(HomePagePo o);
/**
* 单人详情页面
* @param o
* @return
*/
AjaxResult getWorkerMsgById(HomePagePo o);
}

View File

@ -0,0 +1,65 @@
package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.*;
import com.bonus.bmw.mapper.HomePageSubMapper;
import com.bonus.bmw.service.HomePageSubService;
import com.bonus.common.core.constant.Constants;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.api.model.UploadFileVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class HomePageSubServiceImpl implements HomePageSubService {
@Autowired
private HomePageSubMapper mapper;
@Autowired
private FileUploadUtils fileUploadUtils;
@Override
public List<HomePageSubProVo> getMainProMsg(HomePagePo o) {
return mapper.getMainProMsg(o);
}
@Override
public List<HomePageSubProVo> getProMsg(HomePagePo o) {
return mapper.getProMsg(o);
}
@Override
public List<HomePageSubProVo> getSubMsg(HomePagePo o) {
return mapper.getSubMsg(o);
}
@Override
public List<HomePageSubProVo> getTeamMsg(HomePagePo o) {
return mapper.getTeamMsg(o);
}
@Override
public List<HomePageSubProVo> getWorkerMsg(HomePagePo o) {
return mapper.getWorkerMsg(o);
}
@Override
public List<HomePageSubProVo> getWorkerNotFileMsg(HomePagePo o) {
return mapper.getWorkerNotFileMsg(o);
}
@Override
public AjaxResult getWorkerMsgById(HomePagePo o) {
PmWorker worker = mapper.getWorkerMsgById(o);
if (worker.getContractId() != null) {
List<UploadFileVo> contractFile = fileUploadUtils.getFileList("", worker.getContractId().toString(), Constants.FILE_UPLOAD_CONTRACT, "");
worker.setFiles(contractFile);
}
return AjaxResult.success("查询成功", worker);
}
}

View File

@ -93,7 +93,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
//下发人脸到考勤机
urkSendService.sendUserToDevice(record.getId(),record.getProId(),"0");
}
return new AjaxResult(200, "添加成功");
return new AjaxResult(200, "添加成功",record.getId());
}
/**

View File

@ -5,13 +5,8 @@
<resultMap id="BaseResultMap" type="com.bonus.bmw.domain.vo.HomePageVo">
<result column="mainProNum" property="mainProNum" />
<result column="proNum" property="proNum" />
<result column="subNum" property="subNum" />
<result column="teamNum" property="teamNum" />
<result column="einNum" property="einNum" />
<result column="attNum" property="attNum" />
<result column="yellowNum" property="yellowNum"/>
<result column="yellowThanSevenDayNum" property="yellowThanSevenDayNum"/>
<result column="exitNoFileNum" property="exitNoFileNum"/>
</resultMap>
<!-- 注意:当传入 subComId 时,只统计该分公司下的子工程及其关联的主工程

View File

@ -0,0 +1,348 @@
<?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.bmw.mapper.HomePageSubMapper">
<resultMap id="BaseResultMap" type="com.bonus.bmw.domain.vo.HomePageSubProVo">
<result column="mainProId" property="mainProId" />
<result column="main_pro_name" property="mainProName" />
<result column="proNum" property="proNum" />
<result column="pro_id" property="proId" />
<result column="pro_name" property="proName" />
<result column="sub_company_name" property="subCompanyName" />
<result column="pro_type" property="proType" />
<result column="vol_level" property="volLevel" />
<result column="pro_status" property="proStatus" />
<result column="einNum" property="einNum" />
<result column="attNum" property="attNum" />
<result column="yellowNum" property="yellowNum" />
<result column="greenNum" property="greenNum" />
<result column="subNum" property="subNum" />
<result column="teamNum" property="teamNum" />
<result column="team_id" property="teamId" />
<result column="team_name" property="teamName" />
<result column="sub_id" property="subId" />
<result column="sub_name" property="subName" />
<result column="sub_company_id" property="subCompanyId" />
<result column="worker_id" property="workerId" />
<result column="worker_name" property="workerName" />
<result column="sex" property="sex" />
<result column="age" property="age" />
<result column="phone" property="phone" />
<result column="post_name" property="postName" />
<result column="light_status" property="lightStatus" />
<result column="isAtt" property="isAtt" />
<result column="exit_time" property="exitTime" />
<result column="id_number" property="idNumber" />
<result column="days_since_exit" property="daysSinceExit" />
</resultMap>
<select id="getMainProMsg" resultMap="BaseResultMap">
SELECT
pmp.id AS mainProId,
pmp.main_pro_name,
COUNT(pp.id) AS proNum
FROM pm_main_project pmp
LEFT JOIN pm_project pp
ON pmp.id = pp.main_pro_id
AND pp.is_active = 1
WHERE pmp.is_active = 1
<if test="subComId != null">
AND pp.sub_com_id = #{subComId}
</if>
<if test="mainProName != null">
AND locate(#{mainProName},pmp.main_pro_name)
</if>
</select>
<select id="getProMsg" resultMap="BaseResultMap">
SELECT
pp.id AS pro_id,
pp.pro_name,
pmp.main_pro_name,
psc.sub_company_name,
pp.pro_type,
pp.vol_level,
pp.pro_status,
count(DISTINCT ps.id) AS subNum,
count(DISTINCT psc.id) AS teamNum,
count(DISTINCT bwem.worker_id) AS einNum,
count(DISTINCT bap.worker_id) AS attNum,
count(DISTINCT IF(bwem.light_status = 1, bwem.worker_id, NULL)) AS yellowNum,
count(DISTINCT IF(bwem.light_status = 2, bwem.worker_id, NULL)) AS greenNum
FROM
pm_project pp
LEFT JOIN pm_main_project pmp ON pp.main_pro_id = pmp.id
LEFT JOIN pm_sub_company psc ON pp.sub_com_id = psc.id
LEFT JOIN bm_worker_ein_msg bwem ON pp.id = bwem.pro_id
AND bwem.is_active = 1
LEFT JOIN bm_att_person bap ON pp.id = bap.pro_id
AND bap.is_active = 1
AND bap.att_day = #{currentDay}
LEFT JOIN bm_sub_contract bsc ON pp.id = bsc.pro_id
AND bsc.is_active = 1
AND bsc.sub_ein_status = 1
LEFT JOIN pm_sub ps ON ps.id = bsc.sub_id
AND bsc.is_active = 1
LEFT JOIN pm_sub_team_contract pstc ON pp.id = pstc.pro_id
AND pstc.is_active = 1
AND pstc.team_ein_status = 1
LEFT JOIN pm_sub_team pst ON pst.id = pstc.team_id
AND pst.is_active = 1
WHERE
pp.is_active = 1
<if test="subComId != null">
AND pp.sub_com_id = #{subComId}
</if>
<if test="mainProId != null">
AND pmp.id = #{mainProId}
</if>
<if test="proName != null">
AND locate(#{proName},pp.pro_name)
</if>
<if test="proType != null">
AND pp.pro_type = #{proType}
</if>
<if test="volLevel != null">
AND pp.vol_level = #{volLevel}
</if>
<if test="proStatus != null">
AND pp.pro_status = #{proStatus}
</if>
GROUP BY
pp.id
</select>
<select id="getSubMsg" resultMap="BaseResultMap">
<if test="proName != null or subComName != null or proId != null or subCompanyId != null">
select * from(
</if>
SELECT
ps.id AS sub_id,
ps.sub_name,
group_concat(DISTINCT pp.id) AS pro_id,
group_concat(DISTINCT psc.id) AS sub_company_id,
group_concat(DISTINCT pp.pro_name) AS pro_name,
group_concat(DISTINCT psc.sub_company_name) AS sub_company_name,
count(DISTINCT psc.id) AS teamNum,
count(DISTINCT bwem.worker_id) AS einNum,
count(DISTINCT bap.worker_id) AS attNum,
count(DISTINCT IF(bwem.light_status = 1, bwem.worker_id, NULL)) AS yellowNum,
count(DISTINCT IF(bwem.light_status = 2, bwem.worker_id, NULL)) AS greenNum
FROM
pm_sub ps
LEFT JOIN bm_sub_contract bsc ON ps.id = bsc.sub_id
AND bsc.is_active = 1
AND bsc.sub_ein_status = 1
LEFT JOIN pm_project pp ON pp.id = bsc.pro_id
AND pp.is_active = 1
LEFT JOIN pm_sub_company psc ON pp.sub_com_id = psc.id
LEFT JOIN pm_sub_team_contract pstc ON ps.id = pstc.sub_id
AND pstc.is_active = 1
AND pstc.team_ein_status = 1
LEFT JOIN pm_sub_team pst ON pst.id = pstc.team_id
AND pst.is_active = 1
LEFT JOIN bm_worker_ein_msg bwem ON pp.id = bwem.pro_id
AND bwem.is_active = 1
LEFT JOIN bm_att_person bap ON pp.id = bap.pro_id
AND bap.is_active = 1
AND bap.att_day = #{currentDay}
WHERE
ps.is_active = 1
<if test="subId != null">
AND ps.id = #{subId}
</if>
GROUP BY
ps.id
<if test="proName != null or subComName != null or proId != null or subCompanyId != null">
) aa
</if>
<where>
<if test="proName != null">
AND locate(#{proName},aa.pro_name)
</if>
<if test="subComName != null">
AND locate(#{subComName},aa.sub_company_name)
</if>
<if test="proId != null">
AND locate(#{proId},aa.pro_id)
</if>
<if test="subCompanyId != null">
AND locate(#{subCompanyId},aa.sub_company_id)
</if>
</where>
</select>
<select id="getTeamMsg" resultMap="BaseResultMap">
SELECT
pst.id AS team_id,
pst.team_name,
ps.id AS sub_id,
ps.sub_name,
pp.id AS pro_id,
psc.id AS sub_company_id,
pp.pro_name,
psc.sub_company_name,
count(DISTINCT bwem.worker_id) AS einNum,
count(DISTINCT bap.worker_id) AS attNum,
count(DISTINCT IF(bwem.light_status = 1, bwem.worker_id, NULL)) AS yellowNum,
count(DISTINCT IF(bwem.light_status = 2, bwem.worker_id, NULL)) AS greenNum
FROM
pm_sub_team pst
LEFT JOIN pm_sub_team_contract pstc ON pst.id = pst.sub_id
AND pstc.is_active = 1
AND pstc.team_ein_status = 1
LEFT JOIN pm_sub ps ON ps.id = pstc.sub_id and ps.is_active = 1
LEFT JOIN bm_sub_contract bsc ON ps.id = bsc.sub_id
AND bsc.is_active = 1
AND bsc.sub_ein_status = 1
LEFT JOIN pm_project pp ON pp.id = bsc.pro_id
AND pp.is_active = 1
LEFT JOIN pm_sub_company psc ON pp.sub_com_id = psc.id
LEFT JOIN bm_worker_ein_msg bwem ON pp.id = bwem.pro_id
AND bwem.is_active = 1
LEFT JOIN bm_att_person bap ON pp.id = bap.pro_id
AND bap.is_active = 1
AND bap.att_day = #{currentDay}
WHERE
pst.is_active = 1
<if test="subComId != null">
AND pp.sub_com_id = #{subComId}
</if>
<if test="teamName != null">
AND locate(#{teamName},pst.team_name)
</if>
<if test="subName != null">
AND locate(#{subName},ps.sub_name)
</if>
<if test="proName != null">
AND locate(#{proName},pp.pro_name)
</if>
<if test="subComName != null">
AND locate(#{subComName},psc.sub_company_name)
</if>
<if test="proId != null">
AND pp.id = #{proId}
</if>
<if test="subId != null">
AND ps.id = #{subId}
</if>
GROUP BY
ps.id
</select>
<select id="getWorkerMsg" resultMap="BaseResultMap">
SELECT
pw.id as worker_id,
pw.name as worker_name,
pw.sex,
pw.age,
pw.phone,
bwem.post_name,
bwem.team_name,
bwem.pro_name,
bwem.sub_name,
psc.sub_company_name,
bwem.light_status,
if(bap.att_day is null ,0,1) as isAtt
from pm_worker pw
inner JOIN bm_worker_ein_msg bwem ON pw.id = bwem.worker_id and bwem.is_active = 1
left join bm_att_person bap ON pw.id = bap.worker_id and bap.is_active = 1 and bap.att_day = #{currentDay}
left join pm_project pp ON bwem.pro_id = pp.id
left join pm_sub_company psc ON pp.sub_com_id = psc.id
WHERE
pw.is_active = 1
<if test="workerName != null">
AND locate(#{workerName},pw.name)
</if>
<if test="subName != null">
AND locate(#{subName},bwem.sub_name)
</if>
<if test="proName != null">
AND locate(#{proName},bwem.pro_name)
</if>
<if test="subComId != null">
AND psc.id = #{subComId}
</if>
<if test="lightStatus != null">
AND bwem.light_status = #{lightStatus}
</if>
<if test="lightStatusSeven != null">
AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) > IF(bwem.yellow_date is null, CURRENT_DATE, bwem.yellow_date)
</if>
<if test="startAge != null and endAge != null">
AND pw.age &gt;= #{startAge} and pw.age &lt; #{endAge}
</if>
<if test="sex != null">
AND pw.sex = #{sex}
</if>
<if test="isAtt != null">
AND ((bap.att_day IS NOT NULL) = #{isAtt})
</if>
<if test="postId != null">
AND bwem.post_id = #{postId}
</if>
</select>
<select id="getWorkerNotFileMsg" resultMap="BaseResultMap">
SELECT
pw.name as worker_name,
pw.id_number,
pw.phone,
bwem.pro_name,
bwem.sub_name,
psc.sub_company_name,
bwem.exit_time,
if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) as days_since_exit
FROM bm_worker_ein_pro_record bwem
INNER JOIN pm_project pp
ON bwem.pro_id = pp.id and pp.is_active = 1
INNER JOIN pm_worker pw ON bwem.worker_id = pw.id and pw.is_active = 1
INNER JOIN pm_sub_company psc ON pp.sub_com_id = psc.id
<where>
bwem.is_active = 1 and bwem.ein_status = 2 and bwem.is_upload_file = 0
<if test="subComId != null">
AND pp.sub_com_id
</if>
<if test="workerName != null">
AND locate(#{workerName},pw.name)
</if>
<if test="proName != null">
AND locate(#{proName},bwem.pro_name)
</if>
</where>
</select>
<select id="getWorkerMsgById" resultType="com.bonus.bmw.domain.vo.PmWorker">
SELECT
pw.NAME,
pw.phone,
bwem.light_status,
bwem.ein_time,
bwem.pro_name,
bwem.sub_name,
bwem.team_name,
bwem.post_name,
bap.device_code,
bap.dev_name AS device_name,
bap.att_time,
bap.pro_name AS device_pro_name,
bwem.contract_id,
bwc.contract_code,
bwc.contract_code,
bwc.contract_term_type,
bwc.contract_start_date,
bwc.contract_stop_date,
bwc.wage_approved_way,
bwc.wage_criterion
FROM
pm_worker pw
INNER JOIN bm_worker_ein_msg bwem ON pw.id = bwem.worker_id
LEFT JOIN (select * from bm_att_person where worker_id = #{id} order by att_day desc limit 1) bap on pw.id=bap.worker_id
LEFT JOIN bm_worker_contract bwc ON pw.id = bwc.worker_id
AND bwc.id = bwem.contract_id
WHERE
pw.id = #{id}
</select>
</mapper>