提交代码
parent
8f8d4dbb08
commit
7c416e34ee
|
@ -9,6 +9,7 @@ import safety from "./safety";
|
|||
import tower from "./tower";
|
||||
import powerIot from "./powerIot";
|
||||
import aiWarning from "./aiWarning";
|
||||
import planSchedule from './planSchedule';
|
||||
export default {
|
||||
http: axios,
|
||||
downFile: download,
|
||||
|
@ -22,4 +23,5 @@ export default {
|
|||
tower,
|
||||
powerIot,
|
||||
aiWarning,
|
||||
planSchedule,
|
||||
};
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
import request from "@/utils/request";
|
||||
|
||||
// 查询计划管理列表
|
||||
const findAllPlanDatas = (proId) => {
|
||||
return request({
|
||||
url: `/manage/plan/findAllPlanDatas/${proId}`,
|
||||
method: "get",
|
||||
});
|
||||
};
|
||||
|
||||
// 查询项目进度列表
|
||||
const findAllSchedule = (data) => {
|
||||
return request({
|
||||
url: `/manage/schedule/findAll`,
|
||||
method: "post",
|
||||
data:data
|
||||
});
|
||||
};
|
||||
|
||||
export default {
|
||||
findAllPlanDatas,
|
||||
findAllSchedule
|
||||
};
|
|
@ -12,7 +12,7 @@
|
|||
:height="230"
|
||||
></project-overview-chart>
|
||||
</module-one-1-1>
|
||||
<module-one-1-1 label="预警概况">
|
||||
<module-one-1-1 label="预警概况" style="position: relative">
|
||||
<project-overview-chart
|
||||
:key="'ai2' + overview"
|
||||
:sp="''"
|
||||
|
@ -148,32 +148,51 @@ export default {
|
|||
overviewTotal: 0,
|
||||
legendOpt1: {
|
||||
icon: "rect",
|
||||
orient: "horizontal",
|
||||
itemWidth: "50%",
|
||||
left: 240,
|
||||
right: "10%",
|
||||
itemWidth: 20,
|
||||
itemGap: 20,
|
||||
itemHeight: 20,
|
||||
textStyle: {
|
||||
padding: [0, 0, 0, 0],
|
||||
fontSize: 10,
|
||||
color: "#c3dbfd",
|
||||
fontSize: 15,
|
||||
align: "center",
|
||||
rich: {
|
||||
name: {
|
||||
color: "#c3dbfd",
|
||||
padding: [0, 20, 0, 0],
|
||||
padding: [5, 2, 5, 2],
|
||||
},
|
||||
percent: {
|
||||
color: "#4676FD",
|
||||
padding: [0, 2, 0, 2],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
legendOpt2: {
|
||||
icon: "rect",
|
||||
orient: "horizontal",
|
||||
itemWidth: "50%",
|
||||
left: 240,
|
||||
right: "10%",
|
||||
itemWidth: 20,
|
||||
itemGap: 20,
|
||||
itemHeight: 20,
|
||||
textStyle: {
|
||||
padding: [0, 0, 2, 0],
|
||||
fontSize: 10,
|
||||
color: "#c3dbfd",
|
||||
fontSize: 14,
|
||||
rich: {
|
||||
name: {
|
||||
color: "#c3dbfd",
|
||||
padding: [0, 20, 0, 0],
|
||||
padding: [5, 2, 5, 2],
|
||||
},
|
||||
percent: {
|
||||
color: "#4676FD",
|
||||
padding: [0, 2, 0, 2],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -232,7 +251,7 @@ export default {
|
|||
],
|
||||
},
|
||||
intervalTimes: null,
|
||||
warningData:[]
|
||||
warningData: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
@ -282,23 +301,21 @@ export default {
|
|||
pageSize: this.listPage.pageSize,
|
||||
projectId: this.selProject.id,
|
||||
};
|
||||
if(this.selDate.length>0){
|
||||
if (this.selDate.length > 0) {
|
||||
let _params = {
|
||||
beginTime: this.selDate[0],
|
||||
endTime: this.selDate[1]
|
||||
}
|
||||
endTime: this.selDate[1],
|
||||
};
|
||||
postData.params = _params;
|
||||
}
|
||||
if (this.selType != 0) {
|
||||
postData.alarmType = this.selType;
|
||||
}
|
||||
this.$api.aiWarning
|
||||
.list(postData)
|
||||
.then((d) => {
|
||||
this.listPage.total = d.total || 0;
|
||||
this.listDatas = d.rows || [];
|
||||
this.listKey++;
|
||||
});
|
||||
this.$api.aiWarning.list(postData).then((d) => {
|
||||
this.listPage.total = d.total || 0;
|
||||
this.listDatas = d.rows || [];
|
||||
this.listKey++;
|
||||
});
|
||||
},
|
||||
loadTodayList() {
|
||||
let postData = {
|
||||
|
@ -306,45 +323,47 @@ export default {
|
|||
pageSize: this.todayPage.pageSize,
|
||||
projectId: this.selProject.id,
|
||||
params: {
|
||||
date: new Date().toLocaleDateString().replaceAll("/","-"),
|
||||
date: new Date().toLocaleDateString().replaceAll("/", "-"),
|
||||
},
|
||||
};
|
||||
this.$api.aiWarning
|
||||
.list(postData)
|
||||
.then((d) => {
|
||||
this.todayPage.total = d.total || 0;
|
||||
this.todayList = d.rows || [];
|
||||
this.todayKey++;
|
||||
});
|
||||
this.$api.aiWarning.list(postData).then((d) => {
|
||||
this.todayPage.total = d.total || 0;
|
||||
this.todayList = d.rows || [];
|
||||
this.todayKey++;
|
||||
});
|
||||
},
|
||||
getAiVideoAlertorTypeCount() {
|
||||
//今日视图
|
||||
this.$api.aiWarning.groupCountByAlarmType(this.selProject.id, "Y").then((response) => {
|
||||
if (response.data) {
|
||||
let sum = 0;
|
||||
response.data.forEach((datum) => {
|
||||
sum += datum.value;
|
||||
});
|
||||
this.overviewTotalDay = sum;
|
||||
this.typeDistributionDataDay = response.data;
|
||||
this.overviewDay++;
|
||||
}
|
||||
});
|
||||
this.$api.aiWarning
|
||||
.groupCountByAlarmType(this.selProject.id, "Y")
|
||||
.then((response) => {
|
||||
if (response.data) {
|
||||
let sum = 0;
|
||||
response.data.forEach((datum) => {
|
||||
sum += datum.value;
|
||||
});
|
||||
this.overviewTotalDay = sum;
|
||||
this.typeDistributionDataDay = response.data;
|
||||
this.overviewDay++;
|
||||
}
|
||||
});
|
||||
|
||||
//累计视图
|
||||
this.$api.aiWarning.groupCountByAlarmType(this.selProject.id, "N").then((response) => {
|
||||
if (response.data) {
|
||||
let sum = 0;
|
||||
response.data.forEach((datum) => {
|
||||
sum += datum.value;
|
||||
});
|
||||
this.overviewTotal = sum;
|
||||
this.typeDistributionData = response.data;
|
||||
this.overview++;
|
||||
}
|
||||
});
|
||||
this.$api.aiWarning
|
||||
.groupCountByAlarmType(this.selProject.id, "N")
|
||||
.then((response) => {
|
||||
if (response.data) {
|
||||
let sum = 0;
|
||||
response.data.forEach((datum) => {
|
||||
sum += datum.value;
|
||||
});
|
||||
this.overviewTotal = sum;
|
||||
this.typeDistributionData = response.data;
|
||||
this.overview++;
|
||||
}
|
||||
});
|
||||
},
|
||||
daysTrendView(){
|
||||
daysTrendView() {
|
||||
this.$api.aiWarning.getDaysTrendView(this.selProject.id).then((response) => {
|
||||
if (response.data) {
|
||||
let _data1 = [];
|
||||
|
@ -355,14 +374,19 @@ export default {
|
|||
});
|
||||
let _lineData = [];
|
||||
_lineData.push(_data1);
|
||||
let _color = ['#0078e7'];
|
||||
let _legend = ['预警总数'];
|
||||
let _trendData = {'lineData':_lineData,'color':_color,'legend':_legend,'date':_date8};
|
||||
let _color = ["#0078e7"];
|
||||
let _legend = ["预警总数"];
|
||||
let _trendData = {
|
||||
lineData: _lineData,
|
||||
color: _color,
|
||||
legend: _legend,
|
||||
date: _date8,
|
||||
};
|
||||
this.warningData = _trendData;
|
||||
}
|
||||
});
|
||||
},
|
||||
initIntervalTimes(){
|
||||
initIntervalTimes() {
|
||||
this.intervalTimes = setInterval(this.init, 150000); // 每2.5分钟刷新一次
|
||||
},
|
||||
},
|
||||
|
@ -370,10 +394,9 @@ export default {
|
|||
</script>
|
||||
<style lang="less" scope>
|
||||
.project-ai-warning {
|
||||
.project-overview-chart{
|
||||
.chart-overview-gif{
|
||||
margin-left: -10px !important;
|
||||
}
|
||||
.chart-overview-gif {
|
||||
top: 63px;
|
||||
left: 51px;
|
||||
}
|
||||
.ai-list {
|
||||
padding: 0px 24px 8px;
|
||||
|
@ -408,4 +431,4 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<div class="project-photography main-page">
|
||||
<div class="project-planSchedule main-page">
|
||||
<el-col :span="6" class="h100">
|
||||
<module-one-1-1 label="项目全景">
|
||||
<div class="photography-list">
|
||||
|
@ -45,55 +45,262 @@
|
|||
</template>
|
||||
</div>
|
||||
</module-one-1-1>
|
||||
<module-one-2-1 label="进行中的计划">
|
||||
<module-one-2-1 label="进行中的计划" class="chart-plan-module">
|
||||
<div
|
||||
v-for="(it, idx) in overviewJxzjh"
|
||||
:key="idx"
|
||||
class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div"
|
||||
>
|
||||
<div class="czz-number-img czz-number-img-blue">
|
||||
<svg-icon icon-class="notesearch"></svg-icon>
|
||||
</div>
|
||||
<div class="czz-number-img czz-number-img-blue">{{ it.scheduleNode }} %</div>
|
||||
<div>
|
||||
<div class="equipment-list-data equipment-list-data_div_top">
|
||||
<span>测试计划名称1</span>
|
||||
<span>{{ it.taskName }}</span>
|
||||
</div>
|
||||
<div class="equipment-list-data equipment-list-data_div_bottom">
|
||||
<span class="sp-data">{{ it.value || 0 }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div"
|
||||
>
|
||||
<div class="czz-number-img czz-number-img-blue">
|
||||
<svg-icon icon-class="notesearch"></svg-icon>
|
||||
</div>
|
||||
<div>
|
||||
<div class="equipment-list-data equipment-list-data_div_top">
|
||||
<span>测试计划名称2</span>
|
||||
</div>
|
||||
<div class="equipment-list-data equipment-list-data_div_bottom">
|
||||
<span class="sp-data">{{ it.value || 0 }}</span>
|
||||
计划周期:<span class="sp-data"
|
||||
>{{ it.planStartDate }}-{{ it.planFinishDate }}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</module-one-2-1>
|
||||
</el-col>
|
||||
<el-col :span="18" class="no-title">
|
||||
<module-one-3-3 :notitle="true">
|
||||
<template v-if="info">
|
||||
<div class="right-title">
|
||||
<span class="sp-title">{{ info.videoDate }}</span>
|
||||
</div>
|
||||
<video style="width: 98%" controls>
|
||||
<source :src="info.videoUrl" type="video/mp4" />
|
||||
您的浏览器不支持Video标签。
|
||||
</video>
|
||||
</template>
|
||||
<div v-else style="text-align: center" class="div-no-data">
|
||||
<img src="images/nodata.png" style="width: 120px" />
|
||||
<div style="text-align: center; font-size: 12px; color: #888">暂无数据</div>
|
||||
</div>
|
||||
</module-one-3-3>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<module-one-1-1 label="计划状态">
|
||||
<project-overview-chart
|
||||
:key="'ai1' + overview"
|
||||
:sp="''"
|
||||
:maintitle="overviewTotal"
|
||||
:legend-opt="legendOpt"
|
||||
:typedata="overviewDatas"
|
||||
:text="overviewText"
|
||||
:height="230"
|
||||
></project-overview-chart>
|
||||
</module-one-1-1>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<module-one-1-1 label="计划统计">
|
||||
<div class="equipment-list-max quality-target-index">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<div class="equipment-list-min1 quality-target-index-min">
|
||||
<div class="czz-number-img czz-number-img-blue">
|
||||
<svg
|
||||
class="my-svg-icon-blue"
|
||||
style="
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="3054"
|
||||
>
|
||||
<path
|
||||
d="M530.46 269c4.64 0 9.05 2.01 12.09 5.52l109.54 126.3A16.01 16.01 0 0 1 656 411.3V893c0 8.82-7.18 16-16 16H178c-8.82 0-16-7.18-16-16V285c0-8.82 7.18-16 16-16h352.46m0-64H178c-44.18 0-80 35.82-80 80v608c0 44.18 35.82 80 80 80h462c44.18 0 80-35.82 80-80V411.3c0-19.26-6.95-37.87-19.56-52.42L590.9 232.58A80.014 80.014 0 0 0 530.46 205zM819.29 864h-45.92c-17.67 0-32-14.33-32-32s14.33-32 32-32h45.92c25.21 0 45.71-19.94 45.71-44.46V295.17c0-10.61-3.91-20.88-11.01-28.94L747.58 145.52c-8.7-9.87-21.35-15.52-34.7-15.52H370.49c-17.67 0-32-14.33-32-32s14.33-32 32-32h342.38c31.72 0 61.87 13.56 82.71 37.2L902 223.91c17.41 19.75 27 45.06 27 71.26v460.37C929 815.35 879.78 864 819.29 864zM702 468H552.09c-41.96 0-76.09-31.47-76.09-70.15V240.5h64v157.35c0 1.88 4.57 6.15 12.09 6.15H702v64zM898 326H748.09c-41.96 0-76.09-31.47-76.09-70.15V98.5h64v157.35c0 1.88 4.57 6.15 12.09 6.15H898v64zM535.13 784.5H262.88c-17.67 0-32 14.33-32 32s14.33 32 32 32h272.25c17.67 0 32-14.33 32-32s-14.33-32-32-32zM535.13 638.75H262.88c-17.67 0-32 14.33-32 32s14.33 32 32 32h272.25c17.67 0 32-14.33 32-32s-14.33-32-32-32zM535.13 493H262.88c-17.67 0-32 14.33-32 32s14.33 32 32 32h272.25c17.67 0 32-14.33 32-32s-14.33-32-32-32z"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="equipment-list-data">
|
||||
<p style="font-size: 12px">任务数</p>
|
||||
<div><span style="font-size: 12px">1</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="equipment-list-min1 quality-target-index-min">
|
||||
<div class="czz-number-img czz-number-img-green">
|
||||
<svg
|
||||
class="my-svg-icon-green"
|
||||
style="
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="7849"
|
||||
>
|
||||
<path
|
||||
d="M896 64H128c-35.296 0-64 28.704-64 64v768c0 35.296 28.704 64 64 64h592a32 32 0 1 0 0-64H128V128h768v592a32 32 0 1 0 64 0V128c0-35.296-28.704-64-64-64zM791.744 746.496A206.752 206.752 0 0 0 832 624c0-114.688-93.312-208-208-208S416 509.312 416 624s93.312 208 208 208a206.752 206.752 0 0 0 122.496-40.256l110.88 110.88a31.904 31.904 0 0 0 45.248 0 31.968 31.968 0 0 0 0-45.248l-110.88-110.88zM480 624c0-79.392 64.608-144 144-144s144 64.608 144 144-64.608 144-144 144-144-64.608-144-144zM800 264a32 32 0 0 0-32-32H256a32 32 0 0 0 0 64h512a32 32 0 0 0 32-32zM256 422.656a32 32 0 0 0 0 64h96a32 32 0 0 0 0-64H256z"
|
||||
p-id="7850"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="equipment-list-data">
|
||||
<p style="font-size: 12px">已完成</p>
|
||||
<div>
|
||||
<span style="font-size: 12px">2</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="equipment-list-min1 quality-target-index-min">
|
||||
<div class="czz-number-img czz-number-img-green">
|
||||
<svg
|
||||
class="my-svg-icon-green"
|
||||
style="
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="7849"
|
||||
>
|
||||
<path
|
||||
d="M896 64H128c-35.296 0-64 28.704-64 64v768c0 35.296 28.704 64 64 64h592a32 32 0 1 0 0-64H128V128h768v592a32 32 0 1 0 64 0V128c0-35.296-28.704-64-64-64zM791.744 746.496A206.752 206.752 0 0 0 832 624c0-114.688-93.312-208-208-208S416 509.312 416 624s93.312 208 208 208a206.752 206.752 0 0 0 122.496-40.256l110.88 110.88a31.904 31.904 0 0 0 45.248 0 31.968 31.968 0 0 0 0-45.248l-110.88-110.88zM480 624c0-79.392 64.608-144 144-144s144 64.608 144 144-64.608 144-144 144-144-64.608-144-144zM800 264a32 32 0 0 0-32-32H256a32 32 0 0 0 0 64h512a32 32 0 0 0 32-32zM256 422.656a32 32 0 0 0 0 64h96a32 32 0 0 0 0-64H256z"
|
||||
p-id="7850"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="equipment-list-data">
|
||||
<p style="font-size: 12px">完成率</p>
|
||||
<div>
|
||||
<span>3</span>
|
||||
<span style="font-size: 12px">%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="equipment-list-min1 quality-target-index-min">
|
||||
<div class="czz-number-img czz-number-img-blue">
|
||||
<svg
|
||||
class="my-svg-icon-blue"
|
||||
style="
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="10575"
|
||||
>
|
||||
<path
|
||||
d="M634.593683 354.898336h-189.279113c39.748614-30.284658 71.926063-58.676525 96.532347-87.068391 26.499076 32.177449 58.676525 60.569316 92.746766 87.068391z m30.284658 177.922366h-246.062847v81.390019H662.985549v-81.390019zM984.760041 190.225508v202.528651c0 183.600739-81.390018 355.844732-225.242144 471.304991l-187.386322 151.42329c-5.678373 5.678373-15.142329 7.571165-22.713493 7.571164s-17.03512-1.892791-24.606285-7.571164l-187.386322-151.42329C195.466141 748.598891 114.076122 576.354898 114.076122 392.754159V190.225508c0-15.142329 9.463956-30.284658 24.606285-35.963031l397.486137-151.42329c9.463956-3.785582 18.927911-3.785582 26.499076 0l397.486136 151.42329c15.142329 5.678373 24.606285 20.820702 24.606285 35.963031zM734.911612 464.680222H348.782222v240.384473h70.033272v-24.606285H662.985549v24.606285h70.033272V464.680222z m64.354899-98.425139c-92.746765-39.748614-162.780037-88.961183-210.099816-149.530499l18.927912-22.713493h-98.425139c-41.641405 62.462107-117.35305 121.138632-225.242144 177.922366 17.03512 18.927911 32.177449 39.748614 45.426987 60.569316 22.713494-13.249538 45.426987-26.499076 64.354898-39.748614v30.284658h293.382625v-28.391867c20.820702 13.249538 41.641405 24.606285 62.462107 34.07024 15.142329-18.927911 30.284658-39.748614 49.21257-62.462107z"
|
||||
fill=""
|
||||
p-id="10576"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="equipment-list-data">
|
||||
<p>进行中</p>
|
||||
<div><span style="font-size: 12px">4</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="equipment-list-min1 quality-target-index-min">
|
||||
<div class="czz-number-img czz-number-img-green">
|
||||
<svg
|
||||
class="my-svg-icon-green"
|
||||
style="
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="8279"
|
||||
>
|
||||
<path
|
||||
d="M855.13728 187.4176c-105.97376 0-209.34656-36.9152-291.08736-103.936l-40.9344-33.56672-40.94976 33.56672c-81.77152 67.01568-185.15456 103.936-291.09248 103.936H126.49984V622.83264l4.95104 11.90912c67.33824 161.82784 206.54592 289.3824 372.38272 341.2224l19.08224 5.96992 19.11808-5.86752c170.07616-52.16768 305.99168-176.79872 372.92032-341.89824l4.62848-11.43808 0.08704-12.34944 0.03072-3.27168V187.4176h-64.5632z m0 419.22048l-0.03072 3.26144c-58.8544 145.21856-180.87424 258.06848-332.00128 304.44032-148.33664-46.39232-272.86528-162.24256-332.032-304.4096V252.0064c125.99296 0 241.62304-44.46208 332.032-118.56896C613.50912 207.5648 729.088 252.0064 855.13728 252.0064v354.63168z"
|
||||
fill=""
|
||||
p-id="8280"
|
||||
></path>
|
||||
<path
|
||||
d="M400.47616 304.95232c57.68192 2.5856 87.78752 39.74656 90.368 111.5136-2.58048 70.50752-33.97632 107.0336-94.21312 109.5936-55.12192-3.85024-84.59264-40.37632-88.43776-109.5936 2.55488-71.76704 33.31584-108.928 92.28288-111.5136z m-1.92 174.96064c26.91584-1.25952 41.0112-23.07072 42.30144-65.37216-1.29024-42.29632-14.7456-64.08192-40.37632-65.37216-28.20608 0-42.29632 22.44096-42.29632 67.29216 1.25952 39.75168 14.72 60.89728 40.3712 63.45216z m207.64672-174.96064h51.91168l-219.18208 417.21856H387.0208l219.18208-417.21856z m40.37632 199.95648c57.68192 2.5856 87.78752 40.37632 90.36288 113.4336-2.58048 66.6624-33.97632 101.23776-94.208 103.82336-56.41728-3.84512-85.88288-38.45632-88.44288-103.82336 2.56-71.77216 33.32096-109.58848 92.288-113.4336z m-1.92512 176.88576c25.63072-1.25952 39.0912-23.71072 40.38144-67.29728-1.29024-41.0112-14.12096-62.16192-38.45632-63.45216-26.91584 0-41.0368 21.81632-42.30144 65.37728 1.26976 41.0368 14.72512 62.81216 40.37632 65.37216z"
|
||||
fill=""
|
||||
p-id="8281"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="equipment-list-data">
|
||||
<p>已滞后</p>
|
||||
<div>
|
||||
<span style="font-size: 12px">5</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="equipment-list-min1 quality-target-index-min">
|
||||
<div class="czz-number-img czz-number-img-green">
|
||||
<svg
|
||||
class="my-svg-icon-green"
|
||||
style="
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="8279"
|
||||
>
|
||||
<path
|
||||
d="M855.13728 187.4176c-105.97376 0-209.34656-36.9152-291.08736-103.936l-40.9344-33.56672-40.94976 33.56672c-81.77152 67.01568-185.15456 103.936-291.09248 103.936H126.49984V622.83264l4.95104 11.90912c67.33824 161.82784 206.54592 289.3824 372.38272 341.2224l19.08224 5.96992 19.11808-5.86752c170.07616-52.16768 305.99168-176.79872 372.92032-341.89824l4.62848-11.43808 0.08704-12.34944 0.03072-3.27168V187.4176h-64.5632z m0 419.22048l-0.03072 3.26144c-58.8544 145.21856-180.87424 258.06848-332.00128 304.44032-148.33664-46.39232-272.86528-162.24256-332.032-304.4096V252.0064c125.99296 0 241.62304-44.46208 332.032-118.56896C613.50912 207.5648 729.088 252.0064 855.13728 252.0064v354.63168z"
|
||||
fill=""
|
||||
p-id="8280"
|
||||
></path>
|
||||
<path
|
||||
d="M400.47616 304.95232c57.68192 2.5856 87.78752 39.74656 90.368 111.5136-2.58048 70.50752-33.97632 107.0336-94.21312 109.5936-55.12192-3.85024-84.59264-40.37632-88.43776-109.5936 2.55488-71.76704 33.31584-108.928 92.28288-111.5136z m-1.92 174.96064c26.91584-1.25952 41.0112-23.07072 42.30144-65.37216-1.29024-42.29632-14.7456-64.08192-40.37632-65.37216-28.20608 0-42.29632 22.44096-42.29632 67.29216 1.25952 39.75168 14.72 60.89728 40.3712 63.45216z m207.64672-174.96064h51.91168l-219.18208 417.21856H387.0208l219.18208-417.21856z m40.37632 199.95648c57.68192 2.5856 87.78752 40.37632 90.36288 113.4336-2.58048 66.6624-33.97632 101.23776-94.208 103.82336-56.41728-3.84512-85.88288-38.45632-88.44288-103.82336 2.56-71.77216 33.32096-109.58848 92.288-113.4336z m-1.92512 176.88576c25.63072-1.25952 39.0912-23.71072 40.38144-67.29728-1.29024-41.0112-14.12096-62.16192-38.45632-63.45216-26.91584 0-41.0368 21.81632-42.30144 65.37728 1.26976 41.0368 14.72512 62.81216 40.37632 65.37216z"
|
||||
fill=""
|
||||
p-id="8281"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="equipment-list-data">
|
||||
<p>滞后率</p>
|
||||
<div>
|
||||
<span>6</span>
|
||||
<span style="font-size: 12px">%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</module-one-1-1>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<module-one-1-1 label="本月推进明细">
|
||||
<div
|
||||
v-for="(it, idx) in overviewMonthjh"
|
||||
:key="idx"
|
||||
class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div"
|
||||
>
|
||||
<div class="czz-number-img czz-number-img-blue">
|
||||
{{ it.scheduleNode }} %
|
||||
</div>
|
||||
<div>
|
||||
<div class="equipment-list-data equipment-list-data_div_top">
|
||||
<span>{{ it.taskName }}</span>
|
||||
</div>
|
||||
<div class="equipment-list-data equipment-list-data_div_bottom">
|
||||
计划周期:<span class="sp-data"
|
||||
>{{ it.planStartDate }}-{{ it.planFinishDate }}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</module-one-1-1>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<module-one-2-3 label="计划施工进度">
|
||||
<trend-chart-line :height="450" :data="scheduleNodeData"></trend-chart-line>
|
||||
</module-one-2-3>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -102,10 +309,45 @@
|
|||
export default {
|
||||
data() {
|
||||
return {
|
||||
selProject: null,
|
||||
photographyList: [],
|
||||
info: null,
|
||||
activeNames: [],
|
||||
infoList: {},
|
||||
jxzjhList: [],
|
||||
legendOpt: {
|
||||
icon: "rect",
|
||||
orient: "horizontal",
|
||||
itemWidth: "50%",
|
||||
left: 240,
|
||||
right: "10%",
|
||||
itemWidth: 20,
|
||||
itemGap: 20,
|
||||
itemHeight: 20,
|
||||
textStyle: {
|
||||
padding: [0, 0, 0, 0],
|
||||
fontSize: 10,
|
||||
color: "#c3dbfd",
|
||||
align: "center",
|
||||
rich: {
|
||||
name: {
|
||||
color: "#c3dbfd",
|
||||
padding: [5, 2, 5, 2],
|
||||
},
|
||||
percent: {
|
||||
color: "#4676FD",
|
||||
padding: [0, 2, 0, 2],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
overview: 0,
|
||||
overviewTotal: 0,
|
||||
overviewDatas: [],
|
||||
overviewText: "任务计划",
|
||||
overviewTask: [],
|
||||
overviewJxzjh: [], //进行中计划
|
||||
overviewYwcjh: [], //已完成计划
|
||||
overviewYzhjh: [], //已滞后计划
|
||||
overviewMonthjh: [], //本月进行计划
|
||||
scheduleNodeData: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
@ -124,18 +366,249 @@ export default {
|
|||
return;
|
||||
}
|
||||
this.initPhotographyList();
|
||||
this.initAllPlanDatas();
|
||||
this.initScheduleNodes();
|
||||
},
|
||||
initPhotographyList() {
|
||||
this.$api.detail.photographyList(this.selProject.id).then((d) => {
|
||||
this.photographyList = d.data;
|
||||
this.$api.detail.photographyList(this.selProject.id).then((res) => {
|
||||
this.photographyList = res.data;
|
||||
});
|
||||
},
|
||||
initAllPlanDatas() {
|
||||
this.$api.planSchedule.findAllPlanDatas(this.selProject.id).then((res) => {
|
||||
let _jxzjhs = [];
|
||||
let _ywcjhs = [];
|
||||
let _yzhjhs = [];
|
||||
let _rwzttj = [];
|
||||
let _nowMonth = [];
|
||||
res.data.forEach((item) => {
|
||||
if (item.taskStatus == "zcjxz" || item.taskStatus == "zhjxz") {
|
||||
_jxzjhs.push(item);
|
||||
}
|
||||
if (item.taskStatus == "zcwc" || item.taskStatus == "zhwc") {
|
||||
_ywcjhs.push(item);
|
||||
}
|
||||
if (item.taskStatus == "zhwc" || item.taskStatus == "zhjxz") {
|
||||
_yzhjhs.push(item);
|
||||
}
|
||||
if (item.nowMonth == "Y") {
|
||||
_nowMonth.push(item);
|
||||
}
|
||||
});
|
||||
let _wkss = res.data.filter((ex) => ex.taskStatus === "wks");
|
||||
let _zcwcs = res.data.filter((ex) => ex.taskStatus === "zcwc");
|
||||
let _zhwcs = res.data.filter((ex) => ex.taskStatus === "zhwc");
|
||||
let _zcjxzs = res.data.filter((ex) => ex.taskStatus === "zcjxz");
|
||||
let _zhjxzs = res.data.filter((ex) => ex.taskStatus === "zhjxz");
|
||||
_rwzttj.push({ name: "未开始", value: _wkss.length });
|
||||
_rwzttj.push({ name: "进行中(滞后)", value: _zhwcs.length });
|
||||
_rwzttj.push({ name: "进行中(正常)", value: _zcwcs.length });
|
||||
_rwzttj.push({ name: "已完成(滞后)", value: _zhjxzs.length });
|
||||
_rwzttj.push({ name: "已完成(正常)", value: _zcjxzs.length });
|
||||
this.overviewDatas = _rwzttj;
|
||||
this.overview++;
|
||||
let _tasks = [];
|
||||
_tasks.push({ name: "任务数", value: res.data.length });
|
||||
_tasks.push({ name: "已完成", value: _ywcjhs.length });
|
||||
_tasks.push({
|
||||
name: "完成率",
|
||||
value: ((_ywcjhs.length / res.data.length) * 100).toFixed(2),
|
||||
});
|
||||
_tasks.push({ name: "进行中", value: _jxzjhs.length });
|
||||
_tasks.push({ name: "已滞后", value: _yzhjhs.length });
|
||||
_tasks.push({
|
||||
name: "滞后率",
|
||||
value: ((_yzhjhs.length / res.data.length) * 100).toFixed(2),
|
||||
});
|
||||
this.overviewTask = [];
|
||||
(this.overviewJxzjh = _jxzjhs),
|
||||
(this.overviewYwcjh = _ywcjhs),
|
||||
(this.overviewYzhjh = _yzhjhs),
|
||||
(this.overviewMonthjh = _nowMonth);
|
||||
});
|
||||
},
|
||||
initScheduleNodes() {
|
||||
this.$api.planSchedule
|
||||
.findAllSchedule({ projectId: this.selProject.id })
|
||||
.then((res) => {
|
||||
let _data1 = [];
|
||||
let _date8 = [];
|
||||
res.data.forEach((item) => {
|
||||
_data1.push(item.totalSchedule);
|
||||
_date8.push(item.createDate);
|
||||
});
|
||||
let _lineData = [];
|
||||
_lineData.push(_data1);
|
||||
let _color = ["#0078e7"];
|
||||
let _legend = ["施工进度"];
|
||||
let _datas = {
|
||||
lineData: _lineData,
|
||||
color: _color,
|
||||
legend: _legend,
|
||||
unit: "%",
|
||||
date: _date8,
|
||||
};
|
||||
this.scheduleNodeData = _datas;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.project-photography {
|
||||
<style lang="less" scope>
|
||||
.project-planSchedule {
|
||||
.photography-list {
|
||||
width: calc(100% - 4px);
|
||||
height: calc(100% - 26px);
|
||||
padding-left: 1px;
|
||||
|
||||
.el-carousel {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.photography-video {
|
||||
width: 100%;
|
||||
height: calc(100% - 30px);
|
||||
}
|
||||
|
||||
.photography-list-title {
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.photography-list-nodata {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
margin-left: 10%;
|
||||
margin-top: 6%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-flow: column;
|
||||
|
||||
.video-play {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
display: inline-block;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
line-height: 80px;
|
||||
text-align: center;
|
||||
border-radius: 40px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.photography-list-no-title {
|
||||
color: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
.equipment-list-data {
|
||||
position: relative;
|
||||
}
|
||||
.quality-target-index-min1 {
|
||||
padding: 15px 0 15px 0;
|
||||
}
|
||||
.problemmodify_list .el-table__body-wrapper::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.problemmodify_list .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
||||
background-color: #01a9ff;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.problemmodify_list .el-table__body-wrapper tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.center-image .screen-one-2-1 {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.equipment-list-data {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.my-svg-icon-blue,
|
||||
.my-svg-icon-green {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
position: relative;
|
||||
top: -10px;
|
||||
}
|
||||
|
||||
.my-svg-icon-green * {
|
||||
fill: #63f8bc;
|
||||
}
|
||||
|
||||
.fgreen {
|
||||
color: #63f8bc !important;
|
||||
}
|
||||
|
||||
.my-svg-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.my-svg-icon *,
|
||||
.my-svg-icon-blue * {
|
||||
fill: #389de3;
|
||||
}
|
||||
|
||||
.people-number-con div:nth-child(3) {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.labour-education .number-unit {
|
||||
position: relative;
|
||||
bottom: -8px;
|
||||
}
|
||||
|
||||
.bottom-line,
|
||||
.bottom-line2 {
|
||||
border: none !important;
|
||||
position: relative;
|
||||
}
|
||||
.chart-plan-module {
|
||||
.czz-number-img {
|
||||
display: flex;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
svg {
|
||||
width: 30px !important;
|
||||
height: 30px !important;
|
||||
fill: #00aaff59 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_top {
|
||||
span {
|
||||
font-size: 14px;
|
||||
color: #cbdaff;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.equipment-list-data_div_bottom {
|
||||
margin-top: 10px;
|
||||
|
||||
.sp-data {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.sp-unit {
|
||||
font-size: 14px;
|
||||
color: #cbdaff;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
.div-no-data {
|
||||
text-align: center;
|
||||
height: 600px;
|
||||
|
|
|
@ -128,6 +128,10 @@ public class ProPlan extends BaseEntity
|
|||
@Excel(name = "是否有效")
|
||||
private Long isDel;
|
||||
|
||||
/** 任务状态 */
|
||||
private String taskStatus;
|
||||
private String nowMonth;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
|
@ -327,6 +331,22 @@ public class ProPlan extends BaseEntity
|
|||
return isDel;
|
||||
}
|
||||
|
||||
public String getTaskStatus() {
|
||||
return taskStatus;
|
||||
}
|
||||
|
||||
public void setTaskStatus(String taskStatus) {
|
||||
this.taskStatus = taskStatus;
|
||||
}
|
||||
|
||||
public String getNowMonth() {
|
||||
return nowMonth;
|
||||
}
|
||||
|
||||
public void setNowMonth(String nowMonth) {
|
||||
this.nowMonth = nowMonth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
@ -108,6 +108,10 @@ public class ProPlanSchedule extends BaseEntity
|
|||
@Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date updateDate;
|
||||
|
||||
/** 总进度 */
|
||||
@Excel(name = "总进度")
|
||||
private String totalSchedule;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
|
@ -303,6 +307,14 @@ public class ProPlanSchedule extends BaseEntity
|
|||
this.projectName = projectName;
|
||||
}
|
||||
|
||||
public String getTotalSchedule() {
|
||||
return totalSchedule;
|
||||
}
|
||||
|
||||
public void setTotalSchedule(String totalSchedule) {
|
||||
this.totalSchedule = totalSchedule;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
@ -130,4 +130,9 @@ public interface ProPlanMapper
|
|||
* @return
|
||||
*/
|
||||
public ProPlan findRecursionPlan(ProPlan proPlan);
|
||||
|
||||
/**
|
||||
* 查询计划任务数据
|
||||
*/
|
||||
public List<ProPlan> findAllPlanDatasByProId(Long proId);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.yanzhu.manage.mapper;
|
|||
|
||||
import java.util.List;
|
||||
import com.yanzhu.manage.domain.ProPlanSchedule;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 项目进度Mapper接口
|
||||
|
@ -65,4 +66,11 @@ public interface ProPlanScheduleMapper
|
|||
* @return
|
||||
*/
|
||||
public ProPlanSchedule findPreviousScheduleByPlanId(Long taskId);
|
||||
|
||||
/**
|
||||
* 更新总进度
|
||||
* @param proId
|
||||
* @param totalschedule
|
||||
*/
|
||||
public void updateProPlanTotalSchedule(@Param("proId") Long proId, @Param("totalschedule") String totalschedule);
|
||||
}
|
||||
|
|
|
@ -34,6 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="compName" column="comp_name"/>
|
||||
<result property="projectName" column="project_name"/>
|
||||
<result property="remark" column="remark" />
|
||||
<result property="taskStatus" column="task_status" />
|
||||
<result property="nowMonth" column="nowMonth" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProPlanVo">
|
||||
|
@ -71,6 +73,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="groupName != null and groupName != ''"> and pp.group_name like concat('%', #{groupName}, '%')</if>
|
||||
<if test="isDel != null "> and pp.is_del = #{isDel}</if>
|
||||
</where>
|
||||
order by pp.id
|
||||
</select>
|
||||
|
||||
<select id="selectProPlanListView" parameterType="ProPlan" resultMap="ProPlanResult">
|
||||
|
@ -280,4 +283,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</where>
|
||||
</select>
|
||||
|
||||
<select id="findAllPlanDatasByProId" parameterType="Long" resultMap="ProPlanResult">
|
||||
SELECT
|
||||
pp.id,
|
||||
CASE
|
||||
WHEN pp.start_date IS NULL THEN
|
||||
'wks'
|
||||
WHEN pp.start_date IS NOT NULL
|
||||
AND pp.finish_date IS NOT NULL
|
||||
AND pp.plan_finish_date <![CDATA[ >= ]]> pp.finish_date THEN
|
||||
'zcwc'
|
||||
WHEN pp.start_date IS NOT NULL
|
||||
AND pp.finish_date IS NOT NULL
|
||||
AND pp.plan_finish_date <![CDATA[ < ]]> pp.finish_date THEN
|
||||
'zhwc'
|
||||
WHEN pp.start_date IS NOT NULL
|
||||
AND pp.finish_date IS NULL
|
||||
AND pp.plan_finish_date <![CDATA[ >= ]]> NOW() THEN
|
||||
'zcjxz'
|
||||
WHEN pp.start_date IS NOT NULL
|
||||
AND pp.finish_date IS NULL
|
||||
AND pp.plan_finish_date <![CDATA[ < ]]> NOW() THEN
|
||||
'zhjxz'
|
||||
END AS task_status,
|
||||
CASE
|
||||
WHEN (
|
||||
pp.start_date IS NOT NULL
|
||||
AND DATE_FORMAT(pp.start_date, '%Y-%m') = DATE_FORMAT(CURRENT_DATE, '%Y-%m')
|
||||
)
|
||||
OR (
|
||||
pp.finish_date IS NOT NULL
|
||||
AND DATE_FORMAT(pp.finish_date, '%Y-%m') = DATE_FORMAT(CURRENT_DATE, '%Y-%m')
|
||||
)
|
||||
THEN 'Y' ELSE 'N' END as nowMonth,
|
||||
pp.comid,
|
||||
pp.project_id,
|
||||
pp.task_id,
|
||||
pp.task_unique_id,
|
||||
pp.parent_id,
|
||||
pp.task_type,
|
||||
pp.task_outline_level,
|
||||
pp.task_name,
|
||||
pp.task_duation,
|
||||
pp.start_date,
|
||||
pp.finish_date,
|
||||
pp.predecessors,
|
||||
pp.plan_start_date,
|
||||
pp.plan_finish_date,
|
||||
pp.bim_id,
|
||||
pp.operator,
|
||||
pp.operator_id,
|
||||
pp.group_id,
|
||||
pp.group_name,
|
||||
pp.schedule_node,
|
||||
pp.is_del,
|
||||
pp.create_by,
|
||||
pp.create_time,
|
||||
pp.update_by,
|
||||
pp.update_time,
|
||||
pp.remark,
|
||||
dp.`dept_name` comp_name,
|
||||
pi.`project_name`
|
||||
FROM
|
||||
pro_plan pp
|
||||
LEFT JOIN sys_dept dp ON pp.`comid` = dp.`dept_id`
|
||||
LEFT JOIN pro_project_info pi ON pp.`project_id` = pi.`id`
|
||||
WHERE
|
||||
pp.project_id = #{proId}
|
||||
AND pp.task_outline_level <![CDATA[ > ]]> 1 and pp.is_del = 0
|
||||
</select>
|
||||
</mapper>
|
|
@ -29,10 +29,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="createDate" column="create_date" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateDate" column="update_date" />
|
||||
<result property="totalSchedule" column="total_schedule" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProPlanScheduleVo">
|
||||
select pps.id, (select max(mp.id) from pro_plan_schedule mp where mp.project_id = pps.project_id and mp.is_del=0) as max_id, pps.com_id, sd.dept_name as com_name, pps.project_id, pi.project_name, pps.plan_id, pps.task_id, pps.task_unique_id, pps.task_name, pps.bim_id, pps.schedule_percent, pp.task_duation, pp.plan_start_date, pp.plan_finish_date, pps.finish_date, pps.description, pps.images, pps.is_del, pps.create_by, pps.create_user_id, pps.create_date, pps.update_by, pps.update_date
|
||||
select pps.id, (select max(mp.id) from pro_plan_schedule mp where mp.project_id = pps.project_id and mp.is_del=0) as max_id, pps.com_id, sd.dept_name as com_name, pps.project_id, pi.project_name, pps.plan_id, pps.task_id, pps.task_unique_id, pps.task_name, pps.bim_id, pps.schedule_percent, pp.task_duation, pp.plan_start_date, pp.plan_finish_date, pps.finish_date, pps.description, pps.images, pps.is_del, pps.create_by, pps.create_user_id, pps.create_date, pps.update_by, pps.update_date, pps.total_schedule
|
||||
from pro_plan_schedule pps
|
||||
left join pro_project_info pi on pi.id = pps.project_id
|
||||
left join sys_dept sd on sd.dept_id = pps.com_id
|
||||
|
@ -54,9 +55,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="bimId != null and bimId != ''"> and pps.bim_id = #{bimId}</if>
|
||||
<if test="isDel != null "> and pps.is_del = #{isDel}</if>
|
||||
<if test="createUserId != null "> and pps.create_user_id = #{createUserId}</if>
|
||||
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''"> and date(pps.create_date) between #{params.beginTime} and #{params.endTime}</if>
|
||||
and pps.is_del != 2
|
||||
</where>
|
||||
order by pps.id desc
|
||||
<if test="id != null "> order by pps.id</if>
|
||||
<if test="id == null "> order by pps.id desc</if>
|
||||
</select>
|
||||
|
||||
<select id="selectProPlanScheduleById" parameterType="Long" resultMap="ProPlanScheduleResult">
|
||||
|
@ -84,6 +87,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="createDate != null">create_date,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateDate != null">update_date,</if>
|
||||
<if test="totalSchedule != null">total_schedule,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="comId != null">#{comId},</if>
|
||||
|
@ -103,6 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="createDate != null">#{createDate},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateDate != null">#{updateDate},</if>
|
||||
<if test="totalSchedule != null">#{totalSchedule},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
@ -126,6 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="createDate != null">create_date = #{createDate},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateDate != null">update_date = #{updateDate},</if>
|
||||
<if test="totalSchedule != null">total_schedule = #{totalSchedule},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
@ -146,4 +152,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where pps.plan_id = #{taskId} and pps.is_del = 0 order by pps.id desc limit 1
|
||||
</select>
|
||||
|
||||
<update id="updateProPlanTotalSchedule">
|
||||
update pro_plan_schedule as a
|
||||
join (
|
||||
select max(id) as max_id
|
||||
from pro_plan_schedule
|
||||
where project_id = #{proid}
|
||||
and is_del = '0'
|
||||
) as b on a.id = b.max_id
|
||||
set a.total_schedule = #{totalschedule}
|
||||
</update>
|
||||
|
||||
</mapper>
|
|
@ -128,7 +128,6 @@ public class DevAiProjectDataController extends BaseController
|
|||
params.put("endTime",todayAgo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||
dataQuery.setParams(params);
|
||||
List<Map<String, Object>> list = devAiProjectDataService.findDaysTrendView(dataQuery);
|
||||
|
||||
/**List<Map<String, Object>> daysTrendList = new ArrayList<>();
|
||||
for (LocalDate date = todayAgo; !date.isAfter(today); date = date.plusDays(1)) {
|
||||
Map<String, Object> dayMap = new HashMap<>();
|
||||
|
@ -137,14 +136,12 @@ public class DevAiProjectDataController extends BaseController
|
|||
dayMap.put("total",0);
|
||||
daysTrendList.add(dayMap);
|
||||
}
|
||||
|
||||
for (Map<String, Object> date : daysTrendList) {
|
||||
List<Map<String, Object>> _list = list.stream().filter(map -> StringUtils.eqObj(map.get("create_time"),date.get("createTime"))).collect(Collectors.toList());
|
||||
if (_list.size()>0) {
|
||||
date.put("total", _list.get(0).get("total"));
|
||||
}
|
||||
}*/
|
||||
|
||||
redisService.setCacheObject(key, list, 2L, TimeUnit.MINUTES);
|
||||
return success(list);
|
||||
}
|
||||
|
|
|
@ -238,4 +238,13 @@ public class ProPlanController extends BaseController
|
|||
plan.setTaskName(parents.getTaskName());
|
||||
return success(plan);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询任务状态统计
|
||||
*/
|
||||
@GetMapping(value = "/findAllPlanDatas/{proId}")
|
||||
public AjaxResult findAllPlanDatas(@PathVariable("proId") Long proId){
|
||||
List<ProPlan> plans = proPlanService.findAllPlanDatasByProId(proId);
|
||||
return success(plans);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,4 +105,15 @@ public class ProPlanScheduleController extends BaseController
|
|||
return success(proPlanScheduleService.findPreviousScheduleByPlanId(planId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目进度列表
|
||||
*/
|
||||
@PostMapping("/findAll")
|
||||
public AjaxResult findAll(@RequestBody ProPlanSchedule proPlanSchedule)
|
||||
{
|
||||
proPlanSchedule.setId(0L);
|
||||
List<ProPlanSchedule> list = proPlanScheduleService.selectProPlanScheduleList(proPlanSchedule);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -92,4 +92,9 @@ public interface IProPlanService
|
|||
* @return
|
||||
*/
|
||||
public ProPlan findRecursionPlan(ProPlan proPlan);
|
||||
|
||||
/**
|
||||
* 查询计划任务数据
|
||||
*/
|
||||
public List<ProPlan> findAllPlanDatasByProId(Long proId);
|
||||
}
|
||||
|
|
|
@ -216,6 +216,10 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
|||
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||
}
|
||||
}
|
||||
// 更新总进度
|
||||
if(entity.getTaskOutlineLevel()==1){
|
||||
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
||||
}
|
||||
System.out.println("RecursionEditStartDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||
entity.setStartDate(plan.getStartDate());
|
||||
RecursionEditStartDate(entity);
|
||||
|
@ -254,6 +258,10 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
|||
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||
}
|
||||
}
|
||||
// 更新总进度
|
||||
if(entity.getTaskOutlineLevel()==1){
|
||||
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
||||
}
|
||||
System.out.println("RecursionEditStartDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||
entity.setStartDate(plan.getStartDate());
|
||||
RecursionEditStartDate(entity);
|
||||
|
@ -285,13 +293,10 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
|||
for(ProPlan item:belows){
|
||||
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||
if(sNode>0){
|
||||
System.out.println("RecursionEditFinishDate.sNodesNode==>"+sNode);
|
||||
if(sNode==100){
|
||||
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||
System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished);
|
||||
}else{
|
||||
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||
System.out.println("RecursionEditFinishDate.FinishedFinished2==>"+Finished);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -309,6 +314,10 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
|||
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||
}
|
||||
}
|
||||
// 更新总进度
|
||||
if(entity.getTaskOutlineLevel()==1){
|
||||
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
||||
}
|
||||
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||
entity.setFinishDate(plan.getFinishDate());
|
||||
RecursionEditFinishDate(entity);
|
||||
|
@ -327,13 +336,10 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
|||
for(ProPlan item:belows){
|
||||
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||
if(sNode>0){
|
||||
System.out.println("RecursionEditFinishDate.sNodesNode==>"+sNode);
|
||||
if(sNode==100){
|
||||
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||
System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished);
|
||||
}else{
|
||||
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||
System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -351,6 +357,10 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
|||
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||
}
|
||||
}
|
||||
// 更新总进度
|
||||
if(entity.getTaskOutlineLevel()==1){
|
||||
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
||||
}
|
||||
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||
entity.setFinishDate(plan.getFinishDate());
|
||||
RecursionEditFinishDate(entity);
|
||||
|
|
|
@ -210,4 +210,12 @@ public class ProPlanServiceImpl implements IProPlanService
|
|||
return proPlan;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询计划任务数据
|
||||
*/
|
||||
@Override
|
||||
public List<ProPlan> findAllPlanDatasByProId(Long proId){
|
||||
return proPlanMapper.findAllPlanDatasByProId(proId);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue