提交代码

dev_xds
姜玉琦 2023-08-12 01:05:00 +08:00
parent 5f2fa46633
commit 2214d298e5
23 changed files with 177 additions and 54 deletions

View File

@ -65,6 +65,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="责任主体" prop="deptId" v-hasPermi="['project:project:zgs']">
<el-select v-model="queryParams.deptId" placeholder="请选择责任主体" clearable>
<el-option
v-for="dict in depts"
:key="dict.deptId"
:label="dict.deptName"
:value="dict.deptId"
></el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -134,17 +145,6 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目区域" align="center" prop="projectRegional" /> <el-table-column label="项目区域" align="center" prop="projectRegional" />
<el-table-column label="项目地址" align="left" prop="projectAddress" width="200" show-overflow-tooltip/>
<el-table-column label="建设类型" align="left" prop="projectNature" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.project_build_type" :value="scope.row.projectNature"/>
</template>
</el-table-column>
<el-table-column label="重要等级" align="left" prop="weightType" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.sur_project_weight" :value="scope.row.weightType"/>
</template>
</el-table-column>
<el-table-column label="进度展示" align="center" v-hasPermi="['project:surProject:progressVisible']"> <el-table-column label="进度展示" align="center" v-hasPermi="['project:surProject:progressVisible']">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch v-model="scope.row.progressVisible" <el-switch v-model="scope.row.progressVisible"
@ -158,6 +158,17 @@
<el-input-number size="mini" v-model="scope.row.projectSort" :min="1" :max="999" @change="setProjectSort(scope.row,$event)"></el-input-number> <el-input-number size="mini" v-model="scope.row.projectSort" :min="1" :max="999" @change="setProjectSort(scope.row,$event)"></el-input-number>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="建设类型" align="left" prop="projectNature" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.project_build_type" :value="scope.row.projectNature"/>
</template>
</el-table-column>
<el-table-column label="重要等级" align="left" prop="weightType" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.sur_project_weight" :value="scope.row.weightType"/>
</template>
</el-table-column>
<el-table-column label="项目地址" align="left" prop="projectAddress" width="200" show-overflow-tooltip/>
<el-table-column label="项目负责人" align="center" prop="projectPerson" width="100" /> <el-table-column label="项目负责人" align="center" prop="projectPerson" width="100" />
<el-table-column label="负责人电话" align="center" prop="projectPhone" width="110" /> <el-table-column label="负责人电话" align="center" prop="projectPhone" width="110" />
<el-table-column label="工程期限" align="center" prop="projectTimeLimit" /> <el-table-column label="工程期限" align="center" prop="projectTimeLimit" />
@ -220,7 +231,7 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="责任主体" prop="deptId"> <el-form-item label="责任主体" prop="deptId">
<el-select v-model="form.deptId" placeholder="请选择责任主体" style="width: 100%;" disabled > <el-select v-model="form.deptId" placeholder="请选择责任主体" style="width: 100%;" :disabled="getDeptIdDisabled()" >
<el-option <el-option
v-for="dict in depts" v-for="dict in depts"
:key="dict.deptId" :key="dict.deptId"
@ -654,7 +665,7 @@ export default {
const id = row.id || this.ids const id = row.id || this.ids
getSurProject(id).then(response => { getSurProject(id).then(response => {
this.form = response.data; this.form = response.data;
this.open = true;debugger this.open = true;
if(!this.form.projectAddress){ if(!this.form.projectAddress){
this.$refs.map.getCity(this.form,this.mapSuccess); this.$refs.map.getCity(this.form,this.mapSuccess);
} }
@ -692,6 +703,13 @@ export default {
this.formData.projectName = row.projectName; this.formData.projectName = row.projectName;
this.projectUserInfoDrawerVisible = true; this.projectUserInfoDrawerVisible = true;
}, },
getDeptIdDisabled(){
if(this.form && this.form.id){
return true;
}else{
return false;
}
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {

View File

@ -11,7 +11,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="传达时间"> <el-form-item label="提交时间">
<el-date-picker <el-date-picker
v-model="daterangeMarksTime" v-model="daterangeMarksTime"
style="width: 240px" style="width: 240px"
@ -22,17 +22,7 @@
end-placeholder="结束日期" end-placeholder="结束日期"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
<!--
<el-form-item label="数据状态" prop="isDel">
<el-select v-model="queryParams.isDel" placeholder="请选择数据状态" clearable>
<el-option
v-for="dict in dict.type.sys_common_isdel"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>-->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>

View File

@ -45,6 +45,16 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="责任主体" prop="deptId" v-hasPermi="['project:project:zgs']">
<el-select v-model="queryParams.deptId" placeholder="请选择责任主体" clearable>
<el-option
v-for="dict in depts"
:key="dict.deptId"
:label="dict.deptName"
:value="dict.deptId"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>

View File

@ -29,7 +29,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间"> <el-form-item label="传时间">
<el-date-picker <el-date-picker
v-model="daterangeMarksTime" v-model="daterangeMarksTime"
style="width: 240px" style="width: 240px"

View File

@ -132,10 +132,10 @@
<!-- </div>--> <!-- </div>-->
<div class="ssp-block"> <div class="ssp-block">
<div class="spp-block-title"> <div class="spp-block-title">
问题描述 隐患描述
</div> </div>
<div class="ssp-block-input"> <div class="ssp-block-input">
<input type="text" placeholder="请输入问题描述" id="constructionSite" v-model="form.positionPart" autocomplete="off"> <input type="text" placeholder="请输入隐患描述" id="constructionSite" v-model="form.positionPart" autocomplete="off">
</div> </div>
</div> </div>
<div class="ssp-block"> <div class="ssp-block">
@ -190,7 +190,7 @@
</div> </div>
</div> </div>
<!--问题描述下拉框--> <!--隐患描述下拉框-->
<!-- <div class="ssp-select-fixed" id="selectFixedPo"> <!-- <div class="ssp-select-fixed" id="selectFixedPo">
<div class="ssp-select-content" id="selectConPo"> <div class="ssp-select-content" id="selectConPo">
<ul class="spp-select-ul"> <ul class="spp-select-ul">

View File

@ -160,7 +160,7 @@
</div> </div>
</div> </div>
<!--问题描述 下拉框--> <!--隐患描述 下拉框-->
<div class="ssp-select-fixed" id="selectFixedPo"> <div class="ssp-select-fixed" id="selectFixedPo">
<div class="ssp-select-content" id="selectConPo"> <div class="ssp-select-content" id="selectConPo">
<ul class="spp-select-ul"> <ul class="spp-select-ul">

View File

@ -108,11 +108,11 @@
</div> </div>
<div class="ssp-block"> <div class="ssp-block">
<div class="spp-block-title"> <div class="spp-block-title">
问题描述 隐患描述
</div> </div>
<div class="ssp-ri-textarea"> <div class="ssp-ri-textarea">
<textarea placeholder="请输入问题描述" id="constructionSite"></textarea> <textarea placeholder="请输入隐患描述" id="constructionSite"></textarea>
<!-- <input type="text" placeholder="请填写问题描述" id="constructionSite" >--> <!-- <input type="text" placeholder="请填写隐患描述" id="constructionSite" >-->
<!--onclick="constructionSite()"--> <!--onclick="constructionSite()"-->
</div> </div>
</div> </div>
@ -558,7 +558,7 @@
var videoUrl = $("#bigFile").val(); var videoUrl = $("#bigFile").val();
//隐患类型 //隐患类型
var projectType = $("#projectType").val(); var projectType = $("#projectType").val();
//问题描述 //隐患描述
var constructionSite = $("#constructionSite").val(); var constructionSite = $("#constructionSite").val();
//整改要求 //整改要求
var changeText = $("#changeText").val(); var changeText = $("#changeText").val();
@ -596,7 +596,7 @@
if(constructionSite == "" || constructionSite == null) { if(constructionSite == "" || constructionSite == null) {
hideLoading(); hideLoading();
toast({ toast({
message:"请填写问题描述", message:"请填写隐患描述",
time:3000 time:3000
}); });
return false; return false;

View File

@ -464,7 +464,7 @@
'<div class="ssp-record-name">'+result.publishMarks[i].positionPart+'</div>'+ '<div class="ssp-record-name">'+result.publishMarks[i].positionPart+'</div>'+
'<table class="ssp-record-table">'+ '<table class="ssp-record-table">'+
'<tr>'+ '<tr>'+
'<td>'+'问题描述:'+'</td>'+ '<td>'+'隐患描述:'+'</td>'+
'<td>'+result.publishMarks[i].positionPart+'</td>'+ '<td>'+result.publishMarks[i].positionPart+'</td>'+
'</tr>'+ '</tr>'+
'<tr>'+ '<tr>'+

View File

@ -474,7 +474,7 @@
'<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+ '<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+
'<table class="ssp-record-table">'+ '<table class="ssp-record-table">'+
'<tr>'+ '<tr>'+
'<td>'+'问题描述:'+'</td>'+ '<td>'+'隐患描述:'+'</td>'+
'<td>'+result.publishMarksMy[i].positionPart+'</td>'+ '<td>'+result.publishMarksMy[i].positionPart+'</td>'+
'</tr>'+ '</tr>'+
'<tr>'+ '<tr>'+
@ -504,7 +504,7 @@
'<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+ '<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+
'<table class="ssp-record-table">'+ '<table class="ssp-record-table">'+
'<tr>'+ '<tr>'+
'<td>'+'问题描述:'+'</td>'+ '<td>'+'隐患描述:'+'</td>'+
'<td>'+result.publishMarksMy[i].positionPart+'</td>'+ '<td>'+result.publishMarksMy[i].positionPart+'</td>'+
'</tr>'+ '</tr>'+
'<tr>'+ '<tr>'+

View File

@ -77,7 +77,7 @@
</div> </div>
<div class="ssp-block"> <div class="ssp-block">
<div class="spp-block-title"> <div class="spp-block-title">
问题描述 隐患描述
</div> </div>
<div class="ssp-block-word" th:text="${dbSSpMark.positionPart}"> <div class="ssp-block-word" th:text="${dbSSpMark.positionPart}">

View File

@ -132,10 +132,10 @@
<!-- </div>--> <!-- </div>-->
<div class="ssp-block"> <div class="ssp-block">
<div class="spp-block-title"> <div class="spp-block-title">
问题描述 隐患描述
</div> </div>
<div class="ssp-block-input"> <div class="ssp-block-input">
<input type="text" placeholder="请输入问题描述" id="constructionSite" v-model="form.positionPart" autocomplete="off"> <input type="text" placeholder="请输入隐患描述" id="constructionSite" v-model="form.positionPart" autocomplete="off">
</div> </div>
</div> </div>
<div class="ssp-block"> <div class="ssp-block">
@ -190,7 +190,7 @@
</div> </div>
</div> </div>
<!--问题描述下拉框--> <!--隐患描述下拉框-->
<!-- <div class="ssp-select-fixed" id="selectFixedPo"> <!-- <div class="ssp-select-fixed" id="selectFixedPo">
<div class="ssp-select-content" id="selectConPo"> <div class="ssp-select-content" id="selectConPo">
<ul class="spp-select-ul"> <ul class="spp-select-ul">

View File

@ -160,7 +160,7 @@
</div> </div>
</div> </div>
<!--问题描述 下拉框--> <!--隐患描述 下拉框-->
<div class="ssp-select-fixed" id="selectFixedPo"> <div class="ssp-select-fixed" id="selectFixedPo">
<div class="ssp-select-content" id="selectConPo"> <div class="ssp-select-content" id="selectConPo">
<ul class="spp-select-ul"> <ul class="spp-select-ul">

View File

@ -108,11 +108,11 @@
</div> </div>
<div class="ssp-block"> <div class="ssp-block">
<div class="spp-block-title"> <div class="spp-block-title">
问题描述 隐患描述
</div> </div>
<div class="ssp-ri-textarea"> <div class="ssp-ri-textarea">
<textarea placeholder="请输入问题描述" id="constructionSite"></textarea> <textarea placeholder="请输入隐患描述" id="constructionSite"></textarea>
<!-- <input type="text" placeholder="请填写问题描述" id="constructionSite" >--> <!-- <input type="text" placeholder="请填写隐患描述" id="constructionSite" >-->
<!--onclick="constructionSite()"--> <!--onclick="constructionSite()"-->
</div> </div>
</div> </div>
@ -558,7 +558,7 @@
var videoUrl = $("#bigFile").val(); var videoUrl = $("#bigFile").val();
//隐患类型 //隐患类型
var projectType = $("#projectType").val(); var projectType = $("#projectType").val();
//问题描述 //隐患描述
var constructionSite = $("#constructionSite").val(); var constructionSite = $("#constructionSite").val();
//整改要求 //整改要求
var changeText = $("#changeText").val(); var changeText = $("#changeText").val();
@ -596,7 +596,7 @@
if(constructionSite == "" || constructionSite == null) { if(constructionSite == "" || constructionSite == null) {
hideLoading(); hideLoading();
toast({ toast({
message:"请填写问题描述", message:"请填写隐患描述",
time:3000 time:3000
}); });
return false; return false;

View File

@ -463,7 +463,7 @@
'<div class="ssp-record-name">'+result.publishMarks[i].positionPart+'</div>'+ '<div class="ssp-record-name">'+result.publishMarks[i].positionPart+'</div>'+
'<table class="ssp-record-table">'+ '<table class="ssp-record-table">'+
'<tr>'+ '<tr>'+
'<td>'+'问题描述:'+'</td>'+ '<td>'+'隐患描述:'+'</td>'+
'<td>'+result.publishMarks[i].positionPart+'</td>'+ '<td>'+result.publishMarks[i].positionPart+'</td>'+
'</tr>'+ '</tr>'+
'<tr>'+ '<tr>'+

View File

@ -474,7 +474,7 @@
'<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+ '<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+
'<table class="ssp-record-table">'+ '<table class="ssp-record-table">'+
'<tr>'+ '<tr>'+
'<td>'+'问题描述:'+'</td>'+ '<td>'+'隐患描述:'+'</td>'+
'<td>'+result.publishMarksMy[i].positionPart+'</td>'+ '<td>'+result.publishMarksMy[i].positionPart+'</td>'+
'</tr>'+ '</tr>'+
'<tr>'+ '<tr>'+
@ -504,7 +504,7 @@
'<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+ '<div class="ssp-record-name">'+result.publishMarksMy[i].positionPart+'</div>'+
'<table class="ssp-record-table">'+ '<table class="ssp-record-table">'+
'<tr>'+ '<tr>'+
'<td>'+'问题描述:'+'</td>'+ '<td>'+'隐患描述:'+'</td>'+
'<td>'+result.publishMarksMy[i].positionPart+'</td>'+ '<td>'+result.publishMarksMy[i].positionPart+'</td>'+
'</tr>'+ '</tr>'+
'<tr>'+ '<tr>'+

View File

@ -77,7 +77,7 @@
</div> </div>
<div class="ssp-block"> <div class="ssp-block">
<div class="spp-block-title"> <div class="spp-block-title">
问题描述 隐患描述
</div> </div>
<div class="ssp-block-word" th:text="${dbSSpMark.positionPart}"> <div class="ssp-block-word" th:text="${dbSSpMark.positionPart}">

View File

@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@RequestMapping("/bgscreen/workfile") @RequestMapping("/bgscreen/workfile")
public class WorkFileConller extends BaseController { public class BgWorkFileController extends BaseController {
@Autowired @Autowired
IWorkFileService workFileService; IWorkFileService workFileService;

View File

@ -0,0 +1,38 @@
package com.yanzhu.jh.bigscreen.web.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.StringUtils;
import com.yanzhu.jh.work.domain.WorkTrain;
import com.yanzhu.jh.work.service.IWorkTrainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Conller
*/
@RestController
@RequestMapping("/bgscreen/workTrain")
public class BgWorkTrainController extends BaseController {
@Autowired
IWorkTrainService workTrainService;
/**
*
* @param trainType
* @return
*/
@GetMapping("/getWorkTrainList")
public TableDataInfo getWorkTrainList(String trainType,String deptId){
WorkTrain workTrain = new WorkTrain();
workTrain.setTrainType(trainType);
if(StringUtils.isNotBlank(deptId)){
workTrain.setDeptId(Convert.toLong(deptId));
}
return getDataTable(workTrainService.selectBgscreenWorkTrainList(workTrain));
}
}

View File

@ -67,7 +67,9 @@ public class WorkTrain extends BaseEntity
private String trainDeptIds; private String trainDeptIds;
private String trainDeptNames; private String trainDeptNames;
private String trainNatureName;
private String vDel; private String vDel;
private Long deptId;//子公司查询使用
public void setId(Long id) public void setId(Long id)
{ {
@ -200,6 +202,22 @@ public class WorkTrain extends BaseEntity
this.trainDeptNames = trainDeptNames; this.trainDeptNames = trainDeptNames;
} }
public String getTrainNatureName() {
return trainNatureName;
}
public void setTrainNatureName(String trainNatureName) {
this.trainNatureName = trainNatureName;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -28,6 +28,14 @@ public interface WorkTrainMapper
*/ */
public List<WorkTrain> selectWorkTrainList(WorkTrain workTrain); public List<WorkTrain> selectWorkTrainList(WorkTrain workTrain);
/**
*
*
* @param workTrain
* @return
*/
public List<WorkTrain> selectBgscreenWorkTrainList(WorkTrain workTrain);
/** /**
* *
* *

View File

@ -27,6 +27,14 @@ public interface IWorkTrainService
*/ */
public List<WorkTrain> selectWorkTrainList(WorkTrain workTrain); public List<WorkTrain> selectWorkTrainList(WorkTrain workTrain);
/**
*
*
* @param workTrain
* @return
*/
public List<WorkTrain> selectBgscreenWorkTrainList(WorkTrain workTrain);
/** /**
* *
* *

View File

@ -48,6 +48,17 @@ public class WorkTrainServiceImpl implements IWorkTrainService
return workTrainMapper.selectWorkTrainList(workTrain); return workTrainMapper.selectWorkTrainList(workTrain);
} }
/**
*
*
* @param workTrain
* @return
*/
@Override
public List<WorkTrain> selectBgscreenWorkTrainList(WorkTrain workTrain) {
return workTrainMapper.selectBgscreenWorkTrainList(workTrain);
}
/** /**
* *
* *

View File

@ -22,6 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="vDel" column="v_del" /> <result property="vDel" column="v_del" />
<result property="trainNatureName" column="train_nature_name" />
</resultMap> </resultMap>
<resultMap id="WorkTrainWorkTrainDeptResult" type="WorkTrain" extends="WorkTrainResult"> <resultMap id="WorkTrainWorkTrainDeptResult" type="WorkTrain" extends="WorkTrainResult">
@ -62,7 +63,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="isDel != null "> and wt.is_del = #{isDel}</if> <if test="isDel != null "> and wt.is_del = #{isDel}</if>
<if test="params.beginMarksTime != null and params.beginMarksTime != '' and params.endMarksTime != null and params.endMarksTime != ''"> and ((wt.begin_date between #{params.beginMarksTime} and #{params.endMarksTime}) or (wt.end_date between #{params.beginMarksTime} and #{params.endMarksTime}) )</if> <if test="params.beginMarksTime != null and params.beginMarksTime != '' and params.endMarksTime != null and params.endMarksTime != ''"> and ((wt.begin_date between #{params.beginMarksTime} and #{params.endMarksTime}) or (wt.end_date between #{params.beginMarksTime} and #{params.endMarksTime}) )</if>
</where> </where>
group by wt.train_id group by wt.id
order by wt.create_time desc
</select>
<select id="selectBgscreenWorkTrainList" parameterType="WorkTrain" resultMap="WorkTrainResult">
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_nature, sdd.dict_label as train_nature_name, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames
from work_train wt
left join work_train_dept wtd on wtd.train_id = wt.id
left join sys_dept sd on sd.dept_id = wtd.dept_id
<if test='trainType != null and trainType == "0"'> left join sys_dict_data sdd on sdd.dict_type = 'train_nature_zxpx' and wt.train_nature = sdd.dict_value</if>
<if test='trainType != null and trainType == "1"'> left join sys_dict_data sdd on sdd.dict_type = 'train_nature_yjyl' and wt.train_nature = sdd.dict_value</if>
RIGHT JOIN (
select gr.train_nature as gr_type ,max(gr.id) as maxid from work_train gr
left join sur_project sp on sp.id = gr.project_id
<where>
and gr.is_del=0
<if test="deptId != null"> and sp.deptId = #{deptId}</if>
<if test="trainType != null and trainType != ''"> and gr.train_type = #{trainType}</if>
</where>
group by gr.train_nature) as group_train on group_train.maxid = wt.id
where wt.is_del=0
group by wt.id
order by wt.create_time desc order by wt.create_time desc
</select> </select>