From 9527290586e6c5f6a9c764f64dccc4c9a1c87e56 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 10 四月 2025 17:25:13 +0800
Subject: [PATCH] 代码初始化
---
admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue | 494 +++++++++++++++++++++++++++++++++++++++++
admin/src/components/business/OperaWorkorderDetailDcaWindow.vue | 98 +++-----
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java | 78 ++++++
server/src/main/java/com/doumee/dao/business/model/Workorder.java | 8
admin/src/components/business/OperaWorkorderDetailSheWindow.vue | 6
admin/src/views/business/workorderDca.vue | 2
admin/src/components/business/OperaWorkorderDetailDbhWindow.vue | 6
7 files changed, 620 insertions(+), 72 deletions(-)
diff --git a/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue b/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
index da58bc1..e67eef5 100644
--- a/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
@@ -152,9 +152,9 @@
},
cateList: {
0: 'SHE浜嬩欢宸ュ崟',
- 1: '璺岀粖婊戜簨浠跺伐鍗�',
- 2: 'DCA浜嬩欢鎻愪氦璁板綍',
- 3: 'DCA浜嬩欢宸ュ崟'
+ 1: 'DCA浜嬩欢鎻愪氦璁板綍',
+ 2: 'DCA浜嬩欢宸ュ崟',
+ 3: '璺岀粖婊戜簨浠跺伐鍗�'
}
}
},
diff --git a/admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue b/admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue
new file mode 100644
index 0000000..e5f1d30
--- /dev/null
+++ b/admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue
@@ -0,0 +1,494 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="85%"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm">
+ <div class="modal_wrap">
+ <div class="modal_content">
+ <div class="header">
+ <img v-if="info.status == '3'" class="head_bg"
+ src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
+ <img v-else-if="info.status == '4'" class="head_bg"
+ src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+ <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
+ <div class="left">
+ <div class="h1">{{ cateList[type] }}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
+ </div>
+ <div class="right" :class="{ scs: info.status == '3' || info.status == '4' || info.status == '5', msg: info.status == '6' }">{{statusMap[info.status] }}</div>
+ </div>
+ <div class="info">
+ <div class="title">宸ュ崟淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="label">鍛樺伐濮撳悕</div>
+ <div class="value">{{ info.memberName }} - {{ info.memberPhone || '[鏃犳墜鏈哄彿]' }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鎵�灞為儴闂�</div>
+ <div class="value">{{ info.companyName }} </div>
+ </div>
+ <div class="item">
+ <div class="label">涓婃姤鏃堕棿</div>
+ <div class="value">{{ info.submitDate }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍙戠敓鏃堕棿</div>
+ <div class="value">{{ info.happenTime}}</div>
+ </div>
+ <div class="item">
+ <div class="label">椋庨櫓绫诲瀷</div>
+ <div class="value">{{ info.typeName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍙戠敓鍦扮偣</div>
+ <div class="value">{{ info.locationName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">椋庨櫓鎻忚堪</div>
+ <div class="value">{{ info.riskInfo }}</div>
+ </div>
+ <div class="item" style="width: 100%">
+ <div class="label">鍥剧墖</div>
+ <div class="value" v-if="info.multifileList ==null || !info.multifileList.length">鏃�</div>
+ <div class="value" v-if="info.multifileList !=null && info.multifileList.length">
+ <div v-for="item in info.multifileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ controls
+ preload="auto"
+ style="width: 80px;height: 80px;object-fit: contain;"
+ :src="item.fileurlFull"
+ />
+ <el-image
+ v-else-if="item.fileurlFull"
+ style="width:80px; height: 80px"
+ :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="side" >
+ <div class="side_title">澶勭悊娴佺▼</div>
+ <div class="list" v-if=" info.logList != null && info.logList.length != 0
+ ">
+ <div class="item" v-for="(item, index) in info.logList" :key="item.id">
+ <div class="separate" v-if="index < info.logList.length - 1"></div>
+ <div class="info">
+ <img src="@/assets/icons/ic_dangqian.png" class="iconnew" />
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ item.title }}</div>
+ </div>
+ <div class="line">
+ <div class="company">
+ 鍛樺伐锛�<span> {{ item.userName }} / {{item.companyName}}</span>
+ <div style="display: block" >鏃堕棿锛�<span>{{item.createDate}}</span></div>
+ <div class="dealinfo">
+ <div style="display: block" v-if="item.param2" >澶勭悊浜猴細<span>{{item.param2}}</span></div>
+ <div style="display: block" v-if="item.remark" >璇存槑锛�<span>{{item.remark}}</span></div>
+ <div style="display: block;margin-top:10px" v-if="item.multifileList !=null && item.multifileList.length">
+ <div v-for="item in item.multifileList" :key="item.id" style="display: inline;margin-right: 5px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ controls
+ preload="auto"
+ style="width: 50px;height: 50px;object-fit: contain;"
+ :src="item.fileurlFull"
+ />
+ <el-image
+ v-else-if="item.fileurlFull"
+ style="width:50px; height: 50px;"
+ :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- -->
+ <template v-slot:footer>
+ <el-button @click="close">杩斿洖</el-button>
+ </template>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById } from '@/api/business/workorder'
+export default {
+ name: 'OperaWorkorderDetailDbhWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: '',
+ type: null,
+ title: '宸ュ崟璇︽儏',
+ info: {},
+ statusMap: {
+ 0: '寰呭垎閰峎TS',
+ 1: '寰呭垎閰嶄换鍔�',
+ 2: '寰呭鐞�',
+ 3: '宸茶В鍐�',
+ 4: '宸茶В鍐�',
+ 5: '宸茶В鍐�'
+ },
+ cateList: {
+ 0: 'SHE浜嬩欢宸ュ崟',
+ 1: 'DCA浜嬩欢鎻愪氦璁板綍',
+ 2: 'DCA涓嶇鍚堥」宸ュ崟',
+ 3: '璺岀粖婊戜簨浠跺伐鍗�'
+ }
+ }
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.info = target
+ this.getDetail()
+ this.type = this.info.type
+ },
+ close () {
+ this.visible = false
+ },
+ getDetail () {
+ getById(this.info.id).then(res => {
+ this.info = res
+ if (this.info.logList && this.info.logList.length > 0) {
+ this.info.logList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.approveList = []
+ }
+ })
+ }
+ })
+ },
+ reject () { },
+ handleAvatarSuccess () { },
+ beforeAvatarUpload () { }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
+.upload_box {
+ width: 84px;
+ height: 84px;
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ border: 1px solid #e4e4e4;
+
+ .icon {
+ font-size: 24px;
+ }
+
+ .text {
+ font-size: 12px;
+ }
+}
+
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+
+.modal_wrap {
+ display: flex;
+ height: 100%;
+
+ .modal_content {
+ flex: 1;
+ padding: 0px 30px;
+ border-radius: 8px;
+ overflow: hidden;
+ height: 100%;
+
+ .title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #333333;
+ margin-bottom: 20px;
+ margin-top: 30px;
+ }
+
+ .info {
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ width: 40%;
+ font-size: 14px;
+ margin-bottom: 20px;
+
+ &:nth-of-type(2n) {
+ width: 60%;
+ }
+
+ .label {
+ color: #888888;
+ width: 100px;
+ }
+
+ .value {
+ color: #111111;
+ }
+ }
+ }
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ vertical-align: center;
+ padding: 20px 30px;
+ margin: 0 -30px;
+ border-radius: 8px 8px 0 0;
+ position: relative;
+
+ .head_bg {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ z-index: 9;
+ }
+
+ .h1 {
+ font-weight: 600;
+ font-size: 22px;
+ color: #111111;
+ margin-bottom: 8px;
+ }
+
+ .time {
+ font-size: 14px;
+ color: #999999;
+ }
+
+ .right {
+ height: 40px;
+ font-size: 16px;
+ color: #ffffff;
+ line-height: 40px;
+ padding: 0 20px;
+ background: #207ff7;
+ box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+ border-radius: 16px 0px 16px 0px;
+ position: relative;
+ z-index: 99;
+ }
+
+ .scs {
+ background-color: #00BA67;
+ }
+
+ .msg {
+ background-color: #ED4545;
+ }
+ }
+
+ .table_info {
+ .name_wrap {
+ display: flex;
+ align-items: center;
+
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin-right: 12px;
+ }
+
+ .content {
+ .line {
+ display: flex;
+ }
+ .tag {
+ color: #b2cbf9;
+ border: 1px solid #b2cbf9;
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 6px;
+ }
+ }
+ }
+ }
+ }
+
+ .side {
+ height: 100%;
+ width: 420px;
+ background: #ffffff;
+ border-left: 20px solid #f7f7f7;
+
+ .list {
+ .item {
+ padding: 8px 0;
+ position: relative;
+
+ .separate {
+ position: absolute;
+ border-left: 2px dashed #cccccc;
+ left: 31px;
+ height: calc(100% - 0px);
+ top: 30px;
+ }
+
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin: 0 12px 0 16px;
+ //border: 1px solid;
+ }
+
+ .childList {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: 100px;
+ }
+
+ .company {
+ font-size: 13px;
+ color: #888888;
+ width: calc(100% - 20px);
+ .status {
+ color: $primaryColor;
+ }
+ /* span{
+ color: black;
+ }*/
+ .dealinfo{
+ background-color: #f2f2f2;
+ padding: 8px;
+ display: block;
+ margin-top: 5px;
+ width: calc(100% - 20px);
+ }
+ }
+
+ .m_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 4px;
+ }
+
+ .info {
+ display: flex;
+ /*align-items: center;*/
+ margin-left: 20px;
+
+ .icon {
+ position: relative;
+ z-index: 11;
+ color: #53b76f;
+ font-size: 24px;
+ }
+
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
+ font-size: 24px;
+ }
+
+ .iconnew {
+ width: 24px;
+ height: 24px;
+ }
+
+ .icon3 {
+ position: relative;
+ z-index: 11;
+ color: gray;
+ font-size: 24px;
+ }
+
+ .content {
+ flex: 1;
+
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-content: center;
+ margin-bottom: 6px;
+
+ .status {
+ color: #888888;
+ }
+
+ .padding {
+ color: $primaryColor;
+ }
+
+ .name {
+ font-weight: 600;
+ font-size: 16px;
+ color: #111111;
+ }
+
+ .time {
+ color: #888888;
+ }
+ }
+ }
+ }
+
+ .remark {
+ background: #f7f7f7;
+ border-radius: 4px;
+ padding: 13px 15px;
+ color: #666666;
+ margin-left: 100px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue b/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
index da58bc1..3d61b8b 100644
--- a/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
@@ -17,10 +17,8 @@
<div class="h1">{{ cateList[type] }}</div>
<div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
</div>
- <div class="right" :class="{ scs: info.status == '3' || info.status == '4' || info.status == '5', msg: info.status == '6' }">{{statusMap[info.status] }}</div>
</div>
- <div class="info">
- <div class="title">宸ュ崟淇℃伅</div>
+ <div class="info"> <div class="title">宸ュ崟淇℃伅</div>
<div class="list">
<div class="item">
<div class="label">鍛樺伐濮撳悕</div>
@@ -39,7 +37,7 @@
<div class="value">{{ info.happenTime}}</div>
</div>
<div class="item">
- <div class="label">椋庨櫓绫诲瀷</div>
+ <div class="label">瑙傚療涓婚</div>
<div class="value">{{ info.typeName }}</div>
</div>
<div class="item">
@@ -47,8 +45,12 @@
<div class="value">{{ info.locationName }}</div>
</div>
<div class="item">
- <div class="label">椋庨櫓鎻忚堪</div>
- <div class="value">{{ info.riskInfo }}</div>
+ <div class="label">閫氱煡浜�</div>
+ <div class="value">{{ info.memberNames }}</div>
+ </div>
+ <div class="item">
+ <div class="label">瑙傚療椤圭粺璁�</div>
+ <div class="value" style="color: #1562e2" >绗﹀悎锛氥�恵{ info.dcaYesNum || 0 }}銆� 涓嶇鍚堬細銆� <span style="color: red" >{{(info.dcaNoNum||0)}}</span> 銆�</div>
</div>
<div class="item" style="width: 100%">
<div class="label">鍥剧墖</div>
@@ -74,68 +76,48 @@
</div>
</div>
</div>
- </div>
- <div class="side" >
- <div class="side_title">澶勭悊娴佺▼</div>
- <div class="list" v-if=" info.logList != null && info.logList.length != 0
- ">
- <div class="item" v-for="(item, index) in info.logList" :key="item.id">
- <div class="separate" v-if="index < info.logList.length - 1"></div>
- <div class="info">
- <img src="@/assets/icons/ic_dangqian.png" class="iconnew" />
- <div class="content">
- <div class="line">
- <div class="name">{{ item.title }}</div>
- </div>
- <div class="line">
- <div class="company">
- 鍛樺伐锛�<span> {{ item.userName }} / {{item.companyName}}</span>
- <div style="display: block" >鏃堕棿锛�<span>{{item.createDate}}</span></div>
- <div class="dealinfo">
- <div style="display: block" v-if="item.param2" >澶勭悊浜猴細<span>{{item.param2}}</span></div>
- <div style="display: block" v-if="item.remark" >璇存槑锛�<span>{{item.remark}}</span></div>
- <div style="display: block;margin-top:10px" v-if="item.multifileList !=null && item.multifileList.length">
- <div v-for="item in item.multifileList" :key="item.id" style="display: inline;margin-right: 5px">
- <video
- v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
- ref="videoRef"
- controls
- preload="auto"
- style="width: 50px;height: 50px;object-fit: contain;"
- :src="item.fileurlFull"
- />
- <el-image
- v-else-if="item.fileurlFull"
- style="width:50px; height: 50px;"
- :src="item.fileurlFull"
- :preview-src-list="[item.fileurlFull]">
- </el-image>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
+ <div class="table_info">
+ <div class="title">涓嶇鍚堥」宸ュ崟鍒楄〃</div>
+ <el-table :data="info.dcaChildList" border fit>
+ <el-table-column label="涓�绾т富棰�" prop="typeName" min-width="150"> </el-table-column>
+ <el-table-column label="浜岀骇涓婚" prop="categoryName" min-width="150"> </el-table-column>
+ <el-table-column label="瑙傚療椤�" prop="problemTitle" min-width="150"> </el-table-column>
+ <el-table-column label="涓嶇鍚堝師鍥�" prop="eventInfo" min-width="120" />
+ <el-table-column label="澶勭悊鐘舵��" prop="status" min-width="80">
+ <template slot-scope="{row}">
+ <span v-if="row.status ==0">寰呭鐞�</span>
+ <span v-else-if="row.status ==3 ||row.status ==4||row.status ==5">宸插鐞�</span>
+ <span v-else>澶勭悊涓�</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" prop="status" min-width="80">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.OperaWorkorderDetailDcaInfoWindow.open('DCA涓嶇鍚堥」宸ュ崟璇︽儏', row)" icon="el-icon-zoom-out" >鏌ョ湅璇︽儏</el-button>
+ <!--<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:workorder:delete']">鍒犻櫎</el-button>-->
+ </template>
+ </el-table-column>
+ </el-table>
</div>
</div>
+
</div>
<!-- -->
<template v-slot:footer>
<el-button @click="close">杩斿洖</el-button>
</template>
+ <OperaWorkorderDetailDcaInfoWindow ref="OperaWorkorderDetailDcaInfoWindow" />
</GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import OperaWorkorderDetailDcaInfoWindow from '@/components/business/OperaWorkorderDetailDcaInfoWindow'
import { getById } from '@/api/business/workorder'
export default {
name: 'OperaWorkorderDetailDbhWindow',
extends: BaseOpera,
- components: { GlobalWindow },
+ components: { GlobalWindow ,OperaWorkorderDetailDcaInfoWindow},
data () {
return {
id: '',
@@ -152,9 +134,9 @@
},
cateList: {
0: 'SHE浜嬩欢宸ュ崟',
- 1: '璺岀粖婊戜簨浠跺伐鍗�',
- 2: 'DCA浜嬩欢鎻愪氦璁板綍',
- 3: 'DCA浜嬩欢宸ュ崟'
+ 1: 'DCA浜嬩欢鎻愪氦璁板綍',
+ 2: 'DCA浜嬩欢宸ュ崟',
+ 3: '璺岀粖婊戜簨浠跺伐鍗�'
}
}
},
@@ -248,22 +230,18 @@
.list {
display: flex;
flex-wrap: wrap;
-
.item {
display: flex;
- width: 40%;
+ width: 30%;
font-size: 14px;
margin-bottom: 20px;
-
&:nth-of-type(2n) {
- width: 60%;
+ width: 30%;
}
-
.label {
color: #888888;
width: 100px;
}
-
.value {
color: #111111;
}
diff --git a/admin/src/components/business/OperaWorkorderDetailSheWindow.vue b/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
index c1f46fd..6838092 100644
--- a/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
@@ -180,9 +180,9 @@
},
cateList: {
0: 'SHE浜嬩欢宸ュ崟',
- 1: '璺岀粖婊戜簨浠跺伐鍗�',
- 2: 'DCA浜嬩欢鎻愪氦璁板綍',
- 3: 'DCA浜嬩欢宸ュ崟'
+ 1: 'DCA浜嬩欢鎻愪氦璁板綍',
+ 2: 'DCA浜嬩欢宸ュ崟',
+ 3: '璺岀粖婊戜簨浠跺伐鍗�'
}
}
},
diff --git a/admin/src/views/business/workorderDca.vue b/admin/src/views/business/workorderDca.vue
index 7fa3dd7..84848d3 100644
--- a/admin/src/views/business/workorderDca.vue
+++ b/admin/src/views/business/workorderDca.vue
@@ -61,7 +61,7 @@
<!--
<el-table-column prop="typeName" label="DCA绫诲瀷" min-width="100px"></el-table-column>
-->
- <el-table-column prop="problemTitle" label="瑙傚療涓婚" min-width="150px"></el-table-column>
+ <el-table-column prop="typeName" label="瑙傚療涓婚" min-width="150px"></el-table-column>
<el-table-column prop="dcaYesNum" label="瑙傚療椤圭粺璁�" min-width="150px">
<template slot-scope="{row}">
<span style="color: #1562e2" >绗﹀悎锛歿{row.dcaYesNum}} 涓嶇鍚堬細{{row.dcaNoNum}}</span>
diff --git a/server/src/main/java/com/doumee/dao/business/model/Workorder.java b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
index 3dcadd0..f071035 100644
--- a/server/src/main/java/com/doumee/dao/business/model/Workorder.java
+++ b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
@@ -222,6 +222,9 @@
@ApiModelProperty("椋庨櫓绫诲瀷鍚嶇О")
@TableField(exist = false)
private String typeName;
+ @ApiModelProperty("浜岀骇涓婚鍚嶇О")
+ @TableField(exist = false)
+ private String categoryName;
@ApiModelProperty("DCA闂鍚嶇О")
@TableField(exist = false)
private String problemName;
@@ -235,7 +238,8 @@
@TableField(exist = false)
private List<DCANoProblemDTO> dcaNoProblemDTOList;
-
-
+ @ApiModelProperty(value = "涓嶇鍚堥棶棰樺垪琛�(璇︽儏椤碉級")
+ @TableField(exist = false)
+ private List<Workorder> dcaChildList;
}
diff --git a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
index 60995de..c6a91b9 100644
--- a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -380,6 +380,13 @@
}
//鏌ヨ鏃ュ織淇℃伅
workorder.setLogList(this.getLogList(workorder.getId()));
+ if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){
+ //濡傛灉鏄疍CA鎻愪氦璁板綍锛屾煡璇㈠瓙宸ュ崟闆嗗悎
+ Workorder param = new Workorder();
+ param.setIsdeleted(Constants.ZERO);
+ param.setDcaRecordId(workorder.getId());
+ workorder.setDcaChildList(findList(param));
+ }
return workorder;
}
@@ -464,9 +471,72 @@
}
@Override
- public List<Workorder> findList(Workorder workorder) {
- QueryWrapper<Workorder> wrapper = new QueryWrapper<>(workorder);
- return workorderMapper.selectList(wrapper);
+ public List<Workorder> findList(Workorder pageWrap) {
+ MPJLambdaWrapper<Workorder> queryWrapper = new MPJLambdaWrapper<>();
+ pageWrap.setIsdeleted(Constants.ZERO);
+ queryWrapper
+ .selectAll(Workorder.class)
+ .selectAs(Member::getName,Workorder::getMemberName)
+ .selectAs(Member::getCompanyName,Workorder::getCompanyName)
+ .selectAs(Member::getPhone,Workorder::getMemberPhone)
+ .select(" c3.name ",Workorder::getTypeName)
+ .select(" c4.name ",Workorder::getProblemName)
+ .leftJoin(Member.class,Member::getId,Workorder::getMemberId)
+ .leftJoin(" category c3 on t.TYPE_ID = c3.id ") //椋庨櫓绫诲瀷
+ .leftJoin(" category c4 on t.PROBLEM_ID = c4.id ") //DCA闂缂栫爜
+ .eq( pageWrap.getId() != null, Workorder::getId, pageWrap.getId())
+ .eq( pageWrap.getCreator() != null, Workorder::getCreator, pageWrap.getCreator())
+ .ge( pageWrap.getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getStart( pageWrap.getCreateDate()))
+ .le( pageWrap.getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getEnd( pageWrap.getCreateDate()))
+ .eq( pageWrap.getEditor() != null, Workorder::getEditor, pageWrap.getEditor())
+ .ge( pageWrap.getEditDate() != null, Workorder::getEditDate, Utils.Date.getStart( pageWrap.getEditDate()))
+ .le( pageWrap.getEditDate() != null, Workorder::getEditDate, Utils.Date.getEnd( pageWrap.getEditDate()))
+ .eq( pageWrap.getIsdeleted() != null, Workorder::getIsdeleted, pageWrap.getIsdeleted())
+ .eq( pageWrap.getCategoryId() != null, Workorder::getCategoryId, pageWrap.getCategoryId())
+ .eq( pageWrap.getRemark() != null, Workorder::getRemark, pageWrap.getRemark())
+ .eq( pageWrap.getStatus() != null, Workorder::getStatus, pageWrap.getStatus())
+ .eq( pageWrap.getSortnum() != null, Workorder::getSortnum, pageWrap.getSortnum())
+ .eq( pageWrap.getType() != null, Workorder::getType, pageWrap.getType())
+ .eq( pageWrap.getMemberId() != null, Workorder::getMemberId, pageWrap.getMemberId())
+ .eq( pageWrap.getCompanyId() != null, Workorder::getCompanyId, pageWrap.getCompanyId())
+ .eq( pageWrap.getSubmitDate() != null, Workorder::getSubmitDate, pageWrap.getSubmitDate())
+ .eq( pageWrap.getMemberType() != null, Workorder::getMemberType, pageWrap.getMemberType())
+ .eq( pageWrap.getMemberQwids() != null, Workorder::getMemberQwids, pageWrap.getMemberQwids())
+ .like( pageWrap.getMemberNames() != null, Workorder::getMemberNames, pageWrap.getMemberNames())
+ .eq( pageWrap.getLocaltionId() != null, Workorder::getLocaltionId, pageWrap.getLocaltionId())
+ .eq( pageWrap.getOutJiuyi() != null, Workorder::getOutJiuyi, pageWrap.getOutJiuyi())
+ .eq( pageWrap.getIsYiwushi() != null, Workorder::getIsYiwushi, pageWrap.getIsYiwushi())
+ .eq( pageWrap.getIsHurted() != null, Workorder::getIsHurted, pageWrap.getIsHurted())
+ .eq( pageWrap.getWorkRelated() != null, Workorder::getWorkRelated, pageWrap.getWorkRelated())
+ .eq( pageWrap.getEventInfo() != null, Workorder::getEventInfo, pageWrap.getEventInfo())
+ .eq( pageWrap.getEmialMemberIds() != null, Workorder::getEmialMemberIds, pageWrap.getEmialMemberIds())
+ .eq( pageWrap.getQwnoticeMemberIds() != null, Workorder::getQwnoticeMemberIds, pageWrap.getQwnoticeMemberIds())
+ .eq( pageWrap.getHappenTime() != null, Workorder::getHappenTime, pageWrap.getHappenTime())
+ .eq( pageWrap.getTypeId() != null, Workorder::getTypeId, pageWrap.getTypeId())
+ .eq( pageWrap.getRiskInfo() != null, Workorder::getRiskInfo, pageWrap.getRiskInfo())
+ .eq( pageWrap.getManagerId() != null, Workorder::getManagerId, pageWrap.getManagerId())
+ .eq( pageWrap.getDealerId() != null, Workorder::getDealerId, pageWrap.getDealerId())
+ .ge( pageWrap.getDispatchTime() != null, Workorder::getDispatchTime, Utils.Date.getStart( pageWrap.getDispatchTime()))
+ .le( pageWrap.getDispatchTime() != null, Workorder::getDispatchTime, Utils.Date.getEnd( pageWrap.getDispatchTime()))
+ .eq( pageWrap.getDispatchInfo() != null, Workorder::getDispatchInfo, pageWrap.getDispatchInfo())
+ .ge( pageWrap.getDealTime() != null, Workorder::getDealTime, Utils.Date.getStart( pageWrap.getDealTime()))
+ .le( pageWrap.getDealTime() != null, Workorder::getDealTime, Utils.Date.getEnd( pageWrap.getDealTime()))
+ .eq( pageWrap.getDealInfo() != null, Workorder::getDealInfo, pageWrap.getDealInfo())
+ .eq( pageWrap.getProblemTitle() != null, Workorder::getProblemTitle, pageWrap.getProblemTitle())
+ .eq( pageWrap.getProblemId() != null, Workorder::getProblemId, pageWrap.getProblemId())
+ .eq( pageWrap.getProblemInfo() != null, Workorder::getProblemInfo, pageWrap.getProblemInfo())
+ .eq( pageWrap.getLocationName() != null, Workorder::getLocationName, pageWrap.getLocationName())
+ .like( pageWrap.getCode() != null, Workorder::getCode, pageWrap.getCode())
+ .eq( pageWrap.getDcaYesNum() != null, Workorder::getDcaYesNum, pageWrap.getDcaYesNum())
+ .eq( pageWrap.getDcaNoNum() != null, Workorder::getDcaNoNum, pageWrap.getDcaNoNum())
+ .eq( pageWrap.getDcaRecordId() != null, Workorder::getDcaRecordId, pageWrap.getDcaRecordId())
+ .eq( pageWrap.getDcaCsIds() != null, Workorder::getDcaCsIds, pageWrap.getDcaCsIds()) ;
+ if ( pageWrap.getMemberName() != null) {
+ queryWrapper.and( ms->ms.like(Member::getName, pageWrap.getMemberName())
+ .or().like(Member::getPhone, pageWrap.getMemberName()) );
+ }
+ queryWrapper.orderByDesc(Workorder::getProblemId);
+ return workorderMapper.selectJoinList(Workorder.class,queryWrapper);
}
@Override
@@ -480,11 +550,13 @@
.selectAs(Member::getName,Workorder::getMemberName)
.selectAs(Member::getCompanyName,Workorder::getCompanyName)
.selectAs(Member::getPhone,Workorder::getMemberPhone)
+ .select(" c2.name ",Workorder::getCategoryName)
.select(" c3.name ",Workorder::getTypeName)
.select(" c4.name ",Workorder::getProblemName)
.leftJoin(Member.class,Member::getId,Workorder::getMemberId)
.leftJoin(" category c3 on t.TYPE_ID = c3.id ") //椋庨櫓绫诲瀷
.leftJoin(" category c4 on t.PROBLEM_ID = c4.id ") //DCA闂缂栫爜
+ .leftJoin(" category c2 on t.CATEGORY_ID = c2.id ") //DCA闂缂栫爜
.eq(pageWrap.getModel().getId() != null, Workorder::getId, pageWrap.getModel().getId())
.eq(pageWrap.getModel().getCreator() != null, Workorder::getCreator, pageWrap.getModel().getCreator())
.ge(pageWrap.getModel().getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
--
Gitblit v1.9.3