update code

dev_xds
haha 2024-03-20 23:38:25 +08:00
parent 98c5d7f979
commit 978434df1f
79 changed files with 2761 additions and 87 deletions

View File

@ -0,0 +1,61 @@
import request from '@/utils/request'
// 查询设计管理列表
export function listProjectDesign(query) {
return request({
url: '/project/projectDesign/list',
method: 'get',
params: query
})
}
// 查询设计管理详细
export function getProjectDesign(id) {
return request({
url: '/project/projectDesign/' + id,
method: 'get'
})
}
// 新增设计管理
export function addProjectDesign(data) {
return request({
url: '/project/projectDesign',
method: 'post',
data: data
})
}
// 修改设计管理
export function updateProjectDesign(data) {
return request({
url: '/project/projectDesign',
method: 'put',
data: data
})
}
// 删除设计管理
export function delProjectDesign(id) {
return request({
url: '/project/projectDesign/' + id,
method: 'delete'
})
}
export function listByProject(query){
return request({
url: '/project/projectDesign/listByProject',
method: 'get',
params: query
})
}
export function updateList(data){
return request({
url: '/project/projectDesign/updateList',
method: 'post',
data: data
})
}

View File

@ -51,3 +51,11 @@ export function findUserByDeptId(query) {
params: query
})
}
// 查询设计管理负责人可选择用户
export function findDesignUsers() {
return request({
url: '/project/surProjectUserInfo/findDesignUsers',
method: 'get'
})
}

View File

@ -476,7 +476,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.jobId != undefined) {
if (this.form.jobId) {
updateJob(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -24,15 +24,21 @@
<el-option v-if="1==2" key="yanzhu" label="研筑" value="yanzhu"></el-option>
<el-option key="gld" label="广联达" value="gld"></el-option>
<el-option key="huazhu" label="华筑" value="huazhu"></el-option>
<el-option key="jgw" label="济工网" value="jgw"></el-option>
</el-select>
<span v-else>{{ form.vendorsCode=='yanzhu'?'':form.vendorsCode=='gld'?'广':'' }}</span>
<span v-else>
<span v-if="form.vendorsCode=='yanzhu'"></span>
<span v-if="form.vendorsCode=='gld'">广</span>
<span v-if="form.vendorsCode=='huazhu'"></span>
<span v-if="form.vendorsCode=='jgw'"></span>
</span>
<span>
<el-button v-if="mode!='edit' && form.vendorsCode=='yanzhu'"
:disabled="!form.projectId || !form.subDeptId"
type="primary" style="margin-left: 12px;" @click="doMakeAppId">获取</el-button>
</span>
</el-form-item>
<template v-if="form.vendorsCode=='gld'">
<template v-if="form.vendorsCode=='gld' || form.vendorsCode=='jgw'">
<el-form-item label="APPID" prop="appId">
<el-input v-model="form.appId" placeholder="请输AppId" clearable />
</el-form-item>
@ -160,7 +166,7 @@ export default {
state: 0,
isDel: 0
};
if (this.form.id != null && this.form.id.trim().length>0) {
if (this.form.id) {
obj.id = this.form.id;
updateAttendanceConfig(obj).then(response => {
this.$modal.msgSuccess("修改成功");

View File

@ -659,7 +659,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
//
if(this.form.checkState=="2"){
this.resultform.approveStatus = "1";

View File

@ -781,7 +781,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.approveStatus = "1";
if (this.form.id != null) {
if (this.form.id) {
updateProjectChecking(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -621,7 +621,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.approveStatus = "1";
if (this.form.id != null) {
if (this.form.id) {
updateProjectChecking(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -273,7 +273,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateProjectDeptWroks(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -0,0 +1,447 @@
<template>
<div class="app-container prj-design-index">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目名称" prop="projectId">
<el-select v-model="queryParams.projectId" filterable placeholder="请选择项目">
<el-option v-for="(item, index) in projectOptions" :key="index" :label="item.projectName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="开始日期" prop="startDate">
<el-date-picker clearable v-model="queryParams.startDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择开始日期">
</el-date-picker>
</el-form-item>
<el-form-item label="结束日期" prop="endDate">
<el-date-picker clearable v-model="queryParams.endDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择结束日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<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-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5" v-if="1 == 2">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['project:projectDesign:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="projectDesignList" border class="tb_data"
@selection-change="handleSelectionChange">
<el-table-column prop="nodeText" label="任务内容" width="200">
<template slot-scope="scope">
<div :class="'node-text-' + scope.row.nodeLvl.length">{{ scope.row.nodeText }}</div>
</template>
</el-table-column>
<el-table-column label="责任人" align="center" prop="ownerName"></el-table-column>
<el-table-column label="数据日期" align="center" prop="dataDate" width="80">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dataDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="开始日期" align="center" prop="startDate" width="80">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="计划开始日期" align="center" prop="planStartDate" width="90">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planStartDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束日期" align="center" prop="endDate" width="80">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="计划结束日期" align="center" prop="planEndDate" width="90">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planEndDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="工期" align="center" prop="duration" width="60">
<template slot-scope="scope">
<span :class="scope.row.duration < 0 ? 'sp-red' : ''"> {{ scope.row.duration }}</span>
<span v-if="scope.row.duration"></span>
</template>
</el-table-column>
<el-table-column label="剩余天数" align="center" prop="remainingDays" width="80">
<template slot-scope="scope">
<span :class="scope.row.remainingDays < 0 ? 'sp-red' : ''">{{ scope.row.remainingDays }}</span>
<span v-if="scope.row.remainingDays"></span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" width="80">
<template slot-scope="scope">
<span class="sp-orange" v-if="scope.row.status == '进行中'"></span>
<span class="sp-green" v-if="scope.row.status == '完成'"></span>
<span class="sp-red" v-if="scope.row.status == '延迟'"></span>
</template>
</el-table-column>
<el-table-column label="本周完成工作" align="center" prop="work">
<template slot-scope="scope">
<el-popover placement="top-start" width="400" trigger="hover" :content="scope.row.work">
<div slot="reference" class="div-txt-2">
{{ scope.row.work }}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="下周计划" align="center" prop="nextWeekWork">
<template slot-scope="scope">
<el-popover placement="top-start" width="400" trigger="hover" :content="scope.row.nextWeekWork">
<div slot="reference" class="div-txt-2">
{{ scope.row.nextWeekWork }}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="存在问题" align="center" prop="problem">
<template slot-scope="scope">
<el-popover placement="top-start" width="400" trigger="hover" :content="scope.row.problem">
<div slot="reference" class="div-txt-2">
{{ scope.row.problem }}
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="修改记录" align="center" width="80">
<template slot-scope="scope">
<el-popover placement="top-start" width="400" trigger="hover">
<pre style="font-size:12px;">{{ scope.row.updateInfo }}</pre>
<div slot="reference" style="cursor: pointer;color: cornflowerblue;">
修改记录
</div>
</el-popover>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改设计管理对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="${comment}" prop="id">
<el-input v-model="form.id" placeholder="请输入${comment}" />
</el-form-item>
<el-form-item label="节点编号" prop="nodeId">
<el-input v-model="form.nodeId" placeholder="请输入节点编号" />
</el-form-item>
<el-form-item label="项目ID" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目ID" />
</el-form-item>
<el-form-item label="责任人" prop="ownerName">
<el-input v-model="form.ownerName" placeholder="请输入责任人" />
</el-form-item>
<el-form-item label="责任人电话" prop="ownerPhone">
<el-input v-model="form.ownerPhone" placeholder="请输入责任人电话" />
</el-form-item>
<el-form-item label="数据日期,同一周一套数据" prop="dataDate">
<el-date-picker clearable v-model="form.dataDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择数据日期,同一周一套数据">
</el-date-picker>
</el-form-item>
<el-form-item label="开始日期" prop="startDate">
<el-date-picker clearable v-model="form.startDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择开始日期">
</el-date-picker>
</el-form-item>
<el-form-item label="计划开始日期" prop="planStartDate">
<el-date-picker clearable v-model="form.planStartDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择计划开始日期">
</el-date-picker>
</el-form-item>
<el-form-item label="结束日期" prop="endDate">
<el-date-picker clearable v-model="form.endDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="计划结束日期" prop="planEndDate">
<el-date-picker clearable v-model="form.planEndDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择计划结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="工期" prop="duration">
<el-input v-model="form.duration" placeholder="请输入工期" />
</el-form-item>
<el-form-item label="剩余天数" prop="remainingDays">
<el-input v-model="form.remainingDays" placeholder="请输入剩余天数" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="文件" prop="files">
<el-input v-model="form.files" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="本周完成工作" prop="work">
<el-input v-model="form.work" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="下周计划" prop="nextWeekWork">
<el-input v-model="form.nextWeekWork" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="存在问题" prop="problem">
<el-input v-model="form.problem" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="删除状态" prop="isDel">
<el-input v-model="form.isDel" placeholder="请输入删除状态" />
</el-form-item>
<el-form-item label="修改记录" prop="updateInfo">
<el-input v-model="form.updateInfo" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listProjectDesign, getProjectDesign, delProjectDesign, addProjectDesign, updateProjectDesign } from "@/api/project/projectDesign";
export default {
name: "ProjectDesign",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
projectDesignList: [],
//
title: "",
//
open: false,
projectOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 19,
nodeId: null,
projectId: null,
ownerName: null,
ownerPhone: null,
dataDate: null,
startDate: null,
planStartDate: null,
endDate: null,
planEndDate: null,
duration: null,
remainingDays: null,
status: null,
files: null,
work: null,
nextWeekWork: null,
problem: null,
isDel: null,
updateInfo: null
},
//
form: {},
//
rules: {
id: [
{ required: true, message: "$comment不能为空", trigger: "blur" }
],
}
};
},
created() {
this.$api.publics.getMyProjectList({}).then((response) => {
this.projectOptions = response.rows;
});
this.loading = false;
//this.getList();
},
methods: {
/** 查询设计管理列表 */
getList() {
if (!this.queryParams.projectId) {
this.projectDesignList = [];
this.total = 0;
this.loading = false;
return;
}
this.loading = true;
listProjectDesign(this.queryParams).then(response => {
this.projectDesignList = (response.rows || []).map(it => {
if (it.ownerName) {
it.ownerName += (it.ownerPhone ? "-" + it.ownerPhone : "");
} else {
it.ownerName = "";
}
it.nodeText = it.baseBuildNode?.nodeText || "";
it.nodeLvl = it.baseBuildNode?.nodeLvl || "";
it.showOwner = it.nodeLvl != '0301' && it.nodeLvl != '0302';
return it;
});
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
nodeId: null,
projectId: null,
ownerName: null,
ownerPhone: null,
dataDate: null,
startDate: null,
planStartDate: null,
endDate: null,
planEndDate: null,
duration: null,
remainingDays: null,
status: null,
remark: null,
files: null,
work: null,
nextWeekWork: null,
problem: null,
isDel: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
updateInfo: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设计管理";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getProjectDesign(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改设计管理";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id) {
updateProjectDesign(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addProjectDesign(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除设计管理编号为"' + ids + '"的数据项?').then(function () {
return delProjectDesign(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
/** 导出按钮操作 */
handleExport() {
this.download('project/projectDesign/export', {
...this.queryParams
}, `projectDesign_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<style lang="scss">
.prj-design-index {
font-size: 12px;
.tb_data {
.el-table__cell {
padding: 2px;
.cell {
padding: 0px 2px;
font-size: 12px;
.node-text-4 {
font-weight: bold;
}
.node-text-6 {
margin-left: 20px;
}
.sp-red {
color: red;
}
.sp-green {
color: green;
}
.sp-orange {
color: orange;
}
.div-txt-2 {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
}
}
}
}
}
</style>

View File

@ -0,0 +1,53 @@
<template>
<div class="project-design-drawer">
<el-drawer
v-if="isOpen"
:visible.sync="isOpen"
direction="rtl"
size="100%"
style="padding-left: 20px"
>
<template slot="title">
<div>{{ title + " 【设计管理】" }}</div>
</template>
<projectDesignMgr ref="pdMgr" @cancel="doCancel"></projectDesignMgr>
</el-drawer>
</div>
</template>
<script>
import { listByProject,listProjectDesign, getProjectDesign, delProjectDesign, addProjectDesign, updateProjectDesign } from "@/api/project/projectDesign";
import projectDesignMgr from './projectDesignMgr'
export default {
name: 'RuoyiUiProjectDesignDrawer',
components:{
projectDesignMgr
},
data() {
return {
isOpen: false,
project: null,
title: "",
};
},
mounted() {
},
methods: {
doCancel(){
this.isOpen=false;
},
show(project) {
this.project=project;
this.isOpen=true;
this.title = project.projectName;
setTimeout(()=>{
this.$refs.pdMgr.init(project);
},800);
}
},
};
</script>

View File

@ -0,0 +1,294 @@
<template>
<div class="project-design-mgr">
<el-table border :data="dataList" style="width: 100%;margin-bottom: 60px;" v-loading="loading">
<el-table-column prop="nodeText" label="任务内容" width="200">
<template slot-scope="scope">
<div :class="'node-text-' + scope.row.nodeLvl.length">{{ scope.row.nodeText }}</div>
</template>
</el-table-column>
<el-table-column prop="owner" label="负责人" width="120">
<template slot-scope="scope">
<el-select v-if="scope.row.showOwner" v-model="scope.row.ownerName" filterable placeholder="请选择"
popper-class="sel-design-users">
<el-option v-for="(item,idx) in users"
:key="idx" :value="item.name">
<div class="user-item">
<span class="user-name">{{ item.name }}</span>
<span class="user-dept">{{ item.deptName }}</span>
</div>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="owner" label="计划开始时间" width="135">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.planStartDate" type="date" @change="doUpdateRow(scope.row)" placeholder="选择日期"></el-date-picker>
</template>
</el-table-column>
<el-table-column prop="owner" label="计划结束时间" width="135">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.planEndDate" type="date" @change="doUpdateRow(scope.row)" placeholder="选择日期"></el-date-picker>
</template>
</el-table-column>
<el-table-column prop="owner" label="实际开始时间" width="135">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.startDate" type="date" @change="doUpdateRow(scope.row)" placeholder="选择日期"></el-date-picker>
</template>
</el-table-column>
<el-table-column prop="owner" label="实际结束时间" width="135">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.endDate" type="date" @change="doUpdateRow(scope.row)" placeholder="选择日期"></el-date-picker>
</template>
</el-table-column>
<el-table-column prop="owner" label="工期" width="80" align="center">
<template slot-scope="scope">
<span :class="scope.row.duration<0?'sp-red':''"> {{ scope.row.duration }}</span>
<span v-if="scope.row.duration"></span>
</template>
</el-table-column>
<el-table-column prop="owner" label="剩余天数" width="80" align="center">
<template slot-scope="scope">
<span :class="scope.row.remainingDays<0?'sp-red':''">{{ scope.row.remainingDays }}</span>
<span v-if="scope.row.remainingDays"></span>
</template>
</el-table-column>
<el-table-column prop="owner" label="状态" width="80" align="center">
<template slot-scope="scope">
<span class="sp-orange" v-if="scope.row.status=='进行中'"></span>
<span class="sp-green" v-if="scope.row.status=='完成'"></span>
<span class="sp-red" v-if="scope.row.status=='延迟'"></span>
</template>
</el-table-column>
<el-table-column prop="owner" label="本周工作">
<template slot-scope="scope">
<el-input type="textarea" :maxlength="500" :rows="2" placeholder="请输入内容" v-model="scope.row.work"> </el-input>
</template>
</el-table-column>
<el-table-column prop="owner" label="下周计划">
<template slot-scope="scope">
<el-input type="textarea" :maxlength="500" :rows="2" placeholder="请输入内容" v-model="scope.row.nextWeekWork"> </el-input>
</template>
</el-table-column>
<el-table-column prop="owner" label="存在问题">
<template slot-scope="scope">
<el-input type="textarea" :maxlength="500" :rows="2" placeholder="请输入内容" v-model="scope.row.problem"> </el-input>
</template>
</el-table-column>
</el-table>
<div class="footer">
<el-button @click="doSave" type="primary">保存</el-button>
<el-button @click="doCancel"></el-button>
</div>
</div>
</template>
<script>
import { listByProject, updateList} from "@/api/project/projectDesign";
import {findDesignUsers} from "@/api/project/surProjectUserInfo";
export default {
name: 'RuoyiUiProjectDesignMgr',
data() {
return {
project: null,
dataList: [],
loading:false,
users:[]
};
},
mounted() {
findDesignUsers().then(d=>{
this.users=(d.data||[]).map(it=>{
return {
name:`${it.nickName}-${it.phonenumber}`,
phone:it.phonenumber,
userName:it.userName,
deptName:it.remark,
showName:it.nickName+" - "+it.remark
}
})
});
},
methods: {
doSave(){
let postData= this.dataList.map(item=>{
let it=JSON.parse(JSON.stringify(item));
if(it.ownerName){
let tmps=it.ownerName.split("-").filter(d=>d);
it.ownerName=tmps.length>0?tmps[0]:"";
it.ownerPhone=tmps.length>1?tmps[1]:"";
}
let chg=[];
let old=it.old;
if(it.ownerName!=old.ownerName){
chg.push("负责人")
}
if(it.planStartDate!=old.planStartDate){
chg.push("计划开始日期")
}
if(it.planEndDate!=old.planEndDate){
chg.push("计划结束日期")
}
if(it.startDate!=old.startDate){
chg.push("实际开始日期");
}
if(it.endDate!=old.endDate){
chg.push("实际结束日期");
}
if(it.work!=old.work){
chg.push("本周工作");
}
if(it.nextWeekWork!=old.nextWeekWork){
chg.push("下周计划");
}
if(it.problem!=old.problem){
chg.push("存在问题");
}
if(chg.length>0){
let chgInfo=`${this.$store.state.user?.nickname} ${this.$dt(new Date()).format("YYYY-MM-DD HH:mm:ss")} 修改了[${chg.join(",")}]`
if(it.updateInfo){
it.updateInfo+="\n"+chgInfo;
}else{
it.updateInfo=chgInfo;
}
}
delete it.old
return it;
});
updateList(postData).then(d=>{
this.$modal.msgSuccess("保存成功");
this.$emit("success");
});
},
timeSpan(dt1,dt2){
let t1=+this.$dt(dt1).$d;
let t2=+this.$dt(dt2).$d;
let ts=(t2-t1)/1000.0/3600.0/24.0;
let ts2=Math.floor(ts);
if(ts==ts2){
return ts;
}
return ts2+1;
},
doUpdateRow(row){debugger
if(row.planStartDate && row.planEndDate){
row.duration=this.timeSpan(row.planStartDate,row.planEndDate);
}else{
row.duration="";
}
if(row.startDate && !row.endDate && row.planEndDate){
let n=this.timeSpan(row.startDate,row.planEndDate);
row.remainingDays=n>0?n:0;
}else{
row.remainingDays="";
}
row.status="";
if(row.planStartDate && row.planEndDate){
if(row.startDate){
if(row.endDate){
row.status="完成";
}else{
let t1=+this.$dt(row.planEndDate).$d;
let t2=+this.$dt(new Date()).$d;
if(t1>t2){
row.status="进行中";
}else{
row.status="延迟";
}
}
}
}
},
doCancel(){
this.$emit("cancel");
},
init(project) {
this.project = project;
this.loading=true;
listByProject({ projectId: this.project.id }).then(d => {
this.loading=false;
this.dataList = (d.data || []).map(it => {
it.nodeText = it.baseBuildNode?.nodeText || "";
it.nodeLvl = it.baseBuildNode?.nodeLvl || "";
it.showOwner = it.nodeLvl != '0301' && it.nodeLvl != '0302';
let oldData=JSON.parse(JSON.stringify(it));
it.old=oldData;
if(it.ownerName){
it.ownerName+=(it.ownerPhone?"-"+it.ownerPhone:"");
}else{
it.ownerName="";
}
return it;
});
});
}
},
};
</script>
<style lang="scss">
.project-design-mgr {
font-size: 12px;
.el-table__cell {
padding:2px;
.cell {
padding: 0px 2px;
font-size: 12px;
.el-input__inner{
font-size: 12px;
}
.node-text-4 {
font-weight: bold;
}
.node-text-6 {
margin-left: 20px;
}
.el-date-editor.el-input {
width: 100% !important;
font-size: 12px;
}
}
.sp-red{
color: red;
}
.sp-green{
color: green;
}
.sp-orange{
color: orange;
}
}
.footer {
position: fixed;
bottom: 0px;
width: 100%;
text-align: center;
background: #fff;
box-shadow: 3px -2px 5px 5px rgba(0, 0, 0, 0.2);
padding: 8px;
}
}
.sel-design-users{
width: 300px;
.user-item{
font-size:12px;
position: relative;
.user-name{
display: inline-block;
}
.user-dept{
display:inline-block;
color: #aaa;
position: absolute;
right: 4px;
}
}
}
</style>

View File

@ -730,7 +730,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.approveStatus="1";
if (this.form.id != null) {
if (this.form.id) {
updateProjectMeasure(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -613,7 +613,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.approveStatus="1";
if (this.form.id != null) {
if (this.form.id) {
updateProjectMeasure(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -323,7 +323,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateProjectPlan(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -277,7 +277,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateProjectStandard(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -293,7 +293,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updatesurProjectInvest(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -399,6 +399,12 @@
v-hasPermi="['project:build_node_data:list']"
>计划节点管理</el-dropdown-item
>
<el-dropdown-item v-if="1==2"
command="handleDesign"
icon="el-icon-orange"
v-hasPermi="['project:projectDesign:list']"
>设计管理</el-dropdown-item
>
<el-dropdown-item
command="handleProjectChecking"
icon="el-icon-s-help"
@ -779,6 +785,7 @@
<attendanceDataDrawer ref="attendanceData"></attendanceDataDrawer>
<aiBoxVideoConfigDrawer ref="aiBoxVideoConfigDrawer"></aiBoxVideoConfigDrawer>
<prjPhotographyDrawer ref="prjPhotographyDrawer"></prjPhotographyDrawer>
<projectDesignDrawer ref="designDrawer"></projectDesignDrawer>
</div>
</template>
@ -813,6 +820,7 @@ import standardDrawer from '@/views/project/projectStandard/projectStandardDrawe
import attendanceDataDrawer from '@/views/project/attendance/attendanceDrawer.vue';
import aiBoxVideoConfigDrawer from '@/views/video/aiBoxProjectConfig/aiBoxVideoConfigDrawer';
import prjPhotographyDrawer from '@/views/video/prjphotography/prjPhotographyDrawer.vue'
import projectDesignDrawer from '@/views/project/projectDesign/projectDesignDrawer.vue';
import { checkPermi, checkRole } from "@/utils/permission"; //
export default {
@ -838,7 +846,8 @@ export default {
standardDrawer,
attendanceDataDrawer,
aiBoxVideoConfigDrawer,
prjPhotographyDrawer
prjPhotographyDrawer,
projectDesignDrawer
},
dicts: [
"sur_project_xmjd",
@ -1049,6 +1058,9 @@ export default {
case "handleDelete":
this.handleDelete(row);
break;
case "handleDesign":
this.$refs.designDrawer.show(row);
break;
case "handleAssess":
this.$refs.assessDrawer.show(row);
break;
@ -1124,7 +1136,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSurProject(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -329,7 +329,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectAttendance(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -448,7 +448,7 @@ export default {
this.$modal.msgWarning("请上传保险合同");
return false;
}
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectInsurance(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -363,7 +363,7 @@ export default {
this.$modal.msgWarning("请上传保险合同");
return false;
}
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectInsurance(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -355,7 +355,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateAssess(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -502,7 +502,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectSchedule(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -588,7 +588,7 @@ export default {
this.$modal.msgWarning("请上传证书附件");
return false;
}
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectSpecial(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -551,7 +551,7 @@ export default {
this.$modal.msgWarning("请上传证书附件");
return false;
}
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectSpecial(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -409,7 +409,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectUserInfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -332,7 +332,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSurProjectUserInfo(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -417,7 +417,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateApplyConfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -300,7 +300,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.configId != undefined) {
if (this.form.configId) {
updateConfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -310,7 +310,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.deptId != undefined) {
if (this.form.deptId) {
updateDept(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -362,7 +362,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.dictCode != undefined) {
if (this.form.dictCode) {
updateData(this.form).then(response => {
this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
this.$modal.msgSuccess("修改成功");

View File

@ -303,7 +303,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.dictId != undefined) {
if (this.form.dictId) {
updateType(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -245,7 +245,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateExpression(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -298,7 +298,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateListener(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -422,7 +422,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.menuId != undefined) {
if (this.form.menuId) {
updateMenu(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -281,7 +281,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.noticeId != undefined) {
if (this.form.noticeId) {
updateNotice(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -272,7 +272,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.postId != undefined) {
if (this.form.postId) {
updatePost(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -555,7 +555,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.roleId != undefined) {
if (this.form.roleId) {
this.form.menuIds = this.getMenuAllCheckedKeys();
updateRole(this.form).then(response => {
this.$modal.msgSuccess("修改成功");

View File

@ -623,7 +623,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.userId != undefined) {
if (this.form.userId) {
updateUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -531,7 +531,7 @@ export default {
submitForm(){
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.formId != null) {
if (this.form.formId) {
updateForm(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
});

View File

@ -459,7 +459,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSspMarks(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -645,7 +645,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSspProblemmodify(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -459,7 +459,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSspMarks(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -638,7 +638,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateSspProblemmodify(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -384,7 +384,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.devAiProjectConfigPassageList = this.devAiProjectConfigPassageList;
if (this.form.id != null) {
if (this.form.id) {
updateAiBoxProjectConfig(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -441,7 +441,7 @@ export default {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.devAiProjectConfigPassageList = this.devAiProjectConfigPassageList;
if (this.form.id != null) {
if (this.form.id) {
updateAiBoxProjectConfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -289,7 +289,7 @@ export default {
videoDate:this.form.videoDate,
videoUrl:this.form.videoUrl[0].url
}
if (this.form.id != null) {
if (this.form.id) {
updatePrjphotography(postData).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -547,7 +547,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.surProjectVideoPassageList = this.surProjectVideoPassageList;
if (this.form.id != null) {
if (this.form.id) {
updateVideoConfig(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -439,7 +439,7 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.surProjectVideoPassageList = this.surProjectVideoPassageList;
if (this.form.id != null) {
if (this.form.id) {
updateVideoConfig(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -449,7 +449,7 @@ export default {
depts.push({ deptId: item });
});
this.form.workTrainDeptList = depts;
if (this.form.id != null) {
if (this.form.id) {
updateWorkTrain(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -544,7 +544,7 @@ export default {
depts.push({ deptId: item });
});
this.form.workTrainDeptList = depts;
if (this.form.id != null) {
if (this.form.id) {
updateWorkTrain(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -356,7 +356,7 @@ export default {
}else{
this.form.fileList = this.fileList;
}
if (this.form.id != null) {
if (this.form.id) {
updateWorkFile(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -490,7 +490,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
if (this.form.id) {
updateWorkJournalism(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -537,7 +537,7 @@ export default {
depts.push({ deptId: item });
});
this.form.workTrainDeptList = depts;
if (this.form.id != null) {
if (this.form.id) {
updateWorkTrain(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -449,7 +449,7 @@ export default {
depts.push({ deptId: item });
});
this.form.workTrainDeptList = depts;
if (this.form.id != null) {
if (this.form.id) {
updateWorkTrain(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -319,7 +319,7 @@ export default {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.surMenuConfigRoleList = this.surMenuConfigRoleList;
if (this.form.id != null) {
if (this.form.id) {
updateWxMenConfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;

View File

@ -0,0 +1,127 @@
update base_build_node set node_text='资局(开发建设部)部务会',node_lvl='030102' where node_text='方案评审(集团会议)' and node_lvl='030102';
UPDATE base_build_node SET node_text='管委会副主任专题会',node_lvl='030103' WHERE node_text='三方比选(资规局)' AND node_lvl='030103';
UPDATE base_build_node SET node_text='管委会建规委会',node_lvl='030104' WHERE node_text='副主任专题会' AND node_lvl='030104';
UPDATE base_build_node SET node_text='集团总办会',node_lvl='030102' WHERE node_text='主任办公会' AND node_lvl='030105';
UPDATE base_build_node SET node_text='初设确定',node_lvl='0302' WHERE node_text='方案深化设计' AND node_lvl='030106';
UPDATE base_build_node SET node_text='初步设计',node_lvl='030201' WHERE node_text='方案确定(集团会议)' AND node_lvl='030107';
LOCK TABLES `base_build_node` WRITE;
insert into `base_build_node`(`id`,`build_type`,`node_text`,`node_lvl`,`node_type`,`remark`,`is_del`,`create_by`,`create_time`,`update_by`,`update_time`) values
(492,1,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(493,1,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(494,1,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(495,1,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(496,1,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(497,1,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(498,1,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(499,1,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(500,1,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(501,1,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(502,1,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(503,2,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(504,2,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(505,2,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(506,2,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(507,2,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(508,2,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(509,2,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(510,2,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(511,2,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(512,2,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(513,2,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(514,3,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(515,3,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(516,3,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(517,3,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(518,3,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(519,3,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(520,3,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(521,3,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(522,3,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(523,3,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(524,3,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(525,4,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(526,4,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(527,4,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(528,4,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(529,4,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(530,4,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(531,4,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(532,4,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(533,4,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(534,4,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(535,4,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(536,5,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(537,5,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(538,5,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(539,5,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(540,5,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(541,5,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(542,5,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(543,5,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(544,5,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(545,5,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(546,5,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(547,6,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(548,6,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(549,6,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(550,6,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(551,6,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(552,6,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(553,6,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(554,6,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(555,6,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(556,6,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(557,6,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(558,7,'初步设计评审','030202',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(559,7,'施工图确定','0304',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(560,7,'施工图设计','030401',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(561,7,'精装修方案','030402',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(562,7,'景观方案','030403',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(563,7,'精装修施工图设计','030404',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(564,7,'景观施工图设计','030405',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(565,7,'精装修施工图设计','030406',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(566,7,'二次深化设计(外立面、幕墙门窗、泛光照明)','0305',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(567,7,'二次深化设计(车库划线、标识标牌)','0306',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
(568,7,'图纸会审、设计交底、图纸答疑等','0307',0,'',0,'admin','2024-03-16 21:27:31',NULL,NULL),
UNLOCK TABLES;
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('设计管理', '2061', '1', 'projectDesign', 'project/projectDesign/index', 1, 0, 'C', '0', '0', 'project:projectDesign:list', '#', 'admin', sysdate(), '', null, '设计管理菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('设计管理查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'project:projectDesign:query', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('设计管理新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'project:projectDesign:add', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('设计管理修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'project:projectDesign:edit', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('设计管理删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'project:projectDesign:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('设计管理导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'project:projectDesign:export', '#', 'admin', sysdate(), '', null, '');

View File

@ -0,0 +1,137 @@
package com.yanzhu.jh.project.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.yanzhu.jh.project.domain.SurProjectBuildDesignData;
import com.yanzhu.jh.project.service.ISurProjectBuildDesignDataService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author ruoyi
* @date 2024-03-16
*/
@RestController
@RequestMapping("/project/projectDesign")
public class SurProjectBuildDesignDataController extends BaseController
{
@Autowired
private ISurProjectBuildDesignDataService surProjectBuildDesignDataService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:list')")
@GetMapping("/list")
public TableDataInfo list(SurProjectBuildDesignData surProjectBuildDesignData)
{
startPage();
List<SurProjectBuildDesignData> list = surProjectBuildDesignDataService.selectSurProjectBuildDesignDataList(surProjectBuildDesignData);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:export')")
@Log(title = "设计管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SurProjectBuildDesignData surProjectBuildDesignData)
{
List<SurProjectBuildDesignData> list = surProjectBuildDesignDataService.selectSurProjectBuildDesignDataList(surProjectBuildDesignData);
ExcelUtil<SurProjectBuildDesignData> util = new ExcelUtil<SurProjectBuildDesignData>(SurProjectBuildDesignData.class);
util.exportExcel(response, list, "设计管理数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(surProjectBuildDesignDataService.selectSurProjectBuildDesignDataById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:add')")
@Log(title = "设计管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SurProjectBuildDesignData surProjectBuildDesignData)
{
return toAjax(surProjectBuildDesignDataService.insertSurProjectBuildDesignData(surProjectBuildDesignData));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:edit')")
@Log(title = "设计管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SurProjectBuildDesignData surProjectBuildDesignData)
{
return toAjax(surProjectBuildDesignDataService.updateSurProjectBuildDesignData(surProjectBuildDesignData));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:edit')")
@Log(title = "设计管理", businessType = BusinessType.UPDATE)
@PostMapping("updateList")
public AjaxResult updateList(@RequestBody List<SurProjectBuildDesignData> list)
{
return AjaxResult.success (surProjectBuildDesignDataService.updateList(list));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:remove')")
@Log(title = "设计管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(surProjectBuildDesignDataService.deleteSurProjectBuildDesignDataByIds(ids));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDesign:list')")
@GetMapping("/listByProject")
public AjaxResult listByProject(SurProjectBuildDesignData where)
{
//按项目ID查找设计管理数据日期为当前周内如果没有就增加一组数据增加的数据先找后一条数据进行克隆如果没有就增加空白数据
where.setStartDate(DateUtil.beginOfWeek(DateTime.now()));
where.setEndDate(DateUtil.endOfWeek(DateTime.now()));
List<SurProjectBuildDesignData> list=surProjectBuildDesignDataService.selectWeekData(where);
if(list.size()==0){
surProjectBuildDesignDataService.addWeekData(where);
list=surProjectBuildDesignDataService.selectWeekData(where);
}
return AjaxResult.success(list);
}
}

View File

@ -131,12 +131,8 @@ public class SurProjectBuildNodeDataController extends BaseController
public AjaxResult getListByProject(long projectId){
SurProjectBuildNodeData surProjectBuildNodeData=new SurProjectBuildNodeData();
surProjectBuildNodeData.setProjectId(projectId);
List list=surProjectBuildNodeDataService.selectSurProjectBuildNodeDataList(surProjectBuildNodeData);
if(list.size()>0){
return AjaxResult.success(list);
}
surProjectBuildNodeDataService.addProjectNodes(projectId);
list=surProjectBuildNodeDataService.selectSurProjectBuildNodeDataList(surProjectBuildNodeData);
List<SurProjectBuildNodeData> list=surProjectBuildNodeDataService.selectSurProjectBuildNodeDataListAndAdd(surProjectBuildNodeData);
return AjaxResult.success(list);
}
}

View File

@ -136,4 +136,10 @@ public class SurProjectUserinfoController extends BaseController
return getDataTable(list);
}
@PreAuthorize("@ss.hasPermi('project:surProjectUserInfo:list')")
@GetMapping("/findDesignUsers")
public AjaxResult findDesignUsers(){
return AjaxResult.success(surProjectUserinfoService.selectDesignUsers());
}
}

View File

@ -1,6 +1,7 @@
package com.yanzhu.jh.project.domain;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -62,7 +63,7 @@ public class SurProjectAttendanceData extends BaseEntity
/** 分包商id */
@Excel(name = "分包商id")
private Long companyId;
private String companyId;
/** 平台对应分包商ID */
@Excel(name = "平台对应分包商ID")
@ -112,11 +113,27 @@ public class SurProjectAttendanceData extends BaseEntity
d.identification=j.getString("idCardNo");
d.teamId=j.getLongValue("teamId",0);
d.workTypeCode=j.getString("workerTypeId");
d.companyId=j.getLongValue("unitId",1);
d.companyId=j.getString("unitId");
d.deviceCode=j.getString("deviceNo");
return d;
}
public static SurProjectAttendanceData createFromJgw(JSONObject j) {
SurProjectAttendanceData d=new SurProjectAttendanceData();
d.vendorsCode="jgw";
d.serverid=j.getString("id");
d.workerId=j.getString("workerId");
d.attendanceType = j.getLongValue("signType", 1l) == 2l ? "E" : "L";
d.attendanceTime = j.getString("checkinTime");
d.identification="";
d.teamId=0l;
d.workTypeCode="";
d.companyId=j.getString("subcontractorId");
d.deviceCode=j.getString("deviceSerialNo");
d.isDel=0l;
return d;
}
public Long getDeptId() {
return deptId;
}
@ -161,7 +178,7 @@ public class SurProjectAttendanceData extends BaseEntity
d.identification=json.getString("identification");
d.teamId=json.getLong("teamId");
d.workTypeCode=json.getString("workerTypeId");
d.companyId=json.getLong("companyId");
d.companyId=json.getString("companyId");
d.vendorId=json.getLong("vendorId");
d.projectType=json.getLong("projectType");
d.deviceCode=json.getString("deviceCode");
@ -263,12 +280,12 @@ public class SurProjectAttendanceData extends BaseEntity
{
return workTypeCode;
}
public void setCompanyId(Long companyId)
public void setCompanyId(String companyId)
{
this.companyId = companyId;
}
public Long getCompanyId()
public String getCompanyId()
{
return companyId;
}

View File

@ -41,7 +41,7 @@ public class SurProjectAttendanceGroup extends BaseEntity
/** 分包商ID */
@Excel(name = "分包商ID")
private Long companyId;
private String companyId;
/** 分包商名称 */
@Excel(name = "分包商名称")
@ -113,15 +113,30 @@ public class SurProjectAttendanceGroup extends BaseEntity
public static SurProjectAttendanceGroup createHuazhu(JSONObject j) {
SurProjectAttendanceGroup g=new SurProjectAttendanceGroup();
g.companyId=j.getLongValue("unitId",0);
g.companyId=""+j.getLongValue("unitId",0);
g.companyName=j.getString("unitName");
g.companyTypeId=j.getString("unitType");
g.serverid=j.getString("id");
g.enterDate=j.getLong("enterTime");
g.exitDate=j.getLong("leaveTime");
g.isDel=0l;
return g;
}
public static SurProjectAttendanceGroup createJgw(JSONObject j) {
SurProjectAttendanceGroup g=new SurProjectAttendanceGroup();
g.serverid=j.getString("id");
g.companyId=j.getString("subcontractorId");
g.companyName=j.getString("corpName");
g.teamName=j.getString("teamName");
g.bizLicense=j.getString("corpCode");
g.companyTypeId="";
g.enterDate=0l;
g.exitDate=0l;
g.isDel=0l;
return g;
}
public Long getCreateTimestamp() {
return createTimestamp;
}
@ -135,7 +150,7 @@ public class SurProjectAttendanceGroup extends BaseEntity
g.serverid=json.getString("id");
g.bizLicense=json.getString("bizLicense");
g.companyCode=json.getString("companyCode");
g.companyId=json.getLongValue("companyId",0);
g.companyId=""+json.getLongValue("companyId",0);
g.companyName=json.getString("companyName");
g.companyTypeId=json.getString("companyTypeId");
g.vendorId=json.getLongValue("vendorId",0);
@ -201,12 +216,12 @@ public class SurProjectAttendanceGroup extends BaseEntity
{
return companyCode;
}
public void setCompanyId(Long companyId)
public void setCompanyId(String companyId)
{
this.companyId = companyId;
}
public Long getCompanyId()
public String getCompanyId()
{
return companyId;
}

View File

@ -1,6 +1,7 @@
package com.yanzhu.jh.project.domain;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -129,7 +130,7 @@ public class SurProjectAttendanceUser extends BaseEntity
/** 分包商id */
@Excel(name = "分包商id")
private Long companyId;
private String companyId;
/** 分包商名称 */
@Excel(name = "分包商名称")
@ -187,13 +188,43 @@ public class SurProjectAttendanceUser extends BaseEntity
u.exitDate = DateUtil.format(DateUtil.date(leaveTime), "yyyy-MM-dd HH:mm:ss");
}
u.vendorId=j.getLongValue("unitProjectId",0);
u.companyId=j.getLongValue("unitId",0);
u.companyId=""+j.getLongValue("unitId",0);
u.companyName=j.getString("unitName");
u.teamName=j.getString("teamName");
u.other=j.toJSONString();
return u;
}
public static SurProjectAttendanceUser createFromJgw(JSONObject j) {
SurProjectAttendanceUser u=new SurProjectAttendanceUser();
u.workerId=j.getString("workerId");
u.name=j.getString("name");
u.ethnic=j.getString("minor");
u.nativePlace=j.getString("address");
u.gender=j.getLong("sex")==0l?1l:0l;
u.birthDate= DateUtil.parse(j.getString("birthday")).getTime();
u.phone=j.getString("headImage");
u.degreeName=j.getString("education");
u.recentPhoto=j.getString("vaildPhoto");
u.groupId="";
u.groupName="";
u.workTypeCode="";
u.workTypeName="";
u.state="01".equals( j.getString("workerStatus"))?0l:1l;
String workDate=j.getString("workDate");
if(!StrUtil.isEmpty(workDate)){
u.enterDate=workDate;
}
u.vendorId=0l;
u.companyId=j.getString("subcontractorId");
u.companyName="";
u.teamName="";
u.other=j.toJSONString();
u.isDel=0l;
u.leader=j.getInteger("isAdmin")==1?1:0;
return u;
}
public Date getInTime() {
return inTime;
}
@ -290,7 +321,7 @@ public class SurProjectAttendanceUser extends BaseEntity
u.state=json.getLongValue("state",0);
u.enterDate=json.getString("enterDate");
u.exitDate=json.getString("exitDate");
u.companyId=json.getLongValue("companyId",0);
u.companyId=""+json.getLongValue("companyId",0);
u.companyName=json.getString("companyName");
u.vendorId=json.getLongValue("vendorId",0);
u.teamId=json.getInteger("teamId");
@ -534,12 +565,12 @@ public class SurProjectAttendanceUser extends BaseEntity
{
return exitDate;
}
public void setCompanyId(Long companyId)
public void setCompanyId(String companyId)
{
this.companyId = companyId;
}
public Long getCompanyId()
public String getCompanyId()
{
return companyId;
}

View File

@ -0,0 +1,322 @@
package com.yanzhu.jh.project.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* sur_project_build_design_data
*
* @author ruoyi
* @date 2024-03-16
*/
public class SurProjectBuildDesignData extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 节点编号 */
@Excel(name = "节点编号")
private Long nodeId;
/** 项目ID */
@Excel(name = "项目ID")
private Long projectId;
/** 责任人 */
@Excel(name = "责任人")
private String ownerName;
/** 责任人电话 */
@Excel(name = "责任人电话")
private String ownerPhone;
/** 数据日期,同一周一套数据 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "数据日期,同一周一套数据", width = 30, dateFormat = "yyyy-MM-dd")
private Date dataDate;
/** 开始日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date startDate;
/** 计划开始日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date planStartDate;
/** 结束日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date endDate;
/** 计划结束日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date planEndDate;
/** 工期 */
@Excel(name = "工期")
private Long duration;
/** 剩余天数 */
@Excel(name = "剩余天数")
private Long remainingDays;
/** a.进行中 当前时间小于计划结束日期 */
@Excel(name = "a.进行中 当前时间小于计划结束日期")
private String status;
/** 文件 */
@Excel(name = "文件")
private String files;
/** 本周完成工作 */
@Excel(name = "本周完成工作")
private String work;
/** 下周计划 */
@Excel(name = "下周计划")
private String nextWeekWork;
/** 存在问题 */
@Excel(name = "存在问题")
private String problem;
/** 删除状态 */
@Excel(name = "删除状态")
private Long isDel;
/** 修改记录 */
@Excel(name = "修改记录")
private String updateInfo;
private BaseBuildNode baseBuildNode;
public BaseBuildNode getBaseBuildNode() {
return baseBuildNode;
}
public void setBaseBuildNode(BaseBuildNode baseBuildNode) {
this.baseBuildNode = baseBuildNode;
}
public SurProject getProject() {
return project;
}
public void setProject(SurProject project) {
this.project = project;
}
private SurProject project;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setNodeId(Long nodeId)
{
this.nodeId = nodeId;
}
public Long getNodeId()
{
return nodeId;
}
public void setProjectId(Long projectId)
{
this.projectId = projectId;
}
public Long getProjectId()
{
return projectId;
}
public void setOwnerName(String ownerName)
{
this.ownerName = ownerName;
}
public String getOwnerName()
{
return ownerName;
}
public void setOwnerPhone(String ownerPhone)
{
this.ownerPhone = ownerPhone;
}
public String getOwnerPhone()
{
return ownerPhone;
}
public void setDataDate(Date dataDate)
{
this.dataDate = dataDate;
}
public Date getDataDate()
{
return dataDate;
}
public void setStartDate(Date startDate)
{
this.startDate = startDate;
}
public Date getStartDate()
{
return startDate;
}
public void setPlanStartDate(Date planStartDate)
{
this.planStartDate = planStartDate;
}
public Date getPlanStartDate()
{
return planStartDate;
}
public void setEndDate(Date endDate)
{
this.endDate = endDate;
}
public Date getEndDate()
{
return endDate;
}
public void setPlanEndDate(Date planEndDate)
{
this.planEndDate = planEndDate;
}
public Date getPlanEndDate()
{
return planEndDate;
}
public void setDuration(Long duration)
{
this.duration = duration;
}
public Long getDuration()
{
return duration;
}
public void setRemainingDays(Long remainingDays)
{
this.remainingDays = remainingDays;
}
public Long getRemainingDays()
{
return remainingDays;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setFiles(String files)
{
this.files = files;
}
public String getFiles()
{
return files;
}
public void setWork(String work)
{
this.work = work;
}
public String getWork()
{
return work;
}
public void setNextWeekWork(String nextWeekWork)
{
this.nextWeekWork = nextWeekWork;
}
public String getNextWeekWork()
{
return nextWeekWork;
}
public void setProblem(String problem)
{
this.problem = problem;
}
public String getProblem()
{
return problem;
}
public void setIsDel(Long isDel)
{
this.isDel = isDel;
}
public Long getIsDel()
{
return isDel;
}
public void setUpdateInfo(String updateInfo)
{
this.updateInfo = updateInfo;
}
public String getUpdateInfo()
{
return updateInfo;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("nodeId", getNodeId())
.append("projectId", getProjectId())
.append("ownerName", getOwnerName())
.append("ownerPhone", getOwnerPhone())
.append("dataDate", getDataDate())
.append("startDate", getStartDate())
.append("planStartDate", getPlanStartDate())
.append("endDate", getEndDate())
.append("planEndDate", getPlanEndDate())
.append("duration", getDuration())
.append("remainingDays", getRemainingDays())
.append("status", getStatus())
.append("remark", getRemark())
.append("files", getFiles())
.append("work", getWork())
.append("nextWeekWork", getNextWeekWork())
.append("problem", getProblem())
.append("isDel", getIsDel())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("updateInfo", getUpdateInfo())
.toString();
}
}

View File

@ -192,4 +192,5 @@ public class SurProjectBuildNodeData extends BaseEntity
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,67 @@
package com.yanzhu.jh.project.mapper;
import java.util.List;
import com.yanzhu.jh.project.domain.SurProjectBuildDesignData;
/**
* Mapper
*
* @author ruoyi
* @date 2024-03-16
*/
public interface SurProjectBuildDesignDataMapper
{
/**
*
*
* @param id
* @return
*/
public SurProjectBuildDesignData selectSurProjectBuildDesignDataById(Long id);
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
public List<SurProjectBuildDesignData> selectSurProjectBuildDesignDataList(SurProjectBuildDesignData surProjectBuildDesignData);
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
public int insertSurProjectBuildDesignData(SurProjectBuildDesignData surProjectBuildDesignData);
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
public int updateSurProjectBuildDesignData(SurProjectBuildDesignData surProjectBuildDesignData);
/**
*
*
* @param id
* @return
*/
public int deleteSurProjectBuildDesignDataById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteSurProjectBuildDesignDataByIds(Long[] ids);
/**
*
* @param projectId,startDate,endDate
* @return
*/
public List<SurProjectBuildDesignData> selectWeekData(SurProjectBuildDesignData where);
}

View File

@ -85,4 +85,10 @@ public interface SurProjectUserinfoMapper
* @return
*/
public List<SysUser> selectProjectUserList(SurProject surProject);
/**
*
* @return
*/
public List<SysUser> selectDesignUsers();
}

View File

@ -84,4 +84,10 @@ public interface ISurProjectAttendanceGroupService
public int batchSurProjectAttendanceGroup(List<SurProjectAttendanceGroup> surProjectAttendanceGroupList);
public void add(SurProjectAttendanceGroup group);
/**
*
* @param group
*/
public void updateJgw(SurProjectAttendanceGroup group);
}

View File

@ -0,0 +1,83 @@
package com.yanzhu.jh.project.service;
import java.util.List;
import com.yanzhu.jh.project.domain.SurProjectBuildDesignData;
/**
* Service
*
* @author ruoyi
* @date 2024-03-16
*/
public interface ISurProjectBuildDesignDataService
{
/**
*
*
* @param id
* @return
*/
public SurProjectBuildDesignData selectSurProjectBuildDesignDataById(Long id);
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
public List<SurProjectBuildDesignData> selectSurProjectBuildDesignDataList(SurProjectBuildDesignData surProjectBuildDesignData);
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
public int insertSurProjectBuildDesignData(SurProjectBuildDesignData surProjectBuildDesignData);
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
public int updateSurProjectBuildDesignData(SurProjectBuildDesignData surProjectBuildDesignData);
/**
*
*
* @param ids
* @return
*/
public int deleteSurProjectBuildDesignDataByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteSurProjectBuildDesignDataById(Long id);
/**
*
* @param projectId,startDate,endDate
* @return
*/
public List<SurProjectBuildDesignData> selectWeekData(com.yanzhu.jh.project.domain.SurProjectBuildDesignData where);
/**
*
* @param where
* @return
*/
public int addWeekData(SurProjectBuildDesignData where);
/**
*
* @param list
* @return
*/
public int updateList(List<SurProjectBuildDesignData> list);
}

View File

@ -83,4 +83,16 @@ public interface ISurProjectBuildNodeDataService
public List<SurProjectBuildNodeData> queryByProjectType(long type);
public List<SurProjectBuildNodeData> queryFinishProject(long projectId);
/**
* 2024-3
* @param projectId
*/
public int addDesignNodes(long projectId);
/**
*
* @return
*/
public List<SurProjectBuildNodeData> selectSurProjectBuildNodeDataListAndAdd(SurProjectBuildNodeData where);
}

View File

@ -96,4 +96,10 @@ public interface ISurProjectUserinfoService
* @return
*/
public List<SysUser> selectProjectUserList(SurProject surProject);
/**
*
* @return
*/
public List<SysUser> selectDesignUsers();
}

View File

@ -143,4 +143,19 @@ public class SurProjectAttendanceGroupServiceImpl implements ISurProjectAttendan
updateSurProjectAttendanceGroup(group);
}
}
/**
*
* @param group
*/
@Override
public void updateJgw(SurProjectAttendanceGroup group) {
SurProjectAttendanceGroup where=new SurProjectAttendanceGroup();
where.setBizLicense(group.getBizLicense());
List<SurProjectAttendanceGroup> list=selectSurProjectAttendanceGroupList(where);
for(SurProjectAttendanceGroup g:list){
g.setCompanyTypeId(group.getCompanyTypeId());
updateSurProjectAttendanceGroup(g);
}
}
}

View File

@ -0,0 +1,213 @@
package com.yanzhu.jh.project.service.impl;
import java.util.List;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.utils.DateUtils;
import com.yanzhu.jh.project.domain.BaseBuildNode;
import com.yanzhu.jh.project.domain.SurProjectBuildNodeData;
import com.yanzhu.jh.project.mapper.BaseBuildNodeMapper;
import com.yanzhu.jh.project.service.ISurProjectBuildNodeDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.SurProjectBuildDesignDataMapper;
import com.yanzhu.jh.project.domain.SurProjectBuildDesignData;
import com.yanzhu.jh.project.service.ISurProjectBuildDesignDataService;
import com.ruoyi.common.utils.SecurityUtils;
/**
* Service
*
* @author ruoyi
* @date 2024-03-16
*/
@Service
public class SurProjectBuildDesignDataServiceImpl implements ISurProjectBuildDesignDataService
{
@Autowired
private SurProjectBuildDesignDataMapper surProjectBuildDesignDataMapper;
@Autowired
private BaseBuildNodeMapper baseBuildNodeMapper;
@Autowired
private ISurProjectBuildNodeDataService surProjectBuildNodeDataService;
/**
*
*
* @param id
* @return
*/
@Override
public SurProjectBuildDesignData selectSurProjectBuildDesignDataById(Long id)
{
return surProjectBuildDesignDataMapper.selectSurProjectBuildDesignDataById(id);
}
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
@Override
public List<SurProjectBuildDesignData> selectSurProjectBuildDesignDataList(SurProjectBuildDesignData surProjectBuildDesignData)
{
return surProjectBuildDesignDataMapper.selectSurProjectBuildDesignDataList(surProjectBuildDesignData);
}
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
@Override
public int insertSurProjectBuildDesignData(SurProjectBuildDesignData surProjectBuildDesignData)
{
surProjectBuildDesignData.setCreateBy(SecurityUtils.getUsername());
surProjectBuildDesignData.setCreateTime(DateUtils.getNowDate());
return surProjectBuildDesignDataMapper.insertSurProjectBuildDesignData(surProjectBuildDesignData);
}
/**
*
*
* @param surProjectBuildDesignData
* @return
*/
@Override
public int updateSurProjectBuildDesignData(SurProjectBuildDesignData surProjectBuildDesignData)
{
surProjectBuildDesignData.setUpdateBy(SecurityUtils.getUsername());
surProjectBuildDesignData.setUpdateTime(DateUtils.getNowDate());
return surProjectBuildDesignDataMapper.updateSurProjectBuildDesignData(surProjectBuildDesignData);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteSurProjectBuildDesignDataByIds(Long[] ids)
{
return surProjectBuildDesignDataMapper.deleteSurProjectBuildDesignDataByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteSurProjectBuildDesignDataById(Long id)
{
return surProjectBuildDesignDataMapper.deleteSurProjectBuildDesignDataById(id);
}
/**
*
* @param projectId,startDate,endDate
* @return
*/
@Override
public List<SurProjectBuildDesignData> selectWeekData(SurProjectBuildDesignData where) {
return surProjectBuildDesignDataMapper.selectWeekData(where);
}
@Override
public int addWeekData(SurProjectBuildDesignData where) {
int n=0;
//查询上周数据
SurProjectBuildDesignData prvWhere=new SurProjectBuildDesignData();
DateTime dt= DateUtil.offsetDay(DateUtil.date(),-7);
prvWhere.setProjectId(where.getProjectId());
prvWhere.setStartDate(DateUtil.beginOfWeek(dt));
prvWhere.setEndDate(DateUtil.endOfWeek(dt));
List<SurProjectBuildDesignData> prvList=selectWeekData(prvWhere);
DateTime dataTime=DateTime.now();
if(prvList.size()>0){ //上周有数据,使用上周的数据,如果没有就创建新数据
for(SurProjectBuildDesignData node :prvList){
SurProjectBuildDesignData it = getSurProjectBuildDesignData(node, dataTime);
insertSurProjectBuildDesignData(it);
n++;
}
return n;
}
List<BaseBuildNode> list=baseBuildNodeMapper.selectByProject(where.getProjectId());
for(BaseBuildNode node:list){
if(node.getNodeLvl().startsWith("03") && node.getNodeLvl().length()>2){
SurProjectBuildDesignData it=new SurProjectBuildDesignData();
it.setNodeId(node.getId());
it.setProjectId(where.getProjectId());
it.setDataDate(dataTime);
it.setIsDel(0l);
insertSurProjectBuildDesignData(it);
n++;
}
}
return n;
}
/**
*
* @param list
* @return
*/
@Override
public int updateList(List<SurProjectBuildDesignData> list) {
if(list.size()==0){
return 0;
}
long projectId= list.get(0).getProjectId();
SurProjectBuildNodeData where=new SurProjectBuildNodeData();
where.setProjectId(projectId);
List<SurProjectBuildNodeData> nodeDataList=surProjectBuildNodeDataService.selectSurProjectBuildNodeDataListAndAdd(where);
int cnt=0;
for(SurProjectBuildDesignData item :list){
updateSurProjectBuildDesignData(item);
SurProjectBuildNodeData it=findNodeDataInList(nodeDataList,item);
if(it!=null){
it.setStartDate(item.getStartDate());
it.setEndDate(item.getEndDate());
it.setPlanStartDate(item.getPlanStartDate());
it.setPlanEndDate(item.getPlanEndDate());
surProjectBuildNodeDataService.updateSurProjectBuildNodeData(it);
}
}
return cnt;
}
private SurProjectBuildNodeData findNodeDataInList(List<SurProjectBuildNodeData> nodeDataList, SurProjectBuildDesignData item) {
for(SurProjectBuildNodeData it:nodeDataList){
if(it.getNodeId()==item.getNodeId()){
return it;
}
}
return null;
}
private static SurProjectBuildDesignData getSurProjectBuildDesignData(SurProjectBuildDesignData node, DateTime dataTime) {
SurProjectBuildDesignData it=new SurProjectBuildDesignData();
it.setOwnerPhone(node.getOwnerPhone());
it.setOwnerName(node.getOwnerName());
it.setStartDate(node.getStartDate());
it.setDataDate(dataTime);
it.setProjectId(node.getProjectId());
it.setEndDate(node.getEndDate());
it.setIsDel(0l);
it.setNodeId(node.getNodeId());
it.setDuration(node.getDuration());
it.setNextWeekWork(node.getNextWeekWork());
it.setPlanEndDate(node.getPlanEndDate());
it.setPlanEndDate(node.getPlanEndDate());
it.setProblem(node.getProblem());
it.setWork(node.getWork());
it.setRemainingDays(node.getRemainingDays());
it.setStatus(node.getStatus());
return it;
}
}

View File

@ -3,6 +3,7 @@ package com.yanzhu.jh.project.service.impl;
import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.yanzhu.jh.project.domain.vo.SurProjectBuildNodeDataExport;
import com.yanzhu.jh.project.mapper.SurProjectMapper;
@ -124,6 +125,45 @@ public class SurProjectBuildNodeDataServiceImpl implements ISurProjectBuildNodeD
}
return n;
}
@Override
public int addDesignNodes(long projectId) {
List<BaseBuildNode> list=baseBuildNodeMapper.selectByProject(projectId);
int n=0;
for(BaseBuildNode it :list){
if(it.getId()>491) {
SurProjectBuildNodeData item = new SurProjectBuildNodeData();
item.setProjectId(projectId);
item.setNodeId(it.getId());
item.setIsDel(0l);
n += this.insertSurProjectBuildNodeData(item);
}
}
return n;
}
@Override
public List<SurProjectBuildNodeData> selectSurProjectBuildNodeDataListAndAdd(SurProjectBuildNodeData where) {
long projectId=where.getProjectId();
List<SurProjectBuildNodeData> list=this.selectSurProjectBuildNodeDataList(where);
if(list.size()>0){
boolean foundNewDesignLvl=false;
for(SurProjectBuildNodeData it:list){
if(it.getBaseBuildNode().getNodeLvl().equals("0304")){
foundNewDesignLvl=true;
break;
}
}
if(!foundNewDesignLvl){
this.addDesignNodes(projectId);
list=this.selectSurProjectBuildNodeDataList(where);
return list;
}
return list;
}
this.addProjectNodes(projectId);
list=this.selectSurProjectBuildNodeDataList(where);
return list;
}
@Override
public int importData(List<SurProjectBuildNodeDataExport> list) {
@ -190,4 +230,5 @@ public class SurProjectBuildNodeDataServiceImpl implements ISurProjectBuildNodeD
public List<SurProjectBuildNodeData> queryFinishProject(long projectId) {
return surProjectBuildNodeDataMapper.queryFinishProject(projectId);
}
}

View File

@ -322,4 +322,13 @@ public class SurProjectUserinfoServiceImpl implements ISurProjectUserinfoService
{
return surProjectUserinfoMapper.selectProjectUserList(surProject);
}
/**
*
* @return
*/
@Override
public List<SysUser> selectDesignUsers() {
return surProjectUserinfoMapper.selectDesignUsers();
}
}

View File

@ -124,7 +124,7 @@ public class AttendanceHuazhuTask {
}
/**
* 7
* 90
*/
public void syncLast90DayAttendanceData() {
long endTime=DateUtil.current();
@ -132,6 +132,9 @@ public class AttendanceHuazhuTask {
syncAttendanceData(startTime);
}
/**
* 7
*/
public void syncLastWeekAttendanceData() {
long endTime=DateUtil.current();
long startTime=endTime-3600*1000*24*7;

View File

@ -1,16 +1,50 @@
package com.yanzhu.jh.project.task;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.ruoyi.common.utils.uuid.UUID;
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
import com.yanzhu.jh.project.domain.SurProjectAttendanceData;
import com.yanzhu.jh.project.domain.SurProjectAttendanceGroup;
import com.yanzhu.jh.project.domain.SurProjectAttendanceUser;
import com.yanzhu.jh.project.service.ISurProjectAttendanceCfgService;
import com.yanzhu.jh.project.service.ISurProjectAttendanceDataService;
import com.yanzhu.jh.project.service.ISurProjectAttendanceGroupService;
import com.yanzhu.jh.project.service.ISurProjectAttendanceUserService;
import okhttp3.*;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Component("attendanceJgwTask")
public class AttendanceJgwTask {
@Autowired
ISurProjectAttendanceUserService attendanceUserService;
@Autowired
ISurProjectAttendanceCfgService attendanceCfgService;
@Autowired
ISurProjectAttendanceDataService attendanceDataService;
@Autowired
ISurProjectAttendanceGroupService attendanceGroupService;
static String host="http://api.gongyoumishu.com:80/gomeetapi/";
//sign/photo/20240101/E24E76-C9A5CB-0000FF/1741751233297383424_8848.JPG
public static String getToken(String appid,String secret){
@ -40,17 +74,24 @@ public class AttendanceJgwTask {
}
return builder.build();
}
public static void main(String[] args){
String d="sxyzxx2024suc";
System.out.println(Base64.encode(d));
String appid="6a6f24fe35b04ee0bcf31cfb46ed1051";
String secret="c3h5enh4MjAyNHN1Yw==";
String prjId="b67f1baa6dca4558a16bf90a4681b82e";
String prjId="db955e11ef774e63968a47c3dc2acc15";//"b67f1baa6dca4558a16bf90a4681b82e";
String token= getToken(appid,secret);
if(token==null || token.length()==0){
return;
}
System.out.println(token);
//findAddWorkerByProject(appid,token,prjId);
System.out.println(DateUtil.format(DateTime.now(),"yyyy-MM-dd"));
//findAddWorkerByProject(appid,token,prjId,0);
findAttendanceByProject(appid,token,prjId);
//findTeamByProjectId(appid,token,prjId);
//findProContractorByProjectId(appid,token,prjId);
}
public static void findAttendanceByProject(String appId,String token,String projectId){
String path="/webapi/project/findAttendanceByProject";
@ -66,24 +107,138 @@ public class AttendanceJgwTask {
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
params.put("startId",startId);
params.put("startTime","2024-01-01");
params.put("endTime","2024-01-20");
params.put("startTime",DateUtil.format(DateTime.now(),"yyyy-MM-dd"));
params.put("endTime",DateUtil.format(DateUtil.offsetDay(DateTime.now(),0),"yyyy-MM-dd"));
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
String endId= joData.getString("endId");
JSONArray arr=joData.getJSONArray("workerAttList");
if(arr!=null && arr.size()>0){
for(int i=0;i<arr.size();i++) {
JSONObject json = arr.getJSONObject(i);
String photo=json.getString("signimg");
String photoUrl=getPhoto(appId,token,photo);
SurProjectAttendanceData sdata = SurProjectAttendanceData.createFromJgw(json);
sdata.setScanPhoto(photoUrl);
}
}
}
public static void findAddWorkerByProject(String appId,String token,String projectId){
String path="/webapi/project/findAddWorkerByProject";
private static String getPhoto(String appId,String token, String photo) {
String path="/webapi/dictInfo/getPhoyoAllPaths";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("filePath",photo);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
String purl=joData.getString("result");
byte[] buffer= HttpUtil.downloadBytes(purl);
String filePath= RuoYiConfig.getUploadPath();
filePath="D:/data/uploadPath";
try {
return FileUtils.writeBytes(buffer, filePath+"/jgw");
}catch (Exception ex){
return "";
}
}
public static void findProContractorByProjectId(String appId,String token,String projectId){
String path="/webapi/project/findProContractorByProjectId";
String time = System.currentTimeMillis() + "";
String startId="0";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
System.out.println(url);
String tokenSign = Md5Utils.hash(url);
System.out.println(tokenSign);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("proContractorList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceGroup group=new SurProjectAttendanceGroup();
}
}
}
public static void findTeamByProjectId(String appId,String token,String projectId){
String path="/webapi/project/findTeamByProjectId";
String time = System.currentTimeMillis() + "";
String startId="34549";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json);
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
group.setCompanyTypeId("1");
}else if("007".equals(type)){//监理人员
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
}
}
}
}
public static void findAddWorkerByProject(String appId,String token,String projectId,int startId){
String path="/webapi/project/findAddWorkerByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
@ -95,7 +250,323 @@ public class AttendanceJgwTask {
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject jo= JSON.parseObject(data);
JSONObject joData= jo.getJSONObject("data");
int endId= joData.getInteger("endId");
JSONArray arr=joData.getJSONArray("workerList");
if(arr.size()>0) {
int cnt=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
String workerStatus= json.getString("workerStatus");
if("02".equals(workerStatus)){
cnt++;
}
// SurProjectAttendanceUser user=SurProjectAttendanceUser.createFromJgw(json);
}
System.out.println("cnt:"+cnt+","+arr.size());
//findAddWorkerByProject(appId, token, projectId, endId);
}
}
/**
*
*/
public void syncWorker(){
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
List<SurProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(SurProjectAttendanceCfg it :list){
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
doSyncWorker(jo,0l,it);
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
private void doSyncWorker(JSONObject jo, long startId, SurProjectAttendanceCfg it) {
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String path="/webapi/project/findAddWorkerByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
long endId= joData.getLong("endId");
JSONArray arr=joData.getJSONArray("workerList");
if(arr.size()>0) {
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceUser user=SurProjectAttendanceUser.createFromJgw(json);
user.setVendorsCode(it.getVendorsCode());
user.setCfgid(it.getId());
user.setAppId(appId);
attendanceUserService.add(user);
}
doSyncWorker(jo,endId,it);
}
}
/**
*
*/
public void syncGroup(){
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
List<SurProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(SurProjectAttendanceCfg it :list){
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
doSyncGroup(jo,0l,it);
doSyncProContractor(jo,0l,it);
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
/**
*
* @param jo
* @param l
* @param it
*/
private void doSyncProContractor(JSONObject jo, long startId, SurProjectAttendanceCfg it) {
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String path="/webapi/project/findProContractorByProjectId";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("proContractorList");
if(arr.size()>0){
long rowId=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
rowId=json.getLong("id");
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json);
group.setBizLicense(json.getString("corpCode"));
String type=json.getString("corpType");
if("009".equals(type)){ //总包人员
group.setCompanyTypeId("1");
}else if("007".equals(type)){//监理人员
group.setCompanyTypeId("8");
}else if("006".equals(type)){//劳务人员
group.setCompanyTypeId("2");
}
if(StrUtil.isNotEmpty(group.getCompanyTypeId())){
attendanceGroupService.updateJgw(group);
}
}
if(rowId>0){
doSyncProContractor(jo,rowId+1,it);
}
}
}
/**
*
* @param jo
* @param startId
* @param it
*/
private void doSyncGroup(JSONObject jo, long startId, SurProjectAttendanceCfg it) {
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String path="/webapi/project/findTeamByProjectId";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("rowId",startId);
url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"&timestamp="+time+"&rowId="+startId;
Request request = new Request.Builder()
.url(url)
.get()
.build();
String data=AttendanceTask.getResult(request);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
JSONArray arr=joData.getJSONArray("teamList");
if(arr.size()>0){
long rowId=0;
for(int i=0;i<arr.size();i++){
JSONObject json=arr.getJSONObject(i);
SurProjectAttendanceGroup group=SurProjectAttendanceGroup.createJgw(json);
group.setCfgid(it.getId());
group.setAppId(appId);
rowId=json.getLong("id");
attendanceGroupService.add(group);
}
if(rowId>0){
doSyncGroup(jo,rowId+1,it);
}
}
}
/**
*
*/
public void syncAttendanceData(){
String dtStart=DateUtil.format(DateTime.now(),"yyyy-MM-dd");
String dtEnd=dtStart;
syncAttendanceData(dtStart,dtEnd);
}
/**
* 7
*/
public void syncLastWeekAttendanceData(){
String dtEnd=DateUtil.format(DateTime.now(),"yyyy-MM-dd");
String dtStart=DateUtil.format(DateUtil.offsetDay(DateTime.now(),-7),"yyyy-MM-dd");
syncAttendanceData(dtStart,dtEnd);
}
/**
* 30
*/
public void syncLast30DayAttendanceData(){
String dtEnd=DateUtil.format(DateTime.now(),"yyyy-MM-dd");
String dtStart=DateUtil.format(DateUtil.offsetDay(DateTime.now(),-30),"yyyy-MM-dd");
syncAttendanceData(dtStart,dtEnd);
syncAttendanceData(dtStart,dtEnd);
}
private void syncAttendanceData(String dtStart,String dtEnd){
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
where.setEnabled(1l);
where.setIsDel(0l);
where.setVendorsCode("jgw");
List<SurProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
for(SurProjectAttendanceCfg it :list){
String param= it.getVendorsParameter();
if(Strings.isNotEmpty(param)){
try{
JSONObject jo=JSON.parseObject(param);
String appId=jo.getString("appId");
String secret=jo.getString("secret");
secret=Base64.encode(secret);
jo.put("secret",secret);
String token= getToken(appId,secret);
jo.put("token",token);
jo.put("startTime",dtStart);
jo.put("endTime",dtEnd);
doSyncAttendanceData(jo,"0",it);
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
private void doSyncAttendanceData(JSONObject jo, String startId, SurProjectAttendanceCfg it) {
String appId=jo.getString("appId");
String token=jo.getString("token");
String projectId=jo.getString("projectId");
String startTime=jo.getString("startTime");
String endTime=jo.getString("endTime");
String path="/webapi/project/findAttendanceByProject";
String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
String tokenSign = Md5Utils.hash(url);
Map<String, Object> params = new HashMap<>();
params.put("appId",appId);
params.put("timestamp",time);
params.put("tokenSign",tokenSign);
params.put("projectId",projectId);
params.put("startId",startId);
params.put("startTime",startTime);
params.put("endTime",endTime);
Request request = new Request.Builder()
.url(host+path)
.post(toFormBody(params))
.build();
String data=AttendanceTask.getResult(request);
System.out.println(data);
JSONObject j= JSON.parseObject(data);
JSONObject joData= j.getJSONObject("data");
String endId= joData.getString("endId");
JSONArray arr=joData.getJSONArray("workerAttList");
if(arr!=null && arr.size()>0){
for(int i=0;i<arr.size();i++) {
JSONObject json = arr.getJSONObject(i);
String photo=json.getString("signimg");
String photoUrl=getPhoto(appId,token,photo);
SurProjectAttendanceData sdata = SurProjectAttendanceData.createFromJgw(json);
sdata.setScanPhoto(photoUrl);
sdata.setCfgid(it.getId());
sdata.setAppId(appId);
sdata.setVendorsCode(it.getVendorsCode());
attendanceDataService.add(sdata);
}
doSyncAttendanceData(jo,endId,it);
}
}
}

View File

@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yanzhu.jh.project.mapper.SurProjectBuildDesignDataMapper">
<resultMap type="SurProjectBuildDesignData" id="SurProjectBuildDesignDataResult">
<result property="id" column="id" />
<result property="nodeId" column="node_id" />
<result property="projectId" column="project_id" />
<result property="ownerName" column="owner_name" />
<result property="ownerPhone" column="owner_phone" />
<result property="dataDate" column="data_date" />
<result property="startDate" column="start_date" />
<result property="planStartDate" column="plan_start_date" />
<result property="endDate" column="end_date" />
<result property="planEndDate" column="plan_end_date" />
<result property="duration" column="duration" />
<result property="remainingDays" column="remaining_days" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="files" column="files" />
<result property="work" column="work" />
<result property="nextWeekWork" column="next_week_work" />
<result property="problem" column="problem" />
<result property="isDel" column="is_del" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="updateInfo" column="update_info" />
</resultMap>
<resultMap type="SurProjectBuildDesignData" id="SurProjectBuildDesignDataResultNode">
<result property="id" column="id" />
<result property="nodeId" column="node_id" />
<result property="projectId" column="project_id" />
<result property="ownerName" column="owner_name" />
<result property="ownerPhone" column="owner_phone" />
<result property="dataDate" column="data_date" />
<result property="startDate" column="start_date" />
<result property="planStartDate" column="plan_start_date" />
<result property="endDate" column="end_date" />
<result property="planEndDate" column="plan_end_date" />
<result property="duration" column="duration" />
<result property="remainingDays" column="remaining_days" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="files" column="files" />
<result property="work" column="work" />
<result property="nextWeekWork" column="next_week_work" />
<result property="problem" column="problem" />
<result property="isDel" column="is_del" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="updateInfo" column="update_info" />
<association property="baseBuildNode" javaType="baseBuildNode">
<result property="id" column="node_id" />
<result property="nodeText" column="node_text" />
<result property="nodeLvl" column="node_lvl" />
<result property="nodeType" column="node_type" />
</association>
<association property="project" javaType="SurProject">
<result property="id" column="project_id" />
<result property="projectName" column="projectName"/>
</association>
</resultMap>
<sql id="selectSurProjectBuildDesignDataVo">
select id, node_id, project_id, owner_name, owner_phone, data_date, start_date, plan_start_date, end_date, plan_end_date, duration, remaining_days, status, remark, files, work, next_week_work, problem, is_del, create_by, create_time, update_by, update_time, update_info from sur_project_build_design_data
</sql>
<sql id="selectSurProjectBuildDesignDataVoView">
select a.*,b.node_text,b.node_lvl,b.node_type,p.projectName
from sur_project_build_design_data a,base_build_node b,sur_project p
where a.node_id=b.id and a.project_id=p.id and a.is_del!=1 and b.is_del!=1 and p.isdel!=1
</sql>
<select id="selectSurProjectBuildDesignDataList" parameterType="SurProjectBuildDesignData" resultMap="SurProjectBuildDesignDataResultNode">
<include refid="selectSurProjectBuildDesignDataVoView"/>
<if test="projectId != null "> and a.project_id = #{projectId}</if>
<if test="startDate != null "> and a.data_date &gt;= #{startDate}</if>
<if test="endDate != null "> and a.data_date &lt;= #{endDate}</if>
</select>
<select id="selectSurProjectBuildDesignDataById" parameterType="Long" resultMap="SurProjectBuildDesignDataResult">
<include refid="selectSurProjectBuildDesignDataVo"/>
where id = #{id}
</select>
<select id="selectWeekData" parameterType="SurProjectBuildDesignData" resultMap="SurProjectBuildDesignDataResultNode">
<include refid="selectSurProjectBuildDesignDataVoView"/>
<if test="projectId != null "> and a.project_id = #{projectId}</if>
<if test="startDate != null "> and a.data_date &gt;= #{startDate}</if>
<if test="endDate != null "> and a.data_date &lt;= #{endDate}</if>
</select>
<insert id="insertSurProjectBuildDesignData" parameterType="SurProjectBuildDesignData" useGeneratedKeys="true" keyProperty="id">
insert into sur_project_build_design_data
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="nodeId != null">node_id,</if>
<if test="projectId != null">project_id,</if>
<if test="ownerName != null">owner_name,</if>
<if test="ownerPhone != null">owner_phone,</if>
<if test="dataDate != null">data_date,</if>
<if test="startDate != null">start_date,</if>
<if test="planStartDate != null">plan_start_date,</if>
<if test="endDate != null">end_date,</if>
<if test="planEndDate != null">plan_end_date,</if>
<if test="duration != null">duration,</if>
<if test="remainingDays != null">remaining_days,</if>
<if test="status != null">status,</if>
<if test="remark != null">remark,</if>
<if test="files != null">files,</if>
<if test="work != null">work,</if>
<if test="nextWeekWork != null">next_week_work,</if>
<if test="problem != null">problem,</if>
<if test="isDel != null">is_del,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="updateInfo != null">update_info,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="nodeId != null">#{nodeId},</if>
<if test="projectId != null">#{projectId},</if>
<if test="ownerName != null">#{ownerName},</if>
<if test="ownerPhone != null">#{ownerPhone},</if>
<if test="dataDate != null">#{dataDate},</if>
<if test="startDate != null">#{startDate},</if>
<if test="planStartDate != null">#{planStartDate},</if>
<if test="endDate != null">#{endDate},</if>
<if test="planEndDate != null">#{planEndDate},</if>
<if test="duration != null">#{duration},</if>
<if test="remainingDays != null">#{remainingDays},</if>
<if test="status != null">#{status},</if>
<if test="remark != null">#{remark},</if>
<if test="files != null">#{files},</if>
<if test="work != null">#{work},</if>
<if test="nextWeekWork != null">#{nextWeekWork},</if>
<if test="problem != null">#{problem},</if>
<if test="isDel != null">#{isDel},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="updateInfo != null">#{updateInfo},</if>
</trim>
</insert>
<update id="updateSurProjectBuildDesignData" parameterType="SurProjectBuildDesignData">
update sur_project_build_design_data
<trim prefix="SET" suffixOverrides=",">
<if test="nodeId != null">node_id = #{nodeId},</if>
<if test="projectId != null">project_id = #{projectId},</if>
<if test="ownerName != null">owner_name = #{ownerName},</if>
<if test="ownerPhone != null">owner_phone = #{ownerPhone},</if>
<if test="dataDate != null">data_date = #{dataDate},</if>
<if test="startDate != null">start_date = #{startDate},</if>
<if test="planStartDate != null">plan_start_date = #{planStartDate},</if>
<if test="endDate != null">end_date = #{endDate},</if>
<if test="planEndDate != null">plan_end_date = #{planEndDate},</if>
<if test="duration != null">duration = #{duration},</if>
<if test="remainingDays != null">remaining_days = #{remainingDays},</if>
<if test="status != null">status = #{status},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="files != null">files = #{files},</if>
<if test="work != null">work = #{work},</if>
<if test="nextWeekWork != null">next_week_work = #{nextWeekWork},</if>
<if test="problem != null">problem = #{problem},</if>
<if test="isDel != null">is_del = #{isDel},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateInfo != null">update_info = #{updateInfo},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSurProjectBuildDesignDataById" parameterType="Long">
delete from sur_project_build_design_data where id = #{id}
</delete>
<delete id="deleteSurProjectBuildDesignDataByIds" parameterType="String">
delete from sur_project_build_design_data where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectSurProjectBuildNodeDataVo">
select id, node_id, project_id, start_date, plan_start_date, end_date, plan_end_date, status, remark, files, is_del, create_by, create_time, update_by, update_time from sur_project_build_node_data
</sql>
<sql id="selectSurProjectBuildNodeDataVoByNode">
SELECT * FROM vw_sur_project_build_node_data_all
</sql>

View File

@ -182,5 +182,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<resultMap type="SysUser" id="SurProjectDesignUserinfoResult">
<id property="userId" column="user_id" />
<result property="deptId" column="dept_id" />
<result property="remark" column="dept_name" />
<result property="userName" column="user_name" />
<result property="nickName" column="nick_name" />
<result property="phonenumber" column="phonenumber" />
</resultMap>
<select id="selectDesignUsers" resultMap="SurProjectDesignUserinfoResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
AND (u.dept_id = 101 or find_in_set(101, d.ancestors))
order by d.dept_id
</select>
</mapper>