Merge remote-tracking branch 'origin/main'

This commit is contained in:
haozq 2025-09-29 13:32:53 +08:00
commit e24321534c
11 changed files with 446 additions and 8 deletions

View File

@ -1,6 +1,8 @@
package com.bonus.bmw.controller; package com.bonus.bmw.controller;
import com.bonus.bmw.domain.dto.RepairCardApplyDto;
import com.bonus.bmw.domain.po.HomePagePo; import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.vo.HomePageSubProVo; import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.service.ProStatisticsService; import com.bonus.bmw.service.ProStatisticsService;
import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.controller.BaseController;
@ -68,6 +70,119 @@ public class ProStatisticsController extends BaseController {
return error("系统异常,请联系管理员"); return error("系统异常,请联系管理员");
} }
/**
* 分包信息
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("pro:statistics:query"))
@GetMapping("/getProSubMsg")
@SysLog(title = "分包信息", businessType = OperaType.QUERY, logType = 0, module = "工程统计->分包信息", details = "分包信息")
public TableDataInfo getProSubMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getProSubMsg(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("pro:statistics:query"))
@GetMapping("/getProTeamMsg")
@SysLog(title = "班组信息", businessType = OperaType.QUERY, logType = 0, module = "工程统计->分包信息", details = "班组信息")
public TableDataInfo getProTeamMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getProTeamMsg(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("pro:statistics:query"))
@GetMapping("/getProDeviceMsg")
@SysLog(title = "考勤机信息", businessType = OperaType.QUERY, logType = 0, module = "工程统计->考勤机信息", details = "考勤机信息")
public TableDataInfo getProDeviceMsg(HomePagePo o) {
try {
startPage();
List<PmAttDevice> list = service.getProDeviceMsg(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("pro:statistics:query"))
@GetMapping("/getProInOutMsg")
@SysLog(title = "出入场信息", businessType = OperaType.QUERY, logType = 0, module = "工程统计->出入场信息", details = "出入场信息")
public TableDataInfo getProInOutMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getProInOutMsg(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("pro:statistics:query"))
@GetMapping("/getProAttMsg")
@SysLog(title = "考勤信息", businessType = OperaType.QUERY, logType = 0, module = "工程统计->考勤信息", details = "考勤信息")
public TableDataInfo getProAttMsg(HomePagePo o) {
try {
startPage();
List<HomePageSubProVo> list = service.getProAttMsg(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("pro:statistics:query"))
@GetMapping("/getProRepairMsg")
@SysLog(title = "补卡信息", businessType = OperaType.QUERY, logType = 0, module = "工程统计->补卡信息", details = "补卡信息")
public TableDataInfo getProRepairMsg(HomePagePo o) {
try {
startPage();
List<RepairCardApplyDto> list = service.getProRepairMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}

View File

@ -43,6 +43,8 @@ public class HomePagePo {
private Integer lightStatus; private Integer lightStatus;
private Integer einStatus;
private Integer startAge; private Integer startAge;
private Integer endAge; private Integer endAge;

View File

@ -53,4 +53,16 @@ public class HomePageSubProVo {
private String attTime; private String attTime;
private String proAddress; private String proAddress;
private String subContractCode;
private String subContractName;
private Integer subEinStatus;
private String subEinTime;
private String subExitTime;
private Long einNumHis;
private String teamLeader;
private Integer teamEinStatus;
private String teamEinTime;
private String teamExitTime;
private Long attNumHis;
private Long repairNumHis;
} }

View File

@ -1,6 +1,8 @@
package com.bonus.bmw.mapper; package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.dto.RepairCardApplyDto;
import com.bonus.bmw.domain.po.HomePagePo; import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.vo.HomePageSubProVo; import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.ProStatisticsPo; import com.bonus.bmw.domain.vo.ProStatisticsPo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -24,4 +26,18 @@ public interface ProStatisticsMapper {
ProStatisticsPo getWorkerWage(HomePagePo o); ProStatisticsPo getWorkerWage(HomePagePo o);
int getWorkerSalaryNum(HomePagePo o); int getWorkerSalaryNum(HomePagePo o);
List<HomePageSubProVo> getProSubMsg(HomePagePo o);
List<HomePageSubProVo> getProTeamMsg(HomePagePo o);
List<PmAttDevice> getProDeviceMsg(HomePagePo o);
List<HomePageSubProVo> getProInOutMsg(HomePagePo o);
List<HomePageSubProVo> getProAttMsg(HomePagePo o);
List<RepairCardApplyDto> getProRepairMsg(HomePagePo o);
} }

View File

@ -1,6 +1,8 @@
package com.bonus.bmw.service; package com.bonus.bmw.service;
import com.bonus.bmw.domain.dto.RepairCardApplyDto;
import com.bonus.bmw.domain.po.HomePagePo; import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.vo.HomePageSubProVo; import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
@ -21,4 +23,47 @@ public interface ProStatisticsService {
* @return * @return
*/ */
AjaxResult getProDataOverview(HomePagePo o); AjaxResult getProDataOverview(HomePagePo o);
/**
* 获取工程分包信息
* @param o
* @return
*/
List<HomePageSubProVo> getProSubMsg(HomePagePo o);
/**
* 获取工程班组信息
* @param o
* @return
*/
List<HomePageSubProVo> getProTeamMsg(HomePagePo o);
/**
* 获取工程设备信息
* @param o
* @return
*/
List<PmAttDevice> getProDeviceMsg(HomePagePo o);
/**
* 获取工程出入场信息
* @param o
* @return
*/
List<HomePageSubProVo> getProInOutMsg(HomePagePo o);
/**
* 获取工程考勤信息
* @param o
* @return
*/
List<HomePageSubProVo> getProAttMsg(HomePagePo o);
/**
* 获取工程补卡信息
* @param o
* @return
*/
List<RepairCardApplyDto> getProRepairMsg(HomePagePo o);
} }

View File

@ -186,7 +186,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
List<WebFileDto> collect = fileMsg.stream().filter(data -> "wageCard".equals(data.getName())).collect(Collectors.toList()); List<WebFileDto> collect = fileMsg.stream().filter(data -> "wageCard".equals(data.getName())).collect(Collectors.toList());
wageCardService.updateByPrimaryKey(bmWorkerWageCard,collect); wageCardService.updateByPrimaryKey(bmWorkerWageCard,collect);
} }
if(bmWorkerContract != null && StringUtil.isNotEmpty(bmWorkerContract.getContractCode())){ if(bmWorkerContract != null && StringUtil.isNotEmpty(bmWorkerContract.getContractStartDate())){
bmWorkerContract.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName()); bmWorkerContract.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
bmWorkerContract.setWorkerId(record.getId()); bmWorkerContract.setWorkerId(record.getId());
List<WebFileDto> collect = fileMsg.stream().filter(data -> "contract".equals(data.getName())).collect(Collectors.toList()); List<WebFileDto> collect = fileMsg.stream().filter(data -> "contract".equals(data.getName())).collect(Collectors.toList());

View File

@ -1,6 +1,8 @@
package com.bonus.bmw.service.impl; package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.dto.RepairCardApplyDto;
import com.bonus.bmw.domain.po.HomePagePo; import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.po.PmAttDevice;
import com.bonus.bmw.domain.vo.HomePageSubProVo; import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.ProStatisticsPo; import com.bonus.bmw.domain.vo.ProStatisticsPo;
import com.bonus.bmw.mapper.ProStatisticsMapper; import com.bonus.bmw.mapper.ProStatisticsMapper;
@ -97,4 +99,35 @@ public class ProStatisticsServiceImpl implements ProStatisticsService {
return AjaxResult.success(map); return AjaxResult.success(map);
} }
@Override
public List<HomePageSubProVo> getProSubMsg(HomePagePo o) {
return mapper.getProSubMsg(o);
}
@Override
public List<HomePageSubProVo> getProTeamMsg(HomePagePo o) {
return mapper.getProTeamMsg(o);
}
@Override
public List<PmAttDevice> getProDeviceMsg(HomePagePo o) {
return mapper.getProDeviceMsg(o);
}
@Override
public List<HomePageSubProVo> getProInOutMsg(HomePagePo o) {
return mapper.getProInOutMsg(o);
}
@Override
public List<HomePageSubProVo> getProAttMsg(HomePagePo o) {
return mapper.getProAttMsg(o);
}
@Override
public List<RepairCardApplyDto> getProRepairMsg(HomePagePo o) {
return mapper.getProRepairMsg(o);
}
} }

View File

@ -209,12 +209,13 @@
left join pm_sub_company psc on pp.sub_com_id = psc.id left join pm_sub_company psc on pp.sub_com_id = psc.id
<where> <where>
<if test="proName != null"> <if test="proName != null">
and pp.pro_name LIKE CONCAT('%', #{proName}, '%') and pp.pro_name LIKE CONCAT('%', #{proName}, '%')
</if> </if>
<if test="proStatus != null"> <if test="proStatus != null">
and pp.pro_status = #{proStatus} and pp.pro_status = #{proStatus}
</if> </if>
</where> </where>
group by tpmt.pro_id
</select> </select>
<select id="getProjectById" resultType="com.bonus.bmw.domain.vo.PmProjectVo"> <select id="getProjectById" resultType="com.bonus.bmw.domain.vo.PmProjectVo">
select id,pro_name,pro_status,pro_type,vol_level,start_time,end_time,pro_address select id,pro_name,pro_status,pro_type,vol_level,start_time,end_time,pro_address
@ -239,6 +240,9 @@
<if test="workName != null"> <if test="workName != null">
and work_name LIKE CONCAT('%', #{workName}, '%') and work_name LIKE CONCAT('%', #{workName}, '%')
</if> </if>
<if test="userName != null">
and user_name LIKE CONCAT('%', #{userName}, '%')
</if>
<if test="onDuty != null"> <if test="onDuty != null">
and on_duty = #{onDuty} and on_duty = #{onDuty}
</if> </if>

View File

@ -90,7 +90,6 @@
</select> </select>
<select id="getProRepairNum" resultType="int"> <select id="getProRepairNum" resultType="int">
SELECT SELECT
count(pp.id) AS proRepairNum count(pp.id) AS proRepairNum
FROM FROM
@ -120,4 +119,215 @@
pp.pro_id = #{proId} pp.pro_id = #{proId}
</select> </select>
<select id="getProSubMsg" resultType="com.bonus.bmw.domain.vo.HomePageSubProVo">
SELECT
ps.id AS sub_id,
ps.sub_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
FROM
pm_project pp
INNER JOIN bm_sub_contract bsc ON pp.id = bsc.pro_id
And bsc.is_active = 1
INNER JOIN pm_sub ps ON ps.id = bsc.sub_id and ps.is_active = 1
LEFT JOIN bm_worker_ein_msg bwem ON pp.id = bwem.pro_id
AND ps.id = bwem.sub_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
pp.is_active = 1 AND pp.id = #{proId}
GROUP BY ps.id
</select>
<select id="getProTeamMsg" 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,
ps.sub_name,
count(DISTINCT bwem.worker_id) as einNum,
count(DISTINCT bwer.worker_id) as einNumHis
FROM
pm_project pp
INNER JOIN bm_sub_contract bsc ON pp.id = bsc.pro_id
AND bsc.is_active = 1
INNER JOIN pm_sub ps ON ps.id = bsc.sub_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
pp.is_active = 1 AND pp.id = #{proId}
GROUP BY ps.id,pst.id
</select>
<select id="getProDeviceMsg" resultType="com.bonus.bmw.domain.po.PmAttDevice">
SELECT
device_code,
device_name,
`on_line`,
update_user,
update_time
FROM
pm_att_device
WHERE
is_active = 1 AND pro_id = #{proId}
</select>
<select id="getProInOutMsg" 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.pro_id = #{proId}
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.pro_id = #{proId}
) 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="getProAttMsg" 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.pro_id = #{proId}
<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
sub_id,
team_id,
pw.id
</select>
<select id="getProRepairMsg" resultType="com.bonus.bmw.domain.dto.RepairCardApplyDto">
SELECT
brca.apply_time AS applyTime,
brca.repair_num AS repairNum,
brca.repair_day AS repairDay,
brca.repair_remark AS repairRemark,
brca.apply_user AS applyUser,
brca.check_status AS checkStatus,
brca.check_user AS checkUser,
brca.check_time AS checkTime,
CASE
WHEN brca.check_status = 0 THEN
'待审核'
WHEN brca.check_status = 1 THEN
'审核通过'
WHEN brca.check_status = 2 THEN
'审核未通过'
ELSE
''
END AS checkStatusName
FROM
bm_repair_card_apply brca
LEFT JOIN pm_project pp ON pp.id = brca.pro_id
WHERE
brca.pro_id = #{proId}
<if test="name != null">
and brca.apply_user = #{name}
</if>
</select>
</mapper> </mapper>

View File

@ -138,7 +138,7 @@ public class ThreeTableOneRosterTask {
List<AttProMonthPo> listRosterMonthAll = mapper.getProMonthData(lastMonth.toString()); List<AttProMonthPo> listRosterMonthAll = mapper.getProMonthData(lastMonth.toString());
for (AttProMonthPo attProMonthPo : listRosterMonthAll) { for (AttProMonthPo attProMonthPo : listRosterMonthAll) {
Integer id =mapper.getProMonthDataByTable(attProMonthPo); Integer id =mapper.getProMonthDataByTable(attProMonthPo);
if(id>0){ if(id!=null && id>0){
attProMonthPo.setId(id); attProMonthPo.setId(id);
mapper.updateProMonthData(attProMonthPo); mapper.updateProMonthData(attProMonthPo);
}else{ }else{

View File

@ -44,10 +44,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectPostAll" parameterType="com.bonus.system.api.domain.SysPost" resultMap="SysPostResult"> <select id="selectPostAll" parameterType="com.bonus.system.api.domain.SysPost" resultMap="SysPostResult">
<include refid="selectPostVo"/> <include refid="selectPostVo"/>
where 1=1 <where>
<if test="companyId != null and companyId != 0"> <if test="companyId != null and companyId != 0">
AND company_id = #{companyId} AND company_id = #{companyId}
</if> </if>
</where>
</select> </select>
<select id="selectPostById" parameterType="Long" resultMap="SysPostResult"> <select id="selectPostById" parameterType="Long" resultMap="SysPostResult">