分包统计和bug修复

This commit is contained in:
马三炮 2025-10-10 14:30:19 +08:00
parent 80d224160f
commit cfe3528d82
11 changed files with 816 additions and 7 deletions

View File

@ -0,0 +1,166 @@
package com.bonus.bmw.controller;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.po.PmSub;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.service.SubStatisticsService;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 分包统计
* @author 马三炮
* @date 2025/10/9
*/
@RestController
@RequestMapping("/subStatistics")
public class SubStatisticsController extends BaseController {
@Resource
private SubStatisticsService subStatisticsService;
/**
* 分包统计列表
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubStatisticsTable")
@SysLog(title = "分包统计列表", businessType = OperaType.QUERY, logType = 0, module = "分包统计->分包统计列表", details = "分包统计列表")
public TableDataInfo getSubStatisticsTable(HomePagePo homePagePo) {
try {
startPage();
List<PmSub> list = subStatisticsService.getSubStatisticsTable(homePagePo);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 分包统计-数据概览
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubDataOverview")
@SysLog(title = "数据概览", businessType = OperaType.QUERY, logType = 0, module = "分包统计->数据概览", details = "数据概览")
public AjaxResult getDataOverview(HomePagePo homePagePo) {
try {
return subStatisticsService.getProDataOverview(homePagePo);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
/**
* 分包工程信息
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubProMsg")
@SysLog(title = "分包工程信息", businessType = OperaType.QUERY, logType = 0, module = "分包统计->分包工程信息", details = "分包工程信息")
public TableDataInfo getSubProMsg(HomePagePo homePagePo) {
try {
startPage();
List<HomePageSubProVo> list = subStatisticsService.getSubProMsg(homePagePo);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 班组信息
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubTeamMsg")
@SysLog(title = "班组信息", businessType = OperaType.QUERY, logType = 0, module = "分包统计->班组信息", details = "班组信息")
public TableDataInfo getSubTeamMsg(HomePagePo homePagePo) {
try {
startPage();
List<HomePageSubProVo> list = subStatisticsService.getSubTeamMsg(homePagePo);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 考勤机信息
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubDeviceMsg")
@SysLog(title = "考勤机信息", businessType = OperaType.QUERY, logType = 0, module = "分包统计->考勤机信息", details = "考勤机信息")
public TableDataInfo getSubDeviceMsg(HomePagePo homePagePo) {
try {
startPage();
List<PmAttDevice> list = subStatisticsService.getSubDeviceMsg(homePagePo);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 出入场信息
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubInOutMsg")
@SysLog(title = "出入场信息", businessType = OperaType.QUERY, logType = 0, module = "分包统计->出入场信息", details = "出入场信息")
public TableDataInfo getSubInOutMsg(HomePagePo homePagePo) {
try {
startPage();
List<HomePageSubProVo> list = subStatisticsService.getSubInOutMsg(homePagePo);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
/**
* 考勤信息
* @param homePagePo
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("sub:statistics:query"))
@GetMapping("/getSubAttMsg")
@SysLog(title = "考勤信息", businessType = OperaType.QUERY, logType = 0, module = "分包统计->考勤信息", details = "考勤信息")
public TableDataInfo getSubAttMsg(HomePagePo homePagePo) {
try {
startPage();
List<HomePageSubProVo> list = subStatisticsService.getSubAttMsg(homePagePo);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
}

View File

@ -115,4 +115,19 @@ public class PmSub {
* 删除文件id集合
*/
List<String> fileIdList;
/**
* 项目数量
*/
private Integer proNum;
/**
* 班组数量
*/
private Integer teamNum;
/**
* 在场人数
*/
private Integer einNum;
}

View File

@ -1,7 +1,10 @@
package com.bonus.bmw.domain.vo;
import com.bonus.system.api.model.UploadFileVo;
import lombok.Data;
import java.util.List;
@Data
public class HomePageSubProVo {
@ -65,4 +68,14 @@ public class HomePageSubProVo {
private String teamExitTime;
private Long attNumHis;
private Long repairNumHis;
/**
* 分包合同编号
*/
private Integer subContractId;
/**
* 文件列表
*/
List<UploadFileVo> contractFile;
}

View File

@ -0,0 +1,96 @@
package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.po.PmSub;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.ProStatisticsPo;
import java.util.List;
public interface SubStatisticsMapper {
/**
* 分包统计列表
* @param homePagePo
* @return
*/
List<PmSub> getSubStatisticsTable(HomePagePo homePagePo);
/**
* 分包统计-累计入场
* @param homePagePo
* @return
*/
ProStatisticsPo getEinNumByHis(HomePagePo homePagePo);
/**
* 分包统计-在场灯状态
* @param homePagePo
* @return
*/
ProStatisticsPo getEinWorkerLight(HomePagePo homePagePo);
/**
* 分包统计-考勤
* @param homePagePo
* @return
*/
ProStatisticsPo getWorkerAttAndRepair(HomePagePo homePagePo);
/**
* 分包统计-申请补卡次数
* @param homePagePo
* @return
*/
int getProRepairNum(HomePagePo homePagePo);
/**
* 分包统计-工资
* @param homePagePo
* @return
*/
ProStatisticsPo getWorkerWage(HomePagePo homePagePo);
/**
* 分包统计-发放工资人数
* @param homePagePo
* @return
*/
int getWorkerSalaryNum(HomePagePo homePagePo);
/**
* 分包工程信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubProMsg(HomePagePo homePagePo);
/**
* 班组信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubTeamMsg(HomePagePo homePagePo);
/**
* 考勤机信息
* @param homePagePo
* @return
*/
List<PmAttDevice> getSubDeviceMsg(HomePagePo homePagePo);
/**
* 出入场信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubInOutMsg(HomePagePo homePagePo);
/**
* 考勤信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubAttMsg(HomePagePo homePagePo);
}

View File

@ -0,0 +1,60 @@
package com.bonus.bmw.service;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.po.PmSub;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.common.core.web.domain.AjaxResult;
import java.util.List;
public interface SubStatisticsService {
/**
* 分包统计列表
* @param homePagePo
* @return
*/
List<PmSub> getSubStatisticsTable(HomePagePo homePagePo);
/**
* 分包统计-数据概览
* @param homePagePo
* @return
*/
AjaxResult getProDataOverview(HomePagePo homePagePo);
/**
* 分包工程信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubProMsg(HomePagePo homePagePo);
/**
* 班组信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubTeamMsg(HomePagePo homePagePo);
/**
* 考勤机信息
* @param homePagePo
* @return
*/
List<PmAttDevice> getSubDeviceMsg(HomePagePo homePagePo);
/**
* 出入场信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubInOutMsg(HomePagePo homePagePo);
/**
* 考勤信息
* @param homePagePo
* @return
*/
List<HomePageSubProVo> getSubAttMsg(HomePagePo homePagePo);
}

View File

@ -38,13 +38,13 @@ public class PmAttDeviceServiceImpl implements PmAttDeviceService {
@Override
public List<PmAttDeviceVo> selectPmAttDeviceList(PmAttDevice pmAttDevice) {
List<PmAttDeviceVo> pmAttDeviceVoList = pmAttDeviceMapper.selectPmAttDeviceList(pmAttDevice);
if (pmAttDeviceVoList.size()>0){
/*if (pmAttDeviceVoList.size()>0){
//获取缓存中设备状态
for (PmAttDeviceVo pmAttDeviceVo:pmAttDeviceVoList) {
String onLine = redisService.getCacheObject("att_dev:status:"+pmAttDeviceVo.getDeviceCode());
pmAttDeviceVo.setOnLine(onLine);
}
}
}*/
return pmAttDeviceVoList;
}

View File

@ -30,6 +30,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author 马三炮
@ -48,7 +49,6 @@ public class PmProjectServiceImpl implements PmProjectService {
@Resource
private RepairCardApplyService repairCardApplyService;
@Resource
private FileUploadUtils fileUploadUtils;
@ -224,7 +224,12 @@ public class PmProjectServiceImpl implements PmProjectService {
*/
@Override
public List<UserWagePayVo> getUserWagePayList(UserWagePayVo userWagePayVo) {
return pmProjectMapper.getUserWagePayList(userWagePayVo);
List<UserWagePayVo> list = pmProjectMapper.getUserWagePayList(userWagePayVo);
// 过滤掉attendanceNum为0的元素
List<UserWagePayVo> filteredList = list.stream()
.filter(vo -> vo.getAttendanceNum() != 0)
.collect(Collectors.toList());
return filteredList;
}

View File

@ -0,0 +1,193 @@
package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.po.PmSub;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.ProStatisticsPo;
import com.bonus.bmw.mapper.SubStatisticsMapper;
import com.bonus.bmw.service.SubStatisticsService;
import com.bonus.common.core.constant.Constants;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.api.model.UploadFileVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 马三炮
* @date 2025/10/9
*/
@Service
@Slf4j
public class SubStatisticsServiceImpl implements SubStatisticsService {
@Resource
private SubStatisticsMapper subStatisticsMapper;
@Resource
private FileUploadUtils fileUploadUtils;
/**
* 分包统计列表
* @param homePagePo
* @return
*/
@Override
public List<PmSub> getSubStatisticsTable(HomePagePo homePagePo) {
List<PmSub> pmSubList = subStatisticsMapper.getSubStatisticsTable(homePagePo);
if (pmSubList.size()>0){
for (PmSub pmSubRes:pmSubList) {
List<UploadFileVo> contractFile = fileUploadUtils.getFileList("", pmSubRes.getId().toString(), Constants.PM_SUB, "");
pmSubRes.setContractFile(contractFile);
}
}
return pmSubList;
}
/**
* 分包统计-数据概览
* @param homePagePo
* @return
*/
@Override
public AjaxResult getProDataOverview(HomePagePo homePagePo) {
Map<String,Object> map = new HashMap<>();
List<PmSub> list = subStatisticsMapper.getSubStatisticsTable(homePagePo);
if(list != null && !list.isEmpty()){
map.put("proNum",list.get(0).getProNum());
map.put("teamNum",list.get(0).getTeamNum());
map.put("einNum",list.get(0).getEinNum());
}else{
map.put("proNum",0);
map.put("teamNum",0);
map.put("einNum",0);
}
//累计入场
ProStatisticsPo einNum = subStatisticsMapper.getEinNumByHis(homePagePo);
if(einNum != null){
map.put("einNumHis",einNum.getEinNumHis());
map.put("exitNum",einNum.getEinNumHis() - Long.parseLong((String) map.get("einNum")) );
map.put("einTime",einNum.getEinTime());
map.put("exitTime",einNum.getExitTime());
map.put("exitUploadFile",einNum.getExitUploadFile());
map.put("noExitUploadFile",einNum.getNoExitUploadFile());
}else{
map.put("einNumHis",0);
map.put("exitNum",0);
map.put("einTime","");
map.put("exitTime","");
map.put("exitUploadFile",0);
map.put("noExitUploadFile",0);
}
//在场灯状态
ProStatisticsPo lightStatus = subStatisticsMapper.getEinWorkerLight(homePagePo);
if(lightStatus != null){
map.put("yellowNum",lightStatus.getYellowNum());
map.put("greenNum",lightStatus.getGreenNum());
map.put("yellowThanSevenDayNum",lightStatus.getYellowThanSevenDayNum());
}else{
map.put("yellowNum",0);
map.put("greenNum",0);
map.put("yellowThanSevenDayNum",0);
}
//考勤
ProStatisticsPo attAndRepair = subStatisticsMapper.getWorkerAttAndRepair(homePagePo);
if(attAndRepair != null){
map.put("attNumHis",attAndRepair.getAttNumHis());
map.put("repairPersonNum",attAndRepair.getRepairPersonNum());
map.put("repairNumHis",attAndRepair.getRepairNumHis());
}else{
map.put("attNumHis",0);
map.put("repairPersonNum",0);
map.put("repairNumHis",0);
}
//申请补卡次数
int proRepairNum = subStatisticsMapper.getProRepairNum(homePagePo);
map.put("proRepairNum",proRepairNum);
//工资
ProStatisticsPo workerWage = subStatisticsMapper.getWorkerWage(homePagePo);
if(workerWage != null){
map.put("salaryMoneyNum",workerWage.getSalaryMoneyNum());
map.put("payrollNum",workerWage.getPayrollNum());
map.put("payrollWorkerTime",workerWage.getPayrollWorkerTime());
}else{
map.put("salaryMoneyNum",0);
map.put("payrollNum",0);
map.put("payrollWorkerTime",0);
}
//发放工资人数
int workerSalaryNum = subStatisticsMapper.getWorkerSalaryNum(homePagePo);
map.put("workerSalaryNum",workerSalaryNum);
return AjaxResult.success(map);
}
/**
* 分包工程信息
* @param homePagePo
* @return
*/
@Override
public List<HomePageSubProVo> getSubProMsg(HomePagePo homePagePo) {
List<HomePageSubProVo> pmSubList = subStatisticsMapper.getSubProMsg(homePagePo);
if (pmSubList.size()>0){
for (HomePageSubProVo pmSubRes:pmSubList) {
List<UploadFileVo> contractFile = fileUploadUtils.getFileList("", pmSubRes.getSubContractId().toString(), Constants.BM_SUB_CONTRACT, "");
pmSubRes.setContractFile(contractFile);
}
}
return pmSubList;
}
/**
* 班组信息
* @param homePagePo
* @return
*/
@Override
public List<HomePageSubProVo> getSubTeamMsg(HomePagePo homePagePo) {
List<HomePageSubProVo> PmSubTeamContractList = subStatisticsMapper.getSubTeamMsg(homePagePo);
if (PmSubTeamContractList.size()>0){
for (HomePageSubProVo homePageSubProVo:PmSubTeamContractList) {
List<UploadFileVo> contractFile = fileUploadUtils.getFileList("", homePageSubProVo.getTeamId(), Constants.PM_SUB_TEAM_CONTRACT, "");
homePageSubProVo.setContractFile(contractFile);
}
}
return PmSubTeamContractList;
}
/**
* 考勤机信息
* @param homePagePo
* @return
*/
@Override
public List<PmAttDevice> getSubDeviceMsg(HomePagePo homePagePo) {
return subStatisticsMapper.getSubDeviceMsg(homePagePo);
}
/**
* 出入场信息
* @param homePagePo
* @return
*/
@Override
public List<HomePageSubProVo> getSubInOutMsg(HomePagePo homePagePo) {
return subStatisticsMapper.getSubInOutMsg(homePagePo);
}
/**
* 考勤信息
* @param homePagePo
* @return
*/
@Override
public List<HomePageSubProVo> getSubAttMsg(HomePagePo homePagePo) {
return subStatisticsMapper.getSubAttMsg(homePagePo);
}
}

View File

@ -13,7 +13,7 @@ public class OwnPermissionUtil {
SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
if("公司级".equals(sysUser.getRoleLevel())){
// map.put("comId",sysUser.getCompanyId().toString());
map.put("comId","");
// map.put("comId","");
}else if("分公司级".equals(sysUser.getRoleLevel())){
map.put("subComId", sysUser.getBandId());
}else if("项目部级".equals(sysUser.getRoleLevel())){

View File

@ -33,7 +33,8 @@
pad2.sub_id as subId,
pad2.team_id as teamId,
ps.sub_name as subName,
pst.team_name as teamName
pst.team_name as teamName,
pad2.on_line as onLine
from pm_att_device pad2
left join pm_project pp on pp.id = pad2.pro_id
left join pm_sub ps on ps.id = pad2.sub_id
@ -55,7 +56,7 @@
and pp.is_shanghai LIKE CONCAT('%', #{isShanghai}, '%')
</if>
<if test="onLine!=null and onLine!=''">
and pp.on_line = #{onLine}
and pad2.on_line = #{onLine}
</if>
<if test="proId!=null ">
and (pad2.pro_id = #{proId} or pad2.pro_id is null)

View File

@ -0,0 +1,260 @@
<?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.SubStatisticsMapper">
<select id="getSubStatisticsTable" resultType="com.bonus.bmw.domain.po.PmSub">
select
ps.id as subId,
ps.sub_name as subName,
ps.legal_person as
count(DISTINCT bsc.pro_id) as proNum,
count(DISTINCT pstc.id) as teamNum,
count(DISTINCT bwem.worker_id) as einNum
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_sub_team_contract pstc on ps.id = pstc.sub_id and pstc.is_active = '1' and pstc.team_ein_status = '1'
left join bm_worker_ein_msg bwem on ps.id =bwem.sub_id and bwem.is_active = '1' and bwem.ein_status ='1'
where ps.is_active = '1'
<if test="subName !=null and subName!= ''" >
and ps.sub_name like concat('%', #{subName}, '%')
</if>
GROUP BY
ps.id
</select>
<select id="getEinNumByHis" resultType="com.bonus.bmw.domain.vo.ProStatisticsPo">
SELECT
count(DISTINCT pp.worker_id) AS einNumHis,
min(pp.ein_time) as einTime,
max(pp.exit_time) as exitTime,
sum(if(ein_status=2 and is_upload_file = 1,1,0)) as exitUploadFile,
sum(if(ein_status=2 and is_upload_file = 0,1,0)) as noExitUploadFile
FROM
bm_worker_ein_pro_record pp
where
pp.sub_id = #{subId}
</select>
<select id="getEinWorkerLight" resultType="com.bonus.bmw.domain.vo.ProStatisticsPo">
SELECT
sum(if(light_status=1,1,0)) as yellowNum,
sum(if(light_status=2,1,0)) as greenNum,
COUNT(DISTINCT IF(light_status = 1 AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) > IF(yellow_date is null, CURRENT_DATE, yellow_date), worker_id, null)) as yellowThanSevenDayNum
FROM
bm_worker_ein_msg pp
where
pp.sub_id = #{subId}
</select>
<select id="getWorkerAttAndRepair" resultType="com.bonus.bmw.domain.vo.ProStatisticsPo">
SELECT
count(pp.worker_id) AS attNumHis,
count(DISTINCT if(pp.is_repair = 1,pp.worker_id,null)) AS repairPersonNum,
sum(if(pp.is_repair = 1,1,0)) AS repairNumHis
FROM
bm_att_person pp
WHERE
pp.sub_id = #{subId}
</select>
<select id="getProRepairNum" resultType="java.lang.Integer">
SELECT
count(bap.worker_id) AS proRepairNum
FROM
bm_att_person bap
WHERE
bap.sub_id = #{subId}
</select>
<select id="getWorkerWage" resultType="com.bonus.bmw.domain.vo.ProStatisticsPo">
SELECT
sum(tpmtr.actual_money) AS salaryMoneyNum,
count(DISTINCT tpmtr.month_id) as payrollNum,
sum(tpmtr.id) AS payrollWorkerTime
FROM
tb_pro_month_table_roster tpmtr
WHERE
tpmtr.sub_id = #{subId}
</select>
<select id="getWorkerSalaryNum" resultType="java.lang.Integer">
SELECT
count(distinct pp.user_id) AS workerSalaryNum
FROM
tb_pro_month_table_roster pp
WHERE
pp.sub_id = #{subId}
</select>
<select id="getSubProMsg" resultType="com.bonus.bmw.domain.vo.HomePageSubProVo">
SELECT
pp.id AS proId,
pp.pro_name,
bsc.sub_contract_code,
bsc.sub_contract_name,
bsc.sub_ein_status,
count(bwem.worker_id) as einNum,
count(DISTINCT bwer.worker_id) as einNumHis,
bsc.sub_ein_time,
bsc.sub_exit_time,
bsc.id as subContractId
FROM
pm_sub ps
INNER JOIN bm_sub_contract bsc ON ps.id = bsc.sub_id
And bsc.is_active = 1
INNER JOIN pm_project pp ON pp.id = bsc.pro_id and pp.is_active = 1
LEFT JOIN bm_worker_ein_msg bwem ON ps.id = bwem.sub_id
AND pp.id = bwem.pro_id
AND bwem.is_active = 1
LEFT JOIN bm_worker_ein_day_record bwer ON pp.id = bwer.pro_id
AND ps.id = bwer.sub_id
WHERE
ps.is_active = 1 AND ps.id = #{subId}
GROUP BY pp.id
</select>
<select id="getSubTeamMsg" resultType="com.bonus.bmw.domain.vo.HomePageSubProVo">
SELECT
pst.team_name,
pst.team_leader,
pst.phone,
pstc.team_ein_status,
pstc.team_ein_time,
pstc.team_exit_time,
pstc.id as teamId,
ps.sub_name,
count(DISTINCT bwem.worker_id) as einNum,
count(DISTINCT bwer.worker_id) as einNumHis
FROM
pm_sub ps
INNER JOIN bm_sub_contract bsc ON ps.id = bsc.sub_id
AND bsc.is_active = 1
INNER JOIN pm_project pp ON pp.id = bsc.pro_id
AND pp.is_active = 1
INNER JOIN pm_sub_team_contract pstc ON ps.id = pstc.sub_id
AND pstc.is_active = 1
INNER 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 ps.id = bwem.sub_id and bwem.team_id = pst.id
AND bwem.is_active = 1
LEFT JOIN bm_worker_ein_day_record bwer ON pp.id = bwer.pro_id
AND ps.id = bwer.sub_id and bwer.team_id = pst.id
WHERE
ps.is_active = 1 AND ps.id = #{subId}
GROUP BY pp.id,pst.id
</select>
<select id="getSubDeviceMsg" resultType="com.bonus.bmw.domain.po.PmAttDevice">
SELECT
pad2.device_code,
pad2.device_name,
pad2.`on_line`,
pad2.update_user,
pad2.update_time,
pp.pro_name as proName
FROM
pm_att_device pad2
left join pm_project pp on pad2.pro_id = pp.id and pp.is_active='1'
WHERE
pad2.is_active = 1 AND pad2.sub_id = #{subId}
</select>
<select id="getSubInOutMsg" resultType="com.bonus.bmw.domain.vo.HomePageSubProVo">
Select * from (
SELECT
bwepr.id,
bwepr.worker_id,
pw.`name`,
pw.`id_number`,
pw.phone,
bwepr.post_id,
bwepr.post_name,
'/' AS light_status,
bwepr.ein_status,
bwepr.ein_time,
bwepr.exit_time,
bwepr.is_upload_file,
if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) as days_since_exit,
bwepr.sub_id,
bwepr.sub_name,
bwepr.team_id,
bwepr.team_name
FROM
pm_worker pw
INNER JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id
WHERE
bwepr.sub_id = #{subId}
AND bwepr.ein_status = 2
UNION ALL
SELECT
0 as id,
bwem.worker_id,
pw.`name`,
pw.`id_number`,
pw.phone,
bwem.post_id,
bwem.post_name,
bwem.light_status,
bwem.ein_status,
bwem.ein_time,
'/' AS exit_time,
'/' AS is_upload_file,
'/' AS days_since_exit,
bwem.sub_id,
bwem.sub_name,
bwem.team_id,
bwem.team_name
FROM
pm_worker pw
INNER JOIN bm_worker_ein_msg bwem ON pw.id = bwem.worker_id
WHERE
bwem.sub_id = #{subId}
) aaa
<where>
<if test="name != null">
and aaa.name = #{name}
</if>
<if test="postId != null">
and aaa.post_id = #{postId}
</if>
<if test="subId != null">
and aaa.sub_id = #{subId}
</if>
<if test="teamId != null">
and aaa.team_id = #{teamId}
</if>
<if test="lightStatus != null">
and aaa.light_status = #{lightStatus}
</if>
<if test="einStatus != null">
and aaa.ein_status = #{einStatus}
</if>
</where>
</select>
<select id="getSubAttMsg" resultType="com.bonus.bmw.domain.vo.HomePageSubProVo">
SELECT
pw.`name` as workerName,
pw.id_number,
bap.sub_id,
bap.sub_name,
bap.team_id,
bap.team_name,
count(bap.worker_id) AS attNumHis,
sum(IF(bap.is_repair = 1, 1, 0)) AS repairNumHis
FROM
bm_att_person bap
INNER JOIN pm_worker pw ON pw.id = bap.worker_id
WHERE
bap.sub_id = #{subId}
<if test="name != null">
and pw.name = #{name}
</if>
<if test="teamId != null">
and bap.team_id = #{teamId}
</if>
<if test="subId != null">
and bap.sub_id = #{subId}
</if>
GROUP BY
pro_id,
team_id,
pw.id
</select>
</mapper>