提交代码

dev_xds
姜玉琦 2024-06-04 00:12:08 +08:00
parent 77a813b926
commit e97597db8e
18 changed files with 156 additions and 37 deletions

View File

@ -481,9 +481,11 @@ public class LabourApiController extends BaseController {
if(req.getDataSign(sysApplyConfig.getPrivateKey())){
try {
SurProjectAttendanceData surProjectAttendanceData = JSONObject.parseObject(req.getData(), SurProjectAttendanceData.class);
String cacheKey = CACHEKEY + surProjectAttendanceData.getWorkerId();
Boolean cacheValue = Convert.toBool(redisCache.getCacheObject(cacheKey),true);
//30秒内未重复请求
if(Convert.toBool(redisCache.getCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId()),true)){
redisCache.setCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId(),false,60, TimeUnit.SECONDS);
if(cacheValue){
redisCache.setCacheObject(cacheKey,false,60, TimeUnit.SECONDS);
//判断base64图片
if(StringUtils.isNotEmpty(surProjectAttendanceData.getScanPhotoBase64())){
String filePath = FileUploadUtils.uploadImages(RuoYiConfig.getUploadPath(), MultipartFileUtils.base64ToMultipartFile(surProjectAttendanceData.getScanPhotoBase64()));
@ -578,6 +580,7 @@ public class LabourApiController extends BaseController {
throw new Exception(messages);
}
}else{
log.info("短时间重复打卡请求,本次已忽略...{}SUCCESS",cacheKey);
return success("短时间重复打卡请求,本次已忽略...{}SUCCESS");
}
}catch (Exception e){
@ -638,8 +641,11 @@ public class LabourApiController extends BaseController {
}
for(SurProjectAttendanceData surProjectAttendanceData:surProjectAttendanceDataList){
//30秒内未重复请求
if(Convert.toBool(redisCache.getCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId()),true)){
redisCache.setCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId(),false,60, TimeUnit.SECONDS);
String cacheKey = CACHEKEY + surProjectAttendanceData.getWorkerId();
Boolean cacheValue = Convert.toBool(redisCache.getCacheObject(cacheKey),true);
//30秒内未重复请求
if(cacheValue){
redisCache.setCacheObject(cacheKey,false,60, TimeUnit.SECONDS);
//判断base64图片
if(StringUtils.isNotEmpty(surProjectAttendanceData.getScanPhotoBase64())){
String filePath = FileUploadUtils.uploadImages(RuoYiConfig.getUploadPath(), MultipartFileUtils.base64ToMultipartFile(surProjectAttendanceData.getScanPhotoBase64()));
@ -716,6 +722,8 @@ public class LabourApiController extends BaseController {
surProjectAttendanceData.setCreateTime(new Date());
saveList.add(surProjectAttendanceData);
}
}else{
log.info("短时间重复打卡请求,本次已忽略...{}SUCCESS",cacheKey);
}
}
if(StringUtils.isNotEmpty(saveList)){

View File

@ -171,7 +171,7 @@
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="投诉时间" align="center" prop="createTime">
<el-table-column label="投诉时间" align="center" prop="createTime" width="140">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>

View File

@ -49,7 +49,7 @@
<dict-tag :options="dict.type.check_detection_check_type" :value="scope.row.checkType" />
</template>
</el-table-column>
<el-table-column label="材料名称" align="center" prop="materialName" width="160">
<el-table-column label="材料名称" align="center" prop="materialName" width="120">
<template slot-scope="scope">
<div>{{ scope.row.materialName }}</div>
<div>{{ scope.row.usePosition }}</div>
@ -68,7 +68,7 @@
<div>{{ scope.row.witnessUser }}</div>
</template>
</el-table-column>
<el-table-column label="送检时间" align="center" prop="checkTime" width="150">
<el-table-column label="送检时间" align="center" prop="checkTime" width="100">
<template slot-scope="scope">
<div>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</div>
<div>{{ scope.row.laboratoryName }}</div>
@ -87,6 +87,11 @@
<dict-tag :options="dict.type.project_check_status" :value="scope.row.approveStatus" />
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="180" fixed="right" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-if="scope.row.checkState == '2'" size="mini" type="text" icon="el-icon-paperclip"

View File

@ -139,7 +139,7 @@
</template>
</el-table-column>
<el-table-column label="实验室名称" align="center" prop="laboratoryName" width="150" show-overflow-tooltip />
<el-table-column label="送检时间" align="center" prop="checkTime" width="95">
<el-table-column label="送检时间" align="center" prop="checkTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</span>
</template>
@ -157,12 +157,12 @@
<dict-tag :options="dict.type.project_check_status" :value="scope.row.approveStatus" />
</template>
</el-table-column>
<el-table-column label="提交用户" align="center" prop="createBy" width="110" />
<el-table-column label="提交时间" align="center" prop="createTime" width="95">
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="提交用户" align="center" prop="createBy" width="110" />
<el-table-column label="登记结果用户" align="center" prop="updateBy" width="110" />
<el-table-column label="登记结果时间" align="center" prop="updateTime" width="110">
<template slot-scope="scope">

View File

@ -224,9 +224,9 @@
width="120"
show-overflow-tooltip
/>
<el-table-column label="封样时间" align="center" prop="sealDate" width="180">
<el-table-column label="封样时间" align="center" prop="sealDate" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d} {h}:{i}") }}</span>
<span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="审批状态" align="center" prop="approveStatus" width="120">
@ -284,7 +284,11 @@
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"

View File

@ -51,24 +51,24 @@
@click="onPreview(scope.row.imageUrls)"></el-image>
</template>
</el-table-column>
<el-table-column label="封样名称" align="center" prop="materialName" width="250">
<el-table-column label="封样名称" align="center" prop="materialName" width="230">
<template slot-scope="scope">
<div>{{ scope.row.materialName }}</div>
<div>{{ scope.row.usePosition }}</div>
</template>
</el-table-column>
<el-table-column label="品牌" align="center" prop="contractBrand" width="200">
<el-table-column label="品牌" align="center" prop="contractBrand" width="180">
<template slot-scope="scope">
<div>指定{{ scope.row.contractBrand }}</div>
<div>拟用{{ scope.row.useBrand }}</div>
</template>
</el-table-column>
<el-table-column label="封样时间" align="center" prop="sealDate" width="120">
<el-table-column label="封样时间" align="center" prop="sealDate" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d} {h}:{i}") }}</span>
<span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="监理专员" align="center" prop="witnessUser" width="120" show-overflow-tooltip>
<el-table-column label="监理专员" align="center" prop="witnessUser" width="110" show-overflow-tooltip>
<template slot-scope="scope">
<div>{{ scope.row.witnessUserName }}</div>
<div>{{ scope.row.witnessUser }}</div>
@ -79,7 +79,7 @@
<dict-tag :options="dict.type.project_checking_result" :value="scope.row.materialResult" />
</template>
</el-table-column> -->
<el-table-column label="审批状态" align="center" prop="approveStatus" width="120">
<el-table-column label="审批状态" align="center" prop="approveStatus" width="110">
<template slot-scope="scope">
<dict-tag :options="dict.type.project_check_status" :value="scope.row.approveStatus" />
</template>
@ -99,6 +99,11 @@
<span v-if="scope.row.signFiles == null"> - </span>
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.approveStatus != null" size="mini" type="text" icon="el-icon-tickets"

View File

@ -308,7 +308,7 @@
label="验收时间"
align="center"
prop="checkingDate"
width="180"
width="100"
show-overflow-tooltip
>
<template slot-scope="scope">
@ -336,6 +336,11 @@
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"

View File

@ -63,19 +63,19 @@
<el-table-column label="验收工序部位" align="left" prop="checkWorkingPosition" show-overflow-tooltip />
<el-table-column label="验收描述" align="left" prop="intro" show-overflow-tooltip />
<el-table-column label="质量专员" align="left" prop="qualityUser" width="120" show-overflow-tooltip>
<el-table-column label="质量专员" align="left" prop="qualityUser" width="110" show-overflow-tooltip>
<template slot-scope="scope">
<div>{{ scope.row.qualityUserName }}</div>
<div>{{ scope.row.qualityUser }}</div>
</template>
</el-table-column>
<el-table-column label="监理专员" align="left" prop="superviseUser" width="120" show-overflow-tooltip>
<el-table-column label="监理专员" align="left" prop="superviseUser" width="110" show-overflow-tooltip>
<template slot-scope="scope">
<div>{{ scope.row.superviseUserName }}</div>
<div>{{ scope.row.superviseUser }}</div>
</template>
</el-table-column>
<el-table-column label="验收时间" align="center" prop="checkingDate" width="140" show-overflow-tooltip>
<el-table-column label="验收时间" align="center" prop="checkingDate" width="100" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkingDate, "{y}-{m}-{d}") }}</span>
</template>
@ -93,6 +93,11 @@
<dict-tag :options="dict.type.project_check_status" :value="scope.row.approveStatus" />
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.files.length>0" size="mini" type="text" icon="el-icon-paperclip"

View File

@ -231,7 +231,7 @@
width="140"
show-overflow-tooltip
/>
<el-table-column label="测量时间" align="center" prop="measureTime" width="160">
<el-table-column label="测量时间" align="center" prop="measureTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span>
</template>
@ -285,6 +285,11 @@
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"

View File

@ -64,7 +64,7 @@
</template>
</el-table-column>
<el-table-column label="测量部位" align="center" prop="measurePosition" width="150" show-overflow-tooltip />
<el-table-column label="测量时间" align="center" prop="measureTime" width="160">
<el-table-column label="测量时间" align="center" prop="measureTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span>
</template>
@ -78,7 +78,7 @@
/>
</template>
</el-table-column> -->
<el-table-column label="审批状态" align="center" prop="approveStatus" width="120">
<el-table-column label="审批状态" align="center" prop="approveStatus" width="100">
<template slot-scope="scope">
<dict-tag :options="dict.type.project_check_status" :value="scope.row.approveStatus" />
</template>
@ -95,6 +95,11 @@
<div>{{ scope.row.superviseUser }}</div>
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.measureFiles != null" size="mini" type="text" icon="el-icon-paperclip"

View File

@ -234,6 +234,7 @@
<el-select
v-model="scope.row.copySendUser"
placeholder="请选择抄送人"
multiple filterable
style="width: 100%"
@change="selectCopySendUser($event, scope.row)"
>
@ -290,7 +291,7 @@
<el-date-picker
v-model="scope.row.nickedTime"
type="date"
value-format="yyyy-MM-dd HH:ss"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择截至时间"
style="width: 160px"
>
@ -555,6 +556,7 @@ export default {
return false;
}
this.loading = true;
row.copySendUser = row.copySendUser.toString();
updateSmzSspProblemmodifyDraft(row).then((response) => {
this.$modal.msgSuccess("提交成功!");
this.loading = false;
@ -610,6 +612,9 @@ export default {
rows.push(row);
}
this.loading = true;
for (let i = 0; i < rows.length; i++){
rows[i].copySendUser = rows[i].copySendUser.toString();
}
batchUpdateSmzSspProblemmodifyDraft(rows).then((response) => {
this.$modal.msgSuccess("提交成功!");
this.loading = false;
@ -675,15 +680,16 @@ export default {
break;
}
}
let ls = [];;
for (let i = 0; i < data.length; i++) {
for (let us = 0; us < data[i].userinfoList.length; us++) {
let u = data[i].userinfoList[us];
if (u.phonenumber == val) {
row.copySend = u.nickName + " [" + u.jobTypeName + "] ";
return false;
if (val.includes(u.phonenumber)) {
ls.push(u.nickName + " [" + u.jobTypeName + "]");
}
}
}
row.copySend = ls.toString();
},
selectRecheckSendUser(val, row) {
let data = [];

View File

@ -231,6 +231,7 @@
<el-select
v-model="scope.row.copySendUser"
placeholder="请选择抄送人"
multiple filterable
style="width: 100%"
@change="selectCopySendUser($event, scope.row)"
>
@ -287,7 +288,7 @@
<el-date-picker
v-model="scope.row.nickedTime"
type="date"
value-format="yyyy-MM-dd HH:ss"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择截至时间"
style="width: 160px"
>
@ -552,6 +553,7 @@ export default {
return false;
}
this.loading = true;
row.copySendUser = row.copySendUser.toString();
updateSmzSspProblemmodifyDraft(row).then((response) => {
this.$modal.msgSuccess("提交成功!");
this.loading = false;
@ -607,6 +609,9 @@ export default {
rows.push(row);
}
this.loading = true;
for (let i = 0; i < rows.length; i++){
rows[i].copySendUser = rows[i].copySendUser.toString();
}
batchUpdateSmzSspProblemmodifyDraft(rows).then((response) => {
this.$modal.msgSuccess("提交成功!");
this.loading = false;
@ -672,15 +677,16 @@ export default {
break;
}
}
let ls = [];;
for (let i = 0; i < data.length; i++) {
for (let us = 0; us < data[i].userinfoList.length; us++) {
let u = data[i].userinfoList[us];
if (u.phonenumber == val) {
row.copySend = u.nickName + " [" + u.jobTypeName + "] ";
return false;
if (val.includes(u.phonenumber)) {
ls.push(u.nickName + " [" + u.jobTypeName + "]");
}
}
}
row.copySend = ls.toString();
},
selectRecheckSendUser(val, row) {
let data = [];

View File

@ -86,7 +86,7 @@ public class ProjectAttendanceController extends BaseController {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);
where.setAttendanceOutTime(DateUtil.format(calendar.getTime(),DateUtils.YYYY_MM_DD));
calendar.add(Calendar.DAY_OF_MONTH, -7);
calendar.add(Calendar.DAY_OF_MONTH, -6);
where.setAttendanceTime(DateUtil.format(calendar.getTime(),DateUtils.YYYY_MM_DD));
List<Map<String, Object>> list = attendanceDataService.findGroupAllByDays(where);
Map<String, Object> data = new HashMap<>();

View File

@ -54,7 +54,7 @@ public class FlowLabourInfoController extends BaseController
flowLabourInfo.setNowDept(Convert.toStr(getDeptId()));
}
flowLabourInfo.setNowUser(Convert.toStr(getUserId()));
List<FlowLabourInfo> list = flowLabourInfoService.selectFlowLabourInfoList(flowLabourInfo);
List<FlowLabourInfo> list = flowLabourInfoService.selectFlowLabourInfoListV2(flowLabourInfo);
return getDataTable(list);
}

View File

@ -37,6 +37,14 @@ public interface FlowLabourInfoMapper
*/
public List<FlowLabourInfo> selectFlowLabourInfoList(FlowLabourInfo flowLabourInfo);
/**
*
*
* @param flowLabourInfo
* @return
*/
public List<FlowLabourInfo> selectFlowLabourInfoListV2(FlowLabourInfo flowLabourInfo);
/**
*
*

View File

@ -39,6 +39,14 @@ public interface IFlowLabourInfoService
*/
public List<FlowLabourInfo> selectFlowLabourInfoList(FlowLabourInfo flowLabourInfo);
/**
*
*
* @param flowLabourInfo
* @return
*/
public List<FlowLabourInfo> selectFlowLabourInfoListV2(FlowLabourInfo flowLabourInfo);
/**
*
*

View File

@ -72,6 +72,20 @@ public class FlowLabourInfoServiceImpl implements IFlowLabourInfoService
return flowLabourInfoMapper.selectFlowLabourInfoList(flowLabourInfo);
}
/**
*
*
* @param flowLabourInfo
* @return
*/
public List<FlowLabourInfo> selectFlowLabourInfoListV2(FlowLabourInfo flowLabourInfo){
if(Convert.toInt(flowLabourInfo.getNowRole(),1)>4){
//这里总包只能审批自己单位数据
flowLabourInfo.setDeptId(Convert.toLong(flowLabourInfo.getNowDept()));
}
return flowLabourInfoMapper.selectFlowLabourInfoListV2(flowLabourInfo);
}
/**
*
*

View File

@ -77,6 +77,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by fl.approve_status desc, fl.id desc
</select>
<select id="selectFlowLabourInfoListV2" parameterType="FlowLabourInfo" resultMap="FlowLabourInfoResult">
<include refid="selectFlowLabourInfoVo"/>
<where>
fl.is_del=0
<if test="projectId != null and projectId!=0 "> and fl.project_id = #{projectId}</if>
<if test="projectName != null and projectName != ''"> and fl.project_name like concat('%', #{projectName}, '%')</if>
<if test="deptId != null and deptId!=0"> and fl.dept_id = #{deptId}</if>
<if test="deptName != null and deptName != ''"> and fl.dept_name like concat('%', #{deptName}, '%')</if>
<if test="subDeptId != null "> and fl.sub_dept_id = #{subDeptId}</if>
<if test="subDeptName != null and subDeptName != ''"> and fl.sub_dept_name like concat('%', #{subDeptName}, '%')</if>
<if test="laborName != null and laborName != ''"> and fl.labor_name like concat('%', #{laborName}, '%')</if>
<if test="laborCardId != null "> and fl.labor_cardId like concat('%', #{laborCardId}, '%')</if>
<if test="laborPhone != null and laborPhone != ''"> and fl.labor_phone = #{laborPhone}</if>
<if test="approveStatus != null and approveStatus != ''"> and fl.approve_status = #{approveStatus}</if>
<if test='activeName != null and activeName == "MyAwait"'> and fl.approve_status != 100</if>
<if test="params.beginDate != null and params.beginDate != '' and params.endDate != null and params.endDate != ''"> and date(fl.create_time) between #{params.beginDate} and #{params.endDate}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
<if test='nowRole == "4"'> and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'>
and sp.id in (select spui.projectId from sur_project_unit_info spui where spui.unitId = #{nowDept} and spui.job_type='24' and spui.del_flag=0 )
</if>
<if test='nowRole == "15" or nowRole == "16" or nowRole == "17"'> and fl.approve_status in ('10','20','21','30','31','100') and sp.id in (select spui.project_id from sur_project_userinfo spui where spui.dept_id = #{nowDept} and spui.user_id=(select su.user_id from sys_user su where su.user_id=#{nowUser}) and spui.job_type='24' and spui.is_del=0)</if>
<if test='activeName == "jxz"'>
and fl.approve_status != '100'
</if>
<if test='activeName == "ywc"'>
and fl.approve_status = 100
</if>
</where>
order by fl.approve_status desc, fl.id desc
</select>
<select id="findGroupCountByApprove" parameterType="FlowLabourInfo" resultType="Map">
select fl.approve_status as approveStatus, count(1) as total from flow_labour_info fl
left join sur_project sp on sp.id = fl.project_id
@ -104,7 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test='nowRole == "4"'> and fl.approve_status in ('20','21','31','30','100') and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and fl.approve_status in ('10','20','21','30','31','100') and sp.id in (select spui.projectId from sur_project_unit_info spui where spui.unitId = #{nowDept} and spui.job_type='24' and spui.del_flag=0 )</if>
<if test='nowRole == "15" or nowRole == "16" or nowRole == "17"'> and fl.approve_status in ('10','20','21','30','31','100') and sp.id in (select spui.project_id from sur_project_userinfo spui where spui.dept_id = #{nowDept} and spui.user_id=(select su.user_id from sys_user su where su.user_name=#{nowUser}) and spui.job_type='24' and spui.is_del=0)</if>
<if test='nowRole == "15" or nowRole == "16" or nowRole == "17"'> and fl.approve_status in ('10','20','21','30','31','100') and sp.id in (select spui.project_id from sur_project_userinfo spui where spui.dept_id = #{nowDept} and spui.user_id=(select su.user_id from sys_user su where su.user_id=#{nowUser}) and spui.job_type='24' and spui.is_del=0)</if>
</where>
group by fl.approve_status
</select>